[emos] 01/05: libemos-4.3.9
Alastair McKinstry
mckinstry at moszumanska.debian.org
Tue Mar 22 17:15:33 UTC 2016
This is an automated email from the git hooks/post-receive script.
mckinstry pushed a commit to tag debian/2%4.3.9-1
in repository emos.
commit b0bc429c73a9895823161329e81ad1dcd2b8c62b
Author: Alastair McKinstry <mckinstry at debian.org>
Date: Thu Mar 17 09:19:32 2016 +0000
libemos-4.3.9
---
CMakeLists.txt | 14 +-
ChangeLog | 32 +-
VERSION.cmake | 2 +-
bamboo/CLANG-env.sh | 4 +-
bamboo/flags.cmake | 3 -
bamboo/macosx1010-flags.cmake | 1 +
bamboo/{flags.cmake => opensuse131-flags.cmake} | 2 -
bin/ecbuild | 32 +-
bufrdc_wmo/buedd.F | 1 +
bufrdc_wmo/buetab.F | 4 +-
bufrdc_wmo/bugbts.F | 4 +-
.../B_050f4028a43495e52440d17656e5700c.distinct | 0
.../B_15c1ba85a4e7e8bef762ac0273fbf153.distinct | 0
.../B_172495a28a33e613f0ab1cae797bdb8a.distinct | 0
.../B_23e2c110ce55a68c5ecabf542a85bb85.distinct | 0
.../B_2c9ba7f915cf8796710557780604290b.distinct | 0
.../B_34f832ef31098db400ba73650172b7a1.distinct | 0
.../B_365ab9afedb6b68f014f6b4c4e95310b.distinct | 0
.../B_382ec6532d5570e6a6f43be134b672a1.distinct | 0
.../B_4017ed66e8966ae0063927da9d62092b.distinct | 0
.../B_419fd0728f091193ac01265d974feadb.distinct | 0
.../B_44c107f676c47571380f64395b24bcd2.distinct | 0
.../B_47972c7924f05d5facc57044fc806c61.distinct | 0
.../B_51c7b7417b09ca3a7af8279469005fe5.distinct | 0
.../B_65afb2f73c2bd71057520b0ecba04f2a.distinct | 0
.../B_7854bdfd1d0b55c438ec71990fbea158.distinct | 0
.../B_88ee7a2321767d2f754d523a8bf8d95e.distinct | 0
.../B_a5c81d91f7c1357d530c0a8f8c8dcdb0.distinct | 0
.../B_a73bff54ea6f9b81d2ddfb9a12a374ca.distinct | 0
.../B_d2c349dfd98bc07e031fe6e178e77455.distinct | 0
.../B_d2d0f6e4aba0e1e45da2a1e8cfd6168c.distinct | 0
.../B_d4c990866c54fe08d88f5ce51b388b92.distinct | 0
.../B_d69fb71f66a2ab9ff3f4018c468caab3.distinct | 0
.../B_e0a53212e9fdc2bcd5d570840a13f4e1.distinct | 0
.../B_ebc7e71fcb4772e2325cb4f40621ee4b.distinct | 0
.../B_ebd9b26adcc0ec4de88daa558b79c20b.distinct | 1806 --------------------
.../B_feb89e9c2ae53afd3b24750c7eb1e117.distinct | 0
.../C_11e6c727e6c8b510348d0df2e86e7f8f.distinct | 0
.../C_23e15e256920aab5bc58e30ff88a0acb.distinct | 0
.../C_449dd354e4fefaeec0b46eaad14ad5cb.distinct | 0
.../C_6d682109f8f292527d4b53c7e37410c1.distinct | 0
.../C_8049462304f933cdc87602ade1b732f0.distinct | 0
.../C_8aa5c5c950f5d48836a11233c86a362d.distinct | 0
.../C_9614b67e093a3bf407460d53d4dd2b23.distinct | 0
.../C_9b71ff682051c19e285baf3f56d8b781.distinct | 0
.../C_9c9f7e17ae667a48f6240fe428ec92e9.distinct | 0
.../C_a464db92d9b7520fec19512f4f270131.distinct | 0
.../C_b7fa1a7727369ecf09b368eae9f63585.distinct | 0
.../C_f138f6dc0c7a1c97c31ead1174cb8562.distinct | 0
bufrtables/D0000000000000016000.TXT | 2 +-
bufrtables/D0000000000001016001.TXT | 2 +-
bufrtables/D0000000000002016001.TXT | 2 +-
bufrtables/D0000000000003016001.TXT | 2 +-
bufrtables/D0000000000004016001.TXT | 2 +-
bufrtables/D0000000000005016001.TXT | 2 +-
bufrtables/D0000000000006016001.TXT | 2 +-
bufrtables/D0000000000007016001.TXT | 2 +-
bufrtables/D0000000000008016001.TXT | 2 +-
bufrtables/D0000000000009016001.TXT | 2 +-
bufrtables/D0000000000010016001.TXT | 2 +-
bufrtables/D0000000000011016001.TXT | 2 +-
bufrtables/D0000000000012016001.TXT | 2 +-
bufrtables/D0000000000013016001.TXT | 2 +-
bufrtables/D0000000000014016001.TXT | 2 +-
bufrtables/D0000000000015016001.TXT | 2 +-
bufrtables/D0000000000016016001.TXT | 2 +-
bufrtables/D0000000000017016001.TXT | 2 +-
bufrtables/D0000000000018016001.TXT | 2 +-
bufrtables/D0000000000019016001.TXT | 2 +-
bufrtables/D0000000000020016001.TXT | 2 +-
bufrtables/D0000000000021016001.TXT | 2 +-
bufrtables/D0000000000022016001.TXT | 2 +-
bufrtables/D0000000000023016001.TXT | 2 +-
bufrtables/D0000000000024016001.TXT | 2 +-
bufrtables/D0000000000025016001.TXT | 2 +-
bufrtables/D0000000000026016001.TXT | 2 +-
bufrtables/D0000000000027016001.TXT | 2 +-
bufrtables/D0000000000028016001.TXT | 2 +-
bufrtables/D0000000000029016001.TXT | 2 +-
bufrtables/D0000000000030016001.TXT | 2 +-
bufrtables/D0000000000031016001.TXT | 2 +-
bufrtables/D0000000000032016001.TXT | 2 +-
bufrtables/D0000000000033016001.TXT | 2 +-
bufrtables/D0000000000034016001.TXT | 2 +-
bufrtables/D0000000000035016001.TXT | 2 +-
bufrtables/D0000000000036016001.TXT | 2 +-
bufrtables/D0000000000037016001.TXT | 2 +-
bufrtables/D0000000000038016001.TXT | 2 +-
bufrtables/D0000000000039016001.TXT | 2 +-
bufrtables/D0000000000040016001.TXT | 2 +-
bufrtables/D0000000000041016001.TXT | 2 +-
bufrtables/D0000000000042016001.TXT | 2 +-
bufrtables/D0000000000043016001.TXT | 2 +-
bufrtables/D0000000000044016001.TXT | 2 +-
bufrtables/D0000000000045016001.TXT | 2 +-
bufrtables/D0000000000046016001.TXT | 2 +-
bufrtables/D0000000000047016001.TXT | 2 +-
bufrtables/D0000000000048016001.TXT | 2 +-
bufrtables/D0000000000049016001.TXT | 2 +-
bufrtables/D0000000000050016001.TXT | 2 +-
bufrtables/D0000000000051016001.TXT | 2 +-
bufrtables/D0000000000052016001.TXT | 2 +-
bufrtables/D0000000000053016001.TXT | 2 +-
bufrtables/D0000000000054016001.TXT | 2 +-
bufrtables/D0000000000055016001.TXT | 2 +-
bufrtables/D0000000000056016001.TXT | 2 +-
bufrtables/D0000000000057016001.TXT | 2 +-
bufrtables/D0000000000058016001.TXT | 2 +-
bufrtables/D0000000000059016001.TXT | 2 +-
bufrtables/D0000000000060016001.TXT | 2 +-
bufrtables/D0000000000061016001.TXT | 2 +-
bufrtables/D0000000000062016001.TXT | 2 +-
bufrtables/D0000000000063016001.TXT | 2 +-
bufrtables/D0000000000064016001.TXT | 2 +-
bufrtables/D0000000000065016001.TXT | 2 +-
bufrtables/D0000000000066016001.TXT | 2 +-
bufrtables/D0000000000067016001.TXT | 2 +-
bufrtables/D0000000000068016001.TXT | 2 +-
bufrtables/D0000000000069016001.TXT | 2 +-
bufrtables/D0000000000070016001.TXT | 2 +-
bufrtables/D0000000000071016001.TXT | 2 +-
bufrtables/D0000000000072016001.TXT | 2 +-
bufrtables/D0000000000073016001.TXT | 2 +-
bufrtables/D0000000000074016001.TXT | 2 +-
bufrtables/D0000000000075016001.TXT | 2 +-
bufrtables/D0000000000076016001.TXT | 2 +-
bufrtables/D0000000000077016001.TXT | 2 +-
bufrtables/D0000000000078016001.TXT | 2 +-
bufrtables/D0000000000079016001.TXT | 2 +-
bufrtables/D0000000000080016001.TXT | 2 +-
bufrtables/D0000000000081016001.TXT | 2 +-
bufrtables/D0000000000082016001.TXT | 2 +-
bufrtables/D0000000000083016001.TXT | 2 +-
bufrtables/D0000000000084016001.TXT | 2 +-
bufrtables/D0000000000085016001.TXT | 2 +-
bufrtables/D0000000000086016001.TXT | 2 +-
bufrtables/D0000000000087016001.TXT | 2 +-
bufrtables/D0000000000088016001.TXT | 2 +-
bufrtables/D0000000000089016001.TXT | 2 +-
bufrtables/D0000000000090016001.TXT | 2 +-
bufrtables/D0000000000091016001.TXT | 2 +-
bufrtables/D0000000000092016001.TXT | 2 +-
bufrtables/D0000000000093016001.TXT | 2 +-
bufrtables/D0000000000094016001.TXT | 2 +-
bufrtables/D0000000000095016001.TXT | 2 +-
bufrtables/D0000000000096016001.TXT | 2 +-
bufrtables/D0000000000097016001.TXT | 2 +-
bufrtables/D0000000000098016001.TXT | 2 +-
bufrtables/D0000000000098016101.TXT | 2 +-
bufrtables/D0000000000099016001.TXT | 2 +-
bufrtables/D0000000000100016001.TXT | 2 +-
bufrtables/D0000000000101016001.TXT | 2 +-
bufrtables/D0000000000102016001.TXT | 2 +-
bufrtables/D0000000000103016001.TXT | 2 +-
bufrtables/D0000000000104016001.TXT | 2 +-
bufrtables/D0000000000105016001.TXT | 2 +-
bufrtables/D0000000000106016001.TXT | 2 +-
bufrtables/D0000000000107016001.TXT | 2 +-
bufrtables/D0000000000108016001.TXT | 2 +-
bufrtables/D0000000000109016001.TXT | 2 +-
bufrtables/D0000000000110016001.TXT | 2 +-
bufrtables/D0000000000111016001.TXT | 2 +-
bufrtables/D0000000000112016001.TXT | 2 +-
bufrtables/D0000000000113016001.TXT | 2 +-
bufrtables/D0000000000114016001.TXT | 2 +-
bufrtables/D0000000000115016001.TXT | 2 +-
bufrtables/D0000000000116016001.TXT | 2 +-
bufrtables/D0000000000117016001.TXT | 2 +-
bufrtables/D0000000000118016001.TXT | 2 +-
bufrtables/D0000000000119016001.TXT | 2 +-
bufrtables/D0000000000120016001.TXT | 2 +-
bufrtables/D0000000000121016001.TXT | 2 +-
bufrtables/D0000000000122016001.TXT | 2 +-
bufrtables/D0000000000123016001.TXT | 2 +-
bufrtables/D0000000000124016001.TXT | 2 +-
bufrtables/D0000000000125016001.TXT | 2 +-
bufrtables/D0000000000126016001.TXT | 2 +-
bufrtables/D0000000000127016001.TXT | 2 +-
bufrtables/D0000000000128016001.TXT | 2 +-
bufrtables/D0000000000129016001.TXT | 2 +-
bufrtables/D0000000000130016001.TXT | 2 +-
bufrtables/D0000000000131016001.TXT | 2 +-
bufrtables/D0000000000132016001.TXT | 2 +-
bufrtables/D0000000000133016001.TXT | 2 +-
bufrtables/D0000000000134016001.TXT | 2 +-
bufrtables/D0000000000135016001.TXT | 2 +-
bufrtables/D0000000000136016001.TXT | 2 +-
bufrtables/D0000000000137016001.TXT | 2 +-
bufrtables/D0000000000138016001.TXT | 2 +-
bufrtables/D0000000000139016001.TXT | 2 +-
bufrtables/D0000000000140016001.TXT | 2 +-
bufrtables/D0000000000141016001.TXT | 2 +-
bufrtables/D0000000000142016001.TXT | 2 +-
bufrtables/D0000000000143016001.TXT | 2 +-
bufrtables/D0000000000144016001.TXT | 2 +-
bufrtables/D0000000000145016001.TXT | 2 +-
bufrtables/D0000000000146016001.TXT | 2 +-
bufrtables/D0000000000147016001.TXT | 2 +-
bufrtables/D0000000000148016001.TXT | 2 +-
bufrtables/D0000000000149016001.TXT | 2 +-
bufrtables/D0000000000150016001.TXT | 2 +-
bufrtables/D0000000000151016001.TXT | 2 +-
bufrtables/D0000000000152016001.TXT | 2 +-
bufrtables/D0000000000153016001.TXT | 2 +-
bufrtables/D0000000000154016001.TXT | 2 +-
bufrtables/D0000000000155016001.TXT | 2 +-
bufrtables/D0000000000156016001.TXT | 2 +-
bufrtables/D0000000000157016001.TXT | 2 +-
bufrtables/D0000000000158016001.TXT | 2 +-
bufrtables/D0000000000159016001.TXT | 2 +-
bufrtables/D0000000000160016001.TXT | 2 +-
bufrtables/D0000000000161016001.TXT | 2 +-
bufrtables/D0000000000162016001.TXT | 2 +-
bufrtables/D0000000000163016001.TXT | 2 +-
bufrtables/D0000000000164016001.TXT | 2 +-
bufrtables/D0000000000165016001.TXT | 2 +-
bufrtables/D0000000000166016001.TXT | 2 +-
bufrtables/D0000000000167016001.TXT | 2 +-
bufrtables/D0000000000168016001.TXT | 2 +-
bufrtables/D0000000000169016001.TXT | 2 +-
bufrtables/D0000000000170016001.TXT | 2 +-
bufrtables/D0000000000171016001.TXT | 2 +-
bufrtables/D0000000000172016001.TXT | 2 +-
bufrtables/D0000000000173016001.TXT | 2 +-
bufrtables/D0000000000174016001.TXT | 2 +-
bufrtables/D0000000000175016001.TXT | 2 +-
bufrtables/D0000000000176016001.TXT | 2 +-
bufrtables/D0000000000177016001.TXT | 2 +-
bufrtables/D0000000000178016001.TXT | 2 +-
bufrtables/D0000000000179016001.TXT | 2 +-
bufrtables/D0000000000180016001.TXT | 2 +-
bufrtables/D0000000000181016001.TXT | 2 +-
bufrtables/D0000000000182016001.TXT | 2 +-
bufrtables/D0000000000183016001.TXT | 2 +-
bufrtables/D0000000000184016001.TXT | 2 +-
bufrtables/D0000000000185016001.TXT | 2 +-
bufrtables/D0000000000186016001.TXT | 2 +-
bufrtables/D0000000000187016001.TXT | 2 +-
bufrtables/D0000000000188016001.TXT | 2 +-
bufrtables/D0000000000189016001.TXT | 2 +-
bufrtables/D0000000000190016001.TXT | 2 +-
bufrtables/D0000000000191016001.TXT | 2 +-
bufrtables/D0000000000192016001.TXT | 2 +-
bufrtables/D0000000000193016001.TXT | 2 +-
bufrtables/D0000000000194016001.TXT | 2 +-
bufrtables/D0000000000195016001.TXT | 2 +-
bufrtables/D0000000000196016001.TXT | 2 +-
bufrtables/D0000000000197016001.TXT | 2 +-
bufrtables/D0000000000198016001.TXT | 2 +-
bufrtables/D0000000000199016001.TXT | 2 +-
bufrtables/D0000000000200016001.TXT | 2 +-
bufrtables/D0000000000201016001.TXT | 2 +-
bufrtables/D0000000000202016001.TXT | 2 +-
bufrtables/D0000000000203016001.TXT | 2 +-
bufrtables/D0000000000204016001.TXT | 2 +-
bufrtables/D0000000000205016001.TXT | 2 +-
bufrtables/D0000000000206016001.TXT | 2 +-
bufrtables/D0000000000207016001.TXT | 2 +-
bufrtables/D0000000000208016001.TXT | 2 +-
bufrtables/D0000000000209016001.TXT | 2 +-
bufrtables/D0000000000210016001.TXT | 2 +-
bufrtables/D0000000000211016001.TXT | 2 +-
bufrtables/D0000000000212016001.TXT | 2 +-
bufrtables/D0000000000213016001.TXT | 2 +-
bufrtables/D0000000000214016001.TXT | 2 +-
bufrtables/D0000000000215016001.TXT | 2 +-
bufrtables/D0000000000216016001.TXT | 2 +-
bufrtables/D0000000000217016001.TXT | 2 +-
bufrtables/D0000000000218016001.TXT | 2 +-
bufrtables/D0000000000219016001.TXT | 2 +-
bufrtables/D0000000000220016001.TXT | 2 +-
bufrtables/D0000000000221016001.TXT | 2 +-
bufrtables/D0000000000222016001.TXT | 2 +-
bufrtables/D0000000000223016001.TXT | 2 +-
bufrtables/D0000000000224016001.TXT | 2 +-
bufrtables/D0000000000225016001.TXT | 2 +-
bufrtables/D0000000000226016001.TXT | 2 +-
bufrtables/D0000000000227016001.TXT | 2 +-
bufrtables/D0000000000228016001.TXT | 2 +-
bufrtables/D0000000000229016001.TXT | 2 +-
bufrtables/D0000000000230016001.TXT | 2 +-
bufrtables/D0000000000231016001.TXT | 2 +-
bufrtables/D0000000000232016001.TXT | 2 +-
bufrtables/D0000000000233016001.TXT | 2 +-
bufrtables/D0000000000234016001.TXT | 2 +-
bufrtables/D0000000000235016001.TXT | 2 +-
bufrtables/D0000000000236016001.TXT | 2 +-
bufrtables/D0000000000237016001.TXT | 2 +-
bufrtables/D0000000000238016001.TXT | 2 +-
bufrtables/D0000000000239016001.TXT | 2 +-
bufrtables/D0000000000240016001.TXT | 2 +-
bufrtables/D0000000000241016001.TXT | 2 +-
bufrtables/D0000000000242016001.TXT | 2 +-
bufrtables/D0000000000243016001.TXT | 2 +-
bufrtables/D0000000000244016001.TXT | 2 +-
bufrtables/D0000000000245016001.TXT | 2 +-
bufrtables/D0000000000246016001.TXT | 2 +-
bufrtables/D0000000000247016001.TXT | 2 +-
bufrtables/D0000000000248016001.TXT | 2 +-
bufrtables/D0000000000249016001.TXT | 2 +-
bufrtables/D0000000000250016001.TXT | 2 +-
bufrtables/D0000000000251016001.TXT | 2 +-
bufrtables/D0000000000252016001.TXT | 2 +-
bufrtables/D0000000000253016001.TXT | 2 +-
bufrtables/D0000000000254016001.TXT | 2 +-
bufrtables/D0000000000255016001.TXT | 2 +-
.../D_0c24ef206464d74a80b7a2ba12bb9c8f.distinct | 0
.../D_163528c9416c4e586d5646ecdfae2cbd.distinct | 0
.../D_173e9169eaed3807be0f5fdad3111fed.distinct | 0
.../D_1a04522fbc85dad28a197e988a256c72.distinct | 0
.../D_282e48b64107e2fd90c5d9e7f1f6a349.distinct | 0
.../D_34d8eded2acfd064517d900818528d60.distinct | 0
.../D_5abc7b52b7bc04875961cf145f45319b.distinct | 0
.../D_721b028d58d7913b23b93bba60bb73e0.distinct | 0
.../D_8329c50ae1dd4e0c1c9a5060a5b9e0b1.distinct | 0
.../D_97904881abf209f200d7dab466e706ce.distinct | 0
.../D_99cbfdf89904aeca4a5aabcfaad382db.distinct | 0
.../D_aac4646403e0b6b4d7f4af7786d40a24.distinct | 0
.../D_bb99e30d62bf95ef8f97567958d44e1c.distinct | 0
.../D_e2d812be75cb8471cf57f57e68aa92ce.distinct | 0
.../D_e6f39b79d79a88eadc362af9ee725054.distinct | 0
bufrtables/VERSION.cmake | 2 +-
bufrtables/links.sh | 514 +++---
cmake/FindADSM.cmake | 2 +-
cmake/FindAEC.cmake | 2 +-
cmake/FindAIO.cmake | 2 +-
cmake/FindArmadillo.cmake | 2 +-
cmake/FindCMath.cmake | 2 +-
cmake/FindDl.cmake | 2 +-
cmake/FindEMOS.cmake | 2 +-
cmake/FindFDB.cmake | 2 +-
cmake/FindHPSS.cmake | 2 +-
cmake/FindLEX.cmake | 2 +-
cmake/FindLegacyFDB.cmake | 2 +-
cmake/FindLibGFortran.cmake | 16 +-
cmake/FindLibIFort.cmake | 2 +-
cmake/FindMKL.cmake | 2 +-
cmake/FindNDBM.cmake | 2 +-
cmake/FindNetCDF.cmake | 46 +-
cmake/FindNetCDF3.cmake | 2 +-
cmake/FindODB.cmake | 2 +-
cmake/FindOpenCL.cmake | 2 +-
cmake/FindOpenJPEG.cmake | 2 +-
cmake/FindPGIFortran.cmake | 2 +-
cmake/FindPango.cmake | 16 +-
cmake/FindPangoCairo.cmake | 14 +-
cmake/FindProj4.cmake | 10 +-
cmake/FindREADLINE.cmake | 6 +-
cmake/FindRPCGEN.cmake | 2 +-
cmake/FindRealtime.cmake | 2 +-
cmake/FindSZip.cmake | 2 +-
cmake/FindTrilinos.cmake | 2 +-
cmake/FindViennaCL.cmake | 2 +-
cmake/FindXLFortranLibs.cmake | 2 +-
cmake/FindYACC.cmake | 2 +-
cmake/Findgrib_api.cmake | 44 +-
cmake/Findodb_api.cmake | 2 +-
cmake/Findspot.cmake | 2 +-
cmake/VERSION.cmake | 6 +-
cmake/compiler_flags/Clang_C.cmake | 13 +
cmake/compiler_flags/Clang_CXX.cmake | 13 +
cmake/compiler_flags/Cray_C.cmake | 14 +
cmake/compiler_flags/Cray_CXX.cmake | 14 +
cmake/compiler_flags/Cray_Fortran.cmake | 15 +
cmake/compiler_flags/GNU_C.cmake | 18 +
cmake/compiler_flags/GNU_CXX.cmake | 18 +
cmake/compiler_flags/GNU_Fortran.cmake | 21 +
cmake/compiler_flags/Intel_C.cmake | 13 +
cmake/compiler_flags/Intel_CXX.cmake | 13 +
cmake/compiler_flags/Intel_Fortran.cmake | 14 +
cmake/compiler_flags/PGI_C.cmake | 11 +
cmake/compiler_flags/PGI_CXX.cmake | 11 +
cmake/compiler_flags/PGI_Fortran.cmake | 11 +
cmake/contrib/FindFFTW.cmake | 193 ++-
cmake/contrib/FindNetCDF4.cmake | 14 +-
cmake/contrib/GetGitRevisionDescription.cmake.in | 6 +-
cmake/ecbuild_add_c_flags.cmake | 60 +-
cmake/ecbuild_add_cxx11_flags.cmake | 2 +-
cmake/ecbuild_add_cxx_flags.cmake | 60 +-
cmake/ecbuild_add_executable.cmake | 164 +-
cmake/ecbuild_add_extra_search_paths.cmake | 12 +-
cmake/ecbuild_add_fortran_flags.cmake | 62 +-
cmake/ecbuild_add_library.cmake | 145 +-
cmake/ecbuild_add_option.cmake | 55 +-
cmake/ecbuild_add_persistent.cmake | 14 +-
cmake/ecbuild_add_resources.cmake | 2 +-
cmake/ecbuild_add_test.cmake | 31 +-
cmake/ecbuild_append_to_rpath.cmake | 2 +-
cmake/ecbuild_bundle.cmake | 38 +-
cmake/ecbuild_cache.cmake | 2 +-
cmake/ecbuild_check_c_source_return.cmake | 2 +-
cmake/ecbuild_check_compiler.cmake | 9 +-
cmake/ecbuild_check_cxx11.cmake | 2 +-
cmake/ecbuild_check_cxx_source_return.cmake | 42 +-
cmake/ecbuild_check_fortran_source_return.cmake | 2 +-
cmake/ecbuild_check_functions.cmake | 16 +-
cmake/ecbuild_check_os.cmake | 45 +-
cmake/ecbuild_compiler_flags.cmake | 97 ++
cmake/ecbuild_config.h.in | 2 +-
cmake/ecbuild_debug_var.cmake | 47 -
cmake/ecbuild_declare_project.cmake | 24 +-
cmake/ecbuild_define_build_types.cmake | 80 +-
cmake/ecbuild_define_libs_and_execs_target.cmake | 29 +
...get.cmake => ecbuild_define_links_target.cmake} | 10 +-
cmake/ecbuild_define_options.cmake | 12 +-
cmake/ecbuild_define_paths.cmake | 2 +-
cmake/ecbuild_dont_pack.cmake | 2 +-
cmake/ecbuild_download_resource.cmake | 2 +-
cmake/ecbuild_echo_targets.cmake | 8 +-
cmake/ecbuild_enable_fortran.cmake | 11 +-
cmake/ecbuild_features.cmake | 53 +-
cmake/ecbuild_find_fortranlibs.cmake | 2 +-
cmake/ecbuild_find_lexyacc.cmake | 20 +-
cmake/ecbuild_find_mpi.cmake | 2 +-
cmake/ecbuild_find_omp.cmake | 9 +-
cmake/ecbuild_find_package.cmake | 8 +-
cmake/ecbuild_find_perl.cmake | 2 +-
cmake/ecbuild_find_python.cmake | 134 +-
cmake/ecbuild_generate_config_headers.cmake | 2 +-
cmake/ecbuild_generate_fortran_interfaces.cmake | 115 ++
cmake/ecbuild_generate_rpc.cmake | 2 +-
cmake/ecbuild_generate_yy.cmake | 30 +-
cmake/ecbuild_get_cxx11_flags.cmake | 2 +-
cmake/ecbuild_get_date.cmake | 2 +-
cmake/ecbuild_get_resources.cmake | 16 +-
cmake/ecbuild_get_test_data.cmake | 26 +-
cmake/ecbuild_git.cmake | 10 +-
cmake/ecbuild_install_project.cmake | 81 +-
cmake/ecbuild_list_add_pattern.cmake | 102 ++
cmake/ecbuild_list_exclude_pattern.cmake | 88 +
cmake/ecbuild_list_extra_search_paths.cmake | 12 +-
cmake/ecbuild_list_macros.cmake | 40 +-
cmake/ecbuild_log.cmake | 92 +-
cmake/ecbuild_pkgconfig.cmake | 2 +-
cmake/ecbuild_policies.cmake | 10 +-
cmake/ecbuild_print_summary.cmake | 8 +-
cmake/ecbuild_project_files.cmake | 10 +-
cmake/ecbuild_remove_fortran_flags.cmake | 61 +
cmake/ecbuild_requires_macro_version.cmake | 2 +-
cmake/ecbuild_separate_sources.cmake | 10 +-
cmake/ecbuild_setup_test_framework.cmake | 6 +-
cmake/ecbuild_source_flags.cmake | 30 +
cmake/ecbuild_system.cmake | 66 +-
cmake/ecbuild_use_package.cmake | 25 +-
cmake/ecbuild_version.h.in | 2 +-
cmake/ecbuild_warn_unused_files.cmake | 2 +-
cmake/gen_source_flags.py | 84 +
cmake/include/ecbuild/boost_test_framework.h | 2 +-
cmake/project-config.cmake.in | 49 +-
cmake/sg.pl | 2 +-
data/surface_gaussian_reduced.grib1 | Bin 4284120 -> 0 bytes
data/surface_latlon.grib1 | Bin 8300280 -> 0 bytes
data/tigge.grib2 | Bin 428963 -> 0 bytes
gribex/bufrin.F | 54 +-
gribex/c2gene.F | 1 +
gribex/c2pack.F | 1 +
gribex/codegb.F | 8 +-
gribex/codeps.F | 63 +-
gribex/confp3.F | 44 +-
gribex/csect4.F | 24 +-
gribex/d2ordr.F | 3 +
gribex/decext.F | 1 +
gribex/decogb.F | 40 +-
gribex/decogc.F | 1 +
gribex/decogd.F | 9 +-
gribex/decogr.F | 1 +
gribex/dsect4a.F | 25 +-
gribex/ecdef17.h | 8 +-
gribex/ecdef18.F | 11 +-
gribex/ecdef19.F | 14 +-
gribex/ecdef4.F | 9 +-
gribex/ecdef5.F | 12 +-
gribex/ecdef50.F | 9 +-
gribex/ecdef6.h | 8 +-
gribex/ecloc1.F | 9 +-
gribex/emesec2.F | 16 +-
gribex/exscal.F | 10 +-
gribex/fortranInterface.c | 822 ++++-----
gribex/gdecode.c | 32 +-
gribex/gendir.F | 8 +-
gribex/getsys.F | 8 +-
gribex/grchk1.F | 36 +-
gribex/grchk2.F | 206 +--
gribex/grchk3.F | 10 +-
gribex/gribex.F | 2 +
gribex/gribin.F | 68 +-
gribex/grprs1b.F | 16 +-
gribex/grprs2.F | 50 +-
gribex/handleLocalDefinitions.h | 18 +-
gribex/inxbit.F | 22 +-
gribex/inxmap.F | 68 +-
gribex/lnbfcr.F | 24 +-
gribex/lngbcr.F | 10 +-
gribex/local2c.c | 18 +-
gribex/maxmn2.F | 1 +
gribex/parval.F | 12 +-
gribex/prtbin.F | 14 +-
gribex/prtbk2.F | 14 +-
gribex/ptquasi.F | 20 +-
gribex/qu2reg.F | 34 +-
gribex/qu2reg2.F | 26 +-
gribex/rowina.F | 10 +-
gribex/rowina2.F | 8 +-
gribex/rowina3.F | 1 +
gribex/sencode.c | 48 +-
gribex/setpar.F | 10 +-
gribex/unbkout.F | 8 +-
interpolation/0-INDEX-0 | 1 +
interpolation/CMakeLists.txt | 2 +
interpolation/chequal.F | 24 +-
interpolation/copy_spec_from_ksec.c | 4 +-
interpolation/describe_input_field.c | 1414 +++++++--------
interpolation/estima.F | 21 +-
interpolation/estima_reg.F | 23 +
interpolation/fixarea.F | 11 +-
interpolation/gglonlat.F | 2 +-
interpolation/hirlam.F | 140 +-
interpolation/hirlam_userspace.c | 147 ++
interpolation/hirlamw.F | 108 +-
interpolation/hirlsm.F | 173 +-
interpolation/hll2llw.F | 15 +-
interpolation/hrg2ggw.F | 3 +
interpolation/igdiwe.F | 6 +-
interpolation/igglat.F | 1 +
interpolation/iggmem.F | 235 ++-
interpolation/ignorm.F | 8 +-
interpolation/insane.F | 12 +-
interpolation/intf2.c | 32 +-
interpolation/intfb.F | 6 +-
interpolation/intfbu.F | 33 +-
interpolation/intlogs.c | 16 +-
interpolation/intocn.F | 4 +
interpolation/intocnu.F | 4 +
interpolation/intuvdh.F | 5 +-
interpolation/intuvgh.F | 7 +-
interpolation/intuvp2.c | 63 +-
interpolation/intuvs2.c | 690 ++++----
interpolation/intuvu.F | 7 +-
interpolation/intvect2.c | 453 ++---
interpolation/irgmem.F | 289 ++--
interpolation/jacobi.F | 1 +
interpolation/jchmod.c | 12 +-
interpolation/jgglat.F | 1 +
interpolation/jmakgg.F | 33 +-
interpolation/jmakgg3.F | 33 +-
interpolation/jmakll.F | 1 +
interpolation/jmakll3.F | 19 +-
interpolation/jmvugg.F | 40 +-
interpolation/jmvull.F | 24 +-
interpolation/jnorsgg.F | 16 +-
interpolation/jopnggsm.c | 87 +-
interpolation/jopnllsm.c | 150 +-
interpolation/jparam2.h | 11 +-
interpolation/jreadgg.F | 30 +-
interpolation/jreadll.F | 26 +-
interpolation/jsllgp.F | 12 +-
interpolation/jsymgg.F | 1 +
interpolation/jsymll.F | 25 +-
interpolation/jwindll.F | 17 +-
interpolation/krg2rgd.F | 22 +-
interpolation/makemap.c | 7 +-
interpolation/memreq.h | 13 +-
interpolation/rgauss_032.h | 2 +-
interpolation/rgauss_048.h | 2 +-
interpolation/rgauss_064.h | 2 +-
interpolation/rgauss_080.h | 2 +-
interpolation/rgauss_080_19940113.h | 2 +-
interpolation/rgauss_096.h | 4 +-
interpolation/rgauss_1024.h | 2 +-
interpolation/rgauss_128.h | 2 +-
interpolation/rgauss_1280.h | 2 +-
interpolation/rgauss_160.h | 2 +-
interpolation/rgauss_160_19931222.h | 2 +-
interpolation/rgauss_200.h | 2 +-
interpolation/rgauss_2000.h | 2 +-
interpolation/rgauss_256.h | 2 +-
interpolation/rgauss_320.h | 10 +-
interpolation/rgauss_400.h | 2 +-
interpolation/rgauss_512.h | 2 +-
interpolation/rgauss_640.h | 10 +-
interpolation/sharedlib.c | 40 +-
interpolation/w251idx.F | 2 +
interpolation/wavexx2.F | 6 +
interpolation/wv2dxx2.F | 6 +
interpolation/wvqlidx.F | 2 +
pbio/blokex.F | 3 +
pbio/emosnum.F | 2 +-
pbio/extras.c | 18 +-
pbio/fileRead.h | 2 +-
pbio/pbbufr.F | 28 +-
pbio/pbgrib.F | 36 +-
pbio/pbio.c | 10 +-
pbio/pbpseu.F | 40 +-
share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake | 56 +-
share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake | 50 +-
share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake | 44 +-
tests/CMakeLists.txt | 535 ++----
tests/bufr/CMakeLists.txt | 115 ++
tests/bufr/data/CRYO00012015020412.DC1.DAT | Bin 0 -> 378510 bytes
{data => tests/bufr/data}/ISMD01_OKPR.bufr | Bin
tests/bufr/data/request | 1 +
{data => tests/bufr/data}/synop_4.bufr | Bin
{data => tests/bufr/data}/temp_101.bufr | Bin
.../data}/tracks_05W_PEIPAH_2014041000.eps.bufr | Bin
.../data}/tracks_05W_PEIPAH_2014041000.eps.bufr4 | Bin
.../bufr/data}/tracks_05W_PEIPAH_2014041000.fm | 0
.../bufr/data}/tracks_15U_ITA_2014041000.eps.bufr | Bin
.../bufr/data}/tracks_15U_ITA_2014041000.eps.bufr4 | Bin
.../bufr/data}/tracks_15U_ITA_2014041000.fm | 0
.../bufr/data}/tracks_15U_ITA_2014041012.det.bufr | Bin
.../bufr/data}/tracks_15U_ITA_2014041012.det.bufr4 | Bin
.../bufr/data}/tracks_15U_ITA_2014041012.fm | 0
.../download_tests_bufr_src_files.txt} | 0
data/O640.grib => tests/data/2t_O640.grib | Bin
.../data/intf2_2t_O640_to_F48.grib.ref | Bin
.../data/intf2_2t_O640_to_F80.grib.ref | Bin
.../data/intf2_2t_O640_to_N80.grib.ref | Bin
.../data/intf2_2t_O640_to_O80.grib.ref | Bin
.../data/intf2_2t_O640_to_regular_ll.grib.ref | Bin
.../intf2_2t_O640_to_rotated_regular_ll.grib.ref | Bin
.../data/intf2_msl_N640_to_F48.grib.ref | Bin
.../data/intf2_msl_N640_to_F80.grib.ref | Bin
.../data/intf2_msl_N640_to_N80.grib.ref | Bin
.../data/intf2_msl_N640_to_O80.grib.ref | Bin
.../data/intf2_msl_N640_to_regular_ll.grib.ref | Bin
.../intf2_msl_N640_to_rotated_regular_ll.grib.ref | Bin
.../data/intf2_msl_regular_ll_to_F48.grib.ref | Bin
.../data/intf2_msl_regular_ll_to_F80.grib.ref | Bin
.../intf2_msl_regular_ll_to_regular_ll.grib.ref | Bin
.../data/intf2_q_F640_to_F48.grib.ref | Bin
.../data/intf2_q_F640_to_F80.grib.ref | Bin
.../data/intf2_q_F640_to_regular_ll.grib.ref | Bin
.../intf2_q_F640_to_rotated_regular_ll.grib.ref | Bin
.../data/intf2_vo-d_sh_to_F48.grib.ref | Bin
.../data/intf2_vo-d_sh_to_F80.grib.ref | Bin
.../data/intf2_vo-d_sh_to_N80.grib.ref | Bin
.../data/intf2_vo-d_sh_to_O80.grib.ref | Bin
.../data/intf2_vo-d_sh_to_regular_ll.grib.ref | Bin
.../intf2_vo-d_sh_to_rotated_regular_ll.grib.ref | Bin
.../data/intf2_z_sh_to_F48.grib.ref | Bin
.../data/intf2_z_sh_to_F80.grib.ref | Bin
.../data/intf2_z_sh_to_N80.grib.ref | Bin
.../data/intf2_z_sh_to_O80.grib.ref | Bin
.../data/intf2_z_sh_to_regular_ll.grib.ref | Bin
.../data/intf2_z_sh_to_rotated_regular_ll.grib.ref | Bin
.../data/intuvp2_vo-d_sh_to_F80.grib.ref | Bin
.../data/intuvp2_vo-d_sh_to_N80.grib.ref | Bin
.../data/intuvp2_vo-d_sh_to_O80.grib.ref | Bin
.../data/intuvp2_vo-d_sh_to_regular_ll.grib.ref | Bin
.../intuvp2_vo-d_sh_to_rotated_regular_ll.grib.ref | Bin
data/N640.grib => tests/data/msl_N640.grib | Bin
.../data/msl_regular_ll.grib | Bin
data/F640.grib => tests/data/q_F640.grib | Bin
data/sh_vo-d.grib => tests/data/vo-d_sh.grib | Bin
data/sh_z.grib => tests/data/z_sh.grib | Bin
tests/example_intf.F90 | 258 +++
tests/gribex_demo.F | 6 +-
tests/regress/CMakeLists.txt | 267 +--
tests/regress/download_tests_regress_ref_files.txt | 3 +
tests/settings.cmake | 130 ++
tests/{fft99.F => test_fft99.F} | 0
tests/{fftw.F => test_fftw.F} | 0
tests/{hsp2gg.F => test_hsp2gg.F} | 1 -
tools/bufrtools_wmo/bufr_filter.F | 99 +-
tools/gg_gridname.c | 2 +-
665 files changed, 6996 insertions(+), 7240 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 314e285..aaad0a7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,13 +68,18 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
ecbuild_add_fortran_flags("-O2 -mtune=native" BUILD RELWITHDEBINFO)
ecbuild_add_fortran_flags("-g" BUILD RELWITHDEBINFO)
ecbuild_add_fortran_flags("-g" BUILD DEBUG)
-# ecbuild_remove_fortran_flags("-fcheck=bounds" BUILD DEBUG)
+ if(ECBUILD_MACRO_VERSION VERSION_GREATER 1.9)
+ ecbuild_remove_fortran_flags("-fcheck=bounds" BUILD DEBUG)
+ endif()
set(emos_special_compiler_def "gfortran")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
ecbuild_add_fortran_flags("-DSHAREDMEMORY")
ecbuild_add_fortran_flags("-f77rtl" BUILD RELEASE)
ecbuild_add_fortran_flags("-f77rtl -g" BUILD RELWITHDEBINFO)
ecbuild_add_fortran_flags("-f77rtl -g" BUILD DEBUG)
+ if(ECBUILD_MACRO_VERSION VERSION_GREATER 1.9)
+ ecbuild_remove_fortran_flags("-check bounds" BUILD DEBUG)
+ endif()
if(HAVE_LIBEMOS_GRIBEX)
ecbuild_add_fortran_flags("-O1" BUILD RELEASE) # otherwise breaks GRIBex second-order packing
ecbuild_add_fortran_flags("-O1" BUILD RELWITHDEBINFO) # otherwise breaks GRIBex second-order packing
@@ -95,7 +100,7 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
ecbuild_add_fortran_flags("-G0 -hfp0" BUILD DEBUG)
ecbuild_add_c_flags("-Wl,--as-needed -h PIC -DSHAREDMEMORY")
else()
- message("No optimized Fortran compiler flags are known, we just try -O2...")
+ ecbuild_warn("No optimized Fortran compiler flags are known, we just try -O2...")
ecbuild_add_fortran_flags("-O2" BUILD RELEASE)
ecbuild_add_fortran_flags("-O2 -g" BUILD RELWITHDEBINFO)
ecbuild_add_fortran_flags("-O0 -g" BUILD DEBUG)
@@ -124,7 +129,7 @@ include_directories( ${GRIB_API_INCLUDE_DIRS} )
if( HAVE_FFTW )
include_directories( ${FFTW_INCLUDES} )
elseif( HAVE_REQUIRE_FFTW )
- message( FATAL_ERROR "\nCannot build without FFTW support (support is required)!")
+ ecbuild_critical("\nCannot build without FFTW support (support is required)!")
endif()
if( BUFR_TABLES_PATH )
@@ -227,8 +232,7 @@ if( IS_ABSOLUTE "${INTERPOL_TABLES_PATH}" )
else()
set(emos_interpol_tables_def INTERPOL_TABLES_PATH="${CMAKE_INSTALL_PREFIX}/${INTERPOL_TABLES_PATH}" )
endif()
-
-message( STATUS "INTERPOL_TABLES_PATH: ${INTERPOL_TABLES_PATH}" )
+ecbuild_info( "INTERPOL_TABLES_PATH: ${INTERPOL_TABLES_PATH}" )
# copy the tables/interpol to the build directory
file( COPY tables/interpol DESTINATION ${CMAKE_BINARY_DIR}/${INSTALL_DATA_DIR}/tables )
diff --git a/ChangeLog b/ChangeLog
index 51e9f4f..7107792 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +1,40 @@
+000439
+
+ Bug fixes
+ * [EMOS-269] - avoid unnecessary octahedral-to-octahedral reduced_gg interpolations
+
+000438
+
+ Notes
+ * This release is part of ECMWF Development Section Synchronised Release 2016.03
+ * This version of libemos was tested against BUFR tables version 000408, please check also changes of the previous version 000437
+
+ Improvement
+ * [EMOS-242] - bufr_filter tool error return codes
+ * [EMOS-254] - HIRLAM routines external memory management functionality
+ * [EMOS-256] - interpolation example (using INTF, Fortran 90)
+ * [EMOS-259] - extend regression tests suite (synchronized with MIR)
+ * [EMOS-263] - BUFR tables 000408
+
+ Bug fixes
+ * [EMOS-250/EMOS-255] - fix missing sanity checks on malloc returned pointer
+ * [EMOS-251] - fix regression tests without FFTW (SH to reduced_gg/octahedral interpolations require FFTW)
+ * [EMOS-252] - fix Cray failures on creating and checking Legendre coefficients file size
+ * [EMOS-260] - incorrect values for interpolation to regular_ll particular sub-areas crossing 0 degrees longitude (particular cases)
+ * [EMOS-262] - incorrect values for interpolation to single points
+ * [EMOS-267] - adjust memory allocation of reduced_gg/regular_gg to regular_ll interpolations
+ * [EMOS-268] - memory leak on era20c moda request
+ * Fix CHEQUAL for strict string comparison respecting bounds and requested range (particular cases)
+
000437
Notes
* This release is part of ECMWF Development Section Synchronised Release 2016.01
* This version of libemos was tested against BUFR tables version 000407, please check also changes of the previous version 000420
-
+
Improvement
* [EMOS-244] - BUFR tables 000407
-
+
Bug fixes
* [EMOS-238/EMOS-247] - interpolation from reduced_gg to regular_gg/regular_ll with sub-areas including the 0-meridian
diff --git a/VERSION.cmake b/VERSION.cmake
index 35be6c5..4ceaf46 100644
--- a/VERSION.cmake
+++ b/VERSION.cmake
@@ -2,4 +2,4 @@
# Do NOT forget to update pbio/emosnum.F
#
#
-set( ${PROJECT_NAME}_VERSION_STR "4.3.7" )
+set( ${PROJECT_NAME}_VERSION_STR "4.3.9" )
diff --git a/bamboo/CLANG-env.sh b/bamboo/CLANG-env.sh
index 32fa108..a89b187 100644
--- a/bamboo/CLANG-env.sh
+++ b/bamboo/CLANG-env.sh
@@ -1,5 +1,5 @@
-#!/bin/bash
-
+# No module environment on the Mac
+[[ $(uname) == "Darwin" ]] && return
# Initialise module environment if it is not
if [[ ! $(command -v module > /dev/null 2>&1) ]]; then
. /usr/local/apps/module/init/bash
diff --git a/bamboo/flags.cmake b/bamboo/flags.cmake
index cef9de3..1237788 100644
--- a/bamboo/flags.cmake
+++ b/bamboo/flags.cmake
@@ -1,5 +1,3 @@
-
-set( ENABLE_LIBEMOS_TESTS_REGRESS ON CACHE STRING "additional tests: regression" )
set( BUFR_TABLES_PATH "bufr/text" CACHE STRING "" )
set( CMAKE_C_FLAGS
@@ -9,4 +7,3 @@ set( CMAKE_C_FLAGS
set( CMAKE_Fortran_FLAGS
"-fcray-pointer -fdefault-real-8 -fdefault-double-8 -Dlinux -DREAL_8 -DREAL_BIGGER_THAN_INTEGER -DINTEGER_IS_INT -DLITTLE_ENDIAN"
CACHE STRING "Fortran flags" )
-
diff --git a/bamboo/macosx1010-flags.cmake b/bamboo/macosx1010-flags.cmake
new file mode 120000
index 0000000..98642fc
--- /dev/null
+++ b/bamboo/macosx1010-flags.cmake
@@ -0,0 +1 @@
+opensuse131-flags.cmake
\ No newline at end of file
diff --git a/bamboo/flags.cmake b/bamboo/opensuse131-flags.cmake
similarity index 99%
copy from bamboo/flags.cmake
copy to bamboo/opensuse131-flags.cmake
index cef9de3..4fc8160 100644
--- a/bamboo/flags.cmake
+++ b/bamboo/opensuse131-flags.cmake
@@ -1,4 +1,3 @@
-
set( ENABLE_LIBEMOS_TESTS_REGRESS ON CACHE STRING "additional tests: regression" )
set( BUFR_TABLES_PATH "bufr/text" CACHE STRING "" )
@@ -9,4 +8,3 @@ set( CMAKE_C_FLAGS
set( CMAKE_Fortran_FLAGS
"-fcray-pointer -fdefault-real-8 -fdefault-double-8 -Dlinux -DREAL_8 -DREAL_BIGGER_THAN_INTEGER -DINTEGER_IS_INT -DLITTLE_ENDIAN"
CACHE STRING "Fortran flags" )
-
diff --git a/bin/ecbuild b/bin/ecbuild
index b327cde..d1ffff4 100755
--- a/bin/ecbuild
+++ b/bin/ecbuild
@@ -3,7 +3,7 @@
set -eua
CMAKE_MIN_REQUIRED=2.8.10
-CMAKE_BUILD_VERSION=3.2.3
+CMAKE_BUILD_VERSION=3.4.1
usage()
{
@@ -70,13 +70,13 @@ Available values for "option":
Build static libraries.
Equivalent to "-DBUILD_SHARED_LIBS=OFF"
- --dynamic
+ --dynamic, --shared
Build dynamic libraries (usually the default).
Equivalent to "-DBUILD_SHARED_LIBS=ON"
- --shared (same option as --dynamic)
- Build dynamic libraries (usually the default).
- Equivalent to "-DBUILD_SHARED_LIBS=ON"
+ --config=<config>
+ Configuration file using CMake syntax that gets included
+ Equivalent to cmake argument "-DECBUILD_CONFIG=<config-file>"
--toolchain=<toolchain>
Use a platform specific toolchain, containing settings such
@@ -188,7 +188,7 @@ version()
log()
{
- log_level=$(sed 's/.*/\U&/' <<< "$1")
+ log_level=$(tr "[a-z]" "[A-Z]" <<< "$1")
ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DECBUILD_LOG_LEVEL=${log_level}"
}
@@ -213,6 +213,20 @@ prefix()
ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DCMAKE_INSTALL_PREFIX=${1/#\~\//$HOME/}"
}
+config()
+{
+ arg=${1/#\~\//$HOME/}
+ if [ -f $arg ]; then
+ config_file=$arg
+ config_file="$( cd $( dirname "${config_file}" ) && pwd -P )/$( basename ${config_file} )"
+ else
+ echo "Error:"
+ echo " Config file [$arg] is not found or is not a file."
+ exit 1
+ fi
+ ADD_ECBUILD_OPTIONS="$ADD_ECBUILD_OPTIONS -DECBUILD_CONFIG=${config_file}"
+}
+
toolchain()
{
arg=${1/#\~\//$HOME/}
@@ -237,7 +251,8 @@ cache()
{
arg=$1
if [ -f $arg ]; then
- cache_file=$( cd "$arg" && pwd -P )
+ cache_file=$arg
+ cache_file="$( cd $( dirname "${cache_file}" ) && pwd -P )/$( basename ${cache_file} )"
else
echo "Error:"
echo " Cache file [$arg] is not found or is not a file."
@@ -313,6 +328,9 @@ while test $# -gt 0; do
--toolchain)
toolchain $val
;;
+ --config)
+ config $val
+ ;;
--cache)
cache $val
;;
diff --git a/bufrdc_wmo/buedd.F b/bufrdc_wmo/buedd.F
index 7bf7ed2..1041b08 100644
--- a/bufrdc_wmo/buedd.F
+++ b/bufrdc_wmo/buedd.F
@@ -117,6 +117,7 @@ C
IF( KERR.NE.0 ) RETURN
C
N = KSEC3(3)
+ NOLD = 0
C
C
C* 2. EXPAND DATA DESCRIPTORS.
diff --git a/bufrdc_wmo/buetab.F b/bufrdc_wmo/buetab.F
index 000f964..03ffc6b 100644
--- a/bufrdc_wmo/buetab.F
+++ b/bufrdc_wmo/buetab.F
@@ -243,10 +243,10 @@ C
END IF
END DO
IF(OPRINT) THEN
- WRITE(KNTN,'(A,1X,A,A,A,A))') 'BUFR TABLES TO BE LOADED ',
+ WRITE(KNTN,'(A,1X,A,A,A)') 'BUFR TABLES TO BE LOADED ',
1 YTABB,',',YTABD
END IF
-c WRITE(KNTN,'(A,1X,A,A,A,A))') 'BUFR TABLES TO BE LOADED ',
+c WRITE(KNTN,'(A,1X,A,A,A,A,A)') 'BUFR TABLES TO BE LOADED ',
c 1 YTABB,',',YTABC,',',YTABD
C ----------------------------------------------------------------
diff --git a/bufrdc_wmo/bugbts.F b/bufrdc_wmo/bugbts.F
index 39ea299..3bc6904 100644
--- a/bufrdc_wmo/bugbts.F
+++ b/bufrdc_wmo/bugbts.F
@@ -247,10 +247,10 @@ C
END DO
IF(OPRINT) THEN
IF(OCTABLE) THEN
- WRITE(KNTN,'(A,1X,A,A,A,A))') 'BUFR TABLES TO BE LOADED ',
+ WRITE(KNTN,'(A,1X,A,A,A,A,A)') 'BUFR TABLES TO BE LOADED ',
1 YTABB,',',YTABC,',',YTABD
ELSE
- WRITE(KNTN,'(A,1X,A,A,A))') 'BUFR TABLES TO BE LOADED ',
+ WRITE(KNTN,'(A,1X,A,A,A)') 'BUFR TABLES TO BE LOADED ',
1 YTABB,',',YTABD
END IF
diff --git a/bufrtables/B_050f4028a43495e52440d17656e5700c.distinct b/bufrtables/B_050f4028a43495e52440d17656e5700c.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_15c1ba85a4e7e8bef762ac0273fbf153.distinct b/bufrtables/B_15c1ba85a4e7e8bef762ac0273fbf153.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_172495a28a33e613f0ab1cae797bdb8a.distinct b/bufrtables/B_172495a28a33e613f0ab1cae797bdb8a.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_23e2c110ce55a68c5ecabf542a85bb85.distinct b/bufrtables/B_23e2c110ce55a68c5ecabf542a85bb85.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_2c9ba7f915cf8796710557780604290b.distinct b/bufrtables/B_2c9ba7f915cf8796710557780604290b.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_34f832ef31098db400ba73650172b7a1.distinct b/bufrtables/B_34f832ef31098db400ba73650172b7a1.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_365ab9afedb6b68f014f6b4c4e95310b.distinct b/bufrtables/B_365ab9afedb6b68f014f6b4c4e95310b.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_382ec6532d5570e6a6f43be134b672a1.distinct b/bufrtables/B_382ec6532d5570e6a6f43be134b672a1.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_4017ed66e8966ae0063927da9d62092b.distinct b/bufrtables/B_4017ed66e8966ae0063927da9d62092b.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_419fd0728f091193ac01265d974feadb.distinct b/bufrtables/B_419fd0728f091193ac01265d974feadb.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_44c107f676c47571380f64395b24bcd2.distinct b/bufrtables/B_44c107f676c47571380f64395b24bcd2.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_47972c7924f05d5facc57044fc806c61.distinct b/bufrtables/B_47972c7924f05d5facc57044fc806c61.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_51c7b7417b09ca3a7af8279469005fe5.distinct b/bufrtables/B_51c7b7417b09ca3a7af8279469005fe5.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_65afb2f73c2bd71057520b0ecba04f2a.distinct b/bufrtables/B_65afb2f73c2bd71057520b0ecba04f2a.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_7854bdfd1d0b55c438ec71990fbea158.distinct b/bufrtables/B_7854bdfd1d0b55c438ec71990fbea158.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_88ee7a2321767d2f754d523a8bf8d95e.distinct b/bufrtables/B_88ee7a2321767d2f754d523a8bf8d95e.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_a5c81d91f7c1357d530c0a8f8c8dcdb0.distinct b/bufrtables/B_a5c81d91f7c1357d530c0a8f8c8dcdb0.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_a73bff54ea6f9b81d2ddfb9a12a374ca.distinct b/bufrtables/B_a73bff54ea6f9b81d2ddfb9a12a374ca.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_d2c349dfd98bc07e031fe6e178e77455.distinct b/bufrtables/B_d2c349dfd98bc07e031fe6e178e77455.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_d2d0f6e4aba0e1e45da2a1e8cfd6168c.distinct b/bufrtables/B_d2d0f6e4aba0e1e45da2a1e8cfd6168c.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_d4c990866c54fe08d88f5ce51b388b92.distinct b/bufrtables/B_d4c990866c54fe08d88f5ce51b388b92.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_d69fb71f66a2ab9ff3f4018c468caab3.distinct b/bufrtables/B_d69fb71f66a2ab9ff3f4018c468caab3.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_e0a53212e9fdc2bcd5d570840a13f4e1.distinct b/bufrtables/B_e0a53212e9fdc2bcd5d570840a13f4e1.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_ebc7e71fcb4772e2325cb4f40621ee4b.distinct b/bufrtables/B_ebc7e71fcb4772e2325cb4f40621ee4b.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/B_ebd9b26adcc0ec4de88daa558b79c20b.distinct b/bufrtables/B_ebd9b26adcc0ec4de88daa558b79c20b.distinct
deleted file mode 100644
index 0e7f568..0000000
--- a/bufrtables/B_ebd9b26adcc0ec4de88daa558b79c20b.distinct
+++ /dev/null
@@ -1,1806 +0,0 @@
- 000001 TABLE A: ENTRY CCITTIA5 0 0 24 CHARACTER 0 3
- 000002 TABLE A: DATA CATEGORY DESCRIPTION, LINE 1 CCITTIA5 0 0 256 CHARACTER 0 32
- 000003 TABLE A: DATA CATEGORY DESCRIPTION, LINE 2 CCITTIA5 0 0 256 CHARACTER 0 32
- 000004 BUFR/CREX MASTER TABLE CCITTIA5 0 0 16 CHARACTER 0 2
- 000005 BUFR/CREX EDITION NUMBER CCITTIA5 0 0 24 CHARACTER 0 3
- 000006 BUFR MASTER TABLE VERSION NUMBER CCITTIA5 0 0 16 CHARACTER 0 2
- 000007 CREX MASTER TABLE VERSION NUMBER CCITTIA5 0 0 16 CHARACTER 0 2
- 000008 BUFR LOCAL TABLE VERSION NUMBER CCITTIA5 0 0 16 CHARACTER 0 2
- 000010 F DESCRIPTOR TO BE ADDED OR DEFINED CCITTIA5 0 0 8 CHARACTER 0 1
- 000011 X DESCRIPTOR TO BE ADDED OR DEFINED CCITTIA5 0 0 16 CHARACTER 0 2
- 000012 Y DESCRIPTOR TO BE ADDED OR DEFINED CCITTIA5 0 0 24 CHARACTER 0 3
- 000013 ELEMENT NAME, LINE 1 CCITTIA5 0 0 256 CHARACTER 0 32
- 000014 ELEMENT NAME, LINE 2 CCITTIA5 0 0 256 CHARACTER 0 32
- 000015 UNITS NAME CCITTIA5 0 0 192 CHARACTER 0 24
- 000016 UNITS SCALE SIGN CCITTIA5 0 0 8 CHARACTER 0 1
- 000017 UNITS SCALE CCITTIA5 0 0 24 CHARACTER 0 3
- 000018 UNITS REFERENCE SIGN CCITTIA5 0 0 8 CHARACTER 0 1
- 000019 UNITS REFERENCE VALUE CCITTIA5 0 0 80 CHARACTER 0 10
- 000020 ELEMENT DATA WIDTH CCITTIA5 0 0 24 CHARACTER 0 3
- 000024 CODE FIGURE CCITTIA5 0 0 64 CHARACTER 0 8
- 000025 CODE FIGURE MEANING CCITTIA5 0 0 496 CHARACTER 0 62
- 000026 BIT NUMBER CCITTIA5 0 0 48 CHARACTER 0 6
- 000027 BIT NUMBER MEANING CCITTIA5 0 0 496 CHARACTER 0 62
- 000030 DESCRIPTOR DEFINING SEQUENCE CCITTIA5 0 0 48 CHARACTER 0 6
- 001001 WMO BLOCK NUMBER NUMERIC 0 0 7 NUMERIC 0 2
- 001002 WMO STATION NUMBER NUMERIC 0 0 10 NUMERIC 0 3
- 001003 WMO REGION NUMBER/GEOGRAPHICAL AREA CODE TABLE 1003 0 0 3 CODE TABLE 1003 0 1
- 001004 WMO REGION SUB-AREA NUMERIC 0 0 3 NUMERIC 0 1
- 001005 BUOY/PLATFORM IDENTIFIER NUMERIC 0 0 17 NUMERIC 0 5
- 001006 AIRCRAFT FLIGHT NUMBER CCITTIA5 0 0 64 CHARACTER 0 8
- 001007 SATELLITE IDENTIFIER CODE TABLE 1007 0 0 10 CODE TABLE 1007 0 4
- 001008 AIRCRAFT REGISTRATION NUMBER OR OTHER IDENTIFICATION CCITTIA5 0 0 64 CHARACTER 0 8
- 001009 TYPE OF COMMERCIAL AIRCRAFT CCITTIA5 0 0 64 CHARACTER 0 8
- 001010 STATIONARY BUOY PLATFORM IDENTIFIER; E.G. C-MAN BUOYS CCITTIA5 0 0 64 CHARACTER 0 8
- 001011 SHIP OR MOBILE LAND STATION IDENTIFIER CCITTIA5 0 0 72 CHARACTER 0 9
- 001012 DIRECTION OF MOTION OF MOVING OBSERVING PLATFORM DEG 0 0 9 DEG 0 3
- 001013 SPEED OF MOTION OF MOVING OBSERVING PLATFORM M S-1 0 0 10 M S-1 0 3
- 001014 PLATFORM DRIFT SPEED (HIGH PRECISION) M S-1 2 0 10 M S-1 2 4
- 001015 STATION OR SITE NAME CCITTIA5 0 0 160 CHARACTER 0 20
- 001018 SHORT STATION OR SITE NAME CCITTIA5 0 0 40 CHARACTER 0 5
- 001019 LONG STATION OR SITE NAME CCITTIA5 0 0 256 CHARACTER 0 32
- 001020 WMO REGION SUB-AREA NUMERIC 0 0 4 NUMERIC 0 2
- 001021 SYNOPTIC FEATURE IDENTIFIER NUMERIC 0 0 14 NUMERIC 0 4
- 001022 NAME OF FEATURE CCITTIA5 0 0 224 CHARACTER 0 28
- 001023 OBSERVATION SEQUENCE NUMBER NUMERIC 0 0 9 NUMERIC 0 3
- 001024 WIND SPEED SOURCE CODE TABLE 1024 0 0 5 CODE TABLE 1024 0 2
- 001025 STORM IDENTIFIER CCITTIA5 0 0 24 CHARACTER 0 3
- 001026 WMO STORM NAME CCITTIA5 0 0 64 CHARACTER 0 8
- 001027 WMO LONG STORM NAME CCITTIA5 0 0 80 CHARACTER 0 10
- 001028 AEROSOL OPTICAL DEPTH (AOD) SOURCE CODE TABLE 1028 0 0 5 CODE TABLE 1028 0 2
- 001029 SSI SOURCE CODE TABLE 1029 0 0 5 CODE TABLE 1029 0 2
- 001030 NUMERICAL MODEL IDENTIFIER CCITTIA5 0 0 128 CHARACTER 0 16
- 001031 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE CODE TABLE 1031 0 0 16 CODE TABLE 1031 0 5
- 001032 GENERATING APPLICATION CODE TABLE DEFINED BY OR 0 0 8 CODE TABLE 1032 0 3
- 001033 IDENTIFICATION OF ORIGINATING/GENERATING CENTRE COMMON CODE TABLE C-1 0 0 8 COMMON CODE TABLE C-1 0 3
- 001034 IDENTIFICATION OF ORIGINATING/GENERATING SUB-CENTRE COMMON CODE TABLE C-12 0 0 8 COMMON CODE TABLE C-12 0 3
- 001035 ORIGINATING CENTRE COMMON CODE TABLE C-11 0 0 16 COMMON CODE TABLE C-11 0 5
- 001036 AGENCY IN CHARGE OF OPERATING THE OBSERVING PLATFORM CODE TABLE 1036 0 0 20 CODE TABLE 1036 0 7
- 001037 SIGMET SEQUENCE IDENTIFIER CCITTIA5 0 0 24 CHARACTER 0 3
- 001038 SOURCE OF SEA ICE FRACTION CODE TABLE 1038 0 0 5 CODE TABLE 1038 0 2
- 001039 GRAPHICAL AREA FORECAST (GFA) SEQUENCE IDENTIFIER CCITTIA5 0 0 40 CHARACTER 0 5
- 001040 PROCESSING CENTRE ID CODE CCITTIA5 0 0 48 CHARACTER 0 6
- 001041 ABSOLUTE PLATFORM VELOCITY - FIRST COMPONENT M S-1 5 -1073741824 31 M S-1 5 10
- 001042 ABSOLUTE PLATFORM VELOCITY - SECOND COMPONENT M S-1 5 -1073741824 31 M S-1 5 10
- 001043 ABSOLUTE PLATFORM VELOCITY - THIRD COMPONENT M S-1 5 -1073741824 31 M S-1 5 10
- 001050 PLATFORM TRANSMITTER ID NUMBER NUMERIC 0 0 17 NUMERIC 0 6
- 001051 PLATFORM TRANSMITTER ID NUMBER CCITTIA5 0 0 96 CHARACTER 0 12
- 001052 PLATFORM TRANSMITTER ID CODE TABLE 1052 0 0 3 CODE TABLE 1052 0 1
- 001053 TSUNAMETER REPORT SEQUENCE NUMBER TRIGGERED BY A TSUNAMI EVENT NUMERIC 0 0 7 NUMERIC 0 2
- 001060 AIRCRAFT REPORTING POINT (BEACON IDENTIFIER) CCITTIA5 0 0 64 CHARACTER 0 8
- 001062 SHORT ICAO LOCATION INDICATOR CCITTIA5 0 0 32 CHARACTER 0 4
- 001063 ICAO LOCATION INDICATOR CCITTIA5 0 0 64 CHARACTER 0 8
- 001064 RUNWAY DESIGNATOR CCITTIA5 0 0 32 CHARACTER 0 4
- 001065 ICAO REGION IDENTIFIER CCITTIA5 0 0 256 CHARACTER 0 32
- 001075 TIDE STATION IDENTIFICATION CCITTIA5 0 0 40 CHARACTER 0 5
- 001079 UNIQUE IDENTIFIER FOR THE PROFILE CCITTIA5 0 0 64 CHARACTER 0 8
- 001080 SHIP LINE NUMBER ACCORDING TO SOOP CCITTIA5 0 0 32 CHARACTER 0 4
- 001081 RADIOSONDE SERIAL NUMBER CCITTIA5 0 0 160 CHARACTER 0 20
- 001082 RADIOSONDE ASCENSION NUMBER NUMERIC 0 0 14 NUMERIC 0 4
- 001083 RADIOSONDE RELEASE NUMBER NUMERIC 0 0 3 NUMERIC 0 1
- 001085 OBSERVING PLATFORM MANUFACTURER'S MODEL CCITTIA5 0 0 160 CHARACTER 0 20
- 001086 OBSERVING PLATFORM MANUFACTURER'S SERIAL NUMBER CCITTIA5 0 0 256 CHARACTER 0 32
- 001087 WMO MARINE OBSERVING PLATFORM EXTENDED IDENTIFIER NUMERIC 0 0 23 NUMERIC 0 7
- 001090 TECHNIQUE FOR MAKING UP INITIAL PERTURBATIONS CODE TABLE 1090 0 0 8 CODE TABLE 1090 0 3
- 001091 ENSEMBLE MEMBER NUMBER NUMERIC 0 0 10 NUMERIC 0 4
- 001092 TYPE OF ENSEMBLE FORECAST CODE TABLE 1092 0 0 8 CODE TABLE 1092 0 3
- 001093 BALLOON LOT NUMBER CCITTIA5 0 0 96 CHARACTER 0 12
- 001094 WBAN NUMBER NUMERIC 0 0 17 NUMERIC 0 5
- 001095 OBSERVER IDENTIFICATION CCITTIA5 0 0 32 CHARACTER 0 4
- 001096 STATION ACQUISITION CCITTIA5 0 0 160 CHARACTER 0 20
- 001099 UNIQUE PRODUCT DEFINITION CCITTIA5 0 0 248 CHARACTER 0 31
- 001101 STATE IDENTIFIER CODE TABLE 1101 0 0 10 CODE TABLE 1101 0 3
- 001102 NATIONAL STATION NUMBER NUMERIC 0 0 30 NUMERIC 0 9
- 001103 IMO NUMBER. UNIQUE LLOYD'S REGISTER NUMERIC 0 0 24 NUMERIC 0 7
- 001110 AIRCRAFT TAIL NUMBER CCITTIA5 0 0 48 CHARACTER 0 6
- 001111 ORIGINATION AIRPORT CCITTIA5 0 0 24 CHARACTER 0 3
- 001112 DESTINATION AIRPORT CCITTIA5 0 0 24 CHARACTER 0 3
- 001113 TEMPLATE VERSION NUMBER DEFINED BY ORIGINATING CENTRE NUMERIC 1 0 9 NUMERIC 1 3
- 001115 IDENTIFIER OF THE CRUISE OR MISSION UNDER WHICH THE DATA WERE CO CCITTIA5 0 0 160 CHARACTER 0 20
- 001124 GRID POINT IDENTIFIER NUMERIC 0 0 24 NUMERIC 0 8
- 001144 SNAPSHOT IDENTIFIER NUMERIC 0 0 31 NUMERIC 0 10
- 001192 MODEL VERSION NUMBER CODE TABLE 1192 0 0 8
- 001193 SIGMA_0 SIMULATION METHOD CODE TABLE 1193 0 0 4
- 001194 CARRIER BALLOON/AIRCRAFT IDENTIFIER CCITTIA5 0 0 72
- 001195 MOBIL LAND STATION IDENTIFIER CCITTIA5 0 0 72
- 001196 CONSTANT LEVEL BALLOON IDENTIFIER CCITTIA5 0 0 72
- 001197 RTP - PLATFORM TYPE CODE TABLE 1197 0 0 10
- 001198 ITP - DECK ID CODE TABLE 1198 0 0 10
- 001199 DUP - DUPLICATE STATUS CODE TABLE 1199 0 0 4
- 001201 GENERATING APPLICATION CODE TABLE 1201 0 0 8
- 001205 SATELLITE IDENTIFIER CODE TABLE 1205 0 0 10
- 001208 VELOCITY OF PLATFORM, X M S-1 5 -1073741824 31
- 001209 VELOCITY OF PLATFORM, Y M S-1 5 -1073741824 31
- 001210 VELOCITY OF PLATFORM, Z M S-1 5 -1073741824 31
- 001211 ORIGIN OF SEA SURFACE ANALYSIS CCITTIA5 0 0 160 CHARACTER 0 20
- 001220 RADAR COMPOSITE NAME CCITTIA5 0 0 160 CHARACTER 0 20
- 002001 TYPE OF STATION CODE TABLE 2001 0 0 2 CODE TABLE 2001 0 1
- 002002 TYPE OF INSTRUMENTATION FOR WIND MEASUREMENT FLAG TABLE 2002 0 0 4 FLAG TABLE 2002 0 2
- 002003 TYPE OF MEASURING EQUIPMENT USED CODE TABLE 2003 0 0 4 CODE TABLE 2003 0 2
- 002004 TYPE OF INSTRUMENTATION FOR EVAPORATION MEASUREMENT OR TYPE OF C CODE TABLE 2004 0 0 4 CODE TABLE 2004 0 2
- 002005 PRECISION OF TEMPERATURE OBSERVATION K 2 0 7 K 2 3
- 002007 TYPE OF SENSOR FOR WATER LEVEL MEASURING INSTRUMENT CODE TABLE 2007 0 0 6 CODE TABLE 2007 0 2
- 002011 RADIOSONDE TYPE CODE TABLE 2011 0 0 8 CODE TABLE 2011 0 3
- 002012 RADIOSONDE COMPUTATIONAL METHOD CODE TABLE 2012 0 0 4 CODE TABLE 2012 0 2
- 002013 SOLAR AND INFRARED RADIATION CORRECTION CODE TABLE 2013 0 0 4 CODE TABLE 2013 0 2
- 002014 TRACKING TECHNIQUE/STATUS OF SYSTEM USED CODE TABLE 2014 0 0 7 CODE TABLE 2014 0 3
- 002015 RADIOSONDE COMPLETENESS CODE TABLE 2015 0 0 4 CODE TABLE 2015 0 2
- 002016 RADIOSONDE CONFIGURATION FLAG TABLE 2016 0 0 5 FLAG TABLE 2016 0 2
- 002017 CORRECTION ALGORITHMS FOR HUMIDITY MEASUREMENTS CODE TABLE 2017 0 0 5 CODE TABLE 2017 0 2
- 002019 SATELLITE INSTRUMENTS CODE TABLE 2019 0 0 11 CODE TABLE 2019 0 4
- 002020 SATELLITE CLASSIFICATION CODE TABLE 2020 0 0 9 CODE TABLE 2020 0 3
- 002021 SATELLITE INSTRUMENT DATA USED IN PROCESSING FLAG TABLE 2021 0 0 9 FLAG TABLE 2021 0 3
- 002022 SATELLITE DATA-PROCESSING TECHNIQUE USED FLAG TABLE 2022 0 0 8 FLAG TABLE 2022 0 3
- 002023 SATELLITE-DERIVED WIND COMPUTATION METHOD CODE TABLE 2023 0 0 4 CODE TABLE 2023 0 2
- 002024 INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD CODE TABLE 2024 0 0 4 CODE TABLE 2024 0 2
- 002025 SATELLITE CHANNEL(S) USED IN COMPUTATION FLAG TABLE 2025 0 0 25 FLAG TABLE 2025 0 9
- 002026 CROSS-TRACK RESOLUTION M 2 0 12 M 2 4
- 002027 ALONG-TRACK RESOLUTION M 2 0 12 M 2 4
- 002028 SEGMENT SIZE AT NADIR IN X-DIRECTION M 0 0 18 M 0 6
- 002029 SEGMENT SIZE AT NADIR IN Y-DIRECTION M 0 0 18 M 0 6
- 002030 METHOD OF CURRENT MEASUREMENT CODE TABLE 2030 0 0 3 CODE TABLE 2030 0 1
- 002031 DURATION AND TIME OF CURRENT MEASUREMENT CODE TABLE 2031 0 0 5 CODE TABLE 2031 0 2
- 002032 INDICATOR FOR DIGITIZATION CODE TABLE 2032 0 0 2 CODE TABLE 2032 0 1
- 002033 METHOD OF SALINITY/DEPTH MEASUREMENT CODE TABLE 2033 0 0 3 CODE TABLE 2033 0 1
- 002034 DROGUE TYPE CODE TABLE 2034 0 0 5 CODE TABLE 2034 0 2
- 002035 CABLE LENGTH M 0 0 9 M 0 3
- 002036 BUOY TYPE CODE TABLE 2036 0 0 2 CODE TABLE 2036 0 1
- 002037 METHOD OF TIDAL OBSERVATION CODE TABLE 2037 0 0 3 CODE TABLE 2037 0 1
- 002038 METHOD OF WATER TEMPERATURE AND/OR SALINITY MEASUREMENT CODE TABLE 2038 0 0 4 CODE TABLE 2038 0 2
- 002039 METHOD OF WET-BULB TEMPERATURE MEASUREMENT CODE TABLE 2039 0 0 3 CODE TABLE 2039 0 1
- 002040 METHOD OF REMOVING VELOCITY AND MOTION OF PLATFORM FROM CURRENT CODE TABLE 2040 0 0 4 CODE TABLE 2040 0 2
- 002041 METHOD FOR ESTIMATING REPORTS RELATED TO SYNOPTIC FEATURES CODE TABLE 2041 0 0 6 CODE TABLE 2041 0 2
- 002042 INDICATOR FOR SEA-SURFACE CURRENT SPEED CODE TABLE 2042 0 0 2 CODE TABLE 2042 0 1
- 002044 INDICATOR FOR METHOD OF CALCULATING SPECTRAL WAVE DATA CODE TABLE 2044 0 0 4 CODE TABLE 2044 0 2
- 002045 INDICATOR FOR TYPE OF PLATFORM CODE TABLE 2045 0 0 4 CODE TABLE 2045 0 2
- 002046 WAVE MEASUREMENT INSTRUMENTATION CODE TABLE 2046 0 0 4 CODE TABLE 2046 0 2
- 002047 DEEP-OCEAN TSUNAMETER TYPE CODE TABLE 2047 0 0 7 CODE TABLE 2047 0 2
- 002048 SATELLITE SENSOR INDICATOR CODE TABLE 2048 0 0 4 CODE TABLE 2048 0 2
- 002049 GEOSTATIONARY SATELLITE DATA-PROCESSING TECHNIQUE USED FLAG TABLE 2049 0 0 8 FLAG TABLE 2049 0 3
- 002050 GEOSTATIONARY SOUNDER SATELLITE CHANNELS USED FLAG TABLE 2050 0 0 20 FLAG TABLE 2050 0 7
- 002051 INDICATOR TO SPECIFY OBSERVING METHOD FOR EXTREME TEMPERATURES CODE TABLE 2051 0 0 4 CODE TABLE 2051 0 2
- 002052 GEOSTATIONARY IMAGER SATELLITE CHANNELS USED FLAG TABLE 2052 0 0 6 FLAG TABLE 2052 0 2
- 002053 GOES-I/M BRIGHTNESS TEMPERATURE CHARACTERISTICS CODE TABLE 2053 0 0 4 CODE TABLE 2053 0 2
- 002054 GOES-I/M SOUNDINGS PARAMETER CHARACTERISTICS CODE TABLE 2054 0 0 4 CODE TABLE 2054 0 2
- 002055 GEOSTATIONARY SOUNDINGS STATISTICAL PARAMETERS CODE TABLE 2055 0 0 4 CODE TABLE 2055 0 2
- 002056 GEOSTATIONARY SOUNDINGS ACCURACY STATISTICS CODE TABLE 2056 0 0 4 CODE TABLE 2056 0 2
- 002057 ORIGIN OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS CODE TABLE 2057 0 0 4 CODE TABLE 2057 0 2
- 002058 VALID TIMES OF FIRST-GUESS INFORMATION FOR GOES-I/M SOUNDINGS CODE TABLE 2058 0 0 4 CODE TABLE 2058 0 2
- 002059 ORIGIN OF ANALYSIS INFORMATION FOR GOES-I/M SOUNDINGS CODE TABLE 2059 0 0 4 CODE TABLE 2059 0 2
- 002060 ORIGIN OF SURFACE INFORMATION FOR GOES-I/M SOUNDINGS CODE TABLE 2060 0 0 4 CODE TABLE 2060 0 2
- 002061 AIRCRAFT NAVIGATIONAL SYSTEM CODE TABLE 2061 0 0 3 CODE TABLE 2061 0 1
- 002062 TYPE OF AIRCRAFT DATA RELAY SYSTEM CODE TABLE 2062 0 0 4 CODE TABLE 2062 0 2
- 002063 AIRCRAFT ROLL ANGLE DEG 2 -18000 16 DEG 2 5
- 002064 AIRCRAFT ROLL ANGLE QUALITY CODE TABLE 2064 0 0 2 CODE TABLE 2064 0 1
- 002065 ACARS GROUND-RECEIVING STATION CCITTIA5 0 0 40 CHARACTER 0 5
- 002066 RADIOSONDE GROUND RECEIVING SYSTEM CODE TABLE 2066 0 0 6 CODE TABLE 2066 0 2
- 002067 RADIOSONDE OPERATING FREQUENCY HZ -5 0 15 HZ -5 5
- 002070 ORIGINAL SPECIFICATION OF LATITUDE/LONGITUDE CODE TABLE 2070 0 0 4 CODE TABLE 2070 0 2
- 002071 SPECTROGRAPHIC WAVELENGTH M 13 0 30 M 13 10
- 002072 SPECTROGRAPHIC WIDTH M 13 0 30 M 13 10
- 002080 BALLOON MANUFACTURER CODE TABLE 2080 0 0 6 CODE TABLE 2080 0 2
- 002081 TYPE OF BALLOON CODE TABLE 2081 0 0 5 CODE TABLE 2081 0 2
- 002082 WEIGHT OF BALLOON KG 3 0 12 KG 3 4
- 002083 TYPE OF BALLOON SHELTER CODE TABLE 2083 0 0 4 CODE TABLE 2083 0 2
- 002084 TYPE OF GAS USED IN BALLOON CODE TABLE 2084 0 0 4 CODE TABLE 2084 0 2
- 002085 AMOUNT OF GAS USED IN BALLOON KG 3 0 13 KG 3 4
- 002086 BALLOON FLIGHT TRAIN LENGTH M 1 0 10 M 1 4
- 002091 ENTRY SENSOR 4/20 MA A 4 0 10 A 4 3
- 002095 TYPE OF PRESSURE SENSOR CODE TABLE 2095 0 0 5 CODE TABLE 2095 0 2
- 002096 TYPE OF TEMPERATURE SENSOR CODE TABLE 2096 0 0 5 CODE TABLE 2096 0 2
- 002097 TYPE OF HUMIDITY SENSOR CODE TABLE 2097 0 0 5 CODE TABLE 2097 0 2
- 002099 POLARIZATION CODE TABLE 2099 0 0 3 CODE TABLE 2099 0 1
- 002100 RADAR CONSTANT DB 1 0 12 DB 1 4
- 002101 TYPE OF ANTENNA CODE TABLE 2101 0 0 4 CODE TABLE 2101 0 2
- 002102 ANTENNA HEIGHT ABOVE TOWER BASE M 0 0 8 M 0 3
- 002103 RADOME FLAG TABLE 2103 0 0 2 FLAG TABLE 2103 0 1
- 002104 ANTENNA POLARIZATION CODE TABLE 2104 0 0 4 CODE TABLE 2104 0 2
- 002105 MAXIMUM ANTENNA GAIN DB 0 0 6 DB 0 2
- 002106 3-DB BEAMWIDTH DEG 1 0 6 DEG 1 2
- 002107 SIDELOBE SUPPRESSION DB 0 0 6 DB 0 2
- 002108 CROSSPOL DISCRIMINATION (ON AXIS) DB 0 0 6 DB 0 2
- 002109 ANTENNA SPEED (AZIMUTH) DEG S-1 2 0 12 DEG S-1 2 4
- 002110 ANTENNA SPEED (ELEVATION) DEG S-1 2 0 12 DEG S-1 2 4
- 002111 RADAR INCIDENCE ANGLE DEG 1 0 10 DEG 1 4
- 002112 RADAR LOOK ANGLE DEG 1 0 12 DEG 1 4
- 002113 NUMBER OF AZIMUTH LOOKS NUMERIC 0 0 4 NUMERIC 0 2
- 002114 ANTENNA EFFECTIVE SURFACE AREA M2 0 0 15 M2 0 5
- 002115 TYPE OF SURFACE OBSERVING EQUIPMENT CODE TABLE 2115 0 0 5 CODE TABLE 2115 0 2
- 002116 PERCENTAGE OF 320 MHZ BAND PROCESSED % 0 0 7 % 0 3
- 002117 PERCENTAGE OF 80 MHZ BAND PROCESSED % 0 0 7 % 0 3
- 002118 PERCENTAGE OF 20 MHZ BAND PROCESSED % 0 0 7 % 0 3
- 002119 RA-2 INSTRUMENT OPERATIONS CODE TABLE 2119 0 0 3 CODE TABLE 2119 0 1
- 002120 OCEAN WAVE FREQUENCY HZ 3 0 10 HZ 3 4
- 002121 MEAN FREQUENCY HZ -8 0 7 HZ -8 3
- 002122 FREQUENCY AGILITY RANGE HZ -6 -128 8 HZ -6 3
- 002123 PEAK POWER W -4 0 7 W -4 3
- 002124 AVERAGE POWER W -1 0 7 W -1 3
- 002125 PULSE REPETITION FREQUENCY HZ -1 0 8 HZ -1 3
- 002126 PULSE WIDTH S 7 0 6 S 7 2
- 002127 RECEIVER INTERMEDIATE FREQUENCY HZ -6 0 7 HZ -6 3
- 002128 INTERMEDIATE FREQUENCY BANDWIDTH HZ -5 0 6 HZ -5 2
- 002129 MINIMUM DETECTABLE SIGNAL DB 0 -150 5 DB 0 3
- 002130 DYNAMIC RANGE DB 0 0 7 DB 0 3
- 002131 SENSITIVITY TIME CONTROL (STC) FLAG TABLE 2131 0 0 2 FLAG TABLE 2131 0 1
- 002132 AZIMUTH POINTING ACCURACY DEG 2 0 6 DEG 2 2
- 002133 ELEVATION POINTING ACCURACY DEG 2 0 6 DEG 2 2
- 002134 ANTENNA BEAM AZIMUTH DEG 2 0 16 DEG 2 5
- 002135 ANTENNA ELEVATION DEG 2 -9000 15 DEG 2 5
- 002136 RANGE PROCESSED BY RANGE ATTENUATION CORRECTION M -3 0 16 M -3 5
- 002137 RADAR DUAL PRF RATIO CODE TABLE 2137 0 0 4 CODE TABLE 2137 0 2
- 002138 ANTENNA ROTATION DIRECTION CODE TABLE 2138 0 0 2 CODE TABLE 2138 0 1
- 002139 SIRAL INSTRUMENT CONFIGURATION CODE TABLE 2139 0 0 2 CODE TABLE 2139 0 1
- 002140 SATELLITE RADAR BEAM AZIMUTH ANGLE DEG 0 0 9 DEG 0 3
- 002141 MEASUREMENT TYPE CCITTIA5 0 0 24 CHARACTER 0 3
- 002142 OZONE INSTRUMENT SERIAL NUMBER/IDENTIFICATION CCITTIA5 0 0 32 CHARACTER 0 4
- 002143 OZONE INSTRUMENT TYPE CODE TABLE 2143 0 0 7 CODE TABLE 2143 0 3
- 002144 LIGHT SOURCE TYPE FOR BREWER SPECTROPHOTOMETER CODE TABLE 2144 0 0 4 CODE TABLE 2144 0 2
- 002145 WAVELENGTH SETTING FOR DOBSON INSTRUMENTS CODE TABLE 2145 0 0 4 CODE TABLE 2145 0 2
- 002146 SOURCE CONDITIONS FOR DOBSON INSTRUMENTS CODE TABLE 2146 0 0 4 CODE TABLE 2146 0 2
- 002147 METHOD OF TRANSMISSION TO COLLECTION CENTRE CODE TABLE 2147 0 0 6 CODE TABLE 2147 0 2
- 002148 DATA COLLECTION AND/OR LOCATION SYSTEM CODE TABLE 2148 0 0 5 CODE TABLE 2148 0 2
- 002149 TYPE OF DATA BUOY CODE TABLE 2149 0 0 6 CODE TABLE 2149 0 2
- 002150 TOVS/ATOVS/AVHRR INSTRUMENTATION CHANNEL NUMBER CODE TABLE 2150 0 0 6 CODE TABLE 2150 0 2
- 002151 RADIOMETER IDENTIFIER CODE TABLE 2151 0 0 11 CODE TABLE 2151 0 4
- 002152 SATELLITE INSTRUMENT USED IN DATA PROCESSING FLAG TABLE 2152 0 0 31 FLAG TABLE 2152 0 10
- 002153 SATELLITE CHANNEL CENTRE FREQUENCY HZ -8 0 26 HZ -8 8
- 002154 SATELLITE CHANNEL BAND WIDTH HZ -8 0 26 HZ -8 8
- 002155 SATELLITE CHANNEL WAVELENGTH M 9 0 16 M 9 5
- 002156 PERCENTAGE OF VALID KU OCEAN RETRACKER MEASUREMENTS % 0 0 7 % 0 3
- 002157 PERCENTAGE OF VALID S OCEAN RETRACKER MEASUREMENTS % 0 0 7 % 0 3
- 002158 RA-2 INSTRUMENT FLAG TABLE 2158 0 0 9 FLAG TABLE 2158 0 3
- 002159 MWR INSTRUMENT FLAG TABLE 2159 0 0 8 FLAG TABLE 2159 0 3
- 002160 WAVE LENGTH OF THE RADAR CODE TABLE 2160 0 0 4 CODE TABLE 2160 0 2
- 002163 HEIGHT ASSIGNMENT METHOD CODE TABLE 2163 0 0 4 CODE TABLE 2163 0 2
- 002164 TRACER CORRELATION METHOD CODE TABLE 2164 0 0 3 CODE TABLE 2164 0 1
- 002165 RADIANCE TYPE FLAGS FLAG TABLE 2165 0 0 15 FLAG TABLE 2165 0 5
- 002166 RADIANCE TYPE CODE TABLE 2166 0 0 4 CODE TABLE 2166 0 2
- 002167 RADIANCE COMPUTATIONAL METHOD CODE TABLE 2167 0 0 4 CODE TABLE 2167 0 2
- 002168 HYDROSTATIC PRESSURE OF LOWER END OF CABLE (THERMISTOR STRING) PA -3 0 16 KPA 0 5
- 002169 ANEMOMETER TYPE CODE TABLE 2169 0 0 4 CODE TABLE 2169 0 2
- 002170 AIRCRAFT HUMIDITY SENSORS CODE TABLE 2170 0 0 6 CODE TABLE 2170 0 2
- 002171 INSTRUMENT SERIAL NUMBER FOR WATER TEMPERATURE PROFILE MEASUREME CCITTIA5 0 0 64 CHARACTER 0 8
- 002172 PRODUCT TYPE FOR RETRIEVED ATMOSPHERIC GASES CODE TABLE 2172 0 0 8 CODE TABLE 2172 0 3
- 002173 SQUARE OF THE OFF-NADIR ANGLE DEG2 4 0 10 DEG2 4 4
- 002174 MEAN ACROSS TRACK PIXEL NUMBER NUMERIC 0 0 9 NUMERIC 0 3
- 002175 METHOD OF PRECIPITATION MEASUREMENT CODE TABLE 2175 0 0 4 CODE TABLE 2175 0 2
- 002176 METHOD OF STATE OF GROUND MEASUREMENT CODE TABLE 2176 0 0 4 CODE TABLE 2176 0 2
- 002177 METHOD OF SNOW DEPTH MEASUREMENT CODE TABLE 2177 0 0 4 CODE TABLE 2177 0 2
- 002178 METHOD OF LIQUID CONTENT MEASUREMENT OF PRECIPITATION CODE TABLE 2178 0 0 4 CODE TABLE 2178 0 2
- 002179 TYPE OF SKY CONDITION ALGORITHM CODE TABLE 2179 0 0 4 CODE TABLE 2179 0 2
- 002180 MAIN PRESENT WEATHER DETECTING SYSTEM CODE TABLE 2180 0 0 4 CODE TABLE 2180 0 2
- 002181 SUPPLEMENTARY PRESENT WEATHER SENSOR FLAG TABLE 2181 0 0 21 FLAG TABLE 2181 0 7
- 002182 VISIBILITY MEASUREMENT SYSTEM CODE TABLE 2182 0 0 4 CODE TABLE 2182 0 2
- 002183 CLOUD DETECTION SYSTEM CODE TABLE 2183 0 0 4 CODE TABLE 2183 0 2
- 002184 TYPE OF LIGHTNING DETECTION SENSOR CODE TABLE 2184 0 0 4 CODE TABLE 2184 0 2
- 002185 METHOD OF EVAPORATION MEASUREMENT CODE TABLE 2185 0 0 4 CODE TABLE 2185 0 2
- 002186 CAPABILITY TO DETECT PRECIPITATION PHENOMENA FLAG TABLE 2186 0 0 30 FLAG TABLE 2186 0 10
- 002187 CAPABILITY TO DETECT OTHER WEATHER PHENOMENA FLAG TABLE 2187 0 0 18 FLAG TABLE 2187 0 6
- 002188 CAPABILITY TO DETECT OBSCURATION FLAG TABLE 2188 0 0 21 FLAG TABLE 2188 0 7
- 002189 CAPABILITY TO DISCRIMINATE LIGHTNING STRIKES FLAG TABLE 2189 0 0 12 FLAG TABLE 2189 0 4
- 002190 LAGRANGIAN DRIFTER SUBMERGENCE (% TIME SUBMERGED) % 0 0 7 % 0 3
- 002191 GEOPOTENTIAL HEIGHT CALCULATION CODE TABLE 2191 0 0 4 CODE TABLE 2191 0 2
- 002192 SAR AZIMUTH ANGLE DEG 0 0 9
- 002193 1D VAR SATELLITE CHANNEL(S) USED FLAG TABLE 2193 0 0 28
- 002194 CONSTANT LEVEL BALLOON TYPE CODE TABLE 2194 0 0 4
- 002195 TYPE OF SATELLITE INSTRUMENTATION CODE TABLE 2195 0 0 4
- 002196 SATELLITE CLASSIFICATION CODE TABLE 2196 0 0 9
- 002197 SATELLITE CHANNEL CENTRE FREQUENCY HZ -8 0 26
- 002198 SATELLITE CHANNEL BAND WIDTH HZ -8 0 26
- 002199 INTEGRATED MEAN HUMIDITY COMPUTATIONAL METHOD CODE TABLE 2199 0 0 4
- 002200 LATITUDINAL RESOLUTION DEG 5 0 25
- 002201 LONGITUDINAL RESOLUTION DEG 5 0 25
- 002202 SIMULATED DATA PROCESSING TECHNIQUE USED FLAG TABLE 2202 0 0 4
- 002205 LATITUDINAL RESOLUTION DEG 3 0 9
- 002206 LONGITUDINAL RESOLUTION DEG 3 0 9
- 002207 TYPE OF SCAN CODE TABLE 2207 0 0 3
- 002220 DATA PRODUCER CODE TABLE 2220 0 0 9
- 002221 SEGMENT SIZE AT NADIR IN X DIRECTION M 0 0 18
- 002222 SEGMENT SIZE AT NADIR IN Y DIRECTION M 0 0 18
- 002223 TOVS/ATOVS/AVHRR CHANNEL NUMBER CODE TABLE 2223 0 0 6
- 002224 SPACECRAFT ROLL DEG 2 0 16
- 002225 SPACECRAFT PITCH DEG 2 0 16
- 002226 SPACECRAFT YAW DEG 2 0 16
- 002231 HEIGHT ASSIGNMENT METHOD CODE TABLE 2231 0 0 4
- 002232 TRACER CORRELATION METHOD CODE TABLE 2232 0 0 3
- 002240 TYPE OF TERMODYNAMIC SENSING CODE TABLE 2240 0 0 8
- 002241 TYPE OF ROCKET MOTOR CODE TABLE 2241 0 0 3
- 002242 TYPE OF WIND SENSING EQUIPMENT CODE TABLE 2242 0 0 8
- 002243 TERMODYNAMIC CORRECTION TECHNIQUE CODE TABLE 2243 0 0 3
- 002244 WIND CORRECTION TECHNIQUE CODE TABLE 2244 0 0 3
- 002245 METHOD OF REDUCING OF DATA CODE TABLE 2245 0 0 4
- 002251 RADIANCE COMPUTATIONAL METHOD CODE TABLE 2251 0 0 4
- 002252 SATELLITE INSTRUMENT DATA USED IN PROCESSING FLAG TABLE 2252 0 0 31
- 002253 HUMIDITY COMPUTATIONAL METHOD CODE TABLE 2253 0 0 8
- 002254 RADIANCE TYPE CODE TABLE 2254 0 0 4
- 003010 METHOD OF SEA/WATER CURRENT MEASUREMENT CODE TABLE 3010 0 0 4 CODE TABLE 3010 0 2
- 003011 METHOD OF DEPTH CALCULATION CODE TABLE 3011 0 0 2 CODE TABLE 3011 0 1
- 003012 INSTRUMENT TYPE/SENSOR FOR DISSOLVED OXYGEN MEASUREMENT CODE TABLE 3012 0 0 4 CODE TABLE 3012 0 2
- 004001 YEAR A 0 0 12 A 0 4
- 004002 MONTH MON 0 0 4 MON 0 2
- 004003 DAY D 0 0 6 D 0 2
- 004004 HOUR H 0 0 5 H 0 2
- 004005 MINUTE MIN 0 0 6 MIN 0 2
- 004006 SECOND S 0 0 6 S 0 2
- 004007 SECONDS WITHIN A MINUTE (MICROSECOND ACCURACY) S 6 0 26 S 6 8
- 004011 TIME INCREMENT A 0 -1024 11 A 0 4
- 004012 TIME INCREMENT MON 0 -1024 11 MON 0 4
- 004013 TIME INCREMENT D 0 -1024 11 D 0 4
- 004014 TIME INCREMENT H 0 -1024 11 H 0 4
- 004015 TIME INCREMENT MIN 0 -2048 12 MIN 0 4
- 004016 TIME INCREMENT S 0 -4096 13 S 0 4
- 004017 REFERENCE TIME PERIOD FOR ACCUMULATED OR EXTREME DATA MIN 0 -1440 12 MIN 0 4
- 004021 TIME PERIOD OR DISPLACEMENT A 0 -1024 11 A 0 4
- 004022 TIME PERIOD OR DISPLACEMENT MON 0 -1024 11 MON 0 4
- 004023 TIME PERIOD OR DISPLACEMENT D 0 -1024 11 D 0 4
- 004024 TIME PERIOD OR DISPLACEMENT H 0 -2048 12 H 0 4
- 004025 TIME PERIOD OR DISPLACEMENT MIN 0 -2048 12 MIN 0 4
- 004026 TIME PERIOD OR DISPLACEMENT S 0 -4096 13 S 0 4
- 004031 DURATION OF TIME RELATING TO FOLLOWING VALUE H 0 0 8 H 0 3
- 004032 DURATION OF TIME RELATING TO FOLLOWING VALUE MIN 0 0 6 MIN 0 2
- 004041 TIME DIFFERENCE, UTC - LMT MIN 0 -1440 12 MIN 0 4
- 004043 DAY OF THE YEAR D 0 0 9 D 0 3
- 004051 PRINCIPAL TIME OF DAILY READING OF MAXIMUM TEMPERATURE H 0 0 5 H 0 2
- 004052 PRINCIPAL TIME OF DAILY READING OF MINIMUM TEMPERATURE H 0 0 5 H 0 2
- 004053 NUMBER OF DAYS WITH PRECIPITATION EQUAL TO OR MORE THAN 1 MM NUMERIC 0 0 6 NUMERIC 0 2
- 004059 TIMES OF OBSERVATION USED TO COMPUTE THE REPORTED MEAN VALUES FLAG TABLE 4059 0 0 6 FLAG TABLE 4059 0 2
- 004065 SHORT TIME INCREMENT MIN 0 -128 8 MIN 0 2
- 004066 SHORT TIME INCREMENT S 0 -128 8 S 0 2
- 004073 SHORT TIME PERIOD OR DISPLACEMENT D 0 -128 8 D 0 2
- 004074 SHORT TIME PERIOD OR DISPLACEMENT H 0 -128 8 H 0 2
- 004075 SHORT TIME PERIOD OR DISPLACEMENT MIN 0 -128 8 MIN 0 2
- 004080 AVERAGING PERIOD FOR FOLLOWING VALUE CODE TABLE 4080 0 0 4 CODE TABLE 4080 0 2
- 004086 LONG TIME PERIOD OR DISPLACEMENT S 0 -8192 15 S 0 5
- 005001 LATITUDE (HIGH ACCURACY) DEG 5 -9000000 25 DEG 5 7
- 005002 LATITUDE (COARSE ACCURACY) DEG 2 -9000 15 DEG 2 4
- 005011 LATITUDE INCREMENT (HIGH ACCURACY) DEG 5 -9000000 25 DEG 5 7
- 005012 LATITUDE INCREMENT (COARSE ACCURACY) DEG 2 -9000 15 DEG 2 4
- 005015 LATITUDE DISPLACEMENT (HIGH ACCURACY) DEG 5 -9000000 25 DEG 5 7
- 005016 LATITUDE DISPLACEMENT (COARSE ACCURACY) DEG 2 -9000 15 DEG 2 4
- 005021 BEARING OR AZIMUTH DEG 2 0 16 DEG 2 5
- 005022 SOLAR AZIMUTH DEG 2 0 16 DEG 2 5
- 005023 SUN TO SATELLITE AZIMUTH DIFFERENCE DEG 1 -1800 12 DEG 1 4
- 005030 DIRECTION (SPECTRAL) DEG 0 0 12 DEG 0 4
- 005031 ROW NUMBER NUMERIC 0 0 12 NUMERIC 0 4
- 005033 PIXEL SIZE ON HORIZONTAL - 1 M -1 0 16 M -1 5
- 005034 ALONG TRACK ROW NUMBER NUMERIC 0 0 11 NUMERIC 0 4
- 005035 MAXIMUM SIZE OF X-DIMENSION NUMERIC 0 0 12 NUMERIC 0 4
- 005036 SHIP TRANSECT NUMBER ACCORDING TO SOOP NUMERIC 0 0 7 NUMERIC 0 2
- 005040 ORBIT NUMBER NUMERIC 0 0 24 NUMERIC 0 8
- 005041 SCAN LINE NUMBER NUMERIC 0 0 8 NUMERIC 0 3
- 005042 CHANNEL NUMBER NUMERIC 0 0 6 NUMERIC 0 2
- 005043 FIELD OF VIEW NUMBER NUMERIC 0 0 8 NUMERIC 0 3
- 005044 SATELLITE CYCLE NUMBER NUMERIC 0 0 11 NUMERIC 0 4
- 005045 FIELD OF REGARD NUMBER NUMERIC 0 0 8 NUMERIC 0 3
- 005052 CHANNEL NUMBER INCREMENT NUMERIC 0 0 5 NUMERIC 0 2
- 005053 FIELD OF VIEW NUMBER INCREMENT NUMERIC 0 0 5 NUMERIC 0 2
- 005060 Y ANGULAR POSITION FROM CENTRE OF GRAVITY DEG 6 -8000000 24 DEG 6 8
- 005061 Z ANGULAR POSITION FROM CENTRE OF GRAVITY DEG 6 -8000000 24 DEG 6 8
- 005193 ALONG TRACK ROW NUMBER AT 50 KM NUMERIC 0 0 10 NUMERIC 0 4
- 005194 ALONG TRACK ROW NUMBER AT 25 KM NUMERIC 0 0 11 NUMERIC 0 4
- 005195 ENSEMBLE MEMBER NUMBER NUMERIC 0 0 7 NUMERIC 0 3
- 005196 SCAN ANGLE DEG 1 -1800 12 DEG 1 4
- 005217 LOCATION OF PLATFORM, X M 2 -1073741824 31 M 2 10
- 005232 DIRECTION (SPECTRAL) DEG 2 0 16 DEG 2 5
- 005233 NUMBER OF SCAN LINES NUMERIC 0 0 8
- 006001 LONGITUDE (HIGH ACCURACY) DEG 5 -18000000 26 DEG 5 8
- 006002 LONGITUDE (COARSE ACCURACY) DEG 2 -18000 16 DEG 2 5
- 006011 LONGITUDE INCREMENT (HIGH ACCURACY) DEG 5 -18000000 26 DEG 5 8
- 006012 LONGITUDE INCREMENT (COARSE ACCURACY) DEG 2 -18000 16 DEG 2 5
- 006015 LONGITUDE DISPLACEMENT (HIGH ACCURACY) DEG 5 -18000000 26 DEG 5 8
- 006016 LONGITUDE DISPLACEMENT (COARSE ACCURACY) DEG 2 -18000 16 DEG 2 5
- 006021 DISTANCE M -1 0 13 M -1 4
- 006029 WAVE NUMBER M-1 1 0 22 M-1 1 7
- 006030 WAVE NUMBER (SPECTRAL) RAD M-1 5 0 13 RAD M-1 5 4
- 006031 COLUMN NUMBER NUMERIC 0 0 12 NUMERIC 0 4
- 006033 PIXEL SIZE ON HORIZONTAL - 2 M -1 0 16 M -1 5
- 006034 CROSS-TRACK CELL NUMBER NUMERIC 0 0 7 NUMERIC 0 3
- 006035 MAXIMUM SIZE OF Y-DIMENSION NUMERIC 0 0 12 NUMERIC 0 4
- 006040 RADIUS OF CONFIDENCE M 0 0 13 M 0 4
- 006193 CROSS TRACK CELL NUMBER AT 50 KM NUMERIC 0 0 6 NUMERIC 0 2
- 006194 CROSS TRACK CELL NUMBER AT 25 KM NUMERIC 0 0 7 NUMERIC 0 3
- 006217 LOCATION OF PLATFORM, Y M 2 -1073741824 31 M 2 10
- 006232 WAVENUMBER (SPECTRAL) RAD M-1 5 0 13 ADS M-1 5 4
- 007001 HEIGHT OF STATION M 0 -400 15 M 0 5
- 007002 HEIGHT OR ALTITUDE M -1 -40 16 M -1 5
- 007003 GEOPOTENTIAL M2 S-2 -1 -400 17 M2 S-2 -1 6
- 007004 PRESSURE PA -1 0 14 PA -1 5
- 007005 HEIGHT INCREMENT M 0 -400 12 M 0 4
- 007006 HEIGHT ABOVE STATION M 0 0 15 M 0 5
- 007007 HEIGHT M 0 -1000 17 M 0 6
- 007008 GEOPOTENTIAL M2 S-2 0 -10000 20 M2 S-2 0 7
- 007009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 GPM 0 5
- 007010 FLIGHT LEVEL M 0 -1024 16 FT -1 5
- 007012 GRID POINT ALTITUDE M 2 -50000 20 M 2 7
- 007021 ELEVATION DEG 2 -9000 15 DEG 2 5
- 007022 SOLAR ELEVATION DEG 2 -9000 15 DEG 2 5
- 007024 SATELLITE ZENITH ANGLE DEG 2 -9000 15 DEG 2 5
- 007025 SOLAR ZENITH ANGLE DEG 2 -9000 15 DEG 2 5
- 007026 SATELLITE ZENITH ANGLE DEG 4 -900000 21 DEG 4 7
- 007030 HEIGHT OF STATION GROUND ABOVE MEAN SEA LEVEL M 1 -4000 17 M 1 5
- 007031 HEIGHT OF BAROMETER ABOVE MEAN SEA LEVEL M 1 -4000 17 M 1 5
- 007032 HEIGHT OF SENSOR ABOVE LOCAL GROUND (OR DECK OF MARINE PLATFORM) M 2 0 16 M 2 5
- 007033 HEIGHT OF SENSOR ABOVE WATER SURFACE M 1 0 12 M 1 4
- 007035 MAXIMUM SIZE OF Z-DIMENSION NUMERIC 0 0 12 NUMERIC 0 4
- 007036 LEVEL INDEX OF Z NUMERIC 0 0 12 NUMERIC 0 4
- 007040 IMPACT PARAMETER M 1 62000000 22 M 1 8
- 007061 DEPTH BELOW LAND SURFACE M 2 0 14 M 2 5
- 007062 DEPTH BELOW SEA/WATER SURFACE M 1 0 17 M 1 6
- 007063 DEPTH BELOW SEA/WATER SURFACE (CM) M 2 0 20 M 2 7
- 007064 REPRESENTATIVE HEIGHT OF SENSOR ABOVE STATION M 0 0 4 M 0 2
- 007065 WATER PRESSURE PA -3 0 17 PA -3 6
- 007070 DROGUE DEPTH M 0 0 10 M 0 4
- 007217 LOCATION OF PLATFORM, Z M 2 -1073741824 31 M 2 10
- 008001 VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8001 0 0 7 FLAG TABLE 8001 0 3
- 008002 VERTICAL SIGNIFICANCE (SURFACE OBSERVATIONS) CODE TABLE 8002 0 0 6 CODE TABLE 8002 0 2
- 008003 VERTICAL SIGNIFICANCE (SATELLITE OBSERVATIONS) CODE TABLE 8003 0 0 6 CODE TABLE 8003 0 2
- 008004 PHASE OF AIRCRAFT FLIGHT CODE TABLE 8004 0 0 3 CODE TABLE 8004 0 1
- 008005 METEOROLOGICAL ATTRIBUTE SIGNIFICANCE CODE TABLE 8005 0 0 4 CODE TABLE 8005 0 2
- 008006 OZONE VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8006 0 0 9 FLAG TABLE 8006 0 3
- 008007 DIMENSIONAL SIGNIFICANCE CODE TABLE 8007 0 0 4 CODE TABLE 8007 0 2
- 008008 RADIATION VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8008 0 0 9 FLAG TABLE 8008 0 3
- 008009 DETAILED PHASE OF FLIGHT CODE TABLE 8009 0 0 4 CODE TABLE 8009 0 2
- 008010 SURFACE QUALIFIER (FOR TEMPERATURE DATA) CODE TABLE 8010 0 0 5 CODE TABLE 8010 0 2
- 008011 METEOROLOGICAL FEATURE CODE TABLE 8011 0 0 6 CODE TABLE 8011 0 2
- 008012 LAND/SEA QUALIFIER CODE TABLE 8012 0 0 2 CODE TABLE 8012 0 1
- 008013 DAY/NIGHT QUALIFIER CODE TABLE 8013 0 0 2 CODE TABLE 8013 0 1
- 008014 QUALIFIER FOR RUNWAY VISUAL RANGE CODE TABLE 8014 0 0 4 CODE TABLE 8014 0 2
- 008015 SIGNIFICANT QUALIFIER FOR SENSOR CODE TABLE 8015 0 0 3 CODE TABLE 8015 0 1
- 008016 CHANGE QUALIFIER OF A TREND-TYPE FORECAST OR AN AERODROME FORECA CODE TABLE 8016 0 0 3 CODE TABLE 8016 0 1
- 008017 QUALIFIER OF THE TIME WHEN THE FORECAST CHANGE IS EXPECTED CODE TABLE 8017 0 0 2 CODE TABLE 8017 0 1
- 008018 SEAWINDS LAND/ICE SURFACE TYPE FLAG TABLE 8018 0 0 17 FLAG TABLE 8018 0 6
- 008019 QUALIFIER FOR FOLLOWING CENTRE IDENTIFIER CODE TABLE 8019 0 0 4 CODE TABLE 8019 0 2
- 008020 TOTAL NUMBER OF MISSING ENTITIES (WITH RESPECT TO ACCUMULATION O NUMERIC 0 0 16 NUMERIC 0 5
- 008021 TIME SIGNIFICANCE CODE TABLE 8021 0 0 5 CODE TABLE 8021 0 2
- 008022 TOTAL NUMBER (WITH RESPECT TO ACCUMULATION OR AVERAGE) NUMERIC 0 0 16 NUMERIC 0 5
- 008023 FIRST-ORDER STATISTICS CODE TABLE 8023 0 0 6 CODE TABLE 8023 0 2
- 008024 DIFFERENCE STATISTICS CODE TABLE 8024 0 0 6 CODE TABLE 8024 0 2
- 008025 TIME DIFFERENCE QUALIFIER CODE TABLE 8025 0 0 4 CODE TABLE 8025 0 2
- 008026 MATRIX SIGNIFICANCE CODE TABLE 8026 0 0 6 CODE TABLE 8026 0 2
- 008029 SURFACE TYPE CODE TABLE 8029 0 0 8 CODE TABLE 8029 0 3
- 008030 MANUAL ON CODES (VOLUME I.1, SECTION C) CODE TABLE FROM WHICH DA NUMERIC 0 0 13 NUMERIC 0 4
- 008031 DATA CATEGORY - CREX TABLE A NUMERIC 0 0 8 NUMERIC 0 3
- 008032 STATUS OF OPERATION CODE TABLE 8032 0 0 4 CODE TABLE 8032 0 2
- 008033 METHOD OF DERIVATION OF PERCENTAGE CONFIDENCE CODE TABLE 8033 0 0 7 CODE TABLE 8033 0 3
- 008035 TYPE OF MONITORING EXERCISE CODE TABLE 8035 0 0 3 CODE TABLE 8035 0 1
- 008036 TYPE OF CENTRE OR STATION PERFORMING MONITORING CODE TABLE 8036 0 0 3 CODE TABLE 8036 0 1
- 008039 TIME SIGNIFICANCE (AVIATION FORECAST) CODE TABLE 8039 0 0 6 CODE TABLE 8039 0 2
- 008040 FLIGHT LEVEL SIGNIFICANCE CODE TABLE 8040 0 0 6 CODE TABLE 8040 0 2
- 008041 DATA SIGNIFICANCE CODE TABLE 8041 0 0 5 CODE TABLE 8041 0 2
- 008042 EXTENDED VERTICAL SOUNDING SIGNIFICANCE FLAG TABLE 8042 0 0 18 FLAG TABLE 8042 0 6
- 008043 ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE CODE TABLE 8043 0 0 8 CODE TABLE 8043 0 3
- 008044 CAS REGISTRY NUMBER CCITTIA5 0 0 88 CHARACTER 0 11
- 008046 ATMOSPHERIC CHEMICAL OR PHYSICAL CONSTITUENT TYPE COMMON CODE TABLE C-14 0 0 16 COMMON CODE TABLE C-14 0 5
- 008049 NUMBER OF OBSERVATIONS NUMERIC 0 0 8 NUMERIC 0 3
- 008050 QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST CODE TABLE 8050 0 0 4 CODE TABLE 8050 0 2
- 008051 QUALIFIER FOR NUMBER OF MISSING VALUES IN CALCULATION OF STATIST CODE TABLE 8051 0 0 3 CODE TABLE 8051 0 1
- 008052 CONDITION FOR WHICH NUMBER OF DAYS OF OCCURRENCE FOLLOWS CODE TABLE 8052 0 0 5 CODE TABLE 8052 0 2
- 008053 DAY OF OCCURRENCE QUALIFIER CODE TABLE 8053 0 0 2 CODE TABLE 8053 0 1
- 008054 QUALIFIER FOR WIND SPEED OR WIND GUSTS CODE TABLE 8054 0 0 3 CODE TABLE 8054 0 1
- 008060 SAMPLE SCANNING MODE SIGNIFICANCE CODE TABLE 8060 0 0 4 CODE TABLE 8060 0 2
- 008065 SUN-GLINT INDICATOR CODE TABLE 8065 0 0 2 CODE TABLE 8065 0 1
- 008066 SEMI-TRANSPARENCY INDICATOR CODE TABLE 8066 0 0 2 CODE TABLE 8066 0 1
- 008070 TOVS/ATOVS PRODUCT QUALIFIER CODE TABLE 8070 0 0 4 CODE TABLE 8070 0 2
- 008072 PIXEL(S) TYPE CODE TABLE 8072 0 0 3 CODE TABLE 8072 0 1
- 008074 ALTIMETER ECHO TYPE CODE TABLE 8074 0 0 2 CODE TABLE 8074 0 1
- 008075 ASCENDING/DESCENDING ORBIT QUALIFIER CODE TABLE 8075 0 0 2 CODE TABLE 8075 0 1
- 008076 TYPE OF BAND CODE TABLE 8076 0 0 6 CODE TABLE 8076 0 2
- 008077 RADIOMETER SENSED SURFACE TYPE CODE TABLE 8077 0 0 7 CODE TABLE 8077 0 3
- 008079 PRODUCT STATUS CODE TABLE 8079 0 0 4 CODE TABLE 8079 0 2
- 008080 QUALIFIER FOR GTSPP QUALITY FLAG CODE TABLE 8080 0 0 6 CODE TABLE 8080 0 2
- 008081 TYPE OF EQUIPMENT CODE TABLE 8081 0 0 6 CODE TABLE 8081 0 2
- 008082 MODIFICATION OF SENSOR HEIGHT TO ANOTHER VALUE CODE TABLE 8082 0 0 3 CODE TABLE 8082 0 1
- 008083 NOMINAL VALUE INDICATOR FLAG TABLE 8083 0 0 15 FLAG TABLE 8083 0 5
- 008085 BEAM IDENTIFIER CODE TABLE 8085 0 0 3 CODE TABLE 8085 0 1
- 008086 VERTICAL SIGNIFICANCE FOR NWP FLAG TABLE 8086 0 0 12 FLAG TABLE 8086 0 4
- 008087 CORNER POSITION OF OBSERVATION CODE TABLE 8087 0 0 3 CODE TABLE 8087 0 1
- 008090 DECIMAL SCALE OF FOLLOWING SIGNIFICANDS NUMERIC 0 -127 8 NUMERIC 0 3
- 008193 TIME QUALIFIER CODE TABLE 8193 0 0 6 CODE TABLE 8193 0 2
- 008194 TOVS/ATOVS PRODUCT QUALIFIER CODE TABLE 8194 0 0 4 CODE TABLE 8194 0 2
- 008195 DATA TYPE CODE TABLE 8195 0 0 7 CODE TABLE 8195 0 3
- 008200 NUMBER OF OBSERVATIONS NUMERIC 0 0 8 NUMERIC 0 3
- 008201 COORDINATES SIGNIFICANCE CODE TABLE 8201 0 0 15
- 008222 GENERATOR SIGNIFICANCE CODE TABLE 8222 0 0 4 CODE TABLE 8222 0 2
- 008223 LAND/ICE SURFACE FLAG FLAG TABLE 8223 0 0 7 FLAG TABLE 8223 0 3
- 008224 LAND/SEA FRACTION NUMERIC 3 0 10 NUMERIC 3 4
- 008225 GHRSST SURFACE TYPE FLAG TABLE 8225 0 0 5 FLAG TABLE 8225 0 2
- 010001 HEIGHT OF LAND SURFACE M 0 -400 15 M 0 5
- 010002 HEIGHT M -1 -40 16 M -1 5
- 010003 GEOPOTENTIAL M2 S-2 -1 -400 17 M2 S-2 -1 6
- 010004 PRESSURE PA -1 0 14 PA -1 5
- 010007 HEIGHT M 0 -1000 17 M 0 6
- 010008 GEOPOTENTIAL M2 S-2 0 -10000 20 M2 S-2 0 7
- 010009 GEOPOTENTIAL HEIGHT GPM 0 -1000 17 GPM 0 5
- 010010 MINIMUM PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5
- 010011 MAXIMUM PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5
- 010031 IN DIRECTION OF THE NORTH POLE, DISTANCE FROM THE EARTH'S CENTRE M 2 -1073741824 31 M 2 10
- 010032 SATELLITE DISTANCE TO EARTH'S CENTRE M 1 0 27 M 2 9
- 010033 ALTITUDE (PLATFORM TO ELLIPSOID) M 1 0 27 M 2 9
- 010034 EARTH'S RADIUS M 1 0 27 M 2 9
- 010035 EARTH'S LOCAL RADIUS OF CURVATURE M 1 62000000 22 M 1 8
- 010036 GEOID UNDULATION M 2 -15000 15 M 2 6
- 010040 NUMBER OF RETRIEVED LAYERS NUMERIC 0 0 10 NUMERIC 0 4
- 010050 STANDARD DEVIATION ALTITUDE M 2 0 16 M 2 5
- 010051 PRESSURE REDUCED TO MEAN SEA LEVEL PA -1 0 14 PA -1 5
- 010052 ALTIMETER SETTING (QNH) PA -1 0 14 PA -1 5
- 010053 GLOBAL NAVIGATION SATELLITE SYSTEM ALTITUDE M 0 -1000 17 M 0 5
- 010060 PRESSURE CHANGE PA -1 -1024 11 PA -1 4
- 010061 3-HOUR PRESSURE CHANGE PA -1 -500 10 PA -1 4
- 010062 24-HOUR PRESSURE CHANGE PA -1 -1000 11 PA -1 4
- 010063 CHARACTERISTIC OF PRESSURE TENDENCY CODE TABLE 10063 0 0 4 CODE TABLE 10063 0 2
- 010064 SIGMET CRUISING LEVEL CODE TABLE 10064 0 0 3 CODE TABLE 10064 0 1
- 010070 INDICATED AIRCRAFT ALTITUDE M 0 -400 16 M 0 5
- 010079 OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA DEG 4 0 16 DEG 4 5
- 010080 VIEWING ZENITH ANGLE DEG 2 -9000 15 DEG 2 5
- 010081 ALTITUDE OF COG ABOVE REFERENCE ELLIPSOID M 3 0 31 M 3 10
- 010082 INSTANTANEOUS ALTITUDE RATE M S-1 3 -65536 17 M S-1 3 6
- 010083 SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM PLATFORM DATA DEG2 2 0 16 DEG2 2 5
- 010084 SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA DEG2 2 0 16 DEG2 2 5
- 010085 MEAN SEA-SURFACE HEIGHT M 3 -131072 18 M 3 6
- 010086 GEOID'S HEIGHT M 3 -131072 18 M 3 6
- 010087 OCEAN DEPTH/LAND ELEVATION M 1 -131072 18 M 1 6
- 010088 TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 1) M 3 -32768 16 M 3 5
- 010089 TOTAL GEOCENTRIC OCEAN TIDE HEIGHT (SOLUTION 2) M 3 -32768 16 M 3 5
- 010090 LONG PERIOD TIDE HEIGHT M 3 -32768 16 M 3 5
- 010091 TIDAL LOADING HEIGHT M 3 -32768 16 M 3 5
- 010092 SOLID EARTH TIDE HEIGHT M 3 -32768 16 M 3 5
- 010093 GEOCENTRIC POLE TIDE HEIGHT M 3 -32768 16 M 3 5
- 010095 HEIGHT OF ATMOSPHERE USED M 0 0 16 M 0 5
- 010096 MEAN DYNAMIC TOPOGRAPHY M 3 -131072 18 M 3 6
- 010097 MEAN SEA-SURFACE HEIGHT FROM ALTIMETER ONLY M 3 -131072 18 M 3 6
- 010098 LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 1 M 4 -2000 12 M 4 4
- 010099 LOADING TIDE HEIGHT GEOCENTRIC OCEAN TIDE SOLUTION 2 M 4 -2000 12 M 4 4
- 010100 NON-EQUILIBRIUM LONG PERIOD TIDE HEIGHT M 4 -2000 12 M 4 4
- 010101 SQUARED OFF-NADIR ANGLE OF THE SATELLITE FROM WAVEFORM DATA DEG2 2 -32768 16 DEG2 2 5
- 010102 SEA-SURFACE HEIGHT ANOMALY M 3 -32768 16 M 3 5
- 010195 HEIGHT(HIGH ACCURACY) M 1 -4096 20
- 010196 SOLAR ZENITH ANGLE DEG 2 -9000 15
- 010197 ANEMOMETER HEIGHT M 0 0 9
- 011001 WIND DIRECTION DEG 0 0 9 DEG 0 3
- 011002 WIND SPEED M S-1 1 0 12 M S-1 1 4
- 011003 U-COMPONENT M S-1 1 -4096 13 M S-1 1 4
- 011004 V-COMPONENT M S-1 1 -4096 13 M S-1 1 4
- 011005 W-COMPONENT PA S-1 1 -512 10 PA S-1 1 4
- 011006 W-COMPONENT M S-1 2 -4096 13 M S-1 2 4
- 011010 WIND DIRECTION ASSOCIATED WITH WIND SPEED WHICH FOLLOWS DEG 0 0 9 DEG 0 3
- 011011 WIND DIRECTION AT 10 M DEG 0 0 9 DEG 0 3
- 011012 WIND SPEED AT 10 M M S-1 1 0 12 M S-1 1 4
- 011013 WIND DIRECTION AT 5 M DEG 0 0 9 DEG 0 3
- 011014 WIND SPEED AT 5 M M S-1 1 0 12 M S-1 1 4
- 011016 EXTREME COUNTERCLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEG 0 0 9 DEG 0 3
- 011017 EXTREME CLOCKWISE WIND DIRECTION OF A VARIABLE WIND DEG 0 0 9 DEG 0 3
- 011019 STEADINESS OF WIND % 0 0 7 % 0 3
- 011021 RELATIVE VORTICITY S-1 9 -65536 17 S-1 9 6
- 011022 DIVERGENCE S-1 9 -65536 17 S-1 9 6
- 011023 VELOCITY POTENTIAL M2 S-1 -2 -65536 17 M2 S-1 -2 6
- 011030 EXTENDED DEGREE OF TURBULENCE CODE TABLE 11030 0 0 6 CODE TABLE 11030 0 2
- 011031 DEGREE OF TURBULENCE CODE TABLE 11031 0 0 4 CODE TABLE 11031 0 2
- 011032 HEIGHT OF BASE OF TURBULENCE M -1 -40 16 M -1 5
- 011033 HEIGHT OF TOP OF TURBULENCE M -1 -40 16 M -1 5
- 011034 VERTICAL GUST VELOCITY M S-1 1 -1024 11 M S-1 1 4
- 011035 VERTICAL GUST ACCELERATION M S-2 2 -8192 14 M S-2 2 5
- 011036 MAXIMUM DERIVED EQUIVALENT VERTICAL GUST SPEED M S-1 1 0 10 M S-1 1 4
- 011037 TURBULENCE INDEX CODE TABLE 11037 0 0 6 CODE TABLE 11037 0 2
- 011038 TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11038 0 0 5 CODE TABLE 11038 0 2
- 011039 EXTENDED TIME OF OCCURRENCE OF PEAK EDDY DISSIPATION RATE CODE TABLE 11039 0 0 6 CODE TABLE 11039 0 2
- 011040 MAXIMUM WIND SPEED (MEAN WIND) M S-1 1 0 12 M S-1 1 4
- 011041 MAXIMUM WIND GUST SPEED M S-1 1 0 12 M S-1 1 4
- 011042 MAXIMUM WIND SPEED (10-MINUTE MEAN WIND) M S-1 1 0 12 M S-1 1 4
- 011043 MAXIMUM WIND GUST DIRECTION DEG 0 0 9 DEG 0 3
- 011044 MEAN WIND DIRECTION FOR SURFACE - 1 500 M (5 000 FEET) DEG 0 0 9 DEG 0 3
- 011045 MEAN WIND SPEED FOR SURFACE - 1 500 M (5 000 FEET) M S-1 1 0 12 M S-1 1 4
- 011046 MAXIMUM INSTANTANEOUS WIND SPEED M S-1 1 0 12 M S-1 1 4
- 011047 MAXIMUM INSTANTANEOUS WIND SPEED OVER 10 MINUTES M S-1 1 0 12 M S-1 1 4
- 011049 STANDARD DEVIATION OF WIND DIRECTION DEG 0 0 9 DEG 0 3
- 011050 STANDARD DEVIATION OF HORIZONTAL WIND SPEED M S-1 1 0 12 M S-1 1 4
- 011051 STANDARD DEVIATION OF VERTICAL WIND SPEED M S-1 1 0 8 M S-1 1 3
- 011052 FORMAL UNCERTAINTY IN WIND SPEED M S-1 2 0 13 M S-1 2 5
- 011053 FORMAL UNCERTAINTY IN WIND DIRECTION DEG 2 0 15 DEG 2 5
- 011054 MEAN WIND DIRECTION FOR 1 500 - 3 000 M DEG 0 0 9 DEG 0 3
- 011055 MEAN WIND SPEED FOR 1 500 - 3 000 M M S-1 1 0 12 M S-1 1 4
- 011061 ABSOLUTE WIND SHEAR IN 1 KM LAYER BELOW M S-1 1 0 12 M S-1 1 4
- 011062 ABSOLUTE WIND SHEAR IN 1 KM LAYER ABOVE M S-1 1 0 12 M S-1 1 4
- 011070 DESIGNATOR OF THE RUNWAY AFFECTED BY WIND SHEAR (INCLUDING ALL) CCITTIA5 0 0 32 CHARACTER 0 4
- 011071 TURBULENT VERTICAL MOMENTUM FLUX M2 S-2 3 -128 14 M2 S-2 3 5
- 011072 TURBULENT VERTICAL BUOYANCY FLUX K M S-1 3 -128 11 K M S-1 3 4
- 011073 TURBULENT KINETIC ENERGY M2 S-2 2 -1024 13 M2 S-2 2 4
- 011074 DISSIPATION ENERGY M2 S-2 2 -1024 10 M2 S-2 2 4
- 011075 MEAN TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M2/3 S-1 2 0 8 M2/3 S-1 2 3
- 011076 PEAK TURBULENCE INTENSITY (EDDY DISSIPATION RATE) M2/3 S-1 2 0 8 M2/3 S-1 2 3
- 011077 REPORTING INTERVAL OR AVERAGING TIME FOR EDDY DISSIPATION RATE S 0 0 12 S 0 4
- 011081 MODEL WIND DIRECTION AT 10 M DEG 2 0 16 DEG 2 5
- 011082 MODEL WIND SPEED AT 10 M M S-1 2 0 14 M S-1 2 4
- 011083 WIND SPEED KM H-1 0 0 9 KM H-1 0 3
- 011084 WIND SPEED KT 0 0 8 KT 0 3
- 011085 MAXIMUM WIND GUST SPEED KM H-1 0 0 9 KM H-1 0 3
- 011086 MAXIMUM WIND GUST SPEED KT 0 0 8 KT 0 3
- 011095 U-COMPONENT OF THE MODEL WIND VECTOR M S-1 1 -4096 13 M S-1 1 4
- 011096 V-COMPONENT OF THE MODEL WIND VECTOR M S-1 1 -4096 13 M S-1 1 4
- 011097 WIND SPEED FROM ALTIMETER M S-1 2 0 12 M S-1 2 4
- 011098 WIND SPEED FROM RADIOMETER M S-1 2 0 12 M S-1 2 4
- 011100 AIRCRAFT TRUE AIRSPEED M S-1 1 0 12 M S-1 1 4
- 011101 AIRCRAFT GROUND SPEED U-COMPONENT M S-1 1 -4096 13 M S-1 1 4
- 011102 AIRCRAFT GROUND SPEED V-COMPONENT M S-1 1 -4096 13 M S-1 1 4
- 011103 AIRCRAFT GROUND SPEED W-COMPONENT M S-1 1 -512 10 M S-1 1 3
- 011104 AIRCRAFT TRUE HEADING DEG 0 0 9 DEG 0 3
- 011105 EDR ALGORITHM VERSION NUMERIC 0 0 6 NUMERIC 0 2
- 011106 RUNNING MINIMUM CONFIDENCE NUMERIC 1 0 4 NUMERIC 1 2
- 011107 MAXIMUM NUMBER BAD INPUTS NUMERIC 0 0 5 NUMERIC 0 2
- 011108 PEAK LOCATION NUMERIC 1 0 4 NUMERIC 1 2
- 011109 NUMBER OF GOOD EDR NUMERIC 0 0 4 NUMERIC 0 2
- 011192 U - COMPONENT AT 10 M M S-1 1 -4096 13 M S-1 1 4
- 011193 V - COMPONENT AT 10 M M S-1 1 -4096 13 M S-1 1 4
- 011194 W - COMPONENT AT 10 M M S-1 1 -4096 13 M S-1 1 4
- 011195 STEADINESS OF WIND % 0 0 7 % 0 3
- 011196 FRICTION VELOCITY M S-1 5 0 19
- 011201 HORIZONTAL LINE OF SIGHT COMPONENT M S-1 1 -4096 13
- 011210 1D VAR WIND SPEED RETREIVED ERRO(S) M S-1 2 0 12
- 011211 WIND SPEED INDEPENDENT ESTIMATE OF ERROR(S) M S-1 2 0 12
- 011220 FORMAL UNCERTAINTY IN WIND SPEED M S-1 2 0 12
- 011221 FORMAL UNCERTAINTY IN WIND DIRECTION DEG 2 0 15
- 011230 MAXIMUM MEAN WIND SPEED M S-1 1 -4096 13 M S-1 1 4
- 011231 MEAN WIND SPEED M S-1 1 -4096 13 M S-1 1 4
- 011232 MINIMUM MEAN WIND SPEED M S-1 1 -4096 13 M S-1 1 4
- 011233 HIGHEST GUST DURING THE 10 MINUTE PERIOD PRECEDING OBSERVATION M S-1 1 -4096 13 M S-1 1 4
- 012001 TEMPERATURE/AIR TEMPERATURE K 1 0 12 C 1 3
- 012002 WET-BULB TEMPERATURE K 1 0 12 C 1 3
- 012003 DEWPOINT TEMPERATURE K 1 0 12 C 1 3
- 012004 AIR TEMPERATURE AT 2 M K 1 0 12 C 1 3
- 012005 WET-BULB TEMPERATURE AT 2 M K 1 0 12 C 1 3
- 012006 DEWPOINT TEMPERATURE AT 2 M K 1 0 12 C 1 3
- 012007 VIRTUAL TEMPERATURE K 1 0 12 C 1 3
- 012011 MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED K 1 0 12 C 1 3
- 012012 MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED K 1 0 12 C 1 3
- 012013 GROUND MINIMUM TEMPERATURE, PAST 12 HOURS K 1 0 12 C 1 3
- 012014 MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS K 1 0 12 C 1 3
- 012015 MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS K 1 0 12 C 1 3
- 012016 MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS K 1 0 12 C 1 3
- 012017 MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS K 1 0 12 C 1 3
- 012021 MAXIMUM TEMPERATURE AT 2 M K 2 0 16 C 2 4
- 012022 MINIMUM TEMPERATURE AT 2 M K 2 0 16 C 2 4
- 012023 TEMPERATURE C 0 -99 8 C 0 2
- 012024 DEWPOINT TEMPERATURE C 0 -99 8 C 0 2
- 012030 SOIL TEMPERATURE K 1 0 12 C 1 3
- 012049 TEMPERATURE CHANGE OVER SPECIFIED PERIOD K 0 -30 6 C 0 2
- 012051 STANDARD DEVIATION TEMPERATURE K 1 0 10 C 1 3
- 012052 HIGHEST DAILY MEAN TEMPERATURE K 1 0 12 C 1 3
- 012053 LOWEST DAILY MEAN TEMPERATURE K 1 0 12 C 1 3
- 012060 AWS ENCLOSURE INTERNAL TEMPERATURE K 1 0 12 C 1 3
- 012061 SKIN TEMPERATURE K 1 0 12 C 1 3
- 012062 EQUIVALENT BLACK BODY TEMPERATURE K 1 0 12 C 1 3
- 012063 BRIGHTNESS TEMPERATURE K 1 0 12 C 1 3
- 012064 INSTRUMENT TEMPERATURE K 1 0 12 K 1 4
- 012065 STANDARD DEVIATION BRIGHTNESS TEMPERATURE K 1 0 12 K 1 4
- 012066 ANTENNA TEMPERATURE K 2 0 16 C 2 5
- 012070 WARM LOAD TEMPERATURE K 2 0 16 K 2 5
- 012071 COLDEST CLUSTER TEMPERATURE K 1 0 12 K 1 4
- 012072 RADIANCE W M-2 SR-1 6 0 31 W M-2 SR-1 6 9
- 012075 SPECTRAL RADIANCE W M-2 SR-1 M-1 -3 0 16 W M-2 SR-1 M-1 -3 5
- 012076 RADIANCE W M-2 SR-1 3 0 16 W M-2 SR-1 3 5
- 012080 BRIGHTNESS TEMPERATURE REAL PART K 2 -10000 16 K 2 5
- 012081 BRIGHTNESS TEMPERATURE IMAGINARY PART K 2 -10000 16 K 2 5
- 012082 PIXEL RADIOMETRIC ACCURACY K 2 0 12 K 2 4
- 012101 TEMPERATURE/AIR TEMPERATURE K 2 0 16 C 2 4
- 012102 WET-BULB TEMPERATURE K 2 0 16 C 2 4
- 012103 DEWPOINT TEMPERATURE K 2 0 16 C 2 4
- 012104 AIR TEMPERATURE AT 2 M K 2 0 16 C 2 4
- 012105 WEB-BULB TEMPERATURE AT 2 M K 2 0 16 C 2 4
- 012106 DEWPOINT TEMPERATURE AT 2 M K 2 0 16 C 2 4
- 012107 VIRTUAL TEMPERATURE K 2 0 16 C 2 4
- 012111 MAXIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED K 2 0 16 C 2 4
- 012112 MINIMUM TEMPERATURE, AT HEIGHT AND OVER PERIOD SPECIFIED K 2 0 16 C 2 4
- 012113 GROUND MINIMUM TEMPERATURE, PAST 12 HOURS K 2 0 16 C 2 4
- 012114 MAXIMUM TEMPERATURE AT 2 M, PAST 12 HOURS K 2 0 16 C 2 4
- 012115 MINIMUM TEMPERATURE AT 2 M, PAST 12 HOURS K 2 0 16 C 2 4
- 012116 MAXIMUM TEMPERATURE AT 2 M, PAST 24 HOURS K 2 0 16 C 2 4
- 012117 MINIMUM TEMPERATURE AT 2 M, PAST 24 HOURS K 2 0 16 C 2 4
- 012118 MAXIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS K 2 0 16 C 2 4
- 012119 MINIMUM TEMPERATURE AT HEIGHT SPECIFIED, PAST 24 HOURS K 2 0 16 C 2 4
- 012120 GROUND TEMPERATURE K 2 0 16 C 2 4
- 012121 GROUND MINIMUM TEMPERATURE K 2 0 16 C 2 4
- 012122 GROUND MINIMUM TEMPERATURE OF THE PRECEDING NIGHT K 2 0 16 C 2 4
- 012130 SOIL TEMPERATURE K 2 0 16 C 2 4
- 012131 SNOW TEMPERATURE K 2 0 16 C 2 4
- 012132 ICE SURFACE TEMPERATURE K 2 0 16 C 2 4
- 012151 STANDARD DEVIATION OF DAILY MEAN TEMPERATURE K 2 0 12 C 2 4
- 012152 HIGHEST DAILY MEAN TEMPERATURE K 2 0 16 C 2 4
- 012153 LOWEST DAILY MEAN TEMPERATURE K 2 0 16 C 2 4
- 012158 NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING COLD TARGET K 2 0 12 C 2 4
- 012159 NOISE-EQUIVALENT DELTA TEMPERATURE WHILE VIEWING WARM TARGET K 2 0 12 C 2 4
- 012161 SKIN TEMPERATURE K 2 0 16 C 2 4
- 012162 EQUIVALENT BLACK BODY TEMPERATURE K 2 0 16 C 2 4
- 012163 BRIGHTNESS TEMPERATURE K 2 0 16 C 2 4
- 012164 INSTRUMENT TEMPERATURE K 2 0 16 K 2 5
- 012165 DIRECT SUN BRIGHTNESS TEMPERATURE K 0 0 23 K 0 7
- 012166 SNAPSHOT ACCURACY K 1 -4000 13 K 1 4
- 012167 RADIOMETRIC ACCURACY (PURE POLARIZATION) K 1 0 9 K 1 3
- 012168 RADIOMETRIC ACCURACY (CROSS POLARIZATION) K 1 0 9 K 1 3
- 012171 COLDEST CLUSTER TEMPERATURE K 2 0 16 K 2 5
- 012180 AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS AT NADIR K 2 0 16 K 2 5
- 012181 AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS AT NADIR K 2 0 16 K 2 5
- 012182 AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS AT NADIR K 2 0 16 K 2 5
- 012183 AVERAGED 12 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW K 2 0 16 K 2 5
- 012184 AVERAGED 11 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW K 2 0 16 K 2 5
- 012185 AVERAGED 3.7 MICRON BT FOR ALL CLEAR PIXELS, FORWARD VIEW K 2 0 16 K 2 5
- 012186 MEAN NADIR SEA-SURFACE TEMPERATURE K 2 0 16 K 2 5
- 012187 MEAN DUAL VIEW SEA-SURFACE TEMPERATURE K 2 0 16 K 2 5
- 012188 INTERPOLATED 23.8 GHZ BRIGHTNESS T FROM MWR K 2 0 16 K 2 5
- 012189 INTERPOLATED 36.5 GHZ BRIGHTNESS T FROM MWR K 2 0 16 K 2 5
- 012193 COLDEST CLUSTER TEMPERATURE K 1 0 12
- 012194 RADIANCE W M-2 SR-1 M 6 0 31
- 012195 SPECTRAL RADIANCE W M-2 SR-1 M 10 0 31
- 012196 RADIANCE W M-2 SR-1 3 0 16
- 012197 MAXIMUM TEMPERATURE AT 2M, PAST 3 HOURS K 1 0 12
- 012198 MINIMUM TEMPERATURE AT 2M, PAST 3 HOURS K 1 0 12
- 012199 MAXIMUM TEMPERATURE AT 2M, PAST 6 HOURS K 1 0 12
- 012200 MINIMUM TEMPERATURE AT 2M, PAST 6 HOURS K 1 0 12
- 012201 BRIGHTNES TEMPERATURE OR STOKES PARAMETER K 3 -271300 20
- 013001 SPECIFIC HUMIDITY KG KG-1 5 0 14 KG KG-1 5 5
- 013002 MIXING RATIO KG KG-1 5 0 14 KG KG-1 5 5
- 013003 RELATIVE HUMIDITY % 0 0 7 % 0 3
- 013004 VAPOUR PRESSURE PA -1 0 10 PA -1 4
- 013005 VAPOUR DENSITY KG M-3 3 0 7 KG M-3 3 3
- 013006 MIXING HEIGHTS M -1 -40 16 M -1 5
- 013007 MINIMUM RELATIVE HUMIDITY % 0 0 7 % 0 3
- 013008 MAXIMUM RELATIVE HUMIDITY % 0 0 7 % 0 3
- 013009 RELATIVE HUMIDITY % 1 -1000 12 % 1 4
- 013011 TOTAL PRECIPITATION/TOTAL WATER EQUIVALENT KG M-2 1 -1 14 KG M-2 1 5
- 013012 DEPTH OF FRESH SNOW M 2 -2 12 M 2 4
- 013013 TOTAL SNOW DEPTH M 2 -2 16 M 2 5
- 013014 RAINFALL/WATER EQUIVALENT OF SNOW (AVERAGED RATE) KG M-2 S-1 4 0 12 KG M-2 S-1 4 4
- 013015 SNOWFALL (AVERAGED RATE) M S-1 7 0 12 M S-1 7 4
- 013016 PRECIPITABLE WATER KG M-2 0 0 7 KG M-2 0 3
- 013019 TOTAL PRECIPITATION PAST 1 HOUR KG M-2 1 -1 14 KG M-2 1 4
- 013020 TOTAL PRECIPITATION PAST 3 HOURS KG M-2 1 -1 14 KG M-2 1 5
- 013021 TOTAL PRECIPITATION PAST 6 HOURS KG M-2 1 -1 14 KG M-2 1 5
- 013022 TOTAL PRECIPITATION PAST 12 HOURS KG M-2 1 -1 14 KG M-2 1 5
- 013023 TOTAL PRECIPITATION PAST 24 HOURS KG M-2 1 -1 14 KG M-2 1 5
- 013031 EVAPOTRANSPIRATION KG M-2 0 0 7 KG M-2 0 3
- 013032 EVAPORATION/EVAPOTRANSPIRATION KG M-2 1 0 8 KG M-2 1 3
- 013033 EVAPORATION/EVAPOTRANSPIRATION KG M-2 1 0 10 KG M-2 1 4
- 013038 SUPERADIABATIC INDICATOR CODE TABLE 13038 0 0 2 CODE TABLE 13038 0 1
- 013039 TERRAIN TYPE (ICE/SNOW) CODE TABLE 13039 0 0 3 CODE TABLE 13039 0 1
- 013040 SURFACE FLAG CODE TABLE 13040 0 0 4 CODE TABLE 13040 0 2
- 013041 PASQUILL-GIFFORD STABILITY CATEGORY CODE TABLE 13041 0 0 4 CODE TABLE 13041 0 2
- 013042 PARCEL LIFTED INDEX (TO 500 HPA) K 0 -20 6 K 0 2
- 013043 BEST LIFTED INDEX (TO 500 HPA) K 0 -20 6 K 0 2
- 013044 K INDEX K 0 -30 8 K 0 3
- 013045 KO INDEX K 0 -30 8 K 0 3
- 013046 MAXIMUM BUOYANCY K 0 -30 8 K 0 3
- 013047 MODIFIED SHOWALTER STABILITY INDEX K 0 -60 6 C 0 2
- 013048 WATER FRACTION % 1 0 10 % 1 4
- 013051 FREQUENCY GROUP, PRECIPITATION CODE TABLE 13051 0 0 4 CODE TABLE 13051 0 2
- 013052 HIGHEST DAILY AMOUNT OF PRECIPITATION KG M-2 1 -1 14 KG M-2 1 5
- 013055 INTENSITY OF PRECIPITATION KG M-2 S-1 4 0 8 MM H-1 1 4
- 013056 CHARACTER AND INTENSITY OF PRECIPITATION CODE TABLE 13056 0 0 4 CODE TABLE 13056 0 2
- 013057 TIME OF BEGINNING OR END OF PRECIPITATION CODE TABLE 13057 0 0 4 CODE TABLE 13057 0 2
- 013058 SIZE OF PRECIPITATING ELEMENT M 4 0 7 MM 1 3
- 013059 NUMBER OF FLASHES (THUNDERSTORM) NUMERIC 0 0 7 NUMERIC 0 3
- 013060 TOTAL ACCUMULATED PRECIPITATION KG M-2 1 -1 17 KG M-2 1 5
- 013071 UPSTREAM WATER LEVEL M 2 0 14 M 2 4
- 013072 DOWNSTREAM WATER LEVEL M 2 0 14 M 2 4
- 013073 MAXIMUM WATER LEVEL M 2 0 14 M 2 4
- 013074 GROUND WATER LEVEL M 2 0 18 M 2 6
- 013080 WATER PH PH UNIT 1 0 10 PH UNIT 1 3
- 013081 WATER CONDUCTIVITY S M-1 3 0 14 S M-1 3 4
- 013082 WATER TEMPERATURE K 1 0 12 K 1 4
- 013083 DISSOLVED OXYGEN KG M-3 6 0 15 KG M-3 6 5
- 013084 TURBIDITY LM 0 0 14 LM 0 4
- 013085 OXIDATION REDUCTION POTENTIAL (ORP) V 3 0 14 V 3 4
- 013090 RADIOMETER WATER VAPOUR CONTENT KG M-2 1 0 10 KG M-2 1 4
- 013091 RADIOMETER LIQUID CONTENT KG M-2 2 0 8 KG M-2 2 3
- 013093 CLOUD OPTICAL THICKNESS NUMERIC 0 0 8 NUMERIC 0 3
- 013095 TOTAL COLUMN WATER VAPOUR KG M-2 4 0 19 KG M-2 4 6
- 013096 MWR WATER VAPOUR CONTENT KG M-2 2 0 14 KG M-2 2 5
- 013097 MWR LIQUID WATER CONTENT KG M-2 2 0 14 KG M-2 2 5
- 013098 INTEGRATED WATER VAPOUR DENSITY KG M-2 8 0 30 KG M-2 8 10
- 013099 LOG10 OF INTEGRATED CLOUD PARTICLE DENSITY LOG (M-2) 1 0 7 LOG (M-2) 1 3
- 013100 LOG10 OF INTEGRATED CLOUD PARTICLE AREA LOG (M2 M-2) 1 -70 7 LOG (M2 M-2) 1 2
- 013101 LOG10 OF INTEGRATED CLOUD PARTICLE VOLUME LOG (M3 M-2) 1 -140 7 LOG (M3 M-2) 1 3
- 013110 MASS MIXING RATIO % 0 0 7 % 0 3
- 013111 SOIL MOISTURE G KG-1 0 0 10 G KG-1 0 4
- 013112 OBJECT WETNESS DURATION S 0 0 17 S 0 5
- 013114 RATE OF ICE ACCRETION KG M-2 H-1 1 0 11 KG M-2 H-1 1 4
- 013115 ICE THICKNESS M 2 0 19 M 2 6
- 013117 SNOW DENSITY (LIQUID WATER CONTENT) KG M-3 0 0 10 KG M-3 0 3
- 013118 DEPTH OF FRESH SNOW (HIGH ACCURACY) M 3 -2 14 M 3 5
- 013155 INTENSITY OF PRECIPITATION (HIGH ACCURACY) KG M-2 S-1 5 -1 16 MM H-1 2 5
- 013160 RADIOMETER LIQUID CONTENT KG M-2 2 -350 10 KG M-2 2 3
- 013192 RELATIVE HUMIDITY AT 2 M % 0 0 8
- 013193 RELATIVE HUMIDITY % 0 0 8
- 013194 TOTAL COLUMN WATER KG M-2 2 0 11
- 013195 RAIN RATE KG M-2 H-1 0 0 5
- 013196 ANTECEDENT PRECIPITATION INDEX KG M-2 0 0 7
- 013197 TOTAL COLUMN WATER VAPOUR KG M-2 1 0 10
- 013198 RAIN FLAG CODE TABLE 13198 0 0 3
- 013199 SPECIFIC HUMIDITY AT 2 M KG KG-1 5 0 14
- 013201 CLOUD LIQUID WATER KG KG-1 7 0 14
- 013202 TYPE OF SURFACE CODE TABLE 13202 0 0 8
- 013203 1D VAR ESTIMATE OF RAIN RATE KG M-2 H-1 2 0 12
- 013204 SSMI INDEPENDENT ESTIMATE OF RAIN RATE KG M-2 H-1 2 0 12
- 013205 CLOUD LIQUID WATER PATH KG M-2 4 0 14
- 013206 TOTAL PRECIPITATION ICE CONTENT KG M-2 6 0 14
- 013207 TOTAL CLOUD LIQUID WATER KG M-2 6 0 14
- 013208 SURFACE RAIN RATE ( INSTANTANEOUS ) KG M-2 S-1 5 0 17
- 013209 RAIN POSSIBILITY NUMERIC 0 -256 9
- 013210 1D VAR CLOUD LIQUID WATER PATH RETRIEVED ERROR(S) KG M-2 4 0 14
- 013211 TOTAL PRECIPITABLE WATER INDIPENDENT ESTIMATE OF ERROR(S) KG M-2 2 0 11
- 013212 CLOUD LIQUID WATER PATH INDIPENDENT ESTIMATE OF ERROR(S) KG M-2 4 0 14
- 013230 CONVECTIVE PRECIPITATION KG M-2 1 -1 14
- 013231 LARGE SCALE PRECIPITATION KG M-2 1 -1 14
- 013240 AIR DENSITY KG M-3 3 0 10
- 013241 CONVECTIVE AVAILABLE POTENTIAL ENERGY J KG-1 1 0 17
- 014001 LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS J M-2 -3 -65536 17 J M-2 -3 5
- 014002 LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -3 -65536 17 J M-2 -3 5
- 014003 SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS J M-2 -3 -65536 17 J M-2 -3 5
- 014004 SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -3 -65536 17 J M-2 -3 5
- 014011 NET LONG-WAVE RADIATION, INTEGRATED OVER 24 HOURS J M-2 -3 -65536 17 J M-2 -3 5
- 014012 NET LONG-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -3 -65536 17 J M-2 -3 5
- 014013 NET SHORT-WAVE RADIATION, INTEGRATED OVER 24 HOURS J M-2 -3 -65536 17 J M-2 -3 5
- 014014 NET SHORT-WAVE RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -3 -65536 17 J M-2 -3 5
- 014015 NET RADIATION, INTEGRATED OVER 24 HOURS J M-2 -4 -16384 15 J M-2 -4 5
- 014016 NET RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -4 -16384 15 J M-2 -4 5
- 014017 INSTANTANEOUS LONG-WAVE RADIATION W M-2 0 -512 10 W M-2 0 4
- 014018 INSTANTANEOUS SHORT-WAVE RADIATION W M-2 0 -2048 12 W M-2 0 4
- 014019 SURFACE ALBEDO % 0 0 7 % 0 3
- 014020 GLOBAL SOLAR RADIATION, INTEGRATED OVER 24 HOURS J M-2 -4 0 15 J M-2 -4 5
- 014021 GLOBAL SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -4 0 15 J M-2 -4 5
- 014022 DIFFUSE SOLAR RADIATION, INTEGRATED OVER 24 HOURS J M-2 -4 0 15 J M-2 -4 5
- 014023 DIFFUSE SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -4 0 15 J M-2 -4 5
- 014024 DIRECT SOLAR RADIATION, INTEGRATED OVER 24 HOURS J M-2 -4 0 15 J M-2 -4 5
- 014025 DIRECT SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -4 0 15 J M-2 -4 5
- 014026 ALBEDO AT THE TOP OF CLOUDS % 0 0 7 % 0 3
- 014027 ALBEDO % 0 0 7 % 0 3
- 014028 GLOBAL SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S J M-2 -2 0 20 J M-2 -2 6
- 014029 DIFFUSE SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD J M-2 -2 0 20 J M-2 -2 6
- 014030 DIRECT SOLAR RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD S J M-2 -2 0 20 J M-2 -2 6
- 014031 TOTAL SUNSHINE MIN 0 0 11 MIN 0 4
- 014032 TOTAL SUNSHINE H 0 0 10 H 0 4
- 014033 TOTAL SUNSHINE % 0 0 9 % 0 3
- 014034 SUNSHINE OVER PERIOD SPECIFIED MIN 0 0 11 MIN 0 4
- 014035 SOLAR RADIATION FLUX W M-2 1 0 14 W M-2 1 5
- 014042 BIDIRECTIONAL REFLECTANCE % 0 0 7 % 0 3
- 014043 CHANNEL RADIANCE W M-2 SR-1 UM-1 4 0 23 W M-2 SR-1 UM-1 4 7
- 014044 CHANNEL RADIANCE W M-2 SR-1 CM 7 -100000 22 W M-2 SR-1 CM 7 7
- 014045 CHANNEL RADIANCE W M-2 SR-1 CM 0 0 11 W M-2 SR-1 CM 0 4
- 014046 SCALED IASI RADIANCE W M-2 SR-1 M 0 -5000 16 W M-2 SR-1 M 0 5
- 014047 SCALED MEAN AVHRR RADIANCE W M-2 SR-1 M 0 0 31 W M-2 SR-1 M 0 10
- 014048 SCALED STANDARD DEVIATION AVHRR RADIANCE W M-2 SR-1 M 0 0 31 W M-2 SR-1 M 0 10
- 014050 EMISSIVITY % 1 0 10 % 1 4
- 014051 DIRECT SOLAR RADIATION INTEGRATED OVER LAST HOUR J M-2 -3 0 14 J M-2 -3 4
- 014052 GLOBAL UPWARD SOLAR RADIATION, INTEGRATED OVER PERIOD SPECIFIED J M-2 -2 -1048574 20 J M-2 -2 7
- 014053 NET RADIATION (HIGH ACCURACY), INTEGRATED OVER PERIOD SPECIFIED J M-2 -2 -1048574 21 J M-2 -2 7
- 014054 PHOTOSYNTHETICALLY ACTIVE RADIATION, INTEGRATED OVER PERIOD SPEC J M-2 -3 0 16 J M-2 -3 5
- 014055 SOLAR ACTIVITY INDEX NUMERIC 0 -32768 16 NUMERIC 0 5
- 014056 BACKGROUND LUMINANCE CD M-2 0 0 18 CD M-2 0 6
- 014057 SOIL HEAT FLUX J M-2 -2 -1048574 21 J M-2 -2 7
- 014072 GLOBAL UV IRRADIATION J M-2 0 -4000000 23 J M-2 0 7
- 015001 TOTAL OZONE DU 0 0 10 DU 0 4
- 015002 AIR MASS (SLANT PATH AT 22 KM) NUMERIC 2 0 10 NUMERIC 2 3
- 015003 MEASURED OZONE PARTIAL PRESSURE (SOUNDING) PA 4 0 9 NBAR 0 3
- 015004 OZONE SOUNDING CORRECTION FACTOR (CF) NUMERIC 3 0 11 NUMERIC 3 4
- 015005 OZONE P DU 0 0 10 DU 0 3
- 015008 SIGNIFICAND OF VOLUMETRIC MIXING RATIO NUMERIC 0 0 10 NUMERIC 0 4
- 015011 LOG10 OF INTEGRATED ELECTRON DENSITY LOG (M-2) 3 14000 13 LOG (M-2) 3 4
- 015012 TOTAL ELECTRON COUNT PER SQUARE METRE M-2 -16 0 6 M-2 -16 2
- 015015 MAXIMUM IMAGE SPECTRAL COMPONENT BEFORE NORMALIZATION NUMERIC 0 0 31 NUMERIC 0 10
- 015020 INTEGRATED OZONE DENSITY KG M-2 8 0 21 KG M-2 8 7
- 015021 INTEGRATED MASS DENSITY KG M-2 11 0 31 KG M-2 11 10
- 015024 OPTICAL DEPTH NUMERIC 4 0 24 NUMERIC 4 8
- 015025 TYPE OF POLLUTANT CODE TABLE 15025 0 0 4 CODE TABLE 15025 0 2
- 015026 CONCENTRATION OF POLLUTANT (MOL MOL-1) MOL MOL-1 9 0 9 MOL MOL-1 9 3
- 015027 CONCENTRATION OF POLLUTANT (KG M-3) KG M-3 9 0 10 KG M-3 9 4
- 015029 EXTINCTION COEFFICIENT M-1 9 0 30 M-1 9 10
- 015030 AEROSOL CONTAMINATION INDEX NUMERIC 2 -1000 12 NUMERIC 2 4
- 015031 ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL M 4 10000 15 M 4 5
- 015032 ESTIMATED ERROR IN ATMOSPHERIC PATH DELAY M 4 0 10 M 4 4
- 015033 DIFFERENCE IN PATH DELAYS FOR LIMB VIEWS AT EXTREMES OF SCAN M 5 -10000 15 M 5 5
- 015034 ESTIMATED ERROR IN PATH DELAY DIFFERENCE M 5 0 14 M 5 5
- 015035 COMPONENT OF ZENITH PATH DELAY DUE TO WATER VAPOUR M 4 0 14 M 4 5
- 015036 ATMOSPHERIC REFRACTIVITY N UNITS 3 0 19 N UNITS 3 6
- 015037 BENDING ANGLE RAD 8 -100000 23 RAD 8 7
- 015041 SULPHUR DIOXIDE INDEX NUMERIC 2 -1200 14 NUMERIC 2 4
- 015042 REFLECTANCE % 2 0 14 % 2 5
- 015045 SULPHUR DIOXIDE DU 2 -2000 15 DU 2 5
- 015046 VOLCANO CONTAMINATION INDEX NUMERIC 2 -1000 11 NUMERIC 2 4
- 015049 AEROSOL ANGSTROM WAVELENGTH EXPONENT NUMERIC 3 -2000 14 NUMERIC 3 5
- 015051 METEOROLOGICAL OPTICAL RANGE M 0 0 18 M 0 6
- 015052 LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREAT LOG (M-3) 1 60 6 LOG (M-3) 1 3
- 015053 LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER GREAT LOG (M-3) 2 600 9 LOG (M-3) 2 4
- 015054 LOG10 OF NUMBER DENSITY OF AEROSOL PARTICLES WITH DIAMETER BETWE LOG (M-3) 2 550 9 LOG (M-3) 2 4
- 015055 NON VOLATILE AEROSOL RATIO NUMERIC 2 0 7 NUMERIC 2 3
- 015062 AEROSOL OPTICAL THICKNESS NUMERIC 3 -1000 14 NUMERIC 3 5
- 015202 INTEGRATED ELECTRON DENSITY M-2 3 13000 12
- 015231 ATMOSPHERIC PATH DELAY IN SATELLITE SIGNAL M 4 0 15
- 019001 TYPE OF SYNOPTIC FEATURE CODE TABLE 19001 0 0 6 CODE TABLE 19001 0 2
- 019002 EFFECTIVE RADIUS OF FEATURE M -2 0 12 M -2 4
- 019003 WIND SPEED THRESHOLD M S-1 0 0 8 M S-1 0 3
- 019004 EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD M -2 0 12 M -2 4
- 019005 DIRECTION OF MOTION OF FEATURE DEG 0 0 9 DEG 0 3
- 019006 SPEED OF MOTION OF FEATURE M S-1 2 0 14 M S-1 2 5
- 019007 EFFECTIVE RADIUS OF FEATURE M -3 0 12 M -3 4
- 019008 VERTICAL EXTENT OF CIRCULATION CODE TABLE 19008 0 0 3 CODE TABLE 19008 0 1
- 019009 EFFECTIVE RADIUS WITH RESPECT TO WIND SPEEDS ABOVE THRESHOLD (LA M -3 0 12 M -3 4
- 019010 METHOD FOR TRACKING THE CENTRE OF SYNOPTIC FEATURE CODE TABLE 19010 0 0 4 CODE TABLE 19010 0 2
- 019100 TIME INTERVAL TO CALCULATE THE MOVEMENT OF THE TROPICAL CYCLONE CODE TABLE 19100 0 0 4 CODE TABLE 19100 0 2
- 019101 ACCURACY OF THE POSITION OF THE CENTRE OF THE TROPICAL CYCLONE CODE TABLE 19101 0 0 4 CODE TABLE 19101 0 2
- 019102 SHAPE AND DEFINITION OF THE EYE OF THE TROPICAL CYCLONE CODE TABLE 19102 0 0 3 CODE TABLE 19102 0 1
- 019103 DIAMETER OF MAJOR AXIS OF THE EYE OF THE TROPICAL CYCLONE CODE TABLE 19103 0 0 4 CODE TABLE 19103 0 2
- 019104 CHANGE IN CHARACTER OF THE EYE DURING THE 30 MINUTES CODE TABLE 19104 0 0 4 CODE TABLE 19104 0 2
- 019105 DISTANCE BETWEEN THE END OF SPIRAL BAND AND THE CENTRE CODE TABLE 19105 0 0 4 CODE TABLE 19105 0 2
- 019106 IDENTIFICATION NUMBER OF TROPICAL CYCLONE NUMERIC 0 0 7 NUMERIC 0 3
- 019107 TIME INTERVAL OVER WHICH THE MOVEMENT OF THE TROPICAL CYCLONE HA CODE TABLE 19107 0 0 4 CODE TABLE 19107 0 2
- 019108 ACCURACY OF GEOGRAPHICAL POSITION OF THE TROPICAL CYCLONE CODE TABLE 19108 0 0 3 CODE TABLE 19108 0 1
- 019109 MEAN DIAMETER OF THE OVERCAST CLOUD OF THE TROPICAL CYCLONE CODE TABLE 19109 0 0 4 CODE TABLE 19109 0 2
- 019110 APPARENT 24-HOUR CHANGE IN INTENSITY OF THE TROPICAL CYCLONE CODE TABLE 19110 0 0 4 CODE TABLE 19110 0 2
- 019111 CURRENT INTENSITY (CI) NUMBER OF THE TROPICAL CYCLONE NUMERIC 1 0 7 NUMERIC 1 3
- 019112 DATA TROPICAL (DT) NUMBER OF THE TROPICAL CYCLONE NUMERIC 1 0 7 NUMERIC 1 3
- 019113 CLOUD PATTERN TYPE OF THE DT-NUMBER CODE TABLE 19113 0 0 4 CODE TABLE 19113 0 2
- 019114 MODEL EXPECTED TROPICAL (MET) NUMBER OF THE TROPICAL CYCLONE NUMERIC 1 0 7 NUMERIC 1 3
- 019115 TREND OF THE PAST 24-HOUR CHANGE (+: DEVELOPED, -: WEAKENED) NUMERIC 1 -30 6 NUMERIC 1 2
- 019116 PATTERN TROPICAL (PT) NUMBER OF THE TROPICAL CYCLONE NUMERIC 1 0 7 NUMERIC 1 3
- 019117 CLOUD PICTURE TYPE OF THE PT-NUMBER CODE TABLE 19117 0 0 3 CODE TABLE 19117 0 1
- 019118 FINAL TROPICAL (T) NUMBER OF THE TROPICAL CYCLONE NUMERIC 1 0 7 NUMERIC 1 3
- 019119 TYPE OF THE FINAL T-NUMBER CODE TABLE 19119 0 0 3 CODE TABLE 19119 0 1
- 019150 TYPHOON INTERNATIONAL COMMON NUMBER (TYPHOON COMMITTEE) CCITTIA5 0 0 32 CHARACTER 0 4
- 020001 HORIZONTAL VISIBILITY M -1 0 13 M -1 4
- 020002 VERTICAL VISIBILITY M -1 0 7 M -1 3
- 020003 PRESENT WEATHER CODE TABLE 20003 0 0 9 CODE TABLE 20003 0 3
- 020004 PAST WEATHER (1) CODE TABLE 20004 0 0 5 CODE TABLE 20004 0 2
- 020005 PAST WEATHER (2) CODE TABLE 20005 0 0 5 CODE TABLE 20005 0 2
- 020006 FLIGHT RULES CODE TABLE 20006 0 0 3 CODE TABLE 20006 0 1
- 020008 CLOUD DISTRIBUTION FOR AVIATION CODE TABLE 20008 0 0 5 CODE TABLE 20008 0 2
- 020009 GENERAL WEATHER INDICATOR (TAF/METAR) CODE TABLE 20009 0 0 4 CODE TABLE 20009 0 2
- 020010 CLOUD COVER (TOTAL) % 0 0 7 % 0 3
- 020011 CLOUD AMOUNT CODE TABLE 20011 0 0 4 CODE TABLE 20011 0 2
- 020012 CLOUD TYPE CODE TABLE 20012 0 0 6 CODE TABLE 20012 0 2
- 020013 HEIGHT OF BASE OF CLOUD M -1 -40 11 M -1 4
- 020014 HEIGHT OF TOP OF CLOUD M -1 -40 11 M -1 4
- 020015 PRESSURE AT BASE OF CLOUD PA -1 0 14 PA -1 5
- 020016 PRESSURE AT TOP OF CLOUD PA -1 0 14 PA -1 5
- 020017 CLOUD TOP DESCRIPTION CODE TABLE 20017 0 0 4 CODE TABLE 20017 0 2
- 020018 TENDENCY OF RUNWAY VISUAL RANGE CODE TABLE 20018 0 0 2 CODE TABLE 20018 0 1
- 020019 SIGNIFICANT PRESENT OR FORECAST WEATHER CCITTIA5 0 0 72 CHARACTER 0 9
- 020020 SIGNIFICANT RECENT WEATHER PHENOMENA CCITTIA5 0 0 32 CHARACTER 0 4
- 020021 TYPE OF PRECIPITATION FLAG TABLE 20021 0 0 30 FLAG TABLE 20021 0 10
- 020022 CHARACTER OF PRECIPITATION CODE TABLE 20022 0 0 4 CODE TABLE 20022 0 2
- 020023 OTHER WEATHER PHENOMENA FLAG TABLE 20023 0 0 18 FLAG TABLE 20023 0 6
- 020024 INTENSITY OF PHENOMENA CODE TABLE 20024 0 0 3 CODE TABLE 20024 0 1
- 020025 OBSCURATION FLAG TABLE 20025 0 0 21 FLAG TABLE 20025 0 7
- 020026 CHARACTER OF OBSCURATION CODE TABLE 20026 0 0 4 CODE TABLE 20026 0 2
- 020027 PHENOMENA OCCURRENCE FLAG TABLE 20027 0 0 9 FLAG TABLE 20027 0 3
- 020028 EXPECTED CHANGE IN INTENSITY CODE TABLE 20028 0 0 3 CODE TABLE 20028 0 1
- 020029 RAIN FLAG CODE TABLE 20029 0 0 2 CODE TABLE 20029 0 1
- 020031 ICE DEPOSIT (THICKNESS) M 2 0 7 M 2 3
- 020032 RATE OF ICE ACCRETION (ESTIMATED) CODE TABLE 20032 0 0 3 CODE TABLE 20032 0 1
- 020033 CAUSE OF ICE ACCRETION FLAG TABLE 20033 0 0 4 FLAG TABLE 20033 0 2
- 020034 SEA ICE CONCENTRATION CODE TABLE 20034 0 0 5 CODE TABLE 20034 0 2
- 020035 AMOUNT AND TYPE OF ICE CODE TABLE 20035 0 0 4 CODE TABLE 20035 0 2
- 020036 ICE SITUATION CODE TABLE 20036 0 0 5 CODE TABLE 20036 0 2
- 020037 ICE DEVELOPMENT CODE TABLE 20037 0 0 5 CODE TABLE 20037 0 2
- 020038 BEARING OF ICE EDGE DEG 0 0 12 DEG 0 3
- 020039 ICE DISTANCE M -1 0 13 M -1 4
- 020040 EVOLUTION OF DRIFT SNOW CODE TABLE 20040 0 0 4 CODE TABLE 20040 0 2
- 020041 AIRFRAME ICING CODE TABLE 20041 0 0 4 CODE TABLE 20041 0 2
- 020042 AIRFRAME ICING PRESENT CODE TABLE 20042 0 0 2 CODE TABLE 20042 0 1
- 020043 PEAK LIQUID WATER CONTENT KG M-3 4 0 7 KG M-3 4 2
- 020044 AVERAGE LIQUID WATER CONTENT KG M-3 4 0 7 KG M-3 4 2
- 020045 SUPERCOOLED LARGE DROPLET (SLD) CONDITIONS CODE TABLE 20045 0 0 2 CODE TABLE 20045 0 1
- 020048 EVOLUTION OF FEATURE CODE TABLE 20048 0 0 4 CODE TABLE 20048 0 2
- 020050 CLOUD INDEX CODE TABLE 20050 0 0 8 CODE TABLE 20050 0 3
- 020051 AMOUNT OF LOW CLOUDS % 0 0 7 % 0 3
- 020052 AMOUNT OF MIDDLE CLOUDS % 0 0 7 % 0 3
- 020053 AMOUNT OF HIGH CLOUDS % 0 0 7 % 0 3
- 020054 TRUE DIRECTION FROM WHICH A PHENOMENON OR CLOUDS ARE MOVING OR I DEG 0 0 9 DEG 0 3
- 020055 STATE OF SKY IN THE TROPICS CODE TABLE 20055 0 0 4 CODE TABLE 20055 0 2
- 020056 CLOUD PHASE CODE TABLE 20056 0 0 3 CODE TABLE 20056 0 1
- 020058 VISIBILITY SEAWARDS FROM A COASTAL STATION M -1 0 13 M -1 4
- 020059 MINIMUM HORIZONTAL VISIBILITY M -1 0 9 M -1 3
- 020060 PREVAILING HORIZONTAL VISIBILITY M -1 0 10 M -1 4
- 020061 RUNWAY VISUAL RANGE (RVR) M 0 0 12 M 0 4
- 020062 STATE OF THE GROUND (WITH OR WITHOUT SNOW) CODE TABLE 20062 0 0 5 CODE TABLE 20062 0 2
- 020063 SPECIAL PHENOMENA CODE TABLE 20063 0 0 10 CODE TABLE 20063 0 4
- 020065 SNOW COVER % 0 0 7 % 0 3
- 020066 MAXIMUM DIAMETER OF HAILSTONES M 3 0 8 M 3 3
- 020067 DIAMETER OF DEPOSIT M 3 0 9 M 3 3
- 020070 MINIMUM NUMBER OF ATMOSPHERICS NUMERIC 0 0 7 NUMERIC 0 3
- 020071 ACCURACY OF FIX AND RATE OF ATMOSPHERICS CODE TABLE 20071 0 0 4 CODE TABLE 20071 0 2
- 020081 CLOUD AMOUNT IN SEGMENT % 0 0 7 % 0 3
- 020082 AMOUNT SEGMENT CLOUD FREE % 0 0 7 % 0 3
- 020083 AMOUNT OF SEGMENT COVERED BY SCENE % 0 0 7 % 0 3
- 020085 GENERAL CONDITION OF RUNWAY CODE TABLE 20085 0 0 4 CODE TABLE 20085 0 1
- 020086 RUNWAY DEPOSITS CODE TABLE 20086 0 0 4 CODE TABLE 20086 0 1
- 020087 RUNWAY CONTAMINATION CODE TABLE 20087 0 0 4 CODE TABLE 20087 0 1
- 020088 DEPTH OF RUNWAY DEPOSITS M 3 0 12 M 0 4
- 020089 RUNWAY FRICTION COEFFICIENT CODE TABLE 20089 0 0 7 CODE TABLE 20089 0 2
- 020090 SPECIAL CLOUDS CODE TABLE 20090 0 0 4 CODE TABLE 20090 0 2
- 020091 VERTICAL VISIBILITY FT -2 0 10 FT -2 3
- 020092 HEIGHT OF BASE OF CLOUD FT -2 0 10 FT -2 3
- 020093 HEIGHT OF INVERSION M -1 0 8 M -1 3
- 020095 ICE PROBABILITY NUMERIC 3 0 10 NUMERIC 3 4
- 020096 ICE AGE (A PARAMETER) DB 2 -4096 13 DB 2 4
- 020101 LOCUST (ACRIDIAN) NAME CODE TABLE 20101 0 0 4 CODE TABLE 20101 0 2
- 020102 LOCUST (MATURITY) COLOUR CODE TABLE 20102 0 0 4 CODE TABLE 20102 0 2
- 020103 STAGE OF DEVELOPMENT OF LOCUSTS CODE TABLE 20103 0 0 4 CODE TABLE 20103 0 2
- 020104 ORGANIZATION STATE OF SWARM OR BAND OF LOCUSTS CODE TABLE 20104 0 0 4 CODE TABLE 20104 0 2
- 020105 SIZE OF SWARM OR BAND OF LOCUSTS AND DURATION OF PASSAGE OF SWAR CODE TABLE 20105 0 0 4 CODE TABLE 20105 0 2
- 020106 LOCUST POPULATION DENSITY CODE TABLE 20106 0 0 4 CODE TABLE 20106 0 2
- 020107 DIRECTION OF MOVEMENTS OF LOCUST SWARM CODE TABLE 20107 0 0 4 CODE TABLE 20107 0 2
- 020108 EXTENT OF VEGETATION CODE TABLE 20108 0 0 4 CODE TABLE 20108 0 2
- 020111 X-AXIS ERROR ELLIPSE MAJOR COMPONENT M -1 0 17 M -1 6
- 020112 Y-AXIS ERROR ELLIPSE MINOR COMPONENT M -1 0 17 M -1 6
- 020113 Z-AXIS ERROR ELLIPSE COMPONENT M -1 0 17 M -1 6
- 020114 ANGLE OF X-AXIS IN ERROR ELLIPSE DEG 2 -18000 16 DEG 2 5
- 020115 ANGLE OF Z-AXIS IN ERROR ELLIPSE DEG 2 -18000 16 DEG 2 5
- 020116 EMISSION HEIGHT OF CLOUD STROKE M 0 0 16 M 0 5
- 020117 AMPLITUDE OF LIGHTNING STRIKE A -1 -32000 16 A -1 5
- 020118 LIGHTNING DETECTION ERROR M 0 0 19 M 0 6
- 020119 LIGHTNING DISCHARGE POLARITY CODE TABLE 20119 0 0 2 CODE TABLE 20119 0 1
- 020121 THRESHOLD VALUE FOR POLARITY DECISION V 3 0 16 V 3 5
- 020122 THRESHOLD VALUE FOR POLARITY DECISION A 0 0 16 A 0 5
- 020123 MINIMUM THRESHOLD FOR DETECTION V M-1 3 0 16 V M-1 3 5
- 020124 LIGHTNING STROKE OR FLASH CODE TABLE 20124 0 0 2 CODE TABLE 20124 0 1
- 020126 LIGHTNING RATE OF DISCHARGE H-1 0 0 23 H-1 0 7
- 020127 LIGHTNING - DISTANCE FROM STATION M -3 0 8 M -3 3
- 020128 LIGHTNING - DIRECTION FROM STATION DEG 1 0 12 DEG 1 4
- 020130 CLOUD HYDROMETEOR CONCENTRATION NUMERIC 0 0 10 NUMERIC 0 3
- 020131 EFFECTIVE RADIUS OF CLOUD HYDROMETEORS M 5 0 6 M 5 2
- 020132 CLOUD LIQUID WATER CONTENT KG M-3 5 0 11 KG M-3 5 4
- 020133 HYDROMETEOR RADIUS M 5 0 6 M 5 2
- 020135 ICE MASS (ON A ROD) KG M-1 1 0 10 KG M-1 1 3
- 020136 SUPPLEMENTARY CLOUD TYPE CODE TABLE 20136 0 0 9 CODE TABLE 20136 0 3
- 020137 EVOLUTION OF CLOUDS CODE TABLE 20137 0 0 4 CODE TABLE 20137 0 2
- 020192 SPECIAL PHENOMENA CODE TABLE 20192 0 0 14
- 020193 CLOUD AMOUNT IN SEGMENT % 0 0 7 % 0 3
- 020194 AMOUNT OF SEGMENT CLOUD FREE % 0 0 7 % 0 3
- 020215 PRESSURE AT THE BASE OF CLOUD PA -1 0 14 PA -1 5
- 020249 SEA-ICE FRACTION NUMERIC 2 0 7 NUMERIC 2 3
- 020250 CALCULATED SURFACE TYPE CODE TABLE 20250 0 0 5
- 020251 ICE AGE CODE TABLE 20251 0 0 3
- 020252 ICE EDGE CODE TABLE 20252 0 0 3
- 020253 SURFACE TYPE CODE TABLE 20253 0 0 3
- 020254 ICE CONCENTRATION % 0 0 7
- 021001 HORIZONTAL REFLECTIVITY DB 0 -64 7 DB 0 3
- 021002 VERTICAL REFLECTIVITY DB 0 -64 7 DB 0 3
- 021003 DIFFERENTIAL REFLECTIVITY DB 1 -5 7 DB 1 3
- 021005 LINEAR DEPOLARIZATION RATIO DB 0 -65 6 DB 0 2
- 021006 CIRCULAR DEPOLARIZATION RATIO DB 0 -65 6 DB 0 2
- 021011 DOPPLER MEAN VELOCITY IN X-DIRECTION M S-1 0 -128 8 M S-1 0 3
- 021012 DOPPLER MEAN VELOCITY IN Y-DIRECTION M S-1 0 -128 8 M S-1 0 3
- 021013 DOPPLER MEAN VELOCITY IN Z-DIRECTION M S-1 0 -128 8 M S-1 0 3
- 021014 DOPPLER MEAN VELOCITY (RADIAL) M S-1 1 -4096 13 M S-1 1 4
- 021017 DOPPLER VELOCITY SPECTRAL WIDTH M S-1 1 0 8 M S-1 1 3
- 021018 EXTENDED NYQUIST VELOCITY M S-1 1 0 10 M S-1 1 4
- 021019 HIGH NYQUIST VELOCITY M S-1 1 0 10 M S-1 1 3
- 021021 ECHO TOPS M -3 0 4 M -3 2
- 021022 RANGE BIN OFFSET M 1 0 14 M 1 5
- 021023 RANGE BIN SIZE M 0 0 14 M 0 5
- 021024 AZIMUTH OFFSET DEG 1 0 12 DEG 1 4
- 021025 AZIMUTHAL RESOLUTION DEG 1 0 8 DEG 1 3
- 021030 SIGNAL TO NOISE RATIO DB 0 -32 8 DB 0 3
- 021031 VERTICALLY INTEGRATED LIQUID-WATER CONTENT KG M-2 0 0 7 KG M-2 0 3
- 021036 RADAR RAINFALL INTENSITY M S-1 7 0 12 M S-1 7 4
- 021041 BRIGHT-BAND HEIGHT M -2 0 8 M -2 3
- 021051 SIGNAL POWER ABOVE 1 MW DB 0 -256 8 DB 0 3
- 021062 BACKSCATTER DB 2 -5000 13 DB 2 4
- 021063 RADIOMETRIC RESOLUTION (NOISE VALUE) % 1 0 10 % 1 4
- 021064 CLUTTER NOISE ESTIMATE NUMERIC 0 0 8 NUMERIC 0 3
- 021065 MISSING PACKET COUNTER NUMERIC 0 -127 8 NUMERIC 0 3
- 021066 WAVE SCATTEROMETER PRODUCT CONFIDENCE DATA FLAG TABLE 21066 0 0 12 FLAG TABLE 21066 0 4
- 021067 WIND PRODUCT CONFIDENCE DATA FLAG TABLE 21067 0 0 13 FLAG TABLE 21067 0 5
- 021068 RADAR ALTIMETER PRODUCT CONFIDENCE DATA FLAG TABLE 21068 0 0 8 FLAG TABLE 21068 0 3
- 021069 SST PRODUCT CONFIDENCE DATA FLAG TABLE 21069 0 0 10 FLAG TABLE 21069 0 4
- 021070 SST PRODUCT CONFIDENCE DATA (SADIST-2) FLAG TABLE 21070 0 0 23 FLAG TABLE 21070 0 6
- 021071 PEAKINESS NUMERIC 0 0 16 NUMERIC 0 5
- 021072 SATELLITE ALTIMETER CALIBRATION STATUS FLAG TABLE 21072 0 0 4 FLAG TABLE 21072 0 2
- 021073 SATELLITE ALTIMETER INSTRUMENT MODE FLAG TABLE 21073 0 0 9 FLAG TABLE 21073 0 3
- 021075 IMAGE SPECTRUM INTENSITY NUMERIC 0 0 8 NUMERIC 0 3
- 021076 REPRESENTATION OF INTENSITIES CODE TABLE 21076 0 0 3 CODE TABLE 21076 0 1
- 021077 ALTITUDE CORRECTION (IONOSPHERE) M 3 0 14 M 3 5
- 021078 ALTITUDE CORRECTION (DRY TROPOSPHERE) M 3 0 9 M 3 3
- 021079 ALTITUDE CORRECTION (WET TROPOSPHERE) M 3 2000 10 M 3 4
- 021080 ALTITUDE CORRECTION (CALIBRATION CONSTANT) M 3 0 11 M 3 4
- 021081 OPEN LOOP CORRECTION (HEIGHT-TIME LOOP) M 3 0 10 M 3 4
- 021082 OPEN LOOP CORRECTION (AUTO GAIN CONTROL) DB 3 -3000 14 DB 3 5
- 021083 WARM TARGET CALIBRATION NUMERIC 0 0 16 NUMERIC 0 5
- 021084 COLD TARGET CALIBRATION NUMERIC 0 0 16 NUMERIC 0 5
- 021085 ATSR SEA-SURFACE TEMPERATURE ACROSS-TRACK BAND NUMBER NUMERIC 0 0 4 NUMERIC 0 2
- 021086 NUMBER OF PIXELS IN NADIR ONLY, AVERAGE NUMERIC 0 0 9 NUMERIC 0 3
- 021087 NUMBER OF PIXELS IN DUAL VIEW, AVERAGE NUMERIC 0 0 9 NUMERIC 0 3
- 021088 WET BACKSCATTER DB 2 -5000 13 DB 2 4
- 021091 RADAR SIGNAL DOPPLER SPECTRUM 0TH MOMENT DB 0 -100 8 DB 0 3
- 021092 RASS SIGNAL DOPPLER SPECTRUM 0TH MOMENT, REFERRING TO RASS SIGNA DB 0 -100 8 DB 0 3
- 021093 KU BAND PEAKINESS NUMERIC 3 0 16 NUMERIC 3 5
- 021094 S BAND PEAKINESS NUMERIC 3 0 16 NUMERIC 3 5
- 021101 NUMBER OF VECTOR AMBIGUITIES NUMERIC 0 0 3 NUMERIC 0 1
- 021102 INDEX OF SELECTED WIND VECTOR NUMERIC 0 0 3 NUMERIC 0 1
- 021103 TOTAL NUMBER OF SIGMA-0 MEASUREMENTS NUMERIC 0 0 5 NUMERIC 0 2
- 021104 LIKELIHOOD COMPUTED FOR SOLUTION NUMERIC 3 -30000 15 NUMERIC 3 5
- 021105 NORMALIZED RADAR CROSS-SECTION DB 2 -10000 14 DB 2 5
- 021106 KP VARIANCE COEFFICIENT (ALPHA) NUMERIC 3 0 14 NUMERIC 3 5
- 021107 KP VARIANCE COEFFICIENT (BETA) NUMERIC 8 0 16 NUMERIC 8 5
- 021109 SEAWINDS WIND VECTOR CELL QUALITY FLAG TABLE 21109 0 0 17 FLAG TABLE 21109 0 6
- 021110 NUMBER OF INNER-BEAM SIGMA-0 (FORWARD OF SATELLITE) NUMERIC 0 0 6 NUMERIC 0 2
- 021111 NUMBER OF OUTER-BEAM SIGMA-0 (FORWARD OF SATELLITE) NUMERIC 0 0 6 NUMERIC 0 2
- 021112 NUMBER OF INNER-BEAM SIGMA-0 (AFT OF SATELLITE) NUMERIC 0 0 6 NUMERIC 0 2
- 021113 NUMBER OF OUTER-BEAM SIGMA-0 (AFT OF SATELLITE) NUMERIC 0 0 6 NUMERIC 0 2
- 021114 KP VARIANCE COEFFICIENT (GAMMA) DB 3 -140000 18 DB 3 6
- 021115 SEAWINDS SIGMA-0 QUALITY FLAG TABLE 21115 0 0 17 FLAG TABLE 21115 0 6
- 021116 SEAWINDS SIGMA-0 MODE FLAG TABLE 21116 0 0 17 FLAG TABLE 21116 0 6
- 021117 SIGMA-0 VARIANCE QUALITY CONTROL NUMERIC 2 0 16 NUMERIC 2 5
- 021118 ATTENUATION CORRECTION ON SIGMA-0 DB 2 -10000 14 DB 2 5
- 021119 WIND SCATTEROMETER GEOPHYSICAL MODEL FUNCTION CODE TABLE 21119 0 0 6 CODE TABLE 21119 0 2
- 021120 PROBABILITY OF RAIN NUMERIC 3 0 10 NUMERIC 3 4
- 021121 SEAWINDS NOF RAIN INDEX NUMERIC 0 0 8 NUMERIC 0 3
- 021122 ATTENUATION CORRECTION ON SIGMA-0 (FROM TB) DB 2 -10000 14 DB 2 5
- 021123 SEAWINDS NORMALIZED RADAR CROSS-SECTION DB 2 -30000 15 DB 2 5
- 021128 NUMBER OF VALID POINTS PER SECOND USED TO DERIVE PREVIOUS PARAME NUMERIC 0 0 8 NUMERIC 0 3
- 021130 SPECTRUM TOTAL ENERGY NUMERIC 6 0 28 NUMERIC 6 9
- 021131 SPECTRUM MAX ENERGY NUMERIC 6 0 28 NUMERIC 6 9
- 021132 DIRECTION OF SPECTRUM MAX ON HIGHER RESOLUTION GRID DEG 3 0 19 DEG 3 6
- 021133 WAVELENGTH OF SPECTRUM MAX ON HIGHER RESOLUTION GRID M 3 0 29 M 3 9
- 021134 RANGE RESOLUTION OF CRESS COVARIANCE SPECTRUM RAD M-1 3 0 19 RAD M-1 3 6
- 021135 REAL PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS NUMERIC 3 -524288 20 NUMERIC 3 7
- 021136 IMAGINARY PART OF CROSS SPECTRA POLAR GRID NUMBER OF BINS NUMERIC 3 -524288 20 NUMERIC 3 7
- 021137 KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT DB 2 -32768 16 DB 2 5
- 021138 STD KU BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT DB 2 -32768 16 DB 2 5
- 021139 KU BAND NET INSTRUMENTAL CORRECTION FOR AGC DB 2 -2048 12 DB 2 4
- 021140 S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT DB 2 -32768 16 DB 2 5
- 021141 STD S BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT DB 2 -32768 16 DB 2 5
- 021142 S BAND NET INSTRUMENTAL CORRECTION FOR AGC DB 2 -1024 11 DB 2 4
- 021143 KU BAND RAIN ATTENUATION DB 2 -1073741824 31 DB 2 10
- 021144 ALTIMETER RAIN FLAG FLAG TABLE 21144 0 0 2 FLAG TABLE 21144 0 1
- 021145 KU BAND AUTOMATIC GAIN CONTROL DB 2 0 13 DB 2 4
- 021146 RMS KU BAND AUTOMATIC GAIN CONTROL DB 2 0 8 DB 2 3
- 021147 NUMBER OF VALID POINTS FOR KU BAND AUTOMATIC GAIN CONTROL NUMERIC 0 0 5 NUMERIC 0 2
- 021148 TRAILING EDGE VARIATION FLAG FLAG TABLE 21148 0 0 9 FLAG TABLE 21148 0 3
- 021150 BEAM COLLOCATION CODE TABLE 21150 0 0 2 CODE TABLE 21150 0 1
- 021151 ESTIMATED ERROR IN SIGMA-0 AT 40 DEGREES INCIDENCE ANGLE DB 2 0 9 DB 2 3
- 021152 SLOPE AT 40 DEGREES INCIDENCE ANGLE DB DEG-1 2 -80 7 DB DEG-1 2 2
- 021153 ESTIMATED ERROR IN SLOPE AT 40 DEGREES INCIDENCE ANGLE DB DEG-1 2 -40 6 DB DEG-1 2 2
- 021154 SOIL MOISTURE SENSITIVITY DB 2 0 12 DB 2 4
- 021155 WIND VECTOR CELL QUALITY FLAG TABLE 21155 0 0 24 FLAG TABLE 21155 0 8
- 021156 BACKSCATTER DISTANCE NUMERIC 1 -4096 13 NUMERIC 1 4
- 021157 LOSS PER UNIT LENGTH OF ATMOSPHERE USED DB M-1 10 0 22 DB M-1 10 7
- 021158 ASCAT KP ESTIMATE QUALITY CODE TABLE 21158 0 0 2 CODE TABLE 21158 0 1
- 021159 ASCAT SIGMA-0 USABILITY CODE TABLE 21159 0 0 2 CODE TABLE 21159 0 1
- 021160 ASCAT USE OF SYNTHETIC DATA NUMERIC 3 0 10 NUMERIC 3 4
- 021161 ASCAT SYNTHETIC DATA QUANTITY NUMERIC 3 0 10 NUMERIC 3 4
- 021162 ASCAT SATELLITE ORBIT AND ATTITUDE QUALITY NUMERIC 3 0 10 NUMERIC 3 4
- 021163 ASCAT SOLAR ARRAY REFLECTION CONTAMINATION NUMERIC 3 0 10 NUMERIC 3 4
- 021164 ASCAT TELEMETRY PRESENCE AND QUALITY NUMERIC 3 0 10 NUMERIC 3 4
- 021165 ASCAT EXTRAPOLATED REFERENCE FUNCTION PRESENCE NUMERIC 3 0 10 NUMERIC 3 4
- 021166 LAND FRACTION NUMERIC 3 0 10 NUMERIC 3 4
- 021169 ICE PRESENCE INDICATOR CODE TABLE 21169 0 0 2 CODE TABLE 21169 0 1
- 021170 C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT DB 2 -32768 16 DB 2 5
- 021171 RMS C BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT DB 2 -32768 16 DB 2 5
- 021172 C BAND NET INSTRUMENTAL CORRECTION FOR AGC DB 2 -2048 12 DB 2 4
- 021173 C BAND AUTOMATIC GAIN CONTROL DB 2 0 13 DB 2 4
- 021174 RMS C BAND AUTOMATIC GAIN CONTROL DB 2 0 9 DB 2 3
- 021175 NUMBER OF VALID POINTS FOR C BAND AUTOMATIC GAIN CONTROL NUMERIC 0 0 10 NUMERIC 0 4
- 021176 HIGH FREQUENCY VARIABILITY CORRECTION M 3 0 16 M 3 5
- 021177 CORRECTED OCOG BACKSCATTER COEFFICIENT DB 2 0 16 DB 2 5
- 021178 STD OF 20 HZ OCOG BACKSCATTER COEFFICIENT DB 2 0 16 DB 2 5
- 021179 NUMBER OF 20 HZ VALID POINTS FOR OCOG BACKSCATTER COEFFICIENT NUMERIC 0 0 16 NUMERIC 0 5
- 021180 NUMBER OF 20 HZ VALID POINTS FOR OCEAN BACKSCATTER COEFFICIENT NUMERIC 0 0 8 NUMERIC 0 3
- 021181 20 HZ OCEAN BACKSCATTER COEFFICIENT DB 2 0 16 DB 2 5
- 021182 20 HZ KU BAND PEAKINESS NUMERIC 3 0 16 NUMERIC 3 5
- 021183 SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT DB 2 -32768 16 DB 2 5
- 021184 STD SPECIFIC BAND CORRECTED OCEAN BACKSCATTER COEFFICIENT DB 2 -32768 16 DB 2 5
- 021185 SPECIFIC BAND NET INSTRUMENTAL CORRECTION FOR AGC DB 2 -2048 12 DB 2 4
- 021186 SPECIFIC BAND AUTOMATIC GAIN CONTROL DB 2 0 13 DB 2 4
- 021187 RMS SPECIFIC BAND AUTOMATIC GAIN CONTROL DB 2 0 8 DB 2 3
- 021188 NUMBER OF VALID POINTS FOR SPECIFIC BAND AUTOMATIC GAIN CONTROL NUMERIC 0 0 7 NUMERIC 0 3
- 021192 RADAR BACK SCATTER DB 2 -5000 13
- 021193 NOISE FIGURE % 0 0 7
- 021194 BACKGROUND NOISE LEVEL NUMERIC 0 0 8
- 021195 MISSING PACKET COUNTER NUMERIC 0 -127 8
- 021196 UWA PRODUCT CONFIDENCE FLAG TABLE 21196 0 0 12
- 021197 UWI PRODUCT CONFIDENCE FLAG TABLE 21197 0 0 12
- 021198 URA PRODUCT CONFIDENCE FLAG TABLE 21198 0 0 8
- 021199 UAT PRODUCT CONFIDENCE FLAG TABLE 21199 0 0 7
- 021200 MWI PRODUCT CONFIDENCE FLAG TABLE 21200 0 0 15
- 021201 PEAKINESS NUMERIC 0 0 16
- 021202 ALTIMETER CALIBRATION STATUS FLAG TABLE 21202 0 0 4
- 021203 ALTIMETER INSTRUMENT MODE FLAG TABLE 21203 0 0 9
- 021204 MULTI/SINGLE VIEW DIFFERENCE K 2 -512 10
- 021205 SPECTRAL INTENSITY NUMERIC 0 0 8
- 021206 REPRESENTATION OF INTENSITY CODE TABLE 21206 0 0 3
- 021207 ALTITUDE CORRECTION (IONOSPHERE) M 3 0 14
- 021208 ALTITUDE CORRECTION (DRY TROPOSPHERE) M 3 0 9
- 021209 LTITUDE CORRECTION (WET TROPOSPHERE) M 3 2000 10
- 021210 ALTITUDE CORRECTION (CALIBRATION CONSTANT) M 3 0 11
- 021211 OPEN LOOP CORRECTION (HTL) M 3 0 10
- 021212 OPEN LOOP CORRECTION (AGC) DB 3 -3000 14
- 021213 AMBIGUITY REMOVAL CONFIDENCE % 0 0 7
- 021214 UAT QUALITY SUMMARY CODE TABLE 21214 0 0 3
- 021215 UAT ACROSS-TRACK BAND NO. NUMERIC 0 0 4
- 021222 DOPPLER SPECTRUM 0 TH MOMENT (AMPLITUDE) DB 0 0 7
- 021225 PRESCAT PRODUCT CONFIDENCE FLAG TABLE 21225 0 0 6
- 021226 BACKSCATER DISTANCE NUMERIC 1 -4096 13
- 021227 GLARE ANGLE CODE TABLE 21227 0 6 6
- 021230 NUMBER OF VECTOR AMBIGUITIES NUMERIC 0 0 3
- 021231 INDEX OF SELECTED WIND VECTOR NUMERIC 0 0 3
- 021232 TOTAL NMBER OF SIGMA-0 MEASUREMENTS NUMERIC 0 0 5
- 021233 NUMBER OF SIGMA-0 USABLE FOR WIND NUMERIC 0 0 5
- 021234 LIKELIHOOD COMPUTED FOR SOLUTION NUMERIC 1 -10000 14
- 021235 WIND VECTOR CELL QUALITY FLAG FLAG TABLE 21235 0 0 3
- 021236 NUMBER OF FORE-BEAM SIGMA-0 NUMERIC 1 0 6
- 021237 NUMBER OF MID-BEAM V-POL SIGMA-0 NUMERIC 1 0 6
- 021238 NUMBER OF MID-BEAM H-POL SIGMA-0 NUMERIC 1 0 6
- 021239 NUMBER OF AFT-BEAM SIGMA-0 NUMERIC 1 0 6
- 021240 NORMALIZED RADAR CROSS SECTION NUMERIC 2 -10000 14
- 021241 KP VARIANCE COEFFICIENT (ALPHA) NUMERIC 5 0 14
- 021242 KP VARIANCE COEFFICIENT (BETHA) NUMERIC 6 0 16
- 021243 KP VARIANCE COEFFICIENT (GAMMA) NUMERIC 6 0 16
- 021244 SIGMA-0 QUALITY FLAG FLAG TABLE 21244 0 0 15
- 022001 DIRECTION OF WAVES DEG 0 0 9 DEG 0 3
- 022002 DIRECTION OF WIND WAVES DEG 0 0 9 DEG 0 3
- 022003 DIRECTION OF SWELL WAVES DEG 0 0 9 DEG 0 3
- 022004 DIRECTION OF CURRENT DEG 0 0 9 DEG 0 3
- 022005 DIRECTION OF SEA-SURFACE CURRENT DEG 0 0 9 DEG 0 3
- 022011 PERIOD OF WAVES S 0 0 6 S 0 2
- 022012 PERIOD OF WIND WAVES S 0 0 6 S 0 2
- 022013 PERIOD OF SWELL WAVES S 0 0 6 S 0 2
- 022021 HEIGHT OF WAVES M 1 0 10 M 1 4
- 022022 HEIGHT OF WIND WAVES M 1 0 10 M 1 4
- 022023 HEIGHT OF SWELL WAVES M 1 0 10 M 1 4
- 022025 STANDARD DEVIATION WAVE HEIGHT M 2 0 10 M 2 4
- 022026 STANDARD DEVIATION OF SIGNIFICANT WAVE HEIGHT M 2 0 10 M 2 4
- 022031 SPEED OF CURRENT M S-1 2 0 13 M S-1 2 4
- 022032 SPEED OF SEA-SURFACE CURRENT M S-1 2 0 13 M S-1 2 4
- 022035 TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM M 2 0 14 M 2 4
- 022036 METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET) M 2 0 14 M 2 4
- 022037 TIDAL ELEVATION WITH RESPECT TO NATIONAL LAND DATUM M 3 -10000 15 M 3 5
- 022038 TIDAL ELEVATION WITH RESPECT TO LOCAL CHART DATUM M 3 -10000 15 M 3 5
- 022039 METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET) M 3 -5000 13 M 3 4
- 022040 METEOROLOGICAL RESIDUAL TIDAL ELEVATION (SURGE OR OFFSET) M 3 -5000 14 M 3 5
- 022041 SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN) K 1 0 12 K 1 4
- 022042 SEA/WATER TEMPERATURE K 1 0 12 K 1 4
- 022043 SEA/WATER TEMPERATURE K 2 0 15 K 2 5
- 022044 SOUND VELOCITY M S-1 1 0 14 M S-1 1 5
- 022045 SEA/WATER TEMPERATURE K 3 0 19 K 3 6
- 022046 SEA ICE FRACTION NUMERIC 2 0 7 NUMERIC 2 3
- 022049 SEA-SURFACE TEMPERATURE K 2 0 15 K 2 5
- 022050 STANDARD DEVIATION SEA-SURFACE TEMPERATURE K 2 0 8 K 2 3
- 022055 FLOAT CYCLE NUMBER NUMERIC 0 0 10 NUMERIC 0 3
- 022056 DIRECTION OF PROFILE CODE TABLE 22056 0 0 2 CODE TABLE 22056 0 1
- 022059 SEA-SURFACE SALINITY 0/00 2 0 14 0/00 2 5
- 022060 LAGRANGIAN DRIFTER DROGUE STATUS CODE TABLE 22060 0 0 3 CODE TABLE 22060 0 1
- 022061 STATE OF THE SEA CODE TABLE 22061 0 0 4 CODE TABLE 22061 0 2
- 022062 SALINITY 0/00 2 0 14 0/00 2 5
- 022063 TOTAL WATER DEPTH M 0 0 14 M 0 5
- 022064 SALINITY 0/00 3 0 17 0/00 3 6
- 022065 WATER PRESSURE PA -3 0 17 PA -3 6
- 022066 WATER CONDUCTIVITY S M-1 6 0 26 S M-1 6 8
- 022067 INSTRUMENT TYPE FOR WATER TEMPERATURE/SALINITY PROFILE MEASUREME CODE TABLE 22067 0 0 10 CODE TABLE 22067 0 4
- 022068 WATER TEMPERATURE PROFILE RECORDER TYPES CODE TABLE 22068 0 0 7 CODE TABLE 22068 0 3
- 022069 SPECTRAL WAVE DENSITY M2 HZ-1 3 0 22 M2 HZ-1 3 7
- 022070 SIGNIFICANT WAVE HEIGHT M 2 0 13 M 2 4
- 022071 SPECTRAL PEAK WAVE PERIOD S 1 0 9 S 1 3
- 022072 SPECTRAL PEAK WAVE LENGTH M 0 0 13 M 0 4
- 022073 MAXIMUM WAVE HEIGHT M 2 0 13 M 2 4
- 022074 AVERAGE WAVE PERIOD S 1 0 9 S 1 3
- 022075 AVERAGE WAVE LENGTH M 0 0 13 M 0 4
- 022076 DIRECTION FROM WHICH DOMINANT WAVES ARE COMING DEG 0 0 9 DEG 0 3
- 022077 DIRECTIONAL SPREAD OF DOMINANT WAVE DEG 0 0 9 DEG 0 3
- 022078 DURATION OF WAVE RECORD S 0 0 12 S 0 4
- 022079 LENGTH OF WAVE RECORD M 0 0 16 M 0 5
- 022080 WAVEBAND CENTRAL FREQUENCY HZ 3 0 10 HZ 3 4
- 022081 WAVEBAND CENTRAL WAVE NUMBER M-1 5 0 13 M-1 5 4
- 022082 MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY M2 S 2 0 20 M2 S 2 7
- 022083 MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE NUMBER M3 2 0 20 M3 2 7
- 022084 BAND CONTAINING MAXIMUM NON-DIRECTIONAL SPECTRAL WAVE DENSITY NUMERIC 0 0 7 NUMERIC 0 3
- 022085 SPECTRAL WAVE DENSITY RATIO NUMERIC 0 0 7 NUMERIC 0 3
- 022086 MEAN DIRECTION FROM WHICH WAVES ARE COMING DEG 0 0 9 DEG 0 3
- 022087 PRINCIPAL DIRECTION FROM WHICH WAVES ARE COMING DEG 0 0 9 DEG 0 3
- 022088 FIRST NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS NUMERIC 2 0 7 NUMERIC 2 3
- 022089 SECOND NORMALIZED POLAR COORDINATE FROM FOURIER COEFFICIENTS NUMERIC 2 0 7 NUMERIC 2 3
- 022090 NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY M2 S 2 0 20 M2 S 2 7
- 022091 NON-DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER M3 2 0 20 M3 2 7
- 022092 DIRECTIONAL SPECTRAL ESTIMATE BY WAVE FREQUENCY M2 RAD-1 S 2 0 20 M2 RAD-1 S 2 7
- 022093 DIRECTIONAL SPECTRAL ESTIMATE BY WAVE NUMBER M4 2 0 20 M4 2 7
- 022094 TOTAL NUMBER OF WAVE BANDS NUMERIC 0 0 7 NUMERIC 0 3
- 022095 DIRECTIONAL SPREAD OF INDIVIDUAL WAVES DEG 0 0 8 DEG 0 3
- 022096 SPECTRAL BAND WIDTH S-1 3 0 4 S-1 3 2
- 022097 MEAN WAVELENGTH > 731 M OF IMAGE SPECTRUM AT LOW WAVE NUMBERS M 0 0 14 M 0 5
- 022098 WAVELENGTH SPREAD (WAVELENGTH > 731 M) AT LOW WAVE NUMBERS M 0 0 14 M 0 5
- 022099 MEAN DIRECTION AT LOW WAVE NUMBERS (WAVELENGTH > 731 M) DEG 0 0 9 DEG 0 3
- 022100 DIRECTION SPREAD AT LOW WAVE NUMBERS (WAVELENGTH > 731 M) DEG 0 0 9 DEG 0 3
- 022101 TOTAL ENERGY (WAVELENGTH > 731M) AT LOW WAVE NUMBERS NUMERIC 0 0 31 NUMERIC 0 10
- 022120 TIDE STATION AUTOMATED WATER LEVEL CHECK CODE TABLE 22120 0 0 5 CODE TABLE 22120 0 2
- 022121 TIDE STATION MANUAL WATER LEVEL CHECK CODE TABLE 22121 0 0 5 CODE TABLE 22121 0 2
- 022122 TIDE STATION AUTOMATED METEOROLOGICAL DATA CHECK CODE TABLE 22122 0 0 5 CODE TABLE 22122 0 2
- 022123 TIDE STATION MANUAL METEOROLOGICAL DATA CHECK CODE TABLE 22123 0 0 5 CODE TABLE 22123 0 2
- 022130 NUMBER OF VALID POINTS FOR SPECIFIC BAND NUMERIC 0 0 10 NUMERIC 0 4
- 022131 RMS SPECIFIC BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 M 3 5
- 022132 NUMBER OF VALID POINTS FOR SPECIFIC BAND SIGNIFICANT WAVE HEIGHT NUMERIC 0 0 10 NUMERIC 0 4
- 022133 SPECIFIC BAND NET INSTRUMENT CORRECTION FOR SIGNFICANT WAVE HEIG M 3 -1000 11 M 3 4
- 022134 NUMBER OF VALID POINTS FOR SPECIFIC BAND BACKSCATTER NUMERIC 0 0 10 NUMERIC 0 4
- 022141 SEA-SURFACE TEMPERATURE (15-DAY RUNNING MEAN) K 2 0 15 K 2 5
- 022142 SQUARE OF SIGNIFICANT WAVE HEIGHT M2 3 -33554432 26 M2 3 8
- 022143 STD OF 20 HZ SWH SQUARED M2 3 -8388608 24 M2 3 8
- 022144 NUMBER OF 20 HZ VALID POINTS FOR SWH-SQUARED NUMERIC 0 0 9 NUMERIC 0 3
- 022145 STD OF 20 HZ OCEAN RANGE M 3 -33554432 31 M 3 10
- 022146 OCOG RANGE M 3 0 31 M 3 10
- 022147 STD OF 20 HZ OCOG RANGE M 3 -8388608 31 M 3 10
- 022148 NUMBER OF 20 HZ VALID POINTS FOR OCEAN RANGE NUMERIC 0 0 9 NUMERIC 0 3
- 022149 20 HZ SIGNIFICANT WAVE HEIGHT SQUARED M2 3 -33554432 26 M2 3 8
- 022150 NUMBER OF 18 HZ VALID POINTS FOR KU BAND NUMERIC 0 0 10 NUMERIC 0 4
- 022151 KU BAND OCEAN RANGE M 3 0 31 M 3 10
- 022152 STD OF 18 HZ KU BAND OCEAN RANGE M 3 0 16 M 3 5
- 022153 NUMBER OF 18 HZ VALID POINTS FOR S BAND NUMERIC 0 0 10 NUMERIC 0 4
- 022154 S BAND OCEAN RANGE M 3 0 31 M 3 10
- 022155 STD OF 18 HZ S BAND OCEAN RANGE M 3 0 16 M 3 5
- 022156 KU BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 M 3 5
- 022157 STD OF 18 HZ KU BAND OCEAN RANGE M 3 0 16 M 3 5
- 022158 S BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 M 3 5
- 022159 STD OF 18 HZ S BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 M 3 5
- 022160 NORMALIZED INVERSE WAVE AGE NUMERIC 6 0 21 NUMERIC 6 7
- 022161 WAVE SPECTRA M4 4 0 27 M4 4 9
- 022162 RMS OF 20 HZ KU BAND OCEAN RANGE M 3 0 16 M 3 5
- 022163 NUMBER OF 20 HZ VALID POINTS FOR KU BAND NUMERIC 0 0 10 NUMERIC 0 4
- 022164 RMS 20 HZ KU BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 M 3 5
- 022165 NUMBER OF 20 HZ VALID POINTS FOR KU BAND SIGNIFICANT WAVE HEIGHT NUMERIC 0 0 10 NUMERIC 0 4
- 022166 KU BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT M 3 -1000 11 M 3 4
- 022167 NUMBER OF VALID POINTS FOR KU BAND BACKSCATTER NUMERIC 0 0 10 NUMERIC 0 4
- 022168 C BAND OCEAN RANGE M 3 0 31 M 3 10
- 022169 RMS OF C BAND OCEAN RANGE M 3 0 16 M 3 5
- 022170 NUMBER OF 20 HZ VALID POINTS FOR C BAND NUMERIC 0 0 10 NUMERIC 0 4
- 022171 C BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 M 3 5
- 022172 RMS 20 HZ C BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 M 3 5
- 022173 NUMBER OF 20 HZ VALID POINTS FOR C BAND SIGNIFICANT WAVE HEIGHT NUMERIC 0 0 10 NUMERIC 0 4
- 022174 C BAND NET INSTRUMENTAL CORRECTION FOR SIGNIFICANT WAVE HEIGHT M 3 -1000 11 M 3 4
- 022175 NUMBER OF VALID POINTS FOR C BAND BACKSCATTER NUMERIC 0 0 10 NUMERIC 0 4
- 022177 HEIGHT OF XBT/XCTD LAUNCHER M 0 0 6 M 0 3
- 022178 XBT/XCTD LAUNCHER TYPE CODE TABLE 22178 0 0 8 CODE TABLE 22178 0 3
- 022182 WATER COLUMN HEIGHT M 3 0 23 M 3 7
- 022184 WATER COLUMN HEIGHT DEVIATION FROM THE REFERENCE VALUE M 3 -2000 12 M 3 4
- 022185 BPR TRANSMISSION COUNT NUMERIC 0 0 10 NUMERIC 0 3
- 022188 DISSOLVED OXYGEN UMOL KG-1 3 0 19 UMOL KG-1 3 6
- 022189 SPECIFIC BAND OCEAN RANGE M 3 0 31 M 3 10
- 022190 SPECIFIC BAND SIGNIFICANT WAVE HEIGHT M 3 0 16 M 3 5
- 022191 RMS OF SPECIFIC BAND OCEAN RANGE M 4 0 16 M 4 5
- 022192 SPECTRAL PERIOD S 2 0 13
- 022193 MEAN WAVENUMBER M-1 5 0 15
- 022194 PEAK WAVENUMBER M-1 5 0 15
- 022195 MEAN WAVE PROPAGATION DIRECTION DEG 1 0 13
- 022196 PEAK WAVE PROPAGATION DIRECTION DEG 1 0 13
- 022197 DIRECTION SPREAD DEG 1 0 13
- 022198 VARIANCE SPECTRAL DENSITY M2 RAD-1 S 4 0 18
- 022199 CORRELATION COEFF OF SIMULATED FG AND OBSERVED SAR SPECTRUM NUMERIC 4 -10000 15
- 022200 CORRELATION COEFF OF SIMULATED BF AND OBSERVED SAR SPECTRUM NUMERIC 4 -10000 15
- 022201 CORRELATION COEFF OF OCEAN WAVE FG AND EXTRACTED WAVE SPECTRUM NUMERIC 4 -10000 15
- 022202 ERROR BETWEEN FIRST GUESS AND OBSERVED SAR NUMERIC 5 0 21
- 022203 ERROR BETWEEN SIMULATED AND OBSERVED SAR NUMERIC 5 0 21
- 022204 MEAN PERIOD OF WAVES S 2 0 13
- 022205 SPECTRAL DENSITY M2 RAD-1 S 4 0 25
- 022206 PEAK PERIOD OF WAVES S 2 0 13
- 022207 MEAN WAVE PERIOD S 1 0 10
- 022208 PEAK PERIOD OF 1D SPECTRA S 1 0 10
- 022209 COEFICIENT OF DRAG WITH WAVES NUMERIC 6 0 13
- 022210 MEAN SQUARE SLOPE OF WAVES NUMERIC 4 -10000 14
- 022211 COEFICIENT OF DRAG WITH WAVES NUMERIC 6 0 17
- 022243 STANDARD DEVIATION SIGNIFICANT WAVE HEIGHT M 2 0 10
- 023001 ACCIDENT EARLY NOTIFICATION - ARTICLE APPLICABLE CODE TABLE 23001 0 0 3 CODE TABLE 23001 0 1
- 023002 ACTIVITY OR FACILITY INVOLVED IN INCIDENT CODE TABLE 23002 0 0 5 CODE TABLE 23002 0 2
- 023003 TYPE OF RELEASE CODE TABLE 23003 0 0 3 CODE TABLE 23003 0 1
- 023004 COUNTERMEASURES TAKEN NEAR BORDER CODE TABLE 23004 0 0 3 CODE TABLE 23004 0 1
- 023005 CAUSE OF INCIDENT CODE TABLE 23005 0 0 2 CODE TABLE 23005 0 1
- 023006 INCIDENT SITUATION CODE TABLE 23006 0 0 3 CODE TABLE 23006 0 1
- 023007 CHARACTERISTICS OF RELEASE CODE TABLE 23007 0 0 3 CODE TABLE 23007 0 1
- 023008 STATE OF CURRENT RELEASE CODE TABLE 23008 0 0 2 CODE TABLE 23008 0 1
- 023009 STATE OF EXPECTED RELEASE CODE TABLE 23009 0 0 2 CODE TABLE 23009 0 1
- 023016 POSSIBILITY OF SIGNIFICANT CHEMICAL TOXIC HEALTH EFFECT CODE TABLE 23016 0 0 2 CODE TABLE 23016 0 1
- 023017 FLOW DISCHARGE OF MAJOR RECIPIENT M3 S-1 6 0 20 M3 S-1 6 7
- 023018 RELEASE BEHAVIOUR OVER TIME CODE TABLE 23018 0 0 3 CODE TABLE 23018 0 1
- 023019 ACTUAL RELEASE HEIGHT M 0 -15000 17 M 0 6
- 023021 EFFECTIVE RELEASE HEIGHT M 0 -15000 17 M 0 6
- 023022 DISTANCE OF RELEASE POINT OR SITE OF INCIDENT M 0 0 24 M 0 8
- 023023 MAIN TRANSPORT SPEED IN THE ATMOSPHERE M S-1 1 0 12 M S-1 1 4
- 023024 MAIN TRANSPORT SPEED IN WATER M S-1 2 0 13 M S-1 2 4
- 023025 MAIN TRANSPORT SPEED IN GROUND WATER M S-1 2 0 13 M S-1 2 4
- 023027 MAIN TRANSPORT DIRECTION IN THE ATMOSPHERE DEG 0 0 9 DEG 0 3
- 023028 MAIN TRANSPORT DIRECTION IN WATER DEG 0 0 9 DEG 0 3
- 023029 MAIN TRANSPORT DIRECTION IN GROUND WATER DEG 0 0 9 DEG 0 3
- 023031 POSSIBILITY THAT PLUME WILL ENCOUNTER PRECIPITATION IN STATE IN CODE TABLE 23031 0 0 2 CODE TABLE 23031 0 1
- 023032 PLUME WILL ENCOUNTER CHANGE IN WIND DIRECTION AND/OR SPEED FLAG CODE TABLE 23032 0 0 2 CODE TABLE 23032 0 1
- 023040 FLOW DISCHARGE - RIVER M3 S-1 1 0 22 M3 S-1 1 7
- 023041 FLOW DISCHARGE - WELL M3 S-1 3 0 16 M3 S-1 3 5
- 024001 ESTIMATE OF AMOUNT OF RADIOACTIVITY RELEASED UP TO SPECIFIED TIM BQ -11 0 28 BQ -11 9
- 024002 ESTIMATED MAXIMUM POTENTIAL RELEASE BQ -11 0 28 BQ -11 9
- 024003 COMPOSITION OF RELEASE CODE TABLE 24003 0 0 5 CODE TABLE 24003 0 2
- 024004 ELEMENT NAME CCITTIA5 0 0 16 CHARACTER 0 2
- 024005 ISOTOPE MASS NUMERIC 0 0 9 NUMERIC 0 3
- 024011 DOSE MSV 2 0 32 MSV 2 10
- 024012 TRAJECTORY DOSE (DEFINED LOCATION AND EXPECTED TIME OF ARRIVAL) MSV 2 0 32 MSV 2 10
- 024013 GAMMA DOSE IN AIR ALONG THE MAIN TRANSPORT PATH (DEFINED LOCATIO MSV 2 0 32 MSV 2 10
- 024014 GAMMA RADIATION DOSE RATE NSV H-1 1 0 14 NSV H-1 1 4
- 024021 AIR CONCENTRATION (OF NAMED ISOTOPE TYPE INCLUDING GROSS BETA) BQ M-3 2 0 32 BQ M-3 2 10
- 024022 CONCENTRATION IN PRECIPITATION (OF NAMED ISOTOPE TYPE) BQ L-1 2 0 32 BQ L-1 2 10
- 024023 PULSE RATE OF BETA RADIATION S-1 1 0 14 S-1 1 4
- 024024 PULSE RATE OF GAMMA RADIATION S-1 1 0 14 S-1 1 4
- 025001 RANGE-GATE LENGTH M -1 0 6 M -1 2
- 025002 NUMBER OF GATES AVERAGED NUMERIC 0 0 4 NUMERIC 0 2
- 025003 NUMBER OF INTEGRATED PULSES NUMERIC 0 0 8 NUMERIC 0 3
- 025004 ECHO PROCESSING CODE TABLE 25004 0 0 2 CODE TABLE 25004 0 1
- 025005 ECHO INTEGRATION CODE TABLE 25005 0 0 2 CODE TABLE 25005 0 1
- 025006 Z TO R CONVERSION CODE TABLE 25006 0 0 3 CODE TABLE 25006 0 1
- 025007 Z TO R CONVERSION FACTOR NUMERIC 0 0 12 NUMERIC 0 4
- 025008 Z TO R CONVERSION EXPONENT NUMERIC 2 0 9 NUMERIC 2 3
- 025009 CALIBRATION METHOD FLAG TABLE 25009 0 0 4 FLAG TABLE 25009 0 2
- 025010 CLUTTER TREATMENT CODE TABLE 25010 0 0 4 CODE TABLE 25010 0 2
- 025011 GROUND OCCULTATION CORRECTION (SCREENING) CODE TABLE 25011 0 0 2 CODE TABLE 25011 0 1
- 025012 RANGE ATTENUATION CORRECTION CODE TABLE 25012 0 0 2 CODE TABLE 25012 0 1
- 025013 BRIGHT-BAND CORRECTION FLAG TABLE 25013 0 0 2 FLAG TABLE 25013 0 1
- 025014 AZIMUTH CLUTTER CUT-OFF NUMERIC 0 0 12 NUMERIC 0 4
- 025015 RADOME ATTENUATION CORRECTION FLAG TABLE 25015 0 0 2 FLAG TABLE 25015 0 1
- 025016 CLEAR-AIR ATTENUATION CORRECTION DB M-1 5 0 6 DB M-1 5 2
- 025017 PRECIPITATION ATTENUATION CORRECTION FLAG TABLE 25017 0 0 2 FLAG TABLE 25017 0 1
- 025018 A TO Z LAW FOR ATTENUATION FACTOR NUMERIC 7 0 6 NUMERIC 7 2
- 025019 A TO Z LAW FOR ATTENUATION EXPONENT NUMERIC 2 0 7 NUMERIC 2 3
- 025020 MEAN SPEED ESTIMATION CODE TABLE 25020 0 0 2 CODE TABLE 25020 0 1
- 025021 WIND COMPUTATION ENHANCEMENT FLAG TABLE 25021 0 0 8 FLAG TABLE 25021 0 3
- 025022 GHRSST REJECTION FLAG FLAG TABLE 25022 0 0 9 FLAG TABLE 25022 0 3
- 025023 GHRSST CONFIDENCE FLAG FLAG TABLE 25023 0 0 9 FLAG TABLE 25023 0 3
- 025024 GHRSST DATA QUALITY CODE TABLE 25024 0 0 4 CODE TABLE 25024 0 2
- 025025 BATTERY VOLTAGE V 1 0 9 V 1 3
- 025026 BATTERY VOLTAGE (LARGE RANGE) V 1 0 12 V 1 4
- 025028 OPERATOR OR MANUFACTURER DEFINED PARAMETER NUMERIC 1 -16384 15 NUMERIC 1 5
- 025029 CALIBRATION METHOD FLAG TABLE 25029 0 0 6 FLAG TABLE 25029 0 2
- 025030 RUNNING MEAN SEA-SURFACE TEMPERATURE USAGE CODE TABLE 25030 0 0 2 CODE TABLE 25030 0 1
- 025031 NWP-GENERATED VERTICAL PROFILE THINNING METHOD CODE TABLE 25031 0 0 3 CODE TABLE 25031 0 1
- 025032 WIND PROFILER MODE INFORMATION CODE TABLE 25032 0 0 2 CODE TABLE 25032 0 1
- 025033 WIND PROFILER SUBMODE INFORMATION CODE TABLE 25033 0 0 2 CODE TABLE 25033 0 1
- 025034 WIND PROFILER QUALITY CONTROL TEST RESULTS FLAG TABLE 25034 0 0 4 FLAG TABLE 25034 0 2
- 025035 DECISION METHOD FOR POLARITY CODE TABLE 25035 0 0 3 CODE TABLE 25035 0 1
- 025036 ATMOSPHERICS LOCATION METHOD CODE TABLE 25036 0 0 4 CODE TABLE 25036 0 2
- 025037 SST BIAS K 2 -127 8 K 2 3
- 025038 DIFFERENCE BETWEEN SST AND ANALYSIS K 1 -127 8 K 1 3
- 025040 CO2 WIND PRODUCT DERIVATION CODE TABLE 25040 0 0 4 CODE TABLE 25040 0 2
- 025041 MOVING PLATFORM DIRECTION REPORTING METHOD CODE TABLE 25041 0 0 2 CODE TABLE 25041 0 1
- 025042 MOVING PLATFORM SPEED REPORTING METHOD CODE TABLE 25042 0 0 2 CODE TABLE 25042 0 1
- 025043 WAVE SAMPLING INTERVAL (TIME) S 4 0 15 S 4 5
- 025044 WAVE SAMPLING INTERVAL (SPACE) M 2 0 14 M 2 5
- 025045 HIRS CHANNEL COMBINATION FLAG TABLE 25045 0 0 21 FLAG TABLE 25045 0 7
- 025046 MSU CHANNEL COMBINATION FLAG TABLE 25046 0 0 5 FLAG TABLE 25046 0 2
- 025047 SSU CHANNEL COMBINATION FLAG TABLE 25047 0 0 4 FLAG TABLE 25047 0 2
- 025048 AMSU-A CHANNEL COMBINATION FLAG TABLE 25048 0 0 16 FLAG TABLE 25048 0 6
- 025049 AMSU-B CHANNEL COMBINATION FLAG TABLE 25049 0 0 6 FLAG TABLE 25049 0 2
- 025050 PRINCIPAL COMPONENT SCORE NUMERIC 4 -131072 18 NUMERIC 4 6
- 025051 AVHRR CHANNEL COMBINATION FLAG TABLE 25051 0 0 7 FLAG TABLE 25051 0 3
- 025052 LOG10 OF PRINCIPAL COMPONENTS NORMALIZED FIT TO DATA NUMERIC 4 0 15 NUMERIC 4 5
- 025053 OBSERVATION QUALITY FLAG TABLE 25053 0 0 12 FLAG TABLE 25053 0 4
- 025054 SSMIS SUBFRAME ID NUMBER NUMERIC 0 0 5 NUMERIC 0 2
- 025055 MULTIPLEXER HOUSEKEEPING K 2 0 16 K 2 5
- 025060 SOFTWARE IDENTIFICATION NUMERIC 0 0 14 NUMERIC 0 5
- 025061 SOFTWARE IDENTIFICATION AND VERSION NUMBER CCITTIA5 0 0 96 CHARACTER 0 12
- 025062 DATABASE IDENTIFICATION NUMERIC 0 0 14 NUMERIC 0 5
- 025063 CENTRAL PROCESSOR OR SYSTEM IDENTIFIER CODE TABLE 25063 0 0 8 CODE TABLE 25063 0 3
- 025065 ORIENTATION CORRECTION (AZIMUTH) DEG 2 -1000 11 DEG 2 4
- 025066 ORIENTATION CORRECTION (ELEVATION) DEG 2 -1000 11 DEG 2 4
- 025067 RADIOSONDE RELEASE POINT PRESSURE CORRECTION PA 0 -8000 14 PA 0 4
- 025068 NUMBER OF ARCHIVE RECOMPUTES NUMERIC 0 0 7 NUMERIC 0 3
- 025069 FLIGHT LEVEL PRESSURE CORRECTIONS FLAG TABLE 25069 0 0 8 FLAG TABLE 25069 0 3
- 025070 MAJOR FRAME COUNT NUMERIC 0 0 4 NUMERIC 0 2
- 025071 FRAME COUNT NUMERIC 0 0 5 NUMERIC 0 2
- 025075 SATELLITE ANTENNA CORRECTIONS VERSION NUMBER NUMERIC 0 0 5 NUMERIC 0 2
- 025076 LOG10 OF (TEMPERATURE-RADIANCE CENTRAL WAVE NUMBER) FOR ATOVS LOG (M-1) 8 0 30 LOG (M-1) 8 10
- 025077 BANDWIDTH CORRECTION COEFFICIENT 1 FOR ATOVS NUMERIC 5 -100000 18 NUMERIC 5 7
- 025078 BANDWIDTH CORRECTION COEFFICIENT 2 FOR ATOVS NUMERIC 5 0 17 NUMERIC 5 6
- 025079 ALBEDO-RADIANCE SOLAR FILTERED IRRADIANCE FOR ATOVS W M-2 4 0 24 W M-2 4 8
- 025080 ALBEDO-RADIANCE EQUIVALENT FILTER WIDTH FOR ATOVS M 10 0 14 M 10 5
- 025081 INCIDENCE ANGLE DEG 3 0 17 DEG 3 6
- 025082 AZIMUTH ANGLE DEG 3 0 19 DEG 3 6
- 025083 FARADAY ROTATIONAL ANGLE DEG 3 0 19 DEG 3 6
- 025084 GEOMETRIC ROTATIONAL ANGLE DEG 5 0 26 DEG 5 8
- 025085 FRACTION OF CLEAR PIXELS IN HIRS FOV NUMERIC 0 0 7 NUMERIC 0 3
- 025086 DEPTH CORRECTION INDICATOR CODE TABLE 25086 0 0 2 CODE TABLE 25086 0 1
- 025090 ORBIT STATE FLAG CODE TABLE 25090 0 0 4 CODE TABLE 25090 0 2
- 025091 STRUCTURE CONSTANT OF THE REFRACTION INDEX (CN2) DB 3 -18192 13 DB 3 5
- 025092 ACOUSTIC PROPAGATION VELOCITY M S-1 2 28000 14 M S-1 2 5
- 025093 RASS COMPUTATION CORRECTION FLAG TABLE 25093 0 0 8 FLAG TABLE 25093 0 3
- 025095 ALTIMETER STATE FLAG FLAG TABLE 25095 0 0 2 FLAG TABLE 25095 0 1
- 025096 RADIOMETER STATE FLAG FLAG TABLE 25096 0 0 5 FLAG TABLE 25096 0 2
- 025097 THREE-DIMENSIONAL ERROR ESTIMATE OF THE NAVIGATOR ORBIT CODE TABLE 25097 0 0 4 CODE TABLE 25097 0 2
- 025098 ALTIMETER DATA QUALITY FLAG FLAG TABLE 25098 0 0 9 FLAG TABLE 25098 0 3
- 025099 ALTIMETER CORRECTION QUALITY FLAG FLAG TABLE 25099 0 0 9 FLAG TABLE 25099 0 3
- 025100 XBT/XCTD FALL RATE EQUATION COEFFICIENT A NUMERIC 5 0 20 NUMERIC 5 6
- 025101 XBT/XCTD FALL RATE EQUATION COEFFICIENT B NUMERIC 5 -500000 21 NUMERIC 5 6
- 025102 NUMBER OF MISSING LINES EXCLUDING DATA GAPS NUMERIC 0 0 8 NUMERIC 0 3
- 025103 NUMBER OF DIRECTIONAL BINS NUMERIC 0 0 8 NUMERIC 0 3
- 025104 NUMBER OF WAVELENGTH BINS NUMERIC 0 0 8 NUMERIC 0 3
- 025105 FIRST DIRECTIONAL BIN DEG 3 0 19 DEG 3 6
- 025106 DIRECTIONAL BIN STEP DEG 3 0 19 DEG 3 6
- 025107 FIRST WAVELENGTH BIN M 3 0 29 M 3 9
- 025108 LAST WAVELENGTH BIN M 3 0 29 M 3 9
- 025110 IMAGE PROCESSING SUMMARY FLAG TABLE 25110 0 0 10 FLAG TABLE 25110 0 4
- 025111 NUMBER OF INPUT DATA GAPS NUMERIC 0 0 8 NUMERIC 0 3
- 025112 BAND SPECIFIC ALTIMETER DATA QUALITY FLAG FLAG TABLE 25112 0 0 9 FLAG TABLE 25112 0 3
- 025113 BAND SPECIFIC ALTIMETER CORRECTION QUALITY FLAG FLAG TABLE 25113 0 0 9 FLAG TABLE 25113 0 3
- 025120 RA2-L2-PROCESSING FLAG CODE TABLE 25120 0 0 2 CODE TABLE 25120 0 1
- 025121 RA2-L2-PROCESSING QUALITY % 0 0 7 % 0 3
- 025122 HARDWARE CONFIGURATION FOR RF CODE TABLE 25122 0 0 2 CODE TABLE 25122 0 1
- 025123 HARDWARE CONFIGURATION FOR HPA CODE TABLE 25123 0 0 2 CODE TABLE 25123 0 1
- 025124 MWR-L2-PROCESSING FLAG CODE TABLE 25124 0 0 2 CODE TABLE 25124 0 1
- 025125 MWR-L2-PROCESSING QUALITY % 0 0 7 % 0 3
- 025126 MODEL DRY TROPOSPHERIC CORRECTION M 3 -32768 16 M 3 5
- 025127 INVERTED BAROMETER CORRECTION M 3 -32768 16 M 3 5
- 025128 MODEL WET TROPOSPHERIC CORRECTION M 3 -32768 16 M 3 5
- 025129 MWR DERIVED WET TROPOSPHERIC CORRECTION M 3 -32768 16 M 3 5
- 025130 RA2 IONOSPHERIC CORRECTION ON KU BAND M 3 -32768 16 M 3 5
- 025131 IONOSPHERIC CORRECTION FROM DORIS ON KU BAND M 3 -32768 16 M 3 5
- 025132 IONOSPHERIC CORRECTION FROM MODEL ON KU BAND M 3 -32768 16 M 3 5
- 025133 SEA STATE BIAS CORRECTION ON KU BAND M 3 -32768 16 M 3 5
- 025134 RA2 IONOSPHERIC CORRECTION ON S BAND M 3 -32768 16 M 3 5
- 025135 IONOSPHERIC CORRECTION FROM DORIS ON S BAND M 3 -32768 16 M 3 5
- 025136 IONOSPHERIC CORRECTION FROM MODEL ON S BAND M 3 -32768 16 M 3 5
- 025137 SEA STATE BIAS CORRECTION ON S BAND M 3 -32768 16 M 3 5
- 025138 AVERAGE SIGNAL-TO-NOISE RATIO NUMERIC 0 -2048 12 NUMERIC 0 4
- 025140 START CHANNEL NUMERIC 0 0 14 NUMERIC 0 5
- 025141 END CHANNEL NUMERIC 0 0 14 NUMERIC 0 5
- 025142 CHANNEL SCALE FACTOR NUMERIC 0 0 6 NUMERIC 0 2
- 025143 LINEAR COEFFICIENT NUMERIC 6 -5000000 24 NUMERIC 6 8
- 025150 METHOD OF TROPICAL CYCLONE INTENSITY ANALYSIS USING SATELLITE DA CODE TABLE 25150 0 0 4 CODE TABLE 25150 0 2
- 025160 KU BAND NET INSTRUMENTAL CORRECTION M 4 -120000 18 M 4 6
- 025161 C BAND NET INSTRUMENTAL CORRECTION M 4 -120000 18 M 4 6
- 025162 SEA STATE BIAS CORRECTION ON C BAND M 4 -6000 13 M 4 4
- 025163 ALTIMETER IONOSPHERIC CORRECTION ON KU BAND M 3 -32768 16 M 3 5
- 025164 RADIOMETER WET TROPOSPHERIC CORRECTION M 4 -5000 13 M 4 4
- 025165 IONOSPHERIC CORRECTION FROM MODEL ON SPECIFIC BAND M 4 -32768 16 M 4 5
- 025166 SEA STATE BIAS CORRECTION ON SPECIFIC BAND M 4 -32768 16 M 4 5
- 025167 SPECIFIC BAND NET INSTRUMENTAL CORRECTION M 4 -120000 18 M 4 6
- 025170 SAMPLING INTERVAL (TIME) S 0 0 10 S 0 4
- 025171 SAMPLE AVERAGING PERIOD S 0 0 10 S 0 4
- 025172 NUMBER OF SAMPLES NUMERIC 0 0 10 NUMERIC 0 4
- 025174 SMOS INFORMATION FLAG FLAG TABLE 25174 0 0 14 FLAG TABLE 25174 0 5
- 025175 MODIFIED RESIDUAL NUMERIC 2 0 13 NUMERIC 2 4
- 025180 LRM PER CENT % 2 0 16 % 2 5
- 025181 L2 PROCESSING FLAG CODE TABLE 25181 0 0 2 CODE TABLE 25181 0 1
- 025182 L1 PROCESSING FLAG CODE TABLE 25182 0 0 2 CODE TABLE 25182 0 1
- 025183 L1 PROCESSING QUALITY % 2 0 14 % 2 5
- 025184 L2 PRODUCT STATUS CODE TABLE 25184 0 0 2 CODE TABLE 25184 0 1
- 025193 ATTENUATION CORRECTION ON SIGMA0 DB 3 0 14
- 025194 MAJOR FRAME COUNT NUMERIC 0 0 4
- 025197 ANTENNA CORRECTIONS VERSION NUMBER NUMERIC 0 0 5
- 025198 LOG (TEMP-RAD CENTRAL WAVE NUMBER) M-1 8 0 30
- 025199 BANDWIDTH CORRECTION COEFFICIENT 1 NUMERIC 4 -10000 15
- 025200 BANDWIDTH CORRECTION COEFFICIENT 2 NUMERIC 5 0 17
- 025201 ALBEDO-RAD SOLAR FILTERED IRRADIANCE NUMERIC 4 0 24
- 025202 ALBEDO-RAD EQUIVALENT FILTER WIDTH NUMERIC 10 0 14
- 025203 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 25203 0 0 31
- 025204 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 25204 0 0 31
- 025205 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 25205 0 0 31
- 025206 FOV QUALITY FLAGS FOR ATOVS FLAG TABLE 25206 0 0 31
- 025207 COMPASS AZIMUTH ANGLE DEG 2 0 16
- 026001 PRINCIPAL TIME OF DAILY READING IN UTC OF MAXIMUM TEMPERATURE H 1 0 12 H 1 3
- 026002 PRINCIPAL TIME OF DAILY READING IN UTC OF MINIMUM TEMPERATURE H 1 0 12 H 1 3
- 026003 TIME DIFFERENCE MIN 0 -1440 12 MIN 0 4
- 026010 HOURS INCLUDED FLAG TABLE 26010 0 0 26 FLAG TABLE 26010 0 9
- 026020 DURATION OF PRECIPITATION MIN 0 0 11 MIN 0 4
- 026021 YEAR A 0 0 12 A 0 4
- 026022 MONTH MON 0 0 4 MON 0 2
- 026023 DAY D 0 0 6 D 0 2
- 026030 MEASUREMENT INTEGRATION TIME S 2 0 8 S 2 3
- 026193 YEAR A 0 0 12
- 026194 MONTH MON 0 0 4
- 026195 DAY D 0 0 6
- 026196 HOUR H 0 0 5
- 026197 MINUTE MIN 0 0 6
- 026198 SECOND S 0 0 6
- 026200 LOCATION WITHIN ASSIMILATION WINDOW IN TIME NUMERIC 6 0 20
- 026201 HOURS INCLUDED FLAG TABLE 26201 0 0 26
- 027001 LATITUDE (HIGH ACCURACY) DEG 5 -9000000 25 DEG 5 7
- 027002 LATITUDE (COARSE ACCURACY) DEG 2 -9000 15 DEG 2 4
- 027003 ALTERNATE LATITUDE (COARSE ACCURACY) DEG 2 -9000 15 DEG 2 4
- 027004 ALTERNATE LATITUDE (HIGH ACCURACY) DEG 5 -9000000 25 DEG 5 7
- 027010 FOOTPRINT AXIS 1 M -1 0 14 M -1 5
- 027020 SATELLITE LOCATION COUNTER NUMERIC 0 0 16 NUMERIC 0 5
- 027021 SATELLITE SUBLOCATION DIMENSION NUMERIC 0 0 16 NUMERIC 0 5
- 027031 IN DIRECTION OF 0 DEGREES LONGITUDE, DISTANCE FROM THE EARTH'S C M 2 -1073741824 31 M 2 10
- 027080 VIEWING AZIMUTH ANGLE DEG 2 0 16 DEG 0 5
- 027193 SOLAR AZIMUTH DEG 2 0 16
- 028001 LONGITUDE (HIGH ACCURACY) DEG 5 -18000000 26 DEG 5 8
- 028002 LONGITUDE (COARSE ACCURACY) DEG 2 -18000 16 DEG 2 5
- 028003 ALTERNATE LONGITUDE (COARSE ACCURACY) DEG 2 -18000 16 DEG 2 5
- 028004 ALTERNATE LONGITUDE (HIGH ACCURACY) DEG 5 -18000000 26 DEG 5 8
- 028010 FOOTPRINT AXIS 2 M -1 0 14 M -1 5
- 028031 IN DIRECTION 90 DEGREES EAST, DISTANCE FROM THE EARTH'S CENTRE M 2 -1073741824 31 M 2 10
- 029001 PROJECTION TYPE CODE TABLE 29001 0 0 3 CODE TABLE 29001 0 1
- 029002 COORDINATE GRID TYPE CODE TABLE 29002 0 0 3 CODE TABLE 29002 0 1
- 030001 PIXEL VALUE (4 BITS) NUMERIC 0 0 4 NUMERIC 0 2
- 030002 PIXEL VALUE (8 BITS) NUMERIC 0 0 8 NUMERIC 0 3
- 030004 PIXEL VALUE (16 BITS) NUMERIC 0 0 16 NUMERIC 0 5
- 030010 NUMBER OF GRID POINTS NUMERIC 0 0 13 NUMERIC 0 4
- 030021 NUMBER OF PIXELS PER ROW NUMERIC 0 0 12 NUMERIC 0 4
- 030022 NUMBER OF PIXELS PER COLUMN NUMERIC 0 0 12 NUMERIC 0 4
- 030031 PICTURE TYPE CODE TABLE 30031 0 0 4 CODE TABLE 30031 0 2
- 030032 COMBINATION WITH OTHER DATA FLAG TABLE 30032 0 0 16 FLAG TABLE 30032 0 6
- 030033 NUMBER OF BINS ALONG THE RADIAL NUMERIC 0 0 12 NUMERIC 0 4
- 030034 NUMBER OF AZIMUTHS NUMERIC 0 0 12 NUMERIC 0 4
- 030193 POSITION NUMBER ALONG SCAN NUMERIC 0 0 8
- 031000 SHORT DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 1
- 031001 DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 8
- 031002 EXTENDED DELAYED DESCRIPTOR REPLICATION FACTOR NUMERIC 0 0 16
- 031011 DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 8
- 031012 EXTENDED DELAYED DESCRIPTOR AND DATA REPETITION FACTOR NUMERIC 0 0 16
- 031021 ASSOCIATED FIELD SIGNIFICANCE CODE TABLE 31021 0 0 6
- 031031 DATA PRESENT INDICATOR FLAG TABLE 31031 0 0 1
- 031192 DATA PRESENT INDICATOR NUMERIC 0 0 1
- 033002 QUALITY INFORMATION CODE TABLE 33002 0 0 2 CODE TABLE 33002 0 1
- 033003 QUALITY INFORMATION CODE TABLE 33003 0 0 3 CODE TABLE 33003 0 1
- 033005 QUALITY INFORMATION (AWS DATA) FLAG TABLE 33005 0 0 30 FLAG TABLE 33005 0 10
- 033006 INTERNAL MEASUREMENT STATUS INFORMATION (AWS) CODE TABLE 33006 0 0 3 CODE TABLE 33006 0 1
- 033007 PER CENT CONFIDENCE % 0 0 7 % 0 3
- 033015 DATA QUALITY-CHECK INDICATOR CODE TABLE 33015 0 0 6 CODE TABLE 33015 0 2
- 033020 QUALITY CONTROL INDICATION OF FOLLOWING VALUE CODE TABLE 33020 0 0 3 CODE TABLE 33020 0 1
- 033021 QUALITY OF FOLLOWING VALUE CODE TABLE 33021 0 0 2 CODE TABLE 33021 0 1
- 033022 QUALITY OF BUOY SATELLITE TRANSMISSION CODE TABLE 33022 0 0 2 CODE TABLE 33022 0 1
- 033023 QUALITY OF BUOY LOCATION CODE TABLE 33023 0 0 2 CODE TABLE 33023 0 1
- 033024 STATION ELEVATION QUALITY MARK (FOR MOBILE STATIONS) CODE TABLE 33024 0 0 4 CODE TABLE 33024 0 2
- 033025 ACARS INTERPOLATED VALUES INDICATOR CODE TABLE 33025 0 0 3 CODE TABLE 33025 0 1
- 033026 MOISTURE QUALITY CODE TABLE 33026 0 0 6 CODE TABLE 33026 0 2
- 033027 LOCATION QUALITY CLASS (RANGE OF RADIUS OF 66 % CONFIDENCE) CODE TABLE 33027 0 0 3 CODE TABLE 33027 0 1
- 033028 SNAPSHOT OVERALL QUALITY CODE TABLE 33028 0 0 3 CODE TABLE 33028 0 1
- 033030 SCAN LINE STATUS FLAGS FOR ATOVS FLAG TABLE 33030 0 0 24 FLAG TABLE 33030 0 8
- 033031 SCAN LINE QUALITY FLAGS FOR ATOVS FLAG TABLE 33031 0 0 24 FLAG TABLE 33031 0 8
- 033032 CHANNEL QUALITY FLAGS FOR ATOVS FLAG TABLE 33032 0 0 24 FLAG TABLE 33032 0 8
- 033033 FIELD OF VIEW QUALITY FLAGS FOR ATOVS FLAG TABLE 33033 0 0 24 FLAG TABLE 33033 0 8
- 033035 MANUAL/AUTOMATIC QUALITY CONTROL CODE TABLE 33035 0 0 4 CODE TABLE 33035 0 2
- 033036 NOMINAL CONFIDENCE THRESHOLD % 0 0 7 % 0 3
- 033037 WIND CORRELATION ERROR FLAG TABLE 33037 0 0 20 FLAG TABLE 33037 0 7
- 033038 QUALITY FLAGS FOR GROUND-BASED GNSS DATA FLAG TABLE 33038 0 0 10 FLAG TABLE 33038 0 4
- 033039 QUALITY FLAGS FOR RADIO OCCULTATION DATA FLAG TABLE 33039 0 0 16 FLAG TABLE 33039 0 6
- 033040 CONFIDENCE INTERVAL % 0 0 7 % 0 3
- 033041 ATTRIBUTE OF FOLLOWING VALUE CODE TABLE 33041 0 0 2 CODE TABLE 33041 0 1
- 033042 TYPE OF LIMIT REPRESENTED BY FOLLOWING VALUE CODE TABLE 33042 0 0 3 CODE TABLE 33042 0 1
- 033043 AST CONFIDENCE FLAG TABLE 33043 0 0 8 FLAG TABLE 33043 0 3
- 033044 ASAR QUALITY INFORMATION FLAG TABLE 33044 0 0 15 FLAG TABLE 33044 0 5
- 033045 PROBABILITY OF FOLLOWING EVENT % 0 0 7 % 0 3
- 033046 CONDITIONAL PROBABILITY OF FOLLOWING EVENT WITH RESPECT TO SPECI % 0 0 7 % 0 3
- 033047 MEASUREMENT CONFIDENCE DATA FLAG TABLE 33047 0 0 31 FLAG TABLE 33047 0 11
- 033048 CONFIDENCE MEASURE OF SAR INVERSION CODE TABLE 33048 0 0 2 CODE TABLE 33048 0 1
- 033049 CONFIDENCE MEASURE OF WIND RETRIEVAL CODE TABLE 33049 0 0 2 CODE TABLE 33049 0 1
- 033050 GLOBAL GTSPP QUALITY FLAG CODE TABLE 33050 0 0 4 CODE TABLE 33050 0 2
- 033052 S BAND OCEAN RETRACKING QUALITY FLAG TABLE 33052 0 0 21 FLAG TABLE 33052 0 7
- 033053 KU BAND OCEAN RETRACKING QUALITY FLAG TABLE 33053 0 0 21 FLAG TABLE 33053 0 7
- 033060 GQISFLAGQUAL - INDIVIDUAL IASI-SYSTEM QUALITY FLAG CODE TABLE 33060 0 0 2 CODE TABLE 33060 0 1
- 033061 GQISQUALINDEX - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (CONT % 0 0 7 % 0 3
- 033062 GQISQUALINDEXLOC - INDICATOR FOR GEOMETRIC QUALITY INDEX % 0 0 7 % 0 3
- 033063 GQISQUALINDEXRAD - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE (C % 0 0 7 % 0 3
- 033064 GQISQUALINDEXSPECT - INDICATOR FOR INSTRUMENT NOISE PERFORMANCE % 0 0 7 % 0 3
- 033065 GQISSYSTECSONDQUAL - OUTPUT OF SYSTEM TEC (TECHNICAL EXPERTISE C NUMERIC 0 0 24 NUMERIC 0 8
- 033070 TOTAL OZONE QUALITY CODE TABLE 33070 0 0 4 CODE TABLE 33070 0 2
- 033071 PROFILE OZONE QUALITY CODE TABLE 33071 0 0 4 CODE TABLE 33071 0 2
- 033072 OZONE ERROR CODE TABLE 33072 0 0 5 CODE TABLE 33072 0 2
- 033075 SCAN-LEVEL QUALITY FLAGS FLAG TABLE 33075 0 0 13 FLAG TABLE 33075 0 5
- 033076 CALIBRATION QUALITY FLAGS FLAG TABLE 33076 0 0 9 FLAG TABLE 33076 0 3
- 033077 FIELD-OF-VIEW QUALITY FLAGS FLAG TABLE 33077 0 0 19 FLAG TABLE 33077 0 7
- 033078 GEOLOCATION QUALITY CODE TABLE 33078 0 0 4 CODE TABLE 33078 0 2
- 033079 GRANULE LEVEL QUALITY FLAGS FLAG TABLE 33079 0 0 16 FLAG TABLE 33079 0 6
- 033080 SCAN LEVEL QUALITY FLAGS FLAG TABLE 33080 0 0 20 FLAG TABLE 33080 0 7
- 033081 CHANNEL DATA QUALITY FLAGS FLAG TABLE 33081 0 0 12 FLAG TABLE 33081 0 4
- 033082 GEOLOCATION QUALITY FLAGS FLAG TABLE 33082 0 0 16 FLAG TABLE 33082 0 6
- 033083 RADIANCE DATA QUALITY FLAGS FLAG TABLE 33083 0 0 16 FLAG TABLE 33083 0 6
- 033084 PIXEL LEVEL QUALITY FLAGS FLAG TABLE 33084 0 0 16 FLAG TABLE 33084 0 6
- 033085 AEROSOL OPTICAL THICKNESS QUALITY FLAGS FLAG TABLE 33085 0 0 18 FLAG TABLE 33085 0 6
- 033086 QUALITY OF PIXEL LEVEL RETRIEVAL CODE TABLE 33086 0 0 3 CODE TABLE 33086 0 1
- 033087 EXTENT OF SATELLITE WITHIN SOUTH ATLANTIC ANOMALY (BASED ON CLIM CODE TABLE 33087 0 0 4 CODE TABLE 33087 0 1
- 033088 OZONE TOTAL COLUMN QUALITY FLAG FLAG TABLE 33088 0 0 18 FLAG TABLE 33088 0 6
- 033192 TEM1 CONFIDENCE % 0 0 7
- 033193 DATA QUALITY 3 BIT CODE CODE TABLE 33193 0 0 3
- 033194 DATA QUALITY 2 BIT CODE CODE TABLE 33194 0 0 2
- 033195 ECMWF SAR QC INDICATOR CODE TABLE 33195 0 0 5
- 033196 ECMWF WAM QC INDICATOR CODE TABLE 33196 0 0 2
- 033197 ECMWF SAR INVERSION QC INDICATOR CODE TABLE 33197 0 0 3
- 033198 MINIMUM COST NUMERIC 4 0 14
- 033199 1D VAR TOTAL PRECIPITABLE WATER RETRIEVED ERROR(S) KG M-2 2 0 11
- 033200 ANALYSIS REPORT EVENTS FLAG TABLE 33200 0 0 31
- 033201 ANALYSIS REPORT STATUS EVENT FLAG TABLE 33201 0 0 13
- 033202 ANALYSIS DATUM EVENT FLAGS (1) FLAG TABLE 33202 0 0 31
- 033203 ANALYSIS DATUM EVENT FLAGS (2) FLAG TABLE 33203 0 0 11
- 033204 ANALYSIS DATUM STATUS FLAGS FLAG TABLE 33204 0 0 21
- 033205 VARIATIONAL ANALYSIS BLACK LIST FLAG CODE TABLE 33205 0 0 4
- 033206 VARIATIONAL ANALYSIS QUALITY CONTROL FLAG CODE TABLE 33206 0 0 4
- 033207 VARIATIONAL ANALYSIS DEPARTURE FLAG CODE TABLE 33207 0 0 4
- 033208 VARIATIONAL ANALYSIS FIRST QUESS CHECK FLAG CODE TABLE 33208 0 0 4
- 033209 VARIATIONAL ANALYSIS FINAL FLAG CODE TABLE 33209 0 0 4
- 033210 INCREMENTAL VARIATIONAL ANALYSIS UPDATE NUMBER NUMERIC 0 0 7
- 033211 MINIMISATION SIMULATION NUMBER NUMERIC 0 0 10
- 033212 1D VAR ITERATION NUMBER NUMERIC 0 0 10
- 033213 1D VAR RADIANCE COST NUMERIC 1 -1000 11
- 033214 1D VAR ERROR(S) FLAG TABLE 33214 0 0 11
- 033215 DIRECTIONAL SKILL NUMERIC 1 -4096 13
- 033216 1D VAR SURFACE TYPE QUALITY CONTROL CODE TABLE 33216 0 0 3
- 033217 1D VAR FAILURE INDICATOR CODE TABLE 33217 0 0 2
- 033218 1D VAR ESTIMATE OF SCATTERING NUMERIC 2 0 12
- 033219 SSMI INDIPENDENT SCATTERING INDEX NUMERIC 2 -50000 16
- 033220 VARIATIONAL ANALYSIS REPORT EVENTS (1) FLAG TABLE 33220 0 0 31
- 033221 VARIATIONAL ANALYSIS SYNOP EVENTS (2) FLAG TABLE 33221 0 0 31
- 033222 VARIATIONAL ANALYSIS AIREP EVENTS (2) FLAG TABLE 33222 0 0 31
- 033223 VARIATIONAL ANALYSIS SATOB EVENTS (2) FLAG TABLE 33223 0 0 31
- 033224 VARIATIONAL ANALYSIS DRIBU EVENTS (2) FLAG TABLE 33224 0 0 31
- 033225 VARIATIONAL ANALYSIS TEMP EVENTS (2) FLAG TABLE 33225 0 0 31
- 033226 VARIATIONAL ANALYSIS PILOT EVENTS (2) FLAG TABLE 33226 0 0 31
- 033227 VARIATIONAL ANALYSIS SATEM/TOVS EVENTS (2) FLAG TABLE 33227 0 0 31
- 033228 VARIATIONAL ANALYSIS PAOB EVENTS (2) FLAG TABLE 33228 0 0 31
- 033229 VARIATIONAL ANALYSIS SCATTEROMETER EVENTS (2) FLAG TABLE 33229 0 0 31
- 033230 VARIATIONAL ANALYSIS RAW RADIANCES EVENTS (2) FLAG TABLE 33230 0 0 31
- 033231 PRESAT SUMMARY FLAGS FLAG TABLE 33231 0 0 6
- 033232 REPORT BLACK LIST EVENTS FLAG TABLE 33232 0 0 31
- 033233 VARIATIONAL ANALYSIS REPORT STATUS FLAG TABLE 33233 0 0 31
- 033234 VARIATIONAL ANALYSIS DATUM STATUS FLAG TABLE 33234 0 0 31
- 033236 VARIATIONAL ANALYSIS DATUM EVENTS (1) FLAG TABLE 33236 0 0 31
- 033237 VARIATIONAL ANALYSIS SYNOP DATUM EVENTS (2) FLAG TABLE 33237 0 0 31
- 033238 VARIATIONAL ANALYSIS AIREP DATUM EVENTS (2) FLAG TABLE 33238 0 0 31
- 033239 VARIATIONAL ANALYSIS SATOB DATUM EVENTS (2) FLAG TABLE 33239 0 0 31
- 033240 VARIATIONAL ANALYSIS DRIBU DATUM EVENTS (2) FLAG TABLE 33240 0 0 31
- 033241 GROSS ERROR PROBABILITY NUMERIC 3 0 10
- 033242 GROSS ERROR INDICATOR CODE TABLE 33242 0 0 2
- 033243 VARIATIONAL ANALYSIS TEMP DATUM EVENTS (2) FLAG TABLE 33243 0 0 31
- 033244 VARIATIONAL ANALYSIS PILOT DATUM EVENTS (2) FLAG TABLE 33244 0 0 31
- 033245 VARIATIONAL ANALYSIS SATEM/TOVS DATUM EVENTS (2) FLAG TABLE 33245 0 0 31
- 033246 VARIATIONAL ANALYSIS PAOB DATUM EVENTS (2) FLAG TABLE 33246 0 0 31
- 033247 VARIATIONAL ANALYSIS SCATTEROMETER DATUM EVENTS (2) FLAG TABLE 33247 0 0 31
- 033248 VARIATIONAL ANALYSIS RAW RADIANCES DATUM EVENTS (2) FLAG TABLE 33248 0 0 31
- 033249 DATUM BLACK LIST EVENTS FLAG TABLE 33249 0 0 31
- 033250 PROBABILITY OF GROSS ERROR NUMERIC 6 0 20
- 033251 RANGE OF POSSIBLE VALUES NUMERIC 2 0 14
- 033252 MANUAL-AUTOMATIC QUALITY CONTROL CODE TABLE 33252 0 0 4
- 033253 NOMINAL CONFIDENCE THRESHOLD % 0 0 7
- 033254 WIND CORRELATION METHOD FLAG TABLE 33254 0 0 20
- 035000 FM AND REGIONAL CODE NUMBER CODE TABLE 35000 0 0 10 CODE TABLE 35000 0 3
- 035001 TIME FRAME FOR MONITORING CODE TABLE 35001 0 0 3 CODE TABLE 35001 0 1
- 035011 NUMBER OF REPORTS ACTUALLY RECEIVED NUMERIC 0 0 14 NUMERIC 0 4
- 035021 BULLETIN BEING MONITORED (TTAAII) CCITTIA5 0 0 48 CHARACTER 0 6
- 035022 BULLETIN BEING MONITORED (YYGGGG) CCITTIA5 0 0 48 CHARACTER 0 6
- 035023 BULLETIN BEING MONITORED (CCCC) CCITTIA5 0 0 32 CHARACTER 0 4
- 035024 BULLETIN BEING MONITORED (BBB) CCITTIA5 0 0 24 CHARACTER 0 3
- 035030 DISCREPANCIES IN THE AVAILABILITY OF EXPECTED DATA CODE TABLE 35030 0 0 4 CODE TABLE 35030 0 1
- 035031 QUALIFIER ON MONITORING RESULTS CODE TABLE 35031 0 0 7 CODE TABLE 35031 0 2
- 035032 CAUSE OF MISSING DATA CODE TABLE 35032 0 0 4 CODE TABLE 35032 0 1
- 035033 OBSERVATION AND COLLECTION DEFICIENCIES CODE TABLE 35033 0 0 7 CODE TABLE 35033 0 2
- 035034 STATISTICAL TRENDS FOR AVAILABILITY OF DATA (DURING THE SURVEY P CODE TABLE 35034 0 0 3 CODE TABLE 35034 0 1
- 035035 REASON FOR TERMINATION CODE TABLE 35035 0 0 5 CODE TABLE 35035 0 2
- 040001 SURFACE SOIL MOISTURE (MS) % 1 0 10 % 1 4
- 040002 ESTIMATED ERROR IN SURFACE SOIL MOISTURE % 1 0 10 % 1 4
- 040003 MEAN SURFACE SOIL MOISTURE NUMERIC 3 0 10 NUMERIC 3 4
- 040004 RAIN FALL DETECTION NUMERIC 3 0 10 NUMERIC 3 4
- 040005 SOIL MOISTURE CORRECTION FLAG FLAG TABLE 40005 0 0 8 FLAG TABLE 40005 0 3
- 040006 SOIL MOISTURE PROCESSING FLAG FLAG TABLE 40006 0 0 16 FLAG TABLE 40006 0 6
- 040007 SOIL MOISTURE QUALITY % 1 0 10 % 1 4
- 040008 FROZEN LAND SURFACE FRACTION % 1 0 10 % 1 4
- 040009 INUNDATION AND WETLAND FRACTION % 1 0 10 % 1 4
- 040010 TOPOGRAPHIC COMPLEXITY % 1 0 10 % 1 4
- 040011 INTERPOLATION FLAG FLAG TABLE 40011 0 0 8 FLAG TABLE 40011 0 3
- 040012 RADIOMETER DATA QUALITY FLAG FLAG TABLE 40012 0 0 8 FLAG TABLE 40012 0 3
- 040013 RADIOMETER BRIGHTNESS TEMPERATURE INTERPRETATION FLAG CODE TABLE 40013 0 0 3 CODE TABLE 40013 0 1
- 040014 HIGH-FREQUENCY FLUCTUATIONS OF THE SEA-SURFACE TOPOGRAPHY CORREC M 4 -3000 13 M 4 4
- 040015 NORMALIZED DIFFERENTIAL VEGETATION INDEX (NDVI) NUMERIC 2 -100 8 NUMERIC 2 3
- 040016 RESIDUAL RMS IN BAND NUMERIC 3 0 14 NUMERIC 3 5
- 040017 NON-NORMALIZED PRINCIPAL COMPONENT SCORE NUMERIC 0 -1073741824 31 NUMERIC 0 10
- 040018 GIACAVGIMAGIIS - AVERAGE OF IMAGER MEASUREMENTS W M-2 SR-1 M 6 0 24 W M-2 SR-1 M 6 8
- 040019 GIACVARIMAGIIS - VARIANCE OF IMAGER MEASUREMENTS W M-2 SR-1 M 6 0 24 W M-2 SR-1 M 6 8
- 040020 GQISFLAGQUALDETAILED - QUALITY FLAG FOR THE SYSTEM FLAG TABLE 40020 0 0 17 FLAG TABLE 40020 0 6
- 040021 FRACTION OF WEIGHTED AVHRR PIXEL IN IASI FOV COVERED WITH SNOW/I % 0 0 7 % 0 3
- 040022 NUMBER OF MISSING, BAD OR FAILED AVHRR PIXELS NUMERIC 0 0 7 NUMERIC 0 3
- 040023 AUXILIARY ALTIMETER STATE FLAGS FLAG TABLE 40023 0 0 5 FLAG TABLE 40023 0 2
- 040024 METEOROLOGICAL MAP AVAILABILITY CODE TABLE 40024 0 0 3 CODE TABLE 40024 0 1
- 040025 INTERPOLATION FLAG FOR MEAN DIURNAL TIDE CODE TABLE 40025 0 0 2 CODE TABLE 40025 0 1
- 040026 SCORE QUANTIZATION FACTOR NUMERIC 2 0 16 NUMERIC 2 5
- 040193 INSTRUMENT DETECTING CLOUDS FLAG TABLE 40193 0 0 16
- 040194 VALIDATION FLAG FOR IASI LEVEL 1 PRODUCT FLAG TABLE 40194 0 0 16
- 040195 QUALITY AND COMPLETENESS OF RETRIEVAL CODE TABLE 40195 0 0 4
- 040196 RETRIEVAL CHOICE INDICATOR FLAG TABLE 40196 0 0 8
- 040197 SATELLITE MANOEUVRE INDICATOR CODE TABLE 40197 0 0 3
- 040198 SELECTION OF BACKGROUND STATE CODE TABLE 40198 0 0 3
- 040199 INTEGRATED N2O DENSITY KG M-2 6 0 16
- 040200 INTEGRATED CO DENSITY KG M-2 7 0 16
- 040201 INTEGRATED CH4 DENSITY KG M-2 6 0 16
- 040202 INTEGRATED CO2 DENSITY KG M-2 3 0 16
- 040203 COLD/WARM LOAD FLAG FLAG TABLE 40203 0 0 12
- 040211 GMI QUALITY FLAG FLAG TABLE 40211 0 0 15
- 040213 SUN GLINT ANGLE DEG 2 -18000 16
- 049193 SAR INVERSION QC FLAGS FLAG TABLE 49193 0 0 15
- 049194 ALTIMETER WAVE HEIGHT QC FLAFS FLAG TABLE 49194 0 0 15
- 055003 DATA EXTRACTION INDICATOR FLAG TABLE 55003 0 0 8
diff --git a/bufrtables/B_feb89e9c2ae53afd3b24750c7eb1e117.distinct b/bufrtables/B_feb89e9c2ae53afd3b24750c7eb1e117.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_11e6c727e6c8b510348d0df2e86e7f8f.distinct b/bufrtables/C_11e6c727e6c8b510348d0df2e86e7f8f.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_23e15e256920aab5bc58e30ff88a0acb.distinct b/bufrtables/C_23e15e256920aab5bc58e30ff88a0acb.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_449dd354e4fefaeec0b46eaad14ad5cb.distinct b/bufrtables/C_449dd354e4fefaeec0b46eaad14ad5cb.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_6d682109f8f292527d4b53c7e37410c1.distinct b/bufrtables/C_6d682109f8f292527d4b53c7e37410c1.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_8049462304f933cdc87602ade1b732f0.distinct b/bufrtables/C_8049462304f933cdc87602ade1b732f0.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_8aa5c5c950f5d48836a11233c86a362d.distinct b/bufrtables/C_8aa5c5c950f5d48836a11233c86a362d.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_9614b67e093a3bf407460d53d4dd2b23.distinct b/bufrtables/C_9614b67e093a3bf407460d53d4dd2b23.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_9b71ff682051c19e285baf3f56d8b781.distinct b/bufrtables/C_9b71ff682051c19e285baf3f56d8b781.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_9c9f7e17ae667a48f6240fe428ec92e9.distinct b/bufrtables/C_9c9f7e17ae667a48f6240fe428ec92e9.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_a464db92d9b7520fec19512f4f270131.distinct b/bufrtables/C_a464db92d9b7520fec19512f4f270131.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_b7fa1a7727369ecf09b368eae9f63585.distinct b/bufrtables/C_b7fa1a7727369ecf09b368eae9f63585.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/C_f138f6dc0c7a1c97c31ead1174cb8562.distinct b/bufrtables/C_f138f6dc0c7a1c97c31ead1174cb8562.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D0000000000000016000.TXT b/bufrtables/D0000000000000016000.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000000016000.TXT
+++ b/bufrtables/D0000000000000016000.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000001016001.TXT b/bufrtables/D0000000000001016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000001016001.TXT
+++ b/bufrtables/D0000000000001016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000002016001.TXT b/bufrtables/D0000000000002016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000002016001.TXT
+++ b/bufrtables/D0000000000002016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000003016001.TXT b/bufrtables/D0000000000003016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000003016001.TXT
+++ b/bufrtables/D0000000000003016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000004016001.TXT b/bufrtables/D0000000000004016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000004016001.TXT
+++ b/bufrtables/D0000000000004016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000005016001.TXT b/bufrtables/D0000000000005016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000005016001.TXT
+++ b/bufrtables/D0000000000005016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000006016001.TXT b/bufrtables/D0000000000006016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000006016001.TXT
+++ b/bufrtables/D0000000000006016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000007016001.TXT b/bufrtables/D0000000000007016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000007016001.TXT
+++ b/bufrtables/D0000000000007016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000008016001.TXT b/bufrtables/D0000000000008016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000008016001.TXT
+++ b/bufrtables/D0000000000008016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000009016001.TXT b/bufrtables/D0000000000009016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000009016001.TXT
+++ b/bufrtables/D0000000000009016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000010016001.TXT b/bufrtables/D0000000000010016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000010016001.TXT
+++ b/bufrtables/D0000000000010016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000011016001.TXT b/bufrtables/D0000000000011016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000011016001.TXT
+++ b/bufrtables/D0000000000011016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000012016001.TXT b/bufrtables/D0000000000012016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000012016001.TXT
+++ b/bufrtables/D0000000000012016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000013016001.TXT b/bufrtables/D0000000000013016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000013016001.TXT
+++ b/bufrtables/D0000000000013016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000014016001.TXT b/bufrtables/D0000000000014016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000014016001.TXT
+++ b/bufrtables/D0000000000014016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000015016001.TXT b/bufrtables/D0000000000015016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000015016001.TXT
+++ b/bufrtables/D0000000000015016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000016016001.TXT b/bufrtables/D0000000000016016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000016016001.TXT
+++ b/bufrtables/D0000000000016016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000017016001.TXT b/bufrtables/D0000000000017016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000017016001.TXT
+++ b/bufrtables/D0000000000017016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000018016001.TXT b/bufrtables/D0000000000018016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000018016001.TXT
+++ b/bufrtables/D0000000000018016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000019016001.TXT b/bufrtables/D0000000000019016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000019016001.TXT
+++ b/bufrtables/D0000000000019016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000020016001.TXT b/bufrtables/D0000000000020016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000020016001.TXT
+++ b/bufrtables/D0000000000020016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000021016001.TXT b/bufrtables/D0000000000021016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000021016001.TXT
+++ b/bufrtables/D0000000000021016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000022016001.TXT b/bufrtables/D0000000000022016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000022016001.TXT
+++ b/bufrtables/D0000000000022016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000023016001.TXT b/bufrtables/D0000000000023016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000023016001.TXT
+++ b/bufrtables/D0000000000023016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000024016001.TXT b/bufrtables/D0000000000024016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000024016001.TXT
+++ b/bufrtables/D0000000000024016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000025016001.TXT b/bufrtables/D0000000000025016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000025016001.TXT
+++ b/bufrtables/D0000000000025016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000026016001.TXT b/bufrtables/D0000000000026016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000026016001.TXT
+++ b/bufrtables/D0000000000026016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000027016001.TXT b/bufrtables/D0000000000027016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000027016001.TXT
+++ b/bufrtables/D0000000000027016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000028016001.TXT b/bufrtables/D0000000000028016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000028016001.TXT
+++ b/bufrtables/D0000000000028016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000029016001.TXT b/bufrtables/D0000000000029016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000029016001.TXT
+++ b/bufrtables/D0000000000029016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000030016001.TXT b/bufrtables/D0000000000030016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000030016001.TXT
+++ b/bufrtables/D0000000000030016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000031016001.TXT b/bufrtables/D0000000000031016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000031016001.TXT
+++ b/bufrtables/D0000000000031016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000032016001.TXT b/bufrtables/D0000000000032016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000032016001.TXT
+++ b/bufrtables/D0000000000032016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000033016001.TXT b/bufrtables/D0000000000033016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000033016001.TXT
+++ b/bufrtables/D0000000000033016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000034016001.TXT b/bufrtables/D0000000000034016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000034016001.TXT
+++ b/bufrtables/D0000000000034016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000035016001.TXT b/bufrtables/D0000000000035016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000035016001.TXT
+++ b/bufrtables/D0000000000035016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000036016001.TXT b/bufrtables/D0000000000036016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000036016001.TXT
+++ b/bufrtables/D0000000000036016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000037016001.TXT b/bufrtables/D0000000000037016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000037016001.TXT
+++ b/bufrtables/D0000000000037016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000038016001.TXT b/bufrtables/D0000000000038016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000038016001.TXT
+++ b/bufrtables/D0000000000038016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000039016001.TXT b/bufrtables/D0000000000039016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000039016001.TXT
+++ b/bufrtables/D0000000000039016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000040016001.TXT b/bufrtables/D0000000000040016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000040016001.TXT
+++ b/bufrtables/D0000000000040016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000041016001.TXT b/bufrtables/D0000000000041016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000041016001.TXT
+++ b/bufrtables/D0000000000041016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000042016001.TXT b/bufrtables/D0000000000042016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000042016001.TXT
+++ b/bufrtables/D0000000000042016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000043016001.TXT b/bufrtables/D0000000000043016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000043016001.TXT
+++ b/bufrtables/D0000000000043016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000044016001.TXT b/bufrtables/D0000000000044016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000044016001.TXT
+++ b/bufrtables/D0000000000044016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000045016001.TXT b/bufrtables/D0000000000045016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000045016001.TXT
+++ b/bufrtables/D0000000000045016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000046016001.TXT b/bufrtables/D0000000000046016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000046016001.TXT
+++ b/bufrtables/D0000000000046016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000047016001.TXT b/bufrtables/D0000000000047016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000047016001.TXT
+++ b/bufrtables/D0000000000047016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000048016001.TXT b/bufrtables/D0000000000048016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000048016001.TXT
+++ b/bufrtables/D0000000000048016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000049016001.TXT b/bufrtables/D0000000000049016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000049016001.TXT
+++ b/bufrtables/D0000000000049016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000050016001.TXT b/bufrtables/D0000000000050016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000050016001.TXT
+++ b/bufrtables/D0000000000050016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000051016001.TXT b/bufrtables/D0000000000051016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000051016001.TXT
+++ b/bufrtables/D0000000000051016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000052016001.TXT b/bufrtables/D0000000000052016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000052016001.TXT
+++ b/bufrtables/D0000000000052016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000053016001.TXT b/bufrtables/D0000000000053016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000053016001.TXT
+++ b/bufrtables/D0000000000053016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000054016001.TXT b/bufrtables/D0000000000054016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000054016001.TXT
+++ b/bufrtables/D0000000000054016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000055016001.TXT b/bufrtables/D0000000000055016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000055016001.TXT
+++ b/bufrtables/D0000000000055016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000056016001.TXT b/bufrtables/D0000000000056016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000056016001.TXT
+++ b/bufrtables/D0000000000056016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000057016001.TXT b/bufrtables/D0000000000057016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000057016001.TXT
+++ b/bufrtables/D0000000000057016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000058016001.TXT b/bufrtables/D0000000000058016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000058016001.TXT
+++ b/bufrtables/D0000000000058016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000059016001.TXT b/bufrtables/D0000000000059016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000059016001.TXT
+++ b/bufrtables/D0000000000059016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000060016001.TXT b/bufrtables/D0000000000060016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000060016001.TXT
+++ b/bufrtables/D0000000000060016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000061016001.TXT b/bufrtables/D0000000000061016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000061016001.TXT
+++ b/bufrtables/D0000000000061016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000062016001.TXT b/bufrtables/D0000000000062016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000062016001.TXT
+++ b/bufrtables/D0000000000062016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000063016001.TXT b/bufrtables/D0000000000063016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000063016001.TXT
+++ b/bufrtables/D0000000000063016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000064016001.TXT b/bufrtables/D0000000000064016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000064016001.TXT
+++ b/bufrtables/D0000000000064016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000065016001.TXT b/bufrtables/D0000000000065016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000065016001.TXT
+++ b/bufrtables/D0000000000065016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000066016001.TXT b/bufrtables/D0000000000066016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000066016001.TXT
+++ b/bufrtables/D0000000000066016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000067016001.TXT b/bufrtables/D0000000000067016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000067016001.TXT
+++ b/bufrtables/D0000000000067016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000068016001.TXT b/bufrtables/D0000000000068016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000068016001.TXT
+++ b/bufrtables/D0000000000068016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000069016001.TXT b/bufrtables/D0000000000069016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000069016001.TXT
+++ b/bufrtables/D0000000000069016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000070016001.TXT b/bufrtables/D0000000000070016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000070016001.TXT
+++ b/bufrtables/D0000000000070016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000071016001.TXT b/bufrtables/D0000000000071016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000071016001.TXT
+++ b/bufrtables/D0000000000071016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000072016001.TXT b/bufrtables/D0000000000072016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000072016001.TXT
+++ b/bufrtables/D0000000000072016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000073016001.TXT b/bufrtables/D0000000000073016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000073016001.TXT
+++ b/bufrtables/D0000000000073016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000074016001.TXT b/bufrtables/D0000000000074016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000074016001.TXT
+++ b/bufrtables/D0000000000074016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000075016001.TXT b/bufrtables/D0000000000075016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000075016001.TXT
+++ b/bufrtables/D0000000000075016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000076016001.TXT b/bufrtables/D0000000000076016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000076016001.TXT
+++ b/bufrtables/D0000000000076016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000077016001.TXT b/bufrtables/D0000000000077016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000077016001.TXT
+++ b/bufrtables/D0000000000077016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000078016001.TXT b/bufrtables/D0000000000078016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000078016001.TXT
+++ b/bufrtables/D0000000000078016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000079016001.TXT b/bufrtables/D0000000000079016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000079016001.TXT
+++ b/bufrtables/D0000000000079016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000080016001.TXT b/bufrtables/D0000000000080016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000080016001.TXT
+++ b/bufrtables/D0000000000080016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000081016001.TXT b/bufrtables/D0000000000081016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000081016001.TXT
+++ b/bufrtables/D0000000000081016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000082016001.TXT b/bufrtables/D0000000000082016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000082016001.TXT
+++ b/bufrtables/D0000000000082016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000083016001.TXT b/bufrtables/D0000000000083016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000083016001.TXT
+++ b/bufrtables/D0000000000083016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000084016001.TXT b/bufrtables/D0000000000084016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000084016001.TXT
+++ b/bufrtables/D0000000000084016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000085016001.TXT b/bufrtables/D0000000000085016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000085016001.TXT
+++ b/bufrtables/D0000000000085016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000086016001.TXT b/bufrtables/D0000000000086016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000086016001.TXT
+++ b/bufrtables/D0000000000086016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000087016001.TXT b/bufrtables/D0000000000087016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000087016001.TXT
+++ b/bufrtables/D0000000000087016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000088016001.TXT b/bufrtables/D0000000000088016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000088016001.TXT
+++ b/bufrtables/D0000000000088016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000089016001.TXT b/bufrtables/D0000000000089016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000089016001.TXT
+++ b/bufrtables/D0000000000089016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000090016001.TXT b/bufrtables/D0000000000090016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000090016001.TXT
+++ b/bufrtables/D0000000000090016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000091016001.TXT b/bufrtables/D0000000000091016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000091016001.TXT
+++ b/bufrtables/D0000000000091016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000092016001.TXT b/bufrtables/D0000000000092016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000092016001.TXT
+++ b/bufrtables/D0000000000092016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000093016001.TXT b/bufrtables/D0000000000093016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000093016001.TXT
+++ b/bufrtables/D0000000000093016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000094016001.TXT b/bufrtables/D0000000000094016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000094016001.TXT
+++ b/bufrtables/D0000000000094016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000095016001.TXT b/bufrtables/D0000000000095016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000095016001.TXT
+++ b/bufrtables/D0000000000095016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000096016001.TXT b/bufrtables/D0000000000096016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000096016001.TXT
+++ b/bufrtables/D0000000000096016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000097016001.TXT b/bufrtables/D0000000000097016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000097016001.TXT
+++ b/bufrtables/D0000000000097016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000098016001.TXT b/bufrtables/D0000000000098016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000098016001.TXT
+++ b/bufrtables/D0000000000098016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000098016101.TXT b/bufrtables/D0000000000098016101.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000098016101.TXT
+++ b/bufrtables/D0000000000098016101.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000099016001.TXT b/bufrtables/D0000000000099016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000099016001.TXT
+++ b/bufrtables/D0000000000099016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000100016001.TXT b/bufrtables/D0000000000100016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000100016001.TXT
+++ b/bufrtables/D0000000000100016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000101016001.TXT b/bufrtables/D0000000000101016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000101016001.TXT
+++ b/bufrtables/D0000000000101016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000102016001.TXT b/bufrtables/D0000000000102016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000102016001.TXT
+++ b/bufrtables/D0000000000102016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000103016001.TXT b/bufrtables/D0000000000103016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000103016001.TXT
+++ b/bufrtables/D0000000000103016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000104016001.TXT b/bufrtables/D0000000000104016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000104016001.TXT
+++ b/bufrtables/D0000000000104016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000105016001.TXT b/bufrtables/D0000000000105016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000105016001.TXT
+++ b/bufrtables/D0000000000105016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000106016001.TXT b/bufrtables/D0000000000106016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000106016001.TXT
+++ b/bufrtables/D0000000000106016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000107016001.TXT b/bufrtables/D0000000000107016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000107016001.TXT
+++ b/bufrtables/D0000000000107016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000108016001.TXT b/bufrtables/D0000000000108016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000108016001.TXT
+++ b/bufrtables/D0000000000108016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000109016001.TXT b/bufrtables/D0000000000109016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000109016001.TXT
+++ b/bufrtables/D0000000000109016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000110016001.TXT b/bufrtables/D0000000000110016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000110016001.TXT
+++ b/bufrtables/D0000000000110016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000111016001.TXT b/bufrtables/D0000000000111016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000111016001.TXT
+++ b/bufrtables/D0000000000111016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000112016001.TXT b/bufrtables/D0000000000112016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000112016001.TXT
+++ b/bufrtables/D0000000000112016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000113016001.TXT b/bufrtables/D0000000000113016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000113016001.TXT
+++ b/bufrtables/D0000000000113016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000114016001.TXT b/bufrtables/D0000000000114016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000114016001.TXT
+++ b/bufrtables/D0000000000114016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000115016001.TXT b/bufrtables/D0000000000115016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000115016001.TXT
+++ b/bufrtables/D0000000000115016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000116016001.TXT b/bufrtables/D0000000000116016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000116016001.TXT
+++ b/bufrtables/D0000000000116016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000117016001.TXT b/bufrtables/D0000000000117016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000117016001.TXT
+++ b/bufrtables/D0000000000117016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000118016001.TXT b/bufrtables/D0000000000118016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000118016001.TXT
+++ b/bufrtables/D0000000000118016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000119016001.TXT b/bufrtables/D0000000000119016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000119016001.TXT
+++ b/bufrtables/D0000000000119016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000120016001.TXT b/bufrtables/D0000000000120016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000120016001.TXT
+++ b/bufrtables/D0000000000120016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000121016001.TXT b/bufrtables/D0000000000121016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000121016001.TXT
+++ b/bufrtables/D0000000000121016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000122016001.TXT b/bufrtables/D0000000000122016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000122016001.TXT
+++ b/bufrtables/D0000000000122016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000123016001.TXT b/bufrtables/D0000000000123016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000123016001.TXT
+++ b/bufrtables/D0000000000123016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000124016001.TXT b/bufrtables/D0000000000124016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000124016001.TXT
+++ b/bufrtables/D0000000000124016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000125016001.TXT b/bufrtables/D0000000000125016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000125016001.TXT
+++ b/bufrtables/D0000000000125016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000126016001.TXT b/bufrtables/D0000000000126016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000126016001.TXT
+++ b/bufrtables/D0000000000126016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000127016001.TXT b/bufrtables/D0000000000127016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000127016001.TXT
+++ b/bufrtables/D0000000000127016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000128016001.TXT b/bufrtables/D0000000000128016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000128016001.TXT
+++ b/bufrtables/D0000000000128016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000129016001.TXT b/bufrtables/D0000000000129016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000129016001.TXT
+++ b/bufrtables/D0000000000129016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000130016001.TXT b/bufrtables/D0000000000130016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000130016001.TXT
+++ b/bufrtables/D0000000000130016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000131016001.TXT b/bufrtables/D0000000000131016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000131016001.TXT
+++ b/bufrtables/D0000000000131016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000132016001.TXT b/bufrtables/D0000000000132016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000132016001.TXT
+++ b/bufrtables/D0000000000132016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000133016001.TXT b/bufrtables/D0000000000133016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000133016001.TXT
+++ b/bufrtables/D0000000000133016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000134016001.TXT b/bufrtables/D0000000000134016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000134016001.TXT
+++ b/bufrtables/D0000000000134016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000135016001.TXT b/bufrtables/D0000000000135016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000135016001.TXT
+++ b/bufrtables/D0000000000135016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000136016001.TXT b/bufrtables/D0000000000136016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000136016001.TXT
+++ b/bufrtables/D0000000000136016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000137016001.TXT b/bufrtables/D0000000000137016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000137016001.TXT
+++ b/bufrtables/D0000000000137016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000138016001.TXT b/bufrtables/D0000000000138016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000138016001.TXT
+++ b/bufrtables/D0000000000138016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000139016001.TXT b/bufrtables/D0000000000139016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000139016001.TXT
+++ b/bufrtables/D0000000000139016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000140016001.TXT b/bufrtables/D0000000000140016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000140016001.TXT
+++ b/bufrtables/D0000000000140016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000141016001.TXT b/bufrtables/D0000000000141016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000141016001.TXT
+++ b/bufrtables/D0000000000141016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000142016001.TXT b/bufrtables/D0000000000142016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000142016001.TXT
+++ b/bufrtables/D0000000000142016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000143016001.TXT b/bufrtables/D0000000000143016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000143016001.TXT
+++ b/bufrtables/D0000000000143016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000144016001.TXT b/bufrtables/D0000000000144016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000144016001.TXT
+++ b/bufrtables/D0000000000144016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000145016001.TXT b/bufrtables/D0000000000145016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000145016001.TXT
+++ b/bufrtables/D0000000000145016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000146016001.TXT b/bufrtables/D0000000000146016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000146016001.TXT
+++ b/bufrtables/D0000000000146016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000147016001.TXT b/bufrtables/D0000000000147016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000147016001.TXT
+++ b/bufrtables/D0000000000147016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000148016001.TXT b/bufrtables/D0000000000148016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000148016001.TXT
+++ b/bufrtables/D0000000000148016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000149016001.TXT b/bufrtables/D0000000000149016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000149016001.TXT
+++ b/bufrtables/D0000000000149016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000150016001.TXT b/bufrtables/D0000000000150016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000150016001.TXT
+++ b/bufrtables/D0000000000150016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000151016001.TXT b/bufrtables/D0000000000151016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000151016001.TXT
+++ b/bufrtables/D0000000000151016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000152016001.TXT b/bufrtables/D0000000000152016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000152016001.TXT
+++ b/bufrtables/D0000000000152016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000153016001.TXT b/bufrtables/D0000000000153016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000153016001.TXT
+++ b/bufrtables/D0000000000153016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000154016001.TXT b/bufrtables/D0000000000154016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000154016001.TXT
+++ b/bufrtables/D0000000000154016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000155016001.TXT b/bufrtables/D0000000000155016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000155016001.TXT
+++ b/bufrtables/D0000000000155016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000156016001.TXT b/bufrtables/D0000000000156016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000156016001.TXT
+++ b/bufrtables/D0000000000156016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000157016001.TXT b/bufrtables/D0000000000157016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000157016001.TXT
+++ b/bufrtables/D0000000000157016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000158016001.TXT b/bufrtables/D0000000000158016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000158016001.TXT
+++ b/bufrtables/D0000000000158016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000159016001.TXT b/bufrtables/D0000000000159016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000159016001.TXT
+++ b/bufrtables/D0000000000159016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000160016001.TXT b/bufrtables/D0000000000160016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000160016001.TXT
+++ b/bufrtables/D0000000000160016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000161016001.TXT b/bufrtables/D0000000000161016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000161016001.TXT
+++ b/bufrtables/D0000000000161016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000162016001.TXT b/bufrtables/D0000000000162016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000162016001.TXT
+++ b/bufrtables/D0000000000162016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000163016001.TXT b/bufrtables/D0000000000163016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000163016001.TXT
+++ b/bufrtables/D0000000000163016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000164016001.TXT b/bufrtables/D0000000000164016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000164016001.TXT
+++ b/bufrtables/D0000000000164016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000165016001.TXT b/bufrtables/D0000000000165016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000165016001.TXT
+++ b/bufrtables/D0000000000165016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000166016001.TXT b/bufrtables/D0000000000166016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000166016001.TXT
+++ b/bufrtables/D0000000000166016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000167016001.TXT b/bufrtables/D0000000000167016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000167016001.TXT
+++ b/bufrtables/D0000000000167016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000168016001.TXT b/bufrtables/D0000000000168016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000168016001.TXT
+++ b/bufrtables/D0000000000168016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000169016001.TXT b/bufrtables/D0000000000169016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000169016001.TXT
+++ b/bufrtables/D0000000000169016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000170016001.TXT b/bufrtables/D0000000000170016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000170016001.TXT
+++ b/bufrtables/D0000000000170016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000171016001.TXT b/bufrtables/D0000000000171016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000171016001.TXT
+++ b/bufrtables/D0000000000171016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000172016001.TXT b/bufrtables/D0000000000172016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000172016001.TXT
+++ b/bufrtables/D0000000000172016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000173016001.TXT b/bufrtables/D0000000000173016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000173016001.TXT
+++ b/bufrtables/D0000000000173016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000174016001.TXT b/bufrtables/D0000000000174016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000174016001.TXT
+++ b/bufrtables/D0000000000174016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000175016001.TXT b/bufrtables/D0000000000175016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000175016001.TXT
+++ b/bufrtables/D0000000000175016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000176016001.TXT b/bufrtables/D0000000000176016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000176016001.TXT
+++ b/bufrtables/D0000000000176016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000177016001.TXT b/bufrtables/D0000000000177016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000177016001.TXT
+++ b/bufrtables/D0000000000177016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000178016001.TXT b/bufrtables/D0000000000178016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000178016001.TXT
+++ b/bufrtables/D0000000000178016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000179016001.TXT b/bufrtables/D0000000000179016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000179016001.TXT
+++ b/bufrtables/D0000000000179016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000180016001.TXT b/bufrtables/D0000000000180016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000180016001.TXT
+++ b/bufrtables/D0000000000180016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000181016001.TXT b/bufrtables/D0000000000181016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000181016001.TXT
+++ b/bufrtables/D0000000000181016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000182016001.TXT b/bufrtables/D0000000000182016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000182016001.TXT
+++ b/bufrtables/D0000000000182016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000183016001.TXT b/bufrtables/D0000000000183016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000183016001.TXT
+++ b/bufrtables/D0000000000183016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000184016001.TXT b/bufrtables/D0000000000184016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000184016001.TXT
+++ b/bufrtables/D0000000000184016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000185016001.TXT b/bufrtables/D0000000000185016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000185016001.TXT
+++ b/bufrtables/D0000000000185016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000186016001.TXT b/bufrtables/D0000000000186016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000186016001.TXT
+++ b/bufrtables/D0000000000186016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000187016001.TXT b/bufrtables/D0000000000187016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000187016001.TXT
+++ b/bufrtables/D0000000000187016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000188016001.TXT b/bufrtables/D0000000000188016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000188016001.TXT
+++ b/bufrtables/D0000000000188016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000189016001.TXT b/bufrtables/D0000000000189016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000189016001.TXT
+++ b/bufrtables/D0000000000189016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000190016001.TXT b/bufrtables/D0000000000190016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000190016001.TXT
+++ b/bufrtables/D0000000000190016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000191016001.TXT b/bufrtables/D0000000000191016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000191016001.TXT
+++ b/bufrtables/D0000000000191016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000192016001.TXT b/bufrtables/D0000000000192016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000192016001.TXT
+++ b/bufrtables/D0000000000192016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000193016001.TXT b/bufrtables/D0000000000193016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000193016001.TXT
+++ b/bufrtables/D0000000000193016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000194016001.TXT b/bufrtables/D0000000000194016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000194016001.TXT
+++ b/bufrtables/D0000000000194016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000195016001.TXT b/bufrtables/D0000000000195016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000195016001.TXT
+++ b/bufrtables/D0000000000195016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000196016001.TXT b/bufrtables/D0000000000196016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000196016001.TXT
+++ b/bufrtables/D0000000000196016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000197016001.TXT b/bufrtables/D0000000000197016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000197016001.TXT
+++ b/bufrtables/D0000000000197016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000198016001.TXT b/bufrtables/D0000000000198016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000198016001.TXT
+++ b/bufrtables/D0000000000198016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000199016001.TXT b/bufrtables/D0000000000199016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000199016001.TXT
+++ b/bufrtables/D0000000000199016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000200016001.TXT b/bufrtables/D0000000000200016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000200016001.TXT
+++ b/bufrtables/D0000000000200016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000201016001.TXT b/bufrtables/D0000000000201016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000201016001.TXT
+++ b/bufrtables/D0000000000201016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000202016001.TXT b/bufrtables/D0000000000202016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000202016001.TXT
+++ b/bufrtables/D0000000000202016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000203016001.TXT b/bufrtables/D0000000000203016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000203016001.TXT
+++ b/bufrtables/D0000000000203016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000204016001.TXT b/bufrtables/D0000000000204016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000204016001.TXT
+++ b/bufrtables/D0000000000204016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000205016001.TXT b/bufrtables/D0000000000205016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000205016001.TXT
+++ b/bufrtables/D0000000000205016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000206016001.TXT b/bufrtables/D0000000000206016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000206016001.TXT
+++ b/bufrtables/D0000000000206016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000207016001.TXT b/bufrtables/D0000000000207016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000207016001.TXT
+++ b/bufrtables/D0000000000207016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000208016001.TXT b/bufrtables/D0000000000208016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000208016001.TXT
+++ b/bufrtables/D0000000000208016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000209016001.TXT b/bufrtables/D0000000000209016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000209016001.TXT
+++ b/bufrtables/D0000000000209016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000210016001.TXT b/bufrtables/D0000000000210016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000210016001.TXT
+++ b/bufrtables/D0000000000210016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000211016001.TXT b/bufrtables/D0000000000211016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000211016001.TXT
+++ b/bufrtables/D0000000000211016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000212016001.TXT b/bufrtables/D0000000000212016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000212016001.TXT
+++ b/bufrtables/D0000000000212016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000213016001.TXT b/bufrtables/D0000000000213016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000213016001.TXT
+++ b/bufrtables/D0000000000213016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000214016001.TXT b/bufrtables/D0000000000214016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000214016001.TXT
+++ b/bufrtables/D0000000000214016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000215016001.TXT b/bufrtables/D0000000000215016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000215016001.TXT
+++ b/bufrtables/D0000000000215016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000216016001.TXT b/bufrtables/D0000000000216016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000216016001.TXT
+++ b/bufrtables/D0000000000216016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000217016001.TXT b/bufrtables/D0000000000217016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000217016001.TXT
+++ b/bufrtables/D0000000000217016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000218016001.TXT b/bufrtables/D0000000000218016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000218016001.TXT
+++ b/bufrtables/D0000000000218016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000219016001.TXT b/bufrtables/D0000000000219016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000219016001.TXT
+++ b/bufrtables/D0000000000219016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000220016001.TXT b/bufrtables/D0000000000220016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000220016001.TXT
+++ b/bufrtables/D0000000000220016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000221016001.TXT b/bufrtables/D0000000000221016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000221016001.TXT
+++ b/bufrtables/D0000000000221016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000222016001.TXT b/bufrtables/D0000000000222016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000222016001.TXT
+++ b/bufrtables/D0000000000222016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000223016001.TXT b/bufrtables/D0000000000223016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000223016001.TXT
+++ b/bufrtables/D0000000000223016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000224016001.TXT b/bufrtables/D0000000000224016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000224016001.TXT
+++ b/bufrtables/D0000000000224016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000225016001.TXT b/bufrtables/D0000000000225016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000225016001.TXT
+++ b/bufrtables/D0000000000225016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000226016001.TXT b/bufrtables/D0000000000226016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000226016001.TXT
+++ b/bufrtables/D0000000000226016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000227016001.TXT b/bufrtables/D0000000000227016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000227016001.TXT
+++ b/bufrtables/D0000000000227016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000228016001.TXT b/bufrtables/D0000000000228016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000228016001.TXT
+++ b/bufrtables/D0000000000228016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000229016001.TXT b/bufrtables/D0000000000229016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000229016001.TXT
+++ b/bufrtables/D0000000000229016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000230016001.TXT b/bufrtables/D0000000000230016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000230016001.TXT
+++ b/bufrtables/D0000000000230016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000231016001.TXT b/bufrtables/D0000000000231016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000231016001.TXT
+++ b/bufrtables/D0000000000231016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000232016001.TXT b/bufrtables/D0000000000232016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000232016001.TXT
+++ b/bufrtables/D0000000000232016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000233016001.TXT b/bufrtables/D0000000000233016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000233016001.TXT
+++ b/bufrtables/D0000000000233016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000234016001.TXT b/bufrtables/D0000000000234016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000234016001.TXT
+++ b/bufrtables/D0000000000234016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000235016001.TXT b/bufrtables/D0000000000235016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000235016001.TXT
+++ b/bufrtables/D0000000000235016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000236016001.TXT b/bufrtables/D0000000000236016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000236016001.TXT
+++ b/bufrtables/D0000000000236016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000237016001.TXT b/bufrtables/D0000000000237016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000237016001.TXT
+++ b/bufrtables/D0000000000237016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000238016001.TXT b/bufrtables/D0000000000238016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000238016001.TXT
+++ b/bufrtables/D0000000000238016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000239016001.TXT b/bufrtables/D0000000000239016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000239016001.TXT
+++ b/bufrtables/D0000000000239016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000240016001.TXT b/bufrtables/D0000000000240016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000240016001.TXT
+++ b/bufrtables/D0000000000240016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000241016001.TXT b/bufrtables/D0000000000241016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000241016001.TXT
+++ b/bufrtables/D0000000000241016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000242016001.TXT b/bufrtables/D0000000000242016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000242016001.TXT
+++ b/bufrtables/D0000000000242016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000243016001.TXT b/bufrtables/D0000000000243016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000243016001.TXT
+++ b/bufrtables/D0000000000243016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000244016001.TXT b/bufrtables/D0000000000244016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000244016001.TXT
+++ b/bufrtables/D0000000000244016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000245016001.TXT b/bufrtables/D0000000000245016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000245016001.TXT
+++ b/bufrtables/D0000000000245016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000246016001.TXT b/bufrtables/D0000000000246016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000246016001.TXT
+++ b/bufrtables/D0000000000246016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000247016001.TXT b/bufrtables/D0000000000247016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000247016001.TXT
+++ b/bufrtables/D0000000000247016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000248016001.TXT b/bufrtables/D0000000000248016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000248016001.TXT
+++ b/bufrtables/D0000000000248016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000249016001.TXT b/bufrtables/D0000000000249016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000249016001.TXT
+++ b/bufrtables/D0000000000249016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000250016001.TXT b/bufrtables/D0000000000250016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000250016001.TXT
+++ b/bufrtables/D0000000000250016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000251016001.TXT b/bufrtables/D0000000000251016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000251016001.TXT
+++ b/bufrtables/D0000000000251016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000252016001.TXT b/bufrtables/D0000000000252016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000252016001.TXT
+++ b/bufrtables/D0000000000252016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000253016001.TXT b/bufrtables/D0000000000253016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000253016001.TXT
+++ b/bufrtables/D0000000000253016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000254016001.TXT b/bufrtables/D0000000000254016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000254016001.TXT
+++ b/bufrtables/D0000000000254016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D0000000000255016001.TXT b/bufrtables/D0000000000255016001.TXT
index edeb645..f464c7a 120000
--- a/bufrtables/D0000000000255016001.TXT
+++ b/bufrtables/D0000000000255016001.TXT
@@ -1 +1 @@
-D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct
\ No newline at end of file
+D_97904881abf209f200d7dab466e706ce.distinct
\ No newline at end of file
diff --git a/bufrtables/D_0c24ef206464d74a80b7a2ba12bb9c8f.distinct b/bufrtables/D_0c24ef206464d74a80b7a2ba12bb9c8f.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_163528c9416c4e586d5646ecdfae2cbd.distinct b/bufrtables/D_163528c9416c4e586d5646ecdfae2cbd.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_173e9169eaed3807be0f5fdad3111fed.distinct b/bufrtables/D_173e9169eaed3807be0f5fdad3111fed.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_1a04522fbc85dad28a197e988a256c72.distinct b/bufrtables/D_1a04522fbc85dad28a197e988a256c72.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_282e48b64107e2fd90c5d9e7f1f6a349.distinct b/bufrtables/D_282e48b64107e2fd90c5d9e7f1f6a349.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_34d8eded2acfd064517d900818528d60.distinct b/bufrtables/D_34d8eded2acfd064517d900818528d60.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_5abc7b52b7bc04875961cf145f45319b.distinct b/bufrtables/D_5abc7b52b7bc04875961cf145f45319b.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_721b028d58d7913b23b93bba60bb73e0.distinct b/bufrtables/D_721b028d58d7913b23b93bba60bb73e0.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_8329c50ae1dd4e0c1c9a5060a5b9e0b1.distinct b/bufrtables/D_8329c50ae1dd4e0c1c9a5060a5b9e0b1.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_97904881abf209f200d7dab466e706ce.distinct b/bufrtables/D_97904881abf209f200d7dab466e706ce.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_99cbfdf89904aeca4a5aabcfaad382db.distinct b/bufrtables/D_99cbfdf89904aeca4a5aabcfaad382db.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_aac4646403e0b6b4d7f4af7786d40a24.distinct b/bufrtables/D_aac4646403e0b6b4d7f4af7786d40a24.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_bb99e30d62bf95ef8f97567958d44e1c.distinct b/bufrtables/D_bb99e30d62bf95ef8f97567958d44e1c.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_e2d812be75cb8471cf57f57e68aa92ce.distinct b/bufrtables/D_e2d812be75cb8471cf57f57e68aa92ce.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/D_e6f39b79d79a88eadc362af9ee725054.distinct b/bufrtables/D_e6f39b79d79a88eadc362af9ee725054.distinct
old mode 100644
new mode 100755
diff --git a/bufrtables/VERSION.cmake b/bufrtables/VERSION.cmake
index fc3a67b..e2079e1 100644
--- a/bufrtables/VERSION.cmake
+++ b/bufrtables/VERSION.cmake
@@ -1 +1 @@
-set( ${PROJECT_NAME}_VERSION_STR "4.0.7" )
+set( ${PROJECT_NAME}_VERSION_STR "4.0.8" )
diff --git a/bufrtables/links.sh b/bufrtables/links.sh
index 1fd89a7..2e49670 100755
--- a/bufrtables/links.sh
+++ b/bufrtables/links.sh
@@ -4690,7 +4690,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000000012000.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000000013000.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000000014000.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000000015000.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000000016000.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000000016000.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000000017000.TXT
ln -s D_5abc7b52b7bc04875961cf145f45319b.distinct D0000000000000018000.TXT
ln -s D_e6f39b79d79a88eadc362af9ee725054.distinct D0000000000000019000.TXT
@@ -4706,7 +4706,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000001012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000001013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000001014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000001015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000001016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000001016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000001017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000002010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000002011001.TXT
@@ -4714,7 +4714,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000002012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000002013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000002014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000002015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000002016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000002016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000002017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000003010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000003011001.TXT
@@ -4722,7 +4722,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000003012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000003013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000003014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000003015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000003016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000003016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000003017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000004010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000004011001.TXT
@@ -4730,7 +4730,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000004012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000004013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000004014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000004015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000004016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000004016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000004017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000005010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000005011001.TXT
@@ -4738,7 +4738,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000005012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000005013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000005014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000005015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000005016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000005016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000005017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000006010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000006011001.TXT
@@ -4746,7 +4746,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000006012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000006013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000006014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000006015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000006016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000006016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000006017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000007002001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000007010001.TXT
@@ -4755,7 +4755,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000007012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000007013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000007014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000007015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000007016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000007016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000007017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000008010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000008011001.TXT
@@ -4763,7 +4763,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000008012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000008013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000008014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000008015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000008016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000008016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000008017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000009010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000009011001.TXT
@@ -4771,7 +4771,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000009012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000009013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000009014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000009015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000009016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000009016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000009017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000010010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000010011001.TXT
@@ -4779,7 +4779,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000010012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000010013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000010014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000010015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000010016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000010016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000010017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000011010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000011011001.TXT
@@ -4787,7 +4787,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000011012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000011013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000011014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000011015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000011016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000011016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000011017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000012010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000012011001.TXT
@@ -4795,7 +4795,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000012012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000012013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000012014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000012015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000012016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000012016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000012017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000013010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000013011001.TXT
@@ -4803,7 +4803,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000013012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000013013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000013014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000013015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000013016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000013016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000013017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000014010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000014011001.TXT
@@ -4811,7 +4811,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000014012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000014013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000014014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000014015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000014016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000014016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000014017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000015010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000015011001.TXT
@@ -4819,7 +4819,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000015012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000015013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000015014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000015015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000015016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000015016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000015017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000016010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000016011001.TXT
@@ -4827,7 +4827,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000016012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000016013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000016014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000016015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000016016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000016016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000016017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000017010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000017011001.TXT
@@ -4835,7 +4835,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000017012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000017013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000017014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000017015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000017016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000017016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000017017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000018010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000018011001.TXT
@@ -4843,7 +4843,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000018012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000018013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000018014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000018015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000018016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000018016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000018017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000019010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000019011001.TXT
@@ -4851,7 +4851,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000019012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000019013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000019014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000019015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000019016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000019016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000019017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000020010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000020011001.TXT
@@ -4859,7 +4859,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000020012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000020013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000020014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000020015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000020016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000020016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000020017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000021010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000021011001.TXT
@@ -4867,7 +4867,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000021012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000021013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000021014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000021015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000021016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000021016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000021017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000022010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000022011001.TXT
@@ -4875,7 +4875,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000022012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000022013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000022014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000022015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000022016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000022016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000022017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000023010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000023011001.TXT
@@ -4883,7 +4883,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000023012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000023013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000023014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000023015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000023016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000023016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000023017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000024010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000024011001.TXT
@@ -4891,7 +4891,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000024012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000024013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000024014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000024015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000024016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000024016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000024017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000025010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000025011001.TXT
@@ -4899,7 +4899,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000025012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000025013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000025014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000025015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000025016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000025016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000025017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000026010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000026011001.TXT
@@ -4907,7 +4907,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000026012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000026013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000026014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000026015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000026016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000026016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000026017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000027010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000027011001.TXT
@@ -4915,7 +4915,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000027012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000027013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000027014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000027015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000027016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000027016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000027017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000028010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000028011001.TXT
@@ -4923,7 +4923,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000028012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000028013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000028014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000028015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000028016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000028016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000028017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000029010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000029011001.TXT
@@ -4931,7 +4931,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000029012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000029013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000029014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000029015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000029016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000029016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000029017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000030010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000030011001.TXT
@@ -4939,7 +4939,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000030012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000030013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000030014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000030015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000030016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000030016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000030017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000031010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000031011001.TXT
@@ -4947,7 +4947,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000031012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000031013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000031014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000031015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000031016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000031016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000031017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000032010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000032011001.TXT
@@ -4955,7 +4955,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000032012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000032013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000032014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000032015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000032016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000032016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000032017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000033010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000033011001.TXT
@@ -4963,7 +4963,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000033012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000033013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000033014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000033015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000033016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000033016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000033017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000034010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000034011001.TXT
@@ -4971,7 +4971,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000034012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000034013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000034014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000034015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000034016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000034016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000034017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000035010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000035011001.TXT
@@ -4979,7 +4979,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000035012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000035013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000035014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000035015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000035016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000035016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000035017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000036010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000036011001.TXT
@@ -4987,7 +4987,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000036012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000036013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000036014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000036015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000036016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000036016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000036017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000037010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000037011001.TXT
@@ -4995,7 +4995,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000037012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000037013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000037014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000037015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000037016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000037016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000037017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000038010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000038011001.TXT
@@ -5003,7 +5003,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000038012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000038013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000038014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000038015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000038016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000038016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000038017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000039010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000039011001.TXT
@@ -5011,7 +5011,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000039012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000039013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000039014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000039015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000039016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000039016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000039017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000040010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000040011001.TXT
@@ -5019,7 +5019,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000040012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000040013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000040014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000040015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000040016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000040016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000040017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000041010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000041011001.TXT
@@ -5027,7 +5027,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000041012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000041013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000041014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000041015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000041016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000041016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000041017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000042010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000042011001.TXT
@@ -5035,7 +5035,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000042012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000042013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000042014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000042015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000042016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000042016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000042017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000043010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000043011001.TXT
@@ -5043,7 +5043,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000043012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000043013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000043014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000043015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000043016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000043016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000043017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000044010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000044011001.TXT
@@ -5051,7 +5051,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000044012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000044013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000044014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000044015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000044016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000044016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000044017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000045010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000045011001.TXT
@@ -5059,7 +5059,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000045012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000045013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000045014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000045015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000045016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000045016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000045017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000046010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000046011001.TXT
@@ -5067,7 +5067,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000046012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000046013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000046014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000046015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000046016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000046016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000046017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000047010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000047011001.TXT
@@ -5075,7 +5075,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000047012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000047013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000047014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000047015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000047016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000047016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000047017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000048010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000048011001.TXT
@@ -5083,7 +5083,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000048012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000048013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000048014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000048015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000048016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000048016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000048017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000049010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000049011001.TXT
@@ -5091,7 +5091,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000049012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000049013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000049014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000049015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000049016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000049016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000049017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000050010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000050011001.TXT
@@ -5099,7 +5099,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000050012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000050013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000050014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000050015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000050016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000050016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000050017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000051010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000051011001.TXT
@@ -5107,7 +5107,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000051012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000051013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000051014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000051015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000051016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000051016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000051017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000052010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000052011001.TXT
@@ -5115,7 +5115,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000052012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000052013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000052014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000052015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000052016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000052016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000052017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000053010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000053011001.TXT
@@ -5123,7 +5123,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000053012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000053013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000053014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000053015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000053016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000053016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000053017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000054010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000054011001.TXT
@@ -5131,7 +5131,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000054012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000054013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000054014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000054015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000054016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000054016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000054017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000055010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000055011001.TXT
@@ -5139,7 +5139,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000055012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000055013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000055014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000055015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000055016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000055016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000055017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000056005000.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000056005005.TXT
@@ -5149,7 +5149,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000056012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000056013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000056014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000056015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000056016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000056016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000056017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000057010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000057011001.TXT
@@ -5157,7 +5157,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000057012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000057013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000057014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000057015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000057016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000057016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000057017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000058010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000058011001.TXT
@@ -5165,7 +5165,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000058012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000058013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000058014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000058015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000058016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000058016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000058017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000059003001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000059003003.TXT
@@ -5176,7 +5176,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000059012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000059013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000059014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000059015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000059016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000059016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000059017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000060007001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000060010001.TXT
@@ -5185,7 +5185,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000060012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000060013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000060014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000060015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000060016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000060016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000060017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000061010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000061011001.TXT
@@ -5193,7 +5193,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000061012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000061013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000061014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000061015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000061016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000061016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000061017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000062010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000062011001.TXT
@@ -5201,7 +5201,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000062012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000062013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000062014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000062015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000062016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000062016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000062017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000063010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000063011001.TXT
@@ -5209,7 +5209,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000063012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000063013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000063014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000063015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000063016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000063016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000063017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000064010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000064011001.TXT
@@ -5217,7 +5217,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000064012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000064013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000064014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000064015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000064016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000064016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000064017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000065010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000065011001.TXT
@@ -5225,7 +5225,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000065012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000065013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000065014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000065015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000065016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000065016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000065017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000066010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000066011001.TXT
@@ -5233,7 +5233,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000066012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000066013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000066014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000066015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000066016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000066016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000066017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000067010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000067011001.TXT
@@ -5241,7 +5241,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000067012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000067013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000067014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000067015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000067016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000067016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000067017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000068010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000068011001.TXT
@@ -5249,7 +5249,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000068012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000068013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000068014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000068015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000068016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000068016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000068017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000069010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000069011001.TXT
@@ -5257,7 +5257,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000069012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000069013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000069014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000069015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000069016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000069016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000069017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000070010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000070011001.TXT
@@ -5265,7 +5265,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000070012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000070013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000070014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000070015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000070016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000070016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000070017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000071010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000071011001.TXT
@@ -5273,7 +5273,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000071012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000071013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000071014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000071015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000071016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000071016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000071017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000072010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000072011001.TXT
@@ -5281,7 +5281,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000072012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000072013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000072014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000072015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000072016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000072016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000072017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000073010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000073011001.TXT
@@ -5289,7 +5289,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000073012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000073013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000073014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000073015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000073016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000073016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000073017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000074002001.TXT
ln -s D_721b028d58d7913b23b93bba60bb73e0.distinct D0000000000074002032.TXT
@@ -5303,7 +5303,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000074013001.TXT
ln -s D_721b028d58d7913b23b93bba60bb73e0.distinct D0000000000074013008.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000074014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000074015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000074016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000074016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000074017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000075010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000075011001.TXT
@@ -5311,7 +5311,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000075012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000075013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000075014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000075015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000075016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000075016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000075017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000076010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000076011001.TXT
@@ -5319,7 +5319,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000076012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000076013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000076014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000076015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000076016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000076016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000076017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000077010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000077011001.TXT
@@ -5327,7 +5327,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000077012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000077013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000077014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000077015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000077016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000077016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000077017001.TXT
ln -s D_721b028d58d7913b23b93bba60bb73e0.distinct D0000000000078008008.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000078010001.TXT
@@ -5340,7 +5340,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000078013001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000078013008.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000078014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000078015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000078016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000078016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000078017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000079010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000079011001.TXT
@@ -5348,7 +5348,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000079012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000079013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000079014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000079015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000079016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000079016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000079017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000080010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000080011001.TXT
@@ -5356,7 +5356,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000080012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000080013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000080014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000080015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000080016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000080016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000080017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000081010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000081011001.TXT
@@ -5364,7 +5364,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000081012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000081013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000081014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000081015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000081016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000081016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000081017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000082010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000082011001.TXT
@@ -5373,7 +5373,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000082012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000082013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000082014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000082015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000082016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000082016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000082017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000083010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000083011001.TXT
@@ -5381,7 +5381,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000083012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000083013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000083014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000083015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000083016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000083016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000083017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000084010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000084011001.TXT
@@ -5389,7 +5389,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000084012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000084013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000084014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000084015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000084016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000084016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000084017001.TXT
ln -s D_721b028d58d7913b23b93bba60bb73e0.distinct D0000000000085005004.TXT
ln -s D_721b028d58d7913b23b93bba60bb73e0.distinct D0000000000085009003.TXT
@@ -5399,7 +5399,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000085012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000085013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000085014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000085015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000085016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000085016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000085017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000086010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000086011001.TXT
@@ -5408,7 +5408,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000086012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000086013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000086014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000086015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000086016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000086016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000086017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000087010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000087011001.TXT
@@ -5416,7 +5416,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000087012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000087013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000087014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000087015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000087016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000087016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000087017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000088010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000088011001.TXT
@@ -5424,7 +5424,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000088012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000088013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000088014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000088015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000088016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000088016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000088017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000089010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000089011001.TXT
@@ -5433,7 +5433,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000089012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000089013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000089014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000089015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000089016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000089016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000089017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000090010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000090011001.TXT
@@ -5441,7 +5441,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000090012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000090013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000090014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000090015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000090016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000090016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000090017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000091010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000091011001.TXT
@@ -5449,7 +5449,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000091012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000091013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000091014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000091015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000091016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000091016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000091017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000092010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000092011001.TXT
@@ -5457,7 +5457,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000092012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000092013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000092014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000092015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000092016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000092016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000092017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000093010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000093011001.TXT
@@ -5465,7 +5465,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000093012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000093013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000093014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000093015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000093016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000093016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000093017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000094010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000094011001.TXT
@@ -5473,7 +5473,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000094012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000094013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000094014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000094015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000094016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000094016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000094017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000095010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000095011001.TXT
@@ -5481,7 +5481,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000095012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000095013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000095014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000095015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000095016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000095016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000095017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000096010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000096011001.TXT
@@ -5489,7 +5489,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000096012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000096013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000096014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000096015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000096016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000096016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000096017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000097010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000097011001.TXT
@@ -5497,7 +5497,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000097012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000097013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000097014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000097015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000097016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000097016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000097017001.TXT
ln -s D_c70df4b3fa64fea39cbecbd4ca4ddd2b.distinct D0000000000098000000.TXT
ln -s D_1fc62821c0515bf144d84a4100bb53f8.distinct D0000000000098002001.TXT
@@ -5519,8 +5519,8 @@ ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000098014001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000098014101.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000098015001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000098015101.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000098016001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000098016101.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000098016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000098016101.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000098017001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000098017101.TXT
ln -s D_5abc7b52b7bc04875961cf145f45319b.distinct D0000000000098018001.TXT
@@ -5544,7 +5544,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000099012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000099013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000099014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000099015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000099016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000099016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000099017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000100010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000100011001.TXT
@@ -5552,7 +5552,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000100012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000100013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000100014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000100015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000100016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000100016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000100017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000101010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000101011001.TXT
@@ -5560,7 +5560,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000101012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000101013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000101014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000101015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000101016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000101016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000101017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000102010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000102011001.TXT
@@ -5568,7 +5568,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000102012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000102013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000102014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000102015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000102016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000102016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000102017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000103010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000103011001.TXT
@@ -5576,7 +5576,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000103012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000103013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000103014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000103015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000103016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000103016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000103017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000104010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000104011001.TXT
@@ -5584,7 +5584,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000104012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000104013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000104014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000104015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000104016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000104016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000104017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000105010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000105011001.TXT
@@ -5592,7 +5592,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000105012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000105013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000105014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000105015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000105016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000105016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000105017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000106010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000106011001.TXT
@@ -5600,7 +5600,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000106012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000106013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000106014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000106015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000106016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000106016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000106017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000107010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000107011001.TXT
@@ -5608,7 +5608,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000107012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000107013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000107014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000107015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000107016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000107016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000107017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000108010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000108011001.TXT
@@ -5616,7 +5616,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000108012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000108013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000108014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000108015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000108016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000108016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000108017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000109010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000109011001.TXT
@@ -5624,7 +5624,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000109012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000109013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000109014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000109015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000109016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000109016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000109017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000110010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000110011001.TXT
@@ -5632,7 +5632,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000110012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000110013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000110014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000110015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000110016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000110016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000110017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000111010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000111011001.TXT
@@ -5640,7 +5640,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000111012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000111013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000111014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000111015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000111016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000111016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000111017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000112010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000112011001.TXT
@@ -5648,7 +5648,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000112012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000112013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000112014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000112015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000112016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000112016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000112017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000113010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000113011001.TXT
@@ -5656,7 +5656,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000113012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000113013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000113014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000113015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000113016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000113016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000113017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000114010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000114011001.TXT
@@ -5664,7 +5664,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000114012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000114013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000114014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000114015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000114016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000114016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000114017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000115010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000115011001.TXT
@@ -5672,7 +5672,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000115012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000115013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000115014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000115015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000115016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000115016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000115017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000116010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000116011001.TXT
@@ -5680,7 +5680,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000116012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000116013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000116014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000116015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000116016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000116016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000116017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000117010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000117011001.TXT
@@ -5688,7 +5688,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000117012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000117013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000117014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000117015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000117016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000117016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000117017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000118010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000118011001.TXT
@@ -5696,7 +5696,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000118012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000118013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000118014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000118015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000118016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000118016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000118017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000119010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000119011001.TXT
@@ -5704,7 +5704,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000119012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000119013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000119014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000119015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000119016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000119016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000119017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000120010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000120011001.TXT
@@ -5712,7 +5712,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000120012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000120013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000120014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000120015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000120016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000120016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000120017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000121010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000121011001.TXT
@@ -5720,7 +5720,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000121012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000121013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000121014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000121015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000121016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000121016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000121017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000122010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000122011001.TXT
@@ -5728,7 +5728,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000122012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000122013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000122014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000122015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000122016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000122016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000122017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000123010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000123011001.TXT
@@ -5736,7 +5736,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000123012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000123013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000123014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000123015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000123016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000123016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000123017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000124010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000124011001.TXT
@@ -5744,7 +5744,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000124012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000124013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000124014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000124015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000124016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000124016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000124017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000125010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000125011001.TXT
@@ -5752,7 +5752,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000125012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000125013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000125014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000125015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000125016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000125016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000125017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000126010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000126011001.TXT
@@ -5760,7 +5760,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000126012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000126013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000126014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000126015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000126016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000126016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000126017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000127010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000127011001.TXT
@@ -5768,7 +5768,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000127012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000127013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000127014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000127015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000127016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000127016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000127017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000128010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000128011001.TXT
@@ -5776,7 +5776,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000128012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000128013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000128014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000128015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000128016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000128016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000128017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000129010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000129011001.TXT
@@ -5784,7 +5784,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000129012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000129013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000129014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000129015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000129016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000129016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000129017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000130010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000130011001.TXT
@@ -5792,7 +5792,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000130012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000130013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000130014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000130015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000130016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000130016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000130017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000131010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000131011001.TXT
@@ -5800,7 +5800,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000131012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000131013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000131014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000131015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000131016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000131016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000131017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000132010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000132011001.TXT
@@ -5808,7 +5808,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000132012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000132013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000132014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000132015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000132016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000132016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000132017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000133010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000133011001.TXT
@@ -5816,7 +5816,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000133012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000133013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000133014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000133015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000133016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000133016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000133017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000134010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000134011001.TXT
@@ -5824,7 +5824,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000134012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000134013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000134014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000134015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000134016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000134016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000134017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000135010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000135011001.TXT
@@ -5832,7 +5832,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000135012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000135013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000135014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000135015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000135016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000135016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000135017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000136010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000136011001.TXT
@@ -5840,7 +5840,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000136012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000136013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000136014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000136015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000136016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000136016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000136017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000137010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000137011001.TXT
@@ -5848,7 +5848,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000137012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000137013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000137014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000137015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000137016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000137016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000137017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000138010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000138011001.TXT
@@ -5856,7 +5856,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000138012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000138013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000138014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000138015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000138016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000138016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000138017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000139010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000139011001.TXT
@@ -5864,7 +5864,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000139012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000139013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000139014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000139015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000139016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000139016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000139017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000140010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000140011001.TXT
@@ -5872,7 +5872,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000140012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000140013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000140014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000140015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000140016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000140016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000140017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000141010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000141011001.TXT
@@ -5880,7 +5880,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000141012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000141013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000141014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000141015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000141016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000141016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000141017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000142010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000142011001.TXT
@@ -5888,7 +5888,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000142012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000142013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000142014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000142015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000142016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000142016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000142017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000143010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000143011001.TXT
@@ -5896,7 +5896,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000143012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000143013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000143014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000143015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000143016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000143016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000143017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000144010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000144011001.TXT
@@ -5904,7 +5904,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000144012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000144013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000144014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000144015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000144016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000144016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000144017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000145010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000145011001.TXT
@@ -5912,7 +5912,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000145012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000145013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000145014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000145015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000145016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000145016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000145017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000146010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000146011001.TXT
@@ -5920,7 +5920,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000146012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000146013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000146014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000146015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000146016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000146016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000146017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000147010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000147011001.TXT
@@ -5928,7 +5928,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000147012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000147013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000147014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000147015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000147016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000147016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000147017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000148010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000148011001.TXT
@@ -5936,7 +5936,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000148012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000148013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000148014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000148015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000148016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000148016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000148017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000149010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000149011001.TXT
@@ -5944,7 +5944,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000149012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000149013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000149014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000149015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000149016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000149016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000149017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000150010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000150011001.TXT
@@ -5952,7 +5952,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000150012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000150013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000150014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000150015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000150016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000150016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000150017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000151010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000151011001.TXT
@@ -5960,7 +5960,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000151012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000151013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000151014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000151015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000151016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000151016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000151017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000152010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000152011001.TXT
@@ -5968,7 +5968,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000152012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000152013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000152014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000152015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000152016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000152016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000152017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000153010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000153011001.TXT
@@ -5976,7 +5976,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000153012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000153013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000153014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000153015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000153016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000153016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000153017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000154010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000154011001.TXT
@@ -5984,7 +5984,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000154012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000154013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000154014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000154015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000154016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000154016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000154017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000155010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000155011001.TXT
@@ -5992,7 +5992,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000155012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000155013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000155014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000155015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000155016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000155016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000155017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000156010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000156011001.TXT
@@ -6000,7 +6000,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000156012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000156013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000156014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000156015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000156016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000156016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000156017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000157010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000157011001.TXT
@@ -6008,7 +6008,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000157012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000157013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000157014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000157015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000157016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000157016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000157017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000158010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000158011001.TXT
@@ -6016,7 +6016,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000158012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000158013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000158014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000158015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000158016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000158016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000158017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000159010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000159011001.TXT
@@ -6024,7 +6024,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000159012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000159013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000159014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000159015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000159016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000159016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000159017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000160006001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000160010001.TXT
@@ -6033,7 +6033,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000160012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000160013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000160014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000160015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000160016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000160016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000160017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000161010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000161011001.TXT
@@ -6041,7 +6041,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000161012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000161013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000161014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000161015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000161016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000161016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000161017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000162010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000162011001.TXT
@@ -6049,7 +6049,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000162012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000162013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000162014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000162015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000162016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000162016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000162017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000163010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000163011001.TXT
@@ -6057,7 +6057,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000163012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000163013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000163014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000163015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000163016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000163016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000163017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000164010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000164011001.TXT
@@ -6065,7 +6065,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000164012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000164013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000164014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000164015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000164016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000164016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000164017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000165010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000165011001.TXT
@@ -6073,7 +6073,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000165012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000165013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000165014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000165015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000165016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000165016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000165017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000166010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000166011001.TXT
@@ -6081,7 +6081,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000166012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000166013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000166014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000166015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000166016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000166016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000166017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000167010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000167011001.TXT
@@ -6089,7 +6089,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000167012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000167013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000167014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000167015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000167016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000167016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000167017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000168010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000168011001.TXT
@@ -6097,7 +6097,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000168012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000168013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000168014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000168015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000168016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000168016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000168017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000169010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000169011001.TXT
@@ -6105,7 +6105,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000169012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000169013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000169014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000169015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000169016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000169016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000169017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000170010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000170011001.TXT
@@ -6113,7 +6113,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000170012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000170013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000170014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000170015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000170016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000170016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000170017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000171010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000171011001.TXT
@@ -6121,7 +6121,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000171012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000171013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000171014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000171015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000171016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000171016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000171017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000172010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000172011001.TXT
@@ -6129,7 +6129,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000172012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000172013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000172014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000172015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000172016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000172016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000172017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000173010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000173011001.TXT
@@ -6137,7 +6137,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000173012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000173013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000173014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000173015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000173016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000173016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000173017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000174010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000174011001.TXT
@@ -6145,7 +6145,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000174012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000174013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000174014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000174015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000174016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000174016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000174017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000175010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000175011001.TXT
@@ -6153,7 +6153,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000175012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000175013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000175014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000175015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000175016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000175016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000175017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000176010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000176011001.TXT
@@ -6161,7 +6161,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000176012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000176013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000176014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000176015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000176016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000176016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000176017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000177010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000177011001.TXT
@@ -6169,7 +6169,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000177012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000177013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000177014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000177015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000177016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000177016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000177017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000178010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000178011001.TXT
@@ -6177,7 +6177,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000178012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000178013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000178014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000178015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000178016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000178016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000178017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000179010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000179011001.TXT
@@ -6185,7 +6185,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000179012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000179013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000179014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000179015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000179016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000179016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000179017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000180010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000180011001.TXT
@@ -6193,7 +6193,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000180012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000180013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000180014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000180015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000180016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000180016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000180017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000181010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000181011001.TXT
@@ -6201,7 +6201,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000181012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000181013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000181014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000181015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000181016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000181016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000181017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000182010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000182011001.TXT
@@ -6209,7 +6209,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000182012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000182013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000182014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000182015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000182016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000182016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000182017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000183010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000183011001.TXT
@@ -6217,7 +6217,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000183012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000183013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000183014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000183015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000183016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000183016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000183017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000184010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000184011001.TXT
@@ -6225,7 +6225,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000184012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000184013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000184014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000184015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000184016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000184016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000184017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000185010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000185011001.TXT
@@ -6233,7 +6233,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000185012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000185013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000185014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000185015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000185016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000185016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000185017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000186010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000186011001.TXT
@@ -6241,7 +6241,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000186012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000186013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000186014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000186015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000186016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000186016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000186017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000187010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000187011001.TXT
@@ -6249,7 +6249,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000187012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000187013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000187014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000187015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000187016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000187016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000187017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000188010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000188011001.TXT
@@ -6257,7 +6257,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000188012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000188013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000188014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000188015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000188016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000188016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000188017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000189010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000189011001.TXT
@@ -6265,7 +6265,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000189012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000189013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000189014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000189015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000189016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000189016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000189017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000190010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000190011001.TXT
@@ -6273,7 +6273,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000190012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000190013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000190014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000190015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000190016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000190016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000190017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000191010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000191011001.TXT
@@ -6281,7 +6281,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000191012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000191013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000191014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000191015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000191016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000191016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000191017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000192010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000192011001.TXT
@@ -6289,7 +6289,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000192012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000192013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000192014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000192015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000192016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000192016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000192017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000193010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000193011001.TXT
@@ -6297,7 +6297,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000193012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000193013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000193014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000193015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000193016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000193016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000193017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000194010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000194011001.TXT
@@ -6305,7 +6305,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000194012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000194013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000194014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000194015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000194016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000194016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000194017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000195010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000195011001.TXT
@@ -6313,7 +6313,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000195012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000195013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000195014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000195015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000195016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000195016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000195017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000196010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000196011001.TXT
@@ -6321,7 +6321,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000196012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000196013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000196014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000196015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000196016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000196016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000196017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000197010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000197011001.TXT
@@ -6329,7 +6329,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000197012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000197013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000197014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000197015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000197016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000197016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000197017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000198010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000198011001.TXT
@@ -6337,7 +6337,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000198012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000198013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000198014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000198015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000198016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000198016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000198017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000199010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000199011001.TXT
@@ -6345,7 +6345,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000199012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000199013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000199014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000199015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000199016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000199016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000199017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000200010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000200011001.TXT
@@ -6353,7 +6353,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000200012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000200013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000200014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000200015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000200016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000200016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000200017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000201010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000201011001.TXT
@@ -6361,7 +6361,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000201012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000201013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000201014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000201015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000201016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000201016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000201017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000202010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000202011001.TXT
@@ -6369,7 +6369,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000202012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000202013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000202014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000202015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000202016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000202016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000202017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000203010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000203011001.TXT
@@ -6377,7 +6377,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000203012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000203013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000203014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000203015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000203016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000203016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000203017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000204010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000204011001.TXT
@@ -6385,7 +6385,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000204012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000204013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000204014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000204015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000204016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000204016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000204017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000205010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000205011001.TXT
@@ -6393,7 +6393,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000205012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000205013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000205014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000205015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000205016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000205016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000205017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000206010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000206011001.TXT
@@ -6401,7 +6401,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000206012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000206013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000206014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000206015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000206016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000206016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000206017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000207010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000207011001.TXT
@@ -6409,7 +6409,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000207012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000207013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000207014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000207015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000207016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000207016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000207017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000208010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000208011001.TXT
@@ -6417,7 +6417,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000208012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000208013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000208014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000208015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000208016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000208016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000208017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000209010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000209011001.TXT
@@ -6425,7 +6425,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000209012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000209013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000209014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000209015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000209016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000209016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000209017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000210010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000210011001.TXT
@@ -6433,7 +6433,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000210012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000210013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000210014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000210015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000210016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000210016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000210017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000211010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000211011001.TXT
@@ -6441,7 +6441,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000211012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000211013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000211014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000211015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000211016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000211016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000211017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000212010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000212011001.TXT
@@ -6449,7 +6449,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000212012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000212013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000212014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000212015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000212016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000212016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000212017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000213010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000213011001.TXT
@@ -6457,7 +6457,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000213012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000213013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000213014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000213015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000213016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000213016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000213017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000214010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000214011001.TXT
@@ -6465,7 +6465,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000214012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000214013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000214014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000214015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000214016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000214016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000214017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000215009003.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000215010001.TXT
@@ -6475,7 +6475,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000215013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000215014001.TXT
ln -s D_99cbfdf89904aeca4a5aabcfaad382db.distinct D0000000000215014008.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000215015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000215016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000215016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000215017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000216010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000216011001.TXT
@@ -6483,7 +6483,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000216012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000216013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000216014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000216015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000216016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000216016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000216017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000217010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000217011001.TXT
@@ -6491,7 +6491,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000217012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000217013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000217014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000217015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000217016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000217016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000217017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000218010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000218011001.TXT
@@ -6499,7 +6499,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000218012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000218013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000218014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000218015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000218016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000218016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000218017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000219010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000219011001.TXT
@@ -6507,7 +6507,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000219012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000219013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000219014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000219015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000219016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000219016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000219017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000220010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000220011001.TXT
@@ -6515,7 +6515,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000220012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000220013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000220014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000220015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000220016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000220016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000220017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000221010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000221011001.TXT
@@ -6523,7 +6523,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000221012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000221013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000221014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000221015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000221016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000221016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000221017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000222010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000222011001.TXT
@@ -6531,7 +6531,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000222012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000222013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000222014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000222015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000222016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000222016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000222017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000223010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000223011001.TXT
@@ -6539,7 +6539,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000223012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000223013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000223014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000223015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000223016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000223016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000223017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000224010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000224011001.TXT
@@ -6547,7 +6547,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000224012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000224013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000224014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000224015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000224016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000224016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000224017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000225010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000225011001.TXT
@@ -6555,7 +6555,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000225012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000225013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000225014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000225015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000225016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000225016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000225017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000226010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000226011001.TXT
@@ -6563,7 +6563,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000226012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000226013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000226014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000226015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000226016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000226016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000226017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000227010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000227011001.TXT
@@ -6571,7 +6571,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000227012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000227013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000227014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000227015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000227016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000227016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000227017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000228010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000228011001.TXT
@@ -6579,7 +6579,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000228012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000228013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000228014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000228015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000228016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000228016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000228017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000229010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000229011001.TXT
@@ -6587,7 +6587,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000229012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000229013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000229014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000229015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000229016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000229016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000229017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000230010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000230011001.TXT
@@ -6595,7 +6595,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000230012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000230013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000230014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000230015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000230016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000230016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000230017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000231010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000231011001.TXT
@@ -6603,7 +6603,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000231012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000231013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000231014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000231015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000231016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000231016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000231017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000232010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000232011001.TXT
@@ -6611,7 +6611,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000232012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000232013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000232014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000232015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000232016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000232016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000232017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000233010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000233011001.TXT
@@ -6619,7 +6619,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000233012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000233013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000233014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000233015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000233016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000233016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000233017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000234010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000234011001.TXT
@@ -6627,7 +6627,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000234012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000234013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000234014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000234015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000234016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000234016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000234017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000235010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000235011001.TXT
@@ -6635,7 +6635,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000235012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000235013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000235014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000235015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000235016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000235016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000235017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000236010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000236011001.TXT
@@ -6643,7 +6643,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000236012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000236013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000236014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000236015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000236016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000236016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000236017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000237010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000237011001.TXT
@@ -6651,7 +6651,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000237012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000237013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000237014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000237015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000237016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000237016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000237017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000238010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000238011001.TXT
@@ -6659,7 +6659,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000238012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000238013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000238014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000238015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000238016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000238016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000238017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000239010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000239011001.TXT
@@ -6667,7 +6667,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000239012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000239013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000239014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000239015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000239016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000239016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000239017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000240010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000240011001.TXT
@@ -6675,7 +6675,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000240012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000240013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000240014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000240015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000240016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000240016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000240017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000241010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000241011001.TXT
@@ -6683,7 +6683,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000241012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000241013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000241014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000241015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000241016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000241016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000241017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000242010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000242011001.TXT
@@ -6691,7 +6691,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000242012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000242013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000242014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000242015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000242016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000242016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000242017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000243010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000243011001.TXT
@@ -6699,7 +6699,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000243012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000243013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000243014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000243015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000243016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000243016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000243017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000244010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000244011001.TXT
@@ -6707,7 +6707,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000244012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000244013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000244014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000244015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000244016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000244016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000244017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000245010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000245011001.TXT
@@ -6715,7 +6715,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000245012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000245013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000245014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000245015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000245016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000245016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000245017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000246010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000246011001.TXT
@@ -6723,7 +6723,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000246012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000246013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000246014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000246015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000246016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000246016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000246017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000247010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000247011001.TXT
@@ -6731,7 +6731,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000247012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000247013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000247014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000247015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000247016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000247016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000247017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000248010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000248011001.TXT
@@ -6739,7 +6739,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000248012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000248013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000248014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000248015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000248016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000248016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000248017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000249010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000249011001.TXT
@@ -6747,7 +6747,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000249012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000249013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000249014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000249015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000249016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000249016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000249017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000250010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000250011001.TXT
@@ -6755,7 +6755,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000250012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000250013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000250014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000250015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000250016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000250016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000250017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000251010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000251011001.TXT
@@ -6763,7 +6763,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000251012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000251013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000251014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000251015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000251016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000251016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000251017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000252010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000252011001.TXT
@@ -6771,7 +6771,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000252012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000252013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000252014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000252015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000252016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000252016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000252017001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000253010001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000253011001.TXT
@@ -6779,7 +6779,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000253012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000253013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000253014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000253015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000253016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000253016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000253017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000254006001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000000254010000.TXT
@@ -6789,7 +6789,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000254012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000254013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000254014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000254015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000254016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000254016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000254017001.TXT
ln -s D_163528c9416c4e586d5646ecdfae2cbd.distinct D0000000000254019001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000255010001.TXT
@@ -6798,7 +6798,7 @@ ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000255012001.TXT
ln -s D_df21a931ba159c58c3b9b00236baac59.distinct D0000000000255013001.TXT
ln -s D_1b430bccf004fff784a904a211c075bd.distinct D0000000000255014001.TXT
ln -s D_282e48b64107e2fd90c5d9e7f1f6a349.distinct D0000000000255015001.TXT
-ln -s D_37f24485fa8f2c4abd0c02a2b42ee3fc.distinct D0000000000255016001.TXT
+ln -s D_97904881abf209f200d7dab466e706ce.distinct D0000000000255016001.TXT
ln -s D_173e9169eaed3807be0f5fdad3111fed.distinct D0000000000255017001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000065535002001.TXT
ln -s D_1a04522fbc85dad28a197e988a256c72.distinct D0000000065535002004.TXT
diff --git a/cmake/FindADSM.cmake b/cmake/FindADSM.cmake
index 7af6723..b46e798 100644
--- a/cmake/FindADSM.cmake
+++ b/cmake/FindADSM.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindAEC.cmake b/cmake/FindAEC.cmake
index 8a59037..767544f 100644
--- a/cmake/FindAEC.cmake
+++ b/cmake/FindAEC.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindAIO.cmake b/cmake/FindAIO.cmake
index c27b795..76e357a 100644
--- a/cmake/FindAIO.cmake
+++ b/cmake/FindAIO.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindArmadillo.cmake b/cmake/FindArmadillo.cmake
index a3628a5..5fdf2a6 100644
--- a/cmake/FindArmadillo.cmake
+++ b/cmake/FindArmadillo.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindCMath.cmake b/cmake/FindCMath.cmake
index cf80f85..0c18b52 100644
--- a/cmake/FindCMath.cmake
+++ b/cmake/FindCMath.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindDl.cmake b/cmake/FindDl.cmake
index 30db9c6..3fb3cc8 100644
--- a/cmake/FindDl.cmake
+++ b/cmake/FindDl.cmake
@@ -1,4 +1,4 @@
-# © Copyright 1996-2015 ECMWF.
+# © Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindEMOS.cmake b/cmake/FindEMOS.cmake
index 70028ca..c549fc2 100644
--- a/cmake/FindEMOS.cmake
+++ b/cmake/FindEMOS.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindFDB.cmake b/cmake/FindFDB.cmake
index 9608a54..4bcbdf3 100644
--- a/cmake/FindFDB.cmake
+++ b/cmake/FindFDB.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindHPSS.cmake b/cmake/FindHPSS.cmake
index a96b8d4..b2b662b 100644
--- a/cmake/FindHPSS.cmake
+++ b/cmake/FindHPSS.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindLEX.cmake b/cmake/FindLEX.cmake
index 00335c2..221868f 100644
--- a/cmake/FindLEX.cmake
+++ b/cmake/FindLEX.cmake
@@ -44,7 +44,7 @@
# This file is based on the FindFLEX CMake macro, and adapted by ECMWF
#=============================================================================
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindLegacyFDB.cmake b/cmake/FindLegacyFDB.cmake
index f461a0e..f92be59 100644
--- a/cmake/FindLegacyFDB.cmake
+++ b/cmake/FindLegacyFDB.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindLibGFortran.cmake b/cmake/FindLibGFortran.cmake
index 200ffcb..f1150e8 100644
--- a/cmake/FindLibGFortran.cmake
+++ b/cmake/FindLibGFortran.cmake
@@ -1,8 +1,8 @@
-# © Copyright 1996-2015 ECMWF.
-#
+# © Copyright 1996-2016 ECMWF.
+#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -23,16 +23,16 @@ if( GFORTRAN_EXECUTABLE )
ERROR_VARIABLE _GFORTRAN_ERROR_VALUE
OUTPUT_STRIP_TRAILING_WHITESPACE)
-# debug_var(_GFORTRAN_SEARCH_SUCCESS)
-# debug_var(_GFORTRAN_VALUES_OUTPUT)
-# debug_var(_GFORTRAN_ERROR_VALUE)
+# ecbuild_debug_var(_GFORTRAN_SEARCH_SUCCESS)
+# ecbuild_debug_var(_GFORTRAN_VALUES_OUTPUT)
+# ecbuild_debug_var(_GFORTRAN_ERROR_VALUE)
if(_GFORTRAN_SEARCH_SUCCESS MATCHES 0)
string(REGEX REPLACE ".*libraries: =(.*)" "\\1" _result ${_GFORTRAN_VALUES_OUTPUT})
string(REGEX REPLACE ":" ";" _gfortran_hints ${_result} )
endif()
- debug_var( _gfortran_hints )
+ ecbuild_debug_var( _gfortran_hints )
endif()
diff --git a/cmake/FindLibIFort.cmake b/cmake/FindLibIFort.cmake
index e1d82ee..8e12ad8 100644
--- a/cmake/FindLibIFort.cmake
+++ b/cmake/FindLibIFort.cmake
@@ -1,4 +1,4 @@
-# © Copyright 1996-2015 ECMWF.
+# © Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindMKL.cmake b/cmake/FindMKL.cmake
index fe182a4..1123234 100644
--- a/cmake/FindMKL.cmake
+++ b/cmake/FindMKL.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindNDBM.cmake b/cmake/FindNDBM.cmake
index 5203ee9..869223f 100644
--- a/cmake/FindNDBM.cmake
+++ b/cmake/FindNDBM.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindNetCDF.cmake b/cmake/FindNetCDF.cmake
index 89af114..9084549 100644
--- a/cmake/FindNetCDF.cmake
+++ b/cmake/FindNetCDF.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -76,7 +76,7 @@ if( PREFER_NETCDF4 )
## hdf5
- # Note: Only the HDF5 C-library is required for NetCDF
+ # Note: Only the HDF5 C-library is required for NetCDF
# ( even for Fortan and CXX bindings)
find_package( HDF5 COMPONENTS C QUIET )
@@ -87,24 +87,24 @@ if( PREFER_NETCDF4 )
# Find NetCDF4
# message( "NETCDF CMAKE_PREFIX_PATH = [${CMAKE_PREFIX_PATH}]")
- # debug_var( NETCDF_ROOT )
- # debug_var( NETCDF_FIND_COMPONENTS )
- # debug_var( NETCDF_FIND_QUIETLY )
- # debug_var( NETCDF_FIND_REQUIRED )
+ # ecbuild_debug_var( NETCDF_ROOT )
+ # ecbuild_debug_var( NETCDF_FIND_COMPONENTS )
+ # ecbuild_debug_var( NETCDF_FIND_QUIETLY )
+ # ecbuild_debug_var( NETCDF_FIND_REQUIRED )
find_package( NetCDF4 COMPONENTS ${NETCDF_FIND_COMPONENTS} )
- # debug_var( NETCDF4_FOUND )
- # debug_var( NETCDF_FOUND )
- # debug_var( NETCDF_LIBRARIES )
- # debug_var( NETCDF_INCLUDE_DIRS )
+ # ecbuild_debug_var( NETCDF4_FOUND )
+ # ecbuild_debug_var( NETCDF_FOUND )
+ # ecbuild_debug_var( NETCDF_LIBRARIES )
+ # ecbuild_debug_var( NETCDF_INCLUDE_DIRS )
list( APPEND NETCDF_Fortran_LIBRARIES ${NETCDF_FORTRAN_LIBRARIES} ${NETCDF_F90_LIBRARIES} )
if( NETCDF_Fortran_LIBRARIES )
list( REMOVE_DUPLICATES NETCDF_Fortran_LIBRARIES )
endif()
- # debug_var( NETCDF_Fortran_LIBRARIES )
- # debug_var( NETCDF_C_LIBRARIES )
- # debug_var( NETCDF_CXX_LIBRARIES )
+ # ecbuild_debug_var( NETCDF_Fortran_LIBRARIES )
+ # ecbuild_debug_var( NETCDF_C_LIBRARIES )
+ # ecbuild_debug_var( NETCDF_CXX_LIBRARIES )
set_package_properties( NetCDF4 PROPERTIES TYPE RECOMMENDED PURPOSE "support for NetCDF4 file format" )
@@ -115,13 +115,13 @@ if( PREFER_NETCDF4 )
list( APPEND NETCDF_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS} )
endif()
- #debug_var( NETCDF_FOUND )
- #debug_var( NETCDF_LIBRARIES )
- #debug_var( NETCDF_INCLUDE_DIRS )
- #debug_var( HDF5_FOUND )
- #debug_var( HDF5_INCLUDE_DIRS )
- #debug_var( HDF5_HL_LIBRARIES )
- #debug_var( HDF5_LIBRARIES )
+ #ecbuild_debug_var( NETCDF_FOUND )
+ #ecbuild_debug_var( NETCDF_LIBRARIES )
+ #ecbuild_debug_var( NETCDF_INCLUDE_DIRS )
+ #ecbuild_debug_var( HDF5_FOUND )
+ #ecbuild_debug_var( HDF5_INCLUDE_DIRS )
+ #ecbuild_debug_var( HDF5_HL_LIBRARIES )
+ #ecbuild_debug_var( HDF5_LIBRARIES )
endif()
@@ -131,9 +131,9 @@ if( PREFER_NETCDF3 )
ecbuild_debug( "FindNetCDF: looking for NetCDF3" )
- # debug_var( NetCDF_FIND_COMPONENTS )
- # debug_var( NetCDF_FIND_QUIETLY )
- # debug_var( NetCDF_FIND_REQUIRED )
+ # ecbuild_debug_var( NetCDF_FIND_COMPONENTS )
+ # ecbuild_debug_var( NetCDF_FIND_QUIETLY )
+ # ecbuild_debug_var( NetCDF_FIND_REQUIRED )
list(FIND NetCDF_FIND_COMPONENTS "CXX" _index)
if(${_index} GREATER -1)
diff --git a/cmake/FindNetCDF3.cmake b/cmake/FindNetCDF3.cmake
index 40e6bc0..1fe9a74 100644
--- a/cmake/FindNetCDF3.cmake
+++ b/cmake/FindNetCDF3.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindODB.cmake b/cmake/FindODB.cmake
index 3a1fa12..1beb5c8 100644
--- a/cmake/FindODB.cmake
+++ b/cmake/FindODB.cmake
@@ -1,4 +1,4 @@
-# © Copyright 1996-2015 ECMWF.
+# © Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindOpenCL.cmake b/cmake/FindOpenCL.cmake
index e4e9556..4995d92 100644
--- a/cmake/FindOpenCL.cmake
+++ b/cmake/FindOpenCL.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindOpenJPEG.cmake b/cmake/FindOpenJPEG.cmake
index 82d19fb..805f091 100644
--- a/cmake/FindOpenJPEG.cmake
+++ b/cmake/FindOpenJPEG.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindPGIFortran.cmake b/cmake/FindPGIFortran.cmake
index 7308e49..58956fe 100644
--- a/cmake/FindPGIFortran.cmake
+++ b/cmake/FindPGIFortran.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindPango.cmake b/cmake/FindPango.cmake
index 811cdf9..fc1f879 100644
--- a/cmake/FindPango.cmake
+++ b/cmake/FindPango.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2015 ECMWF.
-#
+# (C) Copyright 1996-2016 ECMWF.
+#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -17,10 +17,10 @@ find_package(PkgConfig)
pkg_check_modules(PC_LIBPANGO QUIET pango)
-debug_var( PC_LIBPANGO_FOUND )
-debug_var( PC_LIBPANGO_VERSION )
-debug_var( PC_LIBPANGO_LIBRARIES )
-debug_var( PC_LIBPANGO_INCLUDE_DIRS )
+ecbuild_debug_var( PC_LIBPANGO_FOUND )
+ecbuild_debug_var( PC_LIBPANGO_VERSION )
+ecbuild_debug_var( PC_LIBPANGO_LIBRARIES )
+ecbuild_debug_var( PC_LIBPANGO_INCLUDE_DIRS )
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args( pango DEFAULT_MSG PC_LIBPANGO_LIBRARIES PC_LIBPANGO_INCLUDE_DIRS )
diff --git a/cmake/FindPangoCairo.cmake b/cmake/FindPangoCairo.cmake
index 7445754..a852e65 100644
--- a/cmake/FindPangoCairo.cmake
+++ b/cmake/FindPangoCairo.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -18,12 +18,12 @@ find_package(PkgConfig)
pkg_check_modules(PC_LIBPANGOCAIRO QUIET pangocairo)
-#debug_var( PC_LIBPANGOCAIRO_FOUND )
-#debug_var( PC_LIBPANGOCAIRO_VERSION )
-#debug_var( PC_LIBPANGOCAIRO_LIBRARIES )
-#debug_var( PC_LIBPANGOCAIRO_LDFLAGS )
-#debug_var( PC_LIBPANGOCAIRO_LDFLAGS_OTHER )
-#debug_var( PC_LIBPANGOCAIRO_INCLUDE_DIRS )
+#ecbuild_debug_var( PC_LIBPANGOCAIRO_FOUND )
+#ecbuild_debug_var( PC_LIBPANGOCAIRO_VERSION )
+#ecbuild_debug_var( PC_LIBPANGOCAIRO_LIBRARIES )
+#ecbuild_debug_var( PC_LIBPANGOCAIRO_LDFLAGS )
+#ecbuild_debug_var( PC_LIBPANGOCAIRO_LDFLAGS_OTHER )
+#ecbuild_debug_var( PC_LIBPANGOCAIRO_INCLUDE_DIRS )
if(PC_LIBPANGOCAIRO_FOUND)
diff --git a/cmake/FindProj4.cmake b/cmake/FindProj4.cmake
index 6774b6e..64eab79 100644
--- a/cmake/FindProj4.cmake
+++ b/cmake/FindProj4.cmake
@@ -38,9 +38,9 @@ if( NOT PROJ4_PATH )
endif()
-# debug_var( PKG_CONFIG_FOUND )
-# debug_var( PKPROJ4_FOUND )
-# debug_var( PROJ4_MIN_VERSION )
+# ecbuild_debug_var( PKG_CONFIG_FOUND )
+# ecbuild_debug_var( PKPROJ4_FOUND )
+# ecbuild_debug_var( PROJ4_MIN_VERSION )
endif()
@@ -55,8 +55,8 @@ find_path(PROJ4_INCLUDE_DIR NAMES proj_api.h PATHS PATH_SUFFIXES proj4 )
find_library( PROJ4_LIBRARY NAMES proj PATHS PATH_SUFFIXES proj4 )
-# debug_var( PROJ4_INCLUDE_DIR )
-# debug_var( PROJ4_LIBRARY )
+# ecbuild_debug_var( PROJ4_INCLUDE_DIR )
+# ecbuild_debug_var( PROJ4_LIBRARY )
# handle the QUIETLY and REQUIRED arguments and set GRIBAPI_FOUND
include(FindPackageHandleStandardArgs)
diff --git a/cmake/FindREADLINE.cmake b/cmake/FindREADLINE.cmake
index bbabe15..2ba08b4 100644
--- a/cmake/FindREADLINE.cmake
+++ b/cmake/FindREADLINE.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -47,8 +47,8 @@ cmake_push_check_state()
cmake_pop_check_state()
-# debug_var( readline_version )
-# debug_var( __readline_version_out )
+# ecbuild_debug_var( readline_version )
+# ecbuild_debug_var( __readline_version_out )
set( __readline_fail 0 )
if( __readline_version_out )
diff --git a/cmake/FindRPCGEN.cmake b/cmake/FindRPCGEN.cmake
index 3e25daf..fd42e9f 100644
--- a/cmake/FindRPCGEN.cmake
+++ b/cmake/FindRPCGEN.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindRealtime.cmake b/cmake/FindRealtime.cmake
index 2c2a7b2..8fd65b1 100644
--- a/cmake/FindRealtime.cmake
+++ b/cmake/FindRealtime.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindSZip.cmake b/cmake/FindSZip.cmake
index 6e9b1a2..925348c 100644
--- a/cmake/FindSZip.cmake
+++ b/cmake/FindSZip.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindTrilinos.cmake b/cmake/FindTrilinos.cmake
index a1cabce..0d99b54 100644
--- a/cmake/FindTrilinos.cmake
+++ b/cmake/FindTrilinos.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindViennaCL.cmake b/cmake/FindViennaCL.cmake
index a1b1eb9..af7469d 100644
--- a/cmake/FindViennaCL.cmake
+++ b/cmake/FindViennaCL.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindXLFortranLibs.cmake b/cmake/FindXLFortranLibs.cmake
index 10a68aa..ff93481 100644
--- a/cmake/FindXLFortranLibs.cmake
+++ b/cmake/FindXLFortranLibs.cmake
@@ -1,4 +1,4 @@
-# © Copyright 1996-2015 ECMWF.
+# © Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/FindYACC.cmake b/cmake/FindYACC.cmake
index a410c6f..7b15bfe 100644
--- a/cmake/FindYACC.cmake
+++ b/cmake/FindYACC.cmake
@@ -41,7 +41,7 @@
# This file is based on the FindFLEX CMake macro, and adapted by ECMWF
#=============================================================================
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/Findgrib_api.cmake b/cmake/Findgrib_api.cmake
index 8b6cb43..ab6fc0b 100644
--- a/cmake/Findgrib_api.cmake
+++ b/cmake/Findgrib_api.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -20,16 +20,16 @@ option( GRIB_API_JPG "use jpg with grib_api" ON )
if( NOT grib_api_FOUND AND NOT NO_GRIB_API_BINARIES )
if( GRIB_API_JPG ) # jpeg support
-
+
find_package( JPEG QUIET ) # grib_api might be a static .a library in which
-
+
if( NOT "$ENV{JASPER_PATH}" STREQUAL "" )
list( APPEND CMAKE_PREFIX_PATH "$ENV{JASPER_PATH}" )
endif()
find_package( Jasper QUIET ) # case we don't know if which jpeg library was used
-
- find_package( OpenJPEG QUIET ) # so we try to find all jpeg libs and link to them
-
+
+ find_package( OpenJPEG QUIET ) # so we try to find all jpeg libs and link to them
+
if(JPEG_FOUND)
list( APPEND _grib_api_jpg_incs ${JPEG_INCLUDE_DIR} )
list( APPEND _grib_api_jpg_libs ${JPEG_LIBRARIES} )
@@ -44,18 +44,18 @@ if( NOT grib_api_FOUND AND NOT NO_GRIB_API_BINARIES )
endif()
endif()
-
+
if( GRIB_API_PNG ) # png support
-
+
find_package(PNG)
-
+
if( DEFINED PNG_PNG_INCLUDE_DIR AND NOT DEFINED PNG_INCLUDE_DIRS )
set( PNG_INCLUDE_DIRS ${PNG_PNG_INCLUDE_DIR} CACHE INTERNAL "PNG include dirs" )
endif()
if( DEFINED PNG_LIBRARY AND NOT DEFINED PNG_LIBRARIES )
set( PNG_LIBRARIES ${PNG_LIBRARY} CACHE INTERNAL "PNG libraries" )
endif()
-
+
if(PNG_FOUND)
list( APPEND _grib_api_png_defs ${PNG_DEFINITIONS} )
list( APPEND _grib_api_png_incs ${PNG_INCLUDE_DIRS} )
@@ -85,22 +85,22 @@ if( NOT grib_api_FOUND AND NOT NO_GRIB_API_BINARIES )
find_library(GRIB_API_LIB_F77 NAMES grib_api_f77 PATHS ${GRIB_API_PATH} ${GRIB_API_PATH}/lib PATH_SUFFIXES grib_api NO_DEFAULT_PATH)
find_program(GRIB_API_INFO NAMES grib_info PATHS ${GRIB_API_PATH} ${GRIB_API_PATH}/bin PATH_SUFFIXES grib_api NO_DEFAULT_PATH)
endif()
-
+
find_path(GRIB_API_INCLUDE_DIR NAMES grib_api.h PATHS PATH_SUFFIXES grib_api )
find_library( GRIB_API_LIBRARY NAMES grib_api PATHS PATH_SUFFIXES grib_api )
find_library( GRIB_API_LIB_F90 NAMES grib_api_f90 PATHS PATH_SUFFIXES grib_api )
find_library( GRIB_API_LIB_F77 NAMES grib_api_f77 PATHS PATH_SUFFIXES grib_api )
find_program(GRIB_API_INFO NAMES grib_info PATHS PATH_SUFFIXES grib_api )
-
+
list( APPEND GRIB_API_LIBRARIES ${GRIB_API_LIBRARY} ${GRIB_API_LIB_F90} ${GRIB_API_LIB_F77} )
set( GRIB_API_INCLUDE_DIRS ${GRIB_API_INCLUDE_DIR} )
if( GRIB_API_INFO )
-
+
execute_process( COMMAND ${GRIB_API_INFO} -v OUTPUT_VARIABLE _grib_info_out ERROR_VARIABLE _grib_info_err OUTPUT_STRIP_TRAILING_WHITESPACE )
-
- # debug_var( _grib_info_out )
-
+
+ # ecbuild_debug_var( _grib_info_out )
+
string( REPLACE "." " " _version_list ${_grib_info_out} ) # dots to spaces
separate_arguments( _version_list )
@@ -108,22 +108,22 @@ if( NOT grib_api_FOUND AND NOT NO_GRIB_API_BINARIES )
list( GET _version_list 1 GRIB_API_MINOR_VERSION )
list( GET _version_list 2 GRIB_API_PATCH_VERSION )
- set( GRIB_API_VERSION "${GRIB_API_MAJOR_VERSION}.${GRIB_API_MINOR_VERSION}.${GRIB_API_PATCH_VERSION}" )
+ set( GRIB_API_VERSION "${GRIB_API_MAJOR_VERSION}.${GRIB_API_MINOR_VERSION}.${GRIB_API_PATCH_VERSION}" )
set( GRIB_API_VERSION_STR "${_grib_info_out}" )
- set( grib_api_VERSION "${GRIB_API_VERSION}" )
+ set( grib_api_VERSION "${GRIB_API_VERSION}" )
set( grib_api_VERSION_STR "${GRIB_API_VERSION_STR}" )
endif()
-
+
include(FindPackageHandleStandardArgs)
-
+
# handle the QUIETLY and REQUIRED arguments and set GRIB_API_FOUND to TRUE
find_package_handle_standard_args( grib_api DEFAULT_MSG
GRIB_API_LIBRARY GRIB_API_INCLUDE_DIR GRIB_API_INFO )
-
+
mark_as_advanced( GRIB_API_INCLUDE_DIR GRIB_API_LIBRARY GRIB_API_INFO )
-
+
list( APPEND GRIB_API_DEFINITIONS ${_grib_api_jpg_defs} ${_grib_api_png_defs} )
list( APPEND GRIB_API_INCLUDE_DIRS ${_grib_api_jpg_incs} ${_grib_api_png_incs} )
list( APPEND GRIB_API_LIBRARIES ${_grib_api_jpg_libs} ${_grib_api_png_libs} )
diff --git a/cmake/Findodb_api.cmake b/cmake/Findodb_api.cmake
index 2b8e800..0058fbe 100644
--- a/cmake/Findodb_api.cmake
+++ b/cmake/Findodb_api.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/Findspot.cmake b/cmake/Findspot.cmake
index cad0e33..52e0fb5 100644
--- a/cmake/Findspot.cmake
+++ b/cmake/Findspot.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/VERSION.cmake b/cmake/VERSION.cmake
index a07bd4a..e7ac9ad 100644
--- a/cmake/VERSION.cmake
+++ b/cmake/VERSION.cmake
@@ -1,7 +1,7 @@
-set( ECBUILD_MAJOR_VERSION "1" )
-set( ECBUILD_MINOR_VERSION "9" )
+set( ECBUILD_MAJOR_VERSION "2" )
+set( ECBUILD_MINOR_VERSION "0" )
set( ECBUILD_PATCH_VERSION "0" )
-set( ECBUILD_VERSION_STR "1.9.0" )
+set( ECBUILD_VERSION_STR "2.0.0" )
set( ECBUILD_MACRO_VERSION "${ECBUILD_MAJOR_VERSION}.${ECBUILD_MINOR_VERSION}" )
diff --git a/cmake/compiler_flags/Clang_C.cmake b/cmake/compiler_flags/Clang_C.cmake
new file mode 100644
index 0000000..bc73c69
--- /dev/null
+++ b/cmake/compiler_flags/Clang_C.cmake
@@ -0,0 +1,13 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "C compiler flags for Release builds" FORCE )
+set( CMAKE_C_FLAGS_BIT "-O2 -DNDEBUG" CACHE STRING "C compiler flags for Bit-reproducible builds" FORCE )
+set( CMAKE_C_FLAGS_DEBUG "-O0 -g -ftrapv" CACHE STRING "C compiler flags for Debug builds" FORCE )
+set( CMAKE_C_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "C compiler flags for Production builds." FORCE )
+set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "C compiler flags for RelWithDebInfo builds." FORCE )
diff --git a/cmake/compiler_flags/Clang_CXX.cmake b/cmake/compiler_flags/Clang_CXX.cmake
new file mode 100644
index 0000000..53f0f21
--- /dev/null
+++ b/cmake/compiler_flags/Clang_CXX.cmake
@@ -0,0 +1,13 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "C++ compiler flags for Release builds" FORCE )
+set( CMAKE_CXX_FLAGS_BIT "-O2 -DNDEBUG" CACHE STRING "C++ compiler flags for Bit-reproducible builds" FORCE )
+set( CMAKE_CXX_FLAGS_DEBUG "-O0 -g -ftrapv" CACHE STRING "C++ compiler flags for Debug builds" FORCE )
+set( CMAKE_CXX_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "C++ compiler flags for Production builds." FORCE )
+set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "C++ compiler flags for RelWithDebInfo builds." FORCE )
diff --git a/cmake/compiler_flags/Cray_C.cmake b/cmake/compiler_flags/Cray_C.cmake
new file mode 100644
index 0000000..76779f9
--- /dev/null
+++ b/cmake/compiler_flags/Cray_C.cmake
@@ -0,0 +1,14 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_C_FLAGS_ALL "-hlist=amid" CACHE STRING "Common flags for all build-types" FORCE )
+set( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" CACHE STRING "Release C flags" FORCE )
+set( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG" CACHE STRING "Release-with-debug-info C flags" FORCE )
+set( CMAKE_C_FLAGS_PRODUCTION "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -G2" CACHE STRING "Production C flags" FORCE )
+set( CMAKE_C_FLAGS_BIT "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible C flags" FORCE )
+set( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_ALL} -O0 -G0" CACHE STRING "Debug Cflags" FORCE )
diff --git a/cmake/compiler_flags/Cray_CXX.cmake b/cmake/compiler_flags/Cray_CXX.cmake
new file mode 100644
index 0000000..d599bff
--- /dev/null
+++ b/cmake/compiler_flags/Cray_CXX.cmake
@@ -0,0 +1,14 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_CXX_FLAGS_ALL "-hlist=amid" CACHE STRING "Common flags for all build-types" FORCE )
+set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" CACHE STRING "Release C++ flags" FORCE )
+set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG" CACHE STRING "Release-with-debug-info C++ flags" FORCE )
+set( CMAKE_CXX_FLAGS_PRODUCTION "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -G2" CACHE STRING "Production C++ flags" FORCE )
+set( CMAKE_CXX_FLAGS_BIT "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible C++ flags" FORCE )
+set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_ALL} -O0 -G0" CACHE STRING "Debug CXX flags" FORCE )
diff --git a/cmake/compiler_flags/Cray_Fortran.cmake b/cmake/compiler_flags/Cray_Fortran.cmake
new file mode 100644
index 0000000..b2c23de
--- /dev/null
+++ b/cmake/compiler_flags/Cray_Fortran.cmake
@@ -0,0 +1,15 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+# -emf activates .mods and uses lower case
+set( CMAKE_Fortran_FLAGS_ALL "-emf" CACHE STRING "Common flags for all build-types" FORCE )
+set( CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" CACHE STRING "Release Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG" CACHE STRING "Release-with-debug-info Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_PRODUCTION "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -G2" CACHE STRING "Production Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_BIT "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_ALL} -O0 -G0" CACHE STRING "Debug Fortran flags" FORCE )
diff --git a/cmake/compiler_flags/GNU_C.cmake b/cmake/compiler_flags/GNU_C.cmake
new file mode 100644
index 0000000..955f527
--- /dev/null
+++ b/cmake/compiler_flags/GNU_C.cmake
@@ -0,0 +1,18 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "C compiler flags for Release builds" FORCE )
+set( CMAKE_C_FLAGS_BIT "-g -O2 -m64 -march=native -DNDEBUG" CACHE STRING "C compiler flags for Bit-reproducible builds" FORCE )
+set( CMAKE_C_FLAGS_DEBUG "-O0 -g" CACHE STRING "C compiler flags for Debug builds" FORCE )
+set( CMAKE_C_FLAGS_PRODUCTION "-O2 -g" CACHE STRING "C compiler flags for Production builds." FORCE )
+set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "C compiler flags for RelWithDebInfo builds." FORCE )
+
+# NOTE: gcc does not guarrante that -O3 performs better than -O2
+# -- it can perform worse due to assembly code bloating.
+# Moreover for gcc 4.1.2 we found that -O3 remove the parser code generated from Lex/Yacc
+# and therefore in production mode we downgrade to -O2 if the compiler is GCC (for all versions).
diff --git a/cmake/compiler_flags/GNU_CXX.cmake b/cmake/compiler_flags/GNU_CXX.cmake
new file mode 100644
index 0000000..0ab8c3a
--- /dev/null
+++ b/cmake/compiler_flags/GNU_CXX.cmake
@@ -0,0 +1,18 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "C++ compiler flags for Release builds" FORCE )
+set( CMAKE_CXX_FLAGS_BIT "-g -O2 -m64 -march=native -DNDEBUG" CACHE STRING "C++ compiler flags for Bit-reproducible builds" FORCE )
+set( CMAKE_CXX_FLAGS_DEBUG "-O0 -g" CACHE STRING "C++ compiler flags for Debug builds" FORCE )
+set( CMAKE_CXX_FLAGS_PRODUCTION "-O2 -g" CACHE STRING "C++ compiler flags for Production builds." FORCE )
+set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "C++ compiler flags for RelWithDebInfo builds." FORCE )
+
+# NOTE: gcc does not guarrante that -O3 performs better than -O2
+# -- it can perform worse due to assembly code bloating.
+# Moreover for gcc 4.1.2 we found that -O3 remove the parser code generated from Lex/Yacc
+# and therefore in production mode we downgrade to -O2 if the compiler is GCC (for all versions).
diff --git a/cmake/compiler_flags/GNU_Fortran.cmake b/cmake/compiler_flags/GNU_Fortran.cmake
new file mode 100644
index 0000000..a12abec
--- /dev/null
+++ b/cmake/compiler_flags/GNU_Fortran.cmake
@@ -0,0 +1,21 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_Fortran_FLAGS_RELEASE "-O3 -funroll-all-loops -finline-functions" CACHE STRING "Fortran compiler flags for Release builds" FORCE )
+set( CMAKE_Fortran_FLAGS_BIT "-g -O2 -m64 -march=native -DNDEBUG -fno-range-check -fconvert=big-endian" CACHE STRING "Fortran compiler flags for Bit-reproducible builds" FORCE )
+set( CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -fcheck=bounds -fbacktrace -finit-real=snan" CACHE STRING "Fortran compiler flags for Debug builds" FORCE )
+set( CMAKE_Fortran_FLAGS_PRODUCTION "-O2 -g" CACHE STRING "Fortran compiler flags for Production builds." FORCE )
+set( CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Fortran compiler flags for RelWithDebInfo builds." FORCE )
+
+####################################################################
+
+# Meaning of flags
+# ----------------
+# -fstack-arrays : Allocate automatic arrays on the stack (needs large stacksize!!!)
+# -funroll-all-loops : Unroll all loops
+# -fcheck=bounds : Bounds checking
diff --git a/cmake/compiler_flags/Intel_C.cmake b/cmake/compiler_flags/Intel_C.cmake
new file mode 100644
index 0000000..dbea59f
--- /dev/null
+++ b/cmake/compiler_flags/Intel_C.cmake
@@ -0,0 +1,13 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "Release C compiler flags" FORCE )
+set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Release-with-debug-info C compiler flags" FORCE )
+set( CMAKE_C_FLAGS_BIT "-O2 -DNDEBUG" CACHE STRING "Bit-reproducible C compiler flags" FORCE )
+set( CMAKE_C_FLAGS_DEBUG "-O0 -g -traceback" CACHE STRING "Debug C compiler flags" FORCE )
+set( CMAKE_C_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "Production C compiler flags" FORCE )
diff --git a/cmake/compiler_flags/Intel_CXX.cmake b/cmake/compiler_flags/Intel_CXX.cmake
new file mode 100644
index 0000000..5b8dc78
--- /dev/null
+++ b/cmake/compiler_flags/Intel_CXX.cmake
@@ -0,0 +1,13 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG" CACHE STRING "Release C++ compiler flags" FORCE )
+set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Release-with-debug-info C++ compiler flags" FORCE )
+set( CMAKE_CXX_FLAGS_BIT "-O2 -DNDEBUG" CACHE STRING "Bit-reproducible C++ compiler flags" FORCE )
+set( CMAKE_CXX_FLAGS_DEBUG "-O0 -g -traceback" CACHE STRING "Debug C++ compiler flags" FORCE )
+set( CMAKE_CXX_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "Production C++ compiler flags" FORCE )
diff --git a/cmake/compiler_flags/Intel_Fortran.cmake b/cmake/compiler_flags/Intel_Fortran.cmake
new file mode 100644
index 0000000..86b69dc
--- /dev/null
+++ b/cmake/compiler_flags/Intel_Fortran.cmake
@@ -0,0 +1,14 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( CMAKE_Fortran_FLAGS_RELEASE "-O3 -unroll -inline -heap-arrays" CACHE STRING "Release Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Release-with-debug-info Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_BIT "-O2 -unroll -inline -heap-arrays" CACHE STRING "Bit-reproducible Fortran flags" FORCE )
+# -check all implies -check bounds
+set( CMAKE_Fortran_FLAGS_DEBUG "-O0 -g -traceback -heap-arrays -check all" CACHE STRING "Debug Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "Production Fortran compiler flags" FORCE )
diff --git a/cmake/compiler_flags/PGI_C.cmake b/cmake/compiler_flags/PGI_C.cmake
new file mode 100644
index 0000000..6784a14
--- /dev/null
+++ b/cmake/compiler_flags/PGI_C.cmake
@@ -0,0 +1,11 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+set( CMAKE_C_FLAGS_RELEASE "-fast -O3 -DNDEBUG" CACHE STRING "Release C compiler flags" FORCE )
+
+set( CMAKE_C_LINK_FLAGS "" CACHE STRING "" )
diff --git a/cmake/compiler_flags/PGI_CXX.cmake b/cmake/compiler_flags/PGI_CXX.cmake
new file mode 100644
index 0000000..877ef3f
--- /dev/null
+++ b/cmake/compiler_flags/PGI_CXX.cmake
@@ -0,0 +1,11 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+set( CMAKE_CXX_FLAGS_RELEASE "-fast -O3 -DNDEBUG" CACHE STRING "Release C++ compiler flags" FORCE )
+
+set( CMAKE_CXX_LINK_FLAGS "" CACHE STRING "" )
diff --git a/cmake/compiler_flags/PGI_Fortran.cmake b/cmake/compiler_flags/PGI_Fortran.cmake
new file mode 100644
index 0000000..a268cc9
--- /dev/null
+++ b/cmake/compiler_flags/PGI_Fortran.cmake
@@ -0,0 +1,11 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+set( CMAKE_Fortran_FLAGS_RELEASE "-fast -O3" CACHE STRING "Release Fortran compiler flags" FORCE )
+
+set( CMAKE_Fortran_LINK_FLAGS "" CACHE STRING "" )
diff --git a/cmake/contrib/FindFFTW.cmake b/cmake/contrib/FindFFTW.cmake
index d76767b..5ef46df 100644
--- a/cmake/contrib/FindFFTW.cmake
+++ b/cmake/contrib/FindFFTW.cmake
@@ -1,22 +1,60 @@
-# - Find the FFTW library
-#
-# Usage:
-# find_package(FFTW [REQUIRED] [QUIET] )
-#
-# It sets the following variables:
-# FFTW_FOUND ... true if fftw is found on the system
-# FFTW_LIBRARIES ... full path to fftw library
-# FFTW_INCLUDES ... fftw include directory
-#
-# The following variables will be checked by the function
-# FFTW_USE_STATIC_LIBS ... if true, only static libraries are found
-# FFTW_ROOT ... if set, the libraries are exclusively searched
-# under this path
-# FFTW_DIR ... equivalent to FFTW_ROOT
-# FFTW_PATH ... equivalent to FFTW_ROOT
-# FFTW_LIBRARY ... fftw library to use
-# FFTW_INCLUDE_DIR ... fftw include directory
+# (C) Copyright 1996-2016 ECMWF.
#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# FindFFTW
+# ========
+#
+# Find the FFTW library. ::
+#
+# find_package(FFTW [REQUIRED] [QUIET]
+# [COMPONENTS [single] [double] [long_double] [quad]])
+#
+# By default, search for the double precision library ``fftw3``
+#
+# Components
+# ----------
+#
+# If a different version or multiple versions of the library are required,
+# these need to be specified as ``COMPONENTS``. Note that double must be given
+# explicitly if any ``COMPONENTS`` are specified.
+#
+# The libraries corresponding to each of the ``COMPONENTS`` are:
+#
+# :single: ``fftw3f``
+# :double: ``fftw3``
+# :long_double: ``fftw3l``
+# :quad: ``fftw3q``
+#
+# Output variables
+# ----------------
+#
+# The following CMake variables are set on completion:
+#
+# :FFTW_FOUND: true if FFTW is found on the system
+# :FFTW_LIBRARIES: full paths to requested FFTW libraries
+# :FFTW_INCLUDES: FFTW include directory
+#
+# Input variables
+# ---------------
+#
+# The following CMake variables are checked by the function:
+#
+# :FFTW_USE_STATIC_LIBS: if true, only static libraries are found
+# :FFTW_ROOT: if set, this path is exclusively searched
+# :FFTW_DIR: equivalent to FFTW_ROOT
+# :FFTW_PATH: equivalent to FFTW_ROOT
+# :FFTW_LIBRARY: FFTW library to use
+# :FFTW_INCLUDE_DIR: FFTW include directory
+#
+##############################################################################
#============================================#
# #
@@ -72,76 +110,103 @@ else()
set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX} )
endif()
+if( FFTW_FIND_COMPONENTS )
+ ecbuild_debug( "FindFFTW: looking for components: ${FFTW_FIND_COMPONENTS}" )
+ foreach( _component ${FFTW_FIND_COMPONENTS} )
+ if( _component MATCHES "single" )
+ ecbuild_debug( "FindFFTW: looking for single precision (fftw3f)" )
+ set( _require_sp TRUE )
+ elseif( _component MATCHES "double" )
+ ecbuild_debug( "FindFFTW: looking for double precision (fftw3)" )
+ set( _require_dp TRUE )
+ elseif( _component MATCHES "long_double" )
+ ecbuild_debug( "FindFFTW: looking for long double precision (fftw3l)" )
+ set( _require_lp TRUE )
+ elseif( _component MATCHES "quad" )
+ ecbuild_debug( "FindFFTW: looking for quad precision (fftw3q)" )
+ set( _require_qp TRUE )
+ else()
+ endif()
+ endforeach()
+else()
+ ecbuild_debug( "FindFFTW: no components specified, looking for double precision (fftw3)" )
+ set( _require_dp TRUE )
+endif()
+
if( FFTW_ROOT )
+ set( _default_paths NO_DEFAULT_PATH )
+ set( _lib_paths ${FFTW_ROOT} )
+ set( _include_paths ${FFTW_ROOT} )
+else()
+ set( _lib_paths ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} )
+ set( _include_paths ${PKG_FFTW_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR} )
+endif()
+
+#find libs
- #find libs
+if( _require_dp )
find_library(
FFTW_LIB
NAMES "fftw3"
- PATHS ${FFTW_ROOT}
+ PATHS ${_lib_paths}
PATH_SUFFIXES "lib" "lib64"
- NO_DEFAULT_PATH
+ ${_default_paths}
)
+ if( NOT FFTW_LIB )
+ ecbuild_warn("FindFFTW: double precision required, but fftw3 was not found")
+ endif()
+endif()
+if( _require_sp )
find_library(
FFTWF_LIB
NAMES "fftw3f"
- PATHS ${FFTW_ROOT}
+ PATHS ${_lib_paths}
PATH_SUFFIXES "lib" "lib64"
- NO_DEFAULT_PATH
+ ${_default_paths}
)
+ if( NOT FFTWF_LIB )
+ ecbuild_warn("FindFFTW: single precision required, but fftw3f was not found")
+ endif()
+endif()
+if( _require_lp )
find_library(
FFTWL_LIB
NAMES "fftw3l"
- PATHS ${FFTW_ROOT}
+ PATHS ${_lib_paths}
PATH_SUFFIXES "lib" "lib64"
- NO_DEFAULT_PATH
+ ${_default_paths}
)
+ if( NOT FFTWL_LIB )
+ ecbuild_warn("FindFFTW: long double precision required, but fftw3l was not found")
+ endif()
+endif()
- #find includes
- find_path(
- FFTW_INCLUDES
- NAMES "fftw3.h"
- PATHS ${FFTW_ROOT}
- PATH_SUFFIXES "include"
- NO_DEFAULT_PATH
- )
-
-else()
-
- find_library(
- FFTW_LIB
- NAMES "fftw3"
- PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR}
- )
-
- find_library(
- FFTWF_LIB
- NAMES "fftw3f"
- PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR}
- )
-
-
+if( _require_qp )
find_library(
- FFTWL_LIB
- NAMES "fftw3l"
- PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR}
- )
-
- find_path(
- FFTW_INCLUDES
- NAMES "fftw3.h"
- PATHS ${PKG_FFTW_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR}
+ FFTWQ_LIB
+ NAMES "fftw3q"
+ PATHS ${_lib_paths}
+ PATH_SUFFIXES "lib" "lib64"
+ ${_default_paths}
)
+ if( NOT FFTWQ_LIB )
+ ecbuild_warn("FindFFTW: quad precision required, but fftw3q was not found")
+ endif()
+endif()
-endif( FFTW_ROOT )
+#find includes
-set(FFTW_LIBRARIES ${FFTW_LIB} ${FFTWF_LIB})
+find_path(
+ FFTW_INCLUDES
+ NAMES "fftw3.h"
+ PATHS ${_include_paths}
+ PATH_SUFFIXES "include"
+ ${_default_paths}
+)
-if(FFTWL_LIB)
- set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTWL_LIB})
-endif()
+set(FFTW_LIBRARIES ${FFTW_LIB} ${FFTWF_LIB} ${FFTWL_LIB} ${FFTWQ_LIB})
set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV} )
@@ -149,4 +214,4 @@ include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(FFTW DEFAULT_MSG
FFTW_INCLUDES FFTW_LIBRARIES)
-mark_as_advanced(FFTW_INCLUDES FFTW_LIBRARIES FFTW_LIB FFTWF_LIB FFTWL_LIB)
\ No newline at end of file
+mark_as_advanced(FFTW_INCLUDES FFTW_LIBRARIES FFTW_LIB FFTWF_LIB FFTWL_LIB)
diff --git a/cmake/contrib/FindNetCDF4.cmake b/cmake/contrib/FindNetCDF4.cmake
index 89b0337..2afff21 100644
--- a/cmake/contrib/FindNetCDF4.cmake
+++ b/cmake/contrib/FindNetCDF4.cmake
@@ -158,7 +158,7 @@ else()
foreach( LANGUAGE ${NETCDF_LANGUAGE_BINDINGS} )
ecbuild_debug("FindNetCDF4: looking for ${LANGUAGE} language bindings")
set( NETCDF_${LANGUAGE}_FOUND 1 ) # disable this in following if necessary
-
+
# find the NETCDF includes
foreach( INC ${NETCDF_${LANGUAGE}_INCLUDE_NAMES} )
find_path( NETCDF_${INC}_INCLUDE_DIR ${INC}
@@ -170,7 +170,7 @@ else()
Include
)
mark_as_advanced( NETCDF_${INC}_INCLUDE_DIR )
- # debug_var( NETCDF_${INC}_INCLUDE_DIR)
+ # ecbuild_debug_var( NETCDF_${INC}_INCLUDE_DIR)
if (NETCDF_${INC}_INCLUDE_DIR)
list( APPEND NETCDF_INCLUDE_DIRS ${NETCDF_${INC}_INCLUDE_DIR} )
else()
@@ -249,19 +249,19 @@ else()
# Append the libraries for this language binding to the list of all
# required libraries.
-
+
if( NETCDF_${LANGUAGE}_FOUND )
ecbuild_debug( "FindNetCDF4: ${LANGUAGE} language bindings found" )
if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
- list( APPEND NETCDF_${LANGUAGE}_LIBRARIES
+ list( APPEND NETCDF_${LANGUAGE}_LIBRARIES
debug ${NETCDF_${LANGUAGE}_LIBRARIES_DEBUG}
optimized ${NETCDF_${LANGUAGE}_LIBRARIES_RELEASE} )
else()
- list( APPEND NETCDF_${LANGUAGE}_LIBRARIES
- ${NETCDF_${LANGUAGE}_LIBRARIES_RELEASE} )
+ list( APPEND NETCDF_${LANGUAGE}_LIBRARIES
+ ${NETCDF_${LANGUAGE}_LIBRARIES_RELEASE} )
endif()
endif()
- # debug_var( NETCDF_${LANGUAGE}_LIBRARIES )
+ # ecbuild_debug_var( NETCDF_${LANGUAGE}_LIBRARIES )
list( APPEND NETCDF_FOUND_REQUIRED_VARS NETCDF_${LANGUAGE}_FOUND )
endforeach()
diff --git a/cmake/contrib/GetGitRevisionDescription.cmake.in b/cmake/contrib/GetGitRevisionDescription.cmake.in
index 7a3e42f..9fd3e64 100644
--- a/cmake/contrib/GetGitRevisionDescription.cmake.in
+++ b/cmake/contrib/GetGitRevisionDescription.cmake.in
@@ -33,6 +33,10 @@ else()
endif()
if(NOT HEAD_HASH)
+ if(EXISTS "@GIT_DATA@/head-ref")
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
string(STRIP "${HEAD_HASH}" HEAD_HASH)
-endif()
\ No newline at end of file
+ else()
+ set(HEAD_HASH "unknown")
+ endif()
+endif()
diff --git a/cmake/ecbuild_add_c_flags.cmake b/cmake/ecbuild_add_c_flags.cmake
index bef1d34..bef45f3 100644
--- a/cmake/ecbuild_add_c_flags.cmake
+++ b/cmake/ecbuild_add_c_flags.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -40,41 +40,53 @@ macro( ecbuild_add_c_flags m_c_flags )
cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
- if( NOT DEFINED N_CFLAG )
- set( N_CFLAG 0 )
+ set( _try_add_flag TRUE )
+ if( _PAR_BUILD )
+ string( TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_CAPS )
+ string( TOUPPER ${_PAR_BUILD} _PAR_BUILD_CAPS )
+ if( NOT CMAKE_BUILD_TYPE_CAPS MATCHES "${_PAR_BUILD_CAPS}" )
+ set( _try_add_flag FALSE )
+ endif()
endif()
+ if( _try_add_flag )
+ if( NOT DEFINED N_CFLAG )
+ set( N_CFLAG 0 )
+ endif()
- math( EXPR N_CFLAG '${N_CFLAG}+1' )
+ math( EXPR N_CFLAG '${N_CFLAG}+1' )
- if( NOT ECBUILD_TRUST_FLAGS )
- if( DEFINED _PAR_NAME )
- check_c_compiler_flag( ${_flags} ${_PAR_NAME} )
- set( _flag_ok ${${_PAR_NAME}} )
+ if( NOT ECBUILD_TRUST_FLAGS )
+ if( DEFINED _PAR_NAME )
+ check_c_compiler_flag( ${_flags} ${_PAR_NAME} )
+ set( _flag_ok ${${_PAR_NAME}} )
+ else()
+ check_c_compiler_flag( ${_flags} C_FLAG_TEST_${N_CFLAG} )
+ set( _flag_ok ${C_FLAG_TEST_${N_CFLAG}} )
+ endif()
else()
- check_c_compiler_flag( ${_flags} C_FLAG_TEST_${N_CFLAG} )
- set( _flag_ok ${C_FLAG_TEST_${N_CFLAG}} )
+ set( _flag_ok 1 )
endif()
- else()
- set( _flag_ok 1 )
- endif()
- if( _flag_ok )
- if( _PAR_BUILD )
- set( CMAKE_C_FLAGS_${_PAR_BUILD} "${CMAKE_C_FLAGS_${_PAR_BUILD}} ${_flags}" )
- ecbuild_debug( "C FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+ if( _flag_ok )
+ if( _PAR_BUILD )
+ set( CMAKE_C_FLAGS_${_PAR_BUILD} "${CMAKE_C_FLAGS_${_PAR_BUILD}} ${_flags}" )
+ ecbuild_debug( "C FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+ else()
+ set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" )
+ ecbuild_debug( "C FLAG [${_flags}] added" )
+ endif()
else()
- set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" )
- ecbuild_debug( "C FLAG [${_flags}] added" )
+ message( WARNING "Unrecognised C flag [${_flags}] -- skipping" )
endif()
- else()
- message( WARNING "Unrecognised C flag [${_flags}] -- skipping" )
endif()
+ unset( _flags )
+ unset( _flag_ok )
+ unset( _try_add_flag )
endif()
- unset( _flags )
- unset( _flag_ok )
+
endmacro()
macro( cmake_add_c_flags m_c_flags )
- message( DEPRECATION " cmake_add_c_flags is deprecated, use ecbuild_add_c_flags instead." )
+ ecbuild_deprecate( " cmake_add_c_flags is deprecated, use ecbuild_add_c_flags instead." )
ecbuild_add_c_flags( ${m_c_flags} )
endmacro()
diff --git a/cmake/ecbuild_add_cxx11_flags.cmake b/cmake/ecbuild_add_cxx11_flags.cmake
index a4cce91..df8cde5 100644
--- a/cmake/ecbuild_add_cxx11_flags.cmake
+++ b/cmake/ecbuild_add_cxx11_flags.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_add_cxx_flags.cmake b/cmake/ecbuild_add_cxx_flags.cmake
index 8393572..9e59305 100644
--- a/cmake/ecbuild_add_cxx_flags.cmake
+++ b/cmake/ecbuild_add_cxx_flags.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -39,42 +39,54 @@ macro( ecbuild_add_cxx_flags m_cxx_flags )
cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
- if( NOT DEFINED N_CXXFLAG )
- set( N_CXXFLAG 0 )
+ set( _try_add_flag TRUE )
+ if( _PAR_BUILD )
+ string( TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_CAPS )
+ string( TOUPPER ${_PAR_BUILD} _PAR_BUILD_CAPS )
+ if( NOT CMAKE_BUILD_TYPE_CAPS MATCHES "${_PAR_BUILD_CAPS}" )
+ set( _try_add_flag FALSE )
+ endif()
endif()
+ if( _try_add_flag )
+
+ if( NOT DEFINED N_CXXFLAG )
+ set( N_CXXFLAG 0 )
+ endif()
- math( EXPR N_CXXFLAG '${N_CXXFLAG}+1' )
+ math( EXPR N_CXXFLAG '${N_CXXFLAG}+1' )
- if( NOT ECBUILD_TRUST_FLAGS )
- if( DEFINED _PAR_NAME )
- check_cxx_compiler_flag( ${_flags} ${_PAR_NAME} )
- set( _flag_ok ${${_PAR_NAME}} )
+ if( NOT ECBUILD_TRUST_FLAGS )
+ if( DEFINED _PAR_NAME )
+ check_cxx_compiler_flag( ${_flags} ${_PAR_NAME} )
+ set( _flag_ok ${${_PAR_NAME}} )
+ else()
+ check_cxx_compiler_flag( ${_flags} CXX_FLAG_TEST_${N_CXXFLAG} )
+ set( _flag_ok CXX_FLAG_TEST_${N_CXXFLAG} )
+ endif()
else()
- check_cxx_compiler_flag( ${_flags} CXX_FLAG_TEST_${N_CXXFLAG} )
- set( _flag_ok CXX_FLAG_TEST_${N_CXXFLAG} )
+ set( _flag_ok 1 )
endif()
- else()
- set( _flag_ok 1 )
- endif()
- if( _flag_ok )
- if( _PAR_BUILD )
- set( CMAKE_CXX_FLAGS_${_PAR_BUILD} "${CMAKE_CXX_FLAGS_${_PAR_BUILD}} ${_flags}" )
- ecbuild_debug( "C++ FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+ if( _flag_ok )
+ if( _PAR_BUILD )
+ set( CMAKE_CXX_FLAGS_${_PAR_BUILD} "${CMAKE_CXX_FLAGS_${_PAR_BUILD}} ${_flags}" )
+ ecbuild_debug( "C++ FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+ else()
+ set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" )
+ ecbuild_debug( "C++ FLAG [${_flags}] added" )
+ endif()
else()
- set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" )
- ecbuild_debug( "C++ FLAG [${_flags}] added" )
+ message( STATUS "Unrecognised CXX flag [${_flags}] -- skipping" )
endif()
- else()
- message( STATUS "Unrecognised CXX flag [${_flags}] -- skipping" )
endif()
+ unset( _flags )
+ unset( _flag_ok )
+ unset( _try_add_flag )
endif()
- unset( _flags )
- unset( _flag_ok )
endmacro()
macro( cmake_add_cxx_flags m_cxx_flags )
- message( DEPRECATION " cmake_add_cxx_flags is deprecated, use ecbuild_add_cxx_flags instead." )
+ ecbuild_deprecate( " cmake_add_cxx_flags is deprecated, use ecbuild_add_cxx_flags instead." )
ecbuild_add_cxx_flags( ${m_cxx_flags} )
endmacro()
diff --git a/cmake/ecbuild_add_executable.cmake b/cmake/ecbuild_add_executable.cmake
index e4e39a1..d2e3f4c 100644
--- a/cmake/ecbuild_add_executable.cmake
+++ b/cmake/ecbuild_add_executable.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -16,6 +16,9 @@
#
# ecbuild_add_executable( TARGET <name>
# SOURCES <source1> [<source2> ...]
+# [ SOURCES_GLOB <glob1> [<glob2> ...] ]
+# [ SOURCES_EXCLUDE_REGEX <regex1> [<regex2> ...] ]
+# [ OBJECTS <obj1> [<obj2> ...] ]
# [ TEMPLATES <template1> [<template2> ...] ]
# [ LIBS <library1> [<library2> ...] ]
# [ INCLUDES <path1> [<path2> ...] ]
@@ -41,6 +44,16 @@
# SOURCES : required
# list of source files
#
+# SOURCES_GLOB : optional
+# search pattern to find source files to compile (note: not recommend according to CMake guidelines)
+# it is usually better to explicitly list the source files in the CMakeList.txt
+#
+# SOURCES_EXCLUDE_REGEX : optional
+# search pattern to exclude source files from compilation, applies o the results of SOURCES_GLOB
+#
+# OBJECTS : optional
+# list of object libraries to add to this target
+#
# TEMPLATES : optional
# list of files specified as SOURCES which are not to be compiled separately
# (these are commonly template implementation files included in a header)
@@ -69,7 +82,7 @@
#
# NOINSTALL : optional
# do not install the executable
-#
+#
# VERSION : optional, AUTO_VERSION or LIBS_VERSION is used if not specified
# version to use as executable version
#
@@ -85,7 +98,6 @@
# FFLAGS : optional
# list of Fortran compiler flags to use for all Fortran source files
#
-#
# LINKER_LANGUAGE : optional
# sets the LINKER_LANGUAGE property on the target
#
@@ -98,7 +110,7 @@ macro( ecbuild_add_executable )
set( options NOINSTALL AUTO_VERSION )
set( single_value_args TARGET COMPONENT LINKER_LANGUAGE VERSION OUTPUT_NAME )
- set( multi_value_args SOURCES TEMPLATES LIBS INCLUDES DEPENDS PERSISTENT DEFINITIONS CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
+ set( multi_value_args SOURCES SOURCES_GLOB SOURCES_EXCLUDE_REGEX OBJECTS TEMPLATES LIBS INCLUDES DEPENDS PERSISTENT DEFINITIONS CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
@@ -110,8 +122,8 @@ macro( ecbuild_add_executable )
message(FATAL_ERROR "The call to ecbuild_add_executable() doesn't specify the TARGET.")
endif()
- if( NOT _PAR_SOURCES )
- message(FATAL_ERROR "The call to ecbuild_add_executable() doesn't specify the SOURCES.")
+ if( NOT _PAR_SOURCES AND NOT _PAR_OBJECTS AND NOT _PAR_SOURCES_GLOB )
+ message(FATAL_ERROR "The call to ecbuild_add_executable() specifies neither SOURCES nor OBJECTS nor SOURCES_GLOB.")
endif()
### conditional build
@@ -130,19 +142,6 @@ macro( ecbuild_add_executable )
if( _${_PAR_TARGET}_condition )
- # add include dirs if defined
- if( DEFINED _PAR_INCLUDES )
- list(REMOVE_DUPLICATES _PAR_INCLUDES )
- foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
- if( path )
- ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): add ${path} to include_directories")
- include_directories( ${path} )
- else()
- ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): ${path} not found - not adding to include_directories")
- endif()
- endforeach()
- endif()
-
# add persistent layer files
if( DEFINED _PAR_PERSISTENT )
if( DEFINED PERSISTENT_NAMESPACE )
@@ -159,8 +158,44 @@ macro( ecbuild_add_executable )
add_custom_target( ${_PAR_TARGET}_templates SOURCES ${_PAR_TEMPLATES} )
endif()
- # add the executable target
- add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} )
+ # glob sources
+ unset( _glob_srcs )
+ foreach( pattern ${_PAR_SOURCES_GLOB} )
+ ecbuild_list_add_pattern( LIST _glob_srcs GLOB "${pattern}" )
+ endforeach()
+
+ foreach( pattern ${_PAR_SOURCES_EXCLUDE_REGEX} )
+ ecbuild_list_exclude_pattern( LIST _glob_srcs REGEX "${pattern}" )
+ endforeach()
+
+ # insert already compiled objects (from OBJECT libraries)
+ unset( _all_objects )
+ foreach( _obj ${_PAR_OBJECTS} )
+ list( APPEND _all_objects $<TARGET_OBJECTS:${_obj}> )
+ endforeach()
+
+ list( APPEND _PAR_SOURCES ${_glob_srcs} )
+
+ if( ECBUILD_LIST_SOURCES )
+ ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): sources ${_PAR_SOURCES}")
+ endif()
+
+ add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} ${_all_objects} )
+
+ # ecbuild_echo_target( ${_PAR_TARGET} )
+
+ # add include dirs if defined
+ if( DEFINED _PAR_INCLUDES )
+ list(REMOVE_DUPLICATES _PAR_INCLUDES )
+ foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
+ if( path )
+ ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): add ${path} to include_directories")
+ target_include_directories( ${_PAR_TARGET} PRIVATE ${path} )
+ else()
+ ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): ${path} not found - not adding to include_directories")
+ endif()
+ endforeach()
+ endif()
# set OUTPUT_NAME
@@ -191,24 +226,71 @@ macro( ecbuild_add_executable )
endif()
# filter sources
+
ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
+ # ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
+ # ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
+ # ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
+ # ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
+
# add local flags
- if( DEFINED _PAR_CFLAGS )
- ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
- set_source_files_properties( ${${_PAR_TARGET}_c_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
- endif()
- if( DEFINED _PAR_CXXFLAGS )
- ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
- set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+
+ if( ${_PAR_TARGET}_c_srcs )
+
+ if( ECBUILD_SOURCE_FLAGS )
+ ecbuild_source_flags( ${_PAR_TARGET}_C_SOURCE_FLAGS
+ ${_PAR_TARGET}_c
+ "${_PAR_CFLAGS}"
+ "${${_PAR_TARGET}_c_srcs}" )
+
+ ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file C flags from ${${_PAR_TARGET}_C_SOURCE_FLAGS}")
+ include( ${${_PAR_TARGET}_C_SOURCE_FLAGS} )
+
+ elseif( DEFINED _PAR_CFLAGS )
+
+ ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
+ set_source_files_properties( ${${_PAR_TARGET}_c_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+
+ endif()
endif()
- if( DEFINED _PAR_FFLAGS )
- ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
- set_source_files_properties( ${${_PAR_TARGET}_f_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+
+ if( ${_PAR_TARGET}_cxx_srcs )
+
+ if( ECBUILD_SOURCE_FLAGS )
+ ecbuild_source_flags( ${_PAR_TARGET}_CXX_SOURCE_FLAGS
+ ${_PAR_TARGET}_cxx
+ "${_PAR_CXXFLAGS}"
+ "${${_PAR_TARGET}_cxx_srcs}" )
+
+ ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file CXX flags from ${${_PAR_TARGET}_CXX_SOURCE_FLAGS}")
+ include( ${${_PAR_TARGET}_CXX_SOURCE_FLAGS} )
+
+ elseif( DEFINED _PAR_CXXFLAGS )
+
+ ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
+ set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+
+ endif()
endif()
- if( DEFINED _PAR_GENERATED )
- ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
- set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
+
+ if( ${_PAR_TARGET}_f_srcs )
+
+ if( ECBUILD_SOURCE_FLAGS )
+ ecbuild_source_flags( ${_PAR_TARGET}_Fortran_SOURCE_FLAGS
+ ${_PAR_TARGET}_f
+ "${_PAR_FFLAGS}"
+ "${${_PAR_TARGET}_f_srcs}" )
+
+ ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file Fortran flags from ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS}")
+ include( ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS} )
+
+ elseif( DEFINED _PAR_FFLAGS )
+
+ ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
+ set_source_files_properties( ${${_PAR_TARGET}_f_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+
+ endif()
endif()
# define VERSION if requested
@@ -222,11 +304,6 @@ macro( ecbuild_add_executable )
endif()
endif()
- # debug_var( ${_PAR_TARGET}_h_srcs )
- # debug_var( ${_PAR_TARGET}_c_srcs )
- # debug_var( ${_PAR_TARGET}_cxx_srcs )
- # debug_var( ${_PAR_TARGET}_f_srcs )
-
# installation
if( NOT _PAR_NOINSTALL )
@@ -240,7 +317,7 @@ macro( ecbuild_add_executable )
# endif()
install( TARGETS ${_PAR_TARGET}
- EXPORT ${CMAKE_PROJECT_NAME}-targets
+ EXPORT ${PROJECT_NAME}-targets
RUNTIME DESTINATION ${INSTALL_BIN_DIR}
LIBRARY DESTINATION ${INSTALL_LIB_DIR}
ARCHIVE DESTINATION ${INSTALL_LIB_DIR} )
@@ -273,6 +350,13 @@ macro( ecbuild_add_executable )
if( DEFINED _PAR_LINKER_LANGUAGE )
ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): using linker language ${_PAR_LINKER_LANGUAGE}")
set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
+ if( ECBUILD_${_PAR_LINKER_LANGUAGE}_IMPLICIT_LINK_LIBRARIES )
+ target_link_libraries( ${_PAR_TARGET} ${ECBUILD_${_PAR_LINKER_LANGUAGE}_IMPLICIT_LINK_LIBRARIES} )
+ endif()
+ endif()
+
+ if( ECBUILD_IMPLICIT_LINK_LIBRARIES )
+ target_link_libraries( ${_PAR_TARGET} ${ECBUILD_IMPLICIT_LINK_LIBRARIES} )
endif()
# make sure target is removed before - some problems with AIX
diff --git a/cmake/ecbuild_add_extra_search_paths.cmake b/cmake/ecbuild_add_extra_search_paths.cmake
index fac96ba..94ac85b 100644
--- a/cmake/ecbuild_add_extra_search_paths.cmake
+++ b/cmake/ecbuild_add_extra_search_paths.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -15,10 +15,10 @@
function( ecbuild_add_extra_search_paths pkg )
- message( DEPRECATION " ecbuild_add_extra_search_paths modifies CMAKE_PREFIX_PATH,"
- " which can affect future package discovery if not undone by the caller."
- " The current CMAKE_PREFIX_PATH is being backed up as _CMAKE_PREFIX_PATH"
- " so it can later be restored." )
+ ecbuild_deprecate( " ecbuild_add_extra_search_paths modifies CMAKE_PREFIX_PATH,"
+ " which can affect future package discovery if not undone by the caller."
+ " The current CMAKE_PREFIX_PATH is being backed up as _CMAKE_PREFIX_PATH"
+ " so it can later be restored." )
# Back up current CMAKE_PREFIX_PATH so the caller can reset it
set( _CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE )
@@ -28,6 +28,6 @@ function( ecbuild_add_extra_search_paths pkg )
ecbuild_list_extra_search_paths( ${pkg} CMAKE_PREFIX_PATH )
set( CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE )
- # debug_var( CMAKE_PREFIX_PATH )
+ # ecbuild_debug_var( CMAKE_PREFIX_PATH )
endfunction()
diff --git a/cmake/ecbuild_add_fortran_flags.cmake b/cmake/ecbuild_add_fortran_flags.cmake
index f0da53f..cf61a0a 100644
--- a/cmake/ecbuild_add_fortran_flags.cmake
+++ b/cmake/ecbuild_add_fortran_flags.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -44,43 +44,55 @@ macro( ecbuild_add_fortran_flags m_fortran_flags )
cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
- if( NOT DEFINED N_FortranFLAG )
- set( N_FortranFLAG 0 )
+ set( _try_add_flag TRUE )
+ if( _PAR_BUILD )
+ string( TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_CAPS )
+ string( TOUPPER ${_PAR_BUILD} _PAR_BUILD_CAPS )
+ if( NOT CMAKE_BUILD_TYPE_CAPS MATCHES "${_PAR_BUILD_CAPS}" )
+ set( _try_add_flag FALSE )
+ endif()
endif()
- math( EXPR N_FortranFLAG '${N_FortranFLAG}+1' )
+ if( _try_add_flag )
+ if( NOT DEFINED N_FortranFLAG )
+ set( N_FortranFLAG 0 )
+ endif()
+
+ math( EXPR N_FortranFLAG '${N_FortranFLAG}+1' )
- if( NOT ECBUILD_TRUST_FLAGS )
- if( DEFINED _PAR_NAME )
- check_fortran_compiler_flag( ${_flags} ${_PAR_NAME} )
- set( _flag_ok ${${_PAR_NAME}} )
+ if( NOT ECBUILD_TRUST_FLAGS )
+ if( DEFINED _PAR_NAME )
+ check_fortran_compiler_flag( ${_flags} ${_PAR_NAME} )
+ set( _flag_ok ${${_PAR_NAME}} )
+ else()
+ check_fortran_compiler_flag( ${_flags} Fortran_FLAG_TEST_${N_FortranFLAG} )
+ set( _flag_ok ${Fortran_FLAG_TEST_${N_FortranFLAG}} )
+ endif()
else()
- check_fortran_compiler_flag( ${_flags} Fortran_FLAG_TEST_${N_FortranFLAG} )
- set( _flag_ok ${Fortran_FLAG_TEST_${N_FortranFLAG}} )
+ set( _flag_ok 1 )
endif()
- else()
- set( _flag_ok 1 )
- endif()
- if( _flag_ok )
- if( _PAR_BUILD )
- set( CMAKE_Fortran_FLAGS_${_PAR_BUILD} "${CMAKE_Fortran_FLAGS_${_PAR_BUILD}} ${_flags}" )
- ecbuild_debug( "Fortran FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+ if( _flag_ok )
+ if( _PAR_BUILD )
+ set( CMAKE_Fortran_FLAGS_${_PAR_BUILD} "${CMAKE_Fortran_FLAGS_${_PAR_BUILD}} ${_flags}" )
+ ecbuild_debug( "Fortran FLAG [${_flags}] added for build type ${_PAR_BUILD}" )
+ else()
+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${_flags}" )
+ ecbuild_debug( "Fortran FLAG [${_flags}] added" )
+ endif()
else()
- set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${_flags}" )
- ecbuild_debug( "Fortran FLAG [${_flags}] added" )
+ message( STATUS "Unrecognised Fortran flag [${_flags}] -- skipping" )
endif()
- else()
- message( STATUS "Unrecognised Fortran flag [${_flags}] -- skipping" )
endif()
- endif()
- unset( _flags )
- unset( _flag_ok )
+ unset( _flags )
+ unset( _flag_ok )
+ unset( _try_add_flag )
+ endif()
endmacro()
macro( cmake_add_fortran_flags m_fortran_flags )
- message( DEPRECATION " cmake_add_fortran_flags is deprecated, use ecbuild_add_fortran_flags instead." )
+ ecbuild_deprecate( " cmake_add_fortran_flags is deprecated, use ecbuild_add_fortran_flags instead." )
ecbuild_add_fortran_flags( ${m_fortran_flags} )
endmacro()
diff --git a/cmake/ecbuild_add_library.cmake b/cmake/ecbuild_add_library.cmake
index dc47956..bcd9a98 100644
--- a/cmake/ecbuild_add_library.cmake
+++ b/cmake/ecbuild_add_library.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -16,7 +16,10 @@
#
# ecbuild_add_library( TARGET <name>
# SOURCES <source1> [<source2> ...]
-# [ TYPE SHARED|STATIC|MODULE ]
+# [ SOURCES_GLOB <glob1> [<glob2> ...] ]
+# [ SOURCES_EXCLUDE_REGEX <regex1> [<regex2> ...] ]
+# [ TYPE SHARED|STATIC|MODULE|OBJECT ]
+# [ OBJECTS <obj1> [<obj2> ...] ]
# [ TEMPLATES <template1> [<template2> ...] ]
# [ LIBS <library1> [<library2> ...] ]
# [ INCLUDES <path1> [<path2> ...] ]
@@ -55,6 +58,17 @@
# :STATIC: archives of object files for use when linking other targets.
# :MODULE: plugins that are not linked into other targets but may be loaded
# dynamically at runtime using dlopen-like functionality
+# :OBJECT: files are just compiled into objects
+#
+# SOURCES_GLOB : optional
+# search pattern to find source files to compile (note: not recommend according to CMake guidelines)
+# it is usually better to explicitly list the source files in the CMakeList.txt
+#
+# SOURCES_EXCLUDE_REGEX : optional
+# search pattern to exclude source files from compilation, applies o the results of SOURCES_GLOB
+#
+# OBJECTS : optional
+# list of object libraries to add to this target
#
# TEMPLATES : optional
# list of files specified as SOURCES which are not to be compiled separately
@@ -135,7 +149,7 @@ function( ecbuild_add_library_impl )
set( options NOINSTALL AUTO_VERSION )
set( single_value_args TARGET TYPE COMPONENT INSTALL_HEADERS INSTALL_HEADERS_REGEX LINKER_LANGUAGE HEADER_DESTINATION VERSION OUTPUT_NAME )
- set( multi_value_args SOURCES TEMPLATES LIBS INCLUDES PRIVATE_INCLUDES PUBLIC_INCLUDES DEPENDS PERSISTENT DEFINITIONS INSTALL_HEADERS_LIST CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
+ set( multi_value_args SOURCES SOURCES_GLOB SOURCES_EXCLUDE_REGEX OBJECTS TEMPLATES LIBS INCLUDES PRIVATE_INCLUDES PUBLIC_INCLUDES DEPENDS PERSISTENT DEFINITIONS INSTALL_HEADERS_LIST CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
@@ -147,8 +161,8 @@ function( ecbuild_add_library_impl )
message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the TARGET.")
endif()
- if( NOT _PAR_SOURCES )
- message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the SOURCES.")
+ if( NOT _PAR_SOURCES AND NOT _PAR_OBJECTS AND NOT _PAR_SOURCES_GLOB )
+ message(FATAL_ERROR "The call to ecbuild_add_library() specifies neither SOURCES nor OBJECTS nor SOURCES_GLOB")
endif()
### conditional build
@@ -172,8 +186,9 @@ function( ecbuild_add_library_impl )
# checks that is either SHARED or STATIC or MODULE
if( NOT _PAR_TYPE MATCHES "STATIC" AND
NOT _PAR_TYPE MATCHES "SHARED" AND
+ NOT _PAR_TYPE MATCHES "OBJECT" AND
NOT _PAR_TYPE MATCHES "MODULE" )
- message( FATAL_ERROR "library type must be one of [ STATIC | SHARED | MODULE ]" )
+ message( FATAL_ERROR "library type must be one of [ STATIC | SHARED | MODULE | OBJECT ]" )
endif()
ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): library type is ${_PAR_TYPE}")
endif()
@@ -195,7 +210,31 @@ function( ecbuild_add_library_impl )
add_custom_target( ${_PAR_TARGET}_templates SOURCES ${_PAR_TEMPLATES} )
endif()
- add_library( ${_PAR_TARGET} ${_PAR_TYPE} ${_PAR_SOURCES} )
+ # glob sources
+ unset( _glob_srcs )
+ foreach( pattern ${_PAR_SOURCES_GLOB} )
+ ecbuild_list_add_pattern( LIST _glob_srcs GLOB "${pattern}" )
+ endforeach()
+
+ foreach( pattern ${_PAR_SOURCES_EXCLUDE_REGEX} )
+ ecbuild_list_exclude_pattern( LIST _glob_srcs REGEX "${pattern}" )
+ endforeach()
+
+ # insert already compiled objects (from OBJECT libraries)
+ unset( _all_objects )
+ foreach( _obj ${_PAR_OBJECTS} )
+ list( APPEND _all_objects $<TARGET_OBJECTS:${_obj}> )
+ endforeach()
+
+ list( APPEND _PAR_SOURCES ${_glob_srcs} )
+
+ if( ECBUILD_LIST_SOURCES )
+ ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): sources ${_PAR_SOURCES}")
+ endif()
+
+ add_library( ${_PAR_TARGET} ${_PAR_TYPE} ${_PAR_SOURCES} ${_all_objects} )
+
+ # ecbuild_echo_target( ${_PAR_TARGET} )
# set OUTPUT_NAME
@@ -306,27 +345,74 @@ function( ecbuild_add_library_impl )
# filter sources
- ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
+ if( _PAR_SOURCES )
+ ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
+ endif()
- # debug_var( ${_PAR_TARGET}_h_srcs )
- # debug_var( ${_PAR_TARGET}_c_srcs )
- # debug_var( ${_PAR_TARGET}_cxx_srcs )
- # debug_var( ${_PAR_TARGET}_f_srcs )
+ # ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
+ # ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
+ # ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
+ # ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
# add local flags
- if( DEFINED _PAR_CFLAGS )
- ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
- set_source_files_properties( ${${_PAR_TARGET}_c_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+ if( ${_PAR_TARGET}_c_srcs )
+
+ if( ECBUILD_SOURCE_FLAGS )
+ ecbuild_source_flags( ${_PAR_TARGET}_C_SOURCE_FLAGS
+ ${_PAR_TARGET}_c
+ "${_PAR_CFLAGS}"
+ "${${_PAR_TARGET}_c_srcs}" )
+
+ ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file C flags from ${${_PAR_TARGET}_C_SOURCE_FLAGS}")
+ include( ${${_PAR_TARGET}_C_SOURCE_FLAGS} )
+
+ elseif( DEFINED _PAR_CFLAGS )
+
+ ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
+ set_source_files_properties( ${${_PAR_TARGET}_c_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+
+ endif()
endif()
- if( DEFINED _PAR_CXXFLAGS )
- ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
- set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+
+ if( ${_PAR_TARGET}_cxx_srcs )
+
+ if( ECBUILD_SOURCE_FLAGS )
+ ecbuild_source_flags( ${_PAR_TARGET}_CXX_SOURCE_FLAGS
+ ${_PAR_TARGET}_cxx
+ "${_PAR_CXXFLAGS}"
+ "${${_PAR_TARGET}_cxx_srcs}" )
+
+ ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file CXX flags from ${${_PAR_TARGET}_CXX_SOURCE_FLAGS}")
+ include( ${${_PAR_TARGET}_CXX_SOURCE_FLAGS} )
+
+ elseif( DEFINED _PAR_CXXFLAGS )
+
+ ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
+ set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+
+ endif()
endif()
- if( DEFINED _PAR_FFLAGS )
- ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
- set_source_files_properties( ${${_PAR_TARGET}_f_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+
+ if( ${_PAR_TARGET}_f_srcs )
+
+ if( ECBUILD_SOURCE_FLAGS )
+ ecbuild_source_flags( ${_PAR_TARGET}_Fortran_SOURCE_FLAGS
+ ${_PAR_TARGET}_f
+ "${_PAR_FFLAGS}"
+ "${${_PAR_TARGET}_f_srcs}" )
+
+ ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file Fortran flags from ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS}")
+ include( ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS} )
+
+ elseif( DEFINED _PAR_FFLAGS )
+
+ ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
+ set_source_files_properties( ${${_PAR_TARGET}_f_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+
+ endif()
endif()
+
if( DEFINED _PAR_GENERATED )
ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
@@ -336,11 +422,18 @@ function( ecbuild_add_library_impl )
if( DEFINED _PAR_LINKER_LANGUAGE )
ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): using linker language ${_PAR_LINKER_LANGUAGE}")
set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
+ if( ECBUILD_${_PAR_LINKER_LANGUAGE}_IMPLICIT_LINK_LIBRARIES )
+ target_link_libraries( ${_PAR_TARGET} ${ECBUILD_${_PAR_LINKER_LANGUAGE}_IMPLICIT_LINK_LIBRARIES} )
+ endif()
endif()
- # installation
+ if( ECBUILD_IMPLICIT_LINK_LIBRARIES )
+ target_link_libraries( ${_PAR_TARGET} ${ECBUILD_IMPLICIT_LINK_LIBRARIES} )
+ endif()
- if( NOT _PAR_NOINSTALL )
+ # installation (except for OBJECT libraries)
+
+ if( NOT _PAR_NOINSTALL AND NOT _PAR_TYPE MATCHES "OBJECT" )
ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): installing to ${INSTALL_LIB_DIR}")
# and associate with defined component
@@ -351,7 +444,7 @@ function( ecbuild_add_library_impl )
# endif()
install( TARGETS ${_PAR_TARGET}
- EXPORT ${CMAKE_PROJECT_NAME}-targets
+ EXPORT ${PROJECT_NAME}-targets
RUNTIME DESTINATION ${INSTALL_BIN_DIR}
LIBRARY DESTINATION ${INSTALL_LIB_DIR}
ARCHIVE DESTINATION ${INSTALL_LIB_DIR} )
@@ -421,7 +514,9 @@ function( ecbuild_add_library_impl )
endif()
# make sure target is removed before - some problems with AIX
- add_custom_command( TARGET ${_PAR_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E remove $<TARGET_FILE:${_PAR_TARGET}> )
+ if( NOT _PAR_TYPE MATCHES "OBJECT" )
+ add_custom_command( TARGET ${_PAR_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E remove $<TARGET_FILE:${_PAR_TARGET}> )
+ endif()
# for the links target
if( NOT _PAR_NOINSTALL )
diff --git a/cmake/ecbuild_add_option.cmake b/cmake/ecbuild_add_option.cmake
index 7728716..e0e6040 100644
--- a/cmake/ecbuild_add_option.cmake
+++ b/cmake/ecbuild_add_option.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -17,6 +17,7 @@
# ecbuild_add_option( FEATURE <name>
# [ DEFAULT ON|OFF ]
# [ DESCRIPTION <description> ]
+# [ PURPOSE <purpose> ]
# [ REQUIRED_PACKAGES <package1> [<package2> ...] ]
# [ CONDITION <condition1> [<condition2> ...] ]
# [ ADVANCED ] )
@@ -33,18 +34,30 @@
# DESCRIPTION : optional
# string describing the feature (shown in summary and stored in the cache)
#
+# TYPE : optional, one of RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED
+# type of dependency of the project on this package (defaults to OPTIONAL)
+#
+# PURPOSE : optional
+# string describing which functionality this package enables in the project
+#
# REQUIRED_PACKAGES : optional
# list of packages required to be found for this feature to be enabled
#
-# The package specification can be either ::
+# The package specification can have one of two forms. Either ::
#
-# <package> [ <version> ... ]
+# "<package> [ <version> ... ]"
#
-# to search for a given package with option minimum required version or ::
+# to search for a given package using the CMake ``find_package`` mechanism.
+# The entire specification must be enclosed in quotes and is passed on
+# verbatim. Any options of ``find_package`` are supported.
#
-# PROJECT <name> [ VERSION <version> ... ]
+# The other specification must start with ``PROJECT`` like this ::
#
-# to search for an ecBuild project with optional minimum required version.
+# "PROJECT <name> [ VERSION <version> ... ]"
+#
+# and is used to search for an ecBuild project via ``ecbuild_use_package``.
+# The entire specification must be enclosed in quotes and is passed on
+# verbatim. Any options of ``ecbuild_use_package`` are supported.
#
# CONDITION : optional
# conditional expression which must evaluate to true for this option to be
@@ -72,7 +85,7 @@
macro( ecbuild_add_option )
set( options ADVANCED )
- set( single_value_args FEATURE DEFAULT DESCRIPTION )
+ set( single_value_args FEATURE DEFAULT DESCRIPTION TYPE PURPOSE )
set( multi_value_args REQUIRED_PACKAGES CONDITION )
cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
@@ -98,6 +111,10 @@ macro( ecbuild_add_option )
endif()
ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): defaults to ${_p_DEFAULT}")
+ if( NOT _p_TYPE )
+ set( _p_TYPE OPTIONAL )
+ endif()
+
# check CONDITION parameter
if( DEFINED _p_CONDITION )
set(_feature_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_p_FEATURE}_condition.cmake")
@@ -135,7 +152,12 @@ macro( ecbuild_add_option )
# define the option -- for cmake GUI
option( ENABLE_${_p_FEATURE} "${_p_DESCRIPTION}" ${_p_DEFAULT} )
- ecbuild_set_feature( ${_p_FEATURE} ENABLED ${_p_DEFAULT} PURPOSE "${_p_DESCRIPTION}" )
+ ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): defining option ENABLE_${_p_FEATURE} '${_p_DESCRIPTION}' ${_p_DEFAULT}")
+ ecbuild_set_feature( ${_p_FEATURE} ENABLED ${_p_DEFAULT} )
+ set_package_properties( ${_p_FEATURE} PROPERTIES
+ DESCRIPTION "${_p_DESCRIPTION}"
+ TYPE ${_p_TYPE}
+ PURPOSE "${_p_PURPOSE}" )
ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} = ${ENABLE_${_p_FEATURE}}")
set( _do_search ${ENABLE_${_p_FEATURE}} )
@@ -167,9 +189,9 @@ macro( ecbuild_add_option )
set( pkgproject 0 )
endif()
- # debug_var( pkg )
- # debug_var( pkglist )
- # debug_var( pkgname )
+ # ecbuild_debug_var( pkg )
+ # ecbuild_debug_var( pkglist )
+ # ecbuild_debug_var( pkgname )
string( TOUPPER ${pkgname} pkgUPPER )
string( TOLOWER ${pkgname} pkgLOWER )
@@ -206,6 +228,11 @@ macro( ecbuild_add_option )
list( REMOVE_ITEM _find_args ${pkgname} )
ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for Python")
ecbuild_find_python( ${_find_args} )
+ elseif( pkgname STREQUAL "LEXYACC" )
+ set( _find_args ${pkglist} )
+ list( REMOVE_ITEM _find_args ${pkgname} )
+ ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for lex-yacc")
+ ecbuild_find_lexyacc( ${_find_args} )
else()
ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for package ${pkgname}")
find_package( ${pkglist} )
@@ -223,9 +250,9 @@ macro( ecbuild_add_option )
endif()
- # debug_var( ${pkgname}_FOUND )
- # debug_var( ${pkgLOWER}_FOUND )
- # debug_var( ${pkgUPPER}_FOUND )
+ # ecbuild_debug_var( ${pkgname}_FOUND )
+ # ecbuild_debug_var( ${pkgLOWER}_FOUND )
+ # ecbuild_debug_var( ${pkgUPPER}_FOUND )
# we have feature if all required packages were FOUND
diff --git a/cmake/ecbuild_add_persistent.cmake b/cmake/ecbuild_add_persistent.cmake
index 96c160d..e27eb89 100644
--- a/cmake/ecbuild_add_persistent.cmake
+++ b/cmake/ecbuild_add_persistent.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2015 ECMWF.
-#
+# (C) Copyright 1996-2016 ECMWF.
+#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -34,7 +34,7 @@
# C++ namespace to place the persistent class information in
#
##############################################################################
-
+
# define the script to build the persistent class information
set( sg_perl "${CMAKE_CURRENT_LIST_DIR}/sg.pl" CACHE INTERNAL "perl script to generate persistent objects" )
@@ -44,7 +44,7 @@ macro( ecbuild_add_persistent )
set( options )
set( single_value_args SRC_LIST NAMESPACE )
- set( multi_value_args FILES )
+ set( multi_value_args FILES )
cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
@@ -71,7 +71,7 @@ macro( ecbuild_add_persistent )
set( file ${_file_dir}/${_file_we} )
endif()
- # debug_var(file)
+ # ecbuild_debug_var(file)
add_custom_command( OUTPUT ${file}.b
COMMAND ${PERL_EXECUTABLE} ${sg_perl} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.h
diff --git a/cmake/ecbuild_add_resources.cmake b/cmake/ecbuild_add_resources.cmake
index da6e55a..d09581c 100644
--- a/cmake/ecbuild_add_resources.cmake
+++ b/cmake/ecbuild_add_resources.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_add_test.cmake b/cmake/ecbuild_add_test.cmake
index 6ae839a..6d208b0 100644
--- a/cmake/ecbuild_add_test.cmake
+++ b/cmake/ecbuild_add_test.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -16,6 +16,7 @@
#
# ecbuild_add_test( [ TARGET <name> ]
# [ SOURCES <source1> [<source2> ...] ]
+# [ OBJECTS <obj1> [<obj2> ...] ]
# [ COMMAND <executable> ]
# [ TYPE EXE|SCRIPT|PYTHON ]
# [ ARGS <argument1> [<argument2> ...] ]
@@ -48,6 +49,9 @@
# SOURCES : required if TARGET is provided
# list of source files to be compiled
#
+# OBJECTS : optional
+# list of object libraries to add to this target
+#
# COMMAND : either TARGET or COMMAND must be provided, unless TYPE is PYTHON
# command or script to execute (no executable is built)
#
@@ -127,7 +131,7 @@ macro( ecbuild_add_test )
set( options BOOST )
set( single_value_args TARGET ENABLED COMMAND TYPE LINKER_LANGUAGE MPI WORKING_DIRECTORY )
- set( multi_value_args SOURCES LIBS INCLUDES TEST_DEPENDS DEPENDS ARGS
+ set( multi_value_args SOURCES OBJECTS LIBS INCLUDES TEST_DEPENDS DEPENDS ARGS
PERSISTENT DEFINITIONS RESOURCES TEST_DATA CFLAGS
CXXFLAGS FFLAGS GENERATED CONDITION ENVIRONMENT )
@@ -141,13 +145,14 @@ macro( ecbuild_add_test )
# Check for MPI
if(_PAR_MPI)
- if( (_PAR_MPI GREATER 1) AND ( (NOT HAVE_MPI) OR (NOT MPIEXEC) ) )
+ if( (_PAR_MPI GREATER 1) AND ( (NOT MPI_FOUND) OR (NOT MPIEXEC) ) )
ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): ${_PAR_MPI} MPI ranks requested but MPI not available - disabling test")
set( _PAR_ENABLED 0 )
- endif()
- if( (_PAR_MPI EQUAL 1) AND (NOT HAVE_MPI) )
+ elseif( (_PAR_MPI EQUAL 1) AND (NOT MPI_FOUND) )
ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): 1 MPI rank requested but MPI not available - disabling MPI")
set( _PAR_MPI 0 )
+ else()
+ ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): Running using ${_PAR_MPI} MPI rank(s)")
endif()
endif()
@@ -266,9 +271,13 @@ macro( ecbuild_add_test )
endif()
endif()
- # add the test target
+ # insert already compiled objects (from OBJECT libraries)
+ unset( _all_objects )
+ foreach( _obj ${_PAR_OBJECTS} )
+ list( APPEND _all_objects $<TARGET_OBJECTS:${_obj}> )
+ endforeach()
- add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} )
+ add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} ${_all_objects} )
# add extra dependencies
if( DEFINED _PAR_DEPENDS)
@@ -354,9 +363,6 @@ macro( ecbuild_add_test )
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E remove ${EXE_FILENAME} )
- set_property( TARGET ${_PAR_TARGET} PROPERTY SKIP_BUILD_RPATH FALSE )
- set_property( TARGET ${_PAR_TARGET} PROPERTY BUILD_WITH_INSTALL_RPATH FALSE )
-
endif() # _PAR_SOURCES
if( DEFINED _PAR_COMMAND AND NOT _PAR_TARGET ) # in the absence of target, we use the command as a name
@@ -376,7 +382,10 @@ macro( ecbuild_add_test )
# define the arguments
set( TEST_ARGS "" )
- if( DEFINED _PAR_ARGS )
+ # Boost Unit Test >= 1.60 requires arguments to be passed to the application to be separated by --
+ if( DEFINED _PAR_ARGS AND _PAR_BOOST )
+ list( APPEND TEST_ARGS "--" ${_PAR_ARGS} )
+ elseif( DEFINED _PAR_ARGS )
list( APPEND TEST_ARGS ${_PAR_ARGS} )
endif()
diff --git a/cmake/ecbuild_append_to_rpath.cmake b/cmake/ecbuild_append_to_rpath.cmake
index 5a7bd66..4f10368 100644
--- a/cmake/ecbuild_append_to_rpath.cmake
+++ b/cmake/ecbuild_append_to_rpath.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_bundle.cmake b/cmake/ecbuild_bundle.cmake
index 2d9b779..7a0eff4 100644
--- a/cmake/ecbuild_bundle.cmake
+++ b/cmake/ecbuild_bundle.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -61,7 +61,7 @@ endmacro()
# Declare a subproject to be built as part of this bundle. ::
#
# ecbuild_bundle( PROJECT <name>
-# STASH <repository> | GIT <giturl>
+# STASH <repository> | GIT <giturl> | SOURCE <path>
# [ BRANCH <gitbranch> | TAG <gittag> ]
# [ UPDATE | NOREMOTE ] )
# [ MANUAL ] )
@@ -72,12 +72,15 @@ endmacro()
# PROJECT : required
# project name for the Git repository to be managed
#
-# STASH : cannot be combined with GIT, either is required
+# STASH : cannot be combined with GIT or SOURCE
# Stash repository in the form <project>/<repository>
#
-# URL : cannot be combined with STASH, either is required
+# GIT : cannot be combined with STASH or SOURCE
# Git URL of the remote repository to clone (see ``git help clone``)
#
+# SOURCE : cannot be combined with STASH or GIT
+# Path to an existing local repository, which will be symlinked
+#
# BRANCH : optional, cannot be combined with TAG
# Git branch to check out
#
@@ -104,6 +107,10 @@ endmacro()
# The first time a bundle is built, the sources of all subprojects are cloned
# into directories named according to project in the *source* tree of the
# bundle (which means these directories should be added to ``.gitignore``).
+# If the ``SOURCE`` option is used it must point to an existing local
+# repository on disk and no new repository is cloned. Be aware that using the
+# ``BRANCH`` or ``TAG`` option leads to the corresponding version being checked
+# out in that repository!
#
# Subprojects are configured and built in order. Due to being added as a
# subproject, the usual project discovery mechanism (i.e. locating and
@@ -119,23 +126,32 @@ endmacro()
macro( ecbuild_bundle )
set( options )
- set( single_value_args PROJECT STASH GIT )
+ set( single_value_args PROJECT STASH GIT SOURCE )
set( multi_value_args )
cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
string(TOUPPER "${_PAR_PROJECT}" PNAME)
if( BUNDLE_SKIP_${PNAME} )
- message( STATUS "Skipping bundle project ${PNAME}" )
+ message( STATUS "Skipping bundle project ${PNAME}" )
else()
- if( _PAR_STASH )
- ecmwf_stash( PROJECT ${_PAR_PROJECT} DIR ${PROJECT_SOURCE_DIR}/${_PAR_PROJECT} STASH ${_PAR_STASH} ${_PAR_UNPARSED_ARGUMENTS} )
- elseif( _PAR_GIT )
- ecbuild_git( PROJECT ${_PAR_PROJECT} DIR ${PROJECT_SOURCE_DIR}/${_PAR_PROJECT} URL ${_PAR_GIT} ${_PAR_UNPARSED_ARGUMENTS} )
+ if( _PAR_STASH )
+ ecmwf_stash( PROJECT ${_PAR_PROJECT} DIR ${PROJECT_SOURCE_DIR}/${_PAR_PROJECT} STASH ${_PAR_STASH} ${_PAR_UNPARSED_ARGUMENTS} )
+ elseif( _PAR_GIT )
+ ecbuild_git( PROJECT ${_PAR_PROJECT} DIR ${PROJECT_SOURCE_DIR}/${_PAR_PROJECT} URL ${_PAR_GIT} ${_PAR_UNPARSED_ARGUMENTS} )
+ elseif( _PAR_SOURCE )
+ if( DEFINED ${PNAME}_SOURCE )
+ ecbuild_critical( "ecbuild_bundle called with SOURCE for project ${_PAR_PROJECT} but ${PNAME}_SOURCE is defined" )
endif()
+ execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink ${_PAR_SOURCE} ${PROJECT_SOURCE_DIR}/${_PAR_PROJECT} )
+ endif()
+
+ if( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_PAR_PROJECT} OR NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_PAR_PROJECT}/CMakeLists.txt )
+ ecbuild_critical("Source directory '${CMAKE_CURRENT_SOURCE_DIR}/${_PAR_PROJECT}' for subproject '${_PAR_PROJECT}' does not exist or does not contain a CMakeLists.txt file.")
+ endif()
- ecbuild_use_package( PROJECT ${_PAR_PROJECT} )
+ ecbuild_use_package( PROJECT ${_PAR_PROJECT} )
endif()
endmacro()
diff --git a/cmake/ecbuild_cache.cmake b/cmake/ecbuild_cache.cmake
index 9663bca..e257b36 100644
--- a/cmake/ecbuild_cache.cmake
+++ b/cmake/ecbuild_cache.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_check_c_source_return.cmake b/cmake/ecbuild_check_c_source_return.cmake
index 1dadca6..7e704cb 100644
--- a/cmake/ecbuild_check_c_source_return.cmake
+++ b/cmake/ecbuild_check_c_source_return.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_check_compiler.cmake b/cmake/ecbuild_check_compiler.cmake
index 32ff6cc..437b81e 100644
--- a/cmake/ecbuild_check_compiler.cmake
+++ b/cmake/ecbuild_check_compiler.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -10,7 +10,8 @@
# enable C to use in system introspection
if( NOT CMAKE_C_COMPILER_LOADED AND ENABLE_OS_TESTS )
- enable_language( C )
+ enable_language( C )
+ ecbuild_compiler_flags( C )
endif()
############################################################################################
@@ -122,6 +123,10 @@ if( CMAKE_COMPILER_IS_GNUCXX )
endif()
+if( ENABLE_WARNINGS AND CMAKE_Fortran_COMPILER_ID MATCHES "Intel" )
+ ecbuild_add_fortran_flags("-warn all")
+endif()
+
############################################################################################
# compiler dependent fixes
diff --git a/cmake/ecbuild_check_cxx11.cmake b/cmake/ecbuild_check_cxx11.cmake
index 6453786..dd78649 100644
--- a/cmake/ecbuild_check_cxx11.cmake
+++ b/cmake/ecbuild_check_cxx11.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_check_cxx_source_return.cmake b/cmake/ecbuild_check_cxx_source_return.cmake
index e364918..402850e 100644
--- a/cmake/ecbuild_check_cxx_source_return.cmake
+++ b/cmake/ecbuild_check_cxx_source_return.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2015 ECMWF.
-#
+# (C) Copyright 1996-2016 ECMWF.
+#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -93,9 +93,9 @@ macro( ecbuild_check_cxx_source_return SOURCE )
if( __add_incs )
set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
endif()
-
+
# write the source file
-
+
file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_p_VAR}.cxx" "${SOURCE}\n" )
message( STATUS "${_msg}" )
@@ -107,11 +107,11 @@ macro( ecbuild_check_cxx_source_return SOURCE )
-DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
"${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}"
"${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
- COMPILE_OUTPUT_VARIABLE compile_OUTPUT
+ COMPILE_OUTPUT_VARIABLE compile_OUTPUT
RUN_OUTPUT_VARIABLE run_OUTPUT )
-
- # debug_var( ${_p_VAR}_COMPILED )
- # debug_var( ${_p_VAR}_EXITCODE )
+
+ # ecbuild_debug_var( ${_p_VAR}_COMPILED )
+ # ecbuild_debug_var( ${_p_VAR}_EXITCODE )
# if it did not compile make the return value fail code of 1
@@ -125,21 +125,21 @@ macro( ecbuild_check_cxx_source_return SOURCE )
# if the return value was 0 then it worked
if( ${_p_VAR}_COMPILED AND "${${_p_VAR}_EXITCODE}" EQUAL 0 )
-
+
message(STATUS "${_msg} Success")
- file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
"Performing C++ SOURCE FILE Test ${_p_VAR} succeded with the following compile output:\n"
- "${compile_OUTPUT}\n"
+ "${compile_OUTPUT}\n"
"Performing C++ SOURCE FILE Run ${_p_VAR} succeded with the following run output:\n"
- "${run_OUTPUT}\n"
+ "${run_OUTPUT}\n"
"Return value: ${${_p_VAR}}\n"
"Source file was:\n${SOURCE}\n")
set( ${_p_VAR} 1 CACHE INTERNAL "Test ${_p_VAR}")
set( ${_p_OUTPUT} "${run_OUTPUT}" CACHE INTERNAL "Test ${_p_VAR} output")
-
+
else()
-
+
if(CMAKE_CROSSCOMPILING AND "${${_p_VAR}_EXITCODE}" MATCHES "FAILED_TO_RUN")
set(${_p_VAR} "${${_p_VAR}_EXITCODE}")
set(${OUTPUT} "")
@@ -147,17 +147,17 @@ macro( ecbuild_check_cxx_source_return SOURCE )
set(${_p_VAR} "" CACHE INTERNAL "Test ${_p_VAR}")
set(${_p_OUTPUT} "" CACHE INTERNAL "Test ${_p_VAR} output")
endif()
-
+
message(STATUS "Test ${_p_VAR} - Failed")
- file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
"Performing C++ SOURCE FILE Test ${_p_VAR} failed with the following compile output:\n"
- "${compile_OUTPUT}\n"
+ "${compile_OUTPUT}\n"
"Performing C++ SOURCE FILE Run ${_p_VAR} failed with the following run output:\n"
- "${run_OUTPUT}\n"
+ "${run_OUTPUT}\n"
"Return value: ${${_p_VAR}_EXITCODE}\n"
"Source file was:\n${SOURCE}\n")
endif()
-
+
endif()
endmacro()
diff --git a/cmake/ecbuild_check_fortran_source_return.cmake b/cmake/ecbuild_check_fortran_source_return.cmake
index 1c50896..7477e88 100644
--- a/cmake/ecbuild_check_fortran_source_return.cmake
+++ b/cmake/ecbuild_check_fortran_source_return.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_check_functions.cmake b/cmake/ecbuild_check_functions.cmake
index a3ed7a1..7b850e9 100644
--- a/cmake/ecbuild_check_functions.cmake
+++ b/cmake/ecbuild_check_functions.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -73,10 +73,10 @@ if( ENABLE_OS_FUNCTIONS_TEST )
ecbuild_cache_check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/stat.h>\nint main(){ struct stat64 s; fstat64(1,&s); return 0; }" EC_HAVE_FSTAT64 )
# test fseeko64
ecbuild_cache_check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <stdio.h>\n#include <sys/types.h>\nint main(){FILE* file;off64_t l=0;fseeko64(file,l,SEEK_CUR);return 0;}\n" EC_HAVE_FSEEKO64 )
-
+
# test for ftello64
ecbuild_cache_check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <stdio.h>\n#include <sys/types.h>\nint main(){FILE* file;off64_t l = ftello64(file);return 0;}\n" EC_HAVE_FTELLO64 )
-
+
# test for lseek64
ecbuild_cache_check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/types.h>\n#include <unistd.h>\nint main(){off64_t h = lseek64(0,0,SEEK_SET);return 0;}\n" EC_HAVE_LSEEK64 )
# test for open64
@@ -114,7 +114,7 @@ if( ENABLE_OS_FUNCTIONS_TEST )
# test for getpwuid_r
ecbuild_cache_check_c_source_compiles( "#include <unistd.h>\n#include <sys/types.h>\n#include <pwd.h>\nint main(){ char buf[4096]; struct passwd pwbuf; struct passwd *pwbufp = 0; getpwuid_r(getuid(), &pwbuf, buf, sizeof(buf), &pwbufp); }\n" EC_HAVE_GETPWUID_R )
# test for getpwnam_r
- ecbuild_cache_check_c_source_compiles( "#include <sys/types.h>\n#include <pwd.h>\nint main(){ struct passwd p; char line[1024]; int n = getpwnam_r(\"user\",&p,line,sizeof(line),0); }\n" EC_HAVE_GETPWNAM_R )
+ ecbuild_cache_check_c_source_compiles( "#include <sys/types.h>\n#include <pwd.h>\nint main(){ struct passwd p; char line[1024]; int n = getpwnam_r(\"user\",&p,line,sizeof(line),0); }\n" EC_HAVE_GETPWNAM_R )
# test for readdir_r
ecbuild_cache_check_c_source_compiles( "#include <dirent.h>\nint main(){ DIR *dirp; struct dirent *entry; struct dirent **result; int i = readdir_r(dirp, entry, result); }\n" EC_HAVE_READDIR_R )
# test for gethostbyname_r
@@ -164,8 +164,8 @@ if( ENABLE_OS_FUNCTIONS_TEST )
endif()
ecbuild_cache_var( EC_HAVE_PROCFS )
-# debug_var(EC_HAVE_PROCFS)
-# debug_var(EC_HAVE_PROCFS_OUTPUT)
+# ecbuild_debug_var(EC_HAVE_PROCFS)
+# ecbuild_debug_var(EC_HAVE_PROCFS_OUTPUT)
endif()
diff --git a/cmake/ecbuild_check_os.cmake b/cmake/ecbuild_check_os.cmake
index 942fb6b..5fc3c2e 100644
--- a/cmake/ecbuild_check_os.cmake
+++ b/cmake/ecbuild_check_os.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -9,23 +9,34 @@
############################################################################################
# check size of pointer
+# Re-check size of void pointer since for some compiler combinations this is not properly set
ecbuild_cache_check_type_size( "void*" CMAKE_SIZEOF_VOID_P )
+if( NOT CMAKE_C_COMPILER_LOADED AND ENABLE_OS_TESTS )
+
+ enable_language( C )
+ ecbuild_compiler_flags( C )
+
+endif()
+
math( EXPR EC_OS_BITS "${CMAKE_SIZEOF_VOID_P} * 8" )
# we only support 32 and 64 bit operating systems
if( NOT EC_OS_BITS EQUAL "32" AND NOT EC_OS_BITS EQUAL "64" )
- message( FATAL_ERROR "operating system ${CMAKE_SYSTEM} ${EC_OS_BITS} bits -- ecbuild only supports 32 or 64 bit OS's" )
+ message( FATAL_ERROR "operating system ${CMAKE_SYSTEM} ${EC_OS_BITS} bits -- ecbuild only supports 32 or 64 bit OS's" )
endif()
-ecbuild_cache_var( EC_OS_BITS )
############################################################################################
# For 64 bit architectures enable PIC (position-independent code)
-if( ${EC_OS_BITS} EQUAL 64 )
- set( CMAKE_POSITION_INDEPENDENT_CODE ON )
+# Allow overriding the position independent code setting (ECBUILD-220)
+if( DEFINED ECBUILD_POSITION_INDEPENDENT_CODE )
+ set( CMAKE_POSITION_INDEPENDENT_CODE ${ECBUILD_POSITION_INDEPENDENT_CODE} )
+elseif( ${EC_OS_BITS} EQUAL 64 )
+ set( CMAKE_POSITION_INDEPENDENT_CODE ON )
endif()
+
############################################################################################
# check architecture
@@ -101,14 +112,19 @@ endif()
if( ENABLE_OS_ENDINESS_TEST )
if( NOT DEFINED EC_BIG_ENDIAN AND NOT DEFINED EC_LITTLE_ENDIAN )
+
test_big_endian( _BIG_ENDIAN )
if( _BIG_ENDIAN )
- set( EC_BIG_ENDIAN 1 )
+ set( EC_BIG_ENDIAN 1 )
+ set( EC_LITTLE_ENDIAN 0 )
else()
- set( EC_LITTLE_ENDIAN 1 )
+ set( EC_BIG_ENDIAN 0 )
+ set( EC_LITTLE_ENDIAN 1 )
endif()
+
endif()
+
ecbuild_cache_var( EC_BIG_ENDIAN )
ecbuild_cache_var( EC_LITTLE_ENDIAN )
@@ -142,9 +158,15 @@ if( ENABLE_OS_ENDINESS_TEST )
if( "${IEEE_BE}" STREQUAL "" )
set( IEEE_BE 0 CACHE INTERNAL "Test IEEE_BE")
endif()
+
endif()
+
ecbuild_cache_var( IEEE_BE )
+ if( EC_BIG_ENDIAN AND NOT IEEE_BE )
+ ecbuild_critical("Failed to sanity check on endiness: OS should be Big-Endian but compiled code runs differently -- to ignore this pass -DIEEE_BE=0 to CMake/ecBuild")
+ endif()
+
if( NOT DEFINED IEEE_LE )
check_c_source_runs(
"int compare(unsigned char* a,unsigned char* b) {
@@ -172,12 +194,17 @@ if( ENABLE_OS_ENDINESS_TEST )
return 0;
}" IEEE_LE )
- if( "${IEEE_BE}" STREQUAL "" )
+ if( "${IEEE_LE}" STREQUAL "" )
set( IEEE_LE 0 CACHE INTERNAL "Test IEEE_LE")
endif()
endif()
+
ecbuild_cache_var( IEEE_LE )
+ if( EC_LITTLE_ENDIAN AND NOT IEEE_LE )
+ ecbuild_critical("Failed to sanity check on endiness: OS should be Little-Endian but compiled code runs differently -- to ignore this pass -DIEEE_LE=0 to CMake/ecBuild")
+ endif()
+
endif()
############################################################################################
@@ -202,7 +229,7 @@ if( ENABLE_PROFILING )
unset( _trust_flags )
unset( _flags )
-
+
else()
message( WARNING "Profiling enabled but ecbuild doesn't know how to enable for this particular compiler ${CMAKE_C_COMPILER_ID}")
endif()
diff --git a/cmake/ecbuild_compiler_flags.cmake b/cmake/ecbuild_compiler_flags.cmake
new file mode 100644
index 0000000..b97eb2c
--- /dev/null
+++ b/cmake/ecbuild_compiler_flags.cmake
@@ -0,0 +1,97 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_compiler_flags
+# ======================
+#
+# Set default compiler flags for a given language. ::
+#
+# ecbuild_compiler_flags( <lang> )
+#
+# The procedure is as follows:
+#
+# 1. ecBuild does *not* set ``CMAKE_<lang>_FLAGS`` i.e. the user can set these
+# via -D or the CMake cache and these will be the "base" flags.
+#
+# 2. ecBuild *overwrites* ``CMAKE_<lang>_FLAGS_<btype>`` in the CMake cache
+# for all build types with compiler specific defaults for the currently
+# loaded compiler i.e. any value set by the user via -D or the CMake cache
+# *has no effect*.
+#
+# 3. Any value the user provides via ``ECBUILD_<lang>_FLAGS`` or
+# ``ECBUILD_<lang>_FLAGS_<btype>`` *overrides* the corresponding
+# ``CMAKE_<lang>_FLAGS`` or ``CMAKE_<lang>_FLAGS_<btype>`` *without being
+# written to the CMake cache*.
+#
+##############################################################################
+
+macro( ecbuild_compiler_flags _lang )
+
+ if( CMAKE_${_lang}_COMPILER_LOADED )
+
+ ecbuild_debug( "try include ${ECBUILD_MACROS_DIR}/compiler_flags/${CMAKE_${_lang}_COMPILER_ID}_${_lang}.cmake ")
+
+ include( ${ECBUILD_MACROS_DIR}/compiler_flags/${CMAKE_${_lang}_COMPILER_ID}_${_lang}.cmake OPTIONAL )
+
+ ecbuild_debug_var( CMAKE_${_lang}_FLAGS )
+
+ foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
+ ecbuild_debug_var( CMAKE_${_lang}_FLAGS_${_btype} )
+ endforeach()
+
+ endif()
+
+ foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
+ if( DEFINED ECBUILD_${_lang}_FLAGS_${_btype} )
+ set( CMAKE_${_lang}_FLAGS_${_btype} ${ECBUILD_${_lang}_FLAGS_${_btype}} )
+ endif()
+ mark_as_advanced( CMAKE_${_lang}_FLAGS_${_btype} )
+ endforeach()
+
+ if( DEFINED ECBUILD_${_lang}_FLAGS )
+ set( CMAKE_${_lang}_FLAGS "${ECBUILD_${_lang}_FLAGS}" )
+ endif()
+
+ mark_as_advanced( CMAKE_${_lang}_FLAGS )
+
+ if( DEFINED ECBUILD_${_lang}_LINK_FLAGS )
+ set( CMAKE_${_lang}_LINK_FLAGS "${ECBUILD_${_lang}_LINK_FLAGS}" )
+ endif()
+
+ mark_as_advanced( CMAKE_${_lang}_LINK_FLAGS )
+
+endmacro()
+
+#-----------------------------------------------------------------------------------------------------------------------
+
+### OVERRIDE Compiler FLAGS (we override because CMake forcely defines them) -- see ecbuild_compiler_flags() macro
+
+foreach( _lang C CXX Fortran )
+ if( CMAKE_${_lang}_COMPILER_LOADED )
+ ecbuild_compiler_flags( ${_lang} )
+ endif()
+endforeach()
+
+### OVERRIDE Linker FLAGS per object type (we override because CMake forcely defines them)
+
+foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
+
+ foreach( _obj EXE SHARED MODULE )
+ if( ECBUILD_${_obj}_LINKER_FLAGS_${_btype} )
+ set( CMAKE_${_obj}_LINKER_FLAGS_${_btype} ${ECBUILD_${_obj}_LINKER_FLAGS_${_btype}} )
+ endif()
+ endforeach()
+
+endforeach()
+
+#-----------------------------------------------------------------------------------------------------------------------
+
+mark_as_advanced( CMAKE_C_FLAGS_BIT )
diff --git a/cmake/ecbuild_config.h.in b/cmake/ecbuild_config.h.in
index 2a01618..eef9b85 100644
--- a/cmake/ecbuild_config.h.in
+++ b/cmake/ecbuild_config.h.in
@@ -1,5 +1,5 @@
/*
- * (C) Copyright 1996-2015 ECMWF.
+ * (C) Copyright 1996-2016 ECMWF.
*
* This software is licensed under the terms of the Apache Licence Version 2.0
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_debug_var.cmake b/cmake/ecbuild_debug_var.cmake
deleted file mode 100644
index 9bb3499..0000000
--- a/cmake/ecbuild_debug_var.cmake
+++ /dev/null
@@ -1,47 +0,0 @@
-# (C) Copyright 1996-2015 ECMWF.
-#
-# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
-# granted to it by virtue of its status as an intergovernmental organisation nor
-# does it submit to any jurisdiction.
-
-##############################################################################
-# macro for exporting a variable to parent scope
-
-macro( set_parent_scope VAR )
-
- set( ${VAR} ${${VAR}} PARENT_SCOPE )
-
-endmacro( set_parent_scope )
-
-##############################################################################
-# macro for debugging a cmake variable
-
-macro( debug_var VAR )
-
- message( STATUS "${VAR} [${${VAR}}]" )
-
-endmacro( debug_var )
-
-##############################################################################
-# macro for debugging a cmake list
-
-macro( debug_list VAR )
-
- message( STATUS "${VAR}:" )
- foreach( _elem ${${VAR}} )
- message( STATUS " ${_elem}" )
- endforeach()
-
-endmacro( debug_list )
-
-##############################################################################
-# macro for debugging a environment variable within cmake
-
-macro( debug_env_var VAR )
-
- message( STATUS "ENV ${VAR} [$ENV{${VAR}}]" )
-
-endmacro( debug_env_var )
-
diff --git a/cmake/ecbuild_declare_project.cmake b/cmake/ecbuild_declare_project.cmake
index 11052c6..c59079e 100644
--- a/cmake/ecbuild_declare_project.cmake
+++ b/cmake/ecbuild_declare_project.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -69,8 +69,8 @@ macro( ecbuild_declare_project )
get_git_head_revision( GIT_REFSPEC ${PNAME}_GIT_SHA1 )
if( ${PNAME}_GIT_SHA1 )
string( SUBSTRING "${${PNAME}_GIT_SHA1}" 0 7 ${PNAME}_GIT_SHA1_SHORT )
- # debug_var( ${PNAME}_GIT_SHA1 )
- # debug_var( ${PNAME}_GIT_SHA1_SHORT )
+ # ecbuild_debug_var( ${PNAME}_GIT_SHA1 )
+ # ecbuild_debug_var( ${PNAME}_GIT_SHA1_SHORT )
else()
message( STATUS "Could not get git-sha1 for project ${PNAME}")
endif()
@@ -101,11 +101,11 @@ macro( ecbuild_declare_project )
set( ${PNAME}_VERSION_STR "${${PROJECT_NAME}_VERSION_STR}"
CACHE INTERNAL "package ${PNAME} version string" ) # ignore caps
- # debug_var( ${PNAME}_VERSION )
- # debug_var( ${PNAME}_VERSION_STR )
- # debug_var( ${PNAME}_MAJOR_VERSION )
- # debug_var( ${PNAME}_MINOR_VERSION )
- # debug_var( ${PNAME}_PATCH_VERSION )
+ # ecbuild_debug_var( ${PNAME}_VERSION )
+ # ecbuild_debug_var( ${PNAME}_VERSION_STR )
+ # ecbuild_debug_var( ${PNAME}_MAJOR_VERSION )
+ # ecbuild_debug_var( ${PNAME}_MINOR_VERSION )
+ # ecbuild_debug_var( ${PNAME}_PATCH_VERSION )
# install dirs for this project
@@ -151,7 +151,7 @@ macro( ecbuild_declare_project )
CACHE INTERNAL "${PNAME} ${p} full install path" )
endif()
- # debug_var( ${PNAME}_FULL_INSTALL_${p}_DIR )
+ # ecbuild_debug_var( ${PNAME}_FULL_INSTALL_${p}_DIR )
endforeach()
@@ -162,7 +162,7 @@ macro( ecbuild_declare_project )
if( ENABLE_RELATIVE_RPATHS )
file( RELATIVE_PATH relative_rpath ${${PNAME}_FULL_INSTALL_BIN_DIR} ${${PNAME}_FULL_INSTALL_LIB_DIR} )
- # debug_var( relative_rpath )
+ # ecbuild_debug_var( relative_rpath )
ecbuild_append_to_rpath( ${relative_rpath} )
@@ -171,14 +171,14 @@ macro( ecbuild_declare_project )
if( IS_ABSOLUTE ${INSTALL_LIB_DIR} )
ecbuild_append_to_rpath( "${INSTALL_LIB_DIR}" )
else()
- ecbuild_append_to_rpath( "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}" )
+ ecbuild_append_to_rpath( "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}" )
endif()
endif()
endif()
- # debug_var( CMAKE_INSTALL_RPATH )
+ # ecbuild_debug_var( CMAKE_INSTALL_RPATH )
# print project header
diff --git a/cmake/ecbuild_define_build_types.cmake b/cmake/ecbuild_define_build_types.cmake
index 53e4de0..4958458 100644
--- a/cmake/ecbuild_define_build_types.cmake
+++ b/cmake/ecbuild_define_build_types.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -7,55 +7,6 @@
# does it submit to any jurisdiction.
############################################################################################
-# define a Production build type
-
-# NOTE: gcc does not guarrante that -O3 performs better than -O2
-# -- it can perform worse due to assembly code bloating.
-# Moreover for gcc 4.1.2 we found that -O3 remove the parser code generated from Lex/Yacc
-# and therefore in production mode we downgrade to -O2 if the compiler is GCC (for all versions).
-
-
-if(CMAKE_COMPILER_IS_GNUCXX)
- set( CMAKE_CXX_FLAGS_PRODUCTION "-O2 -g" CACHE STRING "Flags used by the C++ compiler during Production builds." FORCE )
-else()
- set( CMAKE_CXX_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "Flags used by the C++ compiler during Production builds." FORCE )
-endif()
-
-if(CMAKE_COMPILER_IS_GNUCC)
- set( CMAKE_C_FLAGS_PRODUCTION "-O2 -g" CACHE STRING "Flags used by the C compiler during Production builds." FORCE )
-else()
- set( CMAKE_C_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "Flags used by the C compiler during Production builds." FORCE )
-endif()
-
-set( CMAKE_EXE_LINKER_FLAGS_PRODUCTION "" CACHE STRING "Flags used for linking binaries during Production builds." FORCE )
-set( CMAKE_SHARED_LINKER_FLAGS_PRODUCTION "" CACHE STRING "Flags used by the shared libraries linker during Production builds." FORCE )
-set( CMAKE_MODULE_LINKER_FLAGS_PRODUCTION "" CACHE STRING "Flags used by the static libraries linker during Production builds." FORCE )
-
-mark_as_advanced(
- CMAKE_CXX_FLAGS_PRODUCTION
- CMAKE_C_FLAGS_PRODUCTION
- CMAKE_EXE_LINKER_FLAGS_PRODUCTION
- CMAKE_SHARED_LINKER_FLAGS_PRODUCTION
- CMAKE_MODULE_LINKER_FLAGS_PRODUCTION )
-
-############################################################################################
-# fixes for specific compilers
-
-### remove -Mipa=fast from PGI compilers in RELEASE mode
-
-if( CMAKE_C_COMPILER_ID STREQUAL "PGI" )
- set(CMAKE_C_FLAGS_RELEASE "-fast -O3")
-endif()
-
-if( CMAKE_CXX_COMPILER_ID STREQUAL "PGI" )
- set(CMAKE_CXX_FLAGS_RELEASE "-fast -O3")
-endif()
-
-if( CMAKE_Fortran_COMPILER_ID STREQUAL "PGI" )
- set(CMAKE_Fortran_FLAGS_RELEASE "-fast -O3")
-endif()
-
-############################################################################################
# define default build type
set( _BUILD_TYPE_MSG "Build type options are: [ None | Debug | Bit | Production | Release | RelWithDebInfo ]" )
@@ -106,32 +57,3 @@ if( NOT CMAKE_BUILD_TYPE MATCHES "None" AND
NOT CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" )
message( FATAL_ERROR "CMAKE_BUILD_TYPE is not recognized. ${_BUILD_TYPE_MSG}" )
endif()
-
-############################################################################################
-# overrides of the flags per build type
-
-foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
-
- # OVERRIDE Compiler FLAGS per language (we override because CMake forcely defines them)
- foreach( _lang C CXX Fortran )
- if( ECBUILD_${_lang}_FLAGS_${_btype} )
- set( CMAKE_${_lang}_FLAGS_${_btype} ${ECBUILD_${_lang}_FLAGS_${_btype}} )
- endif()
- endforeach()
-
- # OVERRIDE Linker FLAGS per object type (we override because CMake forcely defines them)
- foreach( _obj EXE SHARED MODULE )
- if( ECBUILD_${_obj}_LINKER_FLAGS_${_btype} )
- set( CMAKE_${_obj}_LINKER_FLAGS_${_btype} ${ECBUILD_${_obj}_LINKER_FLAGS_${_btype}} )
- endif()
- endforeach()
-
-endforeach()
-
-# APPEND Linker FLAGS per language (we append because CMake typically leaves them empty)
-
-foreach( _lang C CXX Fortran )
- if( ECBUILD_${_lang}_LINK_FLAGS )
- set( CMAKE_${_lang}_LINK_FLAGS "${CMAKE_${_lang}_LINK_FLAGS} ${ECBUILD_${_lang}_LINK_FLAGS}" )
- endif()
-endforeach()
\ No newline at end of file
diff --git a/cmake/ecbuild_define_libs_and_execs_target.cmake b/cmake/ecbuild_define_libs_and_execs_target.cmake
new file mode 100644
index 0000000..812f42c
--- /dev/null
+++ b/cmake/ecbuild_define_libs_and_execs_target.cmake
@@ -0,0 +1,29 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+set( EC_ALL_EXES "" CACHE INTERNAL "" )
+set( EC_ALL_LIBS "" CACHE INTERNAL "" )
+
+############################################################################################
+# define libs and execs targets
+
+macro( ecbuild_define_libs_and_execs_targets )
+
+ add_custom_target( libs )
+
+ if( EC_ALL_LIBS )
+ add_dependencies( libs ${EC_ALL_LIBS} )
+ endif()
+
+ add_custom_target( execs )
+
+ if( EC_ALL_EXECS )
+ add_dependencies( execs ${EC_ALL_EXES} )
+ endif()
+
+endmacro(ecbuild_define_libs_and_execs_targets)
diff --git a/cmake/ecbuild_links_target.cmake b/cmake/ecbuild_define_links_target.cmake
similarity index 92%
rename from cmake/ecbuild_links_target.cmake
rename to cmake/ecbuild_define_links_target.cmake
index c881c0d..b5f53fe 100644
--- a/cmake/ecbuild_links_target.cmake
+++ b/cmake/ecbuild_define_links_target.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -63,11 +63,11 @@ macro( ecbuild_define_links_target )
add_custom_target( links DEPENDS ${ec_link_libs} ${ec_link_exes} )
- # debug_var( EC_ALL_EXES )
- # debug_var( ec_link_exes )
+ # ecbuild_debug_var( EC_ALL_EXES )
+ # ecbuild_debug_var( ec_link_exes )
- # debug_var( EC_ALL_LIBS )
- # debug_var( ec_link_libs )
+ # ecbuild_debug_var( EC_ALL_LIBS )
+ # ecbuild_debug_var( ec_link_libs )
endif()
diff --git a/cmake/ecbuild_define_options.cmake b/cmake/ecbuild_define_options.cmake
index f7a2321..af40ae1 100644
--- a/cmake/ecbuild_define_options.cmake
+++ b/cmake/ecbuild_define_options.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2015 ECMWF.
-#
+# (C) Copyright 1996-2016 ECMWF.
+#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -46,3 +46,7 @@ option( ECBUILD_USE_INCLUDE_DIRECTORIES "Forces to use global include_directorie
mark_as_advanced( ECBUILD_USE_INCLUDE_DIRECTORIES )
set( CMAKE_NO_SYSTEM_FROM_IMPORTED ON )
+
+# hide some CMake options from CMake UI
+
+mark_as_advanced( CMAKE_OSX_ARCHITECTURES CMAKE_OSX_DEPLOYMENT_TARGET CMAKE_OSX_SYSROOT )
\ No newline at end of file
diff --git a/cmake/ecbuild_define_paths.cmake b/cmake/ecbuild_define_paths.cmake
index 822bf71..856903d 100644
--- a/cmake/ecbuild_define_paths.cmake
+++ b/cmake/ecbuild_define_paths.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_dont_pack.cmake b/cmake/ecbuild_dont_pack.cmake
index 099ee1d..987aca7 100644
--- a/cmake/ecbuild_dont_pack.cmake
+++ b/cmake/ecbuild_dont_pack.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_download_resource.cmake b/cmake/ecbuild_download_resource.cmake
index d313704..3a9abdb 100644
--- a/cmake/ecbuild_download_resource.cmake
+++ b/cmake/ecbuild_download_resource.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_echo_targets.cmake b/cmake/ecbuild_echo_targets.cmake
index ddaa2e4..58407f7 100644
--- a/cmake/ecbuild_echo_targets.cmake
+++ b/cmake/ecbuild_echo_targets.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -32,13 +32,13 @@ function(ecbuild_echo_target_property tgt prop)
get_property(s TARGET ${tgt} PROPERTY ${prop} SET)
# only produce output for values that are set
- #if(s)
+ if(s)
message("tgt='${tgt}' prop='${prop}'")
message(" value='${v}'")
message(" defined='${d}'")
message(" set='${s}'")
message("")
- #endif()
+ endif()
cmake_policy(POP)
@@ -207,7 +207,7 @@ XCODE_ATTRIBUTE_WHATEVER
message("======================== ${tgt} ========================")
foreach(p ${props})
- ecbuild_echo_target_property("${t}" "${p}")
+ ecbuild_echo_target_property("${tgt}" "${p}")
endforeach()
message("")
endfunction()
diff --git a/cmake/ecbuild_enable_fortran.cmake b/cmake/ecbuild_enable_fortran.cmake
index 16512e8..9d65a59 100644
--- a/cmake/ecbuild_enable_fortran.cmake
+++ b/cmake/ecbuild_enable_fortran.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -39,7 +39,14 @@ macro( ecbuild_enable_fortran )
message(FATAL_ERROR "Unknown keywords given to ecbuild_enable_fortran(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
endif()
- enable_language( Fortran )
+ if( NOT CMAKE_Fortran_COMPILER_LOADED )
+ enable_language( Fortran )
+ ecbuild_compiler_flags( Fortran )
+ if( ENABLE_WARNINGS AND CMAKE_Fortran_COMPILER_ID MATCHES "Intel" )
+ set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -warn all" )
+ ecbuild_debug( "Fortran FLAG [-warn all] added" )
+ endif()
+ endif()
if( DEFINED _PAR_REQUIRED )
if( CMAKE_Fortran_COMPILER_FORCED )
diff --git a/cmake/ecbuild_features.cmake b/cmake/ecbuild_features.cmake
index 5d619a5..0490783 100644
--- a/cmake/ecbuild_features.cmake
+++ b/cmake/ecbuild_features.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -10,10 +10,6 @@
include( FeatureSummary )
-function( debug_var _var )
- message( "${_var} = ${${_var}}" )
-endfunction()
-
# Write list of enabled features to CMake variable ${OUT}
macro( ecbuild_enabled_features OUT )
get_property( ${OUT} GLOBAL PROPERTY ENABLED_FEATURES )
@@ -26,17 +22,17 @@ endmacro()
# Enable the feature ${_name} (add to enabled features, remove from disabled)
function( ecbuild_enable_feature _name )
-
+
get_property( _enabled_features GLOBAL PROPERTY ENABLED_FEATURES )
get_property( _disabled_features GLOBAL PROPERTY DISABLED_FEATURES )
-
+
if( _disabled_features )
list( REMOVE_ITEM _disabled_features ${_name} )
endif()
list( APPEND _enabled_features ${_name} )
list( REMOVE_DUPLICATES _enabled_features )
-
+
set_property(GLOBAL PROPERTY ENABLED_FEATURES "${_enabled_features}" )
set_property(GLOBAL PROPERTY DISABLED_FEATURES "${_disabled_features}" )
@@ -47,53 +43,42 @@ function( ecbuild_disable_feature _name )
get_property( _enabled_features GLOBAL PROPERTY ENABLED_FEATURES )
get_property( _disabled_features GLOBAL PROPERTY DISABLED_FEATURES )
-
+
if( _enabled_features )
list( REMOVE_ITEM _enabled_features ${_name} )
endif()
list( APPEND _disabled_features ${_name} )
list( REMOVE_DUPLICATES _disabled_features )
-
+
set_property(GLOBAL PROPERTY ENABLED_FEATURES "${_enabled_features}" )
set_property(GLOBAL PROPERTY DISABLED_FEATURES "${_disabled_features}" )
-
-endfunction()
-# Set description of feature ${_name} to ${_desc}
-function( ecbuild_set_feature_description _name _desc)
- set_property(GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION "${_desc}" )
-endfunction()
-
-# Set purpose of feature ${_name} to ${_desc}
-function( ecbuild_set_feature_purpose _name _purpose )
- get_property( _purpose_list GLOBAL PROPERTY _CMAKE_${_name}_PURPOSE )
- list( APPEND _purpose_list ${_purpose} )
- list( REMOVE_DUPLICATES _purpose_list )
- set_property(GLOBAL PROPERTY _CMAKE_${_name}_PURPOSE "${_purpose_list}" )
endfunction()
# en/disable feature ${_name} and set its description and purpose
function( ecbuild_set_feature _name )
set(options ) # none
- set(oneValueArgs ENABLED DESCRIPTION PURPOSE )
+ set(oneValueArgs ENABLED )
set(multiValueArgs ) # none
- CMAKE_PARSE_ARGUMENTS( _PAR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
-
- get_property( _feature_desc GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION )
+ cmake_parse_arguments( _PAR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+ get_property( _feature_desc GLOBAL PROPERTY _CMAKE_${_name}_DESCRIPTION )
get_property( _enabled_features GLOBAL PROPERTY ENABLED_FEATURES )
get_property( _disabled_features GLOBAL PROPERTY DISABLED_FEATURES )
-
+
if( DEFINED _PAR_ENABLED )
if( _PAR_ENABLED )
+ ecbuild_debug( "ecbuild_set_feature(${_name}): enabling feature" )
ecbuild_enable_feature( ${_name} )
else()
+ ecbuild_debug( "ecbuild_set_feature(${_name}): disabling feature" )
ecbuild_disable_feature( ${_name} )
endif()
endif()
-
+
ecbuild_enabled_features( _enabled_features )
list (FIND _enabled_features "${_name}" _index)
if (${_index} GREATER -1)
@@ -105,17 +90,9 @@ function( ecbuild_set_feature _name )
if (${_index} GREATER -1)
set( _feature_found 1 )
endif()
-
+
if( NOT _feature_found )
message( WARNING "Feature ${_name} has not yet been enabled or disabled" )
endif()
-
- if( _PAR_DESCRIPTION )
- ecbuild_set_feature_description( ${_name} ${_PAR_DESCRIPTION} )
- endif()
-
- if( _PAR_PURPOSE )
- ecbuild_set_feature_purpose( ${_name} ${_PAR_PURPOSE} )
- endif()
endfunction()
diff --git a/cmake/ecbuild_find_fortranlibs.cmake b/cmake/ecbuild_find_fortranlibs.cmake
index 850c4a3..c7ccc64 100644
--- a/cmake/ecbuild_find_fortranlibs.cmake
+++ b/cmake/ecbuild_find_fortranlibs.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_find_lexyacc.cmake b/cmake/ecbuild_find_lexyacc.cmake
index 9876097..628488f 100644
--- a/cmake/ecbuild_find_lexyacc.cmake
+++ b/cmake/ecbuild_find_lexyacc.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -34,6 +34,7 @@
#
# The following CMake variables are set if lex and yacc were found:
#
+# :LEXYACC_FOUND: Found suitable combination of bison, lex, yacc, flex
# :LEX_FOUND: lex was found
# :YACC_FOUND: yacc was found
# :LEX_EXECUTABLE: path to the lex executable
@@ -59,25 +60,32 @@ macro( ecbuild_find_lexyacc )
endif()
+ set( LEXYACC_FOUND 1 )
+
if( NOT YACC_FOUND AND NOT BISON_FOUND ) # neither bison nor yacc were found
- message( FATAL_ERROR "neither bison or yacc were found - at least one is required (together with its lexical analyser" )
+ ecbuild_debug( "Neither bison or yacc were found - at least one is required (together with its lexical analyser" )
+ set( LEXYACC_FOUND 0 )
endif()
if( NOT YACC_FOUND ) # check for both bison & flex together
if( BISON_FOUND AND NOT FLEX_FOUND )
- message( FATAL_ERROR "both bison and flex are required - flex not found" )
+ set( LEXYACC_FOUND 0 )
+ ecbuild_debug( "Both bison and flex are required - flex not found" )
endif()
if( FLEX_FOUND AND NOT BISON_FOUND )
- message( FATAL_ERROR "both bison and flex are required - bison not found" )
+ set( LEXYACC_FOUND 0 )
+ ecbuild_debug( "Both bison and flex are required - bison not found" )
endif()
endif()
if( NOT BISON_FOUND ) # check for both yacc & lex together
if( YACC_FOUND AND NOT LEX_FOUND )
- message( FATAL_ERROR "both yacc and lex are required - lex not found" )
+ set( LEXYACC_FOUND 0 )
+ ecbuild_debug( "Both yacc and lex are required - lex not found" )
endif()
if( LEX_FOUND AND NOT YACC_FOUND )
- message( FATAL_ERROR "both yacc and lex are required - yacc not found" )
+ set( LEXYACC_FOUND 0 )
+ ecbuild_debug( "Both yacc and lex are required - yacc not found" )
endif()
endif()
diff --git a/cmake/ecbuild_find_mpi.cmake b/cmake/ecbuild_find_mpi.cmake
index 82fc4b5..5610c77 100644
--- a/cmake/ecbuild_find_mpi.cmake
+++ b/cmake/ecbuild_find_mpi.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_find_omp.cmake b/cmake/ecbuild_find_omp.cmake
index 882adfe..5458d3e 100644
--- a/cmake/ecbuild_find_omp.cmake
+++ b/cmake/ecbuild_find_omp.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -206,17 +206,24 @@ endmacro( ecbuild_find_omp )
macro( ecbuild_enable_omp )
+ ecbuild_debug("ecbuild_enable_omp: Trying to enable OpenMP")
ecbuild_find_omp( COMPONENTS C CXX Fortran )
+ ecbuild_debug_var("OMP_C_FOUND")
if( OMP_C_FOUND )
+ ecbuild_debug("Adding ${OMP_C_FLAGS} to CMAKE_C_FLAGS")
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OMP_C_FLAGS}" )
endif()
+ ecbuild_debug_var("OMP_CXX_FOUND")
if( OMP_CXX_FOUND )
+ ecbuild_debug("Adding ${OMP_CXX_FLAGS} to CMAKE_CXX_FLAGS")
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OMP_CXX_FLAGS}" )
endif()
+ ecbuild_debug_var("OMP_Fortran_FOUND")
if( OMP_Fortran_FOUND )
+ ecbuild_debug("Adding ${OMP_Fortran_FLAGS} to CMAKE_Fortran_FLAGS")
set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${OMP_Fortran_FLAGS}" )
endif()
diff --git a/cmake/ecbuild_find_package.cmake b/cmake/ecbuild_find_package.cmake
index b67b51d..33d136a 100644
--- a/cmake/ecbuild_find_package.cmake
+++ b/cmake/ecbuild_find_package.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -103,7 +103,7 @@ macro( ecbuild_find_package )
message(FATAL_ERROR "Call to ecbuild_find_package() requests EXACT but doesn't specify VERSION.")
endif()
- # debug_var( _PAR_NAME )
+ # ecbuild_debug_var( _PAR_NAME )
string( TOUPPER ${_PAR_NAME} pkgUPPER )
string( TOLOWER ${_PAR_NAME} pkgLOWER )
@@ -157,9 +157,9 @@ macro( ecbuild_find_package )
set( ${_PAR_NAME}_DIR "$ENV{${_PAR_NAME}_DIR}" )
endif()
- # Find packages quietly unless in DEVELOPER_MODE, LOG_LEVEL is DEBUG or the package is REQUIRED
+ # Find packages quietly unless in DEVELOPER_MODE or LOG_LEVEL is DEBUG
- if( NOT ( DEVELOPER_MODE OR _PAR_REQUIRED ) AND ( ECBUILD_LOG_LEVEL GREATER ${ECBUILD_DEBUG} ) )
+ if( NOT DEVELOPER_MODE AND ( ECBUILD_LOG_LEVEL GREATER ${ECBUILD_DEBUG} ) )
set( _find_quiet QUIET )
endif()
diff --git a/cmake/ecbuild_find_perl.cmake b/cmake/ecbuild_find_perl.cmake
index c615203..11e6f1d 100644
--- a/cmake/ecbuild_find_perl.cmake
+++ b/cmake/ecbuild_find_perl.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_find_python.cmake b/cmake/ecbuild_find_python.cmake
index c001a7b..2a8b457 100644
--- a/cmake/ecbuild_find_python.cmake
+++ b/cmake/ecbuild_find_python.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -14,7 +14,7 @@
#
# Find Python interpreter, its version and the Python libraries. ::
#
-# ecbuild_find_python( [ VERSION <version> ] [ REQUIRED ] )
+# ecbuild_find_python( [ VERSION <version> ] [ REQUIRED ] [ NO_LIBS ] )
#
# Options
# -------
@@ -25,14 +25,18 @@
# REQUIRED : optional
# fail if Python was not found
#
+# NO_LIBS : optional
+# only search for the Python interpreter, not the libraries
+#
# Output variables
# ----------------
#
-# The following CMake variables are set if perl was found:
+# The following CMake variables are set if python was found:
#
# :PYTHONINTERP_FOUND: Python interpreter was found
# :PYTHONLIBS_FOUND: Python libraries were found
# :PYTHON_FOUND: Python was found (both interpreter and libraries)
+# :PYTHON_EXECUTABLE: Python executable
# :PYTHON_VERSION_MAJOR: major version number
# :PYTHON_VERSION_MINOR: minor version number
# :PYTHON_VERSION_PATCH: patch version number
@@ -45,11 +49,11 @@
set( __test_python ${CMAKE_CURRENT_LIST_DIR}/pymain.c )
-macro( ecbuild_find_python )
+function( ecbuild_find_python )
# parse parameters
- set( options REQUIRED )
+ set( options REQUIRED NO_LIBS )
set( single_value_args VERSION )
set( multi_value_args )
@@ -64,7 +68,7 @@ macro( ecbuild_find_python )
find_package( PythonInterp )
if( NOT PYTHONINTERP_FOUND AND _p_REQUIRED )
- message( FATAL_ERROR "Failed to find any Python interpreter (REQUIRED)" )
+ ecbuild_error( "Failed to find any Python interpreter (REQUIRED)" )
endif()
# find python version
@@ -74,10 +78,10 @@ macro( ecbuild_find_python )
# endif()
# endif()
- # message( STATUS "Python version ${PYTHON_VERSION_STRING}" )
- # debug_var(PYTHON_VERSION_MAJOR)
- # debug_var(PYTHON_VERSION_MINOR)
- # debug_var(PYTHON_VERSION_PATCH)
+ # ecbuild_debug( "Python version ${PYTHON_VERSION_STRING}" )
+ # ecbuild_debug_var(PYTHON_VERSION_MAJOR)
+ # ecbuild_debug_var(PYTHON_VERSION_MINOR)
+ # ecbuild_debug_var(PYTHON_VERSION_PATCH)
if( PYTHONINTERP_FOUND AND DEFINED _p_VERSION )
if( _p_VERSION VERSION_GREATER "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}" )
@@ -94,65 +98,77 @@ macro( ecbuild_find_python )
if( PYTHONINTERP_FOUND )
ecbuild_debug( "ecbuild_find_python: Found Python interpreter version ${PYTHON_VERSION_STRING} at ${PYTHON_EXECUTABLE}" )
+ # find where python site-packages are ...
+
+ if( PYTHON_EXECUTABLE )
+ execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
+ endif()
+ ecbuild_debug( "ecbuild_find_python: PYTHON_SITE_PACKAGES=${PYTHON_SITE_PACKAGES}" )
+
+ endif()
+ if( PYTHONINTERP_FOUND AND NOT _p_NO_LIBS )
# find python config
if( PYTHON_EXECUTABLE AND EXISTS ${PYTHON_EXECUTABLE}-config )
- set(PYTHON_CONFIG ${PYTHON_EXECUTABLE}-config CACHE PATH "" FORCE)
+ set(PYTHON_CONFIG_EXECUTABLE ${PYTHON_EXECUTABLE}-config CACHE PATH "" FORCE)
else()
- find_program( PYTHON_CONFIG NAMES python-config python-config${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} )
+ find_program( PYTHON_CONFIG_EXECUTABLE NAMES python-config python-config${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} )
endif()
+ ecbuild_debug_var( PYTHON_CONFIG_EXECUTABLE )
+
# find python libs
- # The OpenBSD python packages have python-config's
+ # The OpenBSD python packages have python-config's
# that don't reliably report linking flags that will work.
-
- if( PYTHON_CONFIG AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
- ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using ${PYTHON_CONFIG}" )
-
- execute_process(COMMAND "${PYTHON_CONFIG}" --ldflags
+
+ if( PYTHON_CONFIG_EXECUTABLE AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
+ ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using ${PYTHON_CONFIG_EXECUTABLE}" )
+
+ execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --ldflags
OUTPUT_VARIABLE PYTHON_LIBRARIES
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
- execute_process(COMMAND "${PYTHON_CONFIG}" --includes
- OUTPUT_VARIABLE PYTHON_INCLUDE_DIR
+ execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --includes
+ OUTPUT_VARIABLE PYTHON_INCLUDE_DIRS
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
- string(REGEX REPLACE "^[-I]" "" PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
- string(REGEX REPLACE "[ ]-I" " " PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
-
- separate_arguments(PYTHON_INCLUDE_DIR)
+ string(REGEX REPLACE "^[-I]" "" PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIRS}")
+ string(REGEX REPLACE "[ ]-I" " " PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIRS}")
+
+ separate_arguments(PYTHON_INCLUDE_DIRS)
else() # revert to finding pythonlibs the standard way (cmake macro)
ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using find_package(PythonLibs)" )
-
+
find_package(PythonLibs)
- if( PYTHON_INCLUDE_PATH AND NOT PYTHON_INCLUDE_DIR )
- set(PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_PATH}")
+ if( PYTHON_INCLUDE_PATH AND NOT PYTHON_INCLUDE_DIRS )
+ set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_PATH}")
endif()
endif()
# Remove duplicate include directories
- list(REMOVE_DUPLICATES PYTHON_INCLUDE_DIR)
+ list(REMOVE_DUPLICATES PYTHON_INCLUDE_DIRS)
- # Test if we can link against the Python libraries and include Python.h
- try_compile( PYTHON_LIBS_WORKING ${CMAKE_CURRENT_BINARY_DIR}
- ${__test_python}
- CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${PYTHON_INCLUDE_DIR}"
- LINK_LIBRARIES ${PYTHON_LIBRARIES} )
- # set output variables
+ if( PYTHON_LIBRARIES AND PYTHON_INCLUDE_DIRS )
+ # Test if we can link against the Python libraries and include Python.h
+ try_compile( PYTHON_LIBS_WORKING ${CMAKE_CURRENT_BINARY_DIR}
+ ${__test_python}
+ CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${PYTHON_INCLUDE_DIRS}"
+ LINK_LIBRARIES ${PYTHON_LIBRARIES} )
- find_package_handle_standard_args( PythonLibs DEFAULT_MSG
- PYTHON_INCLUDE_DIR PYTHON_LIBRARIES PYTHON_LIBS_WORKING )
- ecbuild_debug( "ecbuild_find_python: PYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR}" )
- ecbuild_debug( "ecbuild_find_python: PYTHON_LIBRARIES=${PYTHON_LIBRARIES}" )
+ # set output variables
- set( PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} )
- set( PYTHON_INCLUDE_PATH ${PYTHON_INCLUDE_DIR} )
+ find_package_handle_standard_args( PythonLibs DEFAULT_MSG
+ PYTHON_INCLUDE_DIRS PYTHON_LIBRARIES PYTHON_LIBS_WORKING )
+ ecbuild_debug( "ecbuild_find_python: PYTHON_INCLUDE_DIRS=${PYTHON_INCLUDE_DIRS}" )
+ ecbuild_debug( "ecbuild_find_python: PYTHON_LIBRARIES=${PYTHON_LIBRARIES}" )
+
+ endif()
# Also set PYTHON_FOUND and Python_FOUND for compatibility with ecbuild_add_option
if( PYTHONLIBS_FOUND )
@@ -160,18 +176,30 @@ macro( ecbuild_find_python )
set( Python_FOUND 1 )
endif()
- # find where python site-packages are ...
-
- execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
- ecbuild_debug( "ecbuild_find_python: PYTHON_SITE_PACKAGES=${PYTHON_SITE_PACKAGES}" )
-
endif()
-# debug_var( PYTHONINTERP_FOUND )
-# debug_var( PYTHON_EXECUTABLE )
-# debug_var( PYTHONLIBS_FOUND )
-# debug_var( PYTHON_INCLUDE_DIRS )
-# debug_var( PYTHON_LIBRARIES )
-# debug_var( PYTHON_SITE_PACKAGES )
-
-endmacro( ecbuild_find_python )
+ ecbuild_debug_var( PYTHONINTERP_FOUND )
+ ecbuild_debug_var( PYTHON_FOUND )
+ ecbuild_debug_var( PYTHON_EXECUTABLE )
+ ecbuild_debug_var( PYTHON_CONFIG_EXECUTABLE )
+ ecbuild_debug_var( PYTHON_VERSION_MAJOR )
+ ecbuild_debug_var( PYTHON_VERSION_MINOR )
+ ecbuild_debug_var( PYTHON_VERSION_PATCH )
+ ecbuild_debug_var( PYTHON_VERSION_STRING )
+ ecbuild_debug_var( PYTHON_INCLUDE_DIRS )
+ ecbuild_debug_var( PYTHON_LIBRARIES )
+ ecbuild_debug_var( PYTHON_SITE_PACKAGES )
+
+ set( PYTHONINTERP_FOUND ${PYTHONINTERP_FOUND} PARENT_SCOPE )
+ set( PYTHONLIBS_FOUND ${PYTHONLIBS_FOUND} PARENT_SCOPE )
+ set( PYTHON_FOUND ${PYTHON_FOUND} PARENT_SCOPE )
+ set( PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} PARENT_SCOPE )
+ set( PYTHON_VERSION_MAJOR ${PYTHON_VERSION_MAJOR} PARENT_SCOPE )
+ set( PYTHON_VERSION_MINOR ${PYTHON_VERSION_MINOR} PARENT_SCOPE )
+ set( PYTHON_VERSION_PATCH ${PYTHON_VERSION_PATCH} PARENT_SCOPE )
+ set( PYTHON_VERSION_STRING ${PYTHON_VERSION_STRING} PARENT_SCOPE )
+ set( PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} PARENT_SCOPE )
+ set( PYTHON_LIBRARIES ${PYTHON_LIBRARIES} PARENT_SCOPE )
+ set( PYTHON_SITE_PACKAGES ${PYTHON_SITE_PACKAGES} PARENT_SCOPE )
+
+endfunction( ecbuild_find_python )
diff --git a/cmake/ecbuild_generate_config_headers.cmake b/cmake/ecbuild_generate_config_headers.cmake
index 93cbb1f..930fa3a 100644
--- a/cmake/ecbuild_generate_config_headers.cmake
+++ b/cmake/ecbuild_generate_config_headers.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_generate_fortran_interfaces.cmake b/cmake/ecbuild_generate_fortran_interfaces.cmake
new file mode 100644
index 0000000..9c2045b
--- /dev/null
+++ b/cmake/ecbuild_generate_fortran_interfaces.cmake
@@ -0,0 +1,115 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_generate_fortran_interfaces
+# ===================================
+#
+# Generates interfaces form the Fortran source files. ::
+#
+# ecbuild_generate_fortran_interfaces()
+#
+# Options
+# -------
+#
+# TARGET : required
+# target name
+#
+##############################################################################
+
+function( ecbuild_generate_fortran_interfaces )
+
+ find_program( FCM_EXECUTABLE fcm REQUIRED DOC "Fortran interface generator" )
+
+ if( NOT FCM_EXECUTABLE )
+ message( FATAL_ERROR "ecbuild_generate_fortran_interfaces: fcm executable not found." )
+ endif()
+
+ set( FCM_CONFIG_FILE "${PROJECT_SOURCE_DIR}/cmake/fcm-make-interfaces.cfg")
+
+ if( NOT EXISTS ${FCM_CONFIG_FILE} )
+ message( FATAL_ERROR "ecbuild_generate_fortran_interfaces: needs fcm configuration in ${FCM_CONFIG_FILE}" )
+ endif()
+
+ set( options )
+ set( single_value_args TARGET DESTINATION PARALLEL INCLUDE_DIRS GENERATED SOURCE_DIR )
+ set( multi_value_args DIRECTORIES )
+
+ cmake_parse_arguments( P "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
+
+ if( NOT DEFINED P_TARGET )
+ message( FATAL_ERROR "ecbuild_generate_fortran_interfaces: TARGET argument missing" )
+ endif()
+
+ if( NOT DEFINED P_DESTINATION )
+ message( FATAL_ERROR "ecbuild_generate_fortran_interfaces: DESTINATION argument missing" )
+ endif()
+
+ if( NOT DEFINED P_DIRECTORIES )
+ message( FATAL_ERROR "ecbuild_generate_fortran_interfaces: DIRECTORIES argument missing" )
+ endif()
+
+ if( NOT DEFINED P_PARALLEL OR (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") )
+ set( P_PARALLEL 1 )
+ endif()
+
+ if( NOT DEFINED P_SOURCE_DIR )
+ message( FATAL_ERROR "ecbuild_generate_fortran_interfaces: SOURCE_DIR argument missing")
+ endif()
+
+ foreach( _srcdir ${P_DIRECTORIES} )
+ if( _srcdir MATCHES "/$" )
+ ecbuild_critical("ecbuild_generate_fortran_interfaces: directory ${_srcdir} must not end with /")
+ endif()
+ ecbuild_list_add_pattern( LIST fortran_files SOURCE_DIR ${P_SOURCE_DIR} GLOB ${_srcdir}/*.F* )
+ endforeach()
+
+ string( REPLACE ";" " " _srcdirs "${P_DIRECTORIES}" )
+
+ set( _cnt 0 )
+ foreach( file ${_fortran_files} )
+ if( ${${SRC}/file} IS_NEWER_THAN ${${SRC}/file} )
+ set( run_fcm 1 )
+ endif()
+ endforeach()
+
+ foreach( fortran_file ${fortran_files} )
+ #list( APPEND fullpath_fortran_files ${CMAKE_CURRENT_SOURCE_DIR}/${fortran_file} )
+ get_filename_component(base ${fortran_file} NAME_WE)
+ set( interface_file "${CMAKE_CURRENT_BINARY_DIR}/interfaces/include/${base}.intfb.h" )
+ list( APPEND interface_files ${interface_file} )
+ set_source_files_properties( ${interface_file} PROPERTIES GENERATED TRUE )
+ math(EXPR _cnt "${_cnt}+1")
+ endforeach()
+
+ ecbuild_info("Target ${P_TARGET} will generate ${_cnt} interface files using FCM")
+
+ if( DEFINED P_GENERATED )
+ set( ${P_GENERATED} ${interface_files} PARENT_SCOPE )
+ endif()
+
+ set( include_dir ${CMAKE_CURRENT_BINARY_DIR}/${P_DESTINATION}/interfaces/include )
+ set( ${P_INCLUDE_DIRS} ${include_dir} PARENT_SCOPE )
+
+ execute_process( COMMAND ${CMAKE_COMMAND} -E make_directory ${include_dir}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+ add_custom_command(
+ OUTPUT "${P_DESTINATION}/${P_TARGET}.timestamp"
+ COMMAND ${FCM_EXECUTABLE} make -j ${P_PARALLEL} --config-file=${FCM_CONFIG_FILE} interfaces.ns-incl=${_srcdirs} interfaces.source=${P_SOURCE_DIR}
+ COMMAND touch "${P_TARGET}.timestamp"
+ DEPENDS ${fortran_files}
+ COMMENT "Generating ${_cnt} interface files for target ${P_TARGET}"
+ WORKING_DIRECTORY ${P_DESTINATION} VERBATIM )
+
+ add_custom_target( ${P_TARGET} DEPENDS ${P_DESTINATION}/${P_TARGET}.timestamp )
+
+
+endfunction( ecbuild_generate_fortran_interfaces )
diff --git a/cmake/ecbuild_generate_rpc.cmake b/cmake/ecbuild_generate_rpc.cmake
index 45a00ba..a2e3dd2 100644
--- a/cmake/ecbuild_generate_rpc.cmake
+++ b/cmake/ecbuild_generate_rpc.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_generate_yy.cmake b/cmake/ecbuild_generate_yy.cmake
index 5ef2dad..aba5620 100644
--- a/cmake/ecbuild_generate_yy.cmake
+++ b/cmake/ecbuild_generate_yy.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -19,6 +19,7 @@
# LEX <file>
# DEPENDANT <file1> [ <file2> ... ]
# [ SOURCE_DIR <dir> ]
+# [ OUTPUT_DIRECTORY <dir> ]
# [ YACC_TARGET <file> ]
# [ LEX_TARGET <file> ]
# [ YACC_FLAGS <flags> ]
@@ -45,6 +46,9 @@
# SOURCE_DIR : optional, defaults to CMAKE_CURRENT_SOURCE_DIR
# directory where yacc and lex source files are located
#
+# OUTPUT_DIRECTORY : optional, defaults to CMAKE_CURRENT_BINARY_DIR
+# output directory for yacc and lex target files
+#
# YACC_TARGET : optional, defaults to YACC
# base name of the generated yacc target file (without .c extension)
#
@@ -72,7 +76,7 @@ macro( ecbuild_generate_yy )
ecbuild_find_perl( REQUIRED )
set( options )
- set( single_value_args YYPREFIX YACC LEX SOURCE_DIR YACC_TARGET LEX_TARGET LEX_FLAGS YACC_FLAGS FLEX_FLAGS BISON_FLAGS )
+ set( single_value_args YYPREFIX YACC LEX SOURCE_DIR OUTPUT_DIRECTORY YACC_TARGET LEX_TARGET LEX_FLAGS YACC_FLAGS FLEX_FLAGS BISON_FLAGS )
set( multi_value_args DEPENDANT )
cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
@@ -125,19 +129,23 @@ macro( ecbuild_generate_yy )
set ( _PAR_LEX_TARGET ${_PAR_LEX} )
endif()
- set( ${BASE}yy_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC_TARGET}.tmp.c )
- set( ${BASE}yh_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC_TARGET}.tmp.h )
- set( ${BASE}yl_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_LEX_TARGET}.tmp.c )
-
- set( ${BASE}yy_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC_TARGET}.c )
- set( ${BASE}yh_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC_TARGET}.h )
- set( ${BASE}yl_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_LEX_TARGET}.c )
-
if( NOT _PAR_SOURCE_DIR )
set( _PAR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
endif()
- add_custom_target( ${_PAR_YYPREFIX}_${DEPENDANT} SOURCES ${_PAR_SOURCE_DIR}/${_PAR_YACC}.y ${_PAR_SOURCE_DIR}/${_PAR_LEX}.l )
+ if( NOT _PAR_OUTPUT_DIRECTORY )
+ set( _PAR_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+ else()
+ file( MAKE_DIRECTORY ${_PAR_OUTPUT_DIRECTORY} )
+ endif()
+
+ set( ${BASE}yy_tmp_target ${_PAR_OUTPUT_DIRECTORY}/${_PAR_YACC_TARGET}.tmp.c )
+ set( ${BASE}yh_tmp_target ${_PAR_OUTPUT_DIRECTORY}/${_PAR_YACC_TARGET}.tmp.h )
+ set( ${BASE}yl_tmp_target ${_PAR_OUTPUT_DIRECTORY}/${_PAR_LEX_TARGET}.tmp.c )
+
+ set( ${BASE}yy_target ${_PAR_OUTPUT_DIRECTORY}/${_PAR_YACC_TARGET}.c )
+ set( ${BASE}yh_target ${_PAR_OUTPUT_DIRECTORY}/${_PAR_YACC_TARGET}.h )
+ set( ${BASE}yl_target ${_PAR_OUTPUT_DIRECTORY}/${_PAR_LEX_TARGET}.c )
if( BISON_FOUND )
bison_target( ${BASE}_parser ${_PAR_SOURCE_DIR}/${_PAR_YACC}.y ${${BASE}yy_tmp_target} COMPILE_FLAGS "${_PAR_BISON_FLAGS}" )
diff --git a/cmake/ecbuild_get_cxx11_flags.cmake b/cmake/ecbuild_get_cxx11_flags.cmake
index 5bfed07..bd7d0e8 100644
--- a/cmake/ecbuild_get_cxx11_flags.cmake
+++ b/cmake/ecbuild_get_cxx11_flags.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_get_date.cmake b/cmake/ecbuild_get_date.cmake
index ec308a3..7a35a0c 100644
--- a/cmake/ecbuild_get_date.cmake
+++ b/cmake/ecbuild_get_date.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_get_resources.cmake b/cmake/ecbuild_get_resources.cmake
index da824d9..4dc4957 100644
--- a/cmake/ecbuild_get_resources.cmake
+++ b/cmake/ecbuild_get_resources.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2015 ECMWF.
-#
+# (C) Copyright 1996-2016 ECMWF.
+#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -29,7 +29,7 @@ macro( ecbuild_get_resources )
if( NOT _PAR_TO_DIR )
set( _PAR_TO_DIR ${CMAKE_CURRENT_BINARY_DIR} )
endif()
-
+
list( LENGTH _PAR_LIST _rsize )
math( EXPR _max "${_rsize}-1" )
foreach( i RANGE 0 ${_max} 2 )
@@ -39,14 +39,14 @@ macro( ecbuild_get_resources )
list( GET _PAR_LIST ${i} r )
list( GET _PAR_LIST ${in} rh )
-# debug_var( r )
-# debug_var( rh )
+# ecbuild_debug_var( r )
+# ecbuild_debug_var( rh )
get_filename_component( rf ${r} NAME )
file( DOWNLOAD ${r} ${_PAR_TO_DIR}/${rf} EXPECTED_HASH SHA1=${rh} )
endforeach()
-
+
endmacro()
diff --git a/cmake/ecbuild_get_test_data.cmake b/cmake/ecbuild_get_test_data.cmake
index 8106c65..9c1e18b 100644
--- a/cmake/ecbuild_get_test_data.cmake
+++ b/cmake/ecbuild_get_test_data.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -151,10 +151,10 @@ function( ecbuild_get_test_data )
set( _p_DIRNAME ${PROJECT_NAME}/${currdir} )
endif()
-# debug_var( _p_TARGET )
-# debug_var( _p_NAME )
-# debug_var( _p_URL )
-# debug_var( _p_DIRNAME )
+# ecbuild_debug_var( _p_TARGET )
+# ecbuild_debug_var( _p_NAME )
+# ecbuild_debug_var( _p_URL )
+# ecbuild_debug_var( _p_DIRNAME )
# download the data
@@ -326,9 +326,9 @@ function( ecbuild_get_test_multidata )
message(FATAL_ERROR "ecbuild_get_test_data() expects a TARGET")
endif()
-# debug_var( _p_TARGET )
-# debug_var( _p_NAME )
-# debug_var( _p_DIRNAME )
+# ecbuild_debug_var( _p_TARGET )
+# ecbuild_debug_var( _p_NAME )
+# ecbuild_debug_var( _p_DIRNAME )
if( _p_EXTRACT )
set( _extract EXTRACT )
@@ -372,11 +372,11 @@ endfunction()\n\n" )
set( _md5 MD5 ${_md5} )
endif()
- #debug_var(_f)
- #debug_var(_file)
- #debug_var(_dirname)
- #debug_var(_name)
- #debug_var(_md5)
+ #ecbuild_debug_var(_f)
+ #ecbuild_debug_var(_file)
+ #ecbuild_debug_var(_dirname)
+ #ecbuild_debug_var(_name)
+ #ecbuild_debug_var(_md5)
ecbuild_get_test_data(
TARGET __get_data_${_p_TARGET}_${_name}
diff --git a/cmake/ecbuild_git.cmake b/cmake/ecbuild_git.cmake
index 42124db..b20e895 100644
--- a/cmake/ecbuild_git.cmake
+++ b/cmake/ecbuild_git.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -8,6 +8,8 @@
set( ECBUILD_GIT ON CACHE BOOL "Turn on/off ecbuild_git() function" )
+mark_as_advanced(ECBUILD_GIT)
+
if( ECBUILD_GIT )
find_package(Git)
@@ -106,7 +108,7 @@ macro( ecbuild_git )
RESULT_VARIABLE nok ERROR_VARIABLE error
WORKING_DIRECTORY "${PARENT_DIR}")
if(nok)
- message(FATAL_ERROR "${_PAR_DIR} git clone failed: ${error}\n")
+ message(FATAL_ERROR "${_PAR_DIR} git clone failed:\n ${GIT_EXECUTABLE} clone ${_PAR_URL} ${clone_args} ${_PAR_DIR} -q\n ${error}\n")
endif()
message( STATUS "${_PAR_DIR} retrieved.")
set( _needs_switch 1 )
@@ -133,7 +135,6 @@ macro( ecbuild_git )
message(STATUS "git rev-parse --abbrev-ref HEAD on ${_PAR_DIR} failed:\n ${error}")
endif()
- #message(STATUS "git describe --exact-match --abbrev=0 @ ${ABS_PAR_DIR}")
execute_process( COMMAND ${GIT_EXECUTABLE} describe --exact-match --abbrev=0
OUTPUT_VARIABLE _current_tag RESULT_VARIABLE nok ERROR_VARIABLE error
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE
@@ -148,7 +149,6 @@ macro( ecbuild_git )
endif()
if( NOT _current_tag ) # try nother method
- #message(STATUS "git name-rev --tags --name-only @ ${ABS_PAR_DIR}")
execute_process( COMMAND ${GIT_EXECUTABLE} name-rev --tags --name-only ${_sha1}
OUTPUT_VARIABLE _current_tag RESULT_VARIABLE nok ERROR_VARIABLE error
OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -231,7 +231,7 @@ macro( ecbuild_git )
RESULT_VARIABLE nok ERROR_VARIABLE error
WORKING_DIRECTORY "${ABS_PAR_DIR}")
if(nok)
- message(FATAL_ERROR "git checkout ${_gitref} on ${_PAR_DIR} failed:\n ${error}")
+ message(FATAL_ERROR "git checkout ${_gitref} on ${_PAR_DIR} failed:\n ${GIT_EXECUTABLE} checkout -q ${_gitref}\n ${error}")
endif()
if( DEFINED _PAR_BRANCH AND _PAR_UPDATE ) #############################################################################
diff --git a/cmake/ecbuild_install_project.cmake b/cmake/ecbuild_install_project.cmake
index d53f110..8c21d7a 100644
--- a/cmake/ecbuild_install_project.cmake
+++ b/cmake/ecbuild_install_project.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -33,7 +33,7 @@
# the project with cpack and exports the configuration and targets for other
# projects to use.
#
-# In a top-level project, the following files are generated:
+# Unless ECBUILD_SKIP_<PNAME>_EXPORT is set, the following files are generated:
#
# :<project>-config.cmake: default project configuration
# :<project>-config-version.cmake: project version number
@@ -49,7 +49,7 @@
# and ``<project>-config-version.cmake``.
#
# In DEVELOPER_MODE, the build tree location is also added to the CMake user
-# package registry.
+# package registry for top level projects.
#
# If the project is added as a subdirectory, the following CMake variables
# are set in the parent scope:
@@ -70,7 +70,6 @@
#
##############################################################################
-
macro( ecbuild_install_project )
set( options )
@@ -87,6 +86,17 @@ macro( ecbuild_install_project )
message(FATAL_ERROR "The call to ecbuild_install_project() doesn't specify the NAME.")
endif()
+ ### EXTRA TARGETS #####################################################
+
+ # added here to avoid adding another macro call at the end of each project,
+
+ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
+
+ ecbuild_define_libs_and_execs_targets()
+ ecbuild_define_links_target()
+
+ endif()
+
### PACKAGING ########################################################
set( PNAME ${PROJECT_NAME_CAPS} )
@@ -160,6 +170,8 @@ macro( ecbuild_install_project )
PATHS ${ECBUILD_MACROS_DIR}/../toolchains
${ECBUILD_MACROS_DIR}/../share/ecbuild/toolchains )
+ mark_as_advanced( ECBUILD_TOOLCHAIN_DIR )
+
if( ECBUILD_TOOLCHAIN_DIR )
list( APPEND CPACK_SOURCE_INSTALLED_DIRECTORIES "${ECBUILD_TOOLCHAIN_DIR}" "share/ecbuild/toolchains/" )
endif()
@@ -169,6 +181,8 @@ macro( ecbuild_install_project )
PATHS ${ECBUILD_MACROS_DIR}/../bin
${ECBUILD_MACROS_DIR}/../../../bin )
+ mark_as_advanced( ECBUILD_SCRIPT )
+
if( ECBUILD_SCRIPT )
get_filename_component( ECBUILD_BIN_DIR ${ECBUILD_SCRIPT} PATH )
list( APPEND CPACK_SOURCE_INSTALLED_DIRECTORIES "${ECBUILD_BIN_DIR}" "bin/" )
@@ -219,16 +233,9 @@ macro( ecbuild_install_project )
endif()
endforeach()
- # TOP-LEVEL PROJECT EXPORT
-
- if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
-
- # exports the package for use from the build-tree but only in DEVELOPER_MODE
- # inserts <package> into the CMake user package registry
-
- if( DEVELOPER_MODE )
- export( PACKAGE ${PROJECT_NAME} )
- endif()
+ # Generate the project .cmake config files
+ # All variables here must be (sub)project specific in order to work within bundles
+ if ( NOT ECBUILD_SKIP_${PNAME}_EXPORT )
set( _template_config "${ECBUILD_MACROS_DIR}/project-config.cmake.in" )
if( EXISTS ${LNAME}-config.cmake.in )
@@ -242,7 +249,9 @@ macro( ecbuild_install_project )
# project-config-version.cmake -- format ([0-9]+).([0-9]+).([0-9]+)
- set( PACKAGE_VERSION "${${PNAME}_VERSION}" )
+ set( PACKAGE_VERSION "${${PNAME}_VERSION}" )
+ set( PACKAGE_GIT_SHA1 "${${PNAME}_GIT_SHA1}" )
+ set( PACKAGE_GIT_SHA1_SHORT "${${PNAME}_GIT_SHA1_SHORT}" )
configure_file( "${_template_config_version}" "${PROJECT_BINARY_DIR}/${LNAME}-config-version.cmake" @ONLY )
@@ -297,6 +306,7 @@ macro( ecbuild_install_project )
# If <project>-import.cmake.in exist in source tree, configure it to
# the build tree and install the configured version
if( EXISTS "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in" )
+ ecbuild_debug( "Found ${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in - configuring to ${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" )
configure_file( "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in"
"${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" @ONLY )
install( FILES "${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}"
@@ -304,10 +314,13 @@ macro( ecbuild_install_project )
# Otherwise, if <project>-import.cmake exist in source tree, copy it to
# the build tree and install it
elseif( EXISTS "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}" )
+ ecbuild_debug( "Found ${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE} - copying to ${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" )
configure_file( "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}"
"${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" COPYONLY )
install( FILES "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}"
DESTINATION "${INSTALL_CMAKE_DIR}" )
+ else()
+ ecbuild_debug( "No ${CONF_IMPORT_FILE} found in ${PROJECT_SOURCE_DIR}" )
endif()
set( _lname_config "${PROJECT_BINARY_DIR}/${LNAME}-config.cmake")
@@ -318,13 +331,28 @@ macro( ecbuild_install_project )
file( REMOVE ${_lname_config}.tpls.in )
foreach( _tpl ${${PNAME}_TPLS} )
+
string( TOUPPER ${_tpl} TPL )
- if( ${TPL}_IMPORT_FILE )
+
+ if( ${TPL}_IMPORT_FILE ) # ecBuild packages should trigger this if they export themselves
+
+ ecbuild_debug( "Adding TPL ${TPL} import file to ${_lname_config}.tpls.in" )
set( __import_file "${${TPL}_IMPORT_FILE}" )
file( APPEND "${_lname_config}.tpls.in" "if( NOT ${TPL}_IMPORT_FILE )\n" )
file( APPEND "${_lname_config}.tpls.in" " include( \"${__import_file}\" OPTIONAL )\n" )
file( APPEND "${_lname_config}.tpls.in" "endif()\n" )
+
+ elseif( ${TPL}_CONFIG ) # cmake built packages (e.g. CGAL) may have exported their targets
+
+ ecbuild_debug( "Adding TPL ${TPL} import file to ${_lname_config}.tpls.in" )
+ set( __import_file "${${TPL}_CONFIG}" )
+ file( APPEND "${_lname_config}.tpls.in" "if( NOT ${TPL}_CONFIG )\n" )
+ file( APPEND "${_lname_config}.tpls.in" " include( \"${__import_file}\" OPTIONAL )\n" )
+ file( APPEND "${_lname_config}.tpls.in" " set( ${TPL}_CONFIG \"${__import_file}\" )\n" )
+ file( APPEND "${_lname_config}.tpls.in" "endif()\n" )
+
endif()
+
endforeach()
if( EXISTS "${_lname_config}.tpls.in" )
@@ -361,14 +389,30 @@ macro( ecbuild_install_project )
# install the export
if( ${PROJECT_NAME}_ALL_EXES OR ${PROJECT_NAME}_ALL_LIBS )
- install( EXPORT ${CMAKE_PROJECT_NAME}-targets DESTINATION "${INSTALL_CMAKE_DIR}" )
+ install( EXPORT ${PROJECT_NAME}-targets
+ DESTINATION "${INSTALL_CMAKE_DIR}" )
+ endif()
+
+ endif() # if ( NOT ECBUILD_SKIP_${PNAME}_EXPORT )
+
+ # exports the package for use from the build-tree but only in DEVELOPER_MODE
+ # inserts <package> into the CMake user package registry
+
+ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
+
+ if( DEVELOPER_MODE )
+ export( PACKAGE ${PROJECT_NAME} )
endif()
else()
+ # export variables for upper projects
+
set( ${PNAME}_FOUND TRUE PARENT_SCOPE )
set( ${PROJECT_NAME}_FOUND TRUE PARENT_SCOPE )
set( ${PNAME}_VERSION ${${PNAME}_VERSION} PARENT_SCOPE )
+ set( ${PNAME}_GIT_SHA1 ${${PNAME}_GIT_SHA1} PARENT_SCOPE )
+ set( ${PNAME}_GIT_SHA1_SHORT ${${PNAME}_GIT_SHA1_SHORT} PARENT_SCOPE )
set( ${PROJECT_NAME}_VERSION ${${PNAME}_VERSION} PARENT_SCOPE )
set( ${PNAME}_INCLUDE_DIRS ${${PNAME}_INCLUDE_DIRS} PARENT_SCOPE )
set( ${PNAME}_LIBRARIES ${${PNAME}_LIBRARIES} PARENT_SCOPE )
@@ -382,6 +426,7 @@ macro( ecbuild_install_project )
foreach( _f ${${PNAME}_FEATURES} )
set( ${PNAME}_HAVE_${_f} ${${PNAME}_HAVE_${_f}} PARENT_SCOPE )
endforeach()
- endif()
+
+ endif()
endmacro( ecbuild_install_project )
diff --git a/cmake/ecbuild_list_add_pattern.cmake b/cmake/ecbuild_list_add_pattern.cmake
new file mode 100644
index 0000000..0f68217
--- /dev/null
+++ b/cmake/ecbuild_list_add_pattern.cmake
@@ -0,0 +1,102 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_list_add_pattern
+# ========================
+#
+# Exclude items from a list that match a list of patterns. ::
+#
+# ecbuild_list_add_pattern( LIST <input_list>
+# GLOB <pattern1> [ <pattern2> ... ]
+# [ SOURCE_DIR <source_dir> ]
+# [ QUIET ] )
+#
+# Options
+# -------
+#
+# LIST : required
+# list variable to be appended to
+#
+# GLOB : required
+# Regex pattern of exclusion
+#
+# SOURCE_DIR : optional
+# Directory from where to start search
+#
+# QUIET : optional
+# Don't warn if patterns don't match
+#
+##############################################################################
+
+function( ecbuild_list_add_pattern )
+
+ set( options QUIET )
+ set( single_value_args LIST SOURCE_DIR )
+ set( multi_value_args GLOB )
+
+ cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
+
+ if(_p_UNPARSED_ARGUMENTS)
+ ecbuild_critical("Unknown keywords given to ecbuild_list_add_pattern(): \"${_p_UNPARSED_ARGUMENTS}\"")
+ endif()
+
+ if( NOT _p_LIST )
+ ecbuild_critical("The call to ecbuild_list_add_pattern() doesn't specify the LIST.")
+ endif()
+
+ if( NOT _p_GLOB )
+ ecbuild_critical("The call to ecbuild_list_add_pattern() doesn't specify the GLOB.")
+ endif()
+
+ #####
+
+ set( input_list ${${_p_LIST}} )
+ unset( matched_files )
+
+ foreach( pattern ${_p_GLOB} )
+
+ if( IS_ABSOLUTE ${pattern} )
+ ecbuild_debug( "ecbuild_list_add_pattern: Adding ${pattern}" )
+ file( GLOB_RECURSE matched_files ${pattern} )
+ else()
+
+ if(_p_SOURCE_DIR)
+ if( IS_ABSOLUTE ${_p_SOURCE_DIR} )
+ ecbuild_debug( "ecbuild_list_add_pattern: Adding ${_p_SOURCE_DIR}/${pattern}" )
+ file( GLOB_RECURSE matched_files ${_p_SOURCE_DIR}/${pattern} )
+ else()
+ ecbuild_debug( "ecbuild_list_add_pattern: Adding ${_p_SOURCE_DIR}/${pattern}" )
+ file( GLOB_RECURSE matched_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${_p_SOURCE_DIR}/${pattern} )
+ endif()
+ else()
+ ecbuild_debug( "ecbuild_list_add_pattern: Adding ${pattern} ")
+ file( GLOB_RECURSE matched_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${pattern} )
+ endif()
+
+ endif()
+
+ if(matched_files)
+ ecbuild_debug( "ecbuild_list_add_pattern: Found ${matched_files}" )
+ list( APPEND input_list ${matched_files} )
+ list( REMOVE_DUPLICATES input_list )
+ set( ${_p_LIST} ${input_list} PARENT_SCOPE )
+ else()
+ if(NOT _p_QUIET)
+ ecbuild_warn( "ecbuild_list_add_pattern: no matches found for patterns ${pattern}" )
+ else()
+ ecbuild_debug( "ecbuild_list_add_pattern:no matches found for patterns ${pattern}" )
+ endif()
+ endif()
+
+ endforeach()
+
+
+endfunction(ecbuild_list_add_pattern)
diff --git a/cmake/ecbuild_list_exclude_pattern.cmake b/cmake/ecbuild_list_exclude_pattern.cmake
new file mode 100644
index 0000000..ab9c2d9
--- /dev/null
+++ b/cmake/ecbuild_list_exclude_pattern.cmake
@@ -0,0 +1,88 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation nor
+# does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_list_exclude_pattern
+# ============================
+#
+# Exclude items from a list that match a list of patterns. ::
+#
+# ecbuild_list_exclude_pattern( LIST <input_list>
+# REGEX <regex1> [ <regex2> ... ]
+# [ QUIET ] )
+#
+# Options
+# -------
+#
+# LIST : required
+# list variable to be cleaned
+#
+# REGEX : required
+# Regex pattern of exclusions
+#
+# QUIET : optional
+# Don't warn if patterns don't match
+#
+##############################################################################
+
+function( ecbuild_list_exclude_pattern )
+
+ set( options QUIET )
+ set( single_value_args LIST )
+ set( multi_value_args REGEX )
+
+ cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
+
+ if(_p_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unknown keywords given to ecbuild_list_exclude_pattern(): \"${_p_UNPARSED_ARGUMENTS}\"")
+ endif()
+
+ if( NOT _p_LIST )
+ message(FATAL_ERROR "The call to ecbuild_list_exclude_pattern() doesn't specify the LIST.")
+ endif()
+
+ if( NOT _p_REGEX )
+ message(FATAL_ERROR "The call to ecbuild_list_exclude_pattern() doesn't specify the REGEX.")
+ endif()
+
+ #####
+
+ set( result "" )
+ set( matches_found 0 )
+
+ # ecbuild_debug_var(_p_REGEX)
+
+ foreach( item ${${_p_LIST}} )
+
+ set( _keep 1 )
+
+ foreach( pattern ${_p_REGEX} )
+ if( ${item} MATCHES ${pattern} )
+ set( _keep 0 )
+ set( matches_found 1 )
+ endif()
+ endforeach()
+ if( _keep )
+ list( APPEND result ${item} )
+# else()
+# ecbuild_warn( "removing ${item}" )
+ endif()
+
+ endforeach()
+
+ if( matches_found )
+ set( ${_p_LIST} ${result} PARENT_SCOPE )
+ else()
+ if( NOT _p_QUIET )
+ ecbuild_warn( "ecbuild_list_exclude_pattern: no matches found for patterns ${_p_REGEX} in ${_p_LIST}" )
+ endif()
+ endif()
+
+endfunction(ecbuild_list_exclude_pattern)
diff --git a/cmake/ecbuild_list_extra_search_paths.cmake b/cmake/ecbuild_list_extra_search_paths.cmake
index 0768a48..b81f062 100644
--- a/cmake/ecbuild_list_extra_search_paths.cmake
+++ b/cmake/ecbuild_list_extra_search_paths.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -14,11 +14,11 @@
function( ecbuild_list_extra_search_paths pkg var )
- message( DEPRECATION " ecbuild_list_extra_search_paths should no longer be"
- " used and is going to be removed in a future version of ecBuild." )
+ ecbuild_deprecate( " ecbuild_list_extra_search_paths should no longer be"
+ " used and is going to be removed in a future version of ecBuild." )
- # debug_var( pkg )
- # debug_var( var )
+ # ecbuild_debug_var( pkg )
+ # ecbuild_debug_var( var )
string( TOUPPER ${pkg} _PKG )
@@ -75,7 +75,7 @@ function( ecbuild_list_extra_search_paths pkg var )
ecbuild_debug("ecbuild_list_extra_search_paths(${pkg}): setting ${var} to ${${var}}")
set( ${var} ${${var}} PARENT_SCOPE )
-# debug_var( ${var} )
+# ecbuild_debug_var( ${var} )
endfunction()
diff --git a/cmake/ecbuild_list_macros.cmake b/cmake/ecbuild_list_macros.cmake
index a4152c7..176a161 100644
--- a/cmake/ecbuild_list_macros.cmake
+++ b/cmake/ecbuild_list_macros.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2015 ECMWF.
-#
+# (C) Copyright 1996-2016 ECMWF.
+#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -56,35 +56,3 @@ function( MAP_GET _map _key _var )
set( ${_var} "${_${_map}_${_key}}" PARENT_SCOPE )
endfunction(MAP_GET)
-##############################################################################
-# function to remove items from a list that match a list of patterns
-#
-# examples:
-#
-# ecbuild_list_remove_pattern( mylist "foo;bar" VAR )
-#
-
-function(ecbuild_list_remove_pattern _list _patterns _var)
-
-#debug_var( _list )
-#debug_var( _patterns )
-#debug_var( _var )
-
- foreach( _elem ${_list} )
- set( _keep TRUE)
- foreach( _pat ${_patterns} )
- if( ${_elem} MATCHES ${_pat} )
- set( _keep FALSE)
- endif()
- endforeach()
- if( _keep )
- list( APPEND _result ${_elem} )
- endif()
-
- endforeach()
-
-#debug_var( _result )
-
- set( ${_var} "${_result}" PARENT_SCOPE )
-
-endfunction(ecbuild_list_remove_pattern)
diff --git a/cmake/ecbuild_log.cmake b/cmake/ecbuild_log.cmake
index fbb2349..732040b 100644
--- a/cmake/ecbuild_log.cmake
+++ b/cmake/ecbuild_log.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -15,11 +15,12 @@
# ecBuild provides macros for logging based on a log level set by the user,
# similar to the Python logging module:
#
-# :ecbuild_debug: logs a ``STATUS`` message if log level <= ``DEBUG``
-# :ecbuild_info: logs a ``STATUS`` message if log level <= ``INFO``
-# :ecbuild_warn: logs a ``WARNING`` message if log level <= ``WARN``
-# :ecbuild_error: logs a ``SEND_ERROR`` message if log level <= ``ERROR``
-# :ecbuild_critical: logs a ``FATAL_ERROR`` message if log level <= ``CRITICAL``
+# :ecbuild_debug: logs a ``STATUS`` message if log level <= ``DEBUG``
+# :ecbuild_info: logs a ``STATUS`` message if log level <= ``INFO``
+# :ecbuild_warn: logs a ``WARNING`` message if log level <= ``WARN``
+# :ecbuild_error: logs a ``SEND_ERROR`` message if log level <= ``ERROR``
+# :ecbuild_critical: logs a ``FATAL_ERROR`` message if log level <= ``CRITICAL``
+# :ecbuild_deprecate: logs a ``DEPRECATION`` message
#
# Input variables
# ---------------
@@ -32,6 +33,10 @@
# ECBUILD_NO_COLOUR : bool
# if set, does not colour log output (by default log output is coloured)
#
+# ECBUILD_NO_DEPRECATIONS : bool
+# if set, does not output deprecation messages (only set this if you *really*
+# know what you are doing!)
+#
# Usage
# -----
#
@@ -70,7 +75,7 @@ set(ECBUILD_ERROR 40)
set(ECBUILD_CRITICAL 50)
if( NOT DEFINED ECBUILD_LOG_LEVEL )
- set(ECBUILD_LOG_LEVEL ${ECBUILD_WARN})
+ set(ECBUILD_LOG_LEVEL ${ECBUILD_INFO})
elseif( NOT ECBUILD_LOG_LEVEL )
set(ECBUILD_LOG_LEVEL 60)
elseif( ECBUILD_LOG_LEVEL STREQUAL "DEBUG" )
@@ -122,8 +127,81 @@ endmacro( ecbuild_error )
##############################################################################
+macro( ecbuild_deprecate )
+ if( NOT ECBUILD_NO_DEPRECATIONS )
+ string(REPLACE ";" "" MSG ${ARGV})
+ message(DEPRECATION "${BoldRed}${MSG}${ColourReset}")
+ endif()
+endmacro( ecbuild_deprecate )
+
+##############################################################################
+
macro( ecbuild_critical MSG )
if( ECBUILD_LOG_LEVEL LESS 51)
message(FATAL_ERROR "${BoldMagenta}CRITICAL - ${MSG}${ColourReset}")
endif()
endmacro( ecbuild_critical )
+
+##############################################################################
+# macro for debugging a cmake variable
+
+macro( ecbuild_debug_var VAR )
+ if( ECBUILD_LOG_LEVEL LESS 11)
+ message(STATUS "${Blue}DEBUG - ${VAR} : ${${VAR}}${ColourReset}")
+ endif()
+endmacro()
+
+##############################################################################
+# macro for debugging a cmake variable
+
+macro( ecbuild_debug_list VAR )
+ if( ECBUILD_LOG_LEVEL LESS 11)
+ message( STATUS "${Blue}DEBUG - ${VAR}" )
+ foreach( _elem ${${VAR}} )
+ message( STATUS " ${_elem}" )
+ endforeach()
+ message(STATUS "${ColourReset}")
+ endif()
+endmacro()
+
+##############################################################################
+# macro for debugging a environment variable within cmake
+
+macro( ecbuild_debug_env_var VAR )
+ if( ECBUILD_LOG_LEVEL LESS 11)
+ message(STATUS "${Blue}DEBUG - ENV ${VAR} [$ENV{${VAR}}]${ColourReset}")
+ endif()
+endmacro()
+
+##############################################################################
+# macro for debugging a cmake variable
+
+macro( debug_var VAR )
+
+ message( WARNING "DEPRECATED debug_var() -- ${VAR} [${${VAR}}]" )
+
+endmacro()
+
+##############################################################################
+# macro for debugging a cmake list
+
+macro( debug_list VAR )
+
+ message( WARNING "DEPRECATED debug_list() -- ${VAR}:" )
+ foreach( _elem ${${VAR}} )
+ message( WARNING " ${_elem}" )
+ endforeach()
+
+endmacro()
+
+##############################################################################
+# macro for debugging a environment variable within cmake
+
+macro( debug_env_var VAR )
+
+ message( WARNING "DEPRECATED debug_env_var() -- ENV ${VAR} [$ENV{${VAR}}]" )
+
+endmacro()
+
+
+
diff --git a/cmake/ecbuild_pkgconfig.cmake b/cmake/ecbuild_pkgconfig.cmake
index 6db3726..744727e 100644
--- a/cmake/ecbuild_pkgconfig.cmake
+++ b/cmake/ecbuild_pkgconfig.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_policies.cmake b/cmake/ecbuild_policies.cmake
index 06f856b..36ab7fe 100644
--- a/cmake/ecbuild_policies.cmake
+++ b/cmake/ecbuild_policies.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -6,13 +6,17 @@
# granted to it by virtue of its status as an intergovernmental organisation
# nor does it submit to any jurisdiction.
-###############################################################################
-# define cmake policies
+##############################################################################
+#
+# ecBuild Policies
+# ================
#
# NOTE: This file needs to be included with NO_POLICY_SCOPE or it will have no
# effect!
# NOTE: Policies 1 through 17 will be set to NEW by requiring CMake 2.8.4 i.e.
# calling cmake_minimum_required( VERSION 2.8.4 FATAL_ERROR )
+#
+##############################################################################
# allow for empty spaces around library names
if( POLICY CMP0004 )
diff --git a/cmake/ecbuild_print_summary.cmake b/cmake/ecbuild_print_summary.cmake
index d4bffba..83f4f9c 100644
--- a/cmake/ecbuild_print_summary.cmake
+++ b/cmake/ecbuild_print_summary.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -38,8 +38,6 @@ macro( ecbuild_print_summary )
if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
- ecbuild_define_links_target()
-
get_property( langs GLOBAL PROPERTY ENABLED_LANGUAGES )
message( STATUS "---------------------------------------------------------" )
@@ -89,7 +87,7 @@ macro( ecbuild_print_summary )
### FEATURE SUMMARY
- # debug_var( CMAKE_VERSION )
+ # ecbuild_debug_var( CMAKE_VERSION )
if( ${CMAKE_VERSION} VERSION_LESS "2.8.6" )
feature_summary( WHAT ALL )
else()
@@ -101,6 +99,6 @@ macro( ecbuild_print_summary )
# issue warnings / errors in case there are unused project files
ecbuild_warn_unused_files()
- endif( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
+ endif()
endmacro( ecbuild_print_summary )
diff --git a/cmake/ecbuild_project_files.cmake b/cmake/ecbuild_project_files.cmake
index fbf3015..7e3789b 100644
--- a/cmake/ecbuild_project_files.cmake
+++ b/cmake/ecbuild_project_files.cmake
@@ -1,8 +1,8 @@
-# (C) Copyright 1996-2015 ECMWF.
-#
+# (C) Copyright 1996-2016 ECMWF.
+#
# This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-# In applying this licence, ECMWF does not waive the privileges and immunities
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.
@@ -50,7 +50,7 @@ macro( ecbuild_declare_project_files )
if( CHECK_UNUSED_FILES )
foreach( _afile ${ARGV} )
- # debug_var( _afile )
+ # ecbuild_debug_var( _afile )
get_property( _src_gen SOURCE ${_afile} PROPERTY GENERATED )
diff --git a/cmake/ecbuild_remove_fortran_flags.cmake b/cmake/ecbuild_remove_fortran_flags.cmake
new file mode 100644
index 0000000..74c8832
--- /dev/null
+++ b/cmake/ecbuild_remove_fortran_flags.cmake
@@ -0,0 +1,61 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_remove_fortran_flags
+# =========================
+#
+# Remove Fortran compiler flags from CMAKE_Fortran_FLAGS. ::
+#
+# ecbuild_remove_fortran_flags( <flag1> [ <flag2> ... ] [ BUILD <build> ] )
+#
+# Options
+# -------
+#
+# BUILD : optional
+# remove flags from ``CMAKE_Fortran_FLAGS_<build>`` instead of
+# ``CMAKE_Fortran_FLAGS``
+#
+##############################################################################
+
+include( CheckFortranCompilerFlag )
+macro( ecbuild_remove_fortran_flags m_flags )
+
+ set( _flags ${m_flags} )
+ if( _flags AND CMAKE_Fortran_COMPILER_LOADED )
+
+ set( single_value_args BUILD )
+ set( multi_value_args )
+ cmake_parse_arguments( _PAR "" "${single_value_args}" "${multi_value_args}" ${_FIRST_ARG} ${ARGN} )
+
+ string( TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_CAPS )
+ string( TOUPPER ${_PAR_BUILD} _PAR_BUILD_CAPS )
+
+ if( _PAR_BUILD AND (CMAKE_BUILD_TYPE_CAPS MATCHES "${_PAR_BUILD_CAPS}") )
+
+ foreach( _flag ${_flags} )
+ string(REGEX REPLACE " *${_flag} *" " " CMAKE_Fortran_FLAGS_${_PAR_BUILD} ${CMAKE_Fortran_FLAGS_${_PAR_BUILD}})
+ ecbuild_debug( "Fortran FLAG [${_flag}] removed from build type ${_PAR_BUILD}" )
+ endforeach()
+
+ elseif( NOT _PAR_BUILD )
+
+ foreach( _flag ${_flags} )
+ string(REGEX REPLACE " *${_flag} *" " " CMAKE_Fortran_FLAGS ${CMAKE_Fortran_FLAGS} )
+ ecbuild_debug( "Fortran FLAG [${_flag}] removed" )
+ endforeach()
+
+ endif()
+
+ endif()
+ unset( _flags )
+
+endmacro()
+
diff --git a/cmake/ecbuild_requires_macro_version.cmake b/cmake/ecbuild_requires_macro_version.cmake
index ef13d64..e395ff0 100644
--- a/cmake/ecbuild_requires_macro_version.cmake
+++ b/cmake/ecbuild_requires_macro_version.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_separate_sources.cmake b/cmake/ecbuild_separate_sources.cmake
index 55c6d8f..a0a1c9b 100644
--- a/cmake/ecbuild_separate_sources.cmake
+++ b/cmake/ecbuild_separate_sources.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -83,9 +83,9 @@ macro( ecbuild_separate_sources )
endif()
endforeach()
-# debug_var( ${_PAR_TARGET}_h_srcs )
-# debug_var( ${_PAR_TARGET}_c_srcs )
-# debug_var( ${_PAR_TARGET}_cxx_srcs )
-# debug_var( ${_PAR_TARGET}_f_srcs )
+# ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
+# ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
+# ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
+# ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
endmacro( ecbuild_separate_sources )
diff --git a/cmake/ecbuild_setup_test_framework.cmake b/cmake/ecbuild_setup_test_framework.cmake
index 538a433..f38bafb 100644
--- a/cmake/ecbuild_setup_test_framework.cmake
+++ b/cmake/ecbuild_setup_test_framework.cmake
@@ -2,7 +2,7 @@ ecbuild_add_option( FEATURE TESTS
DEFAULT ON
DESCRIPTION "Enable the unit tests" )
-if( ENABLE_TESTS )
+if( ENABLE_TESTS AND CMAKE_CXX_COMPILER_LOADED )
# Try to find compiled boost
@@ -39,3 +39,7 @@ if( ENABLE_TESTS )
endif()
endif()
+
+if( NOT ENABLE_TESTS )
+ ecbuild_info("Tests have been disabled")
+endif()
\ No newline at end of file
diff --git a/cmake/ecbuild_source_flags.cmake b/cmake/ecbuild_source_flags.cmake
new file mode 100644
index 0000000..2414765
--- /dev/null
+++ b/cmake/ecbuild_source_flags.cmake
@@ -0,0 +1,30 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+set( __gen_source_flags ${CMAKE_CURRENT_LIST_DIR}/gen_source_flags.py )
+
+# Calls gen_source_flags.py to generate a CMake file with the per
+# source file flags for a given target.
+function( ecbuild_source_flags OUT TARGET DEFAULT_FLAGS SOURCES )
+
+ if( NOT PYTHONINTERP_FOUND OR PYTHON_VERSION VERSION_LESS 2.7 )
+ find_package( PythonInterp 2.7 REQUIRED )
+ endif()
+
+ set( OUTFILE ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_source_flags.cmake )
+
+ if( ECBUILD_LOG_LEVEL LESS 11)
+ set( __debug "--debug" )
+ endif()
+ execute_process( COMMAND ${PYTHON_EXECUTABLE} ${__gen_source_flags}
+ ${ECBUILD_SOURCE_FLAGS} ${OUTFILE} "${DEFAULT_FLAGS}"
+ ${SOURCES} "${__debug}" )
+
+ set( ${OUT} ${OUTFILE} PARENT_SCOPE )
+
+endfunction()
diff --git a/cmake/ecbuild_system.cmake b/cmake/ecbuild_system.cmake
index ca4f4fa..64f6fad 100644
--- a/cmake/ecbuild_system.cmake
+++ b/cmake/ecbuild_system.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -28,7 +28,7 @@ endif()
########################################################################################################
# ecbuild versioning support
-set( ECBUILD_CMAKE_MINIMUM "2.8.4" )
+set( ECBUILD_CMAKE_MINIMUM "2.8.10" )
if( ${CMAKE_VERSION} VERSION_LESS ${ECBUILD_CMAKE_MINIMUM} )
message(FATAL_ERROR "${PROJECT_NAME} requires at least CMake ${ECBUILD_CMAKE_MINIMUM} -- you are using ${CMAKE_COMMAND} [${CMAKE_VERSION}]\n Please, get a newer version of CMake @ www.cmake.org" )
endif()
@@ -66,6 +66,10 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
message( STATUS "toolchain ${CMAKE_TOOLCHAIN_FILE}" )
endif()
+ if( ECBUILD_CONFIG )
+ message( STATUS "config ${ECBUILD_CONFIG}" )
+ endif()
+
if( ECBUILD_CACHE )
include( ${ECBUILD_CACHE} )
message( STATUS "cache ${ECBUILD_CACHE}" )
@@ -93,7 +97,7 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
enable_testing()
# keep this until we modify the meaning to 'check' if installation worked
- add_custom_target( check COMMAND ${CMAKE_CTEST_COMMAND} -V )
+ add_custom_target( check COMMAND ${CMAKE_CTEST_COMMAND} )
############################################################################################
# define valid build types
@@ -121,19 +125,19 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
# include(CMakePrintSystemInformation) # available in cmake 2.8.4
if( CMAKE_CXX_COMPILER_LOADED )
- include(CheckIncludeFileCXX)
- include(CheckCXXCompilerFlag)
- include(CheckCXXSourceCompiles)
- include(CheckCXXSourceRuns)
+ include(CheckIncludeFileCXX)
+ include(CheckCXXCompilerFlag)
+ include(CheckCXXSourceCompiles)
+ include(CheckCXXSourceRuns)
endif()
if( CMAKE_Fortran_COMPILER_LOADED )
set( CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/module CACHE PATH "directory for all fortran modules." )
- include(CheckFortranFunctionExists)
- if( CMAKE_C_COMPILER_LOADED AND ENABLE_FORTRAN_C_INTERFACE )
- include(FortranCInterface)
- endif()
- set( EC_HAVE_FORTRAN 1 )
+ include(CheckFortranFunctionExists)
+ if( CMAKE_C_COMPILER_LOADED AND ENABLE_FORTRAN_C_INTERFACE )
+ include(FortranCInterface)
+ endif()
+ set( EC_HAVE_FORTRAN 1 )
endif()
include(FeatureSummary) # support features in cmake
@@ -144,17 +148,18 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
# backport of cmake > 2.8.4 functions
if( "${CMAKE_VERSION}" VERSION_LESS "2.8.6" )
- include( ${CMAKE_CURRENT_LIST_DIR}/2.8/CMakePushCheckState.cmake )
+ include( ${CMAKE_CURRENT_LIST_DIR}/2.8/CMakePushCheckState.cmake )
else()
- include(CMakePushCheckState)
+ include(CMakePushCheckState)
endif()
############################################################################################
# add our macros
- include( ecbuild_debug_var )
include( ecbuild_log )
include( ecbuild_list_macros )
+ include( ecbuild_list_add_pattern )
+ include( ecbuild_list_exclude_pattern )
include( ecbuild_check_c_source_return )
include( ecbuild_check_cxx_source_return )
@@ -167,6 +172,7 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
include( ecbuild_generate_config_headers )
include( ecbuild_generate_rpc )
include( ecbuild_generate_yy )
+ include( ecbuild_generate_fortran_interfaces )
include( ecbuild_echo_targets )
include( ecbuild_features )
include( ecbuild_add_option )
@@ -202,30 +208,38 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
include( ecbuild_find_fortranlibs )
include( ecbuild_git )
include( ecbuild_enable_fortran )
+ include( ecbuild_source_flags )
include( ecbuild_bundle )
include( ecbuild_pkgconfig )
include( ecbuild_cache )
+ include( ecbuild_remove_fortran_flags )
include( ${CMAKE_CURRENT_LIST_DIR}/contrib/GetGitRevisionDescription.cmake )
############################################################################################
# kickstart the build system
- ecbuild_prepare_cache()
+ if( ECBUILD_CONFIG )
+ include( ${ECBUILD_CONFIG} )
+ endif()
+
+ ecbuild_prepare_cache()
include( ecbuild_define_options ) # define build options
+ include( ecbuild_compiler_flags ) # compiler flags
include( ecbuild_check_compiler ) # check for compiler characteristics
include( ecbuild_check_os ) # check for os characteristics
include( ecbuild_check_functions ) # check for available functions
- include( ecbuild_define_paths ) # define installation paths
- include( ecbuild_links_target ) # define the links target
+ include( ecbuild_define_paths ) # defines installation paths
+ include( ecbuild_define_libs_and_execs_target ) # defines the top level execs and libs
+ include( ecbuild_define_links_target ) # defines the links target
include( ecbuild_setup_test_framework ) # setup test framework
include( ecbuild_define_uninstall ) # define uninstall target
ecbuild_flush_cache()
############################################################################################
- # define the build timestamp
+ # define the build timestamp, unless the user provided one via EC_BUILD_TIMESTAMP
if( NOT DEFINED EC_BUILD_TIMESTAMP )
ecbuild_get_timestamp( EC_BUILD_TIMESTAMP )
@@ -234,5 +248,17 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
message( STATUS "---------------------------------------------------------" )
-endif()
+else()
+
+ # Allow subprojects with different compilation flags. This could be done by defining
+ # set( ECBUILD_C_FLAGS_DEBUG "-O0" )
+ # or
+ # set( ECBUILD_CONFIG "<subproject-config>.cmake" )
+ if( ECBUILD_CONFIG )
+ message( STATUS "---------------------------------------------------------" )
+ message( STATUS "config ${ECBUILD_CONFIG}" )
+ include( ${ECBUILD_CONFIG} )
+ endif()
+ include( ecbuild_compiler_flags )
+endif()
diff --git a/cmake/ecbuild_use_package.cmake b/cmake/ecbuild_use_package.cmake
index acbe495..04dd27c 100644
--- a/cmake/ecbuild_use_package.cmake
+++ b/cmake/ecbuild_use_package.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
@@ -105,6 +105,7 @@ macro( ecbuild_use_package )
# user defined dir with subprojects
if( NOT DEFINED ${pkgUPPER}_SOURCE AND DEFINED SUBPROJECT_DIRS )
+ ecbuild_warn("ecbuild_use_package(): setting SUBPROJECT_DIRS is deprecated")
ecbuild_debug("ecbuild_use_package(${_p_PROJECT}): scanning subproject directories ${SUBPROJECT_DIRS}")
foreach( dir ${SUBPROJECT_DIRS} )
if( EXISTS ${dir}/${_p_PROJECT} AND EXISTS ${dir}/${_p_PROJECT}/CMakeLists.txt )
@@ -119,7 +120,7 @@ macro( ecbuild_use_package )
if( DEFINED ${pkgUPPER}_SOURCE )
if( NOT EXISTS ${${pkgUPPER}_SOURCE} OR NOT EXISTS ${${pkgUPPER}_SOURCE}/CMakeLists.txt )
- message( FATAL_ERROR "User defined source directory '${${pkgUPPER}_SOURCE}' for project '${_p_PROJECT}' does not exist or does not contain a CMakeLists.txt file." )
+ ecbuild_critical("User defined source directory '${${pkgUPPER}_SOURCE}' for project '${_p_PROJECT}' does not exist or does not contain a CMakeLists.txt file.")
endif()
set( ${pkgUPPER}_subproj_dir_ "${${pkgUPPER}_SOURCE}" )
@@ -187,6 +188,8 @@ macro( ecbuild_use_package )
set( ${pkgUPPER}_FOUND 1 )
set( ${_p_PROJECT}_VERSION ${${pkgUPPER}_VERSION} )
+ list( APPEND ${pkgUPPER}_INCLUDE_DIRS ${${pkgUPPER}_TPL_INCLUDE_DIRS} )
+
endif()
endif()
@@ -221,15 +224,15 @@ macro( ecbuild_use_package )
# test version for Cases 1,2,3
- # debug_var( _p_PROJECT )
- # debug_var( _p_VERSION )
- # debug_var( ${pkgUPPER}_VERSION )
- # debug_var( ${_p_PROJECT}_VERSION )
- # debug_var( _just_added )
- # debug_var( _do_version_check )
- # debug_var( _source_description )
- # debug_var( ${pkgUPPER}_FOUND )
- # debug_var( ${pkgUPPER}_previous_subproj_ )
+ # ecbuild_debug_var( _p_PROJECT )
+ # ecbuild_debug_var( _p_VERSION )
+ # ecbuild_debug_var( ${pkgUPPER}_VERSION )
+ # ecbuild_debug_var( ${_p_PROJECT}_VERSION )
+ # ecbuild_debug_var( _just_added )
+ # ecbuild_debug_var( _do_version_check )
+ # ecbuild_debug_var( _source_description )
+ # ecbuild_debug_var( ${pkgUPPER}_FOUND )
+ # ecbuild_debug_var( ${pkgUPPER}_previous_subproj_ )
if( _p_VERSION AND _do_version_check )
if( _p_EXACT )
diff --git a/cmake/ecbuild_version.h.in b/cmake/ecbuild_version.h.in
index 3ed96ce..70c5f0a 100644
--- a/cmake/ecbuild_version.h.in
+++ b/cmake/ecbuild_version.h.in
@@ -1,5 +1,5 @@
/*
- * (C) Copyright 1996-2015 ECMWF.
+ * (C) Copyright 1996-2016 ECMWF.
*
* This software is licensed under the terms of the Apache Licence Version 2.0
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/ecbuild_warn_unused_files.cmake b/cmake/ecbuild_warn_unused_files.cmake
index 084adb3..f983440 100644
--- a/cmake/ecbuild_warn_unused_files.cmake
+++ b/cmake/ecbuild_warn_unused_files.cmake
@@ -1,4 +1,4 @@
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/gen_source_flags.py b/cmake/gen_source_flags.py
new file mode 100644
index 0000000..b976d31
--- /dev/null
+++ b/cmake/gen_source_flags.py
@@ -0,0 +1,84 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+"""
+Generate .cmake file to set source-file specific compiler flags based on
+rules defined in a JSON file.
+"""
+
+from argparse import ArgumentParser
+from fnmatch import fnmatch
+import logging
+from json import JSONDecoder
+from os import path
+
+log = logging.getLogger('gen_source_flags')
+
+
+def match(source, pattern, op, flags, indent=0):
+ if fnmatch(source, pattern):
+
+ suff = '' if op[0] in ('+', '=', '/') else ' (nested pattern)'
+ log.debug('%s-> pattern "%s" matches "%s"%s',
+ ' ' * (indent + 1), pattern, source, suff)
+
+ if op[0] == "+":
+ flags += [flag for flag in op[1:] if flag not in flags]
+ log.debug('%sappending %s --> flags: %s', ' ' * (indent + 2), op[1:], flags)
+
+ elif op[0] == "=":
+ flags = op[1:]
+ log.debug('%ssetting %s --> flags: %s', ' ' * (indent + 2), op[1:], flags)
+
+ elif op[0] == "/":
+ flags = [flag for flag in flags if flag not in op[1:]]
+ log.debug('%sremoving %s --> flags: %s', ' ' * (indent + 2), op[1:], flags)
+
+ else: # Nested rule
+ log.debug('%sapplying nested rules for "%s" (flags: %s)',
+ ' ' * (indent + 2), pattern, flags)
+ for nested_pattern, nested_op in op:
+ flags = match(source, nested_pattern, nested_op, flags, indent + 2)
+
+ return flags
+
+
+def generate(rules, out, default_flags, sources, debug=False):
+ logging.basicConfig(level=logging.DEBUG if debug else logging.INFO,
+ format='-- %(levelname)s - %(name)s: %(message)s')
+
+ with open(path.expanduser(rules)) as f:
+ rules = JSONDecoder(object_pairs_hook=list).decode(f.read())
+
+ with open(path.expanduser(out), 'w') as f:
+ for source in sources:
+ log.debug('%s (default flags: "%s")', source, default_flags)
+ flags = default_flags.split()
+ for pattern, op in rules:
+ flags = match(source, pattern, op, flags)
+
+ if flags:
+ log.debug(' ==> setting flags for %s to %s', source, ' '.join(flags))
+ f.write('set_source_files_properties(%s PROPERTIES COMPILE_FLAGS "%s")\n'
+ % (source, ' '.join(flags)))
+ else:
+ log.debug(' ==> flags for %s empty', source)
+
+
+def main():
+ """Parse arguments"""
+ parser = ArgumentParser(description=__doc__)
+ parser.add_argument('rules', metavar='RULES.json', help='JSON rules file')
+ parser.add_argument('out', metavar='OUT.cmake', help='CMake script to generate')
+ parser.add_argument('default_flags', help='Default compiler flags to use')
+ parser.add_argument('sources', metavar='file', nargs='+', help='Path to file to apply rules to')
+ parser.add_argument('--debug', '-d', action='store_true', help='Log debug messages')
+ generate(**vars(parser.parse_args()))
+
+if __name__ == '__main__':
+ main()
diff --git a/cmake/include/ecbuild/boost_test_framework.h b/cmake/include/ecbuild/boost_test_framework.h
index 8cbd8e9..f593b70 100644
--- a/cmake/include/ecbuild/boost_test_framework.h
+++ b/cmake/include/ecbuild/boost_test_framework.h
@@ -1,5 +1,5 @@
/*
- * (C) Copyright 1996-2015 ECMWF.
+ * (C) Copyright 1996-2016 ECMWF.
*
* This software is licensed under the terms of the Apache Licence Version 2.0
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/cmake/project-config.cmake.in b/cmake/project-config.cmake.in
index 03f875b..6d48728 100644
--- a/cmake/project-config.cmake.in
+++ b/cmake/project-config.cmake.in
@@ -1,11 +1,13 @@
# Config file for the @PROJECT_NAME@ package
# Defines the following variables:
#
-# @PNAME at _INCLUDE_DIRS - include directories
-# @PNAME at _DEFINITIONS - preprocessor definitions
-# @PNAME at _LIBRARIES - libraries to link against
-# @PNAME at _FEATURES - list of enabled features
-# @PNAME at _VERSION - version of the package
+# @PNAME at _INCLUDE_DIRS - include directories
+# @PNAME at _DEFINITIONS - preprocessor definitions
+# @PNAME at _LIBRARIES - libraries to link against
+# @PNAME at _FEATURES - list of enabled features
+# @PNAME at _VERSION - version of the package
+# @PNAME at _GIT_SHA1 - Git revision of the package
+# @PNAME at _GIT_SHA1_SHORT - short Git revision of the package
#
# Also defines @PROJECT_NAME@ third-party library dependencies:
# @PNAME at _TPLS - package names of third-party library dependencies
@@ -26,12 +28,16 @@ set( @PNAME at _TPL_INCLUDE_DIRS "@CONF_TPL_INCLUDE_DIRS@" )
set( @PNAME at _TPL_DEFINITIONS "@CONF_TPL_DEFINITIONS@" )
set( @PNAME at _TPL_LIBRARIES "@CONF_TPL_LIBRARIES@" )
+set( @PNAME at _VERSION "@PACKAGE_VERSION@" )
+set( @PNAME at _GIT_SHA1 "@PACKAGE_GIT_SHA1@" )
+set( @PNAME at _GIT_SHA1_SHORT "@PACKAGE_GIT_SHA1_SHORT@" )
+
### export include paths as absolute paths
set( @PNAME at _INCLUDE_DIRS "" )
foreach( path ${@PNAME at _SELF_INCLUDE_DIRS} )
- get_filename_component( abspath ${path} ABSOLUTE )
- list( APPEND @PNAME at _INCLUDE_DIRS ${abspath} )
+ get_filename_component( abspath ${path} ABSOLUTE )
+ list( APPEND @PNAME at _INCLUDE_DIRS ${abspath} )
endforeach()
list( APPEND @PNAME at _INCLUDE_DIRS ${@PNAME at _TPL_INCLUDE_DIRS} )
@@ -47,7 +53,7 @@ set( @PNAME at _LIBRARIES ${@PNAME at _SELF_LIBRARIES} ${@PNAME at _TPL_LIBRARIE
set( @PNAME at _FEATURES "@CONF_FEATURES@" )
foreach( _f ${@PNAME at _FEATURES} )
- set( @PNAME at _HAVE_${_f} 1 )
+ set( @PNAME at _HAVE_${_f} 1 )
endforeach()
# Has this configuration been exported from a build tree?
@@ -58,22 +64,22 @@ if( EXISTS ${@PNAME at _CMAKE_DIR}/@CONF_IMPORT_FILE@ )
include( ${@PNAME at _IMPORT_FILE} )
endif()
+# here goes the imports of the TPL's
+
+include( ${CMAKE_CURRENT_LIST_FILE}.tpls OPTIONAL )
+
# insert definitions for IMPORTED targets
if( NOT @PROJECT_NAME at _BINARY_DIR )
if( @PNAME at _IS_BUILD_DIR_EXPORT )
- include( "@TOP_PROJECT_TARGETS_FILE@" OPTIONAL )
- else()
- include( "${@PNAME at _CMAKE_DIR}/@CMAKE_PROJECT_NAME at -targets.cmake" )
- endif()
+ include( "@TOP_PROJECT_TARGETS_FILE@" OPTIONAL )
+ else()
+ include( "${@PNAME at _CMAKE_DIR}/@PROJECT_NAME at -targets.cmake" )
+ endif()
endif()
-# here goes the imports of the TPL's
-
-include( ${CMAKE_CURRENT_LIST_FILE}.tpls OPTIONAL )
-
# publish this file as imported
set( @PNAME at _IMPORT_FILE ${CMAKE_CURRENT_LIST_FILE} )
@@ -82,9 +88,10 @@ mark_as_advanced( @PNAME at _IMPORT_FILE )
# set @PROJECT_NAME at _BASE_DIR for final installations or build directories
if( NOT @PROJECT_NAME@ )
- if( @PNAME at _IS_BUILD_DIR_EXPORT )
- set( @PROJECT_NAME at _BASE_DIR @CMAKE_BINARY_DIR@ )
- else()
- set( @PROJECT_NAME at _BASE_DIR @CMAKE_INSTALL_PREFIX@ )
- endif()
+ if( @PNAME at _IS_BUILD_DIR_EXPORT )
+ set( @PROJECT_NAME at _BASE_DIR @CMAKE_BINARY_DIR@ )
+ else()
+ get_filename_component( abspath ${CMAKE_CURRENT_LIST_DIR}/../../.. ABSOLUTE )
+ set( @PROJECT_NAME at _BASE_DIR ${abspath} )
+ endif()
endif()
diff --git a/cmake/sg.pl b/cmake/sg.pl
index 8a64bf4..6bce843 100755
--- a/cmake/sg.pl
+++ b/cmake/sg.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
#!/usr/local/share/perl56
-# (C) Copyright 1996-2015 ECMWF.
+# (C) Copyright 1996-2016 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
diff --git a/data/surface_gaussian_reduced.grib1 b/data/surface_gaussian_reduced.grib1
deleted file mode 100644
index fef3287..0000000
Binary files a/data/surface_gaussian_reduced.grib1 and /dev/null differ
diff --git a/data/surface_latlon.grib1 b/data/surface_latlon.grib1
deleted file mode 100644
index 8faf2f7..0000000
Binary files a/data/surface_latlon.grib1 and /dev/null differ
diff --git a/data/tigge.grib2 b/data/tigge.grib2
deleted file mode 100644
index bdaa618..0000000
Binary files a/data/tigge.grib2 and /dev/null differ
diff --git a/gribex/bufrin.F b/gribex/bufrin.F
index 0aea204..b789d1a 100644
--- a/gribex/bufrin.F
+++ b/gribex/bufrin.F
@@ -1,40 +1,40 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- subroutine bufrin(kunit,karray,kinlen,koutlen,keof,kret)
+ subroutine bufrin(kunit,karray,kinlen,koutlen,keof,kret)
C---->
C
-C This subroutine mimics the behaviour of the original BUFRIN
-C but makes a call to PBBUFR to retrieve BUFR products.
+C This subroutine mimics the behaviour of the original BUFRIN
+C but makes a call to PBBUFR to retrieve BUFR products.
C
C----<
- integer icalls
- data icalls/0/
+ integer icalls
+ data icalls/0/
C
C First time through, print a warning message
- if (icalls .eq. 0) then
- icalls = icalls + 1
- write(*,*) ' *********************************************'
- write(*,*) ' *********************************************'
- write(*,*) ' You are using an obsolete subroutine (BUFRIN)'
- write(*,*) ' for retrieving BUFR products.'
- write(*,*) ' Please change to using PBBUFR.'
- write(*,*) ' *********************************************'
- write(*,*) ' *********************************************'
- endif
-C
- call pbbufr(kunit,karray,kinlen,koutlen,kret)
- if ( kret .eq. -3) then
- write(*,*) ' Buffer not big enough for BUFR product'
- kret = -5
- endif
-C
- return
- end
+ if (icalls .eq. 0) then
+ icalls = icalls + 1
+ write(*,*) ' *********************************************'
+ write(*,*) ' *********************************************'
+ write(*,*) ' You are using an obsolete subroutine (BUFRIN)'
+ write(*,*) ' for retrieving BUFR products.'
+ write(*,*) ' Please change to using PBBUFR.'
+ write(*,*) ' *********************************************'
+ write(*,*) ' *********************************************'
+ endif
+C
+ call pbbufr(kunit,karray,kinlen,koutlen,kret)
+ if ( kret .eq. -3) then
+ write(*,*) ' Buffer not big enough for BUFR product'
+ kret = -5
+ endif
+C
+ return
+ end
diff --git a/gribex/c2gene.F b/gribex/c2gene.F
index f9b8e82..793383a 100644
--- a/gribex/c2gene.F
+++ b/gribex/c2gene.F
@@ -265,6 +265,7 @@ C* Section 1 . Performs initial checks.
C -----------------------------------------------------------------
C
100 CONTINUE
+ ILEN4O=0
C
LGENXT=KSEC4(12).NE.0
#ifndef ebug2o
diff --git a/gribex/c2pack.F b/gribex/c2pack.F
index 16c534a..2689dfe 100644
--- a/gribex/c2pack.F
+++ b/gribex/c2pack.F
@@ -192,6 +192,7 @@ C* Section 1 . Initialisations.
C -----------------------------------------------------------------
C
100 CONTINUE
+ ILVARX = 0
C
#ifndef ebug2o
IF (ODEBUG) THEN
diff --git a/gribex/codegb.F b/gribex/codegb.F
index 0de0d0d..af382da 100644
--- a/gribex/codegb.F
+++ b/gribex/codegb.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -1399,7 +1399,7 @@ C
IF (IOFF.NE.0)
C THEN
KBITS = NBIT - IOFF
- IBLOCK(1) = 0
+ IBLOCK(1) = 0
CALL SBYTE (IGRIB(IWORD),IBLOCK(1),IOFF,KBITS)
ELSE
IWORD = IWORD - 1
diff --git a/gribex/codeps.F b/gribex/codeps.F
index 5d51c1e..2ad8da7 100644
--- a/gribex/codeps.F
+++ b/gribex/codeps.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -27,7 +27,7 @@ C
C CALL CODEPS( NAME,CHDATA,ILENCH,FPDATA,ILENFP,INDATA,ILENIN,
C X NBYTE,LGDATA,ILENLG,IB1PAR,IPSCOD,ILENPS,
C X IRSERV,NBIT,IWORD,IROUND,IERR)
-C
+C
C
C
C Input Parameters.
@@ -89,8 +89,8 @@ C 7, level description error.
C 8, date/time error.
C 9, invalid time unit or range.
C 10, indicator/number averaged error.
-C
-C
+C
+C
C Externals.
C ----------
C
@@ -99,13 +99,13 @@ C SBYTES
C CONFPA
C PRTBIN
C OFFSET
-C
+C
C
C Comments.
C ---------
C
C Section 1 , data definition section (IB1PAR).
-C
+C
C Word Contents
C ---- --------
C 1 Originating centre identifier.
@@ -125,22 +125,22 @@ C 15 Time range one
C 16 Time range two
C 17 Time range flag (code table 5).
C 18 Number averaged.
-C
+C
C Code tables are those for WMO GRIB code.
-C
+C
C Value(s) of level can occupy 2 words.
C For a layer the first word defines the top
C and the second the bottom of the layer.
C For a single level, only the first word is used.
-C
+C
C Elements not used or inapplicable should be set to 255.
-C
-C
+C
+C
C Author.
C -------
C
C J.Hennessy 05.02.86
-C
+C
C
C Modifications.
C --------------
@@ -148,7 +148,7 @@ C
C J.Hennessy 06.06.86
C 19.08.86
C 21.08.86
-C
+C
C J.Hennessy 17.09.90
C Lower case letters as well as the characters
C _ - . , added.
@@ -162,7 +162,7 @@ C
C J.D.Chambers ECMWF April 1998
C Call CONFPA instead of CONFP3.
C (Vectorization improvement from D.Dent).
-C
+C
C----<
C********************************************************************
C
@@ -219,7 +219,8 @@ C
C SET MAXIMUM NUMBER OF BITS FOR INTEGER FIELDS.
INTEGER ICMISS, KLENCH, I, IFMISS, KLENFP, IIMISS, KLENIN
INTEGER ILMISS, KLENLG, IBITS, IBYTE, NVAL, IOFF, KTEMP
- INTEGER KERR, IPW, IPB, IEXP, IMANT, NEGSIN, MAXINT, ISIGN
+ INTEGER KERR, IPW, IPB, NEGSIN, MAXINT, ISIGN
+CC INTEGER IEXP, IMANT
INTEGER NTRUE, J, LBIN, L, LNIL, KBITS, NUMBIT, N
C
#include "grbcom.h"
@@ -230,9 +231,9 @@ C Clear error indicator.
C
C
C********************************************************************
-C
+C
C Check for missing data indicators.
-C
+C
C********************************************************************
C
C Character data.
@@ -306,9 +307,9 @@ C
C
C
C********************************************************************
-C
+C
C Check number of bytes for integer numbers.
-C
+C
C********************************************************************
C
IBITS = NBYTE * 8
@@ -329,9 +330,9 @@ C
C
C
C********************************************************************
-C
+C
C Section 0 - INDICATOR Section.
-C
+C
C********************************************************************
C
C
@@ -355,9 +356,9 @@ C Pack 4 8-bit fields in section 0 of coded array.
C
C
C********************************************************************
-C
+C
C Section 1 - PRODUCT DEFINITION Section.
-C
+C
C********************************************************************
C
C
@@ -587,14 +588,14 @@ C Set array IBLOCK to 0 . it is used to zero fill reserved octets.
C
C
C********************************************************************
-C
+C
C Section 4 - BINARY DATA Section.
-C
+C
C********************************************************************
C
C
C Octets 1-3 - length of data section (in octets).
-C
+C
C Retain pointers to word and bit position of binary data
C section length field. enter length as 0.
C
@@ -774,9 +775,9 @@ C Enter length - in octets - of data section.
CALL OFFSET(IPB,1,IPW,24,NBIT,ILENPS,IERR)
C
C********************************************************************
-C
+C
C Section 5 - END Section.
-C
+C
C********************************************************************
C
C
@@ -813,7 +814,7 @@ C
C
C Check consistency of record name, parameter number and
C record length.
-C
+C
C This may cause problems in the future if old
C versions of the budget value records are unpacked
C and then repacked.
diff --git a/gribex/confp3.F b/gribex/confp3.F
index 0abb208..2402e11 100644
--- a/gribex/confp3.F
+++ b/gribex/confp3.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -118,19 +118,19 @@ C
C Debug print switch.
C
IF( KROUND.GE.10) THEN
- IPR = 1
- IROUND = KROUND - 10
+ IPR = 1
+ IROUND = KROUND - 10
ELSE
- IPR = 0
- IROUND = KROUND
+ IPR = 0
+ IROUND = KROUND
ENDIF
C
C Check conversion type parameter.
C
IF( IROUND.NE.0.AND.IROUND.NE.1) THEN
- WRITE(GRPRSM,*) 'CONFP3: Invalid conversion type = ', KROUND
+ WRITE(GRPRSM,*) 'CONFP3: Invalid conversion type = ', KROUND
C
- IF( NOABORT.EQ.0 ) CALL ABORTX('CONFP3')
+ IF( NOABORT.EQ.0 ) CALL ABORTX('CONFP3')
C
C If not aborting, arbitrarily set rounding to 'up'.
C
@@ -146,8 +146,8 @@ C
IF( PVAL.EQ.0.0 ) THEN
KEXP = 0
KMANT = 0
- IEXP = 0
- ISIGN = 0
+ IEXP = 0
+ ISIGN = 0
GOTO 900
ENDIF
C
@@ -188,7 +188,7 @@ C Closest number in GRIB format less than original number.
C Truncate for positive numbers.
C Round up for negative numbers.
C
- IF( ISIGN.EQ.0 ) THEN
+ IF( ISIGN.EQ.0 ) THEN
KMANT = INT(ZREF/16.0**(IEXP-70))
ELSE
#ifdef VAX
@@ -196,7 +196,7 @@ C
#else
KMANT = NINT(ZREF/16.0**(IEXP-70)+0.5)
#endif
- ENDIF
+ ENDIF
C
ELSE
C
@@ -219,14 +219,14 @@ C
C
350 CONTINUE
C
- IEXP = IEXP + 1
+ IEXP = IEXP + 1
C
C Check for exponent overflow during adjustment
C
IF( IEXP.GT.127 ) THEN
WRITE(GRPRSM,*) 'CONFP3: Exponent overflow'
- WRITE(GRPRSM,9002) PVAL
- WRITE(GRPRSM,9003) ISIGN, IEXP, KMANT
+ WRITE(GRPRSM,9002) PVAL
+ WRITE(GRPRSM,9003) ISIGN, IEXP, KMANT
C
IF( NOABORT.EQ.0 ) CALL ABORTX('CONFP3')
C
@@ -267,7 +267,7 @@ C
#else
KMANT = NINT(ZREF/16.0**(IEXP-70))
#endif
- ENDIF
+ ENDIF
C
C Repeat calculation (with modified exponent) if still have
C mantissa overflow.
@@ -289,11 +289,11 @@ C
C Print generated values if required.
C
IF( IPR.EQ.1 ) THEN
- WRITE(GRPRSM,9006) KROUND
- WRITE(GRPRSM,9002) PVAL
- CALL DECFP2(ZVAL,KEXP,KMANT)
- WRITE(GRPRSM,9007) ZVAL
- WRITE(GRPRSM,9003) ISIGN, IEXP, KMANT
+ WRITE(GRPRSM,9006) KROUND
+ WRITE(GRPRSM,9002) PVAL
+ CALL DECFP2(ZVAL,KEXP,KMANT)
+ WRITE(GRPRSM,9007) ZVAL
+ WRITE(GRPRSM,9003) ISIGN, IEXP, KMANT
ENDIF
C
RETURN
diff --git a/gribex/csect4.F b/gribex/csect4.F
index d316a63..ea4ea3e 100644
--- a/gribex/csect4.F
+++ b/gribex/csect4.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -105,10 +105,10 @@ C _____________
C
C J.Clochard, Meteo France, for ECMWF - January 1998.
C Use of external JFREE instead of FREE.
-C
+C
C P.J.Towers ECMWF 18.07.02
C Optimised for IBM Power4.
-C -Added @PROCESS ALIAS(NOPTEOVRLP) directive
+C -Added @PROCESS ALIAS(NOPTEOVRLP) directive
C -Replaced Nint(x) by Int(x+0.5)
C -Replaced division by scale by multiplication by reciprocal
C
@@ -143,7 +143,11 @@ C
C
C Local variables.
C
- INTEGER J110,NREST,NLOOPS,ILOOP,LOOP,ILENF,IPOWER,ISUBSET,ISTATUS
+ INTEGER J110, LOOP, IPOWER, ISUBSET
+#if (defined USE_NO_POINTERS)
+ INTEGER NREST, NLOOPS, ILOOP
+#endif
+ INTEGER ILENF, ISTATUS
INTEGER IRET, IRETA, IRETB, IEXP, IMANT, ITEMP
INTEGER INSPT1, INSPTA, INSPTB, ILEN, ISCALE, ISIGN
INTEGER ILEN4, INIL, IL, IFLAG, ISIZE
@@ -310,7 +314,7 @@ C Calculate the scale and reference value
ISCALE = MIN (INT(ZS),INT(ZS+SIGN(1.,ZS)))
#endif
ZSCALE = 2.0**ISCALE
-C
+C
C Set scale factor sign bit.
IF (ISCALE.LT.0) THEN
ISCALE = -ISCALE
@@ -392,7 +396,7 @@ C Set sign bit if value is negative.
ELSE
ITEMP = KSEC4(17)
ENDIF
-C
+C
C Insert scaling power.
CALL INXBIT(KGRIB,KLENG,KNSPT,ITEMP,1,KBITS,16,'C',IRET)
IF (IRET.NE.0) THEN
@@ -490,7 +494,7 @@ C* Section 8 . Fill in first 4 octets of section 4.
C -----------------------------------------------------------------
C
800 CONTINUE
-C
+C
C Adjust length of section 4 (in bits) to a multiple of 16.
ILEN4 = KNSPT - INSPT1
IL = ILEN4 / 16
@@ -499,7 +503,7 @@ C Adjust length of section 4 (in bits) to a multiple of 16.
IF (IL.NE.0) INIL = 16 - IL
KNSPT = KNSPT + INIL
ILEN4 = ILEN4 + INIL
-C
+C
C Set length of section 4 to octets.
ILEN4 = ILEN4 / 8
C
diff --git a/gribex/d2ordr.F b/gribex/d2ordr.F
index 6988ae3..f6d5936 100644
--- a/gribex/d2ordr.F
+++ b/gribex/d2ordr.F
@@ -214,6 +214,9 @@ C -----------------------------------------------------------------
C
100 CONTINUE
C
+ IPTRB0 = 0
+ IAUXIS = 0
+ ILEN = 0
IRETFN = 0
YOPER='D'
INSPTA=KNSPT
diff --git a/gribex/decext.F b/gribex/decext.F
index fb26fe3..834675d 100644
--- a/gribex/decext.F
+++ b/gribex/decext.F
@@ -146,6 +146,7 @@ C* SECTION 1 . SKIP DOWN THROUGH GRIB SECTION TO GET TO DATA SECTION.
C ------------------------------------------------------------------
C
1000 CONTINUE
+ ZSCALE = 0.
C
C BLOCK 0 - INDICATOR BLOCK.
C
diff --git a/gribex/decogb.F b/gribex/decogb.F
index 75841e1..ea60d32 100644
--- a/gribex/decogb.F
+++ b/gribex/decogb.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -306,45 +306,45 @@ C
C Section 1.
C
DO 110 J110 = 1,18
- IB1PAR(J110) = ISEC1(J110+1)
+ IB1PAR(J110) = ISEC1(J110+1)
110 CONTINUE
C
C Section 2.
C
DO 111 J111 = 1,11
- IB2PAR(J111) = ISEC2(J111)
+ IB2PAR(J111) = ISEC2(J111)
111 CONTINUE
C
C Go to section 9, if pseudo-GRIB data.
C
IF (IB1PAR(5).EQ.127.OR.IB1PAR(5).EQ.128)
C THEN
- WRITE (*,9002) IB1PAR(5)
- GO TO 900
+ WRITE (*,9002) IB1PAR(5)
+ GO TO 900
ENDIF
C
C Check size of vertical coordinate parameter array.
C
IF (JLENV.GT.ILENV)
C THEN
- IERR = -6
- WRITE (*,9003) JLENV , ILENV
- GO TO 900
+ IERR = -6
+ WRITE (*,9003) JLENV , ILENV
+ GO TO 900
ENDIF
C
C Vertical coordinate parameters, if any,
C
DO 112 J112 = 1,JLENV
- FVERT(J112) = ZSEC2(J112+10)
+ FVERT(J112) = ZSEC2(J112+10)
112 CONTINUE
C
C Go to section 9, if decoding of sections 1 and 2 only.
C
IF (YOPER.EQ.'I')
C THEN
- IF (ISEC2(1).NE.4) GO TO 900
- IF (ISEC2(17).EQ.1) IB2PAR(2) = 4 * ISEC2(10)
- GO TO 900
+ IF (ISEC2(1).NE.4) GO TO 900
+ IF (ISEC2(17).EQ.1) IB2PAR(2) = 4 * ISEC2(10)
+ GO TO 900
ENDIF
C
C If quasi-regular Gaussian grid, convert to regular and
@@ -354,12 +354,12 @@ C
C
IF (ISEC2(17).EQ.1)
C THEN
- INOLAT = ISEC2(10) * 2
- INOLNG = ISEC2(10) * 4
- CALL QU2REG (FPDATA,ISEC2(23),INOLAT,INOLNG,1)
- JLENF = INOLAT * INOLNG
- IB2PAR(2) = 4 * ISEC2(10)
- ENDIF
+ INOLAT = ISEC2(10) * 2
+ INOLNG = ISEC2(10) * 4
+ CALL QU2REG (FPDATA,ISEC2(23),INOLAT,INOLNG,1)
+ JLENF = INOLAT * INOLNG
+ IB2PAR(2) = 4 * ISEC2(10)
+ ENDIF
C
C -----------------------------------------------------------------
C
diff --git a/gribex/decogc.F b/gribex/decogc.F
index 4246c51..6080827 100644
--- a/gribex/decogc.F
+++ b/gribex/decogc.F
@@ -182,6 +182,7 @@ C SET MAXIMUM NUMBER OF BITS PER DATA FIELD.
C
DATA IMAX /64/
C
+ ZSCALE = 0.
IERR = 0
C
C
diff --git a/gribex/decogd.F b/gribex/decogd.F
index e612379..fb7b701 100644
--- a/gribex/decogd.F
+++ b/gribex/decogd.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -192,6 +192,7 @@ C SET MAXIMUM NUMBER OF BITS PER DATA FIELD.
C
DATA IMAX /32/
C
+ ZSCALE = 0.
IERR = 0
C
RMISS=1.7E38
@@ -935,7 +936,7 @@ C
END IF
647 CONTINUE
C
- JLENF = IBVAL
+ JLENF = IBVAL
DO 649 I=1,JLENF
FPDATA(I)=FPDATAG(I)
649 CONTINUE
diff --git a/gribex/decogr.F b/gribex/decogr.F
index 955cca1..fdf043f 100644
--- a/gribex/decogr.F
+++ b/gribex/decogr.F
@@ -164,6 +164,7 @@ C SET MAXIMUM NUMBER OF BITS PER DATA FIELD.
C
DATA IMAX /60/
C
+ ZSCALE = 0.
IERR = 0
C
C
diff --git a/gribex/dsect4a.F b/gribex/dsect4a.F
index cfcf9be..5dff494 100644
--- a/gribex/dsect4a.F
+++ b/gribex/dsect4a.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -150,7 +150,10 @@ C
C
C Local variables.
C
- INTEGER J110, NREST, NLOOPS, ILOOP, LOOP, IPOWER, ISUBSET
+ INTEGER J110, LOOP, IPOWER, ISUBSET
+#if (defined USE_NO_POINTERS)
+ INTEGER NREST, NLOOPS, ILOOP
+#endif
INTEGER IRET, IRETA, IRETB, IEXP, IMANT
INTEGER INSPTA, ILEN, ISCALE
INTEGER ILEN4, IFLAG, ISIZE, IAUXIL, IOFF, ITEMP, J, INIL
@@ -404,14 +407,14 @@ C
GOTO 900
ENDIF
C Check that length in the file is consistent with the position of pointer
-C this might not happen for very large grib products (KLENG.ge.2097140)
-C Here we cannot multiply the length because the most significant bit(negative values)
-C is used to signify the lack of data - if not we update ILEN4
-
+C this might not happen for very large grib products (KLENG.ge.2097140)
+C Here we cannot multiply the length because the most significant bit(negative values)
+C is used to signify the lack of data - if not we update ILEN4
+
IF (KSEC0(1).GT.8388607) THEN
- IF (((KNSPT-INSPTA+INIL)/8).ne.ILEN4) THEN
- ILEN4=((KNSPT-INSPTA+INIL)/8)
- ENDIF
+ IF (((KNSPT-INSPTA+INIL)/8).ne.ILEN4) THEN
+ ILEN4=((KNSPT-INSPTA+INIL)/8)
+ ENDIF
ENDIF
C
DO LOOP = 1, ILEN
diff --git a/gribex/ecdef17.h b/gribex/ecdef17.h
index 1ce4bff..05acde1 100644
--- a/gribex/ecdef17.h
+++ b/gribex/ecdef17.h
@@ -1,11 +1,11 @@
C
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -54,7 +54,7 @@ C 47 57-59 Date of first ICE field used; YYYYMMDD.
C (Stored in 3 bytes as YYYYMMDD-19000000.
C Zero = date not given.)
C
-C 48 60 First day satellite number (ICE data)
+C 48 60 First day satellite number (ICE data)
C
C 49 61-63 Date of second ICE field used ; YYYYMMDD.
C (Stored in 3 bytes as YYYYMMDD-19000000.
diff --git a/gribex/ecdef18.F b/gribex/ecdef18.F
index 1d3e18b..1a08b06 100644
--- a/gribex/ecdef18.F
+++ b/gribex/ecdef18.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -116,7 +116,8 @@ C
C
C Local variables
C
- INTEGER IRET, IZERO, NUMBER, INUM, ILOOP, LOOP
+ INTEGER IRET, IZERO, NUMBER, ILOOP, LOOP
+CC INTEGER INUM
CHARACTER*4 HBLANK
C
LOGICAL LENCODE
@@ -181,7 +182,7 @@ C
ENDIF
C
C Octets 58 to 60 : Spare (set to zero)
-C
+C
DO LOOP = 1, 3
IF ( LENCODE ) THEN
IZERO = 0
diff --git a/gribex/ecdef19.F b/gribex/ecdef19.F
index 7ccafc5..aa1a7ac 100644
--- a/gribex/ecdef19.F
+++ b/gribex/ecdef19.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -100,8 +100,8 @@ C
C
C Local variables
C
- INTEGER IRET, IZERO, LENS1, INSPT, NCLIMON, NEXT
- INTEGER IPLEN, ILOOPO, ILOOPI, IFULL
+ INTEGER IRET, IZERO, LENS1, INSPT, IPLEN, ILOOPO
+CC INTEGER NCLIMON, NEXT, ILOOPI, IFULL
C
LOGICAL LENCODE
C
@@ -230,7 +230,7 @@ C
IF( KRET.NE.0 ) THEN
KRET = 2
WRITE(GRPRSM,9004)
- ENDIF
+ ENDIF
C
ELSE
C
@@ -241,7 +241,7 @@ C
IF( KRET.NE.0 ) THEN
KRET = 2
WRITE(GRPRSM,9004)
- ENDIF
+ ENDIF
KNSPT = 8*8 + LENS1*8
ENDIF
C
diff --git a/gribex/ecdef4.F b/gribex/ecdef4.F
index f4f53e9..7e6df88 100644
--- a/gribex/ecdef4.F
+++ b/gribex/ecdef4.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -126,7 +126,8 @@ C
C
C Local variables
C
- INTEGER IRET, IZERO, ILENS1, INUM, LOOP, IP1, N
+ INTEGER IRET, ILENS1, INUM, LOOP, IP1, N
+CC INTEGER IZERO
INTEGER ILALO
DIMENSION ILALO(8)
LOGICAL LENCODE, LDECODE
diff --git a/gribex/ecdef5.F b/gribex/ecdef5.F
index 7b2b658..5d5f54e 100644
--- a/gribex/ecdef5.F
+++ b/gribex/ecdef5.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -228,7 +228,7 @@ C When decoding, use sign bit ( = 1 if value is negative)
C
C .. if not present, set value to 16 bits all set to 1
ELSE
- IF ( LENCODE ) THEN
+ IF ( LENCODE ) THEN
I16BIT = 65535
CALL INXBIT(KGRIB,KLENG,KNSPT,I16BIT,1,KBITS,16,HFUNC,KRET)
IF (KRET.NE.0) THEN
@@ -265,7 +265,7 @@ C When decoding, use sign bit ( = 1 if value is negative)
IF ( LDECODE ) CALL DSGNBT( KSEC1(47), ILALO(1), 16, KRET)
C
ELSE
- IF ( LENCODE ) THEN
+ IF ( LENCODE ) THEN
I16BIT = 65535
CALL INXBIT(KGRIB,KLENG,KNSPT,I16BIT,1,KBITS,16,HFUNC,KRET)
IF (KRET.NE.0) THEN
@@ -273,7 +273,7 @@ C
WRITE(GRPRSM,9004)
GO TO 900
ENDIF
- ELSE
+ ELSE
I16BIT = 65535
KSEC1(47) = I16BIT
KNSPT = KNSPT + 16
diff --git a/gribex/ecdef50.F b/gribex/ecdef50.F
index 1b4ee16..a2341b5 100644
--- a/gribex/ecdef50.F
+++ b/gribex/ecdef50.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -105,7 +105,8 @@ C
C
C Local variables
C
- INTEGER IRET, IZERO, JLOOP, ITEMP, IRETA
+ INTEGER IRET, IZERO, JLOOP
+CC INTEGER ITEMP, IRETA
C
LOGICAL LENCODE, LDECODE
C
diff --git a/gribex/ecdef6.h b/gribex/ecdef6.h
index 91edd76..85eead6 100644
--- a/gribex/ecdef6.h
+++ b/gribex/ecdef6.h
@@ -1,11 +1,11 @@
C
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
C!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -54,7 +54,7 @@ C 47 57-59 Date of first ICE field used; YYYYMMDD.
C (Stored in 3 bytes as YYYYMMDD-19000000.
C Zero = date not given.)
C
-C 48 60 First day satellite number (ICE data)
+C 48 60 First day satellite number (ICE data)
C
C 49 61-63 Date of second ICE field used ; YYYYMMDD.
C (Stored in 3 bytes as YYYYMMDD-19000000.
diff --git a/gribex/ecloc1.F b/gribex/ecloc1.F
index 367a0cb..8331bb4 100644
--- a/gribex/ecloc1.F
+++ b/gribex/ecloc1.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -149,7 +149,8 @@ C
C
C Local variables
C
- INTEGER ILEN, LOOP, ITEMP(1000), NUMBYTS, NUMVALS, IOFFSET
+ INTEGER NUMBYTS, NUMVALS, IOFFSET
+CC INTEGER ILEN, LOOP, ITEMP(1000)
INTEGER NUMBER
C
LOGICAL LENCODE, LDEBUG
diff --git a/gribex/emesec2.F b/gribex/emesec2.F
index 69faf16..83fa9cb 100644
--- a/gribex/emesec2.F
+++ b/gribex/emesec2.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -27,14 +27,14 @@ C
C Input parameters
C ________________
C
-C KGRIB - GRIB product built so far (upto octet 6).
+C KGRIB - GRIB product built so far (upto octet 6).
C KLENG - Length of KGRIB.
C KNSPT - Bit position of GRIB product built so far.
C KSEC0 - GRIB section 0 description.
C KSEC2 - GRIB section 2 description.
C KBITS - Number of bits per element in KGRIB.
C OQUASI - .TRUE. if gaussian grid is quasi-regular (reduced).
-C
+C
C
C Output parameters
C ________________
@@ -87,9 +87,9 @@ C
C Parameters
C
INTEGER JP16SET, JP24SET
- PARAMETER ( JP16SET = 2**16 - 1 )
+ PARAMETER ( JP16SET = 2**16 - 1 )
C ^---> 65535 = FFFF(hex)
- PARAMETER ( JP24SET = 2**24 - 1 )
+ PARAMETER ( JP24SET = 2**24 - 1 )
C ^---> 16777215 = FFFFFF(hex)
C Function arguments
C
@@ -295,7 +295,7 @@ C
C
CALL INXBIT(KGRIB,KLENG,KNSPT, IZERO, 1,KBITS, 8,'C',IRET)
IF( IRET.NE.0) THEN
- IRET = 810
+ IRET = 810
EMESEC2 = IRET
WRITE(GRPRSM,*) 'EMESEC2: Error inserting dummy zero.'
WRITE(GRPRSM,*) 'EMESEC2: Return code = ', IRET
diff --git a/gribex/exscal.F b/gribex/exscal.F
index f6578f6..637c144 100644
--- a/gribex/exscal.F
+++ b/gribex/exscal.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -114,7 +114,7 @@ C
C
IF( .NOT. LALLPOS ) THEN
DO 110 LOOP = KLEN, 1, -1
- PDATA(LOOP) = PREF + KDATA(LOOP)*PSCALE
+ PDATA(LOOP) = PREF + KDATA(LOOP)*PSCALE
110 CONTINUE
C
C Packed values use all bits in integer word, ie sign bit is
@@ -122,7 +122,7 @@ C really a data bit.
ELSE
DO 120 LOOP = KLEN, 1, -1
IF( KDATA(LOOP) .GE. 0 ) THEN
- PDATA(LOOP) = PREF + KDATA(LOOP)*PSCALE
+ PDATA(LOOP) = PREF + KDATA(LOOP)*PSCALE
ELSE
RTEMP = BIG + DBLE(KDATA(LOOP))
PDATA(LOOP) = PREF + RTEMP*PSCALE
diff --git a/gribex/fortranInterface.c b/gribex/fortranInterface.c
index a6b0dd7..6468c81 100644
--- a/gribex/fortranInterface.c
+++ b/gribex/fortranInterface.c
@@ -16,375 +16,379 @@
#include "handleLocalDefinitions.h"
#include "grib_int_t.h"
+grib_int_t stringIsNotANumber(const char * count);
+
typedef struct knownActions {
-int count;
-int * numbers;
-action ** actions;
+ int count;
+ int * numbers;
+ action ** actions;
} knownActions;
knownActions known = {0,NULL,NULL};
int definitionIsDefined(struct knownActions * known, fortint number) {
-int loop;
-grib_int_t Number = (grib_int_t) number;
-
- for( loop = 0; loop < known->count; loop++ ) {
- if( known->numbers[loop] == (int)number ) return loop;
- }
-
- known->count++;
-
- known->numbers = (int*) realloc(known->numbers,known->count*sizeof(int));
- if( known->numbers == NULL ) return -1;
-
- known->actions = (action**) realloc(known->actions,
- known->count*sizeof(action*));
- if( known->actions == NULL ) return -1;
-
- known->numbers[known->count-1] = (int) number;
- known->actions[known->count-1] = createLocalDefinitionHandler(Number);
- if( known->actions[known->count-1] == NULL ) return -1;
-
- return (known->count-1);
+ int loop;
+ grib_int_t Number = (grib_int_t) number;
+
+ for( loop = 0; loop < known->count; loop++ ) {
+ if( known->numbers[loop] == (int)number ) return loop;
+ }
+
+ known->count++;
+
+ known->numbers = (int*) realloc(known->numbers,known->count*sizeof(int));
+ if( known->numbers == NULL ) return -1;
+
+ known->actions = (action**) realloc(known->actions,
+ known->count*sizeof(action*));
+ if( known->actions == NULL ) return -1;
+
+ known->numbers[known->count-1] = (int) number;
+ known->actions[known->count-1] = createLocalDefinitionHandler(Number);
+ if( known->actions[known->count-1] == NULL ) return -1;
+
+ return (known->count-1);
}
void decodeLocalDefinition(
- fortint localDefinitionNumber,
- fortint* packedValues,
- fortint* unpackedValues,
- fortint* numberOfUnpackedIntegers,
- fortint* numberOfPackedBytes) {
-int listPosition, loop;
-unsigned char* packedValuesBytes = (unsigned char*) packedValues;
-grib_int_t UnpackedValues[1024];
-grib_int_t NumberOfUnpackedIntegers;
-grib_int_t NumberOfPackedBytes;
-
- listPosition = definitionIsDefined(&known,localDefinitionNumber);
- if( listPosition == -1 ) {
- *numberOfPackedBytes = 0;
+ fortint localDefinitionNumber,
+ fortint* packedValues,
+ fortint* unpackedValues,
+ fortint* numberOfUnpackedIntegers,
+ fortint* numberOfPackedBytes) {
+ int listPosition, loop;
+ unsigned char* packedValuesBytes = (unsigned char*) packedValues;
+ grib_int_t UnpackedValues[1024];
+ grib_int_t NumberOfUnpackedIntegers;
+ grib_int_t NumberOfPackedBytes;
+
+ listPosition = definitionIsDefined(&known,localDefinitionNumber);
+ if( listPosition == -1 ) {
+ *numberOfPackedBytes = 0;
+ return;
+ }
+
+ decodeLocalDefinitionValues(known.actions[listPosition],
+ packedValuesBytes,UnpackedValues,
+ &NumberOfUnpackedIntegers,
+ &NumberOfPackedBytes);
+ *numberOfUnpackedIntegers = NumberOfUnpackedIntegers;
+ *numberOfPackedBytes = NumberOfPackedBytes;
+ for( loop = 0; loop < NumberOfUnpackedIntegers; loop++ )
+ *(unpackedValues+loop) = (fortint) UnpackedValues[loop];
+
return;
- }
-
- decodeLocalDefinitionValues(known.actions[listPosition],
- packedValuesBytes,UnpackedValues,
- &NumberOfUnpackedIntegers,
- &NumberOfPackedBytes);
- *numberOfUnpackedIntegers = NumberOfUnpackedIntegers;
- *numberOfPackedBytes = NumberOfPackedBytes;
- for( loop = 0; loop < NumberOfUnpackedIntegers; loop++ )
- *(unpackedValues+loop) = (fortint) UnpackedValues[loop];
-
- return;
}
void dldefs(
- fortint* localDefinitionNumber,
- fortint* packedValues,
- fortint* unpackedValues,
- fortint* numberOfUnpackedIntegers,
- fortint* numberOfPackedBytes) {
-
- decodeLocalDefinition(*localDefinitionNumber,packedValues,unpackedValues,
- numberOfUnpackedIntegers,numberOfPackedBytes);
- return;
+ fortint* localDefinitionNumber,
+ fortint* packedValues,
+ fortint* unpackedValues,
+ fortint* numberOfUnpackedIntegers,
+ fortint* numberOfPackedBytes) {
+
+ decodeLocalDefinition(*localDefinitionNumber,packedValues,unpackedValues,
+ numberOfUnpackedIntegers,numberOfPackedBytes);
+ return;
}
void dldefs_(
- fortint* localDefinitionNumber,
- fortint* packedValues,
- fortint* unpackedValues,
- fortint* numberOfUnpackedIntegers,
- fortint* numberOfPackedBytes) {
-
- decodeLocalDefinition(*localDefinitionNumber,packedValues,unpackedValues,
- numberOfUnpackedIntegers,numberOfPackedBytes);
- return;
+ fortint* localDefinitionNumber,
+ fortint* packedValues,
+ fortint* unpackedValues,
+ fortint* numberOfUnpackedIntegers,
+ fortint* numberOfPackedBytes) {
+
+ decodeLocalDefinition(*localDefinitionNumber,packedValues,unpackedValues,
+ numberOfUnpackedIntegers,numberOfPackedBytes);
+ return;
}
void encodeLocalDefinition(
- fortint localDefinitionNumber,
- fortint* unpackedValues,
- fortint* packedValues,
- fortint* numberOfUnpackedIntegers,
- fortint* numberOfPackedBytes) {
-int listPosition, loop;
-unsigned char* packedValuesBytes = (unsigned char*) packedValues;
-grib_int_t UnpackedValues[1024];
-grib_int_t NumberOfUnpackedIntegers;
-grib_int_t NumberOfPackedBytes;
-
- listPosition = definitionIsDefined(&known,localDefinitionNumber);
- if( listPosition == -1 ) {
- *numberOfPackedBytes = 0;
+ fortint localDefinitionNumber,
+ fortint* unpackedValues,
+ fortint* packedValues,
+ fortint* numberOfUnpackedIntegers,
+ fortint* numberOfPackedBytes) {
+ int listPosition, loop;
+ unsigned char* packedValuesBytes = (unsigned char*) packedValues;
+ grib_int_t UnpackedValues[1024];
+ grib_int_t NumberOfUnpackedIntegers;
+ grib_int_t NumberOfPackedBytes;
+
+ listPosition = definitionIsDefined(&known,localDefinitionNumber);
+ if( listPosition == -1 ) {
+ *numberOfPackedBytes = 0;
+ return;
+ }
+
+ for( loop = 0; loop < 1024; loop++ )
+ UnpackedValues[loop] = (grib_int_t) *(unpackedValues+loop);
+
+ encodeLocalDefinitionValues(known.actions[listPosition],
+ UnpackedValues,packedValuesBytes,
+ &NumberOfUnpackedIntegers,
+ &NumberOfPackedBytes);
+ *numberOfUnpackedIntegers = NumberOfUnpackedIntegers;
+ *numberOfPackedBytes = NumberOfPackedBytes;
+
return;
- }
-
- for( loop = 0; loop < 1024; loop++ )
- UnpackedValues[loop] = (grib_int_t) *(unpackedValues+loop);
-
- encodeLocalDefinitionValues(known.actions[listPosition],
- UnpackedValues,packedValuesBytes,
- &NumberOfUnpackedIntegers,
- &NumberOfPackedBytes);
- *numberOfUnpackedIntegers = NumberOfUnpackedIntegers;
- *numberOfPackedBytes = NumberOfPackedBytes;
-
- return;
}
fortint eldefs(
- fortint* localDefinitionNumber,
- fortint* unpackedValues,
- fortint* packedValues,
- fortint* numberOfUnpackedIntegers,
- fortint* numberOfPackedBytes) {
-
- encodeLocalDefinition(*localDefinitionNumber,unpackedValues,packedValues,
- numberOfUnpackedIntegers,numberOfPackedBytes);
+ fortint* localDefinitionNumber,
+ fortint* unpackedValues,
+ fortint* packedValues,
+ fortint* numberOfUnpackedIntegers,
+ fortint* numberOfPackedBytes) {
+
+ encodeLocalDefinition(*localDefinitionNumber,unpackedValues,packedValues,
+ numberOfUnpackedIntegers,numberOfPackedBytes);
+ return 0;
}
fortint eldefs_(
- fortint* localDefinitionNumber,
- fortint* unpackedValues,
- fortint* packedValues,
- fortint* numberOfUnpackedIntegers,
- fortint* numberOfPackedBytes) {
-
- encodeLocalDefinition(*localDefinitionNumber,unpackedValues,packedValues,
- numberOfUnpackedIntegers,numberOfPackedBytes);
+ fortint* localDefinitionNumber,
+ fortint* unpackedValues,
+ fortint* packedValues,
+ fortint* numberOfUnpackedIntegers,
+ fortint* numberOfPackedBytes) {
+
+ encodeLocalDefinition(*localDefinitionNumber,unpackedValues,packedValues,
+ numberOfUnpackedIntegers,numberOfPackedBytes);
+ return 0;
}
void insertSection1Length(fortint* section1, fortint* length) {
-unsigned char* psection1 = (unsigned char*) section1;
-unsigned char section1Length[3] = {'\0','\0','\0'};
-fortint Length = *length;
-
- section1Length[0] = (Length & 0xff0000) >> 16;
- section1Length[1] = (Length & 0xff00) >> 8;
- section1Length[2] = (Length & 0xff);
- memcpy((psection1+8),section1Length,3);
- return;
+ unsigned char* psection1 = (unsigned char*) section1;
+ unsigned char section1Length[3] = {'\0','\0','\0'};
+ fortint Length = *length;
+
+ section1Length[0] = (Length & 0xff0000) >> 16;
+ section1Length[1] = (Length & 0xff00) >> 8;
+ section1Length[2] = (Length & 0xff);
+ memcpy((psection1+8),section1Length,3);
+ return;
}
void isec1l_(fortint* section1, fortint* length) {
- insertSection1Length(section1,length);
- return;
+ insertSection1Length(section1,length);
+ return;
}
void isec1l(fortint* section1, fortint* length) {
- insertSection1Length(section1,length);
- return;
+ insertSection1Length(section1,length);
+ return;
}
fortint ldefnum(fortint* centre, fortint* subcentre, fortint* number) {
-int shift = (sizeof(fortint)-1)*8;
+ int shift = (sizeof(fortint)-1)*8;
#ifdef LITTLE_ENDIAN
- return ((*centre*1000000) + (*subcentre*1000) + (*number & 0xff));
+ return ((*centre*1000000) + (*subcentre*1000) + (*number & 0xff));
#else
- return ((*centre*1000000) + (*subcentre*1000) + ((*number>>shift) & 0xff));
+ return ((*centre*1000000) + (*subcentre*1000) + ((*number>>shift) & 0xff));
#endif
}
fortint ldefnum_(fortint* centre, fortint* subcentre, fortint* number) {
- return ldefnum(centre,subcentre,number);
+ return ldefnum(centre,subcentre,number);
}
void loadPrintLine(
- char* printLine,
- int printLineLength,
- char* contents,
- char* code,
- fortint* ksec1Value) {
-int loop, printLength;
-char value[9];
-char p;
-fortint number;
-
- for( loop = 0; loop < printLineLength; loop++) printLine[loop] = ' ';
- printLength = strlen(contents);
- if( printLength > (printLineLength-10) ) printLength = (printLineLength-10);
- strncpy((printLine+1),contents,printLength);
-
- if( EQUAL(code,"A4") ) {
- memcpy(value,ksec1Value,4);
- value[4] = '\0';
- sprintf((printLine+37)," %s",value);
- }
- else if( EQUAL(code,"A8") ) {
- memcpy(value,ksec1Value,8);
- value[8] = '\0';
- sprintf((printLine+37)," %s",value);
- } else if( EQUAL(code,"BYTES") ){
- sprintf(value,"%0x",*ksec1Value,8);
- if( strlen(value) < 8 ) {
- int missing = 8 - strlen(value);
- for( loop = 7; loop >= missing; loop-- ) value[loop] = value[loop-missing];
- for( loop = 0; loop < missing; loop++ ) value[loop] = '0';
+ char* printLine,
+ int printLineLength,
+ char* contents,
+ char* code,
+ fortint* ksec1Value) {
+ int loop, printLength;
+ char value[9];
+ char p;
+ fortint number;
+
+ for( loop = 0; loop < printLineLength; loop++) printLine[loop] = ' ';
+ printLength = strlen(contents);
+ if( printLength > (printLineLength-10) ) printLength = (printLineLength-10);
+ strncpy((printLine+1),contents,printLength);
+
+ if( EQUAL(code,"A4") ) {
+ memcpy(value,ksec1Value,4);
+ value[4] = '\0';
+ sprintf((printLine+37)," %s",value);
}
+ else if( EQUAL(code,"A8") ) {
+ memcpy(value,ksec1Value,8);
+ value[8] = '\0';
+ sprintf((printLine+37)," %s",value);
+ } else if( EQUAL(code,"BYTES") ){
+ sprintf(value,"%0x",*ksec1Value /*,8*/ );
+ if( strlen(value) < 8 ) {
+ int missing = 8 - strlen(value);
+ for( loop = 7; loop >= missing; loop-- ) value[loop] = value[loop-missing];
+ for( loop = 0; loop < missing; loop++ ) value[loop] = '0';
+ }
#ifdef LITTLE_ENDIAN
- p = value[0];
- value[0] = value[6];
- value[6] = p;
- p = value[1];
- value[1] = value[7];
- value[7] = p;
- p = value[2];
- value[2] = value[4];
- value[4] = p;
- p = value[3];
- value[3] = value[5];
- value[5] = p;
+ p = value[0];
+ value[0] = value[6];
+ value[6] = p;
+ p = value[1];
+ value[1] = value[7];
+ value[7] = p;
+ p = value[2];
+ value[2] = value[4];
+ value[4] = p;
+ p = value[3];
+ value[3] = value[5];
+ value[5] = p;
#endif
- value[8] = '\0';
- sprintf((printLine+37)," %s",value);
- }
-
- else
- sprintf((printLine+37)," %9d",*ksec1Value);
-
- return;
+ value[8] = '\0';
+ sprintf((printLine+37)," %s",value);
+ }
+
+ else
+ sprintf((printLine+37)," %9d",*ksec1Value);
+
+ return;
}
action* createLocalDefinition(action*,grib_int_t);
void displayUnpackedSection1Values(
- fortint fileNumber,
- fortint* unpackedSection1Values) {
-FILE * out;
-char fileName[] = "fort.nn";
-fortint localDefinitionNumber, listPosition;
-action* a;
-int Local = 0;
-int valueToPrint = 41;
-int expverFound = 0;
-int printLength, loop, printableValue = 0, numberOfPrintLines;
-int loopCount, listCount, padCount, byteCount;
-int localDefinitionLengthOffset;
-grib_int_t first = 1, firstLocal = 1;
-char* loopName, *byteName;
-grib_int_t previousDefinitionLengthOffset = 0;
-grib_int_t previousDefinitionLength = 0;
+ fortint fileNumber,
+ fortint* unpackedSection1Values) {
+ FILE * out;
+ char fileName[] = "fort.nn";
+ fortint localDefinitionNumber, listPosition;
+ action* a;
+ int Local = 0;
+ int valueToPrint = 41;
+ int expverFound = 0;
+ int printLength, loop, printableValue = 0, numberOfPrintLines;
+ int loopCount, listCount, padCount, byteCount;
+ int localDefinitionLengthOffset;
+ grib_int_t first = 1, firstLocal = 1;
+ char* loopName, *byteName;
+ grib_int_t previousDefinitionLengthOffset = 0;
+ grib_int_t previousDefinitionLength = 0;
#define LINELENGTH 46
-char printLine[LINELENGTH] = " ";
-
- if( (fileNumber < 1) || (fileNumber > 99) ) return;
-
- if( fileNumber == 6 ) {
- out = stdout;
- setbuf(out,NULL);
- }
- else {
- if( fileNumber < 10 )
- sprintf((fileName+5),"%1d",fileNumber);
+ char printLine[LINELENGTH] = " ";
+
+ if( (fileNumber < 1) || (fileNumber > 99) ) return;
+
+ if( fileNumber == 6 ) {
+ out = stdout;
+ setbuf(out,NULL);
+ }
+ else {
+ if( fileNumber < 10 )
+ sprintf((fileName+5),"%1d",fileNumber);
+ else
+ sprintf((fileName+5),"%2d",fileNumber);
+ out = fopen(fileName,"w");
+ }
+ if( out == NULL ) return;
+
+ localDefinitionNumber = unpackedSection1Values[1]*1000000 +
+ unpackedSection1Values[21]*1000 +
+ unpackedSection1Values[36];
+ listPosition = definitionIsDefined(&known,localDefinitionNumber);
+ if( listPosition == -1 )
+ return;
else
- sprintf((fileName+5),"%2d",fileNumber);
- out = fopen(fileName,"w");
- }
- if( out == NULL ) return;
-
- localDefinitionNumber = unpackedSection1Values[1]*1000000 +
- unpackedSection1Values[21]*1000 +
- unpackedSection1Values[36];
- listPosition = definitionIsDefined(&known,localDefinitionNumber);
- if( listPosition == -1 )
- return;
- else
- a = known.actions[listPosition];
-
- while(a) {
- if( expverFound ) {
-/*
+ a = known.actions[listPosition];
+
+ while(a) {
+ if( expverFound ) {
+ /*
// Abandon printing on following:
*/
- if( EQUAL((a->code),"IF_EQ") ||
- EQUAL((a->code),"IF_NEQ") ||
- EQUAL((a->code),"ENDIF") ||
- EQUAL((a->code),"PADTO") ||
- EQUAL((a->code),"SP_TO") ||
- EQUAL((a->code),"PADMULT") ) return;
-/*
+ if( EQUAL((a->code),"IF_EQ") ||
+ EQUAL((a->code),"IF_NEQ") ||
+ EQUAL((a->code),"ENDIF") ||
+ EQUAL((a->code),"PADTO") ||
+ EQUAL((a->code),"SP_TO") ||
+ EQUAL((a->code),"PADMULT") ) return;
+ /*
// Avoid straightforward printing of following:
*/
- printableValue = ( NEQUAL((a->ksec1),"n/a") &&
- NEQUAL((a->code),"PAD") &&
- NEQUAL((a->code),"LP_I") &&
- NEQUAL((a->code),"LIST") &&
- NEQUAL((a->code),"BYTES") &&
- NEQUAL((a->code),"F1") );
- if( printableValue ) {
- loadPrintLine(printLine,LINELENGTH,
- (char*)(a->description),(char*)(a->code),
- &unpackedSection1Values[valueToPrint]);
- fprintf(out,"%s\n",printLine);
- }
-/*
+ printableValue = ( NEQUAL((a->ksec1),"n/a") &&
+ NEQUAL((a->code),"PAD") &&
+ NEQUAL((a->code),"LP_I") &&
+ NEQUAL((a->code),"LIST") &&
+ NEQUAL((a->code),"BYTES") &&
+ NEQUAL((a->code),"F1") );
+ if( printableValue ) {
+ loadPrintLine(printLine,LINELENGTH,
+ (char*)(a->description),(char*)(a->code),
+ &unpackedSection1Values[valueToPrint]);
+ fprintf(out,"%s\n",printLine);
+ }
+ /*
// Print loops:
*/
- if( EQUAL((a->code),"LP_I") ){
- loopCount = a->reference->value;
- loopName = strdup(a->description);
- for( loop = 0; loop < loopCount; loop++ ) {
- loadPrintLine(printLine,LINELENGTH,
- loopName,(char*)(a->code),
- &unpackedSection1Values[valueToPrint]);
- fprintf(out,"%s\n",printLine);
- valueToPrint++;
- }
- free(loopName);
- }
-/*
+ if( EQUAL((a->code),"LP_I") ){
+ loopCount = a->reference->value;
+ loopName = strdup(a->description);
+ for( loop = 0; loop < loopCount; loop++ ) {
+ loadPrintLine(printLine,LINELENGTH,
+ loopName,(char*)(a->code),
+ &unpackedSection1Values[valueToPrint]);
+ fprintf(out,"%s\n",printLine);
+ valueToPrint++;
+ }
+ free(loopName);
+ }
+ /*
// Print bytes:
*/
- if( EQUAL((a->code),"BYTES") ) {
- byteCount = a->reference->value;
- byteName = strdup(a->description);
- for( loop = 0; loop < byteCount/4; loop++ ) {
- loadPrintLine(printLine,LINELENGTH,
- byteName,"BYTES",
- &unpackedSection1Values[valueToPrint]);
- fprintf(out,"%s\n",printLine);
- valueToPrint++;
- }
- free(byteName);
- }
-/*
+ if( EQUAL((a->code),"BYTES") ) {
+ byteCount = a->reference->value;
+ byteName = strdup(a->description);
+ for( loop = 0; loop < byteCount/4; loop++ ) {
+ loadPrintLine(printLine,LINELENGTH,
+ byteName,"BYTES",
+ &unpackedSection1Values[valueToPrint]);
+ fprintf(out,"%s\n",printLine);
+ valueToPrint++;
+ }
+ free(byteName);
+ }
+ /*
// Skip padding and only move the count if ksec1 is affected:
*/
- if( EQUAL((a->code),"PAD") ) {
- if( (! stringIsNotANumber(a->count)) && NEQUAL((a->ksec1),"n/a") ) {
- padCount = atoi(a->count);
- valueToPrint += padCount;
- }
- }
-/*
+ if( EQUAL((a->code),"PAD") ) {
+ if( (! stringIsNotANumber(a->count)) && NEQUAL((a->ksec1),"n/a") ) {
+ padCount = atoi(a->count);
+ valueToPrint += padCount;
+ }
+ }
+ /*
// Print lists:
*/
- if( EQUAL((a->code),"LIST") ) {
- char** listName = NULL;
- char** listCode = NULL;
- action* listPointer = a->next;
- int separateItems = 0, nextItem = 0;
- int inLocal = 0;
-
- listCount = a->reference->value;
- listName = (char**) malloc(sizeof(char*));
-
- while( NEQUAL((listPointer->code),"ENDLIST") ) {
- static grib_int_t localCount = 0;
- if( NEQUAL(listPointer->code,"LOCAL") &&
- (!inLocal) &&
- (localCount <= 1) ) {
- separateItems++;
- listName = (char**) realloc(listName,separateItems*sizeof(char*));
- listName[separateItems-1] = strdup(listPointer->description);
- listCode = (char**) realloc(listCode,separateItems*sizeof(char*));
- listCode[separateItems-1] = strdup(listPointer->code);
- listPointer = listPointer->next;
- localDefinitionLengthOffset = separateItems - 1;
- }
- else {
-/*
+ if( EQUAL((a->code),"LIST") ) {
+ char** listName = NULL;
+ char** listCode = NULL;
+ action* listPointer = a->next;
+ int separateItems = 0, nextItem = 0;
+ int inLocal = 0;
+
+ listCount = a->reference->value;
+ listName = (char**) malloc(sizeof(char*));
+
+ while( NEQUAL((listPointer->code),"ENDLIST") ) {
+ static grib_int_t localCount = 0;
+ if( NEQUAL(listPointer->code,"LOCAL") &&
+ (!inLocal) &&
+ (localCount <= 1) ) {
+ separateItems++;
+ listName = (char**) realloc(listName,separateItems*sizeof(char*));
+ listName[separateItems-1] = strdup(listPointer->description);
+ listCode = (char**) realloc(listCode,separateItems*sizeof(char*));
+ listCode[separateItems-1] = strdup(listPointer->code);
+ listPointer = listPointer->next;
+ localDefinitionLengthOffset = separateItems - 1;
+ }
+ else {
+ /*
// Special handling for definition 192 (LOCAL within a LIST):
//
// numberOfLocalDefinitions 52 I1 44 -
@@ -393,131 +397,131 @@ char printLine[LINELENGTH] = " ";
// localDefinition - LOCAL - -
// endListOfLocalDefinitions - ENDLIST - listOfLocalDefinitions
*/
- action* local, * a;
- action next;
- grib_int_t lengthOffset;
- static grib_int_t length;
- grib_int_t localDefinitionNumber;
-
- inLocal = 1;
-
- if( first ) {
- first = 0;
- lengthOffset = valueToPrint;
- localCount = listCount;
- }
- else {
- lengthOffset =
- previousDefinitionLengthOffset + previousDefinitionLength + 1;
- }
- length = unpackedSection1Values[lengthOffset];
- previousDefinitionLengthOffset = lengthOffset;
- previousDefinitionLength = length;
-
- if( !firstLocal ) {
- separateItems++;
- listName = (char**) realloc(listName,separateItems*sizeof(char*));
- listName[separateItems-1] =
- strdup(listName[localDefinitionLengthOffset]);
- listCode = (char**) realloc(listCode,separateItems*sizeof(char*));
- listCode[separateItems-1] =
- strdup(listCode[localDefinitionLengthOffset]);
- }
- else
- firstLocal = 0;
-/*
+ action* local, * a;
+ action next;
+ grib_int_t lengthOffset;
+ static grib_int_t length;
+ grib_int_t localDefinitionNumber;
+
+ inLocal = 1;
+
+ if( first ) {
+ first = 0;
+ lengthOffset = valueToPrint;
+ localCount = listCount;
+ }
+ else {
+ lengthOffset =
+ previousDefinitionLengthOffset + previousDefinitionLength + 1;
+ }
+ length = unpackedSection1Values[lengthOffset];
+ previousDefinitionLengthOffset = lengthOffset;
+ previousDefinitionLength = length;
+
+ if( !firstLocal ) {
+ separateItems++;
+ listName = (char**) realloc(listName,separateItems*sizeof(char*));
+ listName[separateItems-1] =
+ strdup(listName[localDefinitionLengthOffset]);
+ listCode = (char**) realloc(listCode,separateItems*sizeof(char*));
+ listCode[separateItems-1] =
+ strdup(listCode[localDefinitionLengthOffset]);
+ }
+ else
+ firstLocal = 0;
+ /*
// Setup ccc = 98, sss = 000, nnn = number
*/
- localDefinitionNumber = 98000000 +
- unpackedSection1Values[lengthOffset+1];
-
- a = listPointer;
- Local = 1;
- local = createLocalDefinition(a,localDefinitionNumber);
- local = local->next;
-
- while( local ) {
- if( NEQUAL(local->ksec1,"n/a") ) {
- separateItems++;
- listName = (char**) realloc(listName,separateItems*sizeof(char*));
- listName[separateItems-1] = strdup(local->description);
- listCode = (char**) realloc(listCode,separateItems*sizeof(char*));
- listCode[separateItems-1] = strdup(local->code);
- }
- else {
-/*
+ localDefinitionNumber = 98000000 +
+ unpackedSection1Values[lengthOffset+1];
+
+ a = listPointer;
+ Local = 1;
+ local = createLocalDefinition(a,localDefinitionNumber);
+ local = local->next;
+
+ while( local ) {
+ if( NEQUAL(local->ksec1,"n/a") ) {
+ separateItems++;
+ listName = (char**) realloc(listName,separateItems*sizeof(char*));
+ listName[separateItems-1] = strdup(local->description);
+ listCode = (char**) realloc(listCode,separateItems*sizeof(char*));
+ listCode[separateItems-1] = strdup(local->code);
+ }
+ else {
+ /*
// previousDefinitionLengthOffset++;
*/
- }
- local = local->next;
- }
- localCount--;
- if( localCount == 0 ) {
- inLocal = 0;
- break;
- }
- }
- }
-
- if( Local )
- numberOfPrintLines = separateItems;
- else
- numberOfPrintLines = listCount * separateItems;
-
- nextItem = 0;
- for( loop = 0; loop < numberOfPrintLines; loop++ ) {
- loadPrintLine(printLine,LINELENGTH,
- listName[nextItem],listCode[nextItem],
- &unpackedSection1Values[valueToPrint]);
- fprintf(out,"%s\n",printLine);
- valueToPrint++;
- if(EQUAL(listCode[nextItem],"A8"))
- valueToPrint++;
- nextItem++;
- if( nextItem == separateItems ) nextItem = 0;
- }
- for( loop = 0; loop < separateItems; loop++ ) {
- free(listName[loop]);
- free(listCode[loop]);
- }
- free(listName);
- free(listCode);
-/*
+ }
+ local = local->next;
+ }
+ localCount--;
+ if( localCount == 0 ) {
+ inLocal = 0;
+ break;
+ }
+ }
+ }
+
+ if( Local )
+ numberOfPrintLines = separateItems;
+ else
+ numberOfPrintLines = listCount * separateItems;
+
+ nextItem = 0;
+ for( loop = 0; loop < numberOfPrintLines; loop++ ) {
+ loadPrintLine(printLine,LINELENGTH,
+ listName[nextItem],listCode[nextItem],
+ &unpackedSection1Values[valueToPrint]);
+ fprintf(out,"%s\n",printLine);
+ valueToPrint++;
+ if(EQUAL(listCode[nextItem],"A8"))
+ valueToPrint++;
+ nextItem++;
+ if( nextItem == separateItems ) nextItem = 0;
+ }
+ for( loop = 0; loop < separateItems; loop++ ) {
+ free(listName[loop]);
+ free(listCode[loop]);
+ }
+ free(listName);
+ free(listCode);
+ /*
// Skip to ENDLIST (which will not be displayed)
// Return if a LIST of LOCAL definitions (definition 192).
*/
- a = listPointer;
- if( Local ) {
- first = 1;
- firstLocal = 1;
-/*
+ a = listPointer;
+ if( Local ) {
+ first = 1;
+ firstLocal = 1;
+ /*
previousDefinitionLengthOffset = 0;
previousDefinitionLength = 0;
*/
- Local = 0;
- if( fileNumber != 6 ) fclose(out);
- return;
+ Local = 0;
+ if( fileNumber != 6 ) fclose(out);
+ return;
+ }
+ }
}
- }
+
+ if( EQUAL("experimentVersionNumber",a->description) ) expverFound = 1;
+ if( printableValue ) valueToPrint++;
+ if( printableValue && EQUAL((a->code),"A8") ) valueToPrint++;
+ a = a->next;
}
-
- if( EQUAL("experimentVersionNumber",a->description) ) expverFound = 1;
- if( printableValue ) valueToPrint++;
- if( printableValue && EQUAL((a->code),"A8") ) valueToPrint++;
- a = a->next;
- }
-
- if( fileNumber != 6 ) fclose(out);
-
- return;
+
+ if( fileNumber != 6 ) fclose(out);
+
+ return;
}
void ldefprt(fortint* fileNumber, fortint* unpackedSection1Values) {
- displayUnpackedSection1Values(*fileNumber,unpackedSection1Values);
- return;
+ displayUnpackedSection1Values(*fileNumber,unpackedSection1Values);
+ return;
}
void ldefprt_(fortint* fileNumber, fortint* unpackedSection1Values) {
- displayUnpackedSection1Values(*fileNumber,unpackedSection1Values);
- return;
+ displayUnpackedSection1Values(*fileNumber,unpackedSection1Values);
+ return;
}
diff --git a/gribex/gdecode.c b/gribex/gdecode.c
index aa44699..037e5c1 100644
--- a/gribex/gdecode.c
+++ b/gribex/gdecode.c
@@ -1,11 +1,11 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
@@ -138,9 +138,9 @@ unsigned char * q = buffer;
section4Offset = (fortint) (q - buffer);
section4Length = THREEBYTEINT(q); q+= 3;
if( large ){
- total = total + section4Length;
- section4Length = total - section4Offset;
- }
+ total = total + section4Length;
+ section4Length = total - section4Offset;
+ }
/*
// Advance to end of section 4
*/
@@ -310,11 +310,12 @@ fortint status;
status = prepareGrib( grib, buffer);
- if( DEBUG1 )
+ if( DEBUG1 ) {
if( status )
printf("GDECODE: prepareGrib failed.\n");
else
printf("GDECODE: prepareGrib ran OK\n");
+ }
return status;
}
@@ -341,7 +342,7 @@ gribProduct * g = *grib;
fortint IGTIME(gribProduct ** grib) {
fortint time;
gribProduct * g = *grib;
-
+
if( (g1_hour(g) == 255) || (g1_minute(g) == 255) ) return (fortint) -1;
time = g1_hour(g)*100 +
@@ -353,7 +354,7 @@ gribProduct * g = *grib;
fortint IGSTEP(gribProduct ** grib) {
fortint timeunit, timerange, step;
gribProduct * g = *grib;
-
+
switch( (int) g1_timeunit(g) ) {
case 2:
@@ -1043,10 +1044,11 @@ int flag = g4_flag(grib);
floatingPoint(grib) &&
noAdditionalFlags(grib)) return 12;
- if((!gridPoint(grib)))
+ if((!gridPoint(grib))) {
if(simplePacking(grib)) return 12;
else
return 19;
+ }
return 12;
}
@@ -1238,7 +1240,7 @@ fortint primaryBitmapped = primaryBitmapPresent(g);
if( primaryBitmapped ) primaryBitmap = (unsigned char*)(g->g3) + 6;
if( secondaryBitmapPresent(g) ) {
- if( differentWidths(g) )
+ if( differentWidths(g) )
secondaryBitmap = (unsigned char *) listOfWidths + g4_p1(g);
else
secondaryBitmap = (unsigned char *) listOfWidths + 1;
@@ -1282,7 +1284,7 @@ fortint primaryBitmapped = primaryBitmapPresent(g);
*(arr+loop) = minimum +
((fortdouble)(firstOrderValue+secondOrderValue))*scale;
- numberNotMissing++;
+ numberNotMissing++;
}
else
*(arr+loop) = missingValue;
@@ -1416,7 +1418,7 @@ fortdouble latitudeStep, longitudeStep, north;
GVALUES(grib,g->expandedValues,&numberOfValues,¬Missing,missingValue);
if( status != numberOfValues ) return (fortint) -6;
}
-
+
return (fortint) (g->currentPointIndex = 1);
}
@@ -1500,13 +1502,13 @@ void * memoryPointer = (void *) malloc(size);
exit(1);
}
if( DEBUG2 )
- printf("allocateMemory: allocated memory pointer = %0x\n", memoryPointer);
+ printf("allocateMemory: allocated memory pointer = %p\n", memoryPointer);
return memoryPointer;
}
void freeMemory(void * memoryPointer) {
if( DEBUG2 )
- printf("freeMemory: freeing memory pointer = %0x\n", memoryPointer);
+ printf("freeMemory: freeing memory pointer = %p\n", memoryPointer);
if( memoryPointer != NULL ) free(memoryPointer);
return;
}
diff --git a/gribex/gendir.F b/gribex/gendir.F
index fc1cb22..bda4b12 100644
--- a/gribex/gendir.F
+++ b/gribex/gendir.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -169,7 +169,7 @@ C
IF (KOUT.GT.KIN)
C THEN
KRET = 1
- WRITE (*,9001) KIN , KOUT
+ WRITE (*,9001) KIN , KOUT
GO TO 9000
ENDIF
ENDIF
diff --git a/gribex/getsys.F b/gribex/getsys.F
index 097a982..46120fa 100644
--- a/gribex/getsys.F
+++ b/gribex/getsys.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -165,6 +165,6 @@ C
C CWUSER , CUSFDB , CWEDNO
C
CHARACTER*6 HSYS
- HSYS = COPSYS
+ HSYS = COPSYS(1:6)
RETURN
END
diff --git a/gribex/grchk1.F b/gribex/grchk1.F
index 645b193..9147f2c 100644
--- a/gribex/grchk1.F
+++ b/gribex/grchk1.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -197,7 +197,7 @@ C STREAM = 1039 Ensemble forecast hindcasts (changed name)
C STREAM = 1084 Ensemble wave hindcast (changed name)
C STREAM = 1085 Wave hindcast
C STREAM = 1086 Wave ensemble forecast overlap
-C STREAM = 1087
+C STREAM = 1087
C Add TYPE = 29 Probability Boundaries
C TYPE = 36 Probability Distribution
C TYPE = 37 Cluster information
@@ -206,12 +206,12 @@ C CLASS = 11 Ensembles
C
C S.Curic ECMWF March 2005
C Add type of level 211 Ocean wave data (ECMWF extention)
-C 212 Wave spectra
+C 212 Wave spectra
C
C S.Curic ECMWF July 2005
C Add STREAM = 1075 Monthly means of Daily forecast accumulations
C Add Time range indicator = 120 Average of N Forecast. Each product
-C is an accumulation from forecast lenght P1 to forecast
+C is an accumulation from forecast lenght P1 to forecast
C lenght P2, with reference times at intervals P2-P1
C S.Curic ECMWF September 2005
C 211 level type has been replaced with 209 because 211 is
@@ -228,7 +228,7 @@ C S.Curic ECMWF March 2006
C Add STREAM = 1030 Ensemble Data Assimilation
C STREAM = 1076 Monthly Means Daily climatology
C STREAM = 1088 Ensemble Wave Data Assimilation
-C STREAM = 1089 Daily climatology wave
+C STREAM = 1089 Daily climatology wave
C
C S.Curic ECMWF April 2006
C Add STREAM = 1230 Multi-model Multi-annual Forecast
@@ -243,13 +243,13 @@ C S.Curic ECMWF February 2007
C STREAM = 1032 efho Ensemble Forecast Hindcast Overlap
C STREAM = 1033 enfh Ensemble Forecast Hindcasts
C STREAM = 1078 ewho Ensemble Forecast Wave Hindcast Overlap
-C STREAM = 1079 enwh Ensemble Forecast Wave Hindcasts
+C STREAM = 1079 enwh Ensemble Forecast Wave Hindcasts
C
C S.Curic ECMWF February 2007
C Add CLASS = 15 SREPS Short-Range Ensemble Prediction System
C
C S.Curic ECMWF July 2007
-C Add TYPE = 38 Unassigned
+C Add TYPE = 38 Unassigned
C TYPE = 39 Unassigned
C
C M.Fuentes ECMWF July 2007
@@ -259,7 +259,7 @@ C S.Curic ECMWF July 2007
C Add CLASS = 16 dt (Data Targeting System)
C
C S.Curic ECMWF July 2008
-C Add TYPE = 32 Climate Distribution (CD)
+C Add TYPE = 32 Climate Distribution (CD)
C TYPE = 38 Shift Of Tails (SOT)
C Add STREAM = 1077 Wave Ensemble forecast Hindcast Stat (WEHS)
C
@@ -271,11 +271,11 @@ C S.Curic ECMWF January 2010
C Add CLASS = 19 MACC Monitoring Atmos. Composition and Climate
C
C S.Curic ECMWF January 2010
-C Add CLASS = 20 PE Permanent experiments
+C Add CLASS = 20 PE Permanent experiments
C
C
C S.Curic ECMWF September 2010
-C Add TYPE = 45 Cluster representative CR
+C Add TYPE = 45 Cluster representative CR
C
C S.Curic ECMWF November 2010
C Add satellite streams 172,257
@@ -284,7 +284,7 @@ C
C S.Curic ECMWF December 2010
C Add stream 1022 fsob forecast sensitivity to observations
C Add stream 1023 fsow forecast sensitivity to observations wave
-C Add type 47 taem time average ensemble mean
+C Add type 47 taem time average ensemble mean
C Add type 48 taes time average ensemble standard deviation
C
C----<
@@ -412,7 +412,7 @@ C Valid values for satellite identifiers
C
DATA IDSATEL/
X 50, 51, 52, 53, 54, 55, 56,119, 120, 121, 122, 130, 140,
- X 150, 151, 152, 171, 172, 199, 201, 250, 251, 252, 253,
+ X 150, 151, 152, 171, 172, 199, 201, 250, 251, 252, 253,
X 254, 255, 256, 257/
C
C -----------------------------------------------------------------|
@@ -508,7 +508,7 @@ C
WRITE(GRPRSM,*)
X 'GRCHK1: ECMWF local table 2 version ', KSEC1(1)
ELSE
- WRITE(GRPRSM,*)
+ WRITE(GRPRSM,*)
X 'GRCHK1: originating centre local table 2 version ', KSEC1(1)
ENDIF
C
@@ -532,7 +532,7 @@ C
IF( (KSEC1(6).EQ.127).AND.(KSEC1(1).EQ.1) ) THEN
C
C Satellite identification.
-C
+C
NRET = 1
DO LOOP = 1, JPIDSAT
IF( KSEC1(7).EQ.IDSATEL(LOOP) ) NRET = 0
@@ -543,7 +543,7 @@ C
X 'GRCHK1: Invalid satellite identifier: ',KSEC1(7)
KRET = 1
ENDIF
-
+
ELSE
C
IRET = 0
@@ -712,7 +712,7 @@ C
ENDDO
C
C Check local definition number.
-C
+C
IF( (KSEC1(37).LT.1).OR.(KSEC1(37).GT.254) ) THEN
KRET = 1
WRITE(GRPRSM,9101) KSEC1(37)
diff --git a/gribex/grchk2.F b/gribex/grchk2.F
index 018770a..1e5c0e8 100644
--- a/gribex/grchk2.F
+++ b/gribex/grchk2.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -158,14 +158,14 @@ C
C Number of vertical coordinate parameters.
C
IF (KSEC2(12).LT.0.OR.KSEC2(12).GT.255) THEN
- KRET = 1
- WRITE(GRPRSM,9019) KSEC2(12)
+ KRET = 1
+ WRITE(GRPRSM,9019) KSEC2(12)
ENDIF
C
C Check Data Representation Type.
C
DO LOOP = 1,JP6
- IF (KSEC2(1).EQ.ITAB6(LOOP)) GO TO 202
+ IF (KSEC2(1).EQ.ITAB6(LOOP)) GO TO 202
ENDDO
C
KRET = 1
@@ -176,7 +176,7 @@ C
C Check Data Representation Type currently supported.
C
DO LOOP = 1,JP6X
- IF (KSEC2(1).EQ.ITAB6X(LOOP)) GO TO 204
+ IF (KSEC2(1).EQ.ITAB6X(LOOP)) GO TO 204
ENDDO
C
KRET = 1
@@ -188,29 +188,29 @@ C
C Earth flag.
C
IF (KSEC2(18).NE.0.AND.KSEC2(18).NE.64) THEN
- KRET = 1
- WRITE(GRPRSM,9005) KSEC2(18)
+ KRET = 1
+ WRITE(GRPRSM,9005) KSEC2(18)
ENDIF
C
C Check ECMWF usage.(0 except for space view perspective)
C
IF (KSEC2(18).NE.0.AND.KSEC1(2).EQ.98.AND.KSEC2(1).NE.90) THEN
- KRET = 1
- WRITE(GRPRSM,9007)
+ KRET = 1
+ WRITE(GRPRSM,9007)
ENDIF
C
C Components flag.
C
IF (KSEC2(19).NE.0.AND.KSEC2(19).NE.8) THEN
- KRET = 1
- WRITE(GRPRSM,9006) KSEC2(19)
+ KRET = 1
+ WRITE(GRPRSM,9006) KSEC2(19)
ENDIF
C
C Check ECMWF usage.
C
IF(KSEC2(19).NE.0.AND.KSEC2(19).NE.8.AND.KSEC1(2).EQ.98) THEN
- KRET = 1
- WRITE(GRPRSM,9008)
+ KRET = 1
+ WRITE(GRPRSM,9008)
ENDIF
C
LQUASI = (KSEC2(17) .EQ. 1)
@@ -226,71 +226,71 @@ C
C
C Number of points along a parallel.
C
- IF ( KSEC2(2).LT.1. OR. KSEC2(2).GT.65535 ) THEN
+ IF ( KSEC2(2).LT.1. OR. KSEC2(2).GT.65535 ) THEN
IF ( .NOT. LQUASI ) THEN
- KRET = 1
- WRITE(GRPRSM,9022) KSEC2(2)
+ KRET = 1
+ WRITE(GRPRSM,9022) KSEC2(2)
ENDIF
ENDIF
C
C Number of points along a meridian.
C
- IF ( KSEC2(3).LT.1 .OR. KSEC2(3).GT.65535 ) THEN
+ IF ( KSEC2(3).LT.1 .OR. KSEC2(3).GT.65535 ) THEN
IF ( .NOT. LQUASI ) THEN
- KRET = 1
- WRITE(GRPRSM,9023) KSEC2(3)
+ KRET = 1
+ WRITE(GRPRSM,9023) KSEC2(3)
ENDIF
ENDIF
C
C Latitude of first grid point.
C
- IF (KSEC2(4).LT.-90000.OR.KSEC2(4).GT.90000) THEN
- KRET = 1
- WRITE(GRPRSM,9015) KSEC2(4)
+ IF (KSEC2(4).LT.-90000.OR.KSEC2(4).GT.90000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9015) KSEC2(4)
ENDIF
C
C Longitude of first grid point.
C
- IF (KSEC2(5).LT.-360000.OR.KSEC2(5).GT.360000) THEN
- KRET = 1
- WRITE(GRPRSM,9016) KSEC2(5)
+ IF (KSEC2(5).LT.-360000.OR.KSEC2(5).GT.360000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9016) KSEC2(5)
ENDIF
C
C Resolution flag.
C
- IF (KSEC2(6).NE.0.AND.KSEC2(6).NE.128) THEN
- KRET = 1
- WRITE(GRPRSM,9003) KSEC2(6)
+ IF (KSEC2(6).NE.0.AND.KSEC2(6).NE.128) THEN
+ KRET = 1
+ WRITE(GRPRSM,9003) KSEC2(6)
ENDIF
C
C Latitude of last grid point.
C
- IF (KSEC2(7).LT.-90000.OR.KSEC2(7).GT.90000) THEN
- KRET = 1
- WRITE(GRPRSM,9020) KSEC2(7)
+ IF (KSEC2(7).LT.-90000.OR.KSEC2(7).GT.90000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9020) KSEC2(7)
ENDIF
C
C Longitude of last grid point.
C
- IF (KSEC2(8).LT.-360000.OR.KSEC2(8).GT.360000) THEN
- KRET = 1
- WRITE(GRPRSM,9021) KSEC2(8)
+ IF (KSEC2(8).LT.-360000.OR.KSEC2(8).GT.360000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9021) KSEC2(8)
ENDIF
C
C Direction increments, if included.
C
IF (KSEC2(6).EQ.128) THEN
- IF (KSEC2(9).LT.1.OR.KSEC2(9).GT.65535) THEN
+ IF (KSEC2(9).LT.1.OR.KSEC2(9).GT.65535) THEN
IF( .NOT. LQUASI ) THEN
- KRET = 1
- WRITE(GRPRSM,9024) KSEC2(9)
+ KRET = 1
+ WRITE(GRPRSM,9024) KSEC2(9)
ENDIF
ENDIF
C
- IF (KSEC2(10).LT.1.OR.KSEC2(10).GT.65535) THEN
+ IF (KSEC2(10).LT.1.OR.KSEC2(10).GT.65535) THEN
IF( .NOT. LQUASI ) THEN
- KRET = 1
- WRITE(GRPRSM,9025) KSEC2(10)
+ KRET = 1
+ WRITE(GRPRSM,9025) KSEC2(10)
ENDIF
ENDIF
ENDIF
@@ -298,7 +298,7 @@ C
C Scanning mode flag.
C
DO LOOP = 1, JP8
- IF (KSEC2(11).EQ.ITAB8(LOOP)) GO TO 302
+ IF (KSEC2(11).EQ.ITAB8(LOOP)) GO TO 302
ENDDO
C
KRET = 1
@@ -308,9 +308,9 @@ C
C
C Regular / Quasi-regular grid check.
C
- IF (KSEC2(17).NE.0.AND.KSEC2(17).NE.1) THEN
- KRET = 1
- WRITE(GRPRSM,9009) KSEC2(17)
+ IF (KSEC2(17).NE.0.AND.KSEC2(17).NE.1) THEN
+ KRET = 1
+ WRITE(GRPRSM,9009) KSEC2(17)
ENDIF
C
GO TO 900
@@ -327,59 +327,59 @@ C
C
C Latitude of first grid point.
C
- IF (KSEC2(4).LT.-90000.OR.KSEC2(4).GT.90000) THEN
- KRET = 1
- WRITE(GRPRSM,9015) KSEC2(4)
+ IF (KSEC2(4).LT.-90000.OR.KSEC2(4).GT.90000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9015) KSEC2(4)
ENDIF
C
C Longitude of first grid point.
C
- IF (KSEC2(5).LT.-360000.OR.KSEC2(5).GT.360000) THEN
- KRET = 1
- WRITE(GRPRSM,9016) KSEC2(5)
+ IF (KSEC2(5).LT.-360000.OR.KSEC2(5).GT.360000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9016) KSEC2(5)
ENDIF
C
C Latitude of last grid point.
C
- IF (KSEC2(7).LT.-90000.OR.KSEC2(7).GT.90000) THEN
- KRET = 1
- WRITE(GRPRSM,9020) KSEC2(7)
+ IF (KSEC2(7).LT.-90000.OR.KSEC2(7).GT.90000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9020) KSEC2(7)
ENDIF
C
C Longitude of last grid point.
C
- IF (KSEC2(8).LT.-360000.OR.KSEC2(8).GT.360000) THEN
- KRET = 1
- WRITE(GRPRSM,9021) KSEC2(8)
+ IF (KSEC2(8).LT.-360000.OR.KSEC2(8).GT.360000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9021) KSEC2(8)
ENDIF
C
C i-direction increment, if included.
C
IF (KSEC2(6).EQ.128) THEN
- IF (KSEC2(9).LT.1.OR.KSEC2(9).GT.65535) THEN
- KRET = 1
- WRITE(GRPRSM,9024) KSEC2(9)
+ IF (KSEC2(9).LT.1.OR.KSEC2(9).GT.65535) THEN
+ KRET = 1
+ WRITE(GRPRSM,9024) KSEC2(9)
ENDIF
ENDIF
C
C Number of parallels beween pole and equator.
C
IF (KSEC2(10).LT.1.OR.KSEC2(10).GT.65535) THEN
- KRET = 1
- WRITE(GRPRSM,9026) KSEC2(10)
+ KRET = 1
+ WRITE(GRPRSM,9026) KSEC2(10)
ENDIF
C
C Increment flag.
C
- IF (KSEC2(6).NE.0.AND.KSEC2(6).NE.128) THEN
- KRET = 1
- WRITE(GRPRSM,9003) KSEC2(6)
+ IF (KSEC2(6).NE.0.AND.KSEC2(6).NE.128) THEN
+ KRET = 1
+ WRITE(GRPRSM,9003) KSEC2(6)
ENDIF
C
C Scanning mode flag.
C
DO LOOP = 1, JP8
- IF (KSEC2(11).EQ.ITAB8(LOOP)) GO TO 402
+ IF (KSEC2(11).EQ.ITAB8(LOOP)) GO TO 402
ENDDO
C
KRET = 1
@@ -389,16 +389,16 @@ C
C
C Regular / Quasi-regular grid check.
C
- IF (KSEC2(17).NE.0.AND.KSEC2(17).NE.1) THEN
- KRET = 1
- WRITE(GRPRSM,9009) KSEC2(17)
+ IF (KSEC2(17).NE.0.AND.KSEC2(17).NE.1) THEN
+ KRET = 1
+ WRITE(GRPRSM,9009) KSEC2(17)
ENDIF
C
C Cross-check increments flag and quasi-regular indicator.
C
- IF ( LQUASI .AND.KSEC2(6).EQ.128) THEN
- KRET = 1
- WRITE(GRPRSM,9011)
+ IF ( LQUASI .AND.KSEC2(6).EQ.128) THEN
+ KRET = 1
+ WRITE(GRPRSM,9011)
ENDIF
C
GO TO 900
@@ -415,49 +415,49 @@ C
C
C Number of points along X-axis.
C
- IF (KSEC2(2).LT.1.OR.KSEC2(2).GT.65535) THEN
- KRET = 1
- WRITE(GRPRSM,9027) KSEC2(2)
+ IF (KSEC2(2).LT.1.OR.KSEC2(2).GT.65535) THEN
+ KRET = 1
+ WRITE(GRPRSM,9027) KSEC2(2)
ENDIF
C
C Number of points along Y-axis.
C
- IF (KSEC2(3).LT.1.OR.KSEC2(3).GT.65535) THEN
- KRET = 1
- WRITE(GRPRSM,9028) KSEC2(3)
+ IF (KSEC2(3).LT.1.OR.KSEC2(3).GT.65535) THEN
+ KRET = 1
+ WRITE(GRPRSM,9028) KSEC2(3)
ENDIF
C
C Latitude of first grid point.
C
- IF (KSEC2(4).LT.-90000.OR.KSEC2(4).GT.90000) THEN
- KRET = 1
- WRITE(GRPRSM,9015) KSEC2(4)
+ IF (KSEC2(4).LT.-90000.OR.KSEC2(4).GT.90000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9015) KSEC2(4)
ENDIF
C
C Longitude of first grid point.
C
- IF (KSEC2(5).LT.-360000.OR.KSEC2(5).GT.360000) THEN
- KRET = 1
- WRITE(GRPRSM,9016) KSEC2(5)
+ IF (KSEC2(5).LT.-360000.OR.KSEC2(5).GT.360000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9016) KSEC2(5)
ENDIF
C
C Orientation of the grid.
C
- IF (KSEC2(7).LT.-360000.OR.KSEC2(7).GT.360000) THEN
- KRET = 1
- WRITE(GRPRSM,9017) KSEC2(7)
+ IF (KSEC2(7).LT.-360000.OR.KSEC2(7).GT.360000) THEN
+ KRET = 1
+ WRITE(GRPRSM,9017) KSEC2(7)
ENDIF
C
C Grid lengths.
C
- IF (KSEC2(9).LT.1.OR.KSEC2(9).GT.16777215) THEN
- KRET = 1
- WRITE(GRPRSM,9029) KSEC2(9)
+ IF (KSEC2(9).LT.1.OR.KSEC2(9).GT.16777215) THEN
+ KRET = 1
+ WRITE(GRPRSM,9029) KSEC2(9)
ENDIF
C
- IF (KSEC2(10).LT.1.OR.KSEC2(10).GT.16777215) THEN
- KRET = 1
- WRITE(GRPRSM,9030) KSEC2(10)
+ IF (KSEC2(10).LT.1.OR.KSEC2(10).GT.16777215) THEN
+ KRET = 1
+ WRITE(GRPRSM,9030) KSEC2(10)
ENDIF
C
C Projection centre.
@@ -466,9 +466,9 @@ C The use of 1 by the Polar Stereographic projection in this
C octet is inconsistent with Lambert conformal et al
C representation where bit 1 is set 1 to indicate North pole.
C
- IF (KSEC2(13).NE.0.AND.KSEC2(13).NE.1) THEN
- KRET = 1
- WRITE(GRPRSM,9018) KSEC2(13)
+ IF (KSEC2(13).NE.0.AND.KSEC2(13).NE.1) THEN
+ KRET = 1
+ WRITE(GRPRSM,9018) KSEC2(13)
ENDIF
C
GO TO 900
@@ -486,15 +486,15 @@ C
C Spectral data representation type.
C
IF (KSEC2(5).NE.1) THEN
- KRET = 1
- WRITE(GRPRSM,9012) KSEC2(5)
+ KRET = 1
+ WRITE(GRPRSM,9012) KSEC2(5)
ENDIF
C
C Spectral data representation mode.
C
- IF (KSEC2(6).NE.1.AND.KSEC2(6).NE.2) THEN
- KRET = 1
- WRITE(GRPRSM,9013) KSEC2(6)
+ IF (KSEC2(6).NE.1.AND.KSEC2(6).NE.2) THEN
+ KRET = 1
+ WRITE(GRPRSM,9013) KSEC2(6)
ENDIF
C
GO TO 900
@@ -507,7 +507,7 @@ C
700 CONTINUE
C
IF (KSEC2(1).EQ.90) THEN
- GO TO 900
+ GO TO 900
ENDIF
C
C ----------------------------------------------------------------
diff --git a/gribex/grchk3.F b/gribex/grchk3.F
index be658cc..c022d41 100644
--- a/gribex/grchk3.F
+++ b/gribex/grchk3.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -174,8 +174,8 @@ C* Check bit-map table reference field.
C
IF (KSEC3(1).LT.0.OR.KSEC3(1).GT.65535)
C THEN
- KRET = 1
- WRITE(GRPRSM,9001) KSEC3(1)
+ KRET = 1
+ WRITE(GRPRSM,9001) KSEC3(1)
ENDIF
C
C ----------------------------------------------------------------
diff --git a/gribex/gribex.F b/gribex/gribex.F
index 3d8b871..fa23a4c 100644
--- a/gribex/gribex.F
+++ b/gribex/gribex.F
@@ -204,6 +204,8 @@ C* Section 1 . Set initial values.
C -----------------------------------------------------------------|
C
100 CONTINUE
+ ISECLEN = 0
+C
CC Avoid using GRIBEX at (almost) all costs
WRITE(GRPRSM,*) 'GRIBEX: functionality superseded by GRIB_API.'
#ifdef GRIBEX_ABORT
diff --git a/gribex/gribin.F b/gribex/gribin.F
index 005aa85..7a15ca1 100644
--- a/gribex/gribin.F
+++ b/gribex/gribin.F
@@ -1,49 +1,49 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- subroutine gribin(kunit,karray,kinlen,koutlen,keof,kret)
+ subroutine gribin(kunit,karray,kinlen,koutlen,keof,kret)
C---->
C
-C This subroutine mimics the behaviour of the original GRIBIN
-C but makes a call to PBGRIB to retrieve GRIB products. Because
-C MAGICS calls GRIBIN with an invalid buffer size, this mimic
-C version has to call PBGRIB with a phoney buffer size - dumlen,
-C currently 1000000. In effect this subverts the check that the
-C buffer is big enough for the retrieved product!!!
+C This subroutine mimics the behaviour of the original GRIBIN
+C but makes a call to PBGRIB to retrieve GRIB products. Because
+C MAGICS calls GRIBIN with an invalid buffer size, this mimic
+C version has to call PBGRIB with a phoney buffer size - dumlen,
+C currently 1000000. In effect this subverts the check that the
+C buffer is big enough for the retrieved product!!!
C
C----<
- integer icalls
- integer dumlen
- save icalls, dumlen
- data icalls/0/
- data dumlen/1000000/
+ integer icalls
+ integer dumlen
+ save icalls, dumlen
+ data icalls/0/
+ data dumlen/1000000/
C
C First time through, print a warning message
- if (icalls .eq. 0) then
- icalls = icalls + 1
- write(*,*) ' *********************************************'
- write(*,*) ' *********************************************'
- write(*,*) ' You are using an obsolete subroutine (GRIBIN)'
- write(*,*) ' for retrieving GRIB products.'
- write(*,*) ' There is NO check your buffer is big enough.'
- write(*,*) ' Please change to using PBGRIB.'
- write(*,*) ' *********************************************'
- write(*,*) ' *********************************************'
- endif
+ if (icalls .eq. 0) then
+ icalls = icalls + 1
+ write(*,*) ' *********************************************'
+ write(*,*) ' *********************************************'
+ write(*,*) ' You are using an obsolete subroutine (GRIBIN)'
+ write(*,*) ' for retrieving GRIB products.'
+ write(*,*) ' There is NO check your buffer is big enough.'
+ write(*,*) ' Please change to using PBGRIB.'
+ write(*,*) ' *********************************************'
+ write(*,*) ' *********************************************'
+ endif
C
C Note the use of dumlen (not kinlen) in the following call ...
- call pbgrib(kunit,karray,DUMLEN,koutlen,kret)
- if ( kret .eq. -3) then
- write(*,*) ' Buffer not big enough for GRIB product'
- kret = -5
- endif
-C
- return
- end
+ call pbgrib(kunit,karray,DUMLEN,koutlen,kret)
+ if ( kret .eq. -3) then
+ write(*,*) ' Buffer not big enough for GRIB product'
+ kret = -5
+ endif
+C
+ return
+ end
diff --git a/gribex/grprs1b.F b/gribex/grprs1b.F
index eeac83e..167c155 100644
--- a/gribex/grprs1b.F
+++ b/gribex/grprs1b.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -106,13 +106,13 @@ C
C
C Local variables
C
- INTEGER IPREV, ICURR, ICOUNT, IOFFSET, IOFF2, IOFF3
- INTEGER IBIT, IERR, IOUT, IYEAR, NBYTES, LEN
+ INTEGER IPREV, ICURR, ICOUNT, IOFFSET, IYEAR
+CC INTEGER IBIT, IERR, IOUT, NBYTES, LEN, IOFF2, IOFF3
INTEGER JLOOP, JILOOP
REAL VALUE
C
CHARACTER*8 HVERSION
- CHARACTER*121 HFIRST, HSECOND, HTHIRD, HFOURTH
+CC CHARACTER*121 HFIRST, HSECOND, HTHIRD, HFOURTH
C
C Externals
C
@@ -417,7 +417,7 @@ C
IF ( KSEC1(39) .NE. 51 ) WRITE(GRPRSM,9701) KSEC1(42)
IF ( KSEC1(39) .NE. 52 ) WRITE(GRPRSM,9702) KSEC1(43)
IF ( KSEC1(39) .EQ. 52 ) WRITE(GRPRSM,9703) KSEC1(43)
- WRITE(GRPRSM,9704) KSEC1(44)
+ WRITE(GRPRSM,9704) KSEC1(44)
WRITE(GRPRSM,9705) KSEC1(45)
GOTO 900
ENDIF
@@ -1096,7 +1096,7 @@ C
C
C ECMWF Local definition 12.
C
- 1201 FORMAT(' (Mean, average, etc)')
+ 1201 FORMAT(' (Mean, average, etc)')
1203 FORMAT(' Start date of the period ', I8)
1204 FORMAT(' Start time of the period ', I4.4)
1205 FORMAT(' Finish date of the period ', I8)
diff --git a/gribex/grprs2.F b/gribex/grprs2.F
index 996354d..a01bd7e 100644
--- a/gribex/grprs2.F
+++ b/gribex/grprs2.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -152,7 +152,7 @@ C
WRITE(GRPRSM,9107) KSEC2(I)
ENDDO
WRITE(GRPRSM,9212) KSEC2(12)
- GO TO 800
+ GO TO 800
C
ENDIF
C
@@ -164,21 +164,21 @@ C
C
IF (KSEC2(1).EQ.4 .OR. KSEC2(1).EQ.14 .OR.
X KSEC2(1).EQ.24 .OR. KSEC2(1).EQ.34) THEN
- WRITE(GRPRSM,9200)
+ WRITE(GRPRSM,9200)
WRITE(GRPRSM,9112) KSEC2(1)
C
C Quasi-regular grids introduced in Edition 1.
C
- IF (KSEC2(17).EQ.0.OR.IEDIT.LT.1) THEN
+ IF (KSEC2(17).EQ.0.OR.IEDIT.LT.1) THEN
WRITE(GRPRSM,9201) KSEC2(2)
- ELSE
+ ELSE
CALL PTQUASI(KSEC2)
ENDIF
WRITE(GRPRSM,9202) KSEC2(3)
WRITE(GRPRSM,9203) KSEC2(4)
WRITE(GRPRSM,9204) KSEC2(5)
IBIT = 8
- IRESOL = KSEC2(6) + KSEC2(18) + KSEC2(19)
+ IRESOL = KSEC2(6) + KSEC2(18) + KSEC2(19)
CALL PRTBIN (IRESOL,IBIT,IOUT,IERR)
WRITE(GRPRSM,9205) IOUT
WRITE(GRPRSM,9206) KSEC2(7)
@@ -188,15 +188,15 @@ C Print increment if given.
C
IF (KSEC2(6).EQ.128) THEN
WRITE(GRPRSM,9208) KSEC2(9)
- ELSE
- WRITE(GRPRSM,9236)
+ ELSE
+ WRITE(GRPRSM,9236)
ENDIF
WRITE(GRPRSM,9210) KSEC2(10)
IBIT = 8
CALL PRTBIN (KSEC2(11),IBIT,IOUT,IERR)
WRITE(GRPRSM,9211) IOUT
WRITE(GRPRSM,9212) KSEC2(12)
- GO TO 800
+ GO TO 800
C
ENDIF
C
@@ -208,21 +208,21 @@ C
C
IF (KSEC2(1).EQ.0 .OR. KSEC2(1).EQ.10 .OR.
X KSEC2(1).EQ.20 .OR. KSEC2(1).EQ.30) THEN
- WRITE(GRPRSM,9200)
+ WRITE(GRPRSM,9200)
WRITE(GRPRSM,9113) KSEC2(1)
C
C Quasi-regular lat/long grids also possible.
C
- IF (KSEC2(17).EQ.0) THEN
+ IF (KSEC2(17).EQ.0) THEN
WRITE(GRPRSM,9201) KSEC2(2)
- ELSE
+ ELSE
CALL PTQUASI(KSEC2)
ENDIF
WRITE(GRPRSM,9202) KSEC2(3)
WRITE(GRPRSM,9203) KSEC2(4)
WRITE(GRPRSM,9204) KSEC2(5)
IBIT = 8
- IRESOL = KSEC2(6) + KSEC2(18) + KSEC2(19)
+ IRESOL = KSEC2(6) + KSEC2(18) + KSEC2(19)
CALL PRTBIN (IRESOL,IBIT,IOUT,IERR)
WRITE(GRPRSM,9205) IOUT
WRITE(GRPRSM,9206) KSEC2(7)
@@ -244,7 +244,7 @@ C
CALL PRTBIN (KSEC2(11),IBIT,IOUT,IERR)
WRITE(GRPRSM,9211) IOUT
WRITE(GRPRSM,9212) KSEC2(12)
- GO TO 800
+ GO TO 800
C
ENDIF
C
@@ -255,14 +255,14 @@ C
500 CONTINUE
C
IF (KSEC2(1).EQ.5) THEN
- WRITE(GRPRSM,9200)
+ WRITE(GRPRSM,9200)
WRITE(GRPRSM,9114) KSEC2(1)
WRITE(GRPRSM,9301) KSEC2(2)
WRITE(GRPRSM,9302) KSEC2(3)
WRITE(GRPRSM,9203) KSEC2(4)
WRITE(GRPRSM,9204) KSEC2(5)
IBIT = 8
- IRESOL = KSEC2(18) + KSEC2(19)
+ IRESOL = KSEC2(18) + KSEC2(19)
CALL PRTBIN (IRESOL,IBIT,IOUT,IERR)
WRITE(GRPRSM,9205) IOUT
WRITE(GRPRSM,9303) KSEC2(7)
@@ -273,7 +273,7 @@ C
WRITE(GRPRSM,9211) IOUT
WRITE(GRPRSM,9212) KSEC2(12)
WRITE(GRPRSM,9306) KSEC2(13)
- GO TO 800
+ GO TO 800
C
ENDIF
C
@@ -325,7 +325,7 @@ C
WRITE(GRPRSM,9310) KSEC2(4)
WRITE(GRPRSM,9311) KSEC2(5)
IBIT = 8
- IRESOL = KSEC2(18) + KSEC2(19)
+ IRESOL = KSEC2(18) + KSEC2(19)
WRITE(GRPRSM,9312) KSEC2(7)
WRITE(GRPRSM,9313) KSEC2(8)
WRITE(GRPRSM,9314) KSEC2(9)
@@ -340,7 +340,7 @@ C
WRITE(GRPRSM,9318) KSEC2(16)
WRITE(GRPRSM,9319) KSEC2(18)
WRITE(GRPRSM,9320) KSEC2(19)
- GO TO 800
+ GO TO 800
C
ENDIF
C
@@ -367,7 +367,7 @@ C
IBIT = 8
CALL PRTBIN (KSEC2(11),IBIT,IOUT,IERR)
WRITE(GRPRSM,9211) IOUT
- GO TO 800
+ GO TO 800
ENDIF
C
C -----------------------------------------------------------------|
@@ -377,14 +377,14 @@ C
760 CONTINUE
C
IF (KSEC2(1).EQ.1) THEN
- WRITE(GRPRSM,9200)
+ WRITE(GRPRSM,9200)
WRITE(GRPRSM,9118) KSEC2(1)
WRITE(GRPRSM,9201) KSEC2(2)
WRITE(GRPRSM,9202) KSEC2(3)
WRITE(GRPRSM,9203) KSEC2(4)
WRITE(GRPRSM,9204) KSEC2(5)
IBIT = 8
- IRESOL = KSEC2(6) + KSEC2(18) + KSEC2(19)
+ IRESOL = KSEC2(6) + KSEC2(18) + KSEC2(19)
CALL PRTBIN (IRESOL,IBIT,IOUT,IERR)
WRITE(GRPRSM,9205) IOUT
WRITE(GRPRSM,9206) KSEC2(7)
@@ -396,7 +396,7 @@ C
CALL PRTBIN (KSEC2(11),IBIT,IOUT,IERR)
WRITE(GRPRSM,9211) IOUT
WRITE(GRPRSM,9212) KSEC2(12)
- GO TO 800
+ GO TO 800
ENDIF
C
C -----------------------------------------------------------------|
diff --git a/gribex/handleLocalDefinitions.h b/gribex/handleLocalDefinitions.h
index 2b7726a..ea39886 100644
--- a/gribex/handleLocalDefinitions.h
+++ b/gribex/handleLocalDefinitions.h
@@ -1,11 +1,11 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
#include "grib_int_t.h"
@@ -18,7 +18,7 @@
#define THREE_BYTE_INT(a) (int) (TWO_BYTE_INT((a))<<8 | ONE_BYTE_INT(a+2))
#define FOUR_BYTE_INT(a) (int) (THREE_BYTE_INT((a))<<8 | ONE_BYTE_INT(a+3))
-#define MOVE1BYTE(p,n) ( *(p) = ((*(n)>> 0) & 0xFF) )
+#define MOVE1BYTE(p,n) ( *(p) = ((*(n)>> 0) & 0xFF) )
#define MOVE2BYTES(p,n) ( *(p) = ((*(n)>> 8) & 0xFF) ) , \
( *((p)+1) = ((*(n)>> 0) & 0xFF) )
#define MOVE3BYTES(p,n) ( *(p) = ((*(n)>>16) & 0xFF) ) , \
@@ -83,11 +83,11 @@ struct action* end;
typedef void (*init_proc)(action*,action*,char*,char*,char*,char*,char*);
typedef struct op_code {
- grib_string_t *description;
- init_proc init;
- pack_proc pack;
- unpack_proc unpack;
- test_proc test;
+ grib_string_t *description;
+ init_proc init;
+ pack_proc pack;
+ unpack_proc unpack;
+ test_proc test;
} op_code;
/*==========================================================*/
diff --git a/gribex/inxbit.F b/gribex/inxbit.F
index 430c6d0..01b264e 100644
--- a/gribex/inxbit.F
+++ b/gribex/inxbit.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -104,9 +104,11 @@ C
#include "common/grprs.h"
C
CHARACTER*1 HFUNC
- INTEGER IND, INUM, IOFF, IWORD
+ INTEGER IND, IOFF, IWORD
INTEGER KBIT, KBLEN, KGRIB, KLENG, KNSPT, KNUM, KPARM, KRET
- INTEGER J901
+#ifdef DEBUG
+ INTEGER INUM, J901
+#endif
C
DIMENSION KGRIB(KLENG)
DIMENSION KPARM(*)
@@ -163,7 +165,7 @@ C
C Vectorising routine GSBITE performs the same
C functions as SBYTE(S) and GBYTE(S).
C
- CALL GSBITE (KGRIB(IWORD),KPARM,IOFF,KBLEN,0,KNUM,
+ CALL GSBITE (KGRIB(IWORD),KPARM,IOFF,KBLEN,0,KNUM,
X KBIT,IMASK,HFUNC)
ELSE
C
@@ -171,9 +173,9 @@ C Scalar faster.
C
IF (HFUNC.EQ.'C') THEN
CALL SBYTES (KGRIB(IWORD),KPARM,IOFF,KBLEN,0,KNUM)
- ELSE
+ ELSE
CALL GBYTES (KGRIB(IWORD),KPARM,IOFF,KBLEN,0,KNUM)
- ENDIF
+ ENDIF
ENDIF
#elif (defined CYBER)
IF (HFUNC.EQ.'C') THEN
@@ -207,8 +209,8 @@ C
C
IND = KNSPT / KBIT
IF (IND.GT.KLENG) THEN
- KRET = 1
- WRITE(GRPRSM,*) 'INXBIT : Word ', IND ,
+ KRET = 1
+ WRITE(GRPRSM,*) 'INXBIT : Word ', IND ,
X ' is outside array bounds ', KLENG
ENDIF
C
diff --git a/gribex/inxmap.F b/gribex/inxmap.F
index d58ce06..73ddb05 100644
--- a/gribex/inxmap.F
+++ b/gribex/inxmap.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -227,8 +227,8 @@ C
C THEN
WRITE(GRPRSM,*) 'INXMAP : Section 1.'
WRITE(GRPRSM,*) ' Input values used -'
- WRITE(GRPRSM,9004) HFUNC
- WRITE(GRPRSM,9005) KSIZE
+ WRITE(GRPRSM,9004) HFUNC
+ WRITE(GRPRSM,9005) KSIZE
ENDIF
C
C Reset return code to
@@ -261,9 +261,9 @@ C* Check that bit-map size does not exceed maximum permitted.
C
IF (JPMAP.LT.KSIZE)
C THEN
- WRITE(GRPRSM,9001) KSIZE , JPMAP
- KRET = 2
- GO TO 900
+ WRITE(GRPRSM,9001) KSIZE , JPMAP
+ KRET = 2
+ GO TO 900
ENDIF
C ------------------------------------------------------------------
@@ -294,9 +294,9 @@ C
C
IF (KRET.NE.0)
C THEN
- WRITE(GRPRSM,9003)
- KRET = 1
- GO TO 900
+ WRITE(GRPRSM,9003)
+ KRET = 1
+ GO TO 900
ENDIF
C
C* Copy data to temporary array and insert missing data
@@ -304,12 +304,12 @@ C indicator in temporary array, in accordance with the
C bit map values.
C
DO 320 J320=1,KSIZE
- IF (IMAP(J320).EQ.0)
+ IF (IMAP(J320).EQ.0)
C THEN
- ZSEC4(J320) = PMISS
+ ZSEC4(J320) = PMISS
ELSE
- INEXT = INEXT + 1
- ZSEC4(J320) = PSEC4(INEXT)
+ INEXT = INEXT + 1
+ ZSEC4(J320) = PSEC4(INEXT)
ENDIF
320 CONTINUE
C
@@ -318,13 +318,13 @@ C transfer data to original array.
C
IF (INEXT.NE.KSIZE)
C THEN
- KSBMAP = -4
+ KSBMAP = -4
DO 330 J330=1,KSIZE
- PSEC4(J330) = ZSEC4(J330)
+ PSEC4(J330) = ZSEC4(J330)
330 CONTINUE
ELSE
- KSBMAP = -2
- ENDIF
+ KSBMAP = -2
+ ENDIF
C
GO TO 900
C
@@ -356,13 +356,13 @@ C indicator in temporary array, generating the bit-map
C in accordance with the missing data values.
C
DO 420 J420=1,KSIZE
- IF (PSEC4(J420).EQ.PMISS)
+ IF (PSEC4(J420).EQ.PMISS)
C THEN
- IMAP(J420) = 0
+ IMAP(J420) = 0
ELSE
- IMAP(J420) = 1
- INEXT = INEXT + 1
- ZSEC4(INEXT) = PSEC4(J420)
+ IMAP(J420) = 1
+ INEXT = INEXT + 1
+ ZSEC4(INEXT) = PSEC4(J420)
ENDIF
420 CONTINUE
C
@@ -373,9 +373,9 @@ C
C
IF (KRET.NE.0)
C THEN
- WRITE(GRPRSM,9003)
- KRET = 1
- GO TO 900
+ WRITE(GRPRSM,9003)
+ KRET = 1
+ GO TO 900
ENDIF
C
C* If missing data is indicated transfer data to original
@@ -384,7 +384,7 @@ C
IF (INEXT.NE.KSIZE)
C THEN
DO 430 J430=1,INEXT
- PSEC4(J430) = ZSEC4(J430)
+ PSEC4(J430) = ZSEC4(J430)
430 CONTINUE
C
IF (YFUNC.EQ.'M')
@@ -398,18 +398,18 @@ C values remain correct. Number of data values
C includes these padding values.
C
DO 431 J431=INEXT+1,KSIZE
- PSEC4(J431) = PSEC4(1)
+ PSEC4(J431) = PSEC4(1)
431 CONTINUE
- ELSE
+ ELSE
C
C Return number of real values (excluding
C missing data values).
C
KSIZE = INEXT
ENDIF
- ENDIF
+ ENDIF
C
- GO TO 900
+ GO TO 900
C
ENDIF
C
@@ -438,8 +438,8 @@ C
C THEN
WRITE(GRPRSM,*) 'INXMAP : Section 9.'
WRITE(GRPRSM,*) ' Output values set -'
- WRITE(GRPRSM,9005) KSIZE
- WRITE(GRPRSM,9006) KSBMAP
+ WRITE(GRPRSM,9005) KSIZE
+ WRITE(GRPRSM,9006) KSBMAP
ENDIF
C
9001 FORMAT (1H ,'INXMAP : Bit-map size is ',I6,', maximum allowed',
diff --git a/gribex/lnbfcr.F b/gribex/lnbfcr.F
index 42cf1f6..7d731f8 100644
--- a/gribex/lnbfcr.F
+++ b/gribex/lnbfcr.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -153,9 +153,9 @@ C
IF (IFLAG.NE.0.AND.IFLAG.NE.128)
C THEN
WRITE (*,9002) IFLAG
- IF (IABORT.EQ.0) CALL ABORT
- KLENB = -1
- GO TO 9000
+ IF (IABORT.EQ.0) CALL ABORT
+ KLENB = -1
+ GO TO 9000
ENDIF
C
IF (IFLAG.EQ.128)
@@ -167,9 +167,9 @@ C
IF (KLENB.GT.JPBYT)
C THEN
WRITE (*,9001)
- IF (IABORT.EQ.0) CALL ABORT
- KLENB = -1
- GO TO 9000
+ IF (IABORT.EQ.0) CALL ABORT
+ KLENB = -1
+ GO TO 9000
ENDIF
C
C Length of Section 3.
@@ -182,9 +182,9 @@ C
IF ((KLENB+3).GT.JPBYT)
C THEN
WRITE (*,9001)
- IF (IABORT.EQ.0) CALL ABORT
- KLENB = -1
- GO TO 9000
+ IF (IABORT.EQ.0) CALL ABORT
+ KLENB = -1
+ GO TO 9000
ENDIF
C
C Length of binary data Section 4.
diff --git a/gribex/lngbcr.F b/gribex/lngbcr.F
index d058198..0fa260e 100644
--- a/gribex/lngbcr.F
+++ b/gribex/lngbcr.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -160,7 +160,7 @@ C
C AND.ISCATR(8).EQ.0)
C THEN
ISNEW = 1
- GO TO 400
+ GO TO 400
ENDIF
C
C In the Experimental GRIB Edition, octets 23 and 24 are reserved
@@ -170,7 +170,7 @@ C
IF (ISCATR(22).EQ.0.AND.ISCATR(23).EQ.0)
C THEN
ISNEW = 0
- GO TO 400
+ GO TO 400
ENDIF
C
C ----------------------------------------------------------------
diff --git a/gribex/local2c.c b/gribex/local2c.c
index 9ea7338..23c2a83 100644
--- a/gribex/local2c.c
+++ b/gribex/local2c.c
@@ -1,11 +1,11 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
@@ -66,12 +66,14 @@ char NNNNNN[7];
pyfile = getenv("ECMWF_LOCAL_TABLE_PATH");
- if( pyfile == NULL )
+ if( pyfile == NULL ) {
strcpy( yfile, TABLE_PATH);
- if(USER)
- strcat(yfile,"/gribtables");
- else
+ if(USER)
+ strcat(yfile,"/gribtables");
+ }
+ else {
strcpy( yfile, pyfile);
+ }
nnnnnn = EMOSNUM(&noprint);
sprintf(NNNNNN,"%6.6d",nnnnnn);
@@ -127,6 +129,6 @@ char NNNNNN[7];
fgets(buffer, BUFFLEN-1, in);
if (feof(in) ) return (JPROUTINE + 1);
}
-
+
}
}
diff --git a/gribex/maxmn2.F b/gribex/maxmn2.F
index e30b59c..f378f23 100644
--- a/gribex/maxmn2.F
+++ b/gribex/maxmn2.F
@@ -111,6 +111,7 @@ C* Section 1 . Get maximum and minimum values.
C ----------------------------------------------------------------
C
100 CONTINUE
+ IOFF = 0
C
C Set initial values to first data value which is not
C a missing data indicator.
diff --git a/gribex/parval.F b/gribex/parval.F
index cdd4927..47e0caa 100644
--- a/gribex/parval.F
+++ b/gribex/parval.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -161,7 +161,7 @@ C
HPAR = '?'
KLPAR = 1
KNSP = KCSP + 1
- GO TO 9000
+ GO TO 9000
ENDIF
C
C* Go to section 9.
@@ -288,8 +288,8 @@ C
CALL L2U1CR (HPAR)
IF (HLINE(KCSP:KCSP).EQ.'"'.AND.HPAR(1:7).EQ.'COMMENT')
C THEN
- ISTR = INDEX(HLINE(KCSP+1:),'"')
- IF (ISTR.GE.II) II = ISTR + 2
+ ISTR = INDEX(HLINE(KCSP+1:),'"')
+ IF (ISTR.GE.II) II = ISTR + 2
ENDIF
C
C Extract value entry and length
diff --git a/gribex/prtbin.F b/gribex/prtbin.F
index 4392bbb..0dfce92 100644
--- a/gribex/prtbin.F
+++ b/gribex/prtbin.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -140,7 +140,7 @@ C
IF (KNBIT.LT.1.OR.KNBIT.GT.14)
C THEN
KERR = 1
- WRITE(GRPRSM,9000) KNBIT
+ WRITE(GRPRSM,9000) KNBIT
GO TO 900
ELSE
KERR = 0
@@ -168,9 +168,9 @@ C
C
DO 102 J102=1,KNBIT
ITEMP = IK - ( (IK/2)*2 )
- KOUT = KOUT + ITEMP * IDEC
- IK = IK / 2
- IDEC = IDEC * 10
+ KOUT = KOUT + ITEMP * IDEC
+ IK = IK / 2
+ IDEC = IDEC * 10
102 CONTINUE
C
C -----------------------------------------------------------------
diff --git a/gribex/prtbk2.F b/gribex/prtbk2.F
index ba623c9..e459d0e 100644
--- a/gribex/prtbk2.F
+++ b/gribex/prtbk2.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -79,11 +79,11 @@ C
9103 FORMAT (1H ,'No. of points along a meridian. ',I9)
WRITE (*,9104) IB2PAR(4)
9104 FORMAT (1H ,'Latitude of origin. ',I9)
- WRITE (*,9200)
+ WRITE (*,9200)
9200 FORMAT (1H ,'(Southern latitudes are negative.)')
WRITE (*,9105) IB2PAR(5)
9105 FORMAT (1H ,'Longitude of origin. ',I9)
- WRITE (*,9201)
+ WRITE (*,9201)
9201 FORMAT (1H ,'(Western longitudes are negative.)')
NBIT = 8
CALL PRTBIN (IB2PAR(6),NBIT,OUT,ERR)
@@ -91,10 +91,10 @@ C
9106 FORMAT (1H ,'Resolution flag. ',I8.8)
WRITE (*,9107) IB2PAR(7)
9107 FORMAT (1H ,'Latitude of extreme point. ',I9)
- WRITE (*,9200)
+ WRITE (*,9200)
WRITE (*,9108) IB2PAR(8)
9108 FORMAT (1H ,'Longitude of extreme point. ',I9)
- WRITE (*,9201)
+ WRITE (*,9201)
WRITE (*,9109) IB2PAR(9)
9109 FORMAT (1H ,'East-West increment. ',I9)
IF (IB2PAR(1).EQ.0)
diff --git a/gribex/ptquasi.F b/gribex/ptquasi.F
index 99b7617..3153f96 100644
--- a/gribex/ptquasi.F
+++ b/gribex/ptquasi.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -120,14 +120,14 @@ C Display number of points for each latitude
YOUT = ' '
C
DO 120 J120 = 1,LATCNT
- NEXTLAT = NEXTLAT + 1
- WRITE (YOUT(1:4),'(I4)') NEXTLAT
+ NEXTLAT = NEXTLAT + 1
+ WRITE (YOUT(1:4),'(I4)') NEXTLAT
C
C Finished?
- IF (NEXTLAT.GT.LATCNT) GO TO 900
- IF (NEXTLAT.EQ.LATCNT) THEN
+ IF (NEXTLAT.GT.LATCNT) GO TO 900
+ IF (NEXTLAT.EQ.LATCNT) THEN
WRITE(GRPRSM,9005) KSEC2(NEXTLAT+22) , YOUT
- GO TO 900
+ GO TO 900
ENDIF
C
C Look for neighbouring latitudes with same number of points
@@ -140,14 +140,14 @@ C increase the repeat count.
IF (KSEC2(NEXTLAT+22+1).EQ.KSEC2(NEXTLAT+22)) THEN
NREPEAT = NREPEAT + 1
NEXTLAT = NEXTLAT + 1
- IF (NEXTLAT.LT.LATCNT) GO TO 110
+ IF (NEXTLAT.LT.LATCNT) GO TO 110
ENDIF
C
C Display neighbouring latitudes with same number of points as
C 'nn to mm'.
IF (NREPEAT.GE.1) THEN
YOUT(5:) = ' to '
- WRITE (YOUT(9:12),'(I4)') NEXTLAT
+ WRITE (YOUT(9:12),'(I4)') NEXTLAT
ENDIF
WRITE(GRPRSM,9005) KSEC2(NEXTLAT+22) , YOUT
YOUT = ' '
diff --git a/gribex/qu2reg.F b/gribex/qu2reg.F
index f7f7e30..d4c8fc9 100644
--- a/gribex/qu2reg.F
+++ b/gribex/qu2reg.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -200,20 +200,20 @@ C
IF (KCODE.NE.1.AND.KCODE.NE.3.AND.
C KCODE.NE.11.AND.KCODE.NE.13)
C THEN
- WRITE (*,9001) KCODE
- CALL ABORTX ('QU2REG')
+ WRITE (*,9001) KCODE
+ CALL ABORTX ('QU2REG')
ENDIF
C
IF (KLAT.GT.JPMAX)
C THEN
- WRITE (*,9002) KLAT , JPMAX
- CALL ABORTX ('QU2REG')
+ WRITE (*,9002) KLAT , JPMAX
+ CALL ABORTX ('QU2REG')
ENDIF
C
IF (KLON.GT.JPMAX*2)
C THEN
- WRITE (*,9003) KLAT , JPMAX*2
- CALL ABORTX ('QU2REG')
+ WRITE (*,9003) KLAT , JPMAX*2
+ CALL ABORTX ('QU2REG')
ENDIF
C
C Set array indices to 0.
@@ -228,17 +228,17 @@ C
C
C Quasi-regular along longitude lines.
C
- IQUANO = KLON
- IREGNO = KLAT
- ICODE = KCODE - 10
+ IQUANO = KLON
+ IREGNO = KLAT
+ ICODE = KCODE - 10
ELSE
C
C Quasi-regular along latitude lines.
C
- IQUANO = KLAT
- IREGNO = KLON
- ICODE = KCODE
- ENDIF
+ IQUANO = KLAT
+ IREGNO = KLON
+ ICODE = KCODE
+ ENDIF
C
C ------------------------------------------------------------------
C
@@ -299,7 +299,7 @@ C
C Copy temporary array to user array.
C
DO 240 J240=1,KLON*KLAT
- PFIELD(J240) = ZTEMP(J240)
+ PFIELD(J240) = ZTEMP(J240)
240 CONTINUE
C
C ------------------------------------------------------------------
diff --git a/gribex/qu2reg2.F b/gribex/qu2reg2.F
index 4c75155..96c5886 100644
--- a/gribex/qu2reg2.F
+++ b/gribex/qu2reg2.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -181,19 +181,19 @@ C Check input parameters.
C
IF (KCODE.NE.1.AND.KCODE.NE.3.AND.KCODE.NE.11.AND.KCODE.NE.13)
X THEN
- WRITE (*,9001) KCODE
+ WRITE (*,9001) KCODE
KRET = 1
GOTO 900
ENDIF
C
IF (KLAT.GT.JPMAX) THEN
- WRITE (*,9002) KLAT , JPMAX
+ WRITE (*,9002) KLAT , JPMAX
KRET = 2
GOTO 900
ENDIF
C
IF (KLON.GT.JPMAX*2) THEN
- WRITE (*,9003) KLAT , JPMAX*2
+ WRITE (*,9003) KLAT , JPMAX*2
KRET = 3
GOTO 900
ENDIF
@@ -209,16 +209,16 @@ C
C
C Quasi-regular along longitude lines.
C
- IQUANO = KLON
- IREGNO = KLAT
- ICODE = KCODE - 10
+ IQUANO = KLON
+ IREGNO = KLAT
+ ICODE = KCODE - 10
ELSE
C
C Quasi-regular along latitude lines.
C
- IQUANO = KLAT
- IREGNO = KLON
- ICODE = KCODE
+ IQUANO = KLAT
+ IREGNO = KLON
+ ICODE = KCODE
ENDIF
C
C Allocate memory (first time only)
@@ -285,7 +285,7 @@ C
C Copy temporary array to user array.
C
DO 240 J240=1,KLON*KLAT
- PFIELD(J240) = ZTEMP(J240)
+ PFIELD(J240) = ZTEMP(J240)
240 CONTINUE
C
C ------------------------------------------------------------------
diff --git a/gribex/rowina.F b/gribex/rowina.F
index 614e3ab..5cb137f 100644
--- a/gribex/rowina.F
+++ b/gribex/rowina.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -131,8 +131,8 @@ C
1 + ((3.-2.*ZWT) *PW(IP+1,1) - ZWT1*PW(IP+1,3))*ZWT*ZWT
310 CONTINUE
ELSE
- WRITE (*,9001) KCODE
- CALL ABORTX ('ROWINA')
+ WRITE (*,9001) KCODE
+ CALL ABORTX ('ROWINA')
ENDIF
C
RETURN
diff --git a/gribex/rowina2.F b/gribex/rowina2.F
index 6cc3c16..714b61c 100644
--- a/gribex/rowina2.F
+++ b/gribex/rowina2.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -177,7 +177,7 @@ C
WRITE(*,*) ' ROWINA2: Cubic interpolation not supported'
WRITE(*,*) ' ROWINA2: for fields containing missing data.'
WRITE(*,*) ' Sorry!'
- KRET = 1
+ KRET = 1
GOTO 900
ENDIF
PW(JL,1) = P(JL)
diff --git a/gribex/rowina3.F b/gribex/rowina3.F
index 562ddf4..460932c 100644
--- a/gribex/rowina3.F
+++ b/gribex/rowina3.F
@@ -129,6 +129,7 @@ C Section 1. Linear interpolation ..
C*******************************************************************
C
100 CONTINUE
+ IP = 0
C
KRET = 0
C
diff --git a/gribex/sencode.c b/gribex/sencode.c
index a5793d1..f923130 100644
--- a/gribex/sencode.c
+++ b/gribex/sencode.c
@@ -1,11 +1,11 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
@@ -39,6 +39,7 @@ static int debugSet = 0;
fortint initialiseNewGrib(gribProduct**);
fortint copyExistingGrib(gribProduct**,gribProduct**);
+fortint getIntegerValue(gribProduct**,unsigned char*);
void adjustGridAreaDefinition(gribProduct*,int);
fortint SENCODE(gribProduct ** newGrib, gribProduct ** oldGrib) {
@@ -67,19 +68,21 @@ fortint status;
if( *oldGrib == NULL ) {
status = initialiseNewGrib(newGrib);
- if( DEBUG1 )
+ if( DEBUG1 ) {
if( status )
printf("SENCODE: initialiseNewGrib failed.\n");
else
printf("SENCODE: initialiseNewGrib ran OK\n");
+ }
}
else {
status = copyExistingGrib(newGrib,oldGrib);
- if( DEBUG1 )
+ if( DEBUG1 ) {
if( status )
printf("SENCODE: copyExistingGrib failed.\n");
else
printf("SENCODE: copyExistingGrib ran OK\n");
+ }
}
return status;
@@ -185,7 +188,7 @@ gribProduct * newG;
newG->currentPointIndex = 0;
- newG->numberOfValues = getIntegerValue(oldGrib,"numberOfFieldValues");
+ newG->numberOfValues = getIntegerValue(oldGrib,(unsigned char*)"numberOfFieldValues");
newG->value = NULL;
newG->bitStart = NULL;
newG->bitsPerValue = oldG->bitsPerValue;
@@ -486,9 +489,8 @@ gribProduct * g = *grib;
default:
if( DEBUG1 ) printf("ISTUNIT: invalid time unit\n");
- return -1;
}
-
+ return -1;
}
fortint RSTUNIT(gribProduct ** grib, fortdouble * timeUnit) {
@@ -988,7 +990,7 @@ gribSection1 * newG1, * oldG1;
MOVE1BYTE(((g->g1)->local.mars.definition),definitionNumber);
MOVE3BYTES(((g->g1)->sectionLength),&length);
return 0;
-
+
}
fortint RSDEFIN(gribProduct ** grib, fortdouble * definitionNumber) {
@@ -1717,7 +1719,7 @@ unsigned char * bitmap, * section3;
printf("SVALUES: numberOfUnpackedValues = %d\n",numberOfUnpackedValues);
if( numberOfUnpackedValues <= 0 ) {
- printf("SVALUES: grib headers not sufficiently configured for packing\n");
+ printf("SVALUES: grib headers not sufficiently configured for packing\n");
return -1;
}
@@ -1784,8 +1786,8 @@ unsigned char * bitmap, * section3;
}
}
else {
- g->bitmapped = 0;
- *((g->g1)->section2and3PresentFlag) &= 0xbf;
+ g->bitmapped = 0;
+ *((g->g1)->section2and3PresentFlag) &= 0xbf;
freeMemory(section3);
}
numberOfValues = N - numberOfMissingValues;
@@ -1840,7 +1842,7 @@ unsigned char * bitmap, * section3;
integerScale = 1 - loop - numberOfBitsPerPackedValue;
break;
}
- }
+ }
}
realScale = (fortdouble) pow((double)2.0,(double)integerScale);
@@ -1857,7 +1859,7 @@ unsigned char * bitmap, * section3;
MOVE3BYTES((section4+7),&referenceValueMantissa);
MOVE1BYTE((section4+10),&numberOfBitsPerPackedValue);
-
+
status = REF2GRB(&arrayOfUnpackedValues[0],&firstCoefficientExponent,
&firstCoefficientMantissa,&numberOfBitsPerInteger);
if( status ) {
@@ -1950,9 +1952,9 @@ printf("Second order packing not yet handled!\n");
ksec4[ 1] = g4_bits(g);
ksec4[16] = g4_ip(g);
- ksec4[17] = g4_j(g);
- ksec4[18] = g4_k(g);
- ksec4[19] = g4_m(g);
+ ksec4[17] = g4_j(g);
+ ksec4[18] = g4_k(g);
+ ksec4[19] = g4_m(g);
ktrunc = g2_J(g);
kleng = (estimatedSizeOfSection4+sizeof(fortint)-1)/sizeof(fortint);
@@ -2028,7 +2030,7 @@ printf("Second order packing not yet handled!\n");
integerScale = 1 - loop - numberOfBitsPerPackedValue;
break;
}
- }
+ }
}
realScale = (fortdouble) pow((double)2.0,(double)integerScale);
@@ -2045,7 +2047,7 @@ printf("Second order packing not yet handled!\n");
MOVE3BYTES((section4+7),&referenceValueMantissa);
MOVE1BYTE((section4+10),&numberOfBitsPerPackedValue);
-
+
status = REF2GRB(&arrayOfUnpackedValues[0],&firstCoefficientExponent,
&firstCoefficientMantissa,&numberOfBitsPerInteger);
if( status ) {
@@ -2363,7 +2365,7 @@ fortint value, numberOfPoints ;
g->northSet = TRUE;
if( DEBUG2 )
printf("adjustGridAreaDefinition: north set = %f\n", north);
- }
+ }
}
break;
@@ -2407,7 +2409,7 @@ fortint value, numberOfPoints ;
g->westSet = TRUE;
if( DEBUG2 )
printf("adjustGridAreaDefinition: west set = %f\n", west);
- }
+ }
}
break;
@@ -2447,7 +2449,7 @@ fortint value, numberOfPoints ;
g->northSet = TRUE;
if( DEBUG2 )
printf("adjustGridAreaDefinition: north set = %f\n", north);
- }
+ }
}
break;
@@ -2582,5 +2584,5 @@ printf("********************* g2_PV_PL(g) = %d\n",temp);
MOVE1BYTE(((g->g2)->NV),&numberOfNewCoordinates);
listOffset++;
MOVE1BYTE(((g->g2)->PV_PL),&listOffset);
-
+ return 0;
}
diff --git a/gribex/setpar.F b/gribex/setpar.F
index ae927bc..2e604fb 100644
--- a/gribex/setpar.F
+++ b/gribex/setpar.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -110,8 +110,8 @@ C
IF( KPR.GE.1 ) THEN
WRITE(GRPRSM,*) ' SETPAR : Section 9.'
WRITE(GRPRSM,*) ' Output values set -'
- WRITE(GRPRSM,*) 'SETPAR: KBIT = ', KBIT
- WRITE(GRPRSM,*) 'SETPAR: KNEG = ', KNEG
+ WRITE(GRPRSM,*) 'SETPAR: KBIT = ', KBIT
+ WRITE(GRPRSM,*) 'SETPAR: KNEG = ', KNEG
ENDIF
C
RETURN
diff --git a/gribex/unbkout.F b/gribex/unbkout.F
index b3a8415..57dde77 100644
--- a/gribex/unbkout.F
+++ b/gribex/unbkout.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -425,7 +425,7 @@ C
C
IF (IEOF.GT.0)
C THEN
- IF (IB.EQ.0) GO TO 3600
+ IF (IB.EQ.0) GO TO 3600
DO 3580 J3580 = IB+1,JPBLOK
IOBUFF(J3580+IP-1) = 0
3580 CONTINUE
diff --git a/interpolation/0-INDEX-0 b/interpolation/0-INDEX-0
index 19b9b06..a6ac0ae 100644
--- a/interpolation/0-INDEX-0
+++ b/interpolation/0-INDEX-0
@@ -14,6 +14,7 @@ dpath_tables_interpol.F90
dssarea.F mac Fixup field area specification (dissemination style)
emosPrecision.c mac Returns 64 if double-precision (64-bit) REALs in use
estima.F
+estima_reg.F mac Calculate number of increments along a particular direction given an increment, start and ending positions (suitable for regular grids)
fft99.F
fftchk.c mac Check truncation and longitude grid interval OK for FFT
fixarea.F mac Fixup area definition to correspond to grid definitions
diff --git a/interpolation/CMakeLists.txt b/interpolation/CMakeLists.txt
index fffceb6..a4e978a 100644
--- a/interpolation/CMakeLists.txt
+++ b/interpolation/CMakeLists.txt
@@ -20,6 +20,7 @@ list( APPEND interpolation_src_files
dpath_tables_interpol.F90
dssarea.F
estima.F
+ estima_reg.F
fft99.F
fixarea.F
forced_fftw.F
@@ -228,6 +229,7 @@ list( APPEND interpolation_src_files
emosPrecision.c
fftchk.c
gmapbit.c
+ hirlam_userspace.c
intlogs.c
jchmod.c
jindex.c
diff --git a/interpolation/chequal.F b/interpolation/chequal.F
index 2e8f5b6..46c4e72 100644
--- a/interpolation/chequal.F
+++ b/interpolation/chequal.F
@@ -57,30 +57,24 @@ C
CHARACTER*(*) HIN, HCOMP
INTEGER KFIRST, KLAST, LOOP, ITEMP1, ITEMP2, ITEMPA
#ifdef rs6000
-
ITEMPA = ICHAR( 'a' )
#else
- DATA ITEMPA/97/
-C |
-C v
-C ITEMPA = ICHAR( 'a' )
+ DATA ITEMPA/97/ !ITEMPA = ICHAR( 'a' )
#endif
CHEQUAL = .FALSE.
+ IF( (KFIRST.GT.KLAST)
+ . .OR. (LEN(HIN) .LT.KLAST)
+ . .OR. (LEN(HCOMP).LT.KLAST) ) RETURN
- IF( KFIRST .GT. KLAST ) RETURN
-
- DO 110 LOOP = KFIRST, KLAST
- ITEMP1 = ICHAR( HIN(LOOP:LOOP) )
- IF ( ITEMP1 .LT. ITEMPA ) ITEMP1 = ITEMP1 + 32
-
+ DO LOOP = KFIRST, KLAST
+ ITEMP1 = ICHAR( HIN (LOOP:LOOP) )
ITEMP2 = ICHAR( HCOMP(LOOP:LOOP) )
- IF ( ITEMP2 .LT. ITEMPA) ITEMP2 = ITEMP2 + 32
-
+ IF ( ITEMP1 .LT. ITEMPA ) ITEMP1 = ITEMP1 + 32
+ IF ( ITEMP2 .LT. ITEMPA ) ITEMP2 = ITEMP2 + 32
IF ( ITEMP1 .NE. ITEMP2 ) RETURN
- 110 CONTINUE
+ ENDDO
CHEQUAL = .TRUE.
- RETURN
END
diff --git a/interpolation/copy_spec_from_ksec.c b/interpolation/copy_spec_from_ksec.c
index c23d4b6..944f4d1 100644
--- a/interpolation/copy_spec_from_ksec.c
+++ b/interpolation/copy_spec_from_ksec.c
@@ -14,6 +14,8 @@
#include "emos.h"
#include <assert.h>
+fortint int2_gasetup(fortint isec1[], fortint isec2[], fortint isec3[], fortint isec4[], fortfloat rsec2[], fortfloat zsec3[]);
+
extern int mars_interpolation;
#define SET_EXTRA_LONG(x,y) do { assert(packing_spec->extra_settings_count<80); packing_spec->extra_settings[packing_spec->extra_settings_count].name = #x; packing_spec->extra_settings[packing_spec->extra_settings_count].type = GRIB_TYPE_LONG; packing_spec->extra_settings[packing_spec->extra_settings_count].long_value = y; packing_spec->extra_settings_count++; } while(0)
@@ -76,7 +78,7 @@ int copy_spec_from_ksec(grib_util_grid_spec* spec,grib_util_packing_spec* packin
if(intf2_debug){
printf("missing value XXXXXXXXXX %f \n", spec->missingValue);
- printf("SIZES double=%d fortfloat=%d\n", sizeof(double), sizeof(fortfloat));
+ printf("SIZES double=%lu fortfloat=%lu\n", sizeof(double), sizeof(fortfloat));
printf("is BITMAP present %d\n", isec1[4]);
}
diff --git a/interpolation/describe_input_field.c b/interpolation/describe_input_field.c
index 1487ad6..062f824 100644
--- a/interpolation/describe_input_field.c
+++ b/interpolation/describe_input_field.c
@@ -13,714 +13,740 @@
#include "grib_api.h"
#include "emos.h"
+fortint int2_intin (const char* param, fortint iv[], fortfloat dv[], const char* cv);
+fortint int2_intout(const char* param, fortint iv[], fortfloat dv[], const char* cv);
+
static long levTypeInt(char* typeOfLevel) {
- if (!typeOfLevel || strlen(typeOfLevel) == 0) return 255;
- if (!strcmp(typeOfLevel,"missing")) return 255;
- if (!strcmp(typeOfLevel,"surface")) return 1;
- if (!strcmp(typeOfLevel,"cloudBase")) return 2;
- if (!strcmp(typeOfLevel,"cloudTop")) return 3;
- if (!strcmp(typeOfLevel,"isothermZero")) return 4;
- if (!strcmp(typeOfLevel,"adiabaticCondensation")) return 5;
- if (!strcmp(typeOfLevel,"maxWind")) return 6;
- if (!strcmp(typeOfLevel,"tropopause")) return 7;
- if (!strcmp(typeOfLevel,"nominalTop")) return 8;
- if (!strcmp(typeOfLevel,"seaBottom")) return 9;
-
- if (!strcmp(typeOfLevel,"isobaricInhPa")) return 100;
- if (!strcmp(typeOfLevel,"isobaricLayer")) return 101;
- if (!strcmp(typeOfLevel,"meanSea")) return 102;
- if (!strcmp(typeOfLevel,"heightAboveSea")) return 103;
- if (!strcmp(typeOfLevel,"heightAboveSeaLayer")) return 104;
- if (!strcmp(typeOfLevel,"heightAboveGround")) return 105;
- if (!strcmp(typeOfLevel,"heightAboveGroundLayer")) return 106;
- if (!strcmp(typeOfLevel,"sigma")) return 107;
- if (!strcmp(typeOfLevel,"sigmaLayer")) return 108;
- if (!strcmp(typeOfLevel,"hybrid")) return 109;
- if (!strcmp(typeOfLevel,"hybridLayer")) return 110;
-
- if (!strcmp(typeOfLevel,"depthBelowLand")) return 111;
- if (!strcmp(typeOfLevel,"depthBelowLandLayer")) return 112;
- if (!strcmp(typeOfLevel,"theta")) return 113;
- if (!strcmp(typeOfLevel,"thetaLayer")) return 114;
- if (!strcmp(typeOfLevel,"pressureFromGround")) return 115;
- if (!strcmp(typeOfLevel,"pressureFromGroundLayer")) return 116;
- if (!strcmp(typeOfLevel,"potentialVorticity")) return 117;
- if (!strcmp(typeOfLevel,"isobaricLayerHighPrecision")) return 121;
-
- if (!strcmp(typeOfLevel,"heightAboveGroundHighPrecision")) return 125;
-
- if (!strcmp(typeOfLevel,"sigmaLayerHighPrecision")) return 128;
- if (!strcmp(typeOfLevel,"isobaricLayerMixedPrecision")) return 141;
- if (!strcmp(typeOfLevel,"depthBelowSea")) return 160;
-
- if (!strcmp(typeOfLevel,"entireAtmosphere")) return 200;
- if (!strcmp(typeOfLevel,"entireOcean")) return 201;
-
- if (!strcmp(typeOfLevel,"isobaricInPa")) return 210;
- if (!strcmp(typeOfLevel,"oceanWave")) return 211;
- if (!strcmp(typeOfLevel,"oceanMixedLayer")) return 212;
-
-
- fprintf(stderr,"levTypeInt: Level type NOT recognized %s\n",typeOfLevel);
- return 255;
+ if (!typeOfLevel || strlen(typeOfLevel) == 0) return 255;
+ if (!strcmp(typeOfLevel,"missing")) return 255;
+ if (!strcmp(typeOfLevel,"surface")) return 1;
+ if (!strcmp(typeOfLevel,"cloudBase")) return 2;
+ if (!strcmp(typeOfLevel,"cloudTop")) return 3;
+ if (!strcmp(typeOfLevel,"isothermZero")) return 4;
+ if (!strcmp(typeOfLevel,"adiabaticCondensation")) return 5;
+ if (!strcmp(typeOfLevel,"maxWind")) return 6;
+ if (!strcmp(typeOfLevel,"tropopause")) return 7;
+ if (!strcmp(typeOfLevel,"nominalTop")) return 8;
+ if (!strcmp(typeOfLevel,"seaBottom")) return 9;
+
+ if (!strcmp(typeOfLevel,"isobaricInhPa")) return 100;
+ if (!strcmp(typeOfLevel,"isobaricLayer")) return 101;
+ if (!strcmp(typeOfLevel,"meanSea")) return 102;
+ if (!strcmp(typeOfLevel,"heightAboveSea")) return 103;
+ if (!strcmp(typeOfLevel,"heightAboveSeaLayer")) return 104;
+ if (!strcmp(typeOfLevel,"heightAboveGround")) return 105;
+ if (!strcmp(typeOfLevel,"heightAboveGroundLayer")) return 106;
+ if (!strcmp(typeOfLevel,"sigma")) return 107;
+ if (!strcmp(typeOfLevel,"sigmaLayer")) return 108;
+ if (!strcmp(typeOfLevel,"hybrid")) return 109;
+ if (!strcmp(typeOfLevel,"hybridLayer")) return 110;
+
+ if (!strcmp(typeOfLevel,"depthBelowLand")) return 111;
+ if (!strcmp(typeOfLevel,"depthBelowLandLayer")) return 112;
+ if (!strcmp(typeOfLevel,"theta")) return 113;
+ if (!strcmp(typeOfLevel,"thetaLayer")) return 114;
+ if (!strcmp(typeOfLevel,"pressureFromGround")) return 115;
+ if (!strcmp(typeOfLevel,"pressureFromGroundLayer")) return 116;
+ if (!strcmp(typeOfLevel,"potentialVorticity")) return 117;
+ if (!strcmp(typeOfLevel,"isobaricLayerHighPrecision")) return 121;
+
+ if (!strcmp(typeOfLevel,"heightAboveGroundHighPrecision")) return 125;
+
+ if (!strcmp(typeOfLevel,"sigmaLayerHighPrecision")) return 128;
+ if (!strcmp(typeOfLevel,"isobaricLayerMixedPrecision")) return 141;
+ if (!strcmp(typeOfLevel,"depthBelowSea")) return 160;
+
+ if (!strcmp(typeOfLevel,"entireAtmosphere")) return 200;
+ if (!strcmp(typeOfLevel,"entireOcean")) return 201;
+
+ if (!strcmp(typeOfLevel,"isobaricInPa")) return 210;
+ if (!strcmp(typeOfLevel,"oceanWave")) return 211;
+ if (!strcmp(typeOfLevel,"oceanMixedLayer")) return 212;
+
+
+ fprintf(stderr,"levTypeInt: Level type NOT recognized %s\n",typeOfLevel);
+ return 255;
}
long describe_input_field(grib_handle* handle, long outputRepresentation){
- char *text = "";
- char *charv = "";
- size_t size;
-
- long rll_def[3000];
- long rg_def[3000];
- fortint intv[3000];
- fortfloat realv[4];
-
- char grid_type[80];
- int err = 0;
- int i = 0;
-
- const void* temp;
- double missingValue;
- long level = 0, levelType, parameter, accuracy, scanningMode, table,date;
- long bitmapPresent = 0;
- char *intf2_debug = getenv("INTF2_DEBUG");
- char *intf2_write = getenv("INTF2_WRITE_TO_FILE");
- long localNumber = 0;
- char typeOfLevel[50]={0,};
- size_t typeOfLevelLen=50;
- long niwe = 0, nins = 0;
- long matrixOfValues = 0;
- long centre = 0;
-
- if(!intf2_debug) intf2_debug=getenv("EMOSLIB_DEBUG");
-
- size = sizeof(grid_type);
- if(err = grib_get_string(handle,"typeOfGrid",grid_type,&size))
- {
- fprintf(stderr,"Cannot get gridType %s\n",grib_get_error_message(err));
- }
-
- if(intf2_debug)
- {
- printf("DESCRIBE_INPUT_FIELD:**************************** \n");
- printf("DESCRIBE_INPUT_FIELD: Input Grid Type - %s \n",grid_type);
- }
-
-
- /************************************************************/
- /* Describe input unpacked field for INTF */
-
- /* General features */
-
- if(err = int2_intin("form",intv,realv,"unpacked"))
- {
- fprintf(stderr,"Form setup INTIN failed %d\n",err);
- }
-
- /* Get Local Definition */
- err = grib_get_long(handle,"localDefinitionNumber",&localNumber);
- if (err == GRIB_SUCCESS)
- {
- intv[0] = localNumber;
- if(err = int2_intin("local",intv,realv,text))
- {
- fprintf(stderr,"localDefinitionNumber setup INTIN failed %d\n",err);
- }
- }
-
- if (localNumber == 4)
- {
- /* OCEAN */
- long gridCoordinate[1000];
- size_t o_length = 0;
- long oo_length = 0, vertCooDef = 0;
- long coordinate3Flag,coordinate4Flag,coordinate4OfFirstGridPoint,coordinate3OfFirstGridPoint;
- long coordinate4OfLastGridPoint,coordinate3OfLastGridPoint,iIncrement,jIncrement,flagForIrregularGridCoordinateList,flagForNormalOrStaggeredGrid;
- if(intf2_debug)
- {
- printf("DESCRIBE_INPUT_FIELD:******* OCEAN FIELD ********* \n");
- }
- /* starts with KSEC1(60) */
- if(err = grib_get_long(handle,"coordinate3Flag",&coordinate3Flag))
- fprintf(stderr,"Cannot get coordinate3Flag %s\n",grib_get_error_message(err));
- intv[0] = coordinate3Flag;
- if(err = grib_get_long(handle,"coordinate4Flag",&coordinate4Flag))
- fprintf(stderr,"Cannot get coordinate4Flag %s\n",grib_get_error_message(err));
- intv[1] = coordinate4Flag;
- if(err = grib_get_long(handle,"coordinate4OfFirstGridPoint",&coordinate4OfFirstGridPoint))
- fprintf(stderr,"Cannot get coordinate4OfFirstGridPoint %s\n",grib_get_error_message(err));
- intv[2] = coordinate4OfFirstGridPoint;
- if(err = grib_get_long(handle,"coordinate3OfFirstGridPoint",&coordinate3OfFirstGridPoint))
- fprintf(stderr,"Cannot get coordinate3OfFirstGridPoint %s\n",grib_get_error_message(err));
- intv[3] = coordinate3OfFirstGridPoint;
- if(err = grib_get_long(handle,"coordinate4OfLastGridPoint",&coordinate4OfLastGridPoint))
- fprintf(stderr,"Cannot get coordinate4OfLastGridPoint %s\n",grib_get_error_message(err));
- intv[4] = coordinate4OfLastGridPoint;
- if(err = grib_get_long(handle,"coordinate3OfLastGridPoint",&coordinate3OfLastGridPoint))
- fprintf(stderr,"Cannot get coordinate3OfLastGridPoint %s\n",grib_get_error_message(err));
- intv[5] = coordinate3OfLastGridPoint;
- if(err = grib_get_long(handle,"iIncrement",&iIncrement))
- fprintf(stderr,"Cannot get iIncrement %s\n",grib_get_error_message(err));
- if(intf2_debug)
- {
- printf("DESCRIBE_INPUT_FIELD:******* north = %d, east = %d , south = %d, west = %d ********* \n", coordinate4OfFirstGridPoint,coordinate3OfFirstGridPoint,coordinate4OfLastGridPoint,coordinate3OfLastGridPoint);
- }
- intv[6] = iIncrement;
- if(err = grib_get_long(handle,"jIncrement",&jIncrement))
- fprintf(stderr,"Cannot get jIncrement %s\n",grib_get_error_message(err));
- intv[7] = jIncrement;
- if(err = grib_get_long(handle,"flagForIrregularGridCoordinateList",&flagForIrregularGridCoordinateList))
- fprintf(stderr,"Cannot get flagForIrregularGridCoordinateList %s\n",grib_get_error_message(err));
- intv[8] = flagForIrregularGridCoordinateList;
- if(err = grib_get_long(handle,"flagForNormalOrStaggeredGrid",&flagForNormalOrStaggeredGrid))
- fprintf(stderr,"Cannot get flagForNormalOrStaggeredGrid %s\n",grib_get_error_message(err));
- intv[9] = flagForNormalOrStaggeredGrid;
-
- if(err = grib_get_long(handle,"numberInTheGridCoordinateList",&oo_length))
- fprintf(stderr,"Cannot get numberInTheGridCoordinateList %s\n",grib_get_error_message(err));
- intv[10] = oo_length;
- if(err = grib_get_long(handle,"verticalCoordinateDefinition",&vertCooDef))
- fprintf(stderr,"Cannot get verticalCoordinateDefinition %s\n",grib_get_error_message(err));
- intv[11] = vertCooDef;
-
- /* INTIN for ocean */
- if(err = int2_intin("ocean",intv,realv,text))
- {
- fprintf(stderr,"Ocean setup INTIN failed %d\n",err);
- }
-
- /* if (coordinate3Flag != 3 || coordinate4Flag != 4) { */
- /* if (coordinate3Flag == 3 && coordinate4Flag == 4) { */
- /* Tim and Sinisa */
- if(err = grib_get_size(handle,"gridCoordinate",&o_length))
- {
- fprintf(stderr,"Cannot get size of pl %s\n",grib_get_error_message(err));
- }
+ char *text = "";
+ size_t size;
+
+ long rll_def[3000];
+ long rg_def[3000];
+ fortint intv[3000];
+ fortfloat realv[4];
+
+ char grid_type[80];
+ char grid_name[80];
+ int err = 0;
+ int i = 0;
+
+ const void* temp;
+ double missingValue;
+ long level = 0;
+ long levelType;
+ long parameter;
+ long accuracy;
+ long scanningMode;
+ long table;
+ long date;
+ long bitmapPresent = 0;
+ char *intf2_debug = getenv("INTF2_DEBUG");
+ long localNumber = 0;
+ char typeOfLevel[50]={0,};
+ size_t typeOfLevelLen=50;
+ long niwe = 0;
+ long nins = 0;
+ long matrixOfValues = 0;
+ long centre = 0;
+
+ if(!intf2_debug) intf2_debug=getenv("EMOSLIB_DEBUG");
+
+ size = sizeof(grid_type);
+ if ((err = grib_get_string(handle,"typeOfGrid",grid_type,&size)))
+ {
+ fprintf(stderr,"Cannot get gridType %s\n",grib_get_error_message(err));
+ }
+
+ if(intf2_debug)
+ {
+ printf("DESCRIBE_INPUT_FIELD:**************************** \n");
+ printf("DESCRIBE_INPUT_FIELD: Input Grid Type - %s \n",grid_type);
+ }
+
+
+ /************************************************************/
+ /* Describe input unpacked field for INTF */
+
+ /* General features */
+
+ if ((err = int2_intin("form",intv,realv,"unpacked")))
+ {
+ fprintf(stderr,"Form setup INTIN failed %d\n",err);
+ }
+
+ /* Get Local Definition */
+ err = grib_get_long(handle,"localDefinitionNumber",&localNumber);
+ if (err == GRIB_SUCCESS)
+ {
+ intv[0] = localNumber;
+ if ((err = int2_intin("local",intv,realv,text)))
+ {
+ fprintf(stderr,"localDefinitionNumber setup INTIN failed %d\n",err);
+ }
+ }
+
+ if (localNumber == 4)
+ {
+ /* OCEAN */
+ long gridCoordinate[1000];
+ size_t o_length = 0;
+ long oo_length = 0, vertCooDef = 0;
+ long coordinate3Flag,coordinate4Flag,coordinate4OfFirstGridPoint,coordinate3OfFirstGridPoint;
+ long coordinate4OfLastGridPoint,coordinate3OfLastGridPoint,iIncrement,jIncrement,flagForIrregularGridCoordinateList,flagForNormalOrStaggeredGrid;
+ if(intf2_debug)
+ {
+ printf("DESCRIBE_INPUT_FIELD:******* OCEAN FIELD ********* \n");
+ }
+ /* starts with KSEC1(60) */
+ if ((err = grib_get_long(handle,"coordinate3Flag",&coordinate3Flag)))
+ fprintf(stderr,"Cannot get coordinate3Flag %s\n",grib_get_error_message(err));
+ intv[0] = coordinate3Flag;
+ if ((err = grib_get_long(handle,"coordinate4Flag",&coordinate4Flag)))
+ fprintf(stderr,"Cannot get coordinate4Flag %s\n",grib_get_error_message(err));
+ intv[1] = coordinate4Flag;
+ if ((err = grib_get_long(handle,"coordinate4OfFirstGridPoint",&coordinate4OfFirstGridPoint)))
+ fprintf(stderr,"Cannot get coordinate4OfFirstGridPoint %s\n",grib_get_error_message(err));
+ intv[2] = coordinate4OfFirstGridPoint;
+ if ((err = grib_get_long(handle,"coordinate3OfFirstGridPoint",&coordinate3OfFirstGridPoint)))
+ fprintf(stderr,"Cannot get coordinate3OfFirstGridPoint %s\n",grib_get_error_message(err));
+ intv[3] = coordinate3OfFirstGridPoint;
+ if ((err = grib_get_long(handle,"coordinate4OfLastGridPoint",&coordinate4OfLastGridPoint)))
+ fprintf(stderr,"Cannot get coordinate4OfLastGridPoint %s\n",grib_get_error_message(err));
+ intv[4] = coordinate4OfLastGridPoint;
+ if ((err = grib_get_long(handle,"coordinate3OfLastGridPoint",&coordinate3OfLastGridPoint)))
+ fprintf(stderr,"Cannot get coordinate3OfLastGridPoint %s\n",grib_get_error_message(err));
+ intv[5] = coordinate3OfLastGridPoint;
+ if ((err = grib_get_long(handle,"iIncrement",&iIncrement)))
+ fprintf(stderr,"Cannot get iIncrement %s\n",grib_get_error_message(err));
+ if(intf2_debug)
+ {
+ printf("DESCRIBE_INPUT_FIELD:******* north = %ld, east = %ld , south = %ld, west = %ld ********* \n", coordinate4OfFirstGridPoint,coordinate3OfFirstGridPoint,coordinate4OfLastGridPoint,coordinate3OfLastGridPoint);
+ }
+ intv[6] = iIncrement;
+ if ((err = grib_get_long(handle,"jIncrement",&jIncrement)))
+ fprintf(stderr,"Cannot get jIncrement %s\n",grib_get_error_message(err));
+ intv[7] = jIncrement;
+ if ((err = grib_get_long(handle,"flagForIrregularGridCoordinateList",&flagForIrregularGridCoordinateList)))
+ fprintf(stderr,"Cannot get flagForIrregularGridCoordinateList %s\n",grib_get_error_message(err));
+ intv[8] = flagForIrregularGridCoordinateList;
+ if ((err = grib_get_long(handle,"flagForNormalOrStaggeredGrid",&flagForNormalOrStaggeredGrid)))
+ fprintf(stderr,"Cannot get flagForNormalOrStaggeredGrid %s\n",grib_get_error_message(err));
+ intv[9] = flagForNormalOrStaggeredGrid;
+
+ if ((err = grib_get_long(handle,"numberInTheGridCoordinateList",&oo_length)))
+ fprintf(stderr,"Cannot get numberInTheGridCoordinateList %s\n",grib_get_error_message(err));
+ intv[10] = oo_length;
+ if ((err = grib_get_long(handle,"verticalCoordinateDefinition",&vertCooDef)))
+ fprintf(stderr,"Cannot get verticalCoordinateDefinition %s\n",grib_get_error_message(err));
+ intv[11] = vertCooDef;
+
+ /* INTIN for ocean */
+ if ((err = int2_intin("ocean",intv,realv,text)))
+ {
+ fprintf(stderr,"Ocean setup INTIN failed %d\n",err);
+ }
+
+ /* if (coordinate3Flag != 3 || coordinate4Flag != 4) { */
+ /* if (coordinate3Flag == 3 && coordinate4Flag == 4) { */
+ /* Tim and Sinisa */
+ if ((err = grib_get_size(handle,"gridCoordinate",&o_length)))
+ {
+ fprintf(stderr,"Cannot get size of pl %s\n",grib_get_error_message(err));
+ }
/* Just for Horizontal (lat/long) field interpolation */
- if(err = grib_get_long_array(handle,"gridCoordinate",gridCoordinate,&o_length))
- fprintf(stderr,"Cannot get gridCoordinate %s\n",grib_get_error_message(err));
-
- if(intf2_debug)
- printf("DESCRIBE_INPUT_FIELD: o_length %d \n", o_length);
-
- for( i = 0; i< o_length ; i++)
- {
- intv[i] = gridCoordinate[i];
- /* printf("DESCRIBE_INPUT_FIELD: ocean horizontal %d : %d \n", i,intv[i]); */
- }
- /* INTIN for ocean gridCoordinate */
- if(err = int2_intin("coord_ocean",intv,realv,text))
+ if ((err = grib_get_long_array(handle,"gridCoordinate",gridCoordinate,&o_length)))
+ fprintf(stderr,"Cannot get gridCoordinate %s\n",grib_get_error_message(err));
+
+ if(intf2_debug)
+ printf("DESCRIBE_INPUT_FIELD: o_length %lu \n", o_length);
+
+ for( i = 0; i< o_length; i++)
+ {
+ intv[i] = gridCoordinate[i];
+ /* printf("DESCRIBE_INPUT_FIELD: ocean horizontal %d : %d \n", i,intv[i]); */
+ }
+ /* INTIN for ocean gridCoordinate */
+ if ((err = int2_intin("coord_ocean",intv,realv,text)))
+ {
+ fprintf(stderr,"Ocean setup INTIN failed %d\n",err);
+ }
+ /* } */
+ err = grib_get_double(handle,"missingValue",&missingValue);
+
+ if (err != GRIB_SUCCESS && err != GRIB_NOT_FOUND) {
+ fprintf(stderr,"Missing value for OCEAN %s\n",grib_get_error_message(err));
+ }
+ if(intf2_debug)
+ printf("DESCRIBE_INPUT_FIELD: OCEAN Field Missing Value %f \n",missingValue);
+ if(err == GRIB_SUCCESS)
+ {
+ realv[0] = missingValue;
+ text = "yes";
+ if ((err = int2_intin("missingvalue",intv,realv,text)))
{
- fprintf(stderr,"Ocean setup INTIN failed %d\n",err);
+ fprintf(stderr,"Missing Value setup INTIN failed %d\n",err);
}
- /* } */
- err = grib_get_double(handle,"missingValue",&missingValue);
-
- if (err != GRIB_SUCCESS && err != GRIB_NOT_FOUND) {
- fprintf(stderr,"Missing value for OCEAN %s\n",grib_get_error_message(err));
- }
- if(intf2_debug)
- printf("DESCRIBE_INPUT_FIELD: OCEAN Field Missing Value %f \n",missingValue);
- if(err == GRIB_SUCCESS)
- {
- realv[0] = missingValue;
- text = "yes";
- if(err = int2_intin("missingvalue",intv,realv,text))
- {
- fprintf(stderr,"Missing Value setup INTIN failed %f\n",err);
- }
- }
- }
-
-
- /* get Date */
- if(err = grib_get_long(handle,"dataDate",&date))
- {
- fprintf(stderr,"Cannot get date %s\n",grib_get_error_message(err));
- }
- intv[0] = date;
- if(err = int2_intin("date",intv,realv,text))
- {
- fprintf(stderr,"Date setup INTIN failed %d\n",err);
- }
-
- /* get Level Type */
- if((err = grib_get_string(handle,"typeOfLevel",typeOfLevel,&typeOfLevelLen))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get Level Type %s\n",grib_get_error_message(err));
- return err;
- }
-
- levelType=levTypeInt(typeOfLevel);
- intv[0] = levelType;
- if(err = int2_intin("levtype",intv,realv,text))
- {
- fprintf(stderr,"Level Type setup INTIN failed %d\n",err);
- }
- /* printf("Level Type setup INTIN %d\n",levelType); */
- /* get Level */
- if(levelType != 255){
- if((err = grib_get_long(handle,"level",&level))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get Level %s\n",grib_get_error_message(err));
- return err;
- }
-
- intv[0] = level;
- if(err = int2_intin("level",intv,realv,text))
- {
- fprintf(stderr,"Level setup INTIN failed %d\n",err);
- }
- }
- /* } */
-
- /* LSM */
- if( levelType == 100 || levelType == 108 || levelType == 109 || levelType == 255){
- text = "no";
- }
+ }
+ }
+
+
+ /* get Date */
+ if ((err = grib_get_long(handle,"dataDate",&date)))
+ {
+ fprintf(stderr,"Cannot get date %s\n",grib_get_error_message(err));
+ }
+ intv[0] = date;
+ if ((err = int2_intin("date",intv,realv,text)))
+ {
+ fprintf(stderr,"Date setup INTIN failed %d\n",err);
+ }
+
+ /* get Level Type */
+ if((err = grib_get_string(handle,"typeOfLevel",typeOfLevel,&typeOfLevelLen))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get Level Type %s\n",grib_get_error_message(err));
+ return err;
+ }
+
+ levelType=levTypeInt(typeOfLevel);
+ intv[0] = levelType;
+ if ((err = int2_intin("levtype",intv,realv,text)))
+ {
+ fprintf(stderr,"Level Type setup INTIN failed %d\n",err);
+ }
+ /* printf("Level Type setup INTIN %d\n",levelType); */
+ /* get Level */
+ if(levelType != 255){
+ if((err = grib_get_long(handle,"level",&level))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get Level %s\n",grib_get_error_message(err));
+ return err;
+ }
+
+ intv[0] = level;
+ if ((err = int2_intin("level",intv,realv,text)))
+ {
+ fprintf(stderr,"Level setup INTIN failed %d\n",err);
+ }
+ }
+ /* } */
+
+ /* LSM */
+ if( levelType == 100 || levelType == 108 || levelType == 109 || levelType == 255){
+ text = "no";
+ }
+ else
+ text = "yes";
+ if ((err = int2_intin("lsmset",intv,realv,text)))
+ {
+ fprintf(stderr,"LSM setup INTIN failed %d\n",err);
+ }
+
+ /* get Parameter Number */
+ /* if(err = grib_get_long(handle,"param",¶meter)) */
+ if ((err = grib_get_long(handle,"paramId",¶meter)))
+ {
+ if(getenv("INTF2_IGNORE_PARAM") != 0)
+ {
+ parameter = 1;
+ table = 1;
+ }
+ else
+ fprintf(stderr,"Cannot Parameter %s\n",grib_get_error_message(err));
+ }
+ if(intf2_debug)
+ {
+ printf("DESCRIBE_INPUT_FIELD: Parameter - %ld\n",parameter);
+ }
+
+ if(parameter > 1000)
+ {
+ table = parameter / 1000;
+ parameter = parameter % 1000;
+ }
else
- text = "yes";
- if(err = int2_intin("lsmset",intv,realv,text))
- {
- fprintf(stderr,"LSM setup INTIN failed %d\n",err);
- }
-
- /* get Parameter Number */
- /* if(err = grib_get_long(handle,"param",¶meter)) */
- if(err = grib_get_long(handle,"paramId",¶meter))
- {
- if(getenv("INTF2_IGNORE_PARAM") != 0)
- {
- parameter = 1;
- table = 1;
- }
- else
- fprintf(stderr,"Cannot Parameter %s\n",grib_get_error_message(err));
- }
- if(intf2_debug)
- {
- printf("DESCRIBE_INPUT_FIELD: Parameter - %d \n",parameter);
- }
-
- if(parameter > 1000)
- {
- table = parameter / 1000;
- parameter = parameter % 1000;
- }
- else
- table = 128;
-
- intv[0] = table;
- if(err = int2_intin("table",intv,realv,text))
- {
- fprintf(stderr,"Table Number setup INTIN failed %d\n",err);
- }
-
- intv[0] = parameter;
- if(err = int2_intin("parameter",intv,realv,text))
- {
- fprintf(stderr,"Parameter Number setup INTIN failed %d\n",err);
- }
+ table = 128;
+
+ intv[0] = table;
+ if ((err = int2_intin("table",intv,realv,text)))
+ {
+ fprintf(stderr,"Table Number setup INTIN failed %d\n",err);
+ }
+
+ intv[0] = parameter;
+ if ((err = int2_intin("parameter",intv,realv,text)))
+ {
+ fprintf(stderr,"Parameter Number setup INTIN failed %d\n",err);
+ }
/* If bitmap Present */
- if((err = grib_get_long(handle,"bitmapPresent",&bitmapPresent))!= GRIB_SUCCESS)
- {
+ if ((err = grib_get_long(handle,"bitmapPresent",&bitmapPresent))!= GRIB_SUCCESS)
+ {
fprintf(stderr,"Cannot get bitmapPresent %s\n",grib_get_error_message(err));
- return err;
- }
+ return err;
+ }
/* There are exeptions for a few centres */
- if(err = grib_get_long(handle,"centre",¢re))
- {
- fprintf(stderr,"Cannot get centre %s\n",grib_get_error_message(err));
- }
- if(levelType == 100 && parameter == 129)
- bitmapPresent = 0;
-
- /* if(table == 128 && (parameter == 31 || parameter == 130)){ */
-/* Live emoslib to use its own values
-Can Not set allways external missing value in case bitmap is Present because of some inconsistensy in LIBEMOS
-*/
- if(bitmapPresent) {
- /* Try to play in a same style as Libemos
- missingValue = -2147483647.0;
- err = grib_set_double(handle,"missingValue",missingValue);
- */
-
- err = grib_get_double(handle,"missingValue",&missingValue);
-
- if (err != GRIB_SUCCESS && err != GRIB_NOT_FOUND) {
- fprintf(stderr,"Missing value %s\n",grib_get_error_message(err));
- }
- if(intf2_debug)
- printf("DESCRIBE_INPUT_FIELD: BITMAP PRESENT Missing Value %f \n",missingValue);
- if(err == GRIB_SUCCESS) {
- realv[0] = missingValue;
- text = "yes";
- if(err = int2_intin("missingval",intv,realv,text)) {
- fprintf(stderr,"Missing Value setup INTIN failed %f\n",err);
- }
- }
- }
-
-
- /* Default Accuracy */
- if((err = grib_get_long(handle,"bitsPerValue",&accuracy))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get accuracy %s\n",grib_get_error_message(err));
- return err;
- }
- intv[0] = accuracy;
- if(err = int2_intin("accuracy",intv,realv,text))
- {
- fprintf(stderr,"Accuracy setup INTIN failed %d\n",err);
- }
- if(intf2_debug)
- {
- printf("DESCRIBE_INPUT_FIELD: Input Accuracy %d \n",accuracy);
- }
-
-
- /* Particular Input fields */
-
- /* Spherical harmonics */
- if(strcmp(grid_type,"sh") == 0)
- {
- long truncation;
- /* get Truncation */
- if((err = grib_get_long(handle,"pentagonalResolutionParameterJ",&truncation))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get Truncation %s\n",grib_get_error_message(err));
- return err;
- }
- intv[0] = truncation;
- if(err = int2_intin("truncation",intv,realv,text))
- {
- fprintf(stderr,"Truncation setup INTIN failed %d\n",err);
- }
- if(outputRepresentation)
- {
- if(err = int2_intout("truncation",intv,realv,text))
- {
- fprintf(stderr,"Truncation setup INTOUT failed %d\n",err);
- }
- }
- }
-
-
- /* Gaussian grid */
- if(strcmp(grid_type,"regular_gg") == 0 || strcmp(grid_type,"reduced_gg") == 0)
- {
- long gaussianType, gaussianNumber ;
-
-
- /* Gaussian Grid Number */
- if((err = grib_get_long(handle,"numberOfParallelsBetweenAPoleAndTheEquator",&gaussianNumber))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get gaussian Number %s\n",grib_get_error_message(err));
- return err;
- }
- intv[0] = gaussianNumber;
-
- /* Regular or Reduced */
- if(strcmp(grid_type,"reduced_gg") == 0)
- {
- size_t rg_length = 0;
- if(err = int2_intin("reduced",intv,realv,text))
- {
- fprintf(stderr,"Reduced Gaussian setup failed %d\n",err);
- }
- if(outputRepresentation) {
- if(err = int2_intout("reduced",intv,realv,text)) {
- fprintf(stderr,"Reduced Gaussian setup failed %d\n",err);
- }
- }
- if(err = grib_get_size(handle,"pl",&rg_length)) {
- fprintf(stderr,"reduced_gg Cannot get size of pl %s\n",grib_get_error_message(err));
- }
- if(intf2_debug) {
- printf("DESCRIBE_INPUT_FIELD: Reduced Gaussian north-south number of points %d\n",rg_length);
- }
-
- if(err = grib_get_long_array(handle,"pl",rg_def,&rg_length)) {
- fprintf(stderr,"Cannot get pl %s\n",grib_get_error_message(err));
- }
- for( i = 0; i< rg_length ; i++) {
- intv[i] = rg_def[i];
- }
- if(err = int2_intin("ga_pnts",intv,realv,text)) {
- fprintf(stderr,"Reduced Gaussian setup failed %d\n",err);
- }
- }
- else
- {
- if(err = int2_intin("regular",intv,realv,text)) {
- fprintf(stderr,"Regular Gaussian setup failed %d\n",err);
- }
- if(outputRepresentation) {
- if(err = int2_intout("regular",intv,realv,text)) {
- fprintf(stderr,"Regular Gaussian setup failed %d\n",err);
- }
- }
- }
-
- }
- /* Shall missing value to be used */
- /* missingval because can not be applied in Emos lib everywhere... */
-
- /* Pick up area if the field is lat-lon or gaussian, scanning mode and number of points ns we */
- if(strcmp(grid_type,"regular_ll") == 0 || strcmp(grid_type,"regular_gg") == 0 || strcmp(grid_type,"reduced_gg") == 0 || strcmp(grid_type,"reduced_ll") == 0)
- {
- double latitudeOfFirstGridPoint, longitudeOfFirstGridPoint, latitudeOfLastGridPoint, longitudeOfLastGridPoint;
- if((err = grib_get_double(handle,"latitudeOfFirstGridPointInDegrees",&latitudeOfFirstGridPoint))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get latitudeOfFirstGridPointInDegrees %s\n",grib_get_error_message(err));
- return err;
- }
- if((err = grib_get_double(handle,"longitudeOfFirstGridPointInDegrees",&longitudeOfFirstGridPoint))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get longitudeOfFirstGridPointInDegrees %s\n",grib_get_error_message(err));
- return err;
- }
- if((err = grib_get_double(handle,"latitudeOfLastGridPointInDegrees",&latitudeOfLastGridPoint))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get latitudeOfLastGridPointInDegrees %s\n",grib_get_error_message(err));
- return err;
- }
- if((err = grib_get_double(handle,"longitudeOfLastGridPointInDegrees",&longitudeOfLastGridPoint))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get longitudeOfLastGridPointInDegrees %s\n",grib_get_error_message(err));
- return err;
- }
-
- realv[0] = latitudeOfFirstGridPoint;
- realv[1] = longitudeOfFirstGridPoint;
- realv[2] = latitudeOfLastGridPoint;
- realv[3] = longitudeOfLastGridPoint;
- if(intf2_debug)
- {
- printf("DESCRIBE_INPUT_FIELD: Input AREA %f %f %f %f \n",latitudeOfFirstGridPoint,longitudeOfFirstGridPoint,latitudeOfLastGridPoint,longitudeOfLastGridPoint);
- }
-
- if(err = int2_intin("area",intv,realv,text))
- {
- fprintf(stderr,"Area setup INTIN failed %d\n",err);
- }
- /* Scanning mode */
- if((err = grib_get_long(handle,"jScansPositively",&scanningMode))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get scanning mode %s\n",grib_get_error_message(err));
- return err;
- }
- if(scanningMode)
- scanningMode = 64;
- if(intf2_debug)
- {
- printf("DESCRIBE_INPUT_FIELD: Input Scanning Mode - %d \n",scanningMode);
- }
- intv[0] = scanningMode;
- if(err = int2_intin("scan",intv,realv,text))
- {
- fprintf(stderr,"Scanning mode setup INTIN failed %d\n",err);
- }
- /* number Of Points Along A Parallel */
- if((err = grib_get_long(handle,"numberOfPointsAlongAParallel",&niwe))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get numberOfPointsAlongAParallel %s\n",grib_get_error_message(err));
- return err;
- }
- intv[0] = niwe;
- /* number Of Points Along A Meridian */
- if((err = grib_get_long(handle,"numberOfPointsAlongAMeridian",&nins))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get numberOfPointsAlongAMeridian %s\n",grib_get_error_message(err));
- return err;
- }
- intv[1] = nins;
- if(err = int2_intin("npts",intv,realv,text))
- {
- fprintf(stderr,"Number of points INTIN failed %d\n",err);
- }
-
- }
-
- /* Lat-Lon grid */
- if(strcmp(grid_type,"regular_ll") == 0 || strcmp(grid_type,"reduced_ll") == 0)
- {
- double iDirectionIncrement = 0, jDirectionIncrement = 0;
- size_t rll_length = 0;
-
- if(intf2_debug) {
- printf("DESCRIBE_INPUT_FIELD: Input Field - %s \n",grid_type);
- }
- /* I Direction Increment */
- if((err = grib_get_double(handle,"iDirectionIncrementInDegrees",&iDirectionIncrement))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get iDirectionIncrementInDegrees %s\n",grib_get_error_message(err));
- return err;
- }
- /* J Direction Increment */
- if((err = grib_get_double(handle,"jDirectionIncrementInDegrees",&jDirectionIncrement))!= GRIB_SUCCESS)
- {
- fprintf(stderr,"Cannot get jDirectionIncrementInDegrees %s\n",grib_get_error_message(err));
- return err;
- }
-
- realv[0] = iDirectionIncrement;
- realv[1] = jDirectionIncrement;
-
- if(strcmp(grid_type,"regular_ll") == 0) {
- if(err = int2_intin("grid",intv,realv,text))
- {
- fprintf(stderr,"Grid setup INTIN failed %d\n",err);
- }
- /* Set output representation if it is not set */
- if(outputRepresentation)
- {
- if(err = int2_intout("grid",intv,realv,text))
- {
- fprintf(stderr,"Grid setup INTOUT failed %d\n",err);
- }
- }
- }
- if(strcmp(grid_type,"reduced_ll") == 0) {
- if(outputRepresentation) {
- if(err = int2_intout("red_latlon",intv,realv,text)) {
- fprintf(stderr,"intout Reduced latlon - wave setup failed %d\n",err);
- }
- }
- }
-
- /* number Of Points Along A Parallel */
- /* number Of Points Along A Meridian */
- /*
- if(err = grib_get_long(handle,"numberOfPointsAlongAParallel",&niwe))
- {
- fprintf(stderr,"Cannot get numberOfPointsAlongAParallel %s\n",grib_get_error_message(err));
- }
- intv[0] = niwe;
- if(err = grib_get_long(handle,"numberOfPointsAlongAMeridian",&nins))
- {
- fprintf(stderr,"Cannot get numberOfPointsAlongAMeridian %s\n",grib_get_error_message(err));
- }
- intv[1] = nins;
- if(err = int2_intin("npts",intv,realv,text))
- {
- fprintf(stderr,"Number of points INTIN failed %d\n",err);
- }
- */
-
- /* If Reduced */
+ if ((err = grib_get_long(handle,"centre",¢re)))
+ {
+ fprintf(stderr,"Cannot get centre %s\n",grib_get_error_message(err));
+ }
+ if(levelType == 100 && parameter == 129)
+ bitmapPresent = 0;
+
+ /* if(table == 128 && (parameter == 31 || parameter == 130)){ */
+ /* Live emoslib to use its own values
+ * Can Not set allways external missing value in case bitmap is Present because of some inconsistensy in LIBEMOS
+ */
+ if(bitmapPresent) {
+ /* Try to play in a same style as Libemos
+ missingValue = -2147483647.0;
+ err = grib_set_double(handle,"missingValue",missingValue);
+ */
+
+ err = grib_get_double(handle,"missingValue",&missingValue);
+
+ if (err != GRIB_SUCCESS && err != GRIB_NOT_FOUND) {
+ fprintf(stderr,"Missing value %s\n",grib_get_error_message(err));
+ }
+ if(intf2_debug)
+ printf("DESCRIBE_INPUT_FIELD: BITMAP PRESENT Missing Value %f \n",missingValue);
+ if(err == GRIB_SUCCESS) {
+ realv[0] = missingValue;
+ text = "yes";
+ if ((err = int2_intin("missingval",intv,realv,text))) {
+ fprintf(stderr,"Missing Value setup INTIN failed %d\n",err);
+ }
+ }
+ }
+
+
+ /* Default Accuracy */
+ if((err = grib_get_long(handle,"bitsPerValue",&accuracy))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get accuracy %s\n",grib_get_error_message(err));
+ return err;
+ }
+ intv[0] = accuracy;
+ if ((err = int2_intin("accuracy",intv,realv,text)))
+ {
+ fprintf(stderr,"Accuracy setup INTIN failed %d\n",err);
+ }
+ if(intf2_debug)
+ {
+ printf("DESCRIBE_INPUT_FIELD: Input Accuracy %ld\n",accuracy);
+ }
+
+
+ /* Particular Input fields */
+
+ /* Spherical harmonics */
+ if(strcmp(grid_type,"sh") == 0)
+ {
+ long truncation;
+ /* get Truncation */
+ if((err = grib_get_long(handle,"pentagonalResolutionParameterJ",&truncation))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get Truncation %s\n",grib_get_error_message(err));
+ return err;
+ }
+ intv[0] = truncation;
+ if ((err = int2_intin("truncation",intv,realv,text)))
+ {
+ fprintf(stderr,"Truncation setup INTIN failed %d\n",err);
+ }
+ if(outputRepresentation)
+ {
+ if ((err = int2_intout("truncation",intv,realv,text)))
+ {
+ fprintf(stderr,"Truncation setup INTOUT failed %d\n",err);
+ }
+ }
+ }
+
+
+ /* Gaussian grid */
+ size = sizeof(grid_name);
+ if ( ( !strcmp(grid_type,"regular_gg") || !strcmp(grid_type,"reduced_gg") )
+ && ( !grib_get_string(handle,"gridName",grid_name,&size) )
+ && ( strlen(&grid_name[0]) ) )
+ {
+
+ /* Gaussian gridname */
+ if ((err = int2_intin("gridname",intv,realv,&grid_name[0])))
+ {
+ fprintf(stderr,"Gaussian grid INTIN(\"gridname\") failed %d\n",err);
+ }
+ if ( (outputRepresentation)
+ && (err = int2_intout("gridname",intv,realv,&grid_name[0])) )
+ {
+ fprintf(stderr,"Gaussian grid INTOUT(\"gridname\") failed %d\n",err);
+ }
+
+ }
+ else if(!strcmp(grid_type,"regular_gg") || !strcmp(grid_type,"reduced_gg"))
+ {
+
+ long gaussianNumber;
+
+
+ /* Gaussian Grid Number */
+ if((err = grib_get_long(handle,"numberOfParallelsBetweenAPoleAndTheEquator",&gaussianNumber))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get gaussian Number %s\n",grib_get_error_message(err));
+ return err;
+ }
+ intv[0] = gaussianNumber;
+
+ /* Regular or Reduced */
+ if(strcmp(grid_type,"reduced_gg") == 0)
+ {
+ size_t rg_length = 0;
+ if ((err = int2_intin("reduced",intv,realv,text)))
+ {
+ fprintf(stderr,"Reduced Gaussian setup failed %d\n",err);
+ }
+ if(outputRepresentation) {
+ if ((err = int2_intout("reduced",intv,realv,text))) {
+ fprintf(stderr,"Reduced Gaussian setup failed %d\n",err);
+ }
+ }
+ if ((err = grib_get_size(handle,"pl",&rg_length))) {
+ fprintf(stderr,"reduced_gg Cannot get size of pl %s\n",grib_get_error_message(err));
+ }
+ if(intf2_debug) {
+ printf("DESCRIBE_INPUT_FIELD: Reduced Gaussian north-south number of points %lu\n",rg_length);
+ }
+
+ if ((err = grib_get_long_array(handle,"pl",rg_def,&rg_length))) {
+ fprintf(stderr,"Cannot get pl %s\n",grib_get_error_message(err));
+ }
+ for( i = 0; i< rg_length; i++) {
+ intv[i] = rg_def[i];
+ }
+ if ((err = int2_intin("ga_pnts",intv,realv,text))) {
+ fprintf(stderr,"Reduced Gaussian setup failed %d\n",err);
+ }
+ }
+ else
+ {
+ if ((err = int2_intin("regular",intv,realv,text))) {
+ fprintf(stderr,"Regular Gaussian setup failed %d\n",err);
+ }
+ if(outputRepresentation) {
+ if ((err = int2_intout("regular",intv,realv,text))) {
+ fprintf(stderr,"Regular Gaussian setup failed %d\n",err);
+ }
+ }
+ }
+
+ }
+ /* Shall missing value to be used */
+ /* missingval because can not be applied in Emos lib everywhere... */
+
+ /* Pick up area if the field is lat-lon or gaussian, scanning mode and number of points ns we */
+ if(strcmp(grid_type,"regular_ll") == 0 || strcmp(grid_type,"regular_gg") == 0 || strcmp(grid_type,"reduced_gg") == 0 || strcmp(grid_type,"reduced_ll") == 0)
+ {
+ double latitudeOfFirstGridPoint, longitudeOfFirstGridPoint, latitudeOfLastGridPoint, longitudeOfLastGridPoint;
+ if((err = grib_get_double(handle,"latitudeOfFirstGridPointInDegrees",&latitudeOfFirstGridPoint))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get latitudeOfFirstGridPointInDegrees %s\n",grib_get_error_message(err));
+ return err;
+ }
+ if((err = grib_get_double(handle,"longitudeOfFirstGridPointInDegrees",&longitudeOfFirstGridPoint))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get longitudeOfFirstGridPointInDegrees %s\n",grib_get_error_message(err));
+ return err;
+ }
+ if((err = grib_get_double(handle,"latitudeOfLastGridPointInDegrees",&latitudeOfLastGridPoint))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get latitudeOfLastGridPointInDegrees %s\n",grib_get_error_message(err));
+ return err;
+ }
+ if((err = grib_get_double(handle,"longitudeOfLastGridPointInDegrees",&longitudeOfLastGridPoint))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get longitudeOfLastGridPointInDegrees %s\n",grib_get_error_message(err));
+ return err;
+ }
+
+ realv[0] = latitudeOfFirstGridPoint;
+ realv[1] = longitudeOfFirstGridPoint;
+ realv[2] = latitudeOfLastGridPoint;
+ realv[3] = longitudeOfLastGridPoint;
+ if(intf2_debug)
+ {
+ printf("DESCRIBE_INPUT_FIELD: Input AREA %f %f %f %f \n",latitudeOfFirstGridPoint,longitudeOfFirstGridPoint,latitudeOfLastGridPoint,longitudeOfLastGridPoint);
+ }
+
+ if ((err = int2_intin("area",intv,realv,text)))
+ {
+ fprintf(stderr,"Area setup INTIN failed %d\n",err);
+ }
+ /* Scanning mode */
+ if((err = grib_get_long(handle,"jScansPositively",&scanningMode))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get scanning mode %s\n",grib_get_error_message(err));
+ return err;
+ }
+ if(scanningMode)
+ scanningMode = 64;
+ if(intf2_debug)
+ {
+ printf("DESCRIBE_INPUT_FIELD: Input Scanning Mode - %ld\n",scanningMode);
+ }
+ intv[0] = scanningMode;
+ if ((err = int2_intin("scan",intv,realv,text)))
+ {
+ fprintf(stderr,"Scanning mode setup INTIN failed %d\n",err);
+ }
+ /* number Of Points Along A Parallel */
+ if((err = grib_get_long(handle,"numberOfPointsAlongAParallel",&niwe))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get numberOfPointsAlongAParallel %s\n",grib_get_error_message(err));
+ return err;
+ }
+ intv[0] = niwe;
+ /* number Of Points Along A Meridian */
+ if((err = grib_get_long(handle,"numberOfPointsAlongAMeridian",&nins))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get numberOfPointsAlongAMeridian %s\n",grib_get_error_message(err));
+ return err;
+ }
+ intv[1] = nins;
+ if ((err = int2_intin("npts",intv,realv,text)))
+ {
+ fprintf(stderr,"Number of points INTIN failed %d\n",err);
+ }
+
+ }
+
+ /* Lat-Lon grid */
+ if(strcmp(grid_type,"regular_ll") == 0 || strcmp(grid_type,"reduced_ll") == 0)
+ {
+ double iDirectionIncrement = 0, jDirectionIncrement = 0;
+ size_t rll_length = 0;
+
+ if(intf2_debug) {
+ printf("DESCRIBE_INPUT_FIELD: Input Field - %s \n",grid_type);
+ }
+ /* I Direction Increment */
+ if((err = grib_get_double(handle,"iDirectionIncrementInDegrees",&iDirectionIncrement))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get iDirectionIncrementInDegrees %s\n",grib_get_error_message(err));
+ return err;
+ }
+ /* J Direction Increment */
+ if((err = grib_get_double(handle,"jDirectionIncrementInDegrees",&jDirectionIncrement))!= GRIB_SUCCESS)
+ {
+ fprintf(stderr,"Cannot get jDirectionIncrementInDegrees %s\n",grib_get_error_message(err));
+ return err;
+ }
+
+ realv[0] = iDirectionIncrement;
+ realv[1] = jDirectionIncrement;
+
+ if(strcmp(grid_type,"regular_ll") == 0) {
+ if ((err = int2_intin("grid",intv,realv,text)))
+ {
+ fprintf(stderr,"Grid setup INTIN failed %d\n",err);
+ }
+ /* Set output representation if it is not set */
+ if(outputRepresentation)
+ {
+ if ((err = int2_intout("grid",intv,realv,text)))
+ {
+ fprintf(stderr,"Grid setup INTOUT failed %d\n",err);
+ }
+ }
+ }
+ if(strcmp(grid_type,"reduced_ll") == 0) {
+ if(outputRepresentation) {
+ if ((err = int2_intout("red_latlon",intv,realv,text))) {
+ fprintf(stderr,"intout Reduced latlon - wave setup failed %d\n",err);
+ }
+ }
+ }
+
+ /* number Of Points Along A Parallel */
+ /* number Of Points Along A Meridian */
+ /*
+ if(err = grib_get_long(handle,"numberOfPointsAlongAParallel",&niwe))
+ {
+ fprintf(stderr,"Cannot get numberOfPointsAlongAParallel %s\n",grib_get_error_message(err));
+ }
+ intv[0] = niwe;
+ if(err = grib_get_long(handle,"numberOfPointsAlongAMeridian",&nins))
+ {
+ fprintf(stderr,"Cannot get numberOfPointsAlongAMeridian %s\n",grib_get_error_message(err));
+ }
+ intv[1] = nins;
+ if(err = int2_intin("npts",intv,realv,text))
+ {
+ fprintf(stderr,"Number of points INTIN failed %d\n",err);
+ }
+ */
+
+ /* If Reduced */
/* Force wave processing for certain paramaters */
- if(strcmp(grid_type,"reduced_ll") == 0 || table == 140 || (table == 131 && (parameter == 232 || parameter == 229)))
- {
- if(strcmp(grid_type,"reduced_ll") == 0) {
- if(err = grib_get_size(handle,"pl",&rll_length)) {
- fprintf(stderr,"Cannot get size of pl %s\n",grib_get_error_message(err));
- }
- if(intf2_debug) {
- printf("DESCRIBE_INPUT_FIELD: Number of points NS from reduced_ll definition %d\n",rll_length);
- }
-
- if(err = grib_get_long_array(handle,"pl",rll_def,&rll_length)) {
- fprintf(stderr,"Cannot get pl %s\n",grib_get_error_message(err));
- }
- intv[0] = rll_length;
- if(err = int2_intin("redu_ll",intv,realv,text)) {
- fprintf(stderr,"Reduced LatLon setup failed %d\n",err);
- }
- for( i = 0; i< rll_length ; i++) {
- intv[i] = rll_def[i];
- }
- if(err = int2_intin("l_npts",intv,realv,text)) {
- fprintf(stderr,"Reduced LatLon setup failed %d\n",err);
- }
- }
- err = grib_get_long(handle,"matrixOfValues",&matrixOfValues);
- if (err == GRIB_SUCCESS) {
- intv[0] = matrixOfValues;
- if(err = int2_intin("matrix",intv,realv,text)) {
- fprintf(stderr,"Matrix Value setup INTIN failed %f\n",err);
- }
- }
-
- err = grib_get_double(handle,"missingValue",&missingValue);
-
- if (err != GRIB_SUCCESS && err != GRIB_NOT_FOUND) {
- fprintf(stderr,"Missing value %s\n",grib_get_error_message(err));
- }
- if(intf2_debug)
- printf("DESCRIBE_INPUT_FIELD: Wave field Missing Value %f \n",missingValue);
- if(err == GRIB_SUCCESS) {
- realv[0] = missingValue;
- text = "yes";
- if(err = int2_intin("missingvalue",intv,realv,text)) {
- fprintf(stderr,"Missing Value setup INTIN failed %f\n",err);
- }
- }
- }
-
- }
-
- /************************************************************/
- /* Describe output unpacked field for INTF */
-
-
- /* Set INTOUT to get unpack field from INTF */
- if(err = int2_intout("form",intv,realv,"unpacked"))
- {
- fprintf(stderr,"Form setup INTOUT failed %d\n",err);
- }
-
-
- /* Level Type */
- intv[0] = levelType;
- if(err = int2_intout("levtype",intv,realv,text))
- {
- fprintf(stderr,"Level Type setup INTOUT failed %d\n",err);
- }
- /*
- */
- /* if(levelType != 1){ */
- /* Level */
- intv[0] = level;
- if(err = int2_intout("level",intv,realv,text))
- {
- fprintf(stderr,"Level setup INTOUT failed %d\n",err);
- }
- /* } */
-
-
- /* Table */
- /* Parameter */
- intv[0] = table;
- if(err = int2_intout("table",intv,realv,text))
- {
- fprintf(stderr,"Table Number setup INTOUT failed %d\n",err);
- }
-
- intv[0] = parameter;
- if(err = int2_intout("parameter",intv,realv,text))
- {
- fprintf(stderr,"Parameter Number setup INTOUT failed %d\n",err);
- }
- /*
- */
-
- /* Default Accuracy */
- /*
- intv[0] = accuracy;
- if(intf2_debug)
- {
- printf("DESCRIBE_INPUT_FIELD: Input Accuracy - %d \n",accuracy);
- }
- if(err = int2_intout("accuracy",intv,realv,text))
- {
- fprintf(stderr,"Accuracy setup INTOUT failed %d\n",err);
- }
- */
-
- return err;
+ if(strcmp(grid_type,"reduced_ll") == 0 || table == 140 || (table == 131 && (parameter == 232 || parameter == 229)))
+ {
+ if(strcmp(grid_type,"reduced_ll") == 0) {
+ if ((err = grib_get_size(handle,"pl",&rll_length))) {
+ fprintf(stderr,"Cannot get size of pl %s\n",grib_get_error_message(err));
+ }
+ if(intf2_debug) {
+ printf("DESCRIBE_INPUT_FIELD: Number of points NS from reduced_ll definition %lu\n",rll_length);
+ }
+
+ if ((err = grib_get_long_array(handle,"pl",rll_def,&rll_length))) {
+ fprintf(stderr,"Cannot get pl %s\n",grib_get_error_message(err));
+ }
+ intv[0] = rll_length;
+ if ((err = int2_intin("redu_ll",intv,realv,text))) {
+ fprintf(stderr,"Reduced LatLon setup failed %d\n",err);
+ }
+ for( i = 0; i< rll_length; i++) {
+ intv[i] = rll_def[i];
+ }
+ if ((err = int2_intin("l_npts",intv,realv,text))) {
+ fprintf(stderr,"Reduced LatLon setup failed %d\n",err);
+ }
+ }
+ err = grib_get_long(handle,"matrixOfValues",&matrixOfValues);
+ if (err == GRIB_SUCCESS) {
+ intv[0] = matrixOfValues;
+ if ((err = int2_intin("matrix",intv,realv,text))) {
+ fprintf(stderr,"Matrix Value setup INTIN failed %d\n",err);
+ }
+ }
+
+ err = grib_get_double(handle,"missingValue",&missingValue);
+
+ if (err != GRIB_SUCCESS && err != GRIB_NOT_FOUND) {
+ fprintf(stderr,"Missing value %s\n",grib_get_error_message(err));
+ }
+ if(intf2_debug)
+ printf("DESCRIBE_INPUT_FIELD: Wave field Missing Value %f \n",missingValue);
+ if(err == GRIB_SUCCESS) {
+ realv[0] = missingValue;
+ text = "yes";
+ if ((err = int2_intin("missingvalue",intv,realv,text))) {
+ fprintf(stderr,"Missing Value setup INTIN failed %d\n",err);
+ }
+ }
+ }
+
+ }
+
+ /************************************************************/
+ /* Describe output unpacked field for INTF */
+
+
+ /* Set INTOUT to get unpack field from INTF */
+ if ((err = int2_intout("form",intv,realv,"unpacked")))
+ {
+ fprintf(stderr,"Form setup INTOUT failed %d\n",err);
+ }
+
+
+ /* Level Type */
+ intv[0] = levelType;
+ if ((err = int2_intout("levtype",intv,realv,text)))
+ {
+ fprintf(stderr,"Level Type setup INTOUT failed %d\n",err);
+ }
+ /*
+ */
+ /* if(levelType != 1){ */
+ /* Level */
+ intv[0] = level;
+ if ((err = int2_intout("level",intv,realv,text)))
+ {
+ fprintf(stderr,"Level setup INTOUT failed %d\n",err);
+ }
+ /* } */
+
+
+ /* Table */
+ /* Parameter */
+ intv[0] = table;
+ if ((err = int2_intout("table",intv,realv,text)))
+ {
+ fprintf(stderr,"Table Number setup INTOUT failed %d\n",err);
+ }
+
+ intv[0] = parameter;
+ if ((err = int2_intout("parameter",intv,realv,text)))
+ {
+ fprintf(stderr,"Parameter Number setup INTOUT failed %d\n",err);
+ }
+
+ /* Default Accuracy */
+ /*
+ intv[0] = accuracy;
+ if(intf2_debug)
+ {
+ printf("DESCRIBE_INPUT_FIELD: Input Accuracy - %d \n",accuracy);
+ }
+ if(err = int2_intout("accuracy",intv,realv,text))
+ {
+ fprintf(stderr,"Accuracy setup INTOUT failed %d\n",err);
+ }
+ */
+
+ return err;
}
diff --git a/interpolation/estima.F b/interpolation/estima.F
index 48e683f..0ae1fa8 100644
--- a/interpolation/estima.F
+++ b/interpolation/estima.F
@@ -63,6 +63,12 @@ C
#include "nifld.common"
#include "nofld.common"
C
+C Local variables
+ REAL PLONINC, PLATINC, PNORTH, PWEST, PSOUTH, PEAST
+C
+C Externals
+ INTEGER ESTIMA_REG
+C
C -----------------------------------------------------------------|
C Section 1. Initialise.
C -----------------------------------------------------------------|
@@ -107,11 +113,18 @@ C
300 CONTINUE
C
IF( (NOREPR.EQ.JPREGULAR).OR.(NOREPR.EQ.JPREGROT) ) THEN
-C
-C
-cs print*,'NOGRID(1) ',NOGRID(1),' NOGRID(2) ',NOGRID(2)
-cs ESTIMA = NINT((JP360/NOGRID(1) + 1) * (JP180 / NOGRID(2) + 1))
ESTIMA = (JP360/NOGRID(1) + 1) * (JP180 / NOGRID(2) + 1)
+ IF( ABS(NOAREA(4)-NOAREA(2)).GT.0 .AND.
+ X ABS(NOAREA(3)-NOAREA(1)).GT.0 ) THEN
+ PLONINC = FLOAT(NOGRID(1))/PPMULT
+ PLATINC = FLOAT(NOGRID(2))/PPMULT
+ PNORTH = FLOAT(NOAREA(1))/PPMULT
+ PWEST = FLOAT(NOAREA(2))/PPMULT
+ PSOUTH = FLOAT(NOAREA(3))/PPMULT
+ PEAST = FLOAT(NOAREA(4))/PPMULT
+ ESTIMA = ESTIMA_REG(PLONINC,PWEST,PEAST)
+ X * ESTIMA_REG(PLATINC,PSOUTH,PNORTH)
+ ENDIF
CALL INTLOG(JP_DEBUG,'ESTIMA: Regular lat/long = ',ESTIMA)
ENDIF
diff --git a/interpolation/estima_reg.F b/interpolation/estima_reg.F
new file mode 100644
index 0000000..bdefe7b
--- /dev/null
+++ b/interpolation/estima_reg.F
@@ -0,0 +1,23 @@
+C Copyright 1981-2016 ECMWF.
+C
+C This software is licensed under the terms of the Apache Licence
+C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+C
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
+C nor does it submit to any jurisdiction.
+C
+ INTEGER FUNCTION ESTIMA_REG(INC,P1,P2)
+C
+C Calculate number of increments along a particular direction given
+C an increment, start and ending positions (suitable for regular
+C grids).
+
+ IMPLICIT NONE
+ REAL INC, P1, P2
+ ESTIMA_REG = NINT(ABS(P2-P1)/INC) + 1 + 1
+
+C ESTIMA = (ABS(NOAREA(4)-NOAREA(2))/NOGRID(1) + 1)
+C X * (ABS(NOAREA(3)-NOAREA(1))/NOGRID(2) + 1)
+
+ END
diff --git a/interpolation/fixarea.F b/interpolation/fixarea.F
index f13d6c1..fb48e8d 100644
--- a/interpolation/fixarea.F
+++ b/interpolation/fixarea.F
@@ -107,6 +107,9 @@ C ------------------------------------------------------------------
C
100 CONTINUE
FIXAREA = 0
+ FACTOR3 = 0.
+ FACTOR4 = 0.
+ LDEFIN = .FALSE.
LGLOBAL = .FALSE.
C
C ------------------------------------------------------------------
@@ -187,10 +190,10 @@ C a tolerance of 0.1 degrees
IF(NIAREA(1).EQ.JP90.AND.NIAREA(3).EQ.-JP90.AND.
X NIAREA(2).EQ.0.AND.
X IABS(JP360 - IEAST - NIGRID(1)).LT.1000) THEN
- NIAREA(1) = 0.
- NIAREA(2) = 0.
- NIAREA(3) = 0.
- NIAREA(4) = 0.
+ NIAREA(1) = 0
+ NIAREA(2) = 0
+ NIAREA(3) = 0
+ NIAREA(4) = 0
csinisa
cs ELSEIF(IABS(JP360 - IEAST - NIGRID(1)).LT.1000) THEN
cs NOAREA(1) = NIAREA(1)
diff --git a/interpolation/gglonlat.F b/interpolation/gglonlat.F
index d7f11eb..4c094e9 100644
--- a/interpolation/gglonlat.F
+++ b/interpolation/gglonlat.F
@@ -57,7 +57,7 @@ C Arguments
C Local variables
INTEGER J1, J3, I, J, M
- REAL DLAT1, DLAT3, PLON(4), A, B, ZSOUTH, ZNORTH
+ REAL DLAT1, DLAT3, PLON(4), A, ZSOUTH, ZNORTH !, B
REAL V(4), W(4) ! field values and weights around int. point
diff --git a/interpolation/hirlam.F b/interpolation/hirlam.F
index d834812..0ecfb53 100644
--- a/interpolation/hirlam.F
+++ b/interpolation/hirlam.F
@@ -90,8 +90,6 @@ C Externals
C ---------
C
C INTLOG - Logs messages
-C JMALLOC - Dynamically allocate memory
-C JFREE - Free dynamically allocated memory
C JGETGG - Reads the definition of a gaussian grid
C HGENGRD - Calculates original lat/long (before rotation) for
C a rotated grid
@@ -99,6 +97,9 @@ C HNEI12 - Finds neighbours for points for interpolation
C HWTS12 - Calculates weightings for points for interpolation
C CHKPREC - Check if precipitation threshold has been redefined
C FORCED_NEAREST_NEIGHBOUR - check forced interpolation method
+C HIRLAM_USERSPACE_1_GET - HIRLAM userspace memory #1
+C HIRLAM_USERSPACE_2_GET - HIRLAM userspace memory #2
+C HIRLAM_USERSPACE_3_GET - HIRLAM userspace memory #3
C
C
C Reference
@@ -166,7 +167,6 @@ C
INTEGER IOGAUSS,IOREPR
CHARACTER*1 HTYPE_TMP
C
- LOGICAL LNEW, LFIRST
INTEGER KSCHEME(1),NEIGH(12,1), KLA(1)
REAL PWTS(12,1)
POINTER (IPKSCHE, KSCHEME)
@@ -182,7 +182,7 @@ C
POINTER (IPPDLO3, PDLO3)
POINTER (IPPDLAT, PDLAT)
C
- INTEGER IGG, IGGOLD
+ INTEGER IGG
INTEGER KPTS(1)
REAL GLATS(1)
INTEGER IOFFS(1)
@@ -190,7 +190,7 @@ C
POINTER (IPIOFFS, IOFFS)
POINTER (IPGLATS, GLATS)
C
- INTEGER ILL, ILLOLD
+ INTEGER ILL
REAL RLAT(1),RLON(1)
POINTER (IPRLAT, RLAT)
POINTER (IPRLON, RLON)
@@ -200,18 +200,13 @@ C
CHARACTER*7 FNAME
PARAMETER (FNAME = 'HIRLAM ')
C
- DATA IGGOLD/-1/, ILLOLD/-1/
- DATA NUMBER/-1/
- DATA LNEW/.FALSE./, LFIRST/.TRUE./
- DATA IOGAUSS/-1/,IOREPR/-1/
+ DATA NUMBER/-1/,IOGAUSS/-1/,IOREPR/-1/
C
- SAVE LNEW, LFIRST
SAVE IPKSCHE, IPNEIGH, IPKLA, IPPWTS
SAVE IPPDLO0, IPPDLO1, IPPDLO2, IPPDLO3, IPPDLAT
- SAVE IGGOLD, IPKPTS, IPIOFFS, IPGLATS
- SAVE ILLOLD, IPRLAT, IPRLON
- SAVE NUMBER
- SAVE IOGAUSS,IOREPR
+ SAVE IPKPTS, IPIOFFS, IPGLATS
+ SAVE IPRLAT, IPRLON
+ SAVE NUMBER, IOGAUSS, IOREPR
C
C Externals
C
@@ -220,10 +215,13 @@ C
INTEGER HNEI12
INTEGER HGENGRD
#ifdef POINTER_64
- INTEGER*8 JMALLOC
+ INTEGER*8
#else
- INTEGER JMALLOC
+ INTEGER
#endif
+ X HIRLAM_USERSPACE_1_GET,
+ X HIRLAM_USERSPACE_2_GET,
+ X HIRLAM_USERSPACE_3_GET
C
C Statement functions
C
@@ -277,31 +275,24 @@ C
C Dynamically allocate memory for gaussian grid information.
C
IGG = KGAUSS*2
- IF( IGG.GT.IGGOLD ) THEN
+ NBYTES = (IGG*JPRLEN) + (2*IGG+1)*JPBYTES
C
- IF( IGGOLD.GT.0 ) CALL JFREE(IPKPTS)
-C
- NBYTES = (IGG*JPRLEN) + (2*IGG+1)*JPBYTES
-C
- IPKPTS = JMALLOC(NBYTES)
+ IPKPTS = HIRLAM_USERSPACE_1_GET(NBYTES)
#ifdef hpR64
- IPKPTS = IPKPTS/(1024*1024*1024*4)
+ IPKPTS = IPKPTS/(1024*1024*1024*4)
#endif
- IF( IPKPTS.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,
- X FNAME//': Memory allocate fail',JPQUIET)
- HIRLAM = 1
- GOTO 900
- ENDIF
-C
- IPGLATS = IPKPTS + (IGG*JPBYTES)
- IPIOFFS = IPGLATS + (IGG*JPRLEN)
+ IF( IPKPTS.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,
+ X FNAME//': Memory allocate fail',JPQUIET)
+ HIRLAM = 1
+ GOTO 900
+ ENDIF
C
- IGGOLD = IGG
- IOGAUSS = -1
- IOREPR = -1
+ IPGLATS = IPKPTS + (IGG*JPBYTES)
+ IPIOFFS = IPGLATS + (IGG*JPRLEN)
C
- ENDIF
+ IOGAUSS = -1
+ IOREPR = -1
C
C Build up offsets to start of each latitude in original field(s)
C
@@ -404,31 +395,21 @@ C
C Dynamically allocate memory for lat/long arrays.
C
ILL = NLEN
- IF( ILL.GT.ILLOLD ) THEN
-C
- LNEW = .TRUE.
-C
- IF( ILLOLD.GT.0 ) CALL JFREE(IPRLON)
+ NBYTES = 2*ILL*JPRLEN
C
- NBYTES = 2*ILL*JPRLEN
-C
- IPRLON = JMALLOC(NBYTES)
+ IPRLON = HIRLAM_USERSPACE_2_GET(NBYTES)
#ifdef hpR64
- IPRLON = IPRLON/(1024*1024*1024*4)
+ IPRLON = IPRLON/(1024*1024*1024*4)
#endif
- IF( IPRLON.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,
- X FNAME//': Memory allocate fail',JPQUIET)
- HIRLAM = 6
- GOTO 900
- ENDIF
-C
- IPRLAT = IPRLON + (ILL*JPRLEN)
-C
- ILLOLD = ILL
-C
+ IF( IPRLON.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,
+ X FNAME//': Memory allocate fail',JPQUIET)
+ HIRLAM = 6
+ GOTO 900
ENDIF
C
+ IPRLAT = IPRLON + (ILL*JPRLEN)
+C
IRET = HGENGRD(AREA,POLE,GRID,NLON,NLAT,RLAT,RLON)
IF( IRET.NE.0 ) THEN
CALL INTLOG(JP_ERROR,
@@ -445,39 +426,30 @@ C
C
C Dynamically allocate memory for interpolation arrays.
C
- IF( LNEW ) THEN
-C
- IF( .NOT.LFIRST ) CALL JFREE(IPPDLO0)
+ NJPR=17
+ NJPB=14
+ NBYTES = (NJPR*JPRLEN + NJPB*JPBYTES) * ILL
C
- NJPR=17
- NJPB=14
- NBYTES = (NJPR*JPRLEN + NJPB*JPBYTES) * ILL
-C
- IPPDLO0 = JMALLOC(NBYTES)
+ IPPDLO0 = HIRLAM_USERSPACE_3_GET(NBYTES)
#ifdef hpR64
- IPPDLO0 = IPPDLO0/(1024*1024*1024*4)
+ IPPDLO0 = IPPDLO0/(1024*1024*1024*4)
#endif
- IF( IPPDLO0.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,
- X FNAME//': Memory allocate fail',JPQUIET)
- HIRLAM = 8
- GOTO 900
- ENDIF
-C
- IPPDLO1 = IPPDLO0 + (ILL*JPRLEN)
- IPPDLO2 = IPPDLO1 + (ILL*JPRLEN)
- IPPDLO3 = IPPDLO2 + (ILL*JPRLEN)
- IPPDLAT = IPPDLO3 + (ILL*JPRLEN)
- IPPWTS = IPPDLAT + (ILL*JPRLEN)
- IPKSCHE = IPPWTS + (12*ILL*JPRLEN)
- IPKLA = IPKSCHE + (ILL*JPBYTES)
- IPNEIGH = IPKLA + (ILL*JPBYTES)
-C
- LFIRST = .FALSE.
- LNEW = .FALSE.
-C
+ IF( IPPDLO0.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,
+ X FNAME//': Memory allocate fail',JPQUIET)
+ HIRLAM = 8
+ GOTO 900
ENDIF
C
+ IPPDLO1 = IPPDLO0 + (ILL*JPRLEN)
+ IPPDLO2 = IPPDLO1 + (ILL*JPRLEN)
+ IPPDLO3 = IPPDLO2 + (ILL*JPRLEN)
+ IPPDLAT = IPPDLO3 + (ILL*JPRLEN)
+ IPPWTS = IPPDLAT + (ILL*JPRLEN)
+ IPKSCHE = IPPWTS + (12*ILL*JPRLEN)
+ IPKLA = IPKSCHE + (ILL*JPBYTES)
+ IPNEIGH = IPKLA + (ILL*JPBYTES)
+C
C Find neighbours.
C
IRET = HNEI12(L12PNT,NLEN,RLAT,RLON,KGAUSS,KPTS,GLATS,
diff --git a/interpolation/hirlam_userspace.c b/interpolation/hirlam_userspace.c
new file mode 100644
index 0000000..711b6ba
--- /dev/null
+++ b/interpolation/hirlam_userspace.c
@@ -0,0 +1,147 @@
+/**
+* Copyright 1981-2016 ECMWF.
+*
+* This software is licensed under the terms of the Apache Licence
+* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+*
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
+* nor does it submit to any jurisdiction.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "common/JPointer.h"
+#include "common/fortint.h"
+#include "common/fortreal.h"
+
+
+/*
+ * memory containers and handlers (not to be used directly)
+ */
+
+static struct generic_userspace_t {
+ JPointer array;
+ int nbytes;
+ int isstatic;
+}
+generic_userspace[11] = {0,};
+
+
+int generic_userspace_static(struct generic_userspace_t *curr, fortfloat *array_, fortint *nbytes_)
+{
+ if (curr->array)
+ free(curr->array);
+
+ curr->array = (JPointer) array_;
+ curr->nbytes = *nbytes_;
+ curr->isstatic = 1;
+
+ return 0;
+}
+
+
+JPointer generic_userspace_get(struct generic_userspace_t *curr, fortint *nbytes_)
+{
+ JPointer temp_array = NULL;
+
+ /* if current user-space memory can contain request, return */
+ if ( ((curr->array!=NULL) && (curr->nbytes>=*nbytes_))
+ || (nbytes_<=0) )
+ return curr->array;
+
+ if (curr->isstatic==1) {
+
+ /* static memory management (ProdGen-style) */
+ fprintf(stderr,
+ "ERROR: userspace static allocation too small "
+ "(current: %db, required: %db)\n", curr->nbytes, *nbytes_);
+ return 0;
+
+ }
+ else if (curr->nbytes<*nbytes_) {
+
+ /* dynamic memory management: reallocate as necessary */
+ if (curr->array!=NULL)
+ free(curr->array);
+
+ /*
+ fprintf(stdout,
+ "INFO: userspace dynamic allocation requested: "
+ "%ldb\n", *nbytes_);
+ */
+ temp_array = (JPointer) malloc(*nbytes_);
+ if (temp_array==NULL) {
+ fprintf(stderr,
+ "ERROR: userspace dynamic allocation failure "
+ "(requested: %db)\n", *nbytes_);
+ return 0;
+ }
+ curr->nbytes = *nbytes_;
+ curr->array = temp_array;
+
+ }
+
+ return curr->array;
+}
+
+
+int generic_userspace_free(struct generic_userspace_t *curr)
+{
+ if (curr->array)
+ free(curr->array);
+ curr->nbytes = 0;
+ curr->isstatic = 0;
+ return 0;
+}
+
+
+/*
+ * HIRLAM/HIRLAMW/HIRLSM memory management interfaces
+ */
+
+int hirlam_userspace_1_static_ (fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 0],array_,nbytes_); }
+int hirlam_userspace_2_static_ (fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 1],array_,nbytes_); }
+int hirlam_userspace_3_static_ (fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 2],array_,nbytes_); }
+int hirlamw_userspace_1_static_(fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 3],array_,nbytes_); }
+int hirlamw_userspace_2_static_(fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 4],array_,nbytes_); }
+int hirlamw_userspace_3_static_(fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 5],array_,nbytes_); }
+int hirlsm_userspace_1_static_ (fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 6],array_,nbytes_); }
+int hirlsm_userspace_2_static_ (fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 7],array_,nbytes_); }
+int hirlsm_userspace_3_static_ (fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 8],array_,nbytes_); }
+int hirlsm_userspace_4_static_ (fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[ 9],array_,nbytes_); }
+int hirlsm_userspace_5_static_ (fortfloat *array_, fortint *nbytes_) { return generic_userspace_static(&generic_userspace[10],array_,nbytes_); }
+
+JPointer hirlam_userspace_1_get_ (fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 0],nbytes_); }
+JPointer hirlam_userspace_2_get_ (fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 1],nbytes_); }
+JPointer hirlam_userspace_3_get_ (fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 2],nbytes_); }
+JPointer hirlamw_userspace_1_get_(fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 3],nbytes_); }
+JPointer hirlamw_userspace_2_get_(fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 4],nbytes_); }
+JPointer hirlamw_userspace_3_get_(fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 5],nbytes_); }
+JPointer hirlsm_userspace_1_get_ (fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 6],nbytes_); }
+JPointer hirlsm_userspace_2_get_ (fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 7],nbytes_); }
+JPointer hirlsm_userspace_3_get_ (fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 8],nbytes_); }
+JPointer hirlsm_userspace_4_get_ (fortint *nbytes_) { return generic_userspace_get(&generic_userspace[ 9],nbytes_); }
+JPointer hirlsm_userspace_5_get_ (fortint *nbytes_) { return generic_userspace_get(&generic_userspace[10],nbytes_); }
+
+int hirlam_userspace_free_ () {
+ generic_userspace_free(&generic_userspace[ 0]);
+ generic_userspace_free(&generic_userspace[ 1]);
+ generic_userspace_free(&generic_userspace[ 2]);
+ return 0;
+}
+int hirlamw_userspace_free_() {
+ generic_userspace_free(&generic_userspace[ 3]);
+ generic_userspace_free(&generic_userspace[ 4]);
+ generic_userspace_free(&generic_userspace[ 5]);
+ return 0;
+}
+int hirlsm_userspace_free_ () {
+ generic_userspace_free(&generic_userspace[ 6]);
+ generic_userspace_free(&generic_userspace[ 7]);
+ generic_userspace_free(&generic_userspace[ 8]);
+ generic_userspace_free(&generic_userspace[ 9]);
+ generic_userspace_free(&generic_userspace[10]);
+ return 0;
+}
+
diff --git a/interpolation/hirlamw.F b/interpolation/hirlamw.F
index 313f7f1..5fed63b 100644
--- a/interpolation/hirlamw.F
+++ b/interpolation/hirlamw.F
@@ -91,14 +91,14 @@ C
C Externals
C ---------
C
-C INTLOG - Log error message.
-C JMALLOC - Dynamically allocate memory
-C JFREE - Free dynamically allocated memory
C JGETGG - Reads the definition of a gaussian grid
C HGENGRW - Calculates original lat/long (before rotation) for
C a rotated grid for wind fields.
C HNEI12 - Finds neighbours for points for interpolation
C HWTS12 - Calculates weightings for points for interpolation
+C HIRLAMW_USERSPACE_1_GET - HIRLAMW userspace memory #1
+C HIRLAMW_USERSPACE_2_GET - HIRLAMW userspace memory #2
+C HIRLAMW_USERSPACE_3_GET - HIRLAMW userspace memory #3
C
C
C Reference
@@ -164,7 +164,6 @@ C
INTEGER NPREV, COUNTU, COUNTV, NEAREST
CHARACTER*1 HPREV
C
- LOGICAL LNEW, LFIRST
INTEGER KSCHEME(1),NEIGH(12,1), KLA(1)
REAL PWTS(12,1)
POINTER (IPKSCHE, KSCHEME)
@@ -187,7 +186,7 @@ C
POINTER (IPIOFFS, IOFFS)
POINTER (IPGLATS, GLATS)
C
- INTEGER ILL, ILLOLD
+ INTEGER ILL
REAL RLAT(1),RLON(1)
POINTER (IPRLAT, RLAT)
POINTER (IPRLON, RLON)
@@ -205,17 +204,15 @@ C
CHARACTER*7 FNAME
PARAMETER (FNAME = 'HIRLAMW')
C
- DATA IGGOLD/-1/, ILLOLD/-1/
+ DATA IGGOLD/-1/
DATA NUMBER/-1/
- DATA LNEW/.FALSE./, LFIRST/.TRUE./
DATA NPREV/-1/
DATA HPREV/' '/
C
- SAVE LNEW, LFIRST
SAVE IPKSCHE, IPNEIGH, IPKLA, IPPWTS
SAVE IPPDLO0, IPPDLO1, IPPDLO2, IPPDLO3, IPPDLAT
SAVE IGGOLD, IPKPTS, IPIOFFS, IPGLATS
- SAVE ILLOLD, IPRLAT, IPRLON
+ SAVE IPRLAT, IPRLON
SAVE NUMBER
SAVE NPREV
SAVE HPREV
@@ -227,10 +224,13 @@ C
INTEGER HNEI12
INTEGER HGENGRW
#ifdef POINTER_64
- INTEGER*8 JMALLOC
+ INTEGER*8
#else
- INTEGER JMALLOC
+ INTEGER
#endif
+ X HIRLAMW_USERSPACE_1_GET,
+ X HIRLAMW_USERSPACE_2_GET,
+ X HIRLAMW_USERSPACE_3_GET
C
C Statement functions
C
@@ -275,11 +275,9 @@ C
IGG = KGAUSS*2
IF( IGG.GT.IGGOLD ) THEN
C
- IF( IGGOLD.GT.0 ) CALL JFREE(IPKPTS)
-C
NBYTES = (IGG*JPRLEN) + (2*IGG+1)*JPBYTES
C
- IPKPTS = JMALLOC(NBYTES)
+ IPKPTS = HIRLAMW_USERSPACE_1_GET(NBYTES)
#ifdef hpR64
IPKPTS = IPKPTS/(1024*1024*1024*4)
#endif
@@ -360,37 +358,27 @@ C
C Dynamically allocate memory for lat/long arrays.
C
ILL = NLEN
- IF( ILL.GT.ILLOLD ) THEN
-C
- LNEW = .TRUE.
-C
- IF( ILLOLD.GT.0 ) CALL JFREE(IPRLON)
+ NBYTES = 9*ILL*JPRLEN
C
- NBYTES = 9*ILL*JPRLEN
-C
- IPRLON = JMALLOC(NBYTES)
+ IPRLON = HIRLAMW_USERSPACE_2_GET(NBYTES)
#ifdef hpR64
- IPRLON = IPRLON/(1024*1024*1024*4)
+ IPRLON = IPRLON/(1024*1024*1024*4)
#endif
- IF( IPRLON.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,FNAME//': Memory allocate fail',JPQUIET)
- HIRLAMW = 6
- GOTO 900
- ENDIF
-C
- IPRLAT = IPRLON + (ILL*JPRLEN)
- IPRCLON = IPRLAT + (ILL*JPRLEN)
- IPRCLAT = IPRCLON + (ILL*JPRLEN)
- IPRDIR = IPRCLAT + (ILL*JPRLEN)
- IPC = IPRDIR + (ILL*JPRLEN)
- IPS = IPC + (ILL*JPRLEN)
- IPU = IPS + (ILL*JPRLEN)
- IPV = IPU + (ILL*JPRLEN)
-C
- ILLOLD = ILL
-C
+ IF( IPRLON.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,FNAME//': Memory allocate fail',JPQUIET)
+ HIRLAMW = 6
+ GOTO 900
ENDIF
C
+ IPRLAT = IPRLON + (ILL*JPRLEN)
+ IPRCLON = IPRLAT + (ILL*JPRLEN)
+ IPRCLAT = IPRCLON + (ILL*JPRLEN)
+ IPRDIR = IPRCLAT + (ILL*JPRLEN)
+ IPC = IPRDIR + (ILL*JPRLEN)
+ IPS = IPC + (ILL*JPRLEN)
+ IPU = IPS + (ILL*JPRLEN)
+ IPV = IPU + (ILL*JPRLEN)
+C
IRET = HGENGRW(AREA,POLE,GRID,NLON,NLAT,RCLAT,RCLON,RLAT,RLON)
IF( IRET.NE.0 ) THEN
CALL INTLOG(JP_ERROR,
@@ -407,35 +395,27 @@ C
C
C Dynamically allocate memory for interpolation arrays.
C
- IF( LNEW ) THEN
-C
- IF( .NOT.LFIRST ) CALL JFREE(IPPDLO0)
-C
- NBYTES = (17*JPRLEN + 14*JPBYTES) * ILL
+ NBYTES = (17*JPRLEN + 14*JPBYTES) * ILL
C
- IPPDLO0 = JMALLOC(NBYTES)
+ IPPDLO0 = HIRLAMW_USERSPACE_3_GET(NBYTES)
#ifdef hpR64
- IPPDLO0 = IPPDLO0/(1024*1024*1024*4)
+ IPPDLO0 = IPPDLO0/(1024*1024*1024*4)
#endif
- IF( IPPDLO0.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,FNAME//': Memory allocate fail',JPQUIET)
- HIRLAMW = 8
- GOTO 900
- ENDIF
-C
- IPPDLO1 = IPPDLO0 + (ILL*JPRLEN)
- IPPDLO2 = IPPDLO1 + (ILL*JPRLEN)
- IPPDLO3 = IPPDLO2 + (ILL*JPRLEN)
- IPPDLAT = IPPDLO3 + (ILL*JPRLEN)
- IPPWTS = IPPDLAT + (ILL*JPRLEN)
- IPKSCHE = IPPWTS + (12*ILL*JPRLEN)
- IPKLA = IPKSCHE + (ILL*JPBYTES)
- IPNEIGH = IPKLA + (ILL*JPBYTES)
-C
- LFIRST = .FALSE.
-C
+ IF( IPPDLO0.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,FNAME//': Memory allocate fail',JPQUIET)
+ HIRLAMW = 8
+ GOTO 900
ENDIF
C
+ IPPDLO1 = IPPDLO0 + (ILL*JPRLEN)
+ IPPDLO2 = IPPDLO1 + (ILL*JPRLEN)
+ IPPDLO3 = IPPDLO2 + (ILL*JPRLEN)
+ IPPDLAT = IPPDLO3 + (ILL*JPRLEN)
+ IPPWTS = IPPDLAT + (ILL*JPRLEN)
+ IPKSCHE = IPPWTS + (12*ILL*JPRLEN)
+ IPKLA = IPKSCHE + (ILL*JPBYTES)
+ IPNEIGH = IPKLA + (ILL*JPBYTES)
+C
C Find neighbours.
C
IRET = HNEI12(L12PNT,NLEN,RLAT,RLON,KGAUSS,KPTS,GLATS,
diff --git a/interpolation/hirlsm.F b/interpolation/hirlsm.F
index 9f757f6..120bef6 100644
--- a/interpolation/hirlsm.F
+++ b/interpolation/hirlsm.F
@@ -91,8 +91,6 @@ C Externals
C ---------
C
C INTLOG - Logs messages
-C JMALLOC - Dynamically allocate memory
-C JFREE - Free dynamically allocated memory
C JGETGG - Reads the definition of a gaussian grid
C HGENGRD - Calculates original lat/long (before rotation) for
C a rotated grid
@@ -102,6 +100,11 @@ C CHKPREC - Check if precipitation threshold has been redefined
C HWTSLSM - Calculates LSM weightings for points for interpolation
C HGETLSM - Reads values for gaussian land-sea mask
C FORCED_NEAREST_NEIGHBOUR - check forced interpolation method
+C HIRLSM_USERSPACE_1_GET - HIRLAM userspace memory #1
+C HIRLSM_USERSPACE_2_GET - HIRLAM userspace memory #2
+C HIRLSM_USERSPACE_3_GET - HIRLAM userspace memory #3
+C HIRLSM_USERSPACE_4_GET - HIRLAM userspace memory #4
+C HIRLSM_USERSPACE_5_GET - HIRLAM userspace memory #5
C
C
C Reference
@@ -172,7 +175,6 @@ C
REAL OLDLSM(1)
POINTER (IPOLDLS, OLDLSM )
C
- LOGICAL LNEW, LFIRST
INTEGER KSCHEME(1),NEIGH(12,1), KLA(1)
REAL PWTS(12,1)
POINTER (IPKSCHE, KSCHEME)
@@ -205,7 +207,7 @@ C
POINTER (IPIOFFS, IOFFS)
POINTER (IPGLATS, GLATS)
C
- INTEGER ILL, ILLOLD
+ INTEGER ILL
REAL RLAT(1),RLON(1)
POINTER (IPRLAT, RLAT)
POINTER (IPRLON, RLON)
@@ -215,10 +217,7 @@ C
CHARACTER*7 FNAME
PARAMETER (FNAME = 'HIRLSM ')
C
- DATA IGGOLD/-1/, ILLOLD/-1/
- DATA NUMBER/-1/
- DATA LNEW/.FALSE./, LFIRST/.TRUE./
- DATA NPREV/-1/
+ DATA IGGOLD/-1/, NUMBER/-1/, NPREV/-1/
C
REAL NEWLSM(1)
POINTER (IPNEWLS, NEWLSM)
@@ -226,14 +225,9 @@ C
DATA IOSIZE/-1/, INSIZE/-1/
DATA IPNEWLS/0/, IPOLDLS/0/
C
- SAVE LNEW, LFIRST
- SAVE IPKSCHE, IPNEIGH, IPKLA, IPPWTS
- SAVE IPPDLO0, IPPDLO1, IPPDLO2, IPPDLO3, IPPDLAT
- SAVE IGGOLD, IPKPTS, IPIOFFS, IPGLATS
- SAVE ILLOLD, IPRLAT, IPRLON
- SAVE NUMBER
- SAVE NPREV
- SAVE IOSIZE, INSIZE, IPNEWLS, IPOLDLS, IPPWTSN,IPKSCHEN
+ SAVE IGGOLD, NUMBER, NPREV
+ SAVE IPKPTS, IPIOFFS, IPGLATS, IPOLDLS
+ SAVE IOSIZE, INSIZE
SAVE OLDAREA, OLDPOLE, OLDGRID
C
C Externals
@@ -243,10 +237,15 @@ C
INTEGER HGENGRD
INTEGER HGETLSM
#ifdef POINTER_64
- INTEGER*8 JMALLOC
+ INTEGER*8
#else
- INTEGER JMALLOC
+ INTEGER
#endif
+ X HIRLSM_USERSPACE_1_GET,
+ X HIRLSM_USERSPACE_2_GET,
+ X HIRLSM_USERSPACE_3_GET,
+ X HIRLSM_USERSPACE_4_GET,
+ X HIRLSM_USERSPACE_5_GET
C
C Statement functions
C
@@ -262,7 +261,8 @@ C Section 1. Initialise.
C -----------------------------------------------------------------|
C
100 CONTINUE
-C
+ IPKSCHEN = 0
+ IPPWTSN = 0
HIRLSM = 0
C
CALL JDEBUG()
@@ -336,11 +336,9 @@ C
IGG = KGAUSS*2
IF( IGG.GT.IGGOLD ) THEN
C
- IF( IGGOLD.GT.0 ) CALL JFREE(IPKPTS)
-C
NBYTES = (IGG*JPRLEN) + (2*IGG+1)*JPBYTES
C
- IPKPTS = JMALLOC(NBYTES)
+ IPKPTS = HIRLSM_USERSPACE_1_GET(NBYTES)
#ifdef hpR64
IPKPTS = IPKPTS/(1024*1024*1024*4)
#endif
@@ -402,16 +400,13 @@ C
C
C Allocate memory for old land-sea mask
C
- IF( IOSIZE.LT.(NUMBER*JPRLEN) ) THEN
- IOSIZE = NUMBER*JPRLEN
- IF( IPOLDLS.GT.0 ) CALL JFREE(IPOLDLS)
- IPOLDLS = JMALLOC(IOSIZE)
- IF( IPOLDLS.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,
- X FNAME//': Memory allocate fail',JPQUIET)
- HIRLSM = 4
- GOTO 900
- ENDIF
+ IOSIZE = NUMBER*JPRLEN
+ IPOLDLS = HIRLSM_USERSPACE_2_GET(IOSIZE)
+ IF( IPOLDLS.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,
+ X FNAME//': Memory allocate fail',JPQUIET)
+ HIRLSM = 4
+ GOTO 900
ENDIF
C
C Read values for different land-sea mask in memory
@@ -455,31 +450,21 @@ C
C Dynamically allocate memory for lat/long arrays.
C
ILL = NLEN
- IF( ILL.GT.ILLOLD ) THEN
-C
- LNEW = .TRUE.
-C
- IF( ILLOLD.GT.0 ) CALL JFREE(IPRLON)
+ NBYTES = 2*ILL*JPRLEN
C
- NBYTES = 2*ILL*JPRLEN
-C
- IPRLON = JMALLOC(NBYTES)
+ IPRLON = HIRLSM_USERSPACE_3_GET(NBYTES)
#ifdef hpR64
- IPRLON = IPRLON/(1024*1024*1024*4)
+ IPRLON = IPRLON/(1024*1024*1024*4)
#endif
- IF( IPRLON.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,
- X FNAME//': Memory allocate fail',JPQUIET)
- HIRLSM = 6
- GOTO 900
- ENDIF
-C
- IPRLAT = IPRLON + (ILL*JPRLEN)
-C
- ILLOLD = ILL
-C
+ IF( IPRLON.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,
+ X FNAME//': Memory allocate fail',JPQUIET)
+ HIRLSM = 6
+ GOTO 900
ENDIF
C
+ IPRLAT = IPRLON + (ILL*JPRLEN)
+C
IRET = HGENGRD(AREA,POLE,GRID,NLON,NLAT,RLAT,RLON)
IF( IRET.NE.0 ) THEN
CALL INTLOG(JP_ERROR,
@@ -496,47 +481,39 @@ C
C
C Dynamically allocate memory for interpolation arrays.
C
- IF( LNEW ) THEN
-C
- IF( .NOT.LFIRST ) CALL JFREE(IPPDLO0)
-C
- NJPR=17
- NJPB=14
- IF (LITAL.AND.L12PNT) THEN
- NJPR=29
- NJPB=15
- ENDIF
- NBYTES = (NJPR*JPRLEN + NJPB*JPBYTES) * ILL
+ NJPR=17
+ NJPB=14
+ IF (LITAL.AND.L12PNT) THEN
+ NJPR=29
+ NJPB=15
+ ENDIF
+ NBYTES = (NJPR*JPRLEN + NJPB*JPBYTES) * ILL
C
- IPPDLO0 = JMALLOC(NBYTES)
+ IPPDLO0 = HIRLSM_USERSPACE_4_GET(NBYTES)
#ifdef hpR64
- IPPDLO0 = IPPDLO0/(1024*1024*1024*4)
+ IPPDLO0 = IPPDLO0/(1024*1024*1024*4)
#endif
- IF( IPPDLO0.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,
- X FNAME//': Memory allocate fail',JPQUIET)
- HIRLSM = 8
- GOTO 900
- ENDIF
-C
- IPPDLO1 = IPPDLO0 + (ILL*JPRLEN)
- IPPDLO2 = IPPDLO1 + (ILL*JPRLEN)
- IPPDLO3 = IPPDLO2 + (ILL*JPRLEN)
- IPPDLAT = IPPDLO3 + (ILL*JPRLEN)
- IPPWTS = IPPDLAT + (ILL*JPRLEN)
- IPKSCHE = IPPWTS + (12*ILL*JPRLEN)
- IPKLA = IPKSCHE + (ILL*JPBYTES)
- IPNEIGH = IPKLA + (ILL*JPBYTES)
- IF (LITAL.AND.L12PNT) THEN
- IPPWTSN = IPNEIGH + (12*ILL*JPBYTES)
- IPKSCHEN = IPPWTSN + (12*ILL*JPRLEN)
- ENDIF
-C
- LFIRST = .FALSE.
- LNEW = .FALSE.
+ IF( IPPDLO0.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,
+ X FNAME//': Memory allocate fail',JPQUIET)
+ HIRLSM = 8
+ GOTO 900
+ ENDIF
C
+ IPPDLO1 = IPPDLO0 + (ILL*JPRLEN)
+ IPPDLO2 = IPPDLO1 + (ILL*JPRLEN)
+ IPPDLO3 = IPPDLO2 + (ILL*JPRLEN)
+ IPPDLAT = IPPDLO3 + (ILL*JPRLEN)
+ IPPWTS = IPPDLAT + (ILL*JPRLEN)
+ IPKSCHE = IPPWTS + (12*ILL*JPRLEN)
+ IPKLA = IPKSCHE + (ILL*JPBYTES)
+ IPNEIGH = IPKLA + (ILL*JPBYTES)
+ IF (LITAL.AND.L12PNT) THEN
+ IPPWTSN = IPNEIGH + (12*ILL*JPBYTES)
+ IPKSCHEN = IPPWTSN + (12*ILL*JPRLEN)
ENDIF
C
+C
C -----------------------------------------------------------------|
C Section 4. Create the new land-sea mask
C -----------------------------------------------------------------|
@@ -568,16 +545,13 @@ C
C
C Allocate memory for new land-sea mask
C
- IF( INSIZE.LT.(NLEN*JPRLEN) ) THEN
- INSIZE = NLEN*JPRLEN
- IF( IPNEWLS.GT.0 ) CALL JFREE(IPNEWLS)
- IPNEWLS = JMALLOC(INSIZE)
- IF( IPNEWLS.EQ.0 ) THEN
- CALL INTLOG(JP_ERROR,
- X FNAME//': Memory allocation fail',JPQUIET)
- HIRLSM = 4
- GOTO 900
- ENDIF
+ INSIZE = NLEN*JPRLEN
+ IPNEWLS = HIRLSM_USERSPACE_5_GET(INSIZE)
+ IF( IPNEWLS.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,
+ X FNAME//': Memory allocation fail',JPQUIET)
+ HIRLSM = 4
+ GOTO 900
ENDIF
C
C Find neighbours.
@@ -786,7 +760,8 @@ C
ELSE
- IF(LITAL)THEN !land point
+ IF(LITAL)THEN
+ NEAREST = 1
IF(NEWLSM(LOOP).GE.0.5)THEN !land point
INUM=0
DO NEXT=1,4
@@ -904,6 +879,7 @@ C
IF(NEWLSM(LOOP).GE.0.5)THEN
C land point
+ NEAREST = 1
INUM=0
DO NEXT=1,4
IF(OLDLSM(NEIGH( NEXT,LOOP)).GE.0.5)THEN
@@ -919,6 +895,7 @@ C land point
ENDDO
ELSE
C sea point
+ NEAREST = 1
INUM=0
DO NEXT=1,4
IF(OLDLSM(NEIGH( NEXT,LOOP)).LT.0.5)THEN
diff --git a/interpolation/hll2llw.F b/interpolation/hll2llw.F
index 86bbecc..24d8d44 100644
--- a/interpolation/hll2llw.F
+++ b/interpolation/hll2llw.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -49,8 +49,8 @@ C
C Output parameters
C -----------------
C
-C NEWFLDU - The array of values for the new U lat/long field
-C NEWFLDV - The array of values for the new V lat/long field
+C NEWFLDU - The array of values for the new U lat/long field
+C NEWFLDV - The array of values for the new V lat/long field
C NLON - Number of longitudes in the regular lat/long fields
C NLAT - Number of latitudes in the regular lat/long fields
C
@@ -232,6 +232,9 @@ C -----------------------------------------------------------------|
C
100 CONTINUE
C
+ IPRDIR = 0
+ IPRCLON = 0
+ IPRCLAT = 0
HLL2LLW = 0
C
CALL JDEBUG()
@@ -446,7 +449,7 @@ C
X OLDV(NEIGH( 4,LOOP)) * PWTS( 4,LOOP)
C
ELSE
- DO NEXT = 1, 4
+ DO NEXT = 1, 4
IF( NEIGH(NEXT,LOOP).NE.0 ) THEN
U(LOOP) = OLDU(NEIGH(NEXT,LOOP))
V(LOOP) = OLDV(NEIGH(NEXT,LOOP))
diff --git a/interpolation/hrg2ggw.F b/interpolation/hrg2ggw.F
index e533532..16c643d 100644
--- a/interpolation/hrg2ggw.F
+++ b/interpolation/hrg2ggw.F
@@ -238,6 +238,9 @@ C -----------------------------------------------------------------|
C
100 CONTINUE
C
+ IPRCLAT = 0
+ IPRCLON = 0
+ IPRDIR = 0
HRG2GGW = 0
C
CALL JDEBUG()
diff --git a/interpolation/igdiwe.F b/interpolation/igdiwe.F
index c7c0a05..010820d 100644
--- a/interpolation/igdiwe.F
+++ b/interpolation/igdiwe.F
@@ -286,7 +286,7 @@ C (this also works globally, but it isn't precision-independent)
C set grid increments
IDELTA = REAL(360)/REAL(KIWE)
ODELTA = REAL(360)/REAL(KOWE)
- IF( .NOT.LGLOBL ) THEN
+ IF( .NOT.LGLOBL .AND. KOWE.GT.1 ) THEN
ODELTA = REAL(OAREA(4)-OAREA(2))/REAL(JPMULT*(KOWE-1))
ENDIF
@@ -305,6 +305,10 @@ C set grid increments
IA = INT(REAL(JPMULT)*(LO-REAL(I-1)*IDELTA ))
!IB = INT(REAL(JPMULT)*( REAL( I )*IDELTA-LO)) (same as below)
IB = INT(REAL(JPMULT)*IDELTA) - IA
+ DO WHILE (IA.LT.0 .OR. IB.LT.0)
+ IA = IA + INT(REAL(JPMULT)*IDELTA)
+ IB = IB + INT(REAL(JPMULT)*IDELTA)
+ ENDDO
KWEDIST(JP_I_W,J) = IA
KWEDIST(JP_I_E,J) = IB
diff --git a/interpolation/igglat.F b/interpolation/igglat.F
index 1671ba8..5e46bf1 100644
--- a/interpolation/igglat.F
+++ b/interpolation/igglat.F
@@ -156,6 +156,7 @@ C -------------------------------------------------------
C
100 CONTINUE
C
+ ZFUNC = 0.
IGGLAT = 0
LDEBUG = ( KPR.GE.1 )
C
diff --git a/interpolation/iggmem.F b/interpolation/iggmem.F
index ba442e0..5a08c94 100644
--- a/interpolation/iggmem.F
+++ b/interpolation/iggmem.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -16,7 +16,8 @@ C
C PURPOSE
C _______
C
-C This routine acquires heap space.
+C This routine acquires heap space for regular_gg to regular_ll
+C interpolations.
C
C INTERFACE
C _________
@@ -126,17 +127,17 @@ C mask on interpolation.
C MWEDIST - Dynamic array of length (2, NONS) for a regular
C input field and of length (2, 2 * NONS * NOWE)
C (see nofld.common) for a quasi regular Gaussian
-C input field. This array holds the distances to
-C neighbouring longitude points of the input field
-C from the associated longitude points in the
-C output field.
+C input field.
+C This array holds the distances to neighbouring
+C longitude points of the input field from the
+C associated longitude points in the output field.
C MWEIND - Dynamic array of length (2, NONS) for a regular
C input field and of length (2, 2 * NONS * NOWE)
C (see nofld.common) for a quasi regular Gaussian
-C input field. This array holds the longitude
-C points (array offset) from the input field
-C associated with each longitude point in the
-C output field.
+C input field.
+C This array holds the longitude points (array
+C offset) from the input field associated with each
+C longitude point in the output field.
C RINPNT - Dynamic array of length (NOWE) (see nofld.common)
C used to aid vectorisation in processing
C precipitation fields.
@@ -156,10 +157,9 @@ C
C METHOD
C ______
C
-C This routine calculates how much heap space is required. It
-C then calls IGALLOC to acquire the required space. Finally the
-C POINTERs to the arrays in grspace.h are initialised to allow
-C the use of the dynamic arrays.
+C This routine calculates how much heap space is required. IGALLOC
+C is then used to acquire the required space. Finally the POINTERs
+C in grspace.h are initialised to allow using the dynamic arrays.
C
C REFERENCE
C _________
@@ -182,150 +182,113 @@ C
C None
C
C----<
-C -----------------------------------------------------------------|
-C* Section 0. Definition of variables.
-C -----------------------------------------------------------------|
-C
+
+
+C Section 0. Definition of variables
IMPLICIT NONE
-C
+
#include "parim.h"
#include "nifld.common"
#include "nofld.common"
#include "grspace.h"
-C
+
C Dummy arguments
-C
INTEGER KPR, KERR
-C
+
C Local variables
-C
#ifdef POINTER_64
INTEGER*8 IBASE
#else
INTEGER IBASE
#endif
- INTEGER IREQUEST, IERR
- INTEGER JPROUTINE
- PARAMETER (JPROUTINE = 22100)
-C
+ INTEGER*8 SIZES(14)
+ INTEGER IREQUEST, IERR, I
+
C External functions
-C
INTEGER IGALLOC
-C
-C -----------------------------------------------------------------|
-C* Section 1. Initialisation
-C -----------------------------------------------------------------|
-C
+
+
+C Section 1. Initialisation
100 CONTINUE
-C
IF( KPR.GE.1 ) CALL INTLOG(JP_DEBUG,'IGGMEM: Section 1.',JPQUIET)
-C
IGGMEM = 0
-C
-C -----------------------------------------------------------------|
-C* Section 2. Calculate memory required and get heap
-C -----------------------------------------------------------------|
-C
+
+
+C Section 2. Calculate memory required and get heap
200 CONTINUE
-C
- IF( KPR.GE.1 ) CALL INTLOG(JP_DEBUG,'IGGMEM: Section 2.',JPQUIET)
-C
-C REAL arrays (This may change for double precision version)
-C
- IREQUEST = 4 * NOWE * NONS * JPRLEN
-C
-C REAL arrays for precipitation calculations
-C
- IREQUEST = IREQUEST + 2 * NOWE * JPRLEN
-C
-C Fixed integer fields
-C
- IREQUEST = IREQUEST + (NIWE + 1 + NINS + NOWE + 5 * NONS) *
- 1 JPILEN
-C
-C Regular input fields (These change for reduced Gaussian fields)
-C
- IREQUEST = IREQUEST + 4 * NOWE * JPILEN
-C
-C Fields for LSM calculations
-C
- IREQUEST = IREQUEST + (2 * NIWE + NOWE) * JPILEN
-C
+
+C Specify array allocation sizes:
+C - uses JPRLEN for REAL arrays
+C - uses JPILEN for INTEGER arrays
+ SIZES( 1) = JPRLEN * (NOWE*NONS*4) ! NWFACTP / WFACT
+ SIZES( 2) = JPRLEN * (NOWE) ! NMAXP / RMAX (#1 precipitation)
+ SIZES( 3) = JPRLEN * (NOWE) ! NINPNTP / RINPNT (#2)
+ SIZES( 4) = JPILEN * (NIWE+1) ! NILONGP / MILONG
+ SIZES( 5) = JPILEN * (NINS) ! NILATGP / MILATG
+ SIZES( 6) = JPILEN * (NOWE) ! NOLONGP / MOLONG
+ SIZES( 7) = JPILEN * (NONS) ! NOLATGP / MOLATG
+ SIZES( 8) = JPILEN * (NONS*2) ! NNSINDP / MNSIND
+ SIZES( 9) = JPILEN * (NONS*2) ! NNSDISTP / MNSDIST
+ SIZES(10) = JPILEN * (NOWE*2) ! NWEINDP / MWEIND (*)
+ SIZES(11) = JPILEN * (NOWE*2) ! NWEDISTP / MWEDIST (*)
+ SIZES(12) = JPILEN * 0 ! NISTRTP / MISTRT (*)
+ SIZES(13) = JPILEN * (NIWE*2) ! NILSMP / MILSM (#1 lsm)
+ SIZES(14) = JPILEN * (NOWE) ! NOLSMP / MOLSM (#2)
+
C Get the required memory
-C
- IERR = IGALLOC (JPINNER, IREQUEST, IBASE, KPR, KERR)
-C
- IF( IERR .GT. 0) THEN
+ IREQUEST = 0
+ DO I = 1, 14
+ IREQUEST = IREQUEST + SIZES(I)
+ ENDDO
+ IERR = IGALLOC(JPINNER,IREQUEST,IBASE,KPR,KERR)
+ IF (IERR.GT.0) THEN
IGGMEM = IERR
GOTO 900
ENDIF
-C
-C -----------------------------------------------------------------|
-C* Section 3. Initialise base addresses for POINTER arrays
-C -----------------------------------------------------------------|
-C
- 300 CONTINUE
-C
- IF( KPR.GE.1 ) CALL INTLOG(JP_DEBUG,'IGGMEM: Section 3.',JPQUIET)
-C
-C REAL arrays first to ease conversion to DOUBLE PRECISION
-C
- NWFACTP = IBASE
-C
-C Precipitation REAL arrays
-C
- NMAXP = NWFACTP + 4 * NOWE * NONS * JPRLEN
- NINPNTP = NMAXP + NOWE * JPRLEN
-C
-C This offset may change if DOUBLE PRECISION
-C
- NILONGP = NINPNTP + NOWE * JPRLEN
-C
- NILATGP = NILONGP + (NIWE + 1) * JPILEN
- NOLONGP = NILATGP + NINS * JPILEN
- NOLATGP = NOLONGP + NOWE * JPILEN
- NNSINDP = NOLATGP + NONS * JPILEN
- NNSDISTP = NNSINDP + 2 * NONS * JPILEN
-C
-C These fields change for quasi regular Gaussian input
-C
- NWEINDP = NNSDISTP + 2 * NONS * JPILEN
- NWEDISTP = NWEINDP + 2 * NOWE * JPILEN
- NISTRTP = NWEDISTP + 2 * NOWE * JPILEN
-C
-C MISTRT is not use for regular input grids
-C LSM arrays
-C
- NILSMP = NISTRTP
-C
- NOLSMP = NILSMP + 2 * NIWE * JPILEN
-C
+
+C Set POINTER addresses
+ NWFACTP = IBASE
+ NMAXP = SIZES( 1) + NWFACTP
+ NINPNTP = SIZES( 2) + NMAXP
+ NILONGP = SIZES( 3) + NINPNTP
+ NILATGP = SIZES( 4) + NILONGP
+ NOLONGP = SIZES( 5) + NILATGP
+ NOLATGP = SIZES( 6) + NOLONGP
+ NNSINDP = SIZES( 7) + NOLATGP
+ NNSDISTP = SIZES( 8) + NNSINDP
+ NWEINDP = SIZES( 9) + NNSDISTP
+ NWEDISTP = SIZES(10) + NWEINDP
+ NISTRTP = SIZES(11) + NWEDISTP
+ NILSMP = SIZES(12) + NISTRTP
+ NOLSMP = SIZES(13) + NILSMP
+
+C Display pointers information
IF( KPR.GE.1 ) THEN
- CALL INTLOG(JP_DEBUG,'IGGMEM: Output base addresses.',JPQUIET)
- CALL INTLOG(JP_DEBUG,'IGGMEM: WFACT address = ',NWFACTP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: RMAX address = ',NMAXP )
- CALL INTLOG(JP_DEBUG,'IGGMEM: RINPNT address = ',NINPNTP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: Input long. address = ',NILONGP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: Input lat. address = ',NILATGP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: Output long. address = ',NOLONGP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: Output lat. address = ',NOLATGP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: NS offset = ',NNSINDP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: NS address = ',NNSDISTP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: WE offset = ',NWEINDP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: WE address = ',NWEDISTP)
- CALL INTLOG(JP_DEBUG,
- X 'IGGMEM: Line start array address = ',NISTRTP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: Input LSM address = ',NILSMP)
- CALL INTLOG(JP_DEBUG,'IGGMEM: Output LSM address = ',NOLSMP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: ************************',JPQUIET)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: * Output addresses:', JPQUIET)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: * (print might overflow)',JPQUIET)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - WFACT = ',NWFACTP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - RMAX = ',NMAXP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - RINPNT = ',NINPNTP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - Input long. = ',NILONGP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - Input lat. = ',NILATGP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - Output long. = ',NOLONGP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - Output lat. = ',NOLATGP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - NS offset = ',NNSINDP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - NS distance = ',NNSDISTP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - WE offset = ',NWEINDP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - WE distance = ',NWEDISTP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - Line start = ',NISTRTP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - Input LSM = ',NILSMP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: - Output LSM = ',NOLSMP)
+ CALL INTLOG(JP_DEBUG,'IGGMEM: ***********************', JPQUIET)
ENDIF
-C
-C -----------------------------------------------------------------|
-C* Section 9. Return to calling routine. Format statements
-C -----------------------------------------------------------------|
-C
+
+
+C Section 9. Return to calling routine
900 CONTINUE
-C
- IF( KPR.GE.1 ) CALL INTLOG(JP_DEBUG,'IGGMEM: Section 9.',JPQUIET)
-C
- RETURN
+ IF (KPR.GE.1) CALL INTLOG(JP_DEBUG,'IGGMEM: Section 9.',JPQUIET)
+
+
END
+
diff --git a/interpolation/ignorm.F b/interpolation/ignorm.F
index d275e91..1cf194b 100644
--- a/interpolation/ignorm.F
+++ b/interpolation/ignorm.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -153,7 +153,7 @@ C
C
IF (KPR .GE. 1) THEN
CALL INTLOG(JP_DEBUG,'IGNORM: No of output longitudes = ',KOWE)
- CALL INTLOG(JP_DEBUG,'IGALLOC: No of output lattudes = ',KONS)
+ CALL INTLOG(JP_DEBUG,'IGNORM: No of output latitudes = ',KONS)
ENDIF
C
C _______________________________________________________
diff --git a/interpolation/insane.F b/interpolation/insane.F
index 36cc812..cf02bcb 100644
--- a/interpolation/insane.F
+++ b/interpolation/insane.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -75,7 +75,7 @@ C Parameters
C
C Local variables
C
- CHARACTER*12 YFLAG,YFLAG1
+ CHARACTER*12 YFLAG
INTEGER IERR, MINGRID
REAL GRIDINT
LOGICAL LINCHECK,LNLIMIT
@@ -249,7 +249,7 @@ C
C if env variable 1 no check of interval
LNLIMIT = .TRUE.
CALL GETENV('INCREMENT_NO_LIMIT', YFLAG)
- IF(YFLAG1(1:1).EQ.'1' ) LNLIMIT = .FALSE.
+ IF(YFLAG(1:1).EQ.'1' ) LNLIMIT = .FALSE.
C
IF(LNLIMIT) THEN
@@ -305,7 +305,7 @@ C
IF ( (MOD(NOGRID(1),5).NE.0) .OR.
X (MOD(NOGRID(2),5).NE.0) ) THEN
IERR = JPROUTINE + 35
- CALL INTLOG(JP_ERROR,
+ CALL INTLOG(JP_ERROR,
X 'Sorry!: Grid must be a multiple of 0.0005 ', JPQUIET)
CALL INTLOG(JP_ERROR,
X ' Latitude interval given = ', NOGRID(1))
diff --git a/interpolation/intf2.c b/interpolation/intf2.c
index 53f6951..88261b3 100644
--- a/interpolation/intf2.c
+++ b/interpolation/intf2.c
@@ -13,6 +13,16 @@
#include "grib_api.h"
#include "emos.h"
+
+fortint int2_chkout();
+fortint int2_estima();
+fortint int2_intf(fortfloat in_array[], fortint in_array_length, fortfloat *out_array, fortint *out_array_length);
+fortint int2_outrep();
+fortint int2_setrep(fortint output_flag);
+int copy_spec_from_ksec(grib_util_grid_spec* spec,grib_util_packing_spec* packing_spec);
+long describe_input_field(grib_handle* handle, long outputRepresentation);
+
+
fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* length_out)
{
fortint isec1[ISECTION_1] = {0,};
@@ -87,12 +97,12 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
handle = grib_handle_new_from_message(0,grib_in,long_length_in);
if(handle == 0) {
err = -1;
- fprintf(stdout,"INTF2: Cannot create Handle %ld\n",err);
+ fprintf(stdout,"INTF2: Cannot create Handle %d\n",err);
/* intlog2("INTF2: Cannot create Handle"); */
goto cleanup;
}
- if( err = grib_get_size(handle,"values",&inlen))
+ if ((err = grib_get_size(handle,"values",&inlen)))
{
fprintf(stdout,"INTF2: Cannot get size %s\n",grib_get_error_message(err));
return err;
@@ -123,7 +133,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
if(bitmapPresent)
{
/* if(err = grib_set_double(handle,"missingValue",12345.0)) */
- if(err = grib_set_double(handle,"missingValue",-9999999.0))
+ if ((err = grib_set_double(handle,"missingValue",-9999999.0)))
{
fprintf(stdout,"INTF2: Cannot set Missing Value %s\n",grib_get_error_message(err));
goto cleanup;
@@ -131,7 +141,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
}
/* Get decoded values */
- if(err = grib_get_double_array(handle,"values",values_in,&inlen))
+ if ((err = grib_get_double_array(handle,"values",values_in,&inlen)))
{
fprintf(stdout,"INTF2: Cannot get decoded values %s\n",grib_get_error_message(err));
goto cleanup;
@@ -139,7 +149,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
/* Descibe input field and initial settings for output field */
- if(err = describe_input_field(handle,outputRepresentation))
+ if ((err = describe_input_field(handle,outputRepresentation)))
{
fprintf(stdout,"INTF2 describe_input_field failed : %d\n",err);
goto cleanup;
@@ -167,7 +177,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
if(!values_out)
{
- fprintf(stdout,"INTF2: Cannot allocate values_out %ld\n",out_length);
+ fprintf(stdout,"INTF2: Cannot allocate values_out %d\n",out_length);
err = -1;
goto cleanup;
}
@@ -178,7 +188,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
#ifdef REAL_8
- if(err = int2_intf(values_in,fortint_inlen,values_out,&fortint_outlen))
+ if ((err = int2_intf(values_in,fortint_inlen,values_out,&fortint_outlen)))
{
fprintf(stdout,"INTF failed %d\n",err);
goto cleanup;
@@ -213,7 +223,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
for( ii = 0 ; ii < fortint_inlen; ii++){
values_in1[ii] = values_in[ii];
}
- if(err = int2_intf(values_in1,fortint_inlen,values_out1,&fortint_outlen))
+ if ((err = int2_intf(values_in1,fortint_inlen,values_out1,&fortint_outlen)))
{
fprintf(stdout,"INTF failed %d\n",err);
goto cleanup;
@@ -225,7 +235,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
outlen = fortint_outlen;
if(intf2_debug) {
- printf("INTF2: Outlen: %d \n",outlen);
+ printf("INTF2: Outlen: %lu\n",outlen);
}
err=copy_spec_from_ksec(&spec,&packing_spec);
@@ -291,7 +301,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
}
if(outlen_grib_message > *length_out) {
- fprintf(stdout,"INTF2: ERROR - INTF2 OUTLEN is too large: %ld > %ld\n", outlen_grib_message, *length_out);
+ fprintf(stdout,"INTF2: ERROR - INTF2 OUTLEN is too large: %ld > %d\n", outlen_grib_message, *length_out);
err = 1;
goto cleanup;
}
@@ -307,7 +317,7 @@ fortint intf2_(char* grib_in, fortint* length_in, char* grib_out, fortint* lengt
cleanup:
- if(resetOutput = int2_setrep(outputRepresentation)) printf("INTF2: Output Representation reset failed: %d \n",resetOutput);
+ if((resetOutput = int2_setrep(outputRepresentation))) printf("INTF2: Output Representation reset failed: %d \n",resetOutput);
if(handle) {grib_handle_delete(handle);handle=NULL;}
if(outh) {grib_handle_delete(outh);outh=NULL;}
if(outlen!=0 && finalh) grib_handle_delete(finalh);
diff --git a/interpolation/intfb.F b/interpolation/intfb.F
index 65769e4..daad0e3 100644
--- a/interpolation/intfb.F
+++ b/interpolation/intfb.F
@@ -165,8 +165,12 @@ C* Section 1. Initialise
C -----------------------------------------------------------------|
C
100 CONTINUE
+ HOLDEW = 0
+ HOLDNS = 0
+ IERR = 0
+ N_NONS = 0
+ N_NOWE = 0
INTFB = 0
- IERR = 0
C
C Check if debug option turned on
CALL JDEBUG()
diff --git a/interpolation/intfbu.F b/interpolation/intfbu.F
index 0152333..44a1376 100644
--- a/interpolation/intfbu.F
+++ b/interpolation/intfbu.F
@@ -105,7 +105,7 @@ C
LOGICAL LSTYLE
INTEGER KILN, KITOTAL, KOLN, KOTOTAL, KPR, KERR
INTEGER LOOP
- INTEGER HOLDEW, HOLDNS, N_NOWE, N_NONS, IDISTEP
+ INTEGER HOLDEW, HOLDNS, IDISTEP
REAL*8 DISSRES
CHARACTER*1 HTYPE
#ifndef _CRAYFTN
@@ -118,7 +118,7 @@ C
DIMENSION ZNFLDO( 1 )
C
C Externals
- INTEGER IGLSIZE, IGSIZE, IRSIZE, IARCNTL, IAGCNTL
+ INTEGER IGLSIZE, IGSIZE, IRSIZE, IARCNTL, IAGCNTL, ESTIMA_REG
INTEGER ISCRSZ
C
C ------------------------------------------------------------------
@@ -126,9 +126,12 @@ C* Section 1. Initialise
C ------------------------------------------------------------------
C
100 CONTINUE
+ HOLDEW = 0
+ HOLDNS = 0
+ IERR = 0
+ KPR = 0
+ LSTYLE = .FALSE.
INTFBU = 0
- IERR = 0
- KPR = 0
C
C Allocate work array ZNFELDI if not already done.
C
@@ -432,23 +435,21 @@ C
INTFBU = JPROUTINE + 3
GOTO 900
ENDIF
- PLONINC = FLOAT( NOGRID(1) ) / PPMULT
- PLATINC = FLOAT( NOGRID(2) ) / PPMULT
- PNORTH = FLOAT( NOAREA(1) ) / PPMULT
- PWEST = FLOAT( NOAREA(2) ) / PPMULT
- PSOUTH = FLOAT( NOAREA(3) ) / PPMULT
- PEAST = FLOAT( NOAREA(4) ) / PPMULT
+ PLONINC = FLOAT(NOGRID(1))/PPMULT
+ PLATINC = FLOAT(NOGRID(2))/PPMULT
+ PNORTH = FLOAT(NOAREA(1))/PPMULT
+ PWEST = FLOAT(NOAREA(2))/PPMULT
+ PSOUTH = FLOAT(NOAREA(3))/PPMULT
+ PEAST = FLOAT(NOAREA(4))/PPMULT
- N_NOWE = NINT((PEAST-PWEST)/PLONINC) + 1
- N_NONS = NINT((PNORTH-PSOUTH)/PLATINC) + 1
- NOWE = N_NOWE
- NONS = N_NONS
+ NOWE = ESTIMA_REG(PLONINC,PWEST,PEAST)
+ NONS = ESTIMA_REG(PLATINC,PSOUTH,PNORTH)
ISIZE = NOWE*NONS
ENDIF
c
- DO 710 LOOP = 1, ISIZE
+ DO LOOP = 1, ISIZE
FLDOUT( LOOP ) = ZNFLDO( LOOP )
- 710 CONTINUE
+ ENDDO
C
C Return the number of values, the unpacked array length
C
diff --git a/interpolation/intlogs.c b/interpolation/intlogs.c
index 46d5902..ac0a4bd 100644
--- a/interpolation/intlogs.c
+++ b/interpolation/intlogs.c
@@ -1,11 +1,11 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
@@ -16,8 +16,8 @@
#define _fcd char *
#define _fcdtocp(a) a
#define _fcdlen(a) strlen(a)
-
-char *fcd2char(); /* fortran to c string convertion (alloc memory) */
+
+char *fcd2char(); /* fortran to c string convertion (alloc memory) */
/* defines for FORTRAN subroutine */
#ifdef FORTRAN_NO_UNDERSCORE
@@ -70,10 +70,10 @@ int messageLen;
void intlog2(char *msg) {
- INTLOGT(msg,strlen(msg));
+ INTLOGT(msg,strlen(msg));
}
void intlog2ga(char *msg1, char *msg2) {
- INTLOGT(msg1,strlen(msg1));
- INTLOGT(msg2,strlen(msg2));
+ INTLOGT(msg1,strlen(msg1));
+ INTLOGT(msg2,strlen(msg2));
}
diff --git a/interpolation/intocn.F b/interpolation/intocn.F
index 19bc02d..a885389 100644
--- a/interpolation/intocn.F
+++ b/interpolation/intocn.F
@@ -193,6 +193,10 @@ C ------------------------------------------------------------------
C
100 CONTINUE
C
+ IWRAP = 0
+ JMAX = 0
+ NXLEFT = 0
+ NYLEFT = 0
INTOCN = 0
C
C Set key variables from GRIB header blocks.
diff --git a/interpolation/intocnu.F b/interpolation/intocnu.F
index 8592da2..8f1c1f9 100644
--- a/interpolation/intocnu.F
+++ b/interpolation/intocnu.F
@@ -192,6 +192,10 @@ C ------------------------------------------------------------------
C
100 CONTINUE
C
+ IWRAP = 0
+ JMAX = 0
+ NXLEFT = 0
+ NYLEFT = 0
INTOCNU = 0
C
C Set key variables from GRIB header blocks.
diff --git a/interpolation/intuvdh.F b/interpolation/intuvdh.F
index 1cdeb6d..2b4be26 100644
--- a/interpolation/intuvdh.F
+++ b/interpolation/intuvdh.F
@@ -98,9 +98,8 @@ C* Section 1. Initialise.
C -----------------------------------------------------------------|
C
100 CONTINUE
-C
- INTUVDH = IERR
- IERR = 0
+ INTUVDH = 0
+ IERR = 0
C
C -----------------------------------------------------------------|
C* Section 2. Decode data from GRIB code (no checking).
diff --git a/interpolation/intuvgh.F b/interpolation/intuvgh.F
index bccff84..d431f3c 100644
--- a/interpolation/intuvgh.F
+++ b/interpolation/intuvgh.F
@@ -125,9 +125,10 @@ C* Section 1. Initialise
C -----------------------------------------------------------------|
C
100 CONTINUE
- INTUVGH = 0
- IRET = 0
- KPR = 0
+ IRET = 0
+ KPR = 0
+ LOLDWIND = .FALSE.
+ INTUVGH = 0
C
LFRAME = LNOFRAME.AND.
X ((NOREPR.EQ.JPREGULAR).OR.(NOREPR.EQ.JPREGROT))
diff --git a/interpolation/intuvp2.c b/interpolation/intuvp2.c
index 771d95b..400cbef 100644
--- a/interpolation/intuvp2.c
+++ b/interpolation/intuvp2.c
@@ -14,6 +14,15 @@
#include "emos.h"
+fortint int2_estima();
+fortint int2_intin (const char* param, fortint iv[], fortfloat dv[], const char* cv);
+fortint int2_intout(const char* param, fortint iv[], fortfloat dv[], const char* cv);
+fortint int2_intuvu(fortfloat vort_in[], fortfloat div_in[], fortint in_array_length, fortfloat *vort_out, fortfloat *div_out, fortint *out_array_length);
+fortint int2_outrep();
+fortint int2_setrep(fortint output_flag);
+int copy_spec_from_ksec(grib_util_grid_spec* spec, grib_util_packing_spec* packing_spec);
+
+
fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char* vort_grib_out, char* div_grib_out, fortint* length_out)
{
@@ -92,13 +101,13 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
}
/*----------------------------------*/
- if( err = grib_get_size(handle1,"values",&inlen))
+ if ((err = grib_get_size(handle1,"values",&inlen)))
{
fprintf(stderr,"INTUVP2: Cannot get size for vorticity %s\n",grib_get_error_message(err));
goto cleanup;
}
- if(intf2_debug) { printf("INTUVP2: inlen for vorticity: %d \n",inlen); }
+ if(intf2_debug) { printf("INTUVP2: inlen for vorticity: %lu\n",inlen); }
if(inlen > values_in_len)
{
@@ -118,7 +127,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!div_values_in)
{
err = -1;
- fprintf(stderr,"INTUVP2: Cannot allocate input array for divergency %d\n",inlen);
+ fprintf(stderr,"INTUVP2: Cannot allocate input array for divergency %lu\n",inlen);
goto cleanup;
}
}
@@ -130,7 +139,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
goto cleanup;
}
*/
- if(intf2_debug) { printf("INTUVP2: inlen for divergency: %d \n",inlen); }
+ if(intf2_debug) { printf("INTUVP2: inlen for divergency: %lu\n",inlen); }
/* Default Accuracy */
@@ -140,26 +149,26 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
return err;
}
intv[0] = accuracy;
- if(err = int2_intin("accuracy",intv,realv,text))
+ if ((err = int2_intin("accuracy",intv,realv,text)))
{
fprintf(stderr,"INTUVP2: Accuracy setup INTIN failed %d\n",err);
}
if(intf2_debug)
{
- printf("INTUVP2: Input Accuracy %d \n",accuracy);
+ printf("INTUVP2: Input Accuracy %ld\n",accuracy);
}
/*----------------------------------*/
/* Get decoded values vorticity */
- if(err = grib_get_double_array(handle1,"values",vort_values_in,&inlen))
+ if ((err = grib_get_double_array(handle1,"values",vort_values_in,&inlen)))
{
fprintf(stderr,"INTUVP2: Cannot get decoded values %s\n",grib_get_error_message(err));
goto cleanup;
}
/* Get decoded values divergency */
- if(err = grib_get_double_array(handle2,"values",div_values_in,&inlen))
+ if ((err = grib_get_double_array(handle2,"values",div_values_in,&inlen)))
{
fprintf(stderr,"INTUVP2: Cannot get decoded values %s\n",grib_get_error_message(err));
goto cleanup;
@@ -167,20 +176,20 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
/*----------------------------------*/
/* get Truncation */
- if(err = grib_get_long(handle1,"J", &truncation))
+ if ((err = grib_get_long(handle1,"J", &truncation)))
{
fprintf(stderr,"INTUVP2: Cannot get Truncation %s\n",grib_get_error_message(err));
goto cleanup;
}
intv[0] = truncation;
- if(err = int2_intin("truncation",intv,realv,text))
+ if ((err = int2_intin("truncation",intv,realv,text)))
{
fprintf(stderr,"INTUVP2: Truncation setup INTIN failed %d\n",err);
goto cleanup;
}
if(outputRepresentation)
{
- if(err = int2_intout("truncation",intv,realv,text))
+ if ((err = int2_intout("truncation",intv,realv,text)))
{
fprintf(stderr,"INTUVP2: Truncation setup INTOUT failed %d\n",err);
goto cleanup;
@@ -208,7 +217,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!vort_values_out)
{
- fprintf(stdout,"INTUVP2: Cannot allocate vort_values_out %ld\n",out_length);
+ fprintf(stdout,"INTUVP2: Cannot allocate vort_values_out %d\n",out_length);
err = -1;
goto cleanup;
}
@@ -217,7 +226,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!div_values_out)
{
- fprintf(stdout,"INTUVP2: Cannot allocate div_values_out %ld\n",out_length);
+ fprintf(stdout,"INTUVP2: Cannot allocate div_values_out %d\n",out_length);
err = -1;
goto cleanup;
}
@@ -227,7 +236,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
fortint_inlen = inlen;
fortint_outlen = outlen;
#ifdef REAL_8
- if(err = int2_intuvu(vort_values_in, div_values_in, fortint_inlen, vort_values_out, div_values_out, &fortint_outlen))
+ if ((err = int2_intuvu(vort_values_in, div_values_in, fortint_inlen, vort_values_out, div_values_out, &fortint_outlen)))
{
fprintf(stderr,"INTUVP2 failed %d\n",err);
goto cleanup;
@@ -242,7 +251,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!vort_values_in1)
{
err = -1;
- fprintf(stdout,"INTUVP2: Cannot allocate vort_values_in %ld\n",inlen);
+ fprintf(stdout,"INTUVP2: Cannot allocate vort_values_in %lu\n",inlen);
goto cleanup;
}
@@ -251,7 +260,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!div_values_in1)
{
err = -1;
- fprintf(stderr,"INTUVP2: Cannot allocate input array for divergency %d\n",inlen);
+ fprintf(stderr,"INTUVP2: Cannot allocate input array for divergency %lu\n",inlen);
goto cleanup;
}
}
@@ -263,7 +272,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!vort_values_out1)
{
- fprintf(stdout,"INTUVP2: Cannot allocate vort_values_out %ld\n",out_length);
+ fprintf(stdout,"INTUVP2: Cannot allocate vort_values_out %lu\n",out_length);
err = -1;
goto cleanup;
}
@@ -272,7 +281,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!div_values_out1)
{
- fprintf(stdout,"INTUVP2: Cannot allocate div_values_out %ld\n",out_length);
+ fprintf(stdout,"INTUVP2: Cannot allocate div_values_out %lu\n",out_length);
err = -1;
goto cleanup;
}
@@ -283,7 +292,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
for( ii = 0 ; ii < fortint_inlen; ii++){
div_values_in1[ii] = div_values_in[ii];
}
- if(err = int2_intuvu(vort_values_in1, div_values_in1, fortint_inlen, vort_values_out1, div_values_out1, &fortint_outlen))
+ if ((err = int2_intuvu(vort_values_in1, div_values_in1, fortint_inlen, vort_values_out1, div_values_out1, &fortint_outlen)))
{
fprintf(stderr,"INTUVP2 failed %d\n",err);
goto cleanup;
@@ -302,7 +311,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(intf2_debug)
{
int i;
- printf("INTUVP2: outlen: %d \n",outlen);
+ printf("INTUVP2: outlen: %lu\n",outlen);
for(i=0; i<10 ; i++)
{
printf("INTUVP2: output data values U - %d - %f \n",i,vort_values_out[i]);
@@ -326,7 +335,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
double laplacianOperator=0;
long P=0;
grib_get_long(handle2,"P",&P);
- if(err = grib_get_double(handle2,"laplacianOperator",&laplacianOperator))
+ if ((err = grib_get_double(handle2,"laplacianOperator",&laplacianOperator)))
{
fprintf(stderr,"INTUVP2: Cannot Get P %s\n",grib_get_error_message(err));
goto cleanup;
@@ -376,7 +385,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
}
/* U velocity*/
- if(err = grib_set_long(hu,"paramId",131))
+ if ((err = grib_set_long(hu,"paramId",131)))
{
fprintf(stderr,"INTUVP2: Cannot Set V %s\n",grib_get_error_message(err));
goto cleanup;
@@ -390,7 +399,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
}
if(temp1) {
if(intf2_debug) {
- printf("INTUVP2: outlen u-comp -> %d \n", outlen);
+ printf("INTUVP2: outlen u-comp -> %lu\n", outlen);
}
memcpy(vort_grib_out,temp1,outlen);
}
@@ -399,7 +408,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
outlen = *length_out;
/* V velocity*/
- if(err = grib_set_long(hv,"paramId",132))
+ if ((err = grib_set_long(hv,"paramId",132)))
{
fprintf(stderr,"INTUVP2: Cannot Set V %s\n",grib_get_error_message(err));
goto cleanup;
@@ -412,7 +421,7 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
}
if(temp2) {
if(intf2_debug) {
- printf("INTUVP2: outlen v-comp -> %d \n", outlen);
+ printf("INTUVP2: outlen v-comp -> %lu\n", outlen);
}
memcpy(div_grib_out,temp2,outlen);
}
@@ -424,13 +433,13 @@ fortint intuvp2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
}
else {
- fprintf(stderr,"INTUVP2: ERROR - INTUVP2 OUTLEN is: %d\n", outlen);
+ fprintf(stderr,"INTUVP2: ERROR - INTUVP2 OUTLEN is: %lu\n", outlen);
err = 1;
}
cleanup:
- if(resetOutput = int2_setrep(outputRepresentation)) printf("INTUVP2: Output Representation reset failed: %d \n",resetOutput);
+ if((resetOutput = int2_setrep(outputRepresentation))) printf("INTUVP2: Output Representation reset failed: %d \n",resetOutput);
if(hu && (hu != handle1)) grib_handle_delete(hu);
if(hv && (hv != handle2)) grib_handle_delete(hv);
if(handle1) {grib_handle_delete(handle1);handle1=0;};
diff --git a/interpolation/intuvs2.c b/interpolation/intuvs2.c
index 1142ca6..cdf2e41 100644
--- a/interpolation/intuvs2.c
+++ b/interpolation/intuvs2.c
@@ -1,11 +1,11 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
@@ -14,15 +14,23 @@
#include "emos.h"
+fortint int2_gettru();
+fortint int2_intin (const char* param, fortint iv[], fortfloat dv[], const char* cv);
+fortint int2_intout(const char* param, fortint iv[], fortfloat dv[], const char* cv);
+fortint int2_intuvy(fortfloat vort_in[],fortfloat div_in[] , fortint in_array_length, fortfloat *vort_out, fortfloat *div_out, fortint *out_array_length);
+fortint int2_outrep();
+fortint int2_setrep(fortint output_flag);
+
+
fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char* vort_grib_out, char* div_grib_out, fortint* length_out)
{
- static double *vort_values_in = NULL;
- static double *div_values_in = NULL;
- static double *vort_values_out = NULL;
- static double *div_values_out = NULL;
- static size_t values_in_len = 0;
- static size_t values_out_len = 0;
+ static double *vort_values_in = NULL;
+ static double *div_values_in = NULL;
+ static double *vort_values_out = NULL;
+ static double *div_values_out = NULL;
+ static size_t values_in_len = 0;
+ static size_t values_out_len = 0;
static float *vort_values_in1 = NULL;
static float *div_values_in1 = NULL;
@@ -32,66 +40,66 @@ fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
static size_t values_out_len1 = 0;
long ii = 0;
- long long_inlen = *length_in;
- size_t inlen;
- size_t outlen = *length_out;
- fortint out_length = 0;
-
- fortint fortint_inlen = *length_in;
- fortint fortint_outlen = outlen;
-
- int jpeg = 0, resetOutput = 0;;
-
- char *text = "";
- char *complex_switch = getenv("COMPLIANT_UV_SPECTRAL_COMPLEX");
- fortint intv[4];
- fortfloat realv[4];
- long truncation, inputTrunc;
- grib_handle *handle1, *handle2;
- int err = 0;
- long edition = 1;
-
- const void* temp1;
- const void* temp2;
- char *intf2_debug = getenv("INTF2_DEBUG");
-
- char packing_type[]="spectral_complex";
- size_t size_pack=sizeof(packing_type);
-
- fortint outputRepresentation = int2_outrep();
-
- if(outputRepresentation)
- if(intf2_debug) {
- printf("INTUVS2: Output Representation is Not set by user\n");
- }
-
- handle1 = grib_handle_new_from_message_copy(0,vort_grib_in,long_inlen);
- if(!handle1) {
- err = -1;
- goto cleanup;
- }
-
- handle2 = grib_handle_new_from_message_copy(0,div_grib_in,long_inlen);
- if(!handle2) {
- err = -1;
- goto cleanup;
- }
-
- if(err =grib_get_long(handle1,"pentagonalResolutionParameterJ",&inputTrunc))
- {
- fprintf(stderr,"INTUVS2: Cannot get Truncation %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-/*----------------------------------*/
- if( err = grib_get_size(handle1,"values",&inlen))
- {
- fprintf(stderr,"INTUVS2: Cannot get size for vorticity %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-
- if(intf2_debug) {
- printf("INTUVS2: inlen for vorticity: %d \n",inlen);
- }
+ long long_inlen = *length_in;
+ size_t inlen;
+ size_t outlen = *length_out;
+ fortint out_length = 0;
+
+ fortint fortint_inlen = *length_in;
+ fortint fortint_outlen = outlen;
+
+ int jpeg = 0, resetOutput = 0;;
+
+ char *text = "";
+ char *complex_switch = getenv("COMPLIANT_UV_SPECTRAL_COMPLEX");
+ fortint intv[4];
+ fortfloat realv[4];
+ long truncation, inputTrunc;
+ grib_handle *handle1, *handle2;
+ int err = 0;
+ long edition = 1;
+
+ const void* temp1;
+ const void* temp2;
+ char *intf2_debug = getenv("INTF2_DEBUG");
+
+ char packing_type[]="spectral_complex";
+ size_t size_pack=sizeof(packing_type);
+
+ fortint outputRepresentation = int2_outrep();
+
+ if(outputRepresentation)
+ if(intf2_debug) {
+ printf("INTUVS2: Output Representation is Not set by user\n");
+ }
+
+ handle1 = grib_handle_new_from_message_copy(0,vort_grib_in,long_inlen);
+ if(!handle1) {
+ err = -1;
+ goto cleanup;
+ }
+
+ handle2 = grib_handle_new_from_message_copy(0,div_grib_in,long_inlen);
+ if(!handle2) {
+ err = -1;
+ goto cleanup;
+ }
+
+ if((err =grib_get_long(handle1,"pentagonalResolutionParameterJ",&inputTrunc)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot get Truncation %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ /*----------------------------------*/
+ if ((err = grib_get_size(handle1,"values",&inlen)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot get size for vorticity %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+
+ if(intf2_debug) {
+ printf("INTUVS2: inlen for vorticity: %lu\n",inlen);
+ }
if(inlen > values_in_len)
{
@@ -111,69 +119,69 @@ fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!div_values_in)
{
err = -1;
- fprintf(stderr,"INTUVS2: Cannot allocate input array for divergency %d\n",inlen);
+ fprintf(stderr,"INTUVS2: Cannot allocate input array for divergency %lu\n",inlen);
goto cleanup;
}
}
-/*
- if( err = grib_get_size(handle2,"values",&inlen))
- {
- fprintf(stderr,"INTUVS2: Cannot get size for divergency %s\n",grib_get_error_message(err));
- goto cleanup;
- }
+ /*
+ if( err = grib_get_size(handle2,"values",&inlen))
+ {
+ fprintf(stderr,"INTUVS2: Cannot get size for divergency %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
*/
- /* get edition */
- if(err = grib_get_long(handle1,"edition", &edition))
- {
- fprintf(stderr,"INTUVS2: Cannot get Edition %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-
- if(intf2_debug) {
- printf("INTUVS2: inlen for divergency: %d \n",inlen);
- }
-
-/*----------------------------------*/
-
- /* Get decoded values vorticity */
- if(err = grib_get_double_array(handle1,"values",vort_values_in,&inlen))
- {
- fprintf(stderr,"INTUVS2: Cannot get decoded values %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-
- /* Get decoded values divergency */
- if(err = grib_get_double_array(handle2,"values",div_values_in,&inlen))
- {
- fprintf(stderr,"INTUVS2: Cannot get decoded values %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-/*----------------------------------*/
-
- /* get Truncation */
- if(err = grib_get_long(handle1,"pentagonalResolutionParameterJ", &truncation))
- {
- fprintf(stderr,"INTUVS2: Cannot get Truncation %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- intv[0] = truncation;
- if(err = int2_intin("truncation",intv,realv,text))
- {
- fprintf(stderr,"INTUVS2: Truncation setup INTIN failed %d\n",err);
- goto cleanup;
- }
- if(outputRepresentation)
- {
- if(err = int2_intout("truncation",intv,realv,text))
- {
- fprintf(stderr,"INTUVS2: Truncation setup INTOUT failed %d\n",err);
- goto cleanup;
- }
- }
-
- /*============= INTUVY ====================================*/
- out_length = inlen;
+ /* get edition */
+ if ((err = grib_get_long(handle1,"edition", &edition)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot get Edition %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+
+ if(intf2_debug) {
+ printf("INTUVS2: inlen for divergency: %lu\n",inlen);
+ }
+
+ /*----------------------------------*/
+
+ /* Get decoded values vorticity */
+ if ((err = grib_get_double_array(handle1,"values",vort_values_in,&inlen)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot get decoded values %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+
+ /* Get decoded values divergency */
+ if ((err = grib_get_double_array(handle2,"values",div_values_in,&inlen)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot get decoded values %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ /*----------------------------------*/
+
+ /* get Truncation */
+ if ((err = grib_get_long(handle1,"pentagonalResolutionParameterJ", &truncation)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot get Truncation %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ intv[0] = truncation;
+ if ((err = int2_intin("truncation",intv,realv,text)))
+ {
+ fprintf(stderr,"INTUVS2: Truncation setup INTIN failed %d\n",err);
+ goto cleanup;
+ }
+ if(outputRepresentation)
+ {
+ if ((err = int2_intout("truncation",intv,realv,text)))
+ {
+ fprintf(stderr,"INTUVS2: Truncation setup INTOUT failed %d\n",err);
+ goto cleanup;
+ }
+ }
+
+ /*============= INTUVY ====================================*/
+ out_length = inlen;
if(out_length > values_out_len)
{
@@ -183,7 +191,7 @@ fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!vort_values_out)
{
- fprintf(stdout,"INTUVS2: Cannot allocate vort_values_out %ld\n",out_length);
+ fprintf(stdout,"INTUVS2: Cannot allocate vort_values_out %d\n",out_length);
err = -1;
goto cleanup;
}
@@ -192,21 +200,21 @@ fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!div_values_out)
{
- fprintf(stdout,"INTUVS2: Cannot allocate div_values_out %ld\n",out_length);
+ fprintf(stdout,"INTUVS2: Cannot allocate div_values_out %d\n",out_length);
err = -1;
goto cleanup;
}
}
- fortint_inlen = inlen;
- fortint_outlen = outlen;
+ fortint_inlen = inlen;
+ fortint_outlen = outlen;
#ifdef REAL_8
- if(err = int2_intuvy(vort_values_in, div_values_in, fortint_inlen, vort_values_out, div_values_out, &fortint_outlen))
- {
- fprintf(stderr,"INTUVS failed %d\n",err);
- goto cleanup;
- }
+ if ((err = int2_intuvy(vort_values_in, div_values_in, fortint_inlen, vort_values_out, div_values_out, &fortint_outlen)))
+ {
+ fprintf(stderr,"INTUVS failed %d\n",err);
+ goto cleanup;
+ }
#else
if(inlen > values_in_len1)
{
@@ -217,7 +225,7 @@ fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!vort_values_in1)
{
err = -1;
- fprintf(stdout,"INTUVS2: Cannot allocate vort_values_in %ld\n",inlen);
+ fprintf(stdout,"INTUVS2: Cannot allocate vort_values_in %lu\n",inlen);
goto cleanup;
}
@@ -226,7 +234,7 @@ fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!div_values_in1)
{
err = -1;
- fprintf(stderr,"INTUVS2: Cannot allocate input array for divergency %d\n",inlen);
+ fprintf(stderr,"INTUVS2: Cannot allocate input array for divergency %lu\n",inlen);
goto cleanup;
}
}
@@ -238,7 +246,7 @@ fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!vort_values_out1)
{
- fprintf(stdout,"INTUVS2: Cannot allocate vort_values_out %ld\n",out_length);
+ fprintf(stdout,"INTUVS2: Cannot allocate vort_values_out %lu\n",out_length);
err = -1;
goto cleanup;
}
@@ -247,243 +255,243 @@ fortint intuvs2_(char* vort_grib_in, char* div_grib_in, fortint* length_in, char
if(!div_values_out1)
{
- fprintf(stdout,"INTUVS2: Cannot allocate div_values_out %ld\n",out_length);
+ fprintf(stdout,"INTUVS2: Cannot allocate div_values_out %lu\n",out_length);
err = -1;
goto cleanup;
}
}
for( ii = 0 ; ii < fortint_inlen; ii++){
- vort_values_in1[ii] = vort_values_in[ii];
- }
+ vort_values_in1[ii] = vort_values_in[ii];
+ }
for( ii = 0 ; ii < fortint_inlen; ii++){
- div_values_in1[ii] = div_values_in[ii];
- }
- if(err = int2_intuvu(vort_values_in1, div_values_in1, fortint_inlen, vort_values_out1, div_values_out1, &fortint_outlen))
+ div_values_in1[ii] = div_values_in[ii];
+ }
+ if ((err = int2_intuvu(vort_values_in1, div_values_in1, fortint_inlen, vort_values_out1, div_values_out1, &fortint_outlen)))
{
fprintf(stderr,"INTUVS2 failed %d\n",err);
goto cleanup;
}
for( ii = 0 ; ii < fortint_outlen; ii++){
- vort_values_in[ii] = vort_values_in1[ii];
- }
+ vort_values_in[ii] = vort_values_in1[ii];
+ }
for( ii = 0 ; ii < fortint_outlen; ii++){
- div_values_in[ii] = div_values_in1[ii];
- }
+ div_values_in[ii] = div_values_in1[ii];
+ }
#endif
- *length_out = fortint_outlen;
- outlen = fortint_outlen;
-
- if(intf2_debug)
- {
- int i;
- printf("INTUVS2: outlen: %d \n",outlen);
- for(i=0; i<10 ; i++)
- {
- printf("INTUVS2: output data values U - %d - %f \n",i,vort_values_out[i]);
- printf("INTUVS2: output data values V - %d - %f \n",i,div_values_out[i]);
- }
- }
-
- if(outlen)
- {
- int trunc = 0;
-
- /* U velocity*/
- if(err =grib_set_string(handle1,"packingType",packing_type,&size_pack))
- {
+ *length_out = fortint_outlen;
+ outlen = fortint_outlen;
+
+ if(intf2_debug)
+ {
+ int i;
+ printf("INTUVS2: outlen: %lu\n",outlen);
+ for(i=0; i<10 ; i++)
+ {
+ printf("INTUVS2: output data values U - %d - %f \n",i,vort_values_out[i]);
+ printf("INTUVS2: output data values V - %d - %f \n",i,div_values_out[i]);
+ }
+ }
+
+ if(outlen)
+ {
+ int trunc = 0;
+
+ /* U velocity*/
+ if ((err =grib_set_string(handle1,"packingType",packing_type,&size_pack)))
+ {
fprintf(stderr,"INTUVS2: Cannot Set packing %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(!outputRepresentation)
- {
- trunc = int2_gettru();
- if(trunc > inputTrunc){
- printf("INTUVS2: Automatic resolution too high: %d \n Resolution reset to input resolution: %d\n",trunc,inputTrunc);
- trunc = inputTrunc;
- }
- else
- if(intf2_debug)
- printf("INTUVS2: trunc - %d \n",trunc);
-
- /* Set Truncation */
- if(err =grib_set_long(handle1,"pentagonalResolutionParameterJ",trunc))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterJ %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle1,"pentagonalResolutionParameterK",trunc))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterK %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle1,"pentagonalResolutionParameterM",trunc))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterM %s\n",grib_get_error_message(err));
- goto cleanup;
- }
+ goto cleanup;
+ }
+ if(!outputRepresentation)
+ {
+ trunc = int2_gettru();
+ if(trunc > inputTrunc){
+ printf("INTUVS2: Automatic resolution too high: %d \n Resolution reset to input resolution: %ld\n",trunc,inputTrunc);
+ trunc = inputTrunc;
+ }
+ else
+ if(intf2_debug)
+ printf("INTUVS2: trunc - %d \n",trunc);
+
+ /* Set Truncation */
+ if ((err =grib_set_long(handle1,"pentagonalResolutionParameterJ",trunc)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterJ %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle1,"pentagonalResolutionParameterK",trunc)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterK %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle1,"pentagonalResolutionParameterM",trunc)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterM %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ }
+ if(complex_switch){
+ if ((err =grib_set_long(handle1,"JS",20)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterJ %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle1,"KS",20)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterK %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle1,"MS",20)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterM %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
}
- if(complex_switch){
- if(err =grib_set_long(handle1,"JS",20))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterJ %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle1,"KS",20))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterK %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle1,"MS",20))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterM %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- }
-
- if(err = grib_set_long(handle1,"paramId",131))
+
+ if ((err = grib_set_long(handle1,"paramId",131)))
{
fprintf(stderr,"INTUVS2: Cannot Set U parameter %s\n",grib_get_error_message(err));
- goto cleanup;
+ goto cleanup;
}
- if(err =grib_set_long(handle1,"computeLaplacianOperator",1))
- {
+ if ((err =grib_set_long(handle1,"computeLaplacianOperator",1)))
+ {
fprintf(stderr,"INTUVS2: Cannot Set computeLaplacianOperator %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle1,"truncateLaplacian",1))
- {
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle1,"truncateLaplacian",1)))
+ {
fprintf(stderr,"INTUVS2: Cannot Set computeLaplacianOperator %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-
- if(edition == 1){
- if(err =grib_set_long(handle1,"representationMode",2))
- {
- fprintf(stderr,"INTUVS2: Cannot Set representationMode %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- }
-
- if(err = grib_set_double_array(handle1,"values",vort_values_out,outlen))
- {
- fprintf(stderr,"INTUVS2: Error seting the double array vorticity : %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- grib_get_message(handle1,&temp1,&outlen);
- if(temp1) {
- if(intf2_debug) {
- printf("INTUVS2: outlen vorticity -> %d \n", outlen);
- }
- memcpy(vort_grib_out,temp1,outlen);
- }
- else
- fprintf(stderr,"INTUVS2: Error memcpy divergency \n");
- *length_out = outlen;
-
-
- /* V velocity*/
- if(err =grib_set_string(handle2,"packingType",packing_type,&size_pack))
- {
+ goto cleanup;
+ }
+
+ if(edition == 1){
+ if ((err =grib_set_long(handle1,"representationMode",2)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set representationMode %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ }
+
+ if ((err = grib_set_double_array(handle1,"values",vort_values_out,outlen)))
+ {
+ fprintf(stderr,"INTUVS2: Error seting the double array vorticity : %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ grib_get_message(handle1,&temp1,&outlen);
+ if(temp1) {
+ if(intf2_debug) {
+ printf("INTUVS2: outlen vorticity -> %lu\n", outlen);
+ }
+ memcpy(vort_grib_out,temp1,outlen);
+ }
+ else
+ fprintf(stderr,"INTUVS2: Error memcpy divergency \n");
+ *length_out = outlen;
+
+
+ /* V velocity*/
+ if ((err =grib_set_string(handle2,"packingType",packing_type,&size_pack)))
+ {
fprintf(stderr,"INTUVS2: Cannot Set packing %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(!outputRepresentation)
- {
- if(err =grib_set_long(handle2,"pentagonalResolutionParameterJ",trunc))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterJ %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle2,"pentagonalResolutionParameterK",trunc))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterK %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle2,"pentagonalResolutionParameterM",trunc))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterM %s\n",grib_get_error_message(err));
- goto cleanup;
- }
+ goto cleanup;
}
- if(complex_switch){
- if(err =grib_set_long(handle2,"JS",20))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterJ %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle2,"KS",20))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterK %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle2,"MS",20))
- {
- fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterM %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- }
-
- if(err = grib_set_long(handle2,"paramId",132))
+ if(!outputRepresentation)
+ {
+ if ((err =grib_set_long(handle2,"pentagonalResolutionParameterJ",trunc)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterJ %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle2,"pentagonalResolutionParameterK",trunc)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterK %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle2,"pentagonalResolutionParameterM",trunc)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterM %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ }
+ if(complex_switch){
+ if ((err =grib_set_long(handle2,"JS",20)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterJ %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle2,"KS",20)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterK %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle2,"MS",20)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set pentagonalResolutionParameterM %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ }
+
+ if ((err = grib_set_long(handle2,"paramId",132)))
{
fprintf(stderr,"INTUVS2: Cannot Set V %s\n",grib_get_error_message(err));
- goto cleanup;
+ goto cleanup;
}
- if(err =grib_set_long(handle2,"computeLaplacianOperator",1))
- {
+ if ((err =grib_set_long(handle2,"computeLaplacianOperator",1)))
+ {
fprintf(stderr,"INTUVS2: Cannot Set computeLaplacianOperator %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(err =grib_set_long(handle2,"truncateLaplacian",1))
- {
+ goto cleanup;
+ }
+ if ((err =grib_set_long(handle2,"truncateLaplacian",1)))
+ {
fprintf(stderr,"INTUVS2: Cannot Set computeLaplacianOperator %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- if(edition == 1){
- if(err =grib_set_long(handle2,"representationMode",2))
- {
- fprintf(stderr,"INTUVS2: Cannot Set representationMode %s\n",grib_get_error_message(err));
- goto cleanup;
- }
- }
-
- outlen = fortint_outlen;
- if(err = grib_set_double_array(handle2,"values",div_values_out,outlen))
- {
- fprintf(stderr,"INTUVS2: Error seting the double array divergency : %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-
- grib_get_message(handle2,&temp2,&outlen);
- if(temp2) {
- if(intf2_debug) {
- printf("INTUVS2: outlen divergency -> %d \n", outlen);
- }
- memcpy(div_grib_out,temp2,*length_out);
- }
- else
- fprintf(stderr,"INTUVS2: Error memcpy divergency \n");
- *length_out = outlen;
-
- goto cleanup;
-
- }
- else {
- fprintf(stderr,"INTUVS2: ERROR - INTUVS2 OUTLEN is: %d\n", outlen);
- err = 1;
- }
+ goto cleanup;
+ }
+ if(edition == 1){
+ if ((err =grib_set_long(handle2,"representationMode",2)))
+ {
+ fprintf(stderr,"INTUVS2: Cannot Set representationMode %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+ }
+
+ outlen = fortint_outlen;
+ if ((err = grib_set_double_array(handle2,"values",div_values_out,outlen)))
+ {
+ fprintf(stderr,"INTUVS2: Error seting the double array divergency : %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+
+ grib_get_message(handle2,&temp2,&outlen);
+ if(temp2) {
+ if(intf2_debug) {
+ printf("INTUVS2: outlen divergency -> %lu\n", outlen);
+ }
+ memcpy(div_grib_out,temp2,*length_out);
+ }
+ else
+ fprintf(stderr,"INTUVS2: Error memcpy divergency \n");
+ *length_out = outlen;
+
+ goto cleanup;
+
+ }
+ else {
+ fprintf(stderr,"INTUVS2: ERROR - INTUVS2 OUTLEN is: %lu\n", outlen);
+ err = 1;
+ }
cleanup:
- if(resetOutput = int2_setrep(outputRepresentation)) printf("INTUVS2: Output Representation reset failed: %d \n",resetOutput);
- if(handle1) grib_handle_delete(handle1);
- if(handle2) grib_handle_delete(handle2);
+ if((resetOutput = int2_setrep(outputRepresentation))) printf("INTUVS2: Output Representation reset failed: %d \n",resetOutput);
+ if(handle1) grib_handle_delete(handle1);
+ if(handle2) grib_handle_delete(handle2);
- return err;
+ return err;
}
fortint intuvs2(char* vort_grib_in, char* div_grib_in, fortint* length_in, char* vort_grib_out, char* div_grib_out, fortint* length_out)
{
- return intuvs2_(vort_grib_in,div_grib_in,length_in,vort_grib_out,div_grib_out,length_out);
+ return intuvs2_(vort_grib_in,div_grib_in,length_in,vort_grib_out,div_grib_out,length_out);
}
diff --git a/interpolation/intuvu.F b/interpolation/intuvu.F
index 11536dc..a4498af 100644
--- a/interpolation/intuvu.F
+++ b/interpolation/intuvu.F
@@ -177,9 +177,10 @@ C* Section 1. Initialise
C -----------------------------------------------------------------|
C
100 CONTINUE
- INTUVU = 0
- IERR = 0
- KPR = 0
+ IERR = 0
+ KPR = 0
+ LOLDWIND = .FALSE.
+ INTUVU = 0
C
C
C Save output area definitions
diff --git a/interpolation/intvect2.c b/interpolation/intvect2.c
index fce7be4..d67f0b8 100644
--- a/interpolation/intvect2.c
+++ b/interpolation/intvect2.c
@@ -13,129 +13,136 @@
#include "grib_api.h"
#include "emos.h"
+
+fortint int2_estima();
+fortint int2_outrep();
+int copy_spec_from_ksec(grib_util_grid_spec* spec,grib_util_packing_spec* packing_spec);
+long describe_input_field(grib_handle* handle, long outputRepresentation);
+
+
fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_grib_out, char* v_grib_out, fortint* length_out)
{
- static double *u_values_in = NULL;
- static double *v_values_in = NULL;
- static double *u_values_out = NULL;
- static double *v_values_out = NULL;
- static size_t values_in_len = 0;
- static size_t values_out_len = 0;
+ static double *u_values_in = NULL;
+ static double *v_values_in = NULL;
+ static double *u_values_out = NULL;
+ static double *v_values_out = NULL;
+ static size_t values_in_len = 0;
+ static size_t values_out_len = 0;
- fortint out_length = 0;
+ fortint out_length = 0;
- static float *u_values_in1 = NULL;
- static float *v_values_in1 = NULL;
- static float *u_values_out1 = NULL;
- static float *v_values_out1 = NULL;
- static size_t values_in_len1 = 0;
- static size_t values_out_len1 = 0;
+ static float *u_values_in1 = NULL;
+ static float *v_values_in1 = NULL;
+ static float *u_values_out1 = NULL;
+ static float *v_values_out1 = NULL;
+ static size_t values_in_len1 = 0;
+ static size_t values_out_len1 = 0;
grib_handle* hu = NULL;
grib_handle* hv = NULL;
- long long_inlen = *length_in;
- long ii = 0;
+ long long_inlen = *length_in;
+ long ii = 0;
- size_t inlen;
- size_t outlen = *length_out;
- size_t outlen1 = *length_out;
+ size_t inlen;
+ size_t outlen = *length_out;
+ size_t outlen1 = *length_out;
- fortint fortint_inlen = *length_in;
- fortint fortint_outlen = outlen;
+ fortint fortint_inlen = *length_in;
+ fortint fortint_outlen = outlen;
- grib_handle *handle1 = NULL, *handle2 = NULL;
- grib_handle *outh_u = NULL, *outh_v = NULL;
- int err = 0;
- int grib_err = 0;
+ grib_handle *handle1 = NULL, *handle2 = NULL;
+ grib_handle *outh_u = NULL, *outh_v = NULL;
+ int err = 0;
+ int grib_err = 0;
- long accuracy = 0;
+ long accuracy = 0;
- fortint intv[4];
- fortfloat realv[4];
- char *text = "";
+ fortint intv[4];
+ fortfloat realv[4];
+ char *text = "";
- const void* temp1;
- const void* temp2;
+ const void* temp1;
+ const void* temp2;
- char *intf2_debug;
- char *intf2_write ;
+ char *intf2_debug;
+ char *intf2_write ;
- fortint outputRepresentation;
+ fortint outputRepresentation;
int gribex_compatibility;
grib_util_grid_spec spec={0,};
grib_util_packing_spec packing_spec={0,};
gribex_compatibility=grib_get_gribex_mode(0);
- intf2_debug = getenv("INTF2_DEBUG");
- intf2_write = getenv("INTF2_WRITE_TO_FILE");
+ intf2_debug = getenv("INTF2_DEBUG");
+ intf2_write = getenv("INTF2_WRITE_TO_FILE");
- outputRepresentation = int2_outrep();
+ outputRepresentation = int2_outrep();
- if(outputRepresentation)
+ if(outputRepresentation)
if(intf2_debug) {
printf("INTVECT2: Output Representation is Not set by user\n");
}
-
- handle1 = grib_handle_new_from_message_copy(0,u_grib_in,long_inlen);
- if(!handle1) {
- err = -1;
- goto cleanup;
- }
- handle2 = grib_handle_new_from_message_copy(0,v_grib_in,long_inlen);
- if(!handle2) {
- err = -1;
- goto cleanup;
- }
- /* -------------------------------------------- */
+ handle1 = grib_handle_new_from_message_copy(0,u_grib_in,long_inlen);
+ if(!handle1) {
+ err = -1;
+ goto cleanup;
+ }
+
+ handle2 = grib_handle_new_from_message_copy(0,v_grib_in,long_inlen);
+ if(!handle2) {
+ err = -1;
+ goto cleanup;
+ }
+ /* -------------------------------------------- */
- if( err = grib_get_size(handle1,"values",&inlen))
- {
- fprintf(stderr,"INTVECT2: Cannot get size for U %s\n",grib_get_error_message(err));
- return err;
- }
- if(intf2_debug) { printf("INTVECT2: inlen for U: %d \n",inlen); }
+ if ((err = grib_get_size(handle1,"values",&inlen)))
+ {
+ fprintf(stderr,"INTVECT2: Cannot get size for U %s\n",grib_get_error_message(err));
+ return err;
+ }
+ if(intf2_debug) { printf("INTVECT2: inlen for U: %lu\n",inlen); }
- if( err = grib_get_size(handle2,"values",&inlen))
- {
- fprintf(stderr,"INTVECT2: Cannot get size for V %s\n",grib_get_error_message(err));
- return err;
- }
+ if ((err = grib_get_size(handle2,"values",&inlen)))
+ {
+ fprintf(stderr,"INTVECT2: Cannot get size for V %s\n",grib_get_error_message(err));
+ return err;
+ }
- if(intf2_debug) { printf("INTVECT2: inlen for V: %d \n",inlen); }
+ if(intf2_debug) { printf("INTVECT2: inlen for V: %lu\n",inlen); }
if(inlen > values_in_len)
{
- if(u_values_in) free(u_values_in);
- u_values_in = (double*)malloc(sizeof(double)*inlen);
- values_in_len = inlen;
- if(!u_values_in)
- {
- err = -1;
- fprintf(stderr,"INTVECT2: Cannot allocate input array for U %d\n",inlen);
- goto cleanup;
- }
- if(v_values_in) free(v_values_in);
- v_values_in = (double*)malloc(sizeof(double)*inlen);
- if(!v_values_in)
- {
- err = -1;
- fprintf(stderr,"INTVECT2: Cannot allocate input array for V %d\n",inlen);
- goto cleanup;
- }
- }
- /* -------------------------------------------- */
+ if(u_values_in) free(u_values_in);
+ u_values_in = (double*)malloc(sizeof(double)*inlen);
+ values_in_len = inlen;
+ if(!u_values_in)
+ {
+ err = -1;
+ fprintf(stderr,"INTVECT2: Cannot allocate input array for U %lu\n",inlen);
+ goto cleanup;
+ }
+ if(v_values_in) free(v_values_in);
+ v_values_in = (double*)malloc(sizeof(double)*inlen);
+ if(!v_values_in)
+ {
+ err = -1;
+ fprintf(stderr,"INTVECT2: Cannot allocate input array for V %lu\n",inlen);
+ goto cleanup;
+ }
+ }
+ /* -------------------------------------------- */
/* Default Accuracy */
-/*
- if((err = grib_get_long(handle1,"bitsPerValue",&accuracy))!= GRIB_SUCCESS)
+ /*
+ if ((err = grib_get_long(handle1,"bitsPerValue",&accuracy))!= GRIB_SUCCESS)
{
fprintf(stderr,"INTVECT2: Cannot get accuracy %s\n",grib_get_error_message(err));
return err;
@@ -151,35 +158,35 @@ fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_
}
*/
- /* -------------------------------------------- */
- /* Get decoded U values */
- if(err = grib_get_double_array(handle1,"values",u_values_in,&inlen))
- {
- fprintf(stderr,"INTVECT2: Cannot get decoded values %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-
- if(err = describe_input_field(handle1,outputRepresentation))
- {
- fprintf(stderr,"INTVECT2: describe_input_field failed : %d\n",err);
- goto cleanup;
- }
-
- /* Get decoded V values */
- if(err = grib_get_double_array(handle2,"values",v_values_in,&inlen))
- {
- fprintf(stderr,"INTVECT2: Cannot get decoded values %s\n",grib_get_error_message(err));
- goto cleanup;
- }
-
- if(err = describe_input_field(handle2,outputRepresentation))
- {
- fprintf(stderr,"INTVECT2 describe_input_field failed : %d\n",err);
- goto cleanup;
- }
-
-
- /*============= INTVECY ====================================*/
+ /* -------------------------------------------- */
+ /* Get decoded U values */
+ if ((err = grib_get_double_array(handle1,"values",u_values_in,&inlen)))
+ {
+ fprintf(stderr,"INTVECT2: Cannot get decoded values %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+
+ if ((err = describe_input_field(handle1,outputRepresentation)))
+ {
+ fprintf(stderr,"INTVECT2: describe_input_field failed : %d\n",err);
+ goto cleanup;
+ }
+
+ /* Get decoded V values */
+ if ((err = grib_get_double_array(handle2,"values",v_values_in,&inlen)))
+ {
+ fprintf(stderr,"INTVECT2: Cannot get decoded values %s\n",grib_get_error_message(err));
+ goto cleanup;
+ }
+
+ if ((err = describe_input_field(handle2,outputRepresentation)))
+ {
+ fprintf(stderr,"INTVECT2 describe_input_field failed : %d\n",err);
+ goto cleanup;
+ }
+
+
+ /*============= INTVECY ====================================*/
if(outputRepresentation){
out_length = inlen;
}
@@ -191,44 +198,44 @@ fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_
goto cleanup;
}
}
-
- if(out_length > values_out_len)
- {
-
- if(intf2_debug)
- {
- printf("INTVECT2:----------------- length for malloc %d\n",out_length);
- }
- if(u_values_out) free(u_values_out);
- u_values_out = (double*)malloc(sizeof(double)*out_length);
- values_out_len = out_length;
-
- if(!u_values_out)
- {
- fprintf(stderr,"INTVECT2: Cannot allocate u_values_out %d\n",out_length);
- err = -1;
- goto cleanup;
- }
-
- if(v_values_out) free(v_values_out);
- v_values_out = (double*)malloc(sizeof(double)*out_length);
-
- if(!v_values_out)
- {
- fprintf(stderr,"INTVECT2: Cannot allocate v_values_out %d\n",out_length);
- err = -1;
- goto cleanup;
- }
- }
-
- fortint_inlen = inlen;
- fortint_outlen = outlen;
+
+ if(out_length > values_out_len)
+ {
+
+ if(intf2_debug)
+ {
+ printf("INTVECT2:----------------- length for malloc %d\n",out_length);
+ }
+ if(u_values_out) free(u_values_out);
+ u_values_out = (double*)malloc(sizeof(double)*out_length);
+ values_out_len = out_length;
+
+ if(!u_values_out)
+ {
+ fprintf(stderr,"INTVECT2: Cannot allocate u_values_out %d\n",out_length);
+ err = -1;
+ goto cleanup;
+ }
+
+ if(v_values_out) free(v_values_out);
+ v_values_out = (double*)malloc(sizeof(double)*out_length);
+
+ if(!v_values_out)
+ {
+ fprintf(stderr,"INTVECT2: Cannot allocate v_values_out %d\n",out_length);
+ err = -1;
+ goto cleanup;
+ }
+ }
+
+ fortint_inlen = inlen;
+ fortint_outlen = outlen;
#ifdef REAL_8
- if(err = int2_intvecy(u_values_in,v_values_in,fortint_inlen,u_values_out,v_values_out,&fortint_outlen))
- {
- fprintf(stderr,"INTVECT2 failed %d\n",err);
- goto cleanup;
- }
+ if ((err = int2_intvecy(u_values_in,v_values_in,fortint_inlen,u_values_out,v_values_out,&fortint_outlen)))
+ {
+ fprintf(stderr,"INTVECT2 failed %d\n",err);
+ goto cleanup;
+ }
#else
if(inlen > values_in_len1)
{
@@ -239,7 +246,7 @@ fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_
if(!u_values_in1)
{
err = -1;
- fprintf(stdout,"INTVECT2: Cannot allocate u_values_in1 %ld\n",inlen);
+ fprintf(stdout,"INTVECT2: Cannot allocate u_values_in1 %lu\n",inlen);
goto cleanup;
}
@@ -248,7 +255,7 @@ fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_
if(!v_values_in1)
{
err = -1;
- fprintf(stderr,"INTVECT2: Cannot allocate input array for v_values_in1 %d\n",inlen);
+ fprintf(stderr,"INTVECT2: Cannot allocate input array for v_values_in1 %lu\n",inlen);
goto cleanup;
}
}
@@ -260,7 +267,7 @@ fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_
if(!u_values_out1)
{
- fprintf(stdout,"INTVECT2: Cannot allocate u_values_out1 %ld\n",out_length);
+ fprintf(stdout,"INTVECT2: Cannot allocate u_values_out1 %lu\n",out_length);
err = -1;
goto cleanup;
}
@@ -269,108 +276,108 @@ fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_
if(!v_values_out1)
{
- fprintf(stdout,"INTVECT2: Cannot allocate v_values_out1 %ld\n",out_length);
+ fprintf(stdout,"INTVECT2: Cannot allocate v_values_out1 %lu\n",out_length);
err = -1;
goto cleanup;
}
}
for( ii = 0 ; ii < fortint_inlen; ii++){
- u_values_in1[ii] = u_values_in[ii];
- }
+ u_values_in1[ii] = u_values_in[ii];
+ }
for( ii = 0 ; ii < fortint_inlen; ii++){
- v_values_in1[ii] = v_values_in[ii];
- }
-
- if(err = int2_intvecy(u_values_in1,v_values_in1,fortint_inlen,u_values_out1,v_values_out1,&fortint_outlen))
- {
- fprintf(stderr,"INTVECT2 failed %d\n",err);
- goto cleanup;
- }
+ v_values_in1[ii] = v_values_in[ii];
+ }
+
+ if ((err = int2_intvecy(u_values_in1,v_values_in1,fortint_inlen,u_values_out1,v_values_out1,&fortint_outlen)))
+ {
+ fprintf(stderr,"INTVECT2 failed %d\n",err);
+ goto cleanup;
+ }
for( ii = 0 ; ii < fortint_outlen; ii++){
- u_values_out[ii] = u_values_out1[ii];
- }
+ u_values_out[ii] = u_values_out1[ii];
+ }
for( ii = 0 ; ii < fortint_outlen; ii++){
- v_values_out[ii] = v_values_out1[ii];
- }
+ v_values_out[ii] = v_values_out1[ii];
+ }
#endif
- *length_out = fortint_outlen;
- outlen = fortint_outlen;
-
- if(intf2_debug)
- {
- printf("INTVECT2: outlen: %d \n",outlen);
- }
-
- if(outlen)
- {
-
- if(intf2_debug) {
- int i;
- for(i = 0; i < 10 ; i++){
- printf("INTVECT2: output data values - %d - %f \n",i,u_values_out[i]);
- printf("INTVECT2: output data values - %d - %f \n",i,v_values_out[i]);
- }
- }
+ *length_out = fortint_outlen;
+ outlen = fortint_outlen;
+
+ if(intf2_debug)
+ {
+ printf("INTVECT2: outlen: %lu\n",outlen);
+ }
+
+ if(outlen)
+ {
+
+ if(intf2_debug) {
+ int i;
+ for(i = 0; i < 10 ; i++){
+ printf("INTVECT2: output data values - %d - %f \n",i,u_values_out[i]);
+ printf("INTVECT2: output data values - %d - %f \n",i,v_values_out[i]);
+ }
+ }
err=copy_spec_from_ksec(&spec,&packing_spec);
if (err) {
- fprintf(stdout,"INTVECT2: ERROR - copy_grid_spec_from_ksec unable to copy spec: %d\n", err);
- goto cleanup;
+ fprintf(stdout,"INTVECT2: ERROR - copy_grid_spec_from_ksec unable to copy spec: %d\n", err);
+ goto cleanup;
}
packing_spec.accuracy=GRIB_UTIL_ACCURACY_USE_PROVIDED_BITS_PER_VALUES;
packing_spec.packing=GRIB_UTIL_PACKING_USE_PROVIDED;
-/*
- if(err = set_grid_data_description(handle1,&jpeg,edition))
- {
- fprintf(stderr,"INTVECT2 set_grid_data_description failed : %d\n",err);
- goto cleanup;
- }
+ /*
+ if(err = set_grid_data_description(handle1,&jpeg,edition))
+ {
+ fprintf(stderr,"INTVECT2 set_grid_data_description failed : %d\n",err);
+ goto cleanup;
+ }
if(err = grib_set_long(handle1,"uvRelativeToGrid",1))
{
fprintf(stderr,"INTVECT2: Cannot Set uvRelativeToGrid %s\n",grib_get_error_message(err));
- goto cleanup;
+ goto cleanup;
}
- if(err = set_grid_data_description(handle2,&jpeg,edition))
- {
- fprintf(stderr,"INTVECT2 set_grid_data_description failed : %d\n",err);
- goto cleanup;
- }
+ if(err = set_grid_data_description(handle2,&jpeg,edition))
+ {
+ fprintf(stderr,"INTVECT2 set_grid_data_description failed : %d\n",err);
+ goto cleanup;
+ }
if(err = grib_set_long(handle2,"uvRelativeToGrid",1))
{
fprintf(stderr,"INTVECT2: Cannot Set uvRelativeToGrid %s\n",grib_get_error_message(err));
- goto cleanup;
+ goto cleanup;
}
*/
hu = grib_util_set_spec(handle1,&spec, &packing_spec, 0, u_values_out, outlen, &err);
if(!hu) {
- fprintf(stdout,"INTVECT2: ERROR - grib_util_set_spec: %d\n", err);
- if(!err) err = 1;
- goto cleanup;
+ fprintf(stdout,"INTVECT2: ERROR - grib_util_set_spec: %d\n", err);
+ if(!err) err = 1;
+ goto cleanup;
}
- if(err = grib_set_long(hu,"uvRelativeToGrid",1))
+ if ((err = grib_set_long(hu,"uvRelativeToGrid",1)))
{
fprintf(stderr,"INTVECT2: Cannot Set uvRelativeToGrid %s\n",grib_get_error_message(err));
- goto cleanup;
+ goto cleanup;
}
hv = grib_util_set_spec(handle2,&spec, &packing_spec, 0, v_values_out, outlen, &err);
if(!hv) {
- fprintf(stdout,"INTVECT2: ERROR - grib_util_set_spec: %d\n", err);
- if(!err) err = 1;
- goto cleanup;
+ fprintf(stdout,"INTVECT2: ERROR - grib_util_set_spec: %d\n", err);
+ if(!err) err = 1;
+ goto cleanup;
}
- if(err = grib_set_long(hv,"uvRelativeToGrid",1))
+ if ((err = grib_set_long(hv,"uvRelativeToGrid",1)))
{
fprintf(stderr,"INTVECT2: Cannot Set uvRelativeToGrid %s\n",grib_get_error_message(err));
- goto cleanup;
+ goto cleanup;
}
grib_get_message(hu,&temp1,&outlen);
if(temp1) {
if(intf2_debug) {
- printf("INTVECT2: outlen u-comp -> %d \n", outlen);
+ printf("INTVECT2: outlen u-comp -> %lu\n", outlen);
}
memcpy(u_grib_out,temp1,outlen);
}
@@ -381,7 +388,7 @@ fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_
grib_get_message(hv,&temp2,&outlen);
if(temp2) {
if(intf2_debug) {
- printf("INTUVP2: outlen v-comp -> %d \n", outlen);
+ printf("INTUVP2: outlen v-comp -> %lu\n", outlen);
}
memcpy(v_grib_out,temp2,outlen);
}
@@ -391,25 +398,25 @@ fortint intvect2_(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_
goto cleanup;
-
- }
- else {
- fprintf(stderr,"INTVECT2: ERROR - INTVECT2 OUTLEN is: %d\n", outlen);
- err = 1;
- }
+
+ }
+ else {
+ fprintf(stderr,"INTVECT2: ERROR - INTVECT2 OUTLEN is: %lu\n", outlen);
+ err = 1;
+ }
cleanup:
- if(hu && (hu != handle1)) grib_handle_delete(hu);
- if(hv && (hv != handle2)) grib_handle_delete(hv);
- if(handle1) grib_handle_delete(handle1);
- if(handle2) grib_handle_delete(handle2);
+ if(hu && (hu != handle1)) grib_handle_delete(hu);
+ if(hv && (hv != handle2)) grib_handle_delete(hv);
+ if(handle1) grib_handle_delete(handle1);
+ if(handle2) grib_handle_delete(handle2);
- return err;
+ return err;
}
fortint intvect2(char* u_grib_in, char* v_grib_in, fortint* length_in, char* u_grib_out, char* v_grib_out, fortint* length_out )
{
- return intvect2_(u_grib_in,v_grib_in,length_in,u_grib_out,v_grib_out,length_out);
+ return intvect2_(u_grib_in,v_grib_in,length_in,u_grib_out,v_grib_out,length_out);
}
diff --git a/interpolation/irgmem.F b/interpolation/irgmem.F
index c379236..3dd7941 100644
--- a/interpolation/irgmem.F
+++ b/interpolation/irgmem.F
@@ -16,8 +16,8 @@ C
C PURPOSE
C _______
C
-C This routine acquires heap space for quasi regular to regular
-C interpolation.
+C This routine acquires heap space for reduced_gg to regular_ll
+C interpolations.
C
C INTERFACE
C _________
@@ -127,16 +127,16 @@ C mask on interpolation.
C MWEDIST - Dynamic array of length (2, NONS) (see
C nofld.common) for a regular input field and of
C length (2, 2 * NONS * NOWE) (see nofld.common)
-C for a quasi regular Gaussian input field. This
-C array holds the distances to neighbouring
+C for a quasi regular Gaussian input field.
+C This array holds the distances to neighbouring
C longitude points of the input field from the
C associated longitude points in the output field.
C MWEIND - Dynamic array of length (2, NONS) (see
C nofld.common) for a regular input field and of
C length (2, 2 * NONS * NOWE) (see nofld.common)
-C for a quasi regular Gaussian input field. This
-C array holds the longitude points (array offset)
-C from the input field associated with each
+C for a quasi regular Gaussian input field.
+C This array holds the longitude points (array
+C offset) from the input field associated with each
C longitude point in the output field.
C RINPNT - Dynamic array of length (NOWE) (see nofld.common)
C used to aid vectorisation in processing
@@ -152,14 +152,14 @@ C EXTERNALS
C _________
C
C IGALLOC - Get a heap allocation for array space.
-C INTLOG(R) - Logs messages.
+C INTLOG - Logs messages.
C
C METHOD
C ______
C
-C This routine first calculates how much heap space is required.
-C IGALLOC is then used to acquire the required space. Finally the
-C POINTERs are initialised to allow use of the dynamic arrays.
+C This routine calculates how much heap space is required. IGALLOC
+C is then used to acquire the required space. Finally the POINTERs
+C in grspace.h are initialised to allow using the dynamic arrays.
C
C REFERENCE
C _________
@@ -182,215 +182,120 @@ C
C None
C
C----<
-C -----------------------------------------------------------------|
-C* Section 0. Definition of variables.
-C -----------------------------------------------------------------|
-C
+
+
+C Section 0. Definition of variables
IMPLICIT NONE
-C
+
#include "parim.h"
#include "nifld.common"
#include "nofld.common"
#include "grspace.h"
-C
-C Dummy arguments
-C
- INTEGER*8 DELTA
- INTEGER*8 OFFSET
+C Dummy arguments
INTEGER KPR, KERR
-C
+
C Local variables
-C
#ifdef POINTER_64
INTEGER*8 IBASE
#else
INTEGER IBASE
#endif
- INTEGER IREQUEST, IERR
-C
+ INTEGER*8 SIZES(14)
+ INTEGER IREQUEST, IERR, I
+
C External functions
-C
INTEGER IGALLOC
-C
-C -----------------------------------------------------------------|
-C* Section 1. Initialisation
-C -----------------------------------------------------------------|
-C
+
+
+C Section 1. Initialisation
100 CONTINUE
-C
IF( KPR.GE.1 ) CALL INTLOG(JP_DEBUG,'IRGMEM: Section 1.',JPQUIET)
-C
IRGMEM = 0
-C
-C -----------------------------------------------------------------|
-C* Section 2. Calculate memory required and get heap
-C -----------------------------------------------------------------|
-C
+
+
+C Section 2. Calculate memory required and get heap
200 CONTINUE
-C
- IF( KPR.GE.1 ) CALL INTLOG(JP_DEBUG,'IRGMEM: Section 2.',JPQUIET)
-C
-C REAL arrays (This may change for double precision version)
-C
- IREQUEST = 4 * NOWE * NONS * JPRLEN
-C
-C Fields for precipitation calculations
-C
- IREQUEST = IREQUEST + 2 * NOWE * JPRLEN
-C
-C Fixed integer fields
-C
- IREQUEST = IREQUEST + (NIWE + 1 + NINS + NOWE + 5 * NONS) *
- 1 JPILEN
-C
-C Reduced Gaussian input fields (These change for regular fields)
-C
-c IREQUEST = IREQUEST + (8 * NOWE * NONS + NINS) * JPILEN
- IREQUEST = IREQUEST
- 1 + JPILEN * (2 * NONS) * (4 * NOWE + 20) ! account for RGG/octahedral
- 2 + JPILEN * NINS
-C
-C Fields for LSM calculations
-C
- IREQUEST = IREQUEST + (2 * NIWE + NOWE) * JPILEN
-C
+
+C We are having trouble when using POINTER values in arithmetic
+C where we get overflow when we don't expect it. Like the POINTER is
+C interpreted as a 32-bit length value. For that reason we calculate
+C an OFFSET and add DELTA values to it before reading its value out
+C into the various base addresses which are then not used again in
+C further calculations.
+C
+C Specify array allocation sizes:
+C - uses JPRLEN for REAL arrays
+C - uses JPILEN for INTEGER arrays
+ SIZES( 1) = JPRLEN * (NOWE*NONS*4) ! NWFACTP / WFACT
+ SIZES( 2) = JPRLEN * (NOWE) ! NMAXP / RMAX (#1 precipitation)
+ SIZES( 3) = JPRLEN * (NOWE) ! NINPNTP / RINPNT (#2)
+ SIZES( 4) = JPILEN * (NIWE+1) ! NILONGP / MILONG
+ SIZES( 5) = JPILEN * (NINS) ! NILATGP / MILATG
+ SIZES( 6) = JPILEN * (NOWE) ! NOLONGP / MOLONG
+ SIZES( 7) = JPILEN * (NONS) ! NOLATGP / MOLATG
+ SIZES( 8) = JPILEN * (NONS*2) ! NNSINDP / MNSIND
+ SIZES( 9) = JPILEN * (NONS*2) ! NNSDISTP / MNSDIST
+ SIZES(10) = JPILEN * (NOWE*2*NONS*2) ! NWEINDP / MWEIND (*)
+ SIZES(11) = JPILEN * (NOWE*2*NONS*2) ! NWEDISTP / MWEDIST (*)
+ SIZES(12) = JPILEN * (NINS) ! NISTRTP / MISTRT (*, not used for regular input grids)
+ SIZES(13) = JPILEN * (NIWE*2) ! NILSMP / MILSM (#1 lsm)
+ SIZES(14) = JPILEN * (NOWE) ! NOLSMP / MOLSM (#2)
+
C Get the required memory
-C
- IERR = IGALLOC (JPINNER, IREQUEST, IBASE, KPR, KERR)
-C
- IF( IERR.GT.0 ) THEN
+ IREQUEST = 0
+ DO I = 1, 14
+ IREQUEST = IREQUEST + SIZES(I)
+ ENDDO
+ IERR = IGALLOC(JPINNER,IREQUEST,IBASE,KPR,KERR)
+ IF (IERR.GT.0) THEN
IRGMEM = IERR
GOTO 900
ENDIF
-C
-C -----------------------------------------------------------------|
-C* Section 3. Initialise base addresses for POINTER arrays
-C -----------------------------------------------------------------|
-C
- 300 CONTINUE
-C
- IF( KPR.GE.1 ) CALL INTLOG(JP_DEBUG,'IRGMEM: Section 3.',JPQUIET)
-C
-C REAL arrays first to ease conversion to DOUBLE PRECISION
-C
- NWFACTP = IBASE
-C
-C Precipitation REAL arrays
-C
-C We are having trouble when using POINTER values in arithmetic
-C where we get overflow when we don't expect it. Like the POINTER
-C is interpreted as a 32-bit length value. For that reason we
-C calculate an OFFSET and add DELTA values to it before reading
-C its value out into the various base addresses which are then not
-C used again in further calculations.
-
-
- OFFSET = NWFACTP + 4 * NOWE * NONS * JPRLEN
- NMAXP = OFFSET
-C NMAXP = NWFACTP + 4 * NOWE * NONS * JPRLEN
-
- DELTA = NOWE * JPRLEN
- OFFSET = OFFSET + DELTA
- NINPNTP = OFFSET
-C NINPNTP = NMAXP + NOWE * JPRLEN
-
-C
-C This offset may change if DOUBLE PRECISION
-C
- DELTA = NOWE * JPRLEN
- OFFSET = OFFSET + DELTA
- NILONGP = OFFSET
-C NILONGP = NINPNTP + NOWE * JPRLEN
-
-C
- DELTA = (NIWE + 1) * JPILEN
- OFFSET = OFFSET + DELTA
- NILATGP = OFFSET
-C NILATGP = NILONGP + (NIWE + 1) * JPILEN
-
- DELTA = NINS * JPILEN
- OFFSET = OFFSET + DELTA
- NOLONGP = OFFSET
-C NOLONGP = NILATGP + NINS * JPILEN
-
- DELTA = NOWE * JPILEN
- OFFSET = OFFSET + DELTA
- NOLATGP = OFFSET
-C NOLATGP = NOLONGP + NOWE * JPILEN
- DELTA = NONS * JPILEN
- OFFSET = OFFSET + DELTA
- NNSINDP = OFFSET
-C NNSINDP = NOLATGP + NONS * JPILEN
+C Set POINTER addresses
+ NWFACTP = IBASE
+ NMAXP = SIZES( 1) + NWFACTP
+ NINPNTP = SIZES( 2) + NMAXP
+ NILONGP = SIZES( 3) + NINPNTP
+ NILATGP = SIZES( 4) + NILONGP
+ NOLONGP = SIZES( 5) + NILATGP
+ NOLATGP = SIZES( 6) + NOLONGP
+ NNSINDP = SIZES( 7) + NOLATGP
+ NNSDISTP = SIZES( 8) + NNSINDP
+ NWEINDP = SIZES( 9) + NNSDISTP
+ NWEDISTP = SIZES(10) + NWEINDP
+ NISTRTP = SIZES(11) + NWEDISTP
+ NILSMP = SIZES(12) + NISTRTP
+ NOLSMP = SIZES(13) + NILSMP
- DELTA = 2 * NONS * JPILEN
- OFFSET = OFFSET + DELTA
- NNSDISTP = OFFSET
-C NNSDISTP = NNSINDP + 2 * NONS * JPILEN
-
-C
- DELTA = 2 * NONS * JPILEN
- OFFSET = OFFSET + DELTA
- NWEINDP = OFFSET
-C NWEINDP = NNSDISTP + 2 * NONS * JPILEN
-
- DELTA = 4 * NOWE * NONS * JPILEN
- OFFSET = OFFSET + DELTA
- NWEDISTP = OFFSET
-C NWEDISTP = NWEINDP + 4 * NOWE * NONS * JPILEN
-
- DELTA = 4 * NOWE * NONS * JPILEN
- OFFSET = OFFSET + DELTA
- NISTRTP = OFFSET
-C NISTRTP = NWEDISTP + 4 * NOWE * NONS * JPILEN
-
-C
-C LSM arrays
-C
- DELTA = NINS * JPILEN
- OFFSET = OFFSET + DELTA
- NILSMP = OFFSET
-c NILSMP = NISTRTP + NINS * JPILEN
-
- DELTA = 2 * NIWE * JPILEN
- OFFSET = OFFSET + DELTA
- NOLSMP = OFFSET
-c NOLSMP = NILSMP + 2 * NIWE * JPILEN
-
-C
+C Display pointers information
IF( KPR.GE.1 ) THEN
CALL INTLOG(JP_DEBUG,'IRGMEM: ************************',JPQUIET)
- CALL INTLOG(JP_DEBUG,'IRGMEM: * Some address values',JPQUIET)
- CALL INTLOG(JP_DEBUG,'IRGMEM: * may display overflowed',JPQUIET)
- CALL INTLOG(JP_DEBUG,'IRGMEM: * when printed to screen',JPQUIET)
- CALL INTLOG(JP_DEBUG,'IRGMEM: ************************',JPQUIET)
- CALL INTLOG(JP_DEBUG,'IRGMEM: Output base addresses.',JPQUIET)
- CALL INTLOG(JP_DEBUG,'IRGMEM: WFACT address = ',NWFACTP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: RMAX address = ',NMAXP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: RINPNT address = ',NINPNTP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: Input long.address = ',NILONGP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: Input lat.address = ',NILATGP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: Output long.address = ',NOLONGP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: Output lat.address = ',NOLATGP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: NS offset address = ',NNSINDP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: NS distance address = ',NNSDISTP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: WE offset address = ',NWEINDP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: WE distance address = ',NWEDISTP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: Line start array addr.= ',NISTRTP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: Input LSM address = ',NILSMP)
- CALL INTLOG(JP_DEBUG,'IRGMEM: Output LSM address = ',NOLSMP)
-
+ CALL INTLOG(JP_DEBUG,'IRGMEM: * Output addresses:', JPQUIET)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: * (print might overflow)',JPQUIET)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - WFACT = ',NWFACTP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - RMAX = ',NMAXP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - RINPNT = ',NINPNTP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - Input long. = ',NILONGP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - Input lat. = ',NILATGP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - Output long. = ',NOLONGP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - Output lat. = ',NOLATGP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - NS offset = ',NNSINDP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - NS distance = ',NNSDISTP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - WE offset = ',NWEINDP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - WE distance = ',NWEDISTP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - Line start = ',NISTRTP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - Input LSM = ',NILSMP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: - Output LSM = ',NOLSMP)
+ CALL INTLOG(JP_DEBUG,'IRGMEM: ***********************', JPQUIET)
ENDIF
-C
-C -----------------------------------------------------------------|
-C* Section 9. Return to calling routine. Format statements
-C -----------------------------------------------------------------|
-C
+
+C Section 9. Return to calling routine
900 CONTINUE
-C
- IF( KPR.GE.1 ) CALL INTLOG(JP_DEBUG,'IRGMEM: Section 9.',JPQUIET)
-C
- RETURN
+ IF (KPR.GE.1) CALL INTLOG(JP_DEBUG,'IRGMEM: Section 9.',JPQUIET)
+
+
END
+
diff --git a/interpolation/jacobi.F b/interpolation/jacobi.F
index ecd177f..17d75cc 100644
--- a/interpolation/jacobi.F
+++ b/interpolation/jacobi.F
@@ -176,6 +176,7 @@ C ------------------------------------------------------------------
C
100 CONTINUE
C
+ IOFFSET = 0
JACOBI = .FALSE.
C
CALL INTLOG(JP_DEBUG,'JACOBI: truncation = ', NM)
diff --git a/interpolation/jchmod.c b/interpolation/jchmod.c
index 9428ffc..464c0db 100644
--- a/interpolation/jchmod.c
+++ b/interpolation/jchmod.c
@@ -1,11 +1,11 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
@@ -45,6 +45,11 @@ char * name;
}
name = (char*) malloc(l1+1);
+ if( name == NULL ) {
+ perror("JCHMOD: malloc error (name)");
+ exit(1);
+ }
+
for( i = 0; i < l1; i++)
name[i] = filename[i];
name[l1] = '\0';
@@ -63,3 +68,4 @@ char * name;
fortint jchmod(char * filename, char * char_mode, long l1, long l2) {
return jchmod_(filename,char_mode,l1,l2);
}
+
diff --git a/interpolation/jgglat.F b/interpolation/jgglat.F
index b9c17c0..72dd697 100644
--- a/interpolation/jgglat.F
+++ b/interpolation/jgglat.F
@@ -130,6 +130,7 @@ C _______________________________________________________
C
100 CONTINUE
C
+ ZFUNC = 0.
JGGLAT = 0
C
ZRADDEG = 180.0 / PPI
diff --git a/interpolation/jmakgg.F b/interpolation/jmakgg.F
index ff05074..f469dd2 100644
--- a/interpolation/jmakgg.F
+++ b/interpolation/jmakgg.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -130,12 +130,12 @@ C _______________________________________________________
C
100 CONTINUE
IF ( KROW .LT. 0.0 ) THEN
- KRET = JPROUTINE + 1
- CALL INTLOG(JP_ERROR,'JMAKGG - negative row number given',KROW)
- GOTO 990
+ KRET = JPROUTINE + 1
+ CALL INTLOG(JP_ERROR,'JMAKGG - negative row number given',KROW)
+ GOTO 990
ENDIF
C
-C Calculate the byte offset into the file where the legendre
+C Calculate the byte offset into the file where the legendre
C functions for the latitude should be.
#ifdef REAL_8
NSIZE = 8 * (KTRUNC+1)*(KTRUNC+4)/2
@@ -147,9 +147,9 @@ C
C Find the current file length
CALL PBSEEK( KUNIT, 0, 2, NRET)
IF ( NRET .LT. 0 ) THEN
- CALL INTLOG(JP_ERROR,'JMAKGG - PBSEEK error', NRET)
- KRET = JPROUTINE + 2
- GOTO 990
+ CALL INTLOG(JP_ERROR,'JMAKGG - PBSEEK error', NRET)
+ KRET = JPROUTINE + 2
+ GOTO 990
ENDIF
C
C Use the length to determine how many rows have already been
@@ -166,15 +166,15 @@ C Loop through latitudes not in the file yet
DEG2RAD = PPI / 180.0
C
DO 210 NLATIT = NROWCT+1, KROW
- ALAT = PLAT(NLATIT) * DEG2RAD
+ ALAT = PLAT(NLATIT) * DEG2RAD
CALL JSPLEG1( PLEG, ALAT, KTRUNC)
CALL PBWRITE( KUNIT, PLEG, NSIZE, NRET)
IF ( NRET .LT. NSIZE ) THEN
- CALL INTLOG(JP_ERROR,'JMAKGG - PBWRITE error.', NRET)
- CALL INTLOG(JP_ERROR,'JMAKGG - bytes required = ', NSIZE)
- KRET = JPROUTINE + 3
- GOTO 990
- ENDIF
+ CALL INTLOG(JP_ERROR,'JMAKGG - PBWRITE error.', NRET)
+ CALL INTLOG(JP_ERROR,'JMAKGG - bytes required = ', NSIZE)
+ KRET = JPROUTINE + 3
+ GOTO 990
+ ENDIF
210 CONTINUE
C _______________________________________________________
C
@@ -187,3 +187,4 @@ C
990 CONTINUE
RETURN
END
+
diff --git a/interpolation/jmakgg3.F b/interpolation/jmakgg3.F
index a699e42..4d22391 100644
--- a/interpolation/jmakgg3.F
+++ b/interpolation/jmakgg3.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -130,12 +130,12 @@ C _______________________________________________________
C
100 CONTINUE
IF ( KROW .LT. 0.0 ) THEN
- KRET = JPROUTINE + 1
- CALL INTLOG(JP_ERROR,'JMAKGG3: negative row number given',KROW)
- GOTO 990
+ KRET = JPROUTINE + 1
+ CALL INTLOG(JP_ERROR,'JMAKGG3: negative row number given',KROW)
+ GOTO 990
ENDIF
C
-C Calculate the byte offset into the file where the legendre
+C Calculate the byte offset into the file where the legendre
C functions for the latitude should be.
#ifdef REAL_8
NSIZE = 8 * (KTRUNC+1)*(KTRUNC+4)/2
@@ -147,9 +147,9 @@ C
C Find the current file length
CALL PBSEEK3( KUNIT, 0, 2, NRET)
IF ( NRET .LT. 0 ) THEN
- CALL INTLOG(JP_ERROR,'JMAKGG3: PBSEEK error', NRET)
- KRET = JPROUTINE + 2
- GOTO 990
+ CALL INTLOG(JP_ERROR,'JMAKGG3: PBSEEK error', NRET)
+ KRET = JPROUTINE + 2
+ GOTO 990
ENDIF
C
C Use the length to determine how many rows have already been
@@ -166,15 +166,15 @@ C Loop through latitudes not in the file yet
DEG2RAD = PPI / 180.0
C
DO 210 NLATIT = NROWCT+1, KROW
- ALAT = PLAT(NLATIT) * DEG2RAD
+ ALAT = PLAT(NLATIT) * DEG2RAD
CALL JSPLEG1( PLEG, ALAT, KTRUNC)
CALL PBWRITE3( KUNIT, PLEG, NSIZE, NRET)
IF ( NRET .LT. NSIZE ) THEN
- CALL INTLOG(JP_ERROR,'JMAKGG3: PBWRITE error.', NRET)
- CALL INTLOG(JP_ERROR,'JMAKGG3: bytes required = ', NSIZE)
- KRET = JPROUTINE + 3
- GOTO 990
- ENDIF
+ CALL INTLOG(JP_ERROR,'JMAKGG3: PBWRITE error.', NRET)
+ CALL INTLOG(JP_ERROR,'JMAKGG3: bytes required = ', NSIZE)
+ KRET = JPROUTINE + 3
+ GOTO 990
+ ENDIF
210 CONTINUE
C _______________________________________________________
C
@@ -187,3 +187,4 @@ C
990 CONTINUE
RETURN
END
+
diff --git a/interpolation/jmakll.F b/interpolation/jmakll.F
index 687a8ca..aa88306 100644
--- a/interpolation/jmakll.F
+++ b/interpolation/jmakll.F
@@ -233,3 +233,4 @@ C
990 CONTINUE
RETURN
END
+
diff --git a/interpolation/jmakll3.F b/interpolation/jmakll3.F
index 5c76cbf..f909a8d 100644
--- a/interpolation/jmakll3.F
+++ b/interpolation/jmakll3.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -152,7 +152,7 @@ C
ZLAT = PLAT
ENDIF
C
-C Calculate the byte offset into the file where the legendre
+C Calculate the byte offset into the file where the legendre
C functions for the latitude should be.
C
#ifdef REAL_8
@@ -167,8 +167,8 @@ C
CALL PBSEEK3( KUNIT, 0, 2, NRET)
IF( NRET.LT.0 ) THEN
CALL INTLOG(JP_ERROR,'JMAKLL3: PBSEEK error',NRET)
- KRET = JPROUTINE + 2
- GOTO 990
+ KRET = JPROUTINE + 2
+ GOTO 990
ENDIF
C
C Use the length to determine how many rows have already been
@@ -217,9 +217,9 @@ C
IF( NRET.LT.NSIZE ) THEN
CALL INTLOG(JP_ERROR,'JMAKLL3: PBWRITE error.', NRET)
CALL INTLOG(JP_ERROR,'JMAKLL3: bytes required = ', NSIZE)
- KRET = JPROUTINE + 3
- GOTO 990
- ENDIF
+ KRET = JPROUTINE + 3
+ GOTO 990
+ ENDIF
ENDDO
C _______________________________________________________
C
@@ -232,3 +232,4 @@ C
990 CONTINUE
RETURN
END
+
diff --git a/interpolation/jmvugg.F b/interpolation/jmvugg.F
index efdc48a..757697e 100644
--- a/interpolation/jmvugg.F
+++ b/interpolation/jmvugg.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -17,8 +17,8 @@ C
C Purpose
C _______
C
-C This routine moves gaussian grid point data from array PZFA to
-C array POUTF. It handles the case when the number of latitudes
+C This routine moves gaussian grid point data from array PZFA to
+C array POUTF. It handles the case when the number of latitudes
C is different in the two hemispheres.
C
C
@@ -64,8 +64,8 @@ C
C Method
C ______
C
-C Moves latitude rows of points from PZFA into the correct
-C geographical positions in POUTF. POUTF may already be
+C Moves latitude rows of points from PZFA into the correct
+C geographical positions in POUTF. POUTF may already be
C partially full. The distribution is not symmetrical north-south.
C
C
@@ -90,7 +90,7 @@ C ________
C
C For calculation purposes, the number of longitude points
C has to be greater than 2*(output truncation) to ensure that the
-C fourier transform is exact (see Reference, page 10).
+C fourier transform is exact (see Reference, page 10).
C Parameter JPLONO is set to 860 to ensure that PZFA will have
C enough slots for the KLON points for all values of regular
C grid intervals from N1 to N720.
@@ -212,33 +212,33 @@ C
IF ( NDBG .GT. 1) CALL INTLOG(JP_DEBUG,
X 'JMVUGG - More rows in North Hemis. than South',JPQUIET)
C
-C Yes, so see if there are any rows in the current batch for the
+C Yes, so see if there are any rows in the current batch for the
C south as well as the north
IF ( NBASE .LT. (2*KGNUM - KSOUTH) ) THEN
C
C None for south in current batch, move all rows to north.
- NFLAG = 1
+ NFLAG = 1
C
IF ( NDBG .GT. 1) CALL INTLOG(JP_DEBUG,
X 'JMVUGG - No rows for S, move rows to N = ', NROWS)
C
CALL JMOVGG( PZFA, PWEST, KGNUM, KSTART, NROWS, KCOLS,
X KLON, KJPWR, KOFSET, POUTF, NFLAG)
- ELSE
+ ELSE
C
C Some for south.
C
C Move rows for north only first.
IF ( (2*KGNUM-KSOUTH) .GT. (NTOP-1) ) THEN
NROWS = (2*KGNUM-KSOUTH) - NTOP + 1
- NFLAG = 1
+ NFLAG = 1
C
IF ( NDBG .GT. 1) CALL INTLOG(JP_DEBUG,
X 'JMVUGG - Move North rows only first = ', NROWS)
C
CALL JMOVGG( PZFA, PWEST, KGNUM, KSTART, NROWS, KCOLS,
X KLON, KJPWR, KOFSET, POUTF, NFLAG)
- NTOP = KSTART + NROWS
+ NTOP = KSTART + NROWS
LATEST = LATEST + (2 * NROWS)
NROWS = INROWS - NROWS
ENDIF
@@ -250,10 +250,10 @@ C
IF ( NDBG .GT. 1) CALL INTLOG(JP_DEBUG,
X 'JMVUGG - Move common lat.(N & S) = ', NROWS)
C
- CALL JMOVGG( PZFA( 1, LATEST), PWEST, KGNUM, NTOP,
+ CALL JMOVGG( PZFA( 1, LATEST), PWEST, KGNUM, NTOP,
X NROWS, KCOLS, KLON, KJPWR, KOFSET, POUTF,NFLAG)
ENDIF
- ENDIF
+ ENDIF
C
C Overall there are more rows in Southern Hemisphere than Northern
ELSE
@@ -262,7 +262,7 @@ C
X 'JMVUGG - More rows in South Hemis. than North',JPQUIET)
C
C
-C So see if there are any rows in the current batch for the
+C So see if there are any rows in the current batch for the
C north as well as the south
IF ( NBASE .LT. KNORTH ) THEN
C
@@ -274,7 +274,7 @@ C
C
CALL JMOVGG( PZFA, PWEST, KGNUM, KSTART, NROWS, KCOLS,
X KLON, KJPWR, KOFSET, POUTF, NFLAG)
- ELSE
+ ELSE
C
C Some for north. Move rows for south only first.
NROWS = KNORTH - NTOP + KDIFF
@@ -283,7 +283,7 @@ C
IF ( NDBG .GT. 1) CALL INTLOG(JP_DEBUG,
X 'JMVUGG - Move South rows only first = ', NROWS)
C
- NFLAG = 2
+ NFLAG = 2
CALL JMOVGG( PZFA, PWEST, KGNUM, KSTART, NROWS, KCOLS,
X KLON, KJPWR, KOFSET, POUTF, NFLAG)
LATEST = LATEST + (2 * NROWS)
@@ -299,10 +299,10 @@ C
IF ( NDBG .GT. 1) CALL INTLOG(JP_DEBUG,
X 'JMVUGG - Move common lats(N & S) = ', NROWS)
C
- CALL JMOVGG( PZFA( 1, LATEST), PWEST, KGNUM, NTOP,
+ CALL JMOVGG( PZFA( 1, LATEST), PWEST, KGNUM, NTOP,
X NROWS, KCOLS, KLON, KJPWR, KOFSET, POUTF,NFLAG)
ENDIF
- ENDIF
+ ENDIF
ENDIF
C _______________________________________________________
C
diff --git a/interpolation/jmvull.F b/interpolation/jmvull.F
index fc31ed7..e775e8e 100644
--- a/interpolation/jmvull.F
+++ b/interpolation/jmvull.F
@@ -1,14 +1,14 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- SUBROUTINE JMVULL( PZFA, PNORTH, PSOUTH, PWEST, PLATINC, PLONINC,
+ SUBROUTINE JMVULL( PZFA, PNORTH, PSOUTH, PWEST, PLATINC, PLONINC,
X PSTART,PDIFF, KROWS, KCOLS, KLON, KJPWR, POUTF)
C
C---->
@@ -25,7 +25,7 @@ C
C Interface
C _________
C
-C CALL JMVULL( PZFA, PNORTH, PSOUTH, PWEST, PLATINC, PLONINC,
+C CALL JMVULL( PZFA, PNORTH, PSOUTH, PWEST, PLATINC, PLONINC,
C X PSTART,PDIFF, KROWS, KCOLS, KLON, KJPWR, POUTF)
C
C
@@ -63,8 +63,8 @@ C
C Method
C ______
C
-C Moves latitude rows of points from PZFA into the correct
-C geographical positions in POUTF. POUTF may already be
+C Moves latitude rows of points from PZFA into the correct
+C geographical positions in POUTF. POUTF may already be
C partially full. The distribution is not symmetrical north-south.
C
C
@@ -91,7 +91,7 @@ C POUTF is a 2-dimensional array, with first dimension = KCOLS.
C
C For calculation purposes, the number of longitude points
C has to be greater than 2*(output truncation) to ensure that the
-C fourier transform is exact (see Reference, page 10).
+C fourier transform is exact (see Reference, page 10).
C Parameter JPLONO is set to 860 to ensure that PZFA will have
C enough slots for the KLON points for all values of regular
C grid intervals from N1 to N720.
@@ -217,14 +217,14 @@ C
ELSE
C
C Move excess southern latitudes ...
- NROWS = NINT( ( ZTOP - PNORTH )/PLATINC )
+ NROWS = NINT( ( ZTOP - PNORTH )/PLATINC )
NROWS = MIN( NROWS, KROWS )
- NFLAG = 2
+ NFLAG = 2
C
IF ( NDBG .GT. 1) CALL INTLOG(JP_DEBUG,
X 'JMVULL - Move excess south latitudes = ', NROWS)
C
- CALL JMOVLL(PZFA, PNORTH, PWEST, PLATINC, PLONINC, PSTART,
+ CALL JMOVLL(PZFA, PNORTH, PWEST, PLATINC, PLONINC, PSTART,
X NROWS, KCOLS, KLON, KJPWR, POUTF, NFLAG)
ENDIF
C
@@ -239,7 +239,7 @@ C
300 CONTINUE
C
C Move rows common to both if any left ...
- IF ( NROWS .GT. 0 ) THEN
+ IF ( NROWS .GT. 0 ) THEN
C
IF ( NDBG .GT. 1) CALL INTLOG(JP_DEBUG,
X 'JMVULL - Move common latitudes(N & S) = ', NROWS)
diff --git a/interpolation/jnorsgg.F b/interpolation/jnorsgg.F
index f7d432c..82097b9 100644
--- a/interpolation/jnorsgg.F
+++ b/interpolation/jnorsgg.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -151,15 +151,15 @@ C Accept latitude if within 100th of a degree of stored latitude.
NGGLAT = NINT(PGGLAT(J202)*JPFACTOR+0.5)
IF ( NPLAT .GE. NGGLAT ) THEN
IF ( NPLAT .EQ. NGGLAT ) THEN
- NPOS = J202
+ NPOS = J202
ELSE
- NPOS = J202 - KUP
+ NPOS = J202 - KUP
ENDIF
- GOTO 900
- ENDIF
+ GOTO 900
+ ENDIF
202 CONTINUE
C
-C
+C
C On drop-through (e.g. for -90.0), use southernmost latitude
NPOS = 2*KNUM
C
diff --git a/interpolation/jopnggsm.c b/interpolation/jopnggsm.c
index 6c0f6be..327ce49 100644
--- a/interpolation/jopnggsm.c
+++ b/interpolation/jopnggsm.c
@@ -12,10 +12,11 @@
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
-#include <sys/types.h>
#include <unistd.h>
-#include <sys/mman.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
#include "common/fortint.h"
#include "common/fortreal.h"
#include "common/JPointer.h"
@@ -34,7 +35,7 @@
#define PBCLOSE pbclose_
#endif
-#ifdef linux
+#if defined(linux) && !defined(darwin)
# if !defined __off64_t_defined
typedef __off64_t off64_t;
#define __off64_t_defined
@@ -51,9 +52,17 @@ extern OFF_T ftello64(FILE *);
#define OFF_T off_t
#endif
+#if defined(CRAY)
+typedef void* _fcd;
+#else
+#define _fcd char *
+#endif
-
+void PBOPEN(fortint* unit, _fcd name, _fcd mode, fortint* iret, fortint l1, fortint l2);
+void PBCLOSE(fortint* unit, fortint* iret);
void INTLOGT(char * message, long length);
+void JMAKGG(fortint* kunit, fortint* ktrunc, fortint* krow, fortfloat* plat, fortfloat* pleg, fortint* kret);
+
FILE * pbfp(long);
void JOPNGGSM(
@@ -131,8 +140,8 @@ C
C The filename for the legendre polynomials has the form:
C cf_xxxx_nnnn Truncation xxxx, Gaussian number nnnn
C For example,
-C cf_0213_0160 T213 N160
-C cf_0106_0080 T106 N80
+C cf_0213_0160 T213 N160
+C cf_0106_0080 T106 N80
C
C On the C90, the file of polynomials may be cached in /work/marsint
C
@@ -197,7 +206,8 @@ int ktrunc = (int) (*iktrunc);
*/
len_pleg = sizeof(fortfloat) * (ktrunc+1) * (ktrunc+4) /2;
len = *knum * sizeof(fortfloat) * (ktrunc+1) * (ktrunc+4) /2;
- sprintf( ypfn+3, "%04d", ktrunc);
+
+ sprintf( ypfn+3, "%04d", ktrunc);
sprintf( ypfn+7, "_%04d", *knum);
/*
@@ -342,7 +352,7 @@ int ktrunc = (int) (*iktrunc);
}
/*
-// Close it, rename it, and open it again with read access
+// Close it and rename it
*/
free(pleg);
PBCLOSE(&fpindex,kret);
@@ -352,43 +362,37 @@ int ktrunc = (int) (*iktrunc);
*kret = (fortint) 995;
return;
}
-
- l1 = strlen(filename);
- l2 = 1;
- PBOPEN(&fpindex,filename,"r",kret,l1,l2);
- if( *kret ) {
- perror("JOPNGGSM: PBOPEN error");
- *kret = (fortint) 994;
- return;
- }
- fp = pbfp((long)fpindex);
- if( fp == NULL ) {
- perror("JOPNGGSM: file pointer after PBOPEN is NULL");
- *kret = (fortint) 994;
- return;
- }
}
/*
-// Check the file size
+// Check the file size and reopen it with read access
*/
-#ifdef FOPEN64
- fseeko64(fp, 0, 2);
- if( len != ftello64(fp) ) {
-#else
- fseek(fp, 0, 2);
- if( len != ftell(fp) ) {
-#endif
- fprintf(stderr,"JOPNGGSM: coefficients file size should be %lld bytes\n", len)
-;
+ struct stat st;
+ if( -1==stat(filename,&st) ) {
+ perror(filename);
+ *kret = (fortint) 994;
+ return;
+ }
+ if( len != st.st_size ) {
+ fprintf(stderr,"JOPNGGSM: coefficients file size should be %lld bytes, but it is %lld bytes.\n", len, st.st_size);
*kret = (fortint) 993;
return;
}
-#ifdef FOPEN64
- fseeko64(fp, 0, 0);
-#else
- fseek(fp, 0, 0);
-#endif
+
+ l1 = strlen(filename);
+ l2 = 1;
+ PBOPEN(&fpindex,filename,"r",kret,l1,l2);
+ if( *kret ) {
+ perror("JOPNGGSM: PBOPEN error");
+ *kret = (fortint) 992;
+ return;
+ }
+ fp = pbfp((long)fpindex);
+ if( fp == NULL ) {
+ perror("JOPNGGSM: file pointer after PBOPEN is NULL");
+ *kret = (fortint) 992;
+ return;
+ }
/*
// Map the file
@@ -400,13 +404,11 @@ int ktrunc = (int) (*iktrunc);
#ifdef FOPEN64
result = (void *) mmap64(addr,(size_t) len, (PROT_READ),
- MAP_SHARED,(int) nunit, (OFF_T)off);
+ MAP_SHARED, (int) nunit, (OFF_T) off);
#else
result = (void *) mmap(addr,(size_t) len, (PROT_READ),
- MAP_SHARED,(int) nunit,(OFF_T) off);
+ MAP_SHARED, (int) nunit, (OFF_T) off);
#endif
- /* result = (void *) mmap(addr,(size_t) len, (PROT_READ), */
- /* MAP_SHARED,(int) nunit,(off_t) off); */
if( (caddr_t) result == (caddr_t) -1 ) {
perror("JOPNGGSM: mmap error");
@@ -426,3 +428,4 @@ int ktrunc = (int) (*iktrunc);
return;
}
+
diff --git a/interpolation/jopnllsm.c b/interpolation/jopnllsm.c
index 9ba910a..4c5e5f5 100644
--- a/interpolation/jopnllsm.c
+++ b/interpolation/jopnllsm.c
@@ -9,26 +9,19 @@
* nor does it submit to any jurisdiction.
*/
-#ifdef linux
-#ifndef __USE_LARGEFILE64
-#define __USE_LARGEFILE64
-#endif
-#include <sys/stat.h>
-#endif
-
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
-#include <sys/types.h>
#include <unistd.h>
-#include <sys/mman.h>
#include <string.h>
+#include <time.h>
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
#include "common/fortint.h"
#include "common/fortreal.h"
#include "common/JPointer.h"
-
-
#ifdef FORTRAN_NO_UNDERSCORE
#define JOPNLLSM jopnllsm
#define JMAKLL jmakll
@@ -43,7 +36,7 @@
#define PBCLOSE pbclose_
#endif
-#ifdef linux
+#if defined(linux) && !defined(darwin)
# if !defined __off64_t_defined
typedef __off64_t off64_t;
#define __off64_t_defined
@@ -70,6 +63,15 @@ int iitimer(int *seconds)
return (int)(timval1 - (time_t)*seconds);
}
+#if defined(CRAY)
+typedef void* _fcd;
+#else
+#define _fcd char *
+#endif
+
+void PBOPEN(fortint* unit, _fcd name, _fcd mode, fortint* iret, fortint l1, fortint l2);
+void PBCLOSE(fortint* unit, fortint* iret);
+void JMAKLL(fortint* kunit, fortint* ktrunc, fortfloat* pintvl, fortfloat* plat, fortfloat* pleg, fortint* kret);
void INTLOGT(char * message, long length);
FILE * pbfp(long);
@@ -94,7 +96,7 @@ C
C Interface
C _________
C
-C CALL JOPNLLSM( IPDUM, PLATINC, KTRUNC, KUNIT, ZBUILD, KRET)
+C CALL JOPNLLSM(IPDUM,PLATINC,KTRUNC,KUNIT,ZBUILD,KRET)
C
C Input parameters
C ________________
@@ -147,12 +149,12 @@ C Comments
C ________
C
C The filename for the legendre polynomials has the form:
-C cf_txxxx_raabbbb Txxxx aa.bbbb degrees
+C cf_txxxx_raabbbb Truncation xxxx, aa.bbbb degrees
C For example,
-C cf_t0213_r0050000 T213 0.5 degrees
-C cf_t0106_r0250000 T106 2.5 degrees
+C cf_t0213_r0050000 T213 0.5 degrees
+C cf_t0106_r0250000 T106 2.5 degrees
C
-C On the C90, the file of polynomials may be cached in /owrk/marsint
+C On the C90, the file of polynomials may be cached in /work/marsint
C
C Otherwise the file is located in (or will be created in) the first
C directory given by one of the following (in the order listed, if
@@ -194,9 +196,8 @@ static char yarray[12][21];
static int ncnt = 0;
static int nunit = -1;
int i;
-OFF_T len, len_pleg, knum;
+OFF_T len, len_pleg;
static OFF_T oldlen;
-int kbuild ;
char * fn;
static fortint fpindex;
static FILE * fp;
@@ -206,6 +207,8 @@ static void * oldresult = 0;
static void * resultarray[12];
static int unitarray[12];
fortfloat plat = 0.0;
+int kbuild ;
+OFF_T knum;
fortfloat * pleg;
int exist = 0;
char message[] = "JOPNLLSM: creating coefficients file";
@@ -216,22 +219,13 @@ int ktrunc = (int) (*iktrunc);
/*
// Setup the file name
*/
- len_pleg = sizeof(fortfloat) * (ktrunc+1) * (ktrunc+4) /2;
-
+ len_pleg = sizeof(fortfloat) * (ktrunc+1) * (ktrunc+4) /2;
*zbuild = *platinc;
-
+ kbuild = (int) (((*zbuild)*100000.0) + 0.5);
knum = (OFF_T) ((90.0/(*zbuild)) + 0.5) + 1;
- len = (OFF_T) (knum * sizeof(fortfloat) * (ktrunc+1) * (ktrunc+4)/2);
-
-/*
-printf("################# len: %lld, knum: %lld, sizeof(double): %d, ktrunc+1: %d, ktrunc+4: %d\n",len,knum,sizeof(double),(ktrunc+1),(ktrunc+4));
-*/
+ len = (OFF_T) (knum * sizeof(fortfloat) * (ktrunc+1) * (ktrunc+4) /2);
-/*
-// Setup the file name
-*/
sprintf( ypfn+4, "%04d", ktrunc);
- kbuild = (int) (((*zbuild)*100000.0) + 0.5);
#ifdef REAL_8
sprintf( ypfn+8, "_R%07d", kbuild);
#else
@@ -268,14 +262,13 @@ printf("################# len: %lld, knum: %lld, sizeof(double): %d, ktrunc+1: %
*kret = (fortint) 999;
return;
}
-
}
*/
/*
If more than 12 files are memory mapped , error
*/
- if(ncnt==13) {
+ if(ncnt>=12) {
fprintf(stderr,"JOPNLLSM: attempt to memory map more than 12 files\n");
*kret = (fortint) 999;
return;
@@ -374,7 +367,6 @@ printf("################# len: %lld, knum: %lld, sizeof(double): %d, ktrunc+1: %
*kret = (fortint) 996;
return;
}
-
JMAKLL( &fpindex, iktrunc, zbuild, &plat, pleg, kret);
if( *kret != 0 ) {
free(pleg);
@@ -382,7 +374,7 @@ printf("################# len: %lld, knum: %lld, sizeof(double): %d, ktrunc+1: %
}
/*
-// Close it, rename it, and open it again with read access
+// Close it and rename it
*/
free(pleg);
PBCLOSE(&fpindex,kret);
@@ -392,76 +384,37 @@ printf("################# len: %lld, knum: %lld, sizeof(double): %d, ktrunc+1: %
*kret = (fortint) 995;
return;
}
-
- l1 = strlen(filename);
- l2 = 1;
- PBOPEN(&fpindex,filename,"r",kret,l1,l2);
- if( *kret ) {
- perror("JOPNLLSM: PBOPEN error");
- return;
- }
- fp = pbfp((long)fpindex);
- if( fp == NULL ) {
- perror("JOPNLLSM: file pointer after PBOPEN is NULL");
- *kret = (fortint) 994;
- return;
- }
}
/*
-// Check the file size
+// Check the file size and reopen it with read access
*/
-#ifdef FOPEN64
-
-#ifdef linux
-/* On Linux -m32, lseek64 doesn't work. Use fstat64 instead */
-
-{
-
- struct stat64 st;
-
- if(fstat64(fileno(fp),&st) == -1)
- {
- fprintf(stderr,"JOPNLLSM: coefficients file fstat failed\n");
- *kret = (fortint) 993;
- return;
- }
- else
- {
- if(len != st.st_size)
- {
- fprintf(stderr,"JOPNLLSM: coefficients file size should be %lld bytes, it is %lld\n", len,st.st_size);
- *kret = (fortint) 993;
- return;
- }
- }
-}
-#else
- fseeko64(fp, 0, 2);
- if( len != ftello64(fp) ) {
- long long ftello = ftello64(fp);
- fprintf(stderr,"JOPNLLSM: coefficients file size should be %lld bytes, it is %lld\n", len,ftello);
- *kret = (fortint) 993;
+ struct stat st;
+ if( -1==stat(filename,&st) ) {
+ perror(filename);
+ *kret = (fortint) 994;
return;
}
-#endif
-
-#else
- fseek(fp, 0, 2);
- if( len != ftell(fp) ) {
- long ftello = ftell(fp);
-
- fprintf(stderr,"JOPNLLSM: coefficients file size should be %ld bytes, it is %ld\n", len,ftello);
+ if( len != st.st_size ) {
+ fprintf(stderr,"JOPNLLSM: coefficients file size should be %lld bytes, but it is %lld bytes.\n", len, st.st_size);
*kret = (fortint) 993;
return;
}
-#endif
-#ifdef FOPEN64
- fseeko64(fp, 0, 0);
-#else
- fseek(fp, 0, 0);
-#endif
+ l1 = strlen(filename);
+ l2 = 1;
+ PBOPEN(&fpindex,filename,"r",kret,l1,l2);
+ if( *kret ) {
+ perror("JOPNLLSM: PBOPEN error");
+ *kret = (fortint) 992;
+ return;
+ }
+ fp = pbfp((long)fpindex);
+ if( fp == NULL ) {
+ perror("JOPNLLSM: file pointer after PBOPEN is NULL");
+ *kret = (fortint) 992;
+ return;
+ }
/*
// Map the file
@@ -476,14 +429,14 @@ printf("################# len: %lld, knum: %lld, sizeof(double): %d, ktrunc+1: %
#ifdef FOPEN64
result = (void *) mmap64(addr,(size_t) len, (PROT_READ),
- MAP_SHARED,(int) nunit, (OFF_T)off);
+ MAP_SHARED, (int) nunit, (OFF_T) off);
#else
result = (void *) mmap(addr,(size_t) len, (PROT_READ),
- MAP_SHARED,(int) nunit,(OFF_T) off);
+ MAP_SHARED, (int) nunit, (OFF_T) off);
#endif
if( (caddr_t) result == (caddr_t) -1 ) {
- perror("JOPNLLSM: mmap64 error");
+ perror("JOPNLLSM: mmap error");
*kret = (fortint) 992;
return;
}
@@ -503,3 +456,4 @@ printf("################# len: %lld, knum: %lld, sizeof(double): %d, ktrunc+1: %
return;
}
+
diff --git a/interpolation/jparam2.h b/interpolation/jparam2.h
index f49c3f9..d7566a4 100644
--- a/interpolation/jparam2.h
+++ b/interpolation/jparam2.h
@@ -1,16 +1,17 @@
C
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
C Handling of spectral -> grid interpolation coefficients memory
C
LOGICAL LFREECF
- INTEGER NFREECF, NISIZE6, NISIZE7
+ INTEGER NFREECF
+ INTEGER*8 NISIZE6, NISIZE7
CHARACTER*20 YOLDGG, YOLDLL
- COMMON /JDCSPGP/ NFREECF,NISIZE6,NISIZE7,LFREECF,YOLDGG,YOLDLL
+ COMMON /JDCSPGP/ NISIZE6,NISIZE7,NFREECF,LFREECF,YOLDGG,YOLDLL
diff --git a/interpolation/jreadgg.F b/interpolation/jreadgg.F
index 8abe84d..1b6f9cb 100644
--- a/interpolation/jreadgg.F
+++ b/interpolation/jreadgg.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -45,7 +45,7 @@ C
C Method
C ______
C
-C Calculate offset of the legendre functions for the latitude row
+C Calculate offset of the legendre functions for the latitude row
C in the file, skip to the row and read the functions.
C
C Retries the read upto 3 times if necessary
@@ -112,8 +112,8 @@ C
100 CONTINUE
IF ( KROW .LT. 0 ) THEN
CALL INTLOG(JP_ERROR,'JREADGG: negative row number given',KROW)
- KRET = JPROUTINE + 1
- GOTO 990
+ KRET = JPROUTINE + 1
+ GOTO 990
ENDIF
C
C Calculate the byte offset into the file where the legendre
@@ -133,7 +133,7 @@ C
C* Section 2. Processing.
C _______________________________________________________
C
-C Position file unless the previous read left it in the correct
+C Position file unless the previous read left it in the correct
C position already
C
NTRIES = 0
@@ -143,20 +143,20 @@ C
CALL PBSEEK64( KUNIT, NEWPOS, 0, FRET)
IF ( FRET .NE. NEWPOS ) THEN
CALL INTLOG(JP_ERROR,'JREADGG: PBSEEK64 error.',FRET)
- KRET = JPROUTINE + 2
- GOTO 990
- ENDIF
+ KRET = JPROUTINE + 2
+ GOTO 990
+ ENDIF
ENDIF
C
C Read the legendre coefficients
CALL PBREAD( KUNIT, PLEG, NSIZE, NRET)
IF ( NRET .NE. NSIZE ) THEN
- IF ( NTRIES .EQ. JPMXTRY ) THEN
+ IF ( NTRIES .EQ. JPMXTRY ) THEN
CALL INTLOG(JP_ERROR,'JREADGG: PBREAD error.',NRET)
- KRET = JPROUTINE + 3
- GOTO 990
- ELSE
- GOTO 210
+ KRET = JPROUTINE + 3
+ GOTO 990
+ ELSE
+ GOTO 210
ENDIF
ENDIF
C
diff --git a/interpolation/jreadll.F b/interpolation/jreadll.F
index bef6b2d..db591fd 100644
--- a/interpolation/jreadll.F
+++ b/interpolation/jreadll.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -46,7 +46,7 @@ C
C Method
C ______
C
-C Calculate offset of the legendre functions for the latitude row
+C Calculate offset of the legendre functions for the latitude row
C in the file, skip to the row and read the functions.
C
C Retries the read upto 3 times if necessary
@@ -137,7 +137,7 @@ C
C* Section 2. Processing.
C _______________________________________________________
C
-C Position file unless the previous read left it in the correct
+C Position file unless the previous read left it in the correct
C position already
C
NTRIES = 0
@@ -147,20 +147,20 @@ C
CALL PBSEEK64( KUNIT, NEWPOS, 0, FRET)
IF ( FRET .NE. NEWPOS ) THEN
CALL INTLOG(JP_ERROR,'JREADLL: PBSEEK64 error.',FRET)
- KRET = JPROUTINE + 2
- GOTO 990
- ENDIF
+ KRET = JPROUTINE + 2
+ GOTO 990
+ ENDIF
ENDIF
C
C Read the legendre coefficients
CALL PBREAD( KUNIT, PLEG, NSIZE, NRET)
IF ( NRET .NE. NSIZE ) THEN
- IF ( NTRIES .EQ. JPMXTRY ) THEN
+ IF ( NTRIES .EQ. JPMXTRY ) THEN
CALL INTLOG(JP_ERROR,'JREADLL: PBREAD error.',NRET)
- KRET = JPROUTINE + 3
- GOTO 990
- ELSE
- GOTO 210
+ KRET = JPROUTINE + 3
+ GOTO 990
+ ELSE
+ GOTO 210
ENDIF
ENDIF
C
diff --git a/interpolation/jsllgp.F b/interpolation/jsllgp.F
index 9db15c4..faea0f6 100644
--- a/interpolation/jsllgp.F
+++ b/interpolation/jsllgp.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -61,7 +61,7 @@ C Externals
C _________
C
C JJSET99 - Sets up FFT
-C JSTRLL - Generate latitude line from spherical harmonics
+C JSTRLL - Generate latitude line from spherical harmonics
C JSTRWLL - Generate latitude line from spherical harmonics (wind)
C JDEBUG - Checks environment variable to switch on/off debug
C INTLOG - Logs output messages
@@ -207,7 +207,7 @@ C
C
C For calculation purposes, ILON, the number of longitude points,
C has to be greater than 2*(output truncation) to ensure that the
-C fourier transform is exact (see Reference, page 10).
+C fourier transform is exact (see Reference, page 10).
C The following loop increases ILON*IJPWR until ILON=>2*ITOUP1.
C Later, when filling the output array POUTF, the longitude points
C have to be taken selectively to avoid the intermediate generated
@@ -276,7 +276,7 @@ C
CALL JSTRLL(PSHUP, KTRUNC, PSTART, ZBUILD, ILON,
X ALEG, ATRIGS, IMFAX, ZFA, KRET)
ENDIF
- IF( KRET.NE.0 ) GOTO 900
+ IF( KRET.NE.0 ) GOTO 900
C
C Find start offset in storage array
C
diff --git a/interpolation/jsymgg.F b/interpolation/jsymgg.F
index 843da3f..ac89686 100644
--- a/interpolation/jsymgg.F
+++ b/interpolation/jsymgg.F
@@ -165,6 +165,7 @@ C* Section 1. Initialization.
C _______________________________________________________
C
100 CONTINUE
+ IOFF = 0
C
C First time through, dynamically allocate memory for workspace
C
diff --git a/interpolation/jsymll.F b/interpolation/jsymll.F
index a30e177..c9d11c5 100644
--- a/interpolation/jsymll.F
+++ b/interpolation/jsymll.F
@@ -3,15 +3,15 @@
#endif
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- SUBROUTINE JSYMLL( PSHUP, KTRUNC, PSTART, PBUILD, PINTVL, KLUNIT,
+ SUBROUTINE JSYMLL( PSHUP, KTRUNC, PSTART, PBUILD, PINTVL, KLUNIT,
X KLATO,KLONO,PLEG,PTRIGS,KMFAX,PZFA,KRET)
C
C---->
@@ -26,7 +26,7 @@ C
C INTERFACE
C _________
C
-C CALL JSYMLL( PSHUP, KTRUNC, PSTART, PBUILD, PINTVL, KLUNIT,
+C CALL JSYMLL( PSHUP, KTRUNC, PSTART, PBUILD, PINTVL, KLUNIT,
C X KLATO,KLONO,PLEG,PTRIGS,KMFAX,PZFA,KRET)
C
C Input parameters
@@ -86,10 +86,10 @@ C
C This is a redesign, based on SPECGP.F
C
C It handles transformation to a regular lat/long grid.
-C The generated grid is symmetrical about the equator, so
+C The generated grid is symmetrical about the equator, so
C PSTART must be positive.
C
-C It is not for U and V fields (no correction is applied at the
+C It is not for U and V fields (no correction is applied at the
C poles).
C
C
@@ -160,6 +160,7 @@ C* Section 1. Initialization.
C _______________________________________________________
C
100 CONTINUE
+ IOFF = 0
cs timer1=Itimer(0)
C
C First time through, dynamically allocate memory for workspace
@@ -238,18 +239,18 @@ C
CALL JREADLL( KLUNIT, KTRUNC, PBUILD, ZLAT, PLEG, NERR)
IF ( NERR .NE. 0 ) THEN
CALL INTLOG(JP_ERROR,'JSYMLL: JREADLL error',NERR)
- KRET = JPROUTINE + 2
- GOTO 990
- ENDIF
+ KRET = JPROUTINE + 2
+ GOTO 990
+ ENDIF
ELSE
IOFF = NINT( (90.0 - ZLAT)/PBUILD )
IOFF = IOFF *(KTRUNC+1)
IOFF = IOFF *(KTRUNC+4)
IOFF = IOFF/2
- ENDIF
+ ENDIF
C
C Clear unused slots in array.
-C Note there are two slots in the array - one for north latitude
+C Note there are two slots in the array - one for north latitude
C and one for the corresponding south latitude.
INORTH = INORTH + 2
ISOUTH = INORTH + 1
diff --git a/interpolation/jwindll.F b/interpolation/jwindll.F
index 6516411..85ff2fd 100644
--- a/interpolation/jwindll.F
+++ b/interpolation/jwindll.F
@@ -1,10 +1,10 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
@@ -86,7 +86,7 @@ C It handles transformation to a regular lat/long grid.
C The generated grid is symmetrical about the equator, so
C PSTART must be positive.
C
-C It is only for U and V fields (correction is applied at the
+C It is only for U and V fields (correction is applied at the
C poles and a scale factor is applied according to latitude).
C
C
@@ -177,6 +177,7 @@ C* Section 1. Initialization.
C -----------------------------------------------------------------|
C
100 CONTINUE
+ IOFF = 0
C
C Check environment variable to see if wind components are plain
C U and V, or U*cos(theta) and V*cos(theta) (the default).
@@ -274,9 +275,9 @@ C
CALL JREADLL( KLUNIT, KTRUNC, PBUILD, ZLAT, PLEG, NERR)
IF ( NERR .NE. 0 ) THEN
CALL INTLOG(JP_ERROR,'JWINDLL: JREADLL error',NERR)
- KRET = JPROUTINE + 2
- GOTO 990
- ENDIF
+ KRET = JPROUTINE + 2
+ GOTO 990
+ ENDIF
ELSE
IOFF = NINT( (90.0 - ZLAT)/PBUILD )
IOFF = IOFF *(KTRUNC+1)
@@ -285,7 +286,7 @@ C
ENDIF
C
C Clear unused slots in array.
-C Note there are two slots in the array - one for north latitude
+C Note there are two slots in the array - one for north latitude
C and one for the corresponding south latitude.
INORTH = INORTH + 2
ISOUTH = INORTH + 1
diff --git a/interpolation/krg2rgd.F b/interpolation/krg2rgd.F
index 360a9e1..cd19d70 100644
--- a/interpolation/krg2rgd.F
+++ b/interpolation/krg2rgd.F
@@ -99,8 +99,8 @@ C
INTEGER IFSEC0(JPGRIB_ISEC0),IFSEC1(JPGRIB_ISEC1),
X IFSEC2(JPGRIB_ISEC2),IFSEC3(JPGRIB_ISEC3),IFSEC4(JPGRIB_ISEC4)
INTEGER NFSEC2(JPGRIB_ISEC2),NFSEC3(JPGRIB_ISEC3)
- INTEGER NEWGEO(2048)
- INTEGER ISIZE, LOOP
+ INTEGER NEWGEO(JPGRIB_ISEC2)
+ INTEGER ISIZE
LOGICAL LFIRST
CHARACTER*1 HTYPE
#ifndef _CRAYFTN
@@ -177,7 +177,6 @@ C
ENDIF
C
IPFSEC4 = JMALLOC(ISIZE)
- IMEDFLD = JMALLOC(ISIZE)
#ifdef hpR64
IPFSEC4 = IPFSEC4/(1024*1024*1024*4)
#endif
@@ -186,6 +185,16 @@ C
KRG2RGD = -1
GOTO 900
ENDIF
+C
+ IMEDFLD = JMALLOC(ISIZE)
+#ifdef hpR64
+ IMEDFLD = IMEDFLD/(1024*1024*1024*4)
+#endif
+ IF( IMEDFLD.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,'KRG2RGD: JMALLOC fail IMEDFLD',JPQUIET)
+ KRG2RGD = -1
+ GOTO 900
+ ENDIF
ENDIF
C
C -----------------------------------------------------------------|
@@ -217,10 +226,8 @@ C -----------------------------------------------------------------|
C
300 CONTINUE
C
- DO LOOP = 1, JPMAXNG
- NFSEC2(LOOP) = IFSEC2(LOOP)
- NEWGEO(LOOP) = 0
- ENDDO
+ NFSEC2(1:JPGRIB_ISEC2) = IFSEC2(1:JPGRIB_ISEC2)
+ NEWGEO(1:JPGRIB_ISEC2) = 0
HTYPE = 'R'
IF( LOCTAHEDRAL ) HTYPE = 'O'
CALL JGETGG( NUMME, HTYPE, PLAT, NEWGEO(23), IRET)
@@ -320,3 +327,4 @@ C
C
RETURN
END
+
diff --git a/interpolation/makemap.c b/interpolation/makemap.c
index 52ed6ab..abfcb44 100644
--- a/interpolation/makemap.c
+++ b/interpolation/makemap.c
@@ -61,7 +61,7 @@ char * fileName, *p;
*/
fileName = (char *) malloc(filenameLength+1);
if( fileName == NULL ) {
- perror("MAKEMAP: malloc error");
+ perror("MAKEMAP: malloc error (fileName)");
exit(1);
}
strncpy(fileName,filename,filenameLength);
@@ -147,6 +147,10 @@ char * fileName, *p;
*/
size = (rowCount*columnCount+7)/8;
bitmap = (char *) malloc(size);
+ if( bitmap == NULL ) {
+ perror("MAKEMAP: malloc error (bitmap)");
+ exit(1);
+ }
*mybitmap = bitmap;
for( i = 0; i < size; i++ )
bitmap[i] = defaultValueSetting;
@@ -312,3 +316,4 @@ int loop;
}
}
+
diff --git a/interpolation/memreq.h b/interpolation/memreq.h
index 6f7e1a7..912a34c 100644
--- a/interpolation/memreq.h
+++ b/interpolation/memreq.h
@@ -1,11 +1,11 @@
C
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
C**** "memreq.h"
@@ -73,7 +73,6 @@ C
INTEGER MADDR(JPLEVEL)
#endif
INTEGER MREQUEST(JPLEVEL)
-C
- COMMON /MEMORY/ MREQUEST, MADDR
-C
- SAVE /MEMORY/
+
+ SAVE MREQUEST, MADDR
+
diff --git a/interpolation/rgauss_032.h b/interpolation/rgauss_032.h
index ecd83a4..f143e5f 100644
--- a/interpolation/rgauss_032.h
+++ b/interpolation/rgauss_032.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG032(32)
+ INTEGER QG032(32)
DATA QG032/
X 20, 27, 36, 40, 45, 50, 60, 64, 72, 75, 80, 90,
X 90, 96, 100, 108, 108, 120, 120, 120, 128, 128, 128, 128,
diff --git a/interpolation/rgauss_048.h b/interpolation/rgauss_048.h
index f200688..409f104 100644
--- a/interpolation/rgauss_048.h
+++ b/interpolation/rgauss_048.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG048(48)
+ INTEGER QG048(48)
DATA QG048/
X 20, 25, 36, 40,
X 45, 50, 60, 60,
diff --git a/interpolation/rgauss_064.h b/interpolation/rgauss_064.h
index 88190fa..030c03a 100644
--- a/interpolation/rgauss_064.h
+++ b/interpolation/rgauss_064.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG064(64)
+ INTEGER QG064(64)
DATA QG064/
X 20, 30, 40, 48,
X 54, 64, 72, 80,
diff --git a/interpolation/rgauss_080.h b/interpolation/rgauss_080.h
index 73c645b..ef868ba 100644
--- a/interpolation/rgauss_080.h
+++ b/interpolation/rgauss_080.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG08018(80)
+ INTEGER QG08018(80)
DATA QG08018/
X 18 , 25 , 36 , 40,
X 45 , 54 , 60 , 64,
diff --git a/interpolation/rgauss_080_19940113.h b/interpolation/rgauss_080_19940113.h
index 5936c8d..09a490b 100644
--- a/interpolation/rgauss_080_19940113.h
+++ b/interpolation/rgauss_080_19940113.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG08012(80)
+ INTEGER QG08012(80)
DATA QG08012/
X 12 , 16 , 20 , 24,
X 30 , 36 , 45 , 50,
diff --git a/interpolation/rgauss_096.h b/interpolation/rgauss_096.h
index deabb10..c042389 100644
--- a/interpolation/rgauss_096.h
+++ b/interpolation/rgauss_096.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG096(96)
+ INTEGER QG096(96)
DATA QG096/
X 18 , 25 , 36 , 40,
X 45 , 50 , 60 , 64,
@@ -32,4 +32,4 @@ C
X 384 , 384 , 384 , 384,
X 384 , 384 , 384 , 384,
X 384 , 384 , 384 , 384,
- X 384 , 384 , 384 , 384 /
\ No newline at end of file
+ X 384 , 384 , 384 , 384 /
diff --git a/interpolation/rgauss_1024.h b/interpolation/rgauss_1024.h
index cf36e79..3bbd876 100644
--- a/interpolation/rgauss_1024.h
+++ b/interpolation/rgauss_1024.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG1024(1024)
+ INTEGER QG1024(1024)
DATA QG1024/
X 18, 25, 32, 40, 45,
X 50, 60, 64, 72, 72,
diff --git a/interpolation/rgauss_128.h b/interpolation/rgauss_128.h
index 0f9f806..059e7d4 100644
--- a/interpolation/rgauss_128.h
+++ b/interpolation/rgauss_128.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG128(128)
+ INTEGER QG128(128)
DATA QG128/
X 18, 25, 36, 40,
X 45, 50, 60, 64,
diff --git a/interpolation/rgauss_1280.h b/interpolation/rgauss_1280.h
index d6f7b1d..67847dc 100644
--- a/interpolation/rgauss_1280.h
+++ b/interpolation/rgauss_1280.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG1280(1280)
+ INTEGER QG1280(1280)
DATA QG1280/
X 18, 25, 32, 40, 45,
X 50, 60, 64, 72, 72,
diff --git a/interpolation/rgauss_160.h b/interpolation/rgauss_160.h
index e6be6c1..b1cae5c 100644
--- a/interpolation/rgauss_160.h
+++ b/interpolation/rgauss_160.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG16018(160)
+ INTEGER QG16018(160)
DATA QG16018/
X 18 , 25 , 36 , 40,
X 45 , 50 , 60 , 64,
diff --git a/interpolation/rgauss_160_19931222.h b/interpolation/rgauss_160_19931222.h
index 1b91a79..b925290 100644
--- a/interpolation/rgauss_160_19931222.h
+++ b/interpolation/rgauss_160_19931222.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG16012(160)
+ INTEGER QG16012(160)
DATA QG16012/
X 12 , 16 , 20 , 24,
X 30 , 40 , 45 , 50,
diff --git a/interpolation/rgauss_200.h b/interpolation/rgauss_200.h
index b5f6a6c..c5393ee 100644
--- a/interpolation/rgauss_200.h
+++ b/interpolation/rgauss_200.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG200(200)
+ INTEGER QG200(200)
DATA QG200/
X 18, 25, 36, 40,
X 45, 50, 60, 64,
diff --git a/interpolation/rgauss_2000.h b/interpolation/rgauss_2000.h
index 1517e80..a49ad7d 100644
--- a/interpolation/rgauss_2000.h
+++ b/interpolation/rgauss_2000.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG2000(2000)
+ INTEGER QG2000(2000)
DATA QG2000/
X 18, 25, 32, 40, 45, 50, 60, 60, 72, 72,
X 75, 81, 90, 96, 96, 108, 108, 120, 120, 120,
diff --git a/interpolation/rgauss_256.h b/interpolation/rgauss_256.h
index 752bf89..d535409 100644
--- a/interpolation/rgauss_256.h
+++ b/interpolation/rgauss_256.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG256(256)
+ INTEGER QG256(256)
DATA QG256/
X 18, 25, 32, 40,
X 45, 50, 60, 64,
diff --git a/interpolation/rgauss_320.h b/interpolation/rgauss_320.h
index 4b260ee..5388bd6 100644
--- a/interpolation/rgauss_320.h
+++ b/interpolation/rgauss_320.h
@@ -1,14 +1,14 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG320(320)
- DATA QG320/
+ INTEGER QG320(320)
+ DATA QG320/
X 18, 25, 36, 40, 45,
X 50, 60, 64, 72, 72,
X 75, 81, 90, 96, 100,
diff --git a/interpolation/rgauss_400.h b/interpolation/rgauss_400.h
index 0895628..9a2a191 100644
--- a/interpolation/rgauss_400.h
+++ b/interpolation/rgauss_400.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG400(400)
+ INTEGER QG400(400)
DATA QG400/
X 18, 25, 32, 40, 45,
X 50, 60, 60, 72, 72,
diff --git a/interpolation/rgauss_512.h b/interpolation/rgauss_512.h
index f5b8e03..f412d0d 100644
--- a/interpolation/rgauss_512.h
+++ b/interpolation/rgauss_512.h
@@ -7,7 +7,7 @@ C In applying this licence, ECMWF does not waive the privileges and immunities
C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG512(512)
+ INTEGER QG512(512)
DATA QG512/
X 18, 25, 32, 40, 45,
X 50, 60, 60, 72, 72,
diff --git a/interpolation/rgauss_640.h b/interpolation/rgauss_640.h
index c63253a..11013fa 100644
--- a/interpolation/rgauss_640.h
+++ b/interpolation/rgauss_640.h
@@ -1,14 +1,14 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- REAL QG640(640)
- DATA QG640/
+ INTEGER QG640(640)
+ DATA QG640/
X 18, 25, 32, 40, 45,
X 50, 60, 60, 72, 72,
X 75, 81, 90, 90, 96,
diff --git a/interpolation/sharedlib.c b/interpolation/sharedlib.c
index 9acac40..abf5cf4 100644
--- a/interpolation/sharedlib.c
+++ b/interpolation/sharedlib.c
@@ -1,11 +1,11 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
@@ -27,9 +27,9 @@
#include "sharedlib.h"
/* set the shared memory debug output according to env var */
-int sharedlib_dbg()
-{
- char* var = getenv("EMOSLIB_SHM_DEBUG");
+int sharedlib_dbg()
+{
+ char* var = getenv("EMOSLIB_SHM_DEBUG");
return (var != NULL) && (strlen(var) != 0) ? 1 : 0;
}
@@ -154,7 +154,7 @@ void *share_file(const char* file) {
locked = 1;
if (sharedlib_dbg())
- {
+ {
gettimeofday( &end, NULL );
diff.tv_sec = end.tv_sec - start.tv_sec;
@@ -183,7 +183,7 @@ void *share_file(const char* file) {
goto error;
}
- if(stat64(path,&s))
+ if(stat64(path,&s))
{
sprintf(message,"ERR: sharedmem:stat64(%s)",path);
err = -1;
@@ -193,19 +193,19 @@ void *share_file(const char* file) {
size_t shmsize = ((s.st_size + page_size-1)/page_size)*page_size + sizeof(struct info) ;
if (sharedlib_dbg())
- fprintf(stdout,"sharedmem: calling shmget for key %ld of size %ld with page_size %ld \n",key, shmsize, page_size);
+ fprintf(stdout,"sharedmem: calling shmget for key %d of size %ld with page_size %d \n",key, shmsize, page_size);
if (sharedlib_dbg())
fprintf(stdout,"sharedmem: sizeof(struct info)=%ld \n", sizeof(struct info));
if((shmid = shmget(key, shmsize ,IPC_CREAT|0600)) < 0)
{
- sprintf(message,"ERR: sharedmem:shmget(%s) key = %ld shmsize = %ld ",path, key, shmsize);
+ sprintf(message,"ERR: sharedmem:shmget(%s) key = %d shmsize = %ld ",path, key, shmsize);
err = -1;
goto error;
}
if (sharedlib_dbg())
- fprintf(stdout,"sharedmem: shmget for key %ld returns shmid=%ld \n",key, shmid);
+ fprintf(stdout,"sharedmem: shmget for key %d returns shmid=%d \n",key, shmid);
#ifdef SHM_PAGESIZE
@@ -237,11 +237,11 @@ void *share_file(const char* file) {
addr = (char*)ptr;
if (sharedlib_dbg())
- fprintf(stdout,"sharedmem: shmat for ptr %ld \n",(void *) ptr);
+ fprintf(stdout,"sharedmem: shmat for ptr %p\n",(void *) ptr);
nfo = (struct info*)(addr + (((s.st_size + page_size-1)/page_size)*page_size));
- if(nfo->ready) {
+ if(nfo->ready) {
loadfile = 0;
if(nfo->magic != MAGIC)
{
@@ -265,7 +265,7 @@ void *share_file(const char* file) {
if (sharedlib_dbg()) gettimeofday( &start, NULL );
- while(s.st_size > 0)
+ while(s.st_size > 0)
{
size_t len = s.st_size > BUFFER_SIZE ? BUFFER_SIZE : s.st_size;
if(read(fd, addr, len) != len) {
@@ -278,7 +278,7 @@ void *share_file(const char* file) {
}
if (sharedlib_dbg())
- {
+ {
gettimeofday( &end, NULL );
diff.tv_sec = end.tv_sec - start.tv_sec;
@@ -340,7 +340,7 @@ error:
break;
}
}
-
+
}
return ptr;
@@ -389,7 +389,7 @@ int remove_shared_file(const char* file) {
fprintf(stdout,"sharedmem: removing shared memory for %s\n",path);
- if(shmctl(shmid, IPC_RMID, NULL) < 0)
+ if(shmctl(shmid, IPC_RMID, NULL) < 0)
{
sprintf(message,"ERR: sharedmem:shmctl:IPC_RMID,(%s)",path);
err = -1;
@@ -404,20 +404,20 @@ int remove_shared_file(const char* file) {
goto error;
}
- if(semctl(sem, 0, IPC_RMID, NULL) < 0)
+ if(semctl(sem, 0, IPC_RMID, NULL) < 0)
{
sprintf(message,"ERR: sharedmem:semctl:IPC_RMID,(%s)",path);
err = -1;
goto error;
}
-
+
error:
- if(err)
+ if(err)
perror(message);
return err;
diff --git a/interpolation/w251idx.F b/interpolation/w251idx.F
index dd2c354..e31fa3a 100644
--- a/interpolation/w251idx.F
+++ b/interpolation/w251idx.F
@@ -129,6 +129,8 @@ C ---------------------------------------------------------------------
C
100 CONTINUE
C
+ DELONGN = 0.
+ DELONGS = 0.
W251IDX = 0
CALL INTLOG(JP_DEBUG,
X 'W251IDX: Wave interpolation requested.',JPQUIET)
diff --git a/interpolation/wavexx2.F b/interpolation/wavexx2.F
index 17950c4..37304bf 100644
--- a/interpolation/wavexx2.F
+++ b/interpolation/wavexx2.F
@@ -269,6 +269,11 @@ C Allocate large, resolution-dependent arrays
IF (.NOT. IS_ALLOCATED_LARGEARRAY) THEN
P_NEWIDX = JMALLOC( 4*JPARRAYDIM_WAVE*JPBYTES) ! 4*len*bytes
P_DISTNEW = JMALLOC(10*JPARRAYDIM_WAVE*4) ! 10*len*bytes
+ IF( (P_NEWIDX.EQ.0) .OR. (P_DISTNEW.EQ.0) ) THEN
+ CALL INTLOG(JP_ERROR,'WAVEXX2: JMALLOC fail',JPQUIET)
+ WAVEXX2 = JPROUTINE + 1
+ GOTO 900
+ ENDIF
IS_ALLOCATED_LARGEARRAY = .TRUE.
END IF
C
@@ -517,3 +522,4 @@ C
900 CONTINUE
RETURN
END
+
diff --git a/interpolation/wv2dxx2.F b/interpolation/wv2dxx2.F
index 7a3dd12..73bf21a 100644
--- a/interpolation/wv2dxx2.F
+++ b/interpolation/wv2dxx2.F
@@ -211,6 +211,11 @@ C
C Allocate large, resolution-dependent arrays
IF (.NOT. IS_ALLOCATED_LARGEARRAY) THEN
P_NEWIDX = JMALLOC(JPARRAYDIM_WAVE*JPBYTES) ! len*bytes
+ IF( P_NEWIDX.EQ.0 ) THEN
+ CALL INTLOG(JP_ERROR,'WV2DXX2: JMALLOC fail',JPQUIET)
+ WV2DXX2 = JPROUTINE + 1
+ GOTO 900
+ ENDIF
IS_ALLOCATED_LARGEARRAY = .TRUE.
END IF
C
@@ -364,3 +369,4 @@ C
900 CONTINUE
RETURN
END
+
diff --git a/interpolation/wvqlidx.F b/interpolation/wvqlidx.F
index 7d22de0..960bb65 100644
--- a/interpolation/wvqlidx.F
+++ b/interpolation/wvqlidx.F
@@ -142,6 +142,8 @@ C ---------------------------------------------------------------------
C
100 CONTINUE
C
+ DELONGN = 0.
+ DELONGS = 0.
WVQLIDX = 0
CALL INTLOG(JP_DEBUG,
X 'WVQLIDX: Wave interpolation requested.',JPQUIET)
diff --git a/pbio/blokex.F b/pbio/blokex.F
index 6eee3e8..f52cd47 100644
--- a/pbio/blokex.F
+++ b/pbio/blokex.F
@@ -385,6 +385,9 @@ c Sequence number
c
Nbseqn=0
c
+ Inblok=0
+ Iword2=0
+c
End if
c
c* 1.1 Initialise variables
diff --git a/pbio/emosnum.F b/pbio/emosnum.F
index c171e52..69ce43e 100644
--- a/pbio/emosnum.F
+++ b/pbio/emosnum.F
@@ -88,7 +88,7 @@ C
CHARACTER*35 CMESS
C CHARACTER*20 YNUMBER
C
- DATA INUMBER/000437/, ICOUNT/0/
+ DATA INUMBER/000439/, ICOUNT/0/
DATA CMESS/'* EMOSLIB version number = ****** *'/
C
C ------------------------------------------------------------------
diff --git a/pbio/extras.c b/pbio/extras.c
index 109a53a..d7a5d79 100644
--- a/pbio/extras.c
+++ b/pbio/extras.c
@@ -1,32 +1,32 @@
/**
* Copyright 1981-2012 ECMWF.
*
-* This software is licensed under the terms of the Apache Licence
+* This software is licensed under the terms of the Apache Licence
* Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
-* In applying this licence, ECMWF does not waive the privileges and immunities
-* granted to it by virtue of its status as an intergovernmental organisation
+* In applying this licence, ECMWF does not waive the privileges and immunities
+* granted to it by virtue of its status as an intergovernmental organisation
* nor does it submit to any jurisdiction.
*/
/*
- extras.c
+extras.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-
+
static char *putfstr(char *target, char *source, int length_target)
{
int i;
-
+
/* Move characters from C source to Fortran target */
strcpy(target,source);
/* Pad Fortran target to end with spaces */
for(i = strlen(source); i<length_target; i++)
target[i] = ' ';
-
+
return target;
}
@@ -44,9 +44,9 @@ char *e, *env_copy;
}
strncpy(env_copy, env_string, len_env_string);
for( e = (env_copy+len_env_string-1); *e == ' '; e-- ) *e = '\0';
-
+
/* Get the environment information and return it to the Fortran caller */
- if(e = (char*)getenv(env_copy))
+ if((e = (char*)getenv(env_copy)))
{
putfstr(env_info, e, len_env_info);
free( env_copy );
diff --git a/pbio/fileRead.h b/pbio/fileRead.h
index 3edd1af..3f447b8 100644
--- a/pbio/fileRead.h
+++ b/pbio/fileRead.h
@@ -15,7 +15,7 @@
*/
#include <stdio.h>
-#ifdef linux
+#if defined(linux) && !defined(darwin)
# if !defined __off64_t_defined
typedef __off64_t off64_t;
#define __off64_t_defined
diff --git a/pbio/pbbufr.F b/pbio/pbbufr.F
index b951eab..2563596 100644
--- a/pbio/pbbufr.F
+++ b/pbio/pbbufr.F
@@ -1,14 +1,14 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- SUBROUTINE PBBUFR(KUNIT,KARRAY,KINLEN,KOUTLEN,KRET)
+ SUBROUTINE PBBUFR(KUNIT,KARRAY,KINLEN,KOUTLEN,KRET)
C
C---->
C**** PBBUFR
@@ -27,21 +27,21 @@ C
C Input parameters
C ________________
C
-C KUNIT - Unit number for the file returned from PBOPEN.
-C KARRAY - FORTRAN array big enough to hold the BUFR product.
-C KINLEN - Size in BYTES of the FORTRAN array.
+C KUNIT - Unit number for the file returned from PBOPEN.
+C KARRAY - FORTRAN array big enough to hold the BUFR product.
+C KINLEN - Size in BYTES of the FORTRAN array.
C
C
C Output parameters
C ________________
C
-C KOUTLEN - size in BYTES of the BUFR product read
-C KRET - 0 if a BUFR product has been successfully read
+C KOUTLEN - size in BYTES of the BUFR product read
+C KRET - 0 if a BUFR product has been successfully read
C
-C -1 if end-of-file is hit before a BUFR product is read
+C -1 if end-of-file is hit before a BUFR product is read
C
-C -3 if the size of KARRAY is not sufficient for the
-C BUFR product
+C -3 if the size of KARRAY is not sufficient for the
+C BUFR product
C
C
C Common block usage
@@ -102,7 +102,7 @@ C Escape if no BUFR product is found in the file
C
IF( IRET.EQ.-1 ) THEN
KOUTLEN = 0
- KRET = -1
+ KRET = -1
RETURN
ENDIF
C
@@ -121,5 +121,5 @@ C
KRET = 0
ENDIF
C
- RETURN
+ RETURN
END
diff --git a/pbio/pbgrib.F b/pbio/pbgrib.F
index 9c07228..5d4681e 100644
--- a/pbio/pbgrib.F
+++ b/pbio/pbgrib.F
@@ -1,14 +1,14 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- SUBROUTINE PBGRIB(KUNIT,KARRAY,KINLEN,KOUTLEN,KRET)
+ SUBROUTINE PBGRIB(KUNIT,KARRAY,KINLEN,KOUTLEN,KRET)
C
C---->
C**** PBGRIB
@@ -27,18 +27,18 @@ C
C Input parameters
C ________________
C
-C KUNIT - Unit number for the file returned from PBOPEN
-C KARRAY - FORTRAN array big enough to hold the GRIB product
-C KINLEN - Size in BYTES of the FORTRAN array
+C KUNIT - Unit number for the file returned from PBOPEN
+C KARRAY - FORTRAN array big enough to hold the GRIB product
+C KINLEN - Size in BYTES of the FORTRAN array
C
C
C Output parameters
C ________________
C
-C KOUTLEN - Size in BYTES of the GRIB product read
-C KRET - 0 if a GRIB product has been successfully read
-C -1 if end-of-file is hit before a GRIB product is read
-C -3 if the size of KARRAY is not sufficient for the
+C KOUTLEN - Size in BYTES of the GRIB product read
+C KRET - 0 if a GRIB product has been successfully read
+C -1 if end-of-file is hit before a GRIB product is read
+C -3 if the size of KARRAY is not sufficient for the
C GRIB product
C
C
@@ -100,24 +100,24 @@ C Escape if no GRIB product is found in the file
C
IF( IRET.EQ.-1 ) THEN
KOUTLEN = 0
- KRET = -1
- RETURN
+ KRET = -1
+ RETURN
ENDIF
C
C Check if the array is big enough for the GRIB product
C
IF( IRET.EQ.-3 ) THEN
KOUTLEN = NREAD
- KRET = -3
- RETURN
+ KRET = -3
+ RETURN
ENDIF
C
C Set success code if product retrieved
C
IF( NREAD.GE.0 ) THEN
- KOUTLEN = NREAD
- KRET = 0
+ KOUTLEN = NREAD
+ KRET = 0
ENDIF
C
- RETURN
+ RETURN
END
diff --git a/pbio/pbio.c b/pbio/pbio.c
index c5b6704..5f9f3af 100644
--- a/pbio/pbio.c
+++ b/pbio/pbio.c
@@ -925,12 +925,12 @@ void pbread5_(fortint* unit,char* buffer,size_t* nbytes,size_t* iret) {
// otherwise, = number of bytes read.
*/
if( DEBUG )
- printf("PBIO_READ5: number of bytes to read = %d\n", *nbytes);
+ printf("PBIO_READ5: number of bytes to read = %lu\n", *nbytes);
*iret = read(*unit, buffer, *nbytes);
if( DEBUG )
- printf("PBIO_READ5: number of bytes read = %d\n", *iret);
+ printf("PBIO_READ5: number of bytes read = %lun", *iret);
/*
// Error in file-handling
*/
@@ -943,7 +943,7 @@ void pbread5_(fortint* unit,char* buffer,size_t* nbytes,size_t* iret) {
// Read problem
*/
else if(*iret != *nbytes) {
- printf("EOF; pbread5; bytes requested %d; read in: %d\n",
+ printf("EOF; pbread5; bytes requested %lu; read in: %lu\n",
*nbytes,*iret);
*iret = -1;
return;
@@ -1383,7 +1383,7 @@ long offset, loop = 1;
offset = (fortint) fileTell( CURRENT_FILE);
if( DEBUG ) {
printf("PBIO_SIZE: fptable slot = %d. ", *unit);
- printf("Current file position = %d\n", offset);
+ printf("Current file position = %lu\n", offset);
}
*plen = BUFFLEN;
@@ -1426,7 +1426,7 @@ long offset, loop = 1;
// Put the file pointer back where it started
*/
if( DEBUG ) {
- printf("PBIO_SIZE: file pointer set back to: %d\n", offset);
+ printf("PBIO_SIZE: file pointer set back to: %lu\n", offset);
printf("PBIO_SIZE: Product size = %d\n", *plen);
}
offset = (fortint) fileSeek( CURRENT_FILE, offset, SEEK_SET);
diff --git a/pbio/pbpseu.F b/pbio/pbpseu.F
index a366c40..51f4c16 100644
--- a/pbio/pbpseu.F
+++ b/pbio/pbpseu.F
@@ -1,14 +1,14 @@
C Copyright 1981-2012 ECMWF.
C
-C This software is licensed under the terms of the Apache Licence
+C This software is licensed under the terms of the Apache Licence
C Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
C
-C In applying this licence, ECMWF does not waive the privileges and immunities
-C granted to it by virtue of its status as an intergovernmental organisation
+C In applying this licence, ECMWF does not waive the privileges and immunities
+C granted to it by virtue of its status as an intergovernmental organisation
C nor does it submit to any jurisdiction.
C
- SUBROUTINE PBPSEU(KUNIT,KARRAY,KINLEN,KOUTLEN,KRET)
+ SUBROUTINE PBPSEU(KUNIT,KARRAY,KINLEN,KOUTLEN,KRET)
C
C---->
C**** PBPSEU
@@ -27,19 +27,19 @@ C
C Input parameters
C ________________
C
-C KUNIT - Unit number for the file returned from PBOPEN
-C KARRAY - FORTRAN array big enough to hold the PSEU product
-C KINLEN - Size in BYTES of the FORTRAN array
+C KUNIT - Unit number for the file returned from PBOPEN
+C KARRAY - FORTRAN array big enough to hold the PSEU product
+C KINLEN - Size in BYTES of the FORTRAN array
C
C
C Output parameters
C ________________
-C
-C KOUTLEN - Size in BYTES of the PSEU product read
-C KRET - 0 if a PSEU product has been successfully read
-C -1 if end-of-file is hit before a PSEU product is read
-C -3 if the size of KARRAY is not sufficient for the
-C PSEU product
+C
+C KOUTLEN - Size in BYTES of the PSEU product read
+C KRET - 0 if a PSEU product has been successfully read
+C -1 if end-of-file is hit before a PSEU product is read
+C -3 if the size of KARRAY is not sufficient for the
+C PSEU product
C
C
C Common block usage
@@ -100,24 +100,24 @@ C Escape if no PSEU product is found in the file
C
IF( IRET.EQ.-1 ) THEN
KOUTLEN = 0
- KRET = -1
- RETURN
+ KRET = -1
+ RETURN
ENDIF
C
C Check if the array is big enough for the PSEU product
C
IF( IRET.EQ.-3 ) THEN
KOUTLEN = NREAD
- KRET = -3
- RETURN
+ KRET = -3
+ RETURN
ENDIF
C
C Set success code if product retrieved
C
IF( NREAD.GE.0 ) THEN
- KOUTLEN = NREAD
- KRET = 0
+ KOUTLEN = NREAD
+ KRET = 0
ENDIF
C
- RETURN
+ RETURN
END
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake b/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
index 1e12d66..db045ee 100644
--- a/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
+++ b/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
@@ -1,4 +1,9 @@
####################################################################
+# ARCHITECTURE
+####################################################################
+set( CMAKE_SIZEOF_VOID_P 8 )
+
+####################################################################
# COMPILER
####################################################################
@@ -8,15 +13,11 @@ CMAKE_FORCE_C_COMPILER ( cc Cray )
CMAKE_FORCE_CXX_COMPILER ( CC Cray )
CMAKE_FORCE_Fortran_COMPILER ( ftn Cray )
-link_libraries("$ENV{CC_X86_64}/lib/x86-64/libcray-c++-rts.so")
-link_libraries("-lmpichf90_cray")
-link_libraries("-lmpichcxx_cray")
-
set( ECBUILD_FIND_MPI OFF )
set( ECBUILD_TRUST_FLAGS ON )
####################################################################
-# FLAGS COMMON TO ALL BUILD TYPES
+# OpenMP FLAGS
####################################################################
set( OMP_C_FLAGS "-homp" )
@@ -27,49 +28,12 @@ set( OMPSTUBS_C_FLAGS "-hnoomp" )
set( OMPSTUBS_CXX_FLAGS "-hnoomp" )
set( OMPSTUBS_Fortran_FLAGS "-hnoomp" )
-set( CMAKE_C_FLAGS "" CACHE STRING "" FORCE )
-set( CMAKE_CXX_FLAGS "" CACHE STRING "" FORCE )
-set( CMAKE_Fortran_FLAGS "-emf -rmoid" CACHE STRING "" FORCE ) # -emf activates .mods and uses lower case -rmoid produces a listing file
-
-####################################################################
-# RELEASE FLAGS
-####################################################################
-
-set( ECBUILD_C_FLAGS_RELEASE "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
-set( ECBUILD_CXX_FLAGS_RELEASE "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
-set( ECBUILD_Fortran_FLAGS_RELEASE "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
-
-####################################################################
-# BIT REPRODUCIBLE FLAGS
-####################################################################
-
-set( ECBUILD_C_FLAGS_BIT "-O1 -G2 -hflex_mp=conservative -hadd_paren -hfp1 -DNDEBUG" )
-set( ECBUILD_CXX_FLAGS_BIT "-O1 -G2 -hflex_mp=conservative -hadd_paren -hfp1 -DNDEBUG" )
-set( ECBUILD_Fortran_FLAGS_BIT "-O1 -G2 -hflex_mp=conservative -hadd_paren -hfp1 -DNDEBUG" )
-
-####################################################################
-# RELWITHDEBINFO FLAGS
-####################################################################
-
-set( ECBUILD_C_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG" )
-set( ECBUILD_CXX_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG" )
-set( ECBUILD_Fortran_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG" )
-
####################################################################
-# DEBUG FLAGS
+# Fortran FLAGS
####################################################################
-set( ECBUILD_C_FLAGS_DEBUG "-O0 -G0" )
-set( ECBUILD_CXX_FLAGS_DEBUG "-O0 -G0" )
-set( ECBUILD_Fortran_FLAGS_DEBUG "-O0 -G0" )
-
-####################################################################
-# PRODUCTION FLAGS
-####################################################################
-
-set( ECBUILD_C_FLAGS_PRODUCTION "-O2 -hfp1 -G2" )
-set( ECBUILD_CXX_FLAGS_PRODUCTION "-O2 -hfp1 -G2" )
-set( ECBUILD_Fortran_FLAGS_PRODUCTION "-O2 -hfp1 -G2" )
+# -emf activates .mods and uses lower case -rmoid produces a listing file
+set( ECBUILD_Fortran_FLAGS "-emf -rmoid" )
####################################################################
# LINK FLAGS
@@ -78,4 +42,4 @@ set( ECBUILD_Fortran_FLAGS_PRODUCTION "-O2 -hfp1 -G2" )
set( ECBUILD_C_LINK_FLAGS "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
set( ECBUILD_CXX_LINK_FLAGS "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
set( ECBUILD_Fortran_LINK_FLAGS "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
-
+set( ECBUILD_CXX_IMPLICIT_LINK_LIBRARIES "$ENV{CC_X86_64}/lib/x86-64/libcray-c++-rts.so" CACHE STRING "" )
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake b/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
index 3c890d5..e09bc56 100644
--- a/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
+++ b/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
@@ -1,4 +1,9 @@
####################################################################
+# ARCHITECTURE
+####################################################################
+set( CMAKE_SIZEOF_VOID_P 8 )
+
+####################################################################
# COMPILER
####################################################################
@@ -12,56 +17,20 @@ set( ECBUILD_FIND_MPI OFF )
set( ECBUILD_TRUST_FLAGS ON )
####################################################################
-# FLAGS COMMON TO ALL BUILD TYPES
+# OpenMP FLAGS
####################################################################
set( OMP_C_FLAGS "-fopenmp" )
set( OMP_CXX_FLAGS "-fopenmp" )
set( OMP_Fortran_FLAGS "-fopenmp" )
-set( CMAKE_C_FLAGS "" CACHE STRING "" FORCE )
-set( CMAKE_CXX_FLAGS "" CACHE STRING "" FORCE )
-set( CMAKE_Fortran_FLAGS "" CACHE STRING "" FORCE )
-
-####################################################################
-# RELEASE FLAGS
-####################################################################
-
-#set( ECBUILD_C_FLAGS_RELEASE "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
-#set( ECBUILD_CXX_FLAGS_RELEASE "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
-#set( ECBUILD_Fortran_FLAGS_RELEASE "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG" )
-
-####################################################################
-# BIT REPRODUCIBLE FLAGS
-####################################################################
-
-set( ECBUILD_C_FLAGS_BIT "-g -O2 -m64 -march=native -DNDEBUG" )
-set( ECBUILD_CXX_FLAGS_BIT "-g -O2 -m64 -march=native -DNDEBUG" )
-set( ECBUILD_Fortran_FLAGS_BIT "-g -O2 -m64 -march=native -DNDEBUG -fno-range-check -ffree-line-length-300 -fconvert=big-endian" )
-
-####################################################################
-# RELWITHDEBINFO FLAGS
-####################################################################
-
-#set( ECBUILD_C_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG" )
-#set( ECBUILD_CXX_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG" )
-#set( ECBUILD_Fortran_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG" )
-
####################################################################
# DEBUG FLAGS
####################################################################
-#set( ECBUILD_C_FLAGS_DEBUG "-O0 -G0" )
-#set( ECBUILD_CXX_FLAGS_DEBUG "-O0 -G0" )
-#set( ECBUILD_Fortran_FLAGS_DEBUG "-O0 -G0" )
-
-####################################################################
-# PRODUCTION FLAGS
-####################################################################
-
-#set( ECBUILD_C_FLAGS_PRODUCTION "-O2 -hfp1 -G2" )
-#set( ECBUILD_CXX_FLAGS_PRODUCTION "-O2 -hfp1 -G2" )
-#set( ECBUILD_Fortran_FLAGS_PRODUCTION "-O2 -hfp1 -G2" )
+set( ECBUILD_C_FLAGS_DEBUG "-O0 -g -ftrapv" )
+set( ECBUILD_CXX_FLAGS_DEBUG "-O0 -g -ftrapv" )
+set( ECBUILD_Fortran_FLAGS_DEBUG "-ffree-line-length-none -O0 -g -fcheck=bounds -fbacktrace -finit-real=snan -ffpe-trap=invalid,zero,overflow" )
####################################################################
# LINK FLAGS
@@ -70,4 +39,3 @@ set( ECBUILD_Fortran_FLAGS_BIT "-g -O2 -m64 -march=native -DNDEBUG -fno-range-c
set( ECBUILD_C_LINK_FLAGS "-Wl,-Map,load.map -Wl,--as-needed" )
set( ECBUILD_CXX_LINK_FLAGS "-Wl,-Map,load.map -Wl,--as-needed" )
set( ECBUILD_Fortran_LINK_FLAGS "-Wl,-Map,load.map -Wl,--as-needed" )
-
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake b/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
index 485b122..c569daf 100644
--- a/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
+++ b/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
@@ -12,27 +12,23 @@ set( ECBUILD_FIND_MPI OFF )
set( ECBUILD_TRUST_FLAGS ON )
####################################################################
-# FLAGS COMMON TO ALL BUILD TYPES
+# OpenMP FLAGS
####################################################################
set( OMP_C_FLAGS "-qopenmp -qopenmp-threadprivate=compat -qopenmp-report=2 -qopt-report-phase=vec,openmp" )
set( OMP_CXX_FLAGS "-qopenmp -qopenmp-threadprivate=compat -qopenmp-report=2 -qopt-report-phase=vec,openmp" )
set( OMP_Fortran_FLAGS " -openmp -openmp-threadprivate=compat -openmp-report=2 -opt-report-phase=vec,openmp" ) # -[q] is missing on purpose, ifort does not take -q as flag
-# for diagnostics:
-# -diag-enable=vec -diag-file -Winline
-
-set( CMAKE_C_FLAGS "-fp-speculation=strict -fp-model precise -traceback" CACHE STRING "" FORCE )
-set( CMAKE_CXX_FLAGS "-fp-speculation=strict -fp-model precise -traceback" CACHE STRING "" FORCE )
-set( CMAKE_Fortran_FLAGS "-fp-speculation=strict -fp-model precise -convert big_endian -assume byterecl -traceback -fpe0" CACHE STRING "" FORCE )
-
####################################################################
-# RELEASE FLAGS
+# COMMON FLAGS
####################################################################
-#set( ECBUILD_C_FLAGS_RELEASE "not implemented" )
-#set( ECBUILD_CXX_FLAGS_RELEASE "not implemented" )
-#set( ECBUILD_Fortran_FLAGS_RELEASE "not implemented" )
+# for diagnostics:
+# -diag-enable=vec -diag-file -Winline
+
+set( ECBUILD_C_FLAGS "-fp-speculation=strict -fp-model precise -traceback")
+set( ECBUILD_CXX_FLAGS "-fp-speculation=strict -fp-model precise -traceback" )
+set( ECBUILD_Fortran_FLAGS "-fp-speculation=strict -fp-model precise -convert big_endian -assume byterecl -traceback -fpe0" )
####################################################################
# BIT REPRODUCIBLE FLAGS
@@ -43,28 +39,13 @@ set( ECBUILD_CXX_FLAGS_BIT "-O2 -xAVX -finline-function -finline-limit=500"
set( ECBUILD_Fortran_FLAGS_BIT "-O2 -xAVX -finline-function -finline-limit=500 -align array64byte" )
####################################################################
-# RELWITHDEBINFO FLAGS
-####################################################################
-
-#set( ECBUILD_C_FLAGS_RELWITHDEBINFO "not implemented" )
-#set( ECBUILD_CXX_FLAGS_RELWITHDEBINFO "not implemented" )
-#set( ECBUILD_Fortran_FLAGS_RELWITHDEBINFO "not implemented" )
-
-####################################################################
# DEBUG FLAGS
####################################################################
-set( ECBUILD_C_FLAGS_DEBUG "-g -O0" )
-set( ECBUILD_CXX_FLAGS_DEBUG "-g -O0" )
-set( ECBUILD_Fortran_FLAGS_DEBUG "-g -O0" ) # ??? -align array64byte
-
-####################################################################
-# PRODUCTION FLAGS
-####################################################################
-
-#set( ECBUILD_C_FLAGS_PRODUCTION "not implemented" )
-#set( ECBUILD_CXX_FLAGS_PRODUCTION "not implemented" )
-#set( ECBUILD_Fortran_FLAGS_PRODUCTION "not implemented" )
+set( ECBUILD_C_FLAGS_DEBUG "-O0 -g -traceback -fp-trap=common" )
+set( ECBUILD_CXX_FLAGS_DEBUG "-O0 -g -traceback -fp-trap=common" )
+# -check all implies -check bounds
+set( ECBUILD_Fortran_FLAGS_DEBUG "-O0 -g -traceback -warn all -heap-arrays -fpe-all=0 -fpe:0 -check all" )
####################################################################
# LINK FLAGS
@@ -73,4 +54,3 @@ set( ECBUILD_Fortran_FLAGS_DEBUG "-g -O0" ) # ??? -align array64byte
set( ECBUILD_C_LINK_FLAGS "-Wl,-Map,load.map -Wl,--as-needed" )
set( ECBUILD_CXX_LINK_FLAGS "-Wl,-Map,load.map -Wl,--as-needed" )
set( ECBUILD_Fortran_LINK_FLAGS "-Wl,-Map,load.map -Wl,--as-needed" )
-
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 6d15e3b..437e348 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,61 +1,6 @@
-# set testing tools:
-# - int (internal)
-# - gg_gridname (internal)
-# - grib_compare (bundle, on provided path, or on system path)
-# - cmp (strict binary comparison)
-
-if( ENABLE_INSTALL_TOOLS )
- get_target_property( CMD_INT int LOCATION )
- get_target_property( CMD_GG_GRIDNAME gg_gridname LOCATION )
-endif()
-
-if( TARGET grib_compare )
- get_target_property( CMD_GRIB_COMPARE grib_compare LOCATION )
-endif()
-if( NOT CMD_GRIB_COMPARE )
- find_program( CMD_GRIB_COMPARE grib_compare NO_DEFAULT_PATH HINTS "${grib_api_BASE_DIR}" PATH_SUFFIXES "bin" )
-endif()
-if( NOT CMD_GRIB_COMPARE )
- find_program( CMD_GRIB_COMPARE grib_compare )
-endif()
-
-find_program( CMD_CMP cmp )
-
-
-# set testing environments (grib_api, libemos)
-if( NOT grib_api_BASE_DIR AND CMD_GRIB_COMPARE )
- get_filename_component( _grib_compare_dir "${CMD_GRIB_COMPARE}" PATH )
- get_filename_component( grib_api_BASE_DIR "${_grib_compare_dir}" ABSOLUTE )
- set( grib_api_BASE_DIR "${grib_api_BASE_DIR}/../" )
-endif()
-
-if( grib_api_BASE_DIR )
- set( _grib_environment
- GRIB_DEFINITION_PATH=${grib_api_BASE_DIR}/share/grib_api/definitions/:${grib_api_BASE_DIR}/share/grib_api/definitions/grib1/
- GRIB_SAMPLES_PATH=${grib_api_BASE_DIR}/share/grib_api/samples/ )
-endif()
-set( _emos_environment
- "${_grib_environment}"
-# JDCNDBG=2
-# INTF2_DEBUG=1
- CONFIG_INTERP=ON_FLY
- MARS_LSM_PATH=${PROJECT_SOURCE_DIR}/tables/interpol
- ECMWF_LOCAL_TABLE_PATH=${PROJECT_SOURCE_DIR}/gribtables
- LOCAL_DEFINITION_TEMPLATES=${PROJECT_SOURCE_DIR}/gribtemplates )
-
-
-# log information
-ecbuild_info( "Test tool int: ${CMD_INT}" )
-ecbuild_info( "Test tool gg_gridname: ${CMD_GG_GRIDNAME}" )
-ecbuild_info( "Test tool grib_compare: ${CMD_GRIB_COMPARE}" )
-ecbuild_info( "Test tool cmp: ${CMD_CMP}" )
-if( NOT CMD_INT OR NOT CMD_GG_GRIDNAME OR NOT CMD_GRIB_COMPARE OR NOT CMD_CMP )
- ecbuild_info( "(some tools not found, some tests disabled)" )
-endif()
-ecbuild_debug( "Test _grib_environment: ${_grib_environment}" )
-ecbuild_debug( "Test _emos_environment: ${_emos_environment}" )
-
+# test settings and helper functions
+include("${PROJECT_SOURCE_DIR}/tests/settings.cmake")
# configure Fortran-based targets for double precision (compilation & linking)
ecbuild_add_fortran_flags(${emos_double_precision_flags})
@@ -63,50 +8,38 @@ ecbuild_add_fortran_flags(${emos_double_precision_flags})
################ I N T E R P O L A T I O N ################
-if( HAVE_LIBEMOS_INTERPOLATION )
+if( HAVE_LIBEMOS_INTERPOLATION AND ENABLE_INSTALL_TOOLS )
# intuvp2: interpolation to different formats
foreach( rotated "" "rotated_" )
foreach( out "regular_ll" "F80" "N80" "O80" )
- set( in "sh_vo-d" )
- set( test "${in}_to_${rotated}${out}" )
- set( rot "--rotation=30/30" )
- if( "${rotated}" STREQUAL "" )
- set( rot "" )
- endif()
- if( NOT (test MATCHES "^sh_.*_to_O" AND NOT HAVE_FFTW)
- AND NOT (test MATCHES "^.*_to_rotated_[NOF]") )
- set( input "${PROJECT_SOURCE_DIR}/data/${in}.grib" )
- set( output "intuvp2_${test}.grib" )
+ set( in "vo-d_sh" )
+ set( label "intuvp2_${in}_to_${rotated}${out}" )
+ if( NOT (label MATCHES "sh_to_O" AND NOT HAVE_FFTW)
+ AND NOT (label MATCHES "_to_rotated_[NOF]") )
+ set( input "${PROJECT_SOURCE_DIR}/tests/data/${in}.grib" )
+ set( refer "${PROJECT_SOURCE_DIR}/tests/data/${label}.grib.ref" )
+ set( output "${label}.grib" )
+ unset( opt )
if( out MATCHES "^regular_ll" )
- set( grid "--grid=3.0/3.0" )
+ list( APPEND opt "--grid=3.0/3.0" )
else()
- set( grid "--gridname=${out}" )
+ list( APPEND opt "--gridname=${out}" )
+ endif()
+ if( "${rotated}" STREQUAL "rotated_" )
+ list( APPEND opt "--rotation=30/30" )
endif()
+ list( APPEND opt "--int=intuvp2" )
- # interpolate
- ecbuild_add_test(
- TARGET intuvp2_${test}_interpol
- DEPENDS int
- COMMAND ${CMD_INT}
- ARGS ${grid} ${rot} --input=${input} --output=${output} --int=intuvp2
- ENVIRONMENT ${_emos_environment} )
-
- # compare results to reference data
- ecbuild_add_test(
- TARGET intuvp2_${test}_compare
- TEST_DEPENDS intuvp2_${test}_interpol
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS ${PROJECT_SOURCE_DIR}/data/${output} ${output}
- ENVIRONMENT ${_grib_environment} )
-
- unset( grid )
+ interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" )
+ interpolation_add_test_compare( ${label} "${refer}" "${output}" )
+
+ unset( opt )
unset( output )
+ unset( refer )
unset( input )
endif()
- unset( rot )
- unset( test )
+ unset( label )
unset( in )
endforeach()
endforeach()
@@ -118,72 +51,37 @@ if( HAVE_LIBEMOS_INTERPOLATION )
# - any to rotated reduced/regular G
# - regular_ll to rotated regular_ll
foreach( rotated "" "rotated_" )
- foreach( in "sh_vo-d" "sh_z" "regular_ll" "N640" "O640" "F640" )
+ foreach( in "vo-d_sh" "z_sh" "msl_regular_ll" "msl_N640" "2t_O640" "q_F640" )
foreach( out "regular_ll" "F80" "N80" "O80" "F48" )
- set( test "${in}_to_${rotated}${out}" )
- set( rot "--rotation=30/30" )
- if( "${rotated}" STREQUAL "" )
- set( rot "" )
- endif()
- if( NOT test MATCHES "^regular_ll_to_[NO]"
- AND NOT test MATCHES "^F.*_to_[NO]"
- AND NOT test MATCHES "^.*_to_rotated_[NOF]"
- AND NOT test MATCHES "^regular_ll_to_rotated_regular_ll$"
- AND NOT (test MATCHES "^sh_.*_to_O" AND NOT HAVE_FFTW) )
- set( input "${PROJECT_SOURCE_DIR}/data/${in}.grib" )
- set( output "intf2_${test}.grib" )
+ set( label "intf2_${in}_to_${rotated}${out}" )
+ if( NOT (label MATCHES "regular_ll_to_[NO]")
+ AND NOT (label MATCHES "F.*_to_[NO]")
+ AND NOT (label MATCHES "_to_rotated_[NOF]")
+ AND NOT (label MATCHES "regular_ll_to_rotated_regular_ll$")
+ AND NOT (label MATCHES "sh_to_O" AND NOT HAVE_FFTW) )
+ set( input "${PROJECT_SOURCE_DIR}/tests/data/${in}.grib" )
+ set( refer "${PROJECT_SOURCE_DIR}/tests/data/${label}.grib.ref" )
+ set( output "${label}.grib" )
+ unset( opt )
if( out MATCHES "^regular_ll" )
- set( grid "--grid=0.5/0.5" )
+ list( APPEND opt "--grid=0.5/0.5" )
else()
- set( grid "--gridname=${out}" )
+ list( APPEND opt "--gridname=${out}" )
endif()
-
- # interpolate
- ecbuild_add_test(
- TARGET intf2_${test}_interpol
- DEPENDS int
- COMMAND ${CMD_INT}
- ARGS ${grid} --autoresol=1 --area=0/0/0/0 ${rot} --input=${input} --output=${output} --int=intf2
- ENVIRONMENT ${_emos_environment} )
-
- # check gridname is expected and is a valid Gaussian grid
- if( out MATCHES "^[FNO]" )
- ecbuild_add_test(
- TARGET intf2_${test}_gridname
- TEST_DEPENDS intf2_${test}_interpol
- CONDITION CMD_GG_GRIDNAME
- COMMAND ${CMD_GG_GRIDNAME}
- ARGS --eq=${out} ${output}
- ENVIRONMENT ${_grib_environment} )
+ if( "${rotated}" STREQUAL "rotated_" )
+ list( APPEND opt "--rotation=30/30" )
endif()
+ list( APPEND opt "--autoresol=1" "--area=0/0/0/0" "--int=intf2" )
- # compare results to reference data, strict comparison except in some cases
- if( NOT CMD_CMP
- OR test MATCHES "^regular_ll_to_regular_ll$" # opensuse131/pgi, lxc/pgi
- OR test MATCHES "^N640_to_O80$" ) # (minor numeric issues, within 2x packing error)
- ecbuild_add_test(
- TARGET intf2_${test}_compare
- TEST_DEPENDS intf2_${test}_interpol
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS -P -T 2 ${PROJECT_SOURCE_DIR}/data/${output} ${output}
- ENVIRONMENT ${_grib_environment} )
- else()
- ecbuild_add_test(
- TARGET intf2_${test}_compare
- TEST_DEPENDS intf2_${test}_interpol
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS ${PROJECT_SOURCE_DIR}/data/${output} ${output}
- ENVIRONMENT ${_grib_environment} )
- endif()
+ interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" )
+ interpolation_add_test_compare( ${label} "${output}" "${refer}" )
- unset( grid )
+ unset( opt )
unset( output )
+ unset( refer )
unset( input )
endif()
- unset( rot )
- unset( test )
+ unset( label )
endforeach()
endforeach()
endforeach()
@@ -193,315 +91,112 @@ if( HAVE_LIBEMOS_INTERPOLATION )
# (distinguish between N640 <> O640)
foreach( in "N640" "O640" )
foreach( out "N640" "O640" )
- set( test "${in}_to_${out}" )
- set( input "${PROJECT_SOURCE_DIR}/data/${in}.grib" )
- set( output "intf2_${test}.grib" )
-
- # interpolate
- ecbuild_add_test(
- TARGET intf2_${test}_interpol
- DEPENDS int
- COMMAND ${CMD_INT}
- ARGS --gridname=${out} --autoresol=1 --area=0/0/0/0 --input=${input} --output=${output} --int=intf2
- ENVIRONMENT ${_emos_environment} )
-
- # compare results to reference data
- if( in STREQUAL out )
- ecbuild_add_test(
- TARGET intf2_${test}_compare_same
- TEST_DEPENDS intf2_${test}_interpol
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS ${input} ${output}
- ENVIRONMENT ${_grib_environment} )
+ set( label "intf2_${in}_to_${out}" )
+ set( output "${label}.grib" )
+ unset( opt )
+ list( APPEND opt "--gridname=${out}" "--autoresol=1" "--area=0/0/0/0" "--int=intf2" )
+
+ if( in MATCHES "N640" )
+ set( input "${PROJECT_SOURCE_DIR}/tests/data/msl_${in}.grib" )
else()
- ecbuild_add_test(
- TARGET intf2_${test}_compare_diff
- TEST_DEPENDS intf2_${test}_interpol
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS ${input} ${output}
- ENVIRONMENT ${_grib_environment} )
- set_tests_properties( intf2_${test}_compare_diff PROPERTIES WILL_FAIL TRUE )
+ set( input "${PROJECT_SOURCE_DIR}/tests/data/2t_${in}.grib" )
+ endif()
+ interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" )
+ interpolation_add_test_compare( ${label} "${input}" "${output}" )
+ interpolation_add_test_gridname( ${label} ${output} ${out} )
+ if( NOT in STREQUAL out )
+ set_tests_properties( ${label}_compare PROPERTIES WILL_FAIL TRUE )
endif()
- # expect a gridname
- ecbuild_add_test(
- TARGET intf2_${test}_gridname
- TEST_DEPENDS intf2_${test}_interpol
- CONDITION CMD_GG_GRIDNAME
- COMMAND ${CMD_GG_GRIDNAME}
- ARGS --eq=${out} ${output}
- ENVIRONMENT ${_grib_environment} )
-
- unset( output )
+ unset( opt )
unset( input )
- unset( test )
+ unset( output )
+ unset( label )
endforeach()
endforeach()
- # intf2: interpolate to regular_ll corresponding to O1280 = 1/16 degree
- if( FALSE )
- foreach( in "O640" )
- set( test "${in}_to_regular_ll_1-16" )
- set( input "${PROJECT_SOURCE_DIR}/data/${in}.grib" )
- set( output "intf2_${test}.grib" )
-
- # interpolate
- ecbuild_add_test(
- TARGET intf2_${test}_interpol
- DEPENDS int
- COMMAND ${CMD_INT}
- ARGS --grid=0.0625/0.0625 --input=${input} --output=${output} --int=intf2
- ENVIRONMENT ${_emos_environment} )
-
- # compare results to reference data
- ecbuild_add_test(
- TARGET intf2_${test}_compare
- TEST_DEPENDS intf2_${test}_interpol
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS ${PROJECT_SOURCE_DIR}/data/${output} ${output}
- ENVIRONMENT ${_grib_environment} )
-
- unset( output )
- unset( input )
- unset( test )
- endforeach()
- endif()
-
-
- # intf2: test GRIB edition 1 encoding limits
- # snap-milli-degree: snaps to 0.001 because grid is 0.00025/0.00025, and is GRIB1-encodable
- # snap-sub-milli-degree: snaps to 0.0005, not GRIB1-encodable (failure expected)
- if( FALSE )
- foreach( snap "snap-milli-degree" "snap-sub-milli-degree_bad" )
- set( test "N640_to_regular_ll_${snap}" )
- if( snap MATCHES "^snap-milli-degree" )
- set( eps "0.00076" )
- elseif( snap MATCHES "^snap-sub-milli-degree" )
- set( eps "0.00074" )
- endif()
- ecbuild_add_test(
- TARGET intf2_${test}_interpol
- DEPENDS int
- COMMAND ${CMD_INT}
- ARGS --grid=0.00025/0.00025 --area=${eps}/0/0/${eps} --input=${PROJECT_SOURCE_DIR}/data/N640.grib --output="intf2_${test}.grib" --int=intf2
- ENVIRONMENT ${_emos_environment} )
- unset( eps )
- unset( test )
- endforeach()
- set_tests_properties( intf2_N640_to_regular_ll_snap-sub-milli-degree_bad_interpol PROPERTIES WILL_FAIL TRUE )
-
- set( snap "snap-sub-milli-degree_sub-area_bad" )
- set( test "N640_to_regular_ll_${snap}" )
- ecbuild_add_test(
- TARGET intf2_${test}_interpol
- DEPENDS int
- COMMAND ${CMD_INT}
- ARGS --grid=0.0625/0.0625 --area=1/0.0625/0/0.5625 --input=${PROJECT_SOURCE_DIR}/data/N640.grib --output="intf2_${test}.grib" --int=intf2
- ENVIRONMENT ${_emos_environment} )
- set_tests_properties( intf2_${test}_interpol PROPERTIES WILL_FAIL TRUE )
- unset( test )
- unset( snap )
- endif()
-
-
# intf2: compare FFT99 vs FFTW exactly (no tolerance!)
- foreach( in "sh_vo-d" "sh_z" )
- set( output_fftw "intf2_${in}_to_N80-fftw.grib" )
- set( output_fft99 "intf2_${in}_to_N80.grib" )
-
- # interpolate forcing FFTW
- ecbuild_add_test(
- TARGET intf2_${in}_to_N80_fft99_vs_fftw_interpol_fftw
- TEST_DEPENDS intf2_${in}_to_N80_interpol
- DEPENDS int
- COMMAND ${CMD_INT}
- CONDITION HAVE_FFTW
- ARGS --gridname=N80 --autoresol=1 --area=0/0/0/0 --input=${PROJECT_SOURCE_DIR}/data/${in}.grib --output=${output_fftw} --int=intf2
- ENVIRONMENT EMOSLIB_FORCED_FFTW=1 ${_emos_environment} )
-
- # compare results to already interpolated results (exactly)
- ecbuild_add_test(
- TARGET intf2_${in}_to_N80_fft99_vs_fftw_compare
- TEST_DEPENDS intf2_${in}_to_N80_fft99_vs_fftw_interpol_fftw
- CONDITION HAVE_FFTW AND CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS ${output_fft99} ${output_fftw}
- ENVIRONMENT ${_grib_environment} )
-
- unset( output_fft99 )
- unset( output_fftw )
- endforeach()
+ if( HAVE_FFTW )
+ foreach( in "vo-d_sh" "z_sh" )
+ set( input "${PROJECT_SOURCE_DIR}/tests/data/${in}.grib" )
+ set( output_fftw "intf2_${in}_to_N80-fftw.grib" )
+ set( output_fft99 "intf2_${in}_to_N80.grib" )
+ unset( opt )
+ list( APPEND opt "--gridname=N80" "--autoresol=1" "--int=intf2" )
+
+ interpolation_add_test_interpol( "intf2_${in}_to_N80_fft99_vs_fftw" "${input}" "${output_fftw}" "${opt}" "" "EMOSLIB_FORCED_FFTW=1" )
+ interpolation_add_test_compare( "intf2_${in}_to_N80_fft99_vs_fftw" "${output_fftw}" "${output_fft99}" )
+
+ unset( opt )
+ unset( output_fft99 )
+ unset( output_fftw )
+ unset( input )
+ endforeach()
+ endif( HAVE_FFTW )
- # intf2: test SH
- set( in "sh_vo-d" )
- set( test "${in}_to_${in}_trunc" )
- set( input "${PROJECT_SOURCE_DIR}/data/${in}.grib" )
- set( output "intf2_${test}.grib" )
- ecbuild_add_test(
- TARGET intf2_${test}_interpol
- DEPENDS int
- COMMAND ${CMD_INT}
- ARGS --input=${input} --output=${output} --out:truncation=63 --int=intf2
- ENVIRONMENT ${_emos_environment} )
- unset( output )
- unset( input )
- unset( test )
+ # intf2: test SH truncation
+ set( in "vo-d_sh" )
+ interpolation_add_test_interpol(
+ "intf2_${in}_to_${in}_trunc"
+ "${PROJECT_SOURCE_DIR}/tests/data/${in}.grib"
+ "intf2_${in}_to_${in}_trunc.grib"
+ "--out:truncation=63 --int=intf2" )
unset( in )
- # FFTW/FFT990
- ecbuild_add_test( TARGET fft99 SOURCES fft99.F LIBS emos )
- ecbuild_add_test( TARGET fftw SOURCES fftw.F LIBS emos CONDITION HAVE_FFTW )
-
-
-endif( HAVE_LIBEMOS_INTERPOLATION )
+endif( HAVE_LIBEMOS_INTERPOLATION AND ENABLE_INSTALL_TOOLS )
####################### G R I B E X #######################
if( HAVE_LIBEMOS_GRIBEX )
- foreach( test "gribex_demo" "gribex_abort" )
- ecbuild_add_test(
- TARGET ${test}
- SOURCES ${test}.F
- LIBS emos
- ARGS -i ${PROJECT_SOURCE_DIR}/data/test_latlon.grib # (only for gribex_demo)
- ENVIRONMENT ${_emos_environment} )
- set_tests_properties( ${test} PROPERTIES WILL_FAIL ${HAVE_GRIBEX_ABORT} )
- endforeach()
+ ecbuild_add_test( TARGET gribex_abort SOURCES gribex_abort.F LIBS emos ENVIRONMENT ${_emos_environment} )
+ ecbuild_add_test( TARGET gribex_demo SOURCES gribex_demo.F LIBS emos ENVIRONMENT ${_emos_environment}
+ ARGS -i "${PROJECT_SOURCE_DIR}/tests/data/msl_regular_ll.grib" )
+
+ set_tests_properties( gribex_abort PROPERTIES WILL_FAIL ${HAVE_GRIBEX_ABORT} )
+ set_tests_properties( gribex_demo PROPERTIES WILL_FAIL ${HAVE_GRIBEX_ABORT} )
endif( HAVE_LIBEMOS_GRIBEX )
######################### B U F R #########################
-if( HAVE_LIBEMOS_BUFRDC )
-
- # set bufr tables path (for testing):
- # (check if bufrtables/ is bundled, otherwise set to best guess)
- if( NOT TEST_BUFR_TABLES_PATH AND EXISTS "${PROJECT_SOURCE_DIR}/bufrtables/B0000000000000000000.TXT" )
- set( TEST_BUFR_TABLES_PATH "${PROJECT_SOURCE_DIR}/bufrtables" )
- elseif ( NOT TEST_BUFR_TABLES_PATH )
- set( TEST_BUFR_TABLES_PATH "${BUFR_TABLES_PATH}" )
- endif()
-
- message( STATUS "TEST_BUFR_TABLES_PATH: ${TEST_BUFR_TABLES_PATH}" )
-
- if( EXISTS "${TEST_BUFR_TABLES_PATH}" )
- set( TEST_BUFR_TABLES_PATH_EXISTS TRUE )
- else()
- set( TEST_BUFR_TABLES_PATH_EXISTS FALSE )
- message( WARNING "Could not find bufr tables path for testing -- turning off some tests!\nTo enable them set a valid TEST_BUFR_TABLES_PATH (alternatively, BUFR_TABLES_PATH) and re-run cmake" )
- endif()
+if( HAVE_LIBEMOS_BUFRDC AND ENABLE_INSTALL_TOOLS )
+ add_subdirectory( bufr )
+endif( HAVE_LIBEMOS_BUFRDC AND ENABLE_INSTALL_TOOLS )
- # download bufr test files
- file(READ "bufr_data_files.txt" bufr_files)
- string(REGEX REPLACE "\n" ";" bufr_files "${bufr_files}")
- ecbuild_get_test_multidata( TARGET download_bufrs NOCHECK NAMES ${bufr_files} )
-
- # This must be here or set_tests_properties() may fail
- # FIXME: add PROPERTIES to ecbuild_add_test()
- if( TEST_BUFR_TABLES_PATH_EXISTS )
- ecbuild_add_test(
- TARGET bufr_decode_all_NotFoundTestFile
- COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_decode_all
- CONDITION TEST_BUFR_TABLES_PATH_EXISTS
- ARGS -i NotFoundTestFile.bufr
- ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
- set_tests_properties( bufr_decode_all_NotFoundTestFile PROPERTIES WILL_FAIL TRUE )
- endif( TEST_BUFR_TABLES_PATH_EXISTS )
-
- ecbuild_add_test(
- TARGET bufr_decode_all_NotFoundTablesPath
- COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_decode_all
- ARGS -i ${PROJECT_SOURCE_DIR}/data/temp_101.bufr
- ENVIRONMENT BUFR_TABLES="NotFoundTablesPath/" )
- set_tests_properties( bufr_decode_all_NotFoundTablesPath PROPERTIES WILL_FAIL TRUE )
-
- foreach( bufr_file ${bufr_files} )
- ecbuild_add_test(
- TARGET bufr_decode_all_${bufr_file}
- COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_decode_all
- CONDITION TEST_BUFR_TABLES_PATH_EXISTS
- ARGS -i ${bufr_file}
- TEST_DEPENDS download_bufrs
- ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
- endforeach()
- # tc_tracks series of tests:
- # FIXME: problems with the compare tests, so not running yet (as before)
- if( FALSE AND ENABLE_INSTALL_TOOLS )
-
- set( in "${PROJECT_SOURCE_DIR}/data/tracks_05W_PEIPAH_2014041000.fm" )
- set( ref "${PROJECT_SOURCE_DIR}/data/tracks_05W_PEIPAH_2014041000.eps.bufr" )
- set( out "tracks_05W_PEIPAH_2014041000.eps.bufr" )
- ecbuild_add_test( TARGET tc_tracks_eps_${out} DEPENDS tc_tracks_eps COMMAND ${CMAKE_BINARY_DIR}/bin/tc_tracks_eps ARGS -i "${in}" -o "${out}" ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
- ecbuild_add_test( TARGET tc_tracks_eps_${out}4 DEPENDS tc_tracks_eps COMMAND ${CMAKE_BINARY_DIR}/bin/tc_tracks_eps ARGS -4 -i "${in}" -o "${out}4" ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
- ecbuild_add_test( TARGET tc_tracks_eps_${out}_cmp TEST_DEPENDS tc_tracks_eps_${out} CONDITION CMD_CMP COMMAND ${CMD_CMP} ARGS "${ref}" "${out}" )
- ecbuild_add_test( TARGET tc_tracks_eps_${out}4_cmp TEST_DEPENDS tc_tracks_eps_${out}4 CONDITION CMD_CMP COMMAND ${CMD_CMP} ARGS "${ref}" "${out}4" )
-
- set( in "${PROJECT_SOURCE_DIR}/data/tracks_15U_ITA_2014041012.fm" )
- set( ref "${PROJECT_SOURCE_DIR}/data/tracks_15U_ITA_2014041012.det.bufr" )
- set( out "tracks_15U_ITA_2014041012.det.bufr" )
- ecbuild_add_test( TARGET tc_tracks_det_${out} DEPENDS tc_tracks_det COMMAND ${CMAKE_BINARY_DIR}/bin/tc_tracks_det ARGS -i "${in}" -o "${out}" ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
- ecbuild_add_test( TARGET tc_tracks_det_${out}4 DEPENDS tc_tracks_det COMMAND ${CMAKE_BINARY_DIR}/bin/tc_tracks_det ARGS -4 -i "${in}" -o "${out}4" ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
- ecbuild_add_test( TARGET tc_tracks_det_${out}_cmp TEST_DEPENDS tc_tracks_det_${out} CONDITION CMD_CMP COMMAND ${CMD_CMP} ARGS "${ref}" "${out}" )
- ecbuild_add_test( TARGET tc_tracks_det_${out}4_cmp TEST_DEPENDS tc_tracks_det_${out}4 CONDITION CMD_CMP COMMAND ${CMD_CMP} ARGS "${ref}" "${out}4" )
+############ T E S T S : R E G R E S S I O N ############
+if( HAVE_LIBEMOS_INTERPOLATION AND ENABLE_INSTALL_TOOLS )
+ if( HAVE_LIBEMOS_TESTS_REGRESS )
+ add_subdirectory( regress )
endif()
+endif( HAVE_LIBEMOS_INTERPOLATION AND ENABLE_INSTALL_TOOLS )
-endif( HAVE_LIBEMOS_BUFRDC )
-
-
-################ L I N K I N G T E S T S ################
-
-# these are build-time (not runtime!) tests
-# (they are here to guarantee in which platforms link can fail)
-
-ecbuild_add_executable(
- TARGET link_mars NOINSTALL
- SOURCES link_mars.F
- CONDITION HAVE_LIBEMOS_INTERPOLATION
- LIBS emos )
-ecbuild_add_executable(
- TARGET link_prodgen NOINSTALL
- SOURCES link_prodgen.F
- CONDITION HAVE_LIBEMOS_INTERPOLATION
- LIBS emos )
+################ S P E C I A L T E S T S ################
+if( HAVE_LIBEMOS_INTERPOLATION )
-###################### H S P 2 G G * ######################
-
-ecbuild_add_test(TARGET hsp2gg SOURCES hsp2gg.F LIBS emos)
-
-
-##################### E X A M P L E S #####################
-
-ecbuild_add_executable(
- TARGET example_intf2 NOINSTALL
- SOURCES example_intf2.F
- CONDITION HAVE_LIBEMOS_INTERPOLATION
- LIBS emos )
-
-ecbuild_add_executable(
- TARGET example_intuvp2 NOINSTALL
- SOURCES example_intuvp2.F
- CONDITION HAVE_LIBEMOS_INTERPOLATION
- LIBS emos )
-
+ # linking (build-time) test(s)
+ foreach( src "example_intf2.F" "example_intuvp2.F" "link_mars.F" "link_prodgen.F" )
+ get_filename_component( test ${src} NAME_WE )
+ ecbuild_add_executable( TARGET ${test} NOINSTALL SOURCES ${src} LIBS emos )
+ unset( test )
+ endforeach()
+ ecbuild_add_executable( TARGET "example_intf" NOINSTALL SOURCES "example_intf.F90" LIBS emos CONDITION (NOT CMAKE_Fortran_COMPILER_ID MATCHES "PGI") )
-############ T E S T S : R E G R E S S I O N ############
+ # run-time test(s)
+ foreach( test "test_fft99" "test_hsp2gg" )
+ ecbuild_add_test( TARGET ${test} SOURCES ${test}.F LIBS emos )
+ endforeach()
+ ecbuild_add_test( TARGET "test_fftw" SOURCES "test_fftw.F" LIBS emos CONDITION HAVE_FFTW )
-if( HAVE_LIBEMOS_INTERPOLATION )
-if( HAVE_LIBEMOS_TESTS_REGRESS )
- add_subdirectory( regress )
-endif()
endif( HAVE_LIBEMOS_INTERPOLATION )
+
diff --git a/tests/bufr/CMakeLists.txt b/tests/bufr/CMakeLists.txt
new file mode 100644
index 0000000..505cfed
--- /dev/null
+++ b/tests/bufr/CMakeLists.txt
@@ -0,0 +1,115 @@
+
+# set bufr tables path (for testing):
+# (check if bufrtables/ is bundled, otherwise set to best guess)
+if( NOT TEST_BUFR_TABLES_PATH AND EXISTS "${PROJECT_SOURCE_DIR}/bufrtables/B0000000000000000000.TXT" )
+ set( TEST_BUFR_TABLES_PATH "${PROJECT_SOURCE_DIR}/bufrtables" )
+elseif ( NOT TEST_BUFR_TABLES_PATH )
+ set( TEST_BUFR_TABLES_PATH "${BUFR_TABLES_PATH}" )
+endif()
+ecbuild_info( "TEST_BUFR_TABLES_PATH: ${TEST_BUFR_TABLES_PATH}" )
+ecbuild_info( "BUFR_TABLES_PATH: ${BUFR_TABLES_PATH}" )
+
+set( TEST_BUFR_TABLES_PATH_EXISTS TRUE )
+if( NOT EXISTS "${TEST_BUFR_TABLES_PATH}" )
+ set( TEST_BUFR_TABLES_PATH_EXISTS FALSE )
+ ecbuild_critical("Could not find bufr tables path for testing! Please set a valid TEST_BUFR_TABLES_PATH (or BUFR_TABLES_PATH) and re-run cmake" )
+endif()
+
+
+# download bufr test files
+file(STRINGS "download_tests_bufr_src_files.txt" files)
+ecbuild_get_test_multidata(
+ TARGET download_tests_bufr_src_files NOCHECK
+ NAMES ${files} )
+
+
+############################################################
+
+# This must be here or set_tests_properties() may fail
+# FIXME: add PROPERTIES to ecbuild_add_test()
+if( TEST_BUFR_TABLES_PATH_EXISTS )
+ ecbuild_add_test(
+ TARGET bufr_decode_all_NotFoundTestFile
+ COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_decode_all
+ ARGS -i NotFoundTestFile.bufr
+ ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+ set_tests_properties( bufr_decode_all_NotFoundTestFile PROPERTIES WILL_FAIL TRUE )
+endif()
+
+ecbuild_add_test(
+ TARGET bufr_decode_all_NotFoundTablesPath
+ COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_decode_all
+ ARGS -i ${PROJECT_SOURCE_DIR}/tests/bufr/data/temp_101.bufr
+ ENVIRONMENT BUFR_TABLES=NotFoundTablesPath/ )
+set_tests_properties( bufr_decode_all_NotFoundTablesPath PROPERTIES WILL_FAIL TRUE )
+
+foreach( bufr_file ${files} )
+ ecbuild_add_test(
+ TARGET bufr_decode_all_${bufr_file}
+ COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_decode_all
+ ARGS -i ${bufr_file}
+ TEST_DEPENDS download_tests_bufr_src_files
+ ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+endforeach()
+
+
+############################################################
+
+set( data ${PROJECT_SOURCE_DIR}/tests/bufr/data )
+ecbuild_add_test(
+ TARGET bufr_filter_NotFoundTablesPath
+ COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_filter
+ ARGS -r ${data}/request -i ${data}/CRYO00012015020412.DC1.DAT -o /dev/null
+ ENVIRONMENT BUFR_TABLES=NotFoundTablesPath/ )
+set_tests_properties(
+ bufr_filter_NotFoundTablesPath
+ PROPERTIES WILL_FAIL TRUE )
+
+if( TEST_BUFR_TABLES_PATH_EXISTS )
+ ecbuild_add_test(
+ TARGET bufr_filter_NotFoundTestFile
+ COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_filter
+ ARGS -r ${data}/request -i NotFoundTestFile -o /dev/null
+ ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+ ecbuild_add_test(
+ TARGET bufr_filter_NotFoundRequest
+ COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_filter
+ ARGS -r NotFoundRequest -i ${data}/CRYO00012015020412.DC1.DAT -o /dev/null
+ ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+ ecbuild_add_test(
+ TARGET bufr_filter_CRYO00012015020412.DC1.DAT
+ COMMAND ${CMAKE_BINARY_DIR}/bin/bufr_filter
+ ARGS -r ${data}/request -i ${data}/CRYO00012015020412.DC1.DAT -o /dev/null
+ ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+ set_tests_properties(
+ bufr_filter_NotFoundTestFile
+ bufr_filter_NotFoundRequest
+ PROPERTIES WILL_FAIL TRUE )
+endif()
+unset( data )
+
+
+############################################################
+
+# tc_tracks series of tests:
+# FIXME: problems with the compare tests, so not running yet (as before)
+if( FALSE )
+
+ set( in "${PROJECT_SOURCE_DIR}/tests/bufr/data/tracks_05W_PEIPAH_2014041000.fm" )
+ set( ref "${PROJECT_SOURCE_DIR}/tests/bufr/data/tracks_05W_PEIPAH_2014041000.eps.bufr" )
+ set( out "tracks_05W_PEIPAH_2014041000.eps.bufr" )
+ ecbuild_add_test( TARGET tc_tracks_eps_${out} DEPENDS tc_tracks_eps COMMAND ${CMAKE_BINARY_DIR}/bin/tc_tracks_eps ARGS -i "${in}" -o "${out}" ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+ ecbuild_add_test( TARGET tc_tracks_eps_${out}4 DEPENDS tc_tracks_eps COMMAND ${CMAKE_BINARY_DIR}/bin/tc_tracks_eps ARGS -4 -i "${in}" -o "${out}4" ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+ ecbuild_add_test( TARGET tc_tracks_eps_${out}_cmp TEST_DEPENDS tc_tracks_eps_${out} CONDITION CMD_CMP COMMAND ${CMD_CMP} ARGS "${ref}" "${out}" )
+ ecbuild_add_test( TARGET tc_tracks_eps_${out}4_cmp TEST_DEPENDS tc_tracks_eps_${out}4 CONDITION CMD_CMP COMMAND ${CMD_CMP} ARGS "${ref}" "${out}4" )
+
+ set( in "${PROJECT_SOURCE_DIR}/tests/bufr/data/tracks_15U_ITA_2014041012.fm" )
+ set( ref "${PROJECT_SOURCE_DIR}/tests/bufr/data/tracks_15U_ITA_2014041012.det.bufr" )
+ set( out "tracks_15U_ITA_2014041012.det.bufr" )
+ ecbuild_add_test( TARGET tc_tracks_det_${out} DEPENDS tc_tracks_det COMMAND ${CMAKE_BINARY_DIR}/bin/tc_tracks_det ARGS -i "${in}" -o "${out}" ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+ ecbuild_add_test( TARGET tc_tracks_det_${out}4 DEPENDS tc_tracks_det COMMAND ${CMAKE_BINARY_DIR}/bin/tc_tracks_det ARGS -4 -i "${in}" -o "${out}4" ENVIRONMENT BUFR_TABLES=${TEST_BUFR_TABLES_PATH} )
+ ecbuild_add_test( TARGET tc_tracks_det_${out}_cmp TEST_DEPENDS tc_tracks_det_${out} CONDITION CMD_CMP COMMAND ${CMD_CMP} ARGS "${ref}" "${out}" )
+ ecbuild_add_test( TARGET tc_tracks_det_${out}4_cmp TEST_DEPENDS tc_tracks_det_${out}4 CONDITION CMD_CMP COMMAND ${CMD_CMP} ARGS "${ref}" "${out}4" )
+
+endif()
+
diff --git a/tests/bufr/data/CRYO00012015020412.DC1.DAT b/tests/bufr/data/CRYO00012015020412.DC1.DAT
new file mode 100644
index 0000000..01db768
Binary files /dev/null and b/tests/bufr/data/CRYO00012015020412.DC1.DAT differ
diff --git a/data/ISMD01_OKPR.bufr b/tests/bufr/data/ISMD01_OKPR.bufr
similarity index 100%
rename from data/ISMD01_OKPR.bufr
rename to tests/bufr/data/ISMD01_OKPR.bufr
diff --git a/tests/bufr/data/request b/tests/bufr/data/request
new file mode 100644
index 0000000..424def5
--- /dev/null
+++ b/tests/bufr/data/request
@@ -0,0 +1 @@
+TIME 2 20150204120100 20150204123000
diff --git a/data/synop_4.bufr b/tests/bufr/data/synop_4.bufr
similarity index 100%
rename from data/synop_4.bufr
rename to tests/bufr/data/synop_4.bufr
diff --git a/data/temp_101.bufr b/tests/bufr/data/temp_101.bufr
similarity index 100%
rename from data/temp_101.bufr
rename to tests/bufr/data/temp_101.bufr
diff --git a/data/tracks_05W_PEIPAH_2014041000.eps.bufr b/tests/bufr/data/tracks_05W_PEIPAH_2014041000.eps.bufr
similarity index 100%
rename from data/tracks_05W_PEIPAH_2014041000.eps.bufr
rename to tests/bufr/data/tracks_05W_PEIPAH_2014041000.eps.bufr
diff --git a/data/tracks_05W_PEIPAH_2014041000.eps.bufr4 b/tests/bufr/data/tracks_05W_PEIPAH_2014041000.eps.bufr4
similarity index 100%
rename from data/tracks_05W_PEIPAH_2014041000.eps.bufr4
rename to tests/bufr/data/tracks_05W_PEIPAH_2014041000.eps.bufr4
diff --git a/data/tracks_05W_PEIPAH_2014041000.fm b/tests/bufr/data/tracks_05W_PEIPAH_2014041000.fm
similarity index 100%
rename from data/tracks_05W_PEIPAH_2014041000.fm
rename to tests/bufr/data/tracks_05W_PEIPAH_2014041000.fm
diff --git a/data/tracks_15U_ITA_2014041000.eps.bufr b/tests/bufr/data/tracks_15U_ITA_2014041000.eps.bufr
similarity index 100%
rename from data/tracks_15U_ITA_2014041000.eps.bufr
rename to tests/bufr/data/tracks_15U_ITA_2014041000.eps.bufr
diff --git a/data/tracks_15U_ITA_2014041000.eps.bufr4 b/tests/bufr/data/tracks_15U_ITA_2014041000.eps.bufr4
similarity index 100%
rename from data/tracks_15U_ITA_2014041000.eps.bufr4
rename to tests/bufr/data/tracks_15U_ITA_2014041000.eps.bufr4
diff --git a/data/tracks_15U_ITA_2014041000.fm b/tests/bufr/data/tracks_15U_ITA_2014041000.fm
similarity index 100%
rename from data/tracks_15U_ITA_2014041000.fm
rename to tests/bufr/data/tracks_15U_ITA_2014041000.fm
diff --git a/data/tracks_15U_ITA_2014041012.det.bufr b/tests/bufr/data/tracks_15U_ITA_2014041012.det.bufr
similarity index 100%
rename from data/tracks_15U_ITA_2014041012.det.bufr
rename to tests/bufr/data/tracks_15U_ITA_2014041012.det.bufr
diff --git a/data/tracks_15U_ITA_2014041012.det.bufr4 b/tests/bufr/data/tracks_15U_ITA_2014041012.det.bufr4
similarity index 100%
rename from data/tracks_15U_ITA_2014041012.det.bufr4
rename to tests/bufr/data/tracks_15U_ITA_2014041012.det.bufr4
diff --git a/data/tracks_15U_ITA_2014041012.fm b/tests/bufr/data/tracks_15U_ITA_2014041012.fm
similarity index 100%
rename from data/tracks_15U_ITA_2014041012.fm
rename to tests/bufr/data/tracks_15U_ITA_2014041012.fm
diff --git a/tests/bufr_data_files.txt b/tests/bufr/download_tests_bufr_src_files.txt
similarity index 100%
rename from tests/bufr_data_files.txt
rename to tests/bufr/download_tests_bufr_src_files.txt
diff --git a/data/O640.grib b/tests/data/2t_O640.grib
similarity index 100%
rename from data/O640.grib
rename to tests/data/2t_O640.grib
diff --git a/data/intf2_O640_to_F48.grib b/tests/data/intf2_2t_O640_to_F48.grib.ref
similarity index 100%
rename from data/intf2_O640_to_F48.grib
rename to tests/data/intf2_2t_O640_to_F48.grib.ref
diff --git a/data/intf2_O640_to_F80.grib b/tests/data/intf2_2t_O640_to_F80.grib.ref
similarity index 100%
rename from data/intf2_O640_to_F80.grib
rename to tests/data/intf2_2t_O640_to_F80.grib.ref
diff --git a/data/intf2_O640_to_N80.grib b/tests/data/intf2_2t_O640_to_N80.grib.ref
similarity index 100%
rename from data/intf2_O640_to_N80.grib
rename to tests/data/intf2_2t_O640_to_N80.grib.ref
diff --git a/data/intf2_O640_to_O80.grib b/tests/data/intf2_2t_O640_to_O80.grib.ref
similarity index 100%
rename from data/intf2_O640_to_O80.grib
rename to tests/data/intf2_2t_O640_to_O80.grib.ref
diff --git a/data/intf2_O640_to_regular_ll.grib b/tests/data/intf2_2t_O640_to_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_O640_to_regular_ll.grib
rename to tests/data/intf2_2t_O640_to_regular_ll.grib.ref
diff --git a/data/intf2_O640_to_rotated_regular_ll.grib b/tests/data/intf2_2t_O640_to_rotated_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_O640_to_rotated_regular_ll.grib
rename to tests/data/intf2_2t_O640_to_rotated_regular_ll.grib.ref
diff --git a/data/intf2_N640_to_F48.grib b/tests/data/intf2_msl_N640_to_F48.grib.ref
similarity index 100%
rename from data/intf2_N640_to_F48.grib
rename to tests/data/intf2_msl_N640_to_F48.grib.ref
diff --git a/data/intf2_N640_to_F80.grib b/tests/data/intf2_msl_N640_to_F80.grib.ref
similarity index 100%
rename from data/intf2_N640_to_F80.grib
rename to tests/data/intf2_msl_N640_to_F80.grib.ref
diff --git a/data/intf2_N640_to_N80.grib b/tests/data/intf2_msl_N640_to_N80.grib.ref
similarity index 100%
rename from data/intf2_N640_to_N80.grib
rename to tests/data/intf2_msl_N640_to_N80.grib.ref
diff --git a/data/intf2_N640_to_O80.grib b/tests/data/intf2_msl_N640_to_O80.grib.ref
similarity index 100%
rename from data/intf2_N640_to_O80.grib
rename to tests/data/intf2_msl_N640_to_O80.grib.ref
diff --git a/data/intf2_N640_to_regular_ll.grib b/tests/data/intf2_msl_N640_to_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_N640_to_regular_ll.grib
rename to tests/data/intf2_msl_N640_to_regular_ll.grib.ref
diff --git a/data/intf2_N640_to_rotated_regular_ll.grib b/tests/data/intf2_msl_N640_to_rotated_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_N640_to_rotated_regular_ll.grib
rename to tests/data/intf2_msl_N640_to_rotated_regular_ll.grib.ref
diff --git a/data/intf2_regular_ll_to_F48.grib b/tests/data/intf2_msl_regular_ll_to_F48.grib.ref
similarity index 100%
rename from data/intf2_regular_ll_to_F48.grib
rename to tests/data/intf2_msl_regular_ll_to_F48.grib.ref
diff --git a/data/intf2_regular_ll_to_F80.grib b/tests/data/intf2_msl_regular_ll_to_F80.grib.ref
similarity index 100%
rename from data/intf2_regular_ll_to_F80.grib
rename to tests/data/intf2_msl_regular_ll_to_F80.grib.ref
diff --git a/data/intf2_regular_ll_to_regular_ll.grib b/tests/data/intf2_msl_regular_ll_to_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_regular_ll_to_regular_ll.grib
rename to tests/data/intf2_msl_regular_ll_to_regular_ll.grib.ref
diff --git a/data/intf2_F640_to_F48.grib b/tests/data/intf2_q_F640_to_F48.grib.ref
similarity index 100%
rename from data/intf2_F640_to_F48.grib
rename to tests/data/intf2_q_F640_to_F48.grib.ref
diff --git a/data/intf2_F640_to_F80.grib b/tests/data/intf2_q_F640_to_F80.grib.ref
similarity index 100%
rename from data/intf2_F640_to_F80.grib
rename to tests/data/intf2_q_F640_to_F80.grib.ref
diff --git a/data/intf2_F640_to_regular_ll.grib b/tests/data/intf2_q_F640_to_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_F640_to_regular_ll.grib
rename to tests/data/intf2_q_F640_to_regular_ll.grib.ref
diff --git a/data/intf2_F640_to_rotated_regular_ll.grib b/tests/data/intf2_q_F640_to_rotated_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_F640_to_rotated_regular_ll.grib
rename to tests/data/intf2_q_F640_to_rotated_regular_ll.grib.ref
diff --git a/data/intf2_sh_vo-d_to_F48.grib b/tests/data/intf2_vo-d_sh_to_F48.grib.ref
similarity index 100%
rename from data/intf2_sh_vo-d_to_F48.grib
rename to tests/data/intf2_vo-d_sh_to_F48.grib.ref
diff --git a/data/intf2_sh_vo-d_to_F80.grib b/tests/data/intf2_vo-d_sh_to_F80.grib.ref
similarity index 100%
rename from data/intf2_sh_vo-d_to_F80.grib
rename to tests/data/intf2_vo-d_sh_to_F80.grib.ref
diff --git a/data/intf2_sh_vo-d_to_N80.grib b/tests/data/intf2_vo-d_sh_to_N80.grib.ref
similarity index 100%
rename from data/intf2_sh_vo-d_to_N80.grib
rename to tests/data/intf2_vo-d_sh_to_N80.grib.ref
diff --git a/data/intf2_sh_vo-d_to_O80.grib b/tests/data/intf2_vo-d_sh_to_O80.grib.ref
similarity index 100%
rename from data/intf2_sh_vo-d_to_O80.grib
rename to tests/data/intf2_vo-d_sh_to_O80.grib.ref
diff --git a/data/intf2_sh_vo-d_to_regular_ll.grib b/tests/data/intf2_vo-d_sh_to_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_sh_vo-d_to_regular_ll.grib
rename to tests/data/intf2_vo-d_sh_to_regular_ll.grib.ref
diff --git a/data/intf2_sh_vo-d_to_rotated_regular_ll.grib b/tests/data/intf2_vo-d_sh_to_rotated_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_sh_vo-d_to_rotated_regular_ll.grib
rename to tests/data/intf2_vo-d_sh_to_rotated_regular_ll.grib.ref
diff --git a/data/intf2_sh_z_to_F48.grib b/tests/data/intf2_z_sh_to_F48.grib.ref
similarity index 100%
rename from data/intf2_sh_z_to_F48.grib
rename to tests/data/intf2_z_sh_to_F48.grib.ref
diff --git a/data/intf2_sh_z_to_F80.grib b/tests/data/intf2_z_sh_to_F80.grib.ref
similarity index 100%
rename from data/intf2_sh_z_to_F80.grib
rename to tests/data/intf2_z_sh_to_F80.grib.ref
diff --git a/data/intf2_sh_z_to_N80.grib b/tests/data/intf2_z_sh_to_N80.grib.ref
similarity index 100%
rename from data/intf2_sh_z_to_N80.grib
rename to tests/data/intf2_z_sh_to_N80.grib.ref
diff --git a/data/intf2_sh_z_to_O80.grib b/tests/data/intf2_z_sh_to_O80.grib.ref
similarity index 100%
rename from data/intf2_sh_z_to_O80.grib
rename to tests/data/intf2_z_sh_to_O80.grib.ref
diff --git a/data/intf2_sh_z_to_regular_ll.grib b/tests/data/intf2_z_sh_to_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_sh_z_to_regular_ll.grib
rename to tests/data/intf2_z_sh_to_regular_ll.grib.ref
diff --git a/data/intf2_sh_z_to_rotated_regular_ll.grib b/tests/data/intf2_z_sh_to_rotated_regular_ll.grib.ref
similarity index 100%
rename from data/intf2_sh_z_to_rotated_regular_ll.grib
rename to tests/data/intf2_z_sh_to_rotated_regular_ll.grib.ref
diff --git a/data/intuvp2_sh_vo-d_to_F80.grib b/tests/data/intuvp2_vo-d_sh_to_F80.grib.ref
similarity index 100%
rename from data/intuvp2_sh_vo-d_to_F80.grib
rename to tests/data/intuvp2_vo-d_sh_to_F80.grib.ref
diff --git a/data/intuvp2_sh_vo-d_to_N80.grib b/tests/data/intuvp2_vo-d_sh_to_N80.grib.ref
similarity index 100%
rename from data/intuvp2_sh_vo-d_to_N80.grib
rename to tests/data/intuvp2_vo-d_sh_to_N80.grib.ref
diff --git a/data/intuvp2_sh_vo-d_to_O80.grib b/tests/data/intuvp2_vo-d_sh_to_O80.grib.ref
similarity index 100%
rename from data/intuvp2_sh_vo-d_to_O80.grib
rename to tests/data/intuvp2_vo-d_sh_to_O80.grib.ref
diff --git a/data/intuvp2_sh_vo-d_to_regular_ll.grib b/tests/data/intuvp2_vo-d_sh_to_regular_ll.grib.ref
similarity index 100%
rename from data/intuvp2_sh_vo-d_to_regular_ll.grib
rename to tests/data/intuvp2_vo-d_sh_to_regular_ll.grib.ref
diff --git a/data/intuvp2_sh_vo-d_to_rotated_regular_ll.grib b/tests/data/intuvp2_vo-d_sh_to_rotated_regular_ll.grib.ref
similarity index 100%
rename from data/intuvp2_sh_vo-d_to_rotated_regular_ll.grib
rename to tests/data/intuvp2_vo-d_sh_to_rotated_regular_ll.grib.ref
diff --git a/data/N640.grib b/tests/data/msl_N640.grib
similarity index 100%
rename from data/N640.grib
rename to tests/data/msl_N640.grib
diff --git a/data/regular_ll.grib b/tests/data/msl_regular_ll.grib
similarity index 100%
rename from data/regular_ll.grib
rename to tests/data/msl_regular_ll.grib
diff --git a/data/F640.grib b/tests/data/q_F640.grib
similarity index 100%
rename from data/F640.grib
rename to tests/data/q_F640.grib
diff --git a/data/sh_vo-d.grib b/tests/data/vo-d_sh.grib
similarity index 100%
rename from data/sh_vo-d.grib
rename to tests/data/vo-d_sh.grib
diff --git a/data/sh_z.grib b/tests/data/z_sh.grib
similarity index 100%
rename from data/sh_z.grib
rename to tests/data/z_sh.grib
diff --git a/tests/example_intf.F90 b/tests/example_intf.F90
new file mode 100644
index 0000000..486dd48
--- /dev/null
+++ b/tests/example_intf.F90
@@ -0,0 +1,258 @@
+!
+! Copyright 2015 ECMWF.
+!
+! This software is licensed under the terms of the Apache Licence
+! Version 2.0 which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+!
+! Unless required by applicable law or agreed to in writing, software
+! distributed under the License is distributed on an "AS IS" BASIS,
+! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+!
+! In applying this licence, ECMWF does not waive the privileges and immunities
+! granted to it by virtue of its status as an intergovernmental organisation
+! nor does it submit to any jurisdiction.
+!
+PROGRAM EXAMPLE_INTF
+
+ USE grib_api
+ IMPLICIT NONE
+ INTEGER, DIMENSION(4) :: INTV
+ REAL, DIMENSION(4) :: REALV
+ CHARACTER(Len=20), DIMENSION(4) :: CHARV
+
+ INTEGER (KIND=4), DIMENSION(1) :: INGRIB(1), NEWFLD(1)
+
+ INTEGER :: IUNIT1, IUNIT2
+ INTEGER :: IGRIB
+ INTEGER :: IRET, NARGS
+ INTEGER (KIND=KINDOFINT) :: INLEN, NEWLEN
+ INTEGER :: J
+ INTEGER :: NRESOL
+ INTEGER :: Ni, Nj
+ INTEGER :: IBPV
+ INTEGER :: len_in, len_out
+ INTEGER :: IPARAM, ITABLE
+ REAL, DIMENSION(:), ALLOCATABLE :: VALUES_IN, VALUES_OUT
+ REAL :: DLAT, DLON
+ REAL :: VALMISS
+
+! Externals
+ INTEGER :: INTIN, INTOUT, INTF, IARGC
+
+ CHARACTER(Len=128) :: INFILE, OUTFILE
+ CHARACTER(Len=128), DIMENSION(20) :: CARG
+ CHARACTER(Len=128) :: MESSAGE = ' '
+ CHARACTER(Len=32) :: CINGRIDT = ' ', CINGRIDN = ' '
+
+! **********************************************************************
+! Default values
+
+ IBPV = 16 ! bitsPerValue / accuracy
+ NRESOL = 0 ! Gaussian resolution
+ DLAT = 0.5 ! Latitude increment (in degrees)
+ DLON = 0.5 ! Longitude increment (in degrees)
+ VALMISS = -99999.9 ! Missing value indicator
+
+! Pick up file names from command line.
+
+ NARGS = 0
+ NARGS = IARGC()
+ IF ( NARGS .NE. 4) THEN
+ PRINT *, 'NARGS is incorrect'
+ CALL USAGE
+ STOP
+ END IF
+
+ DO J = 1, NARGS
+ CALL GETARG(J,CARG(J))
+ END DO
+
+ DO J = 1, NARGS,2
+ IF (CARG(J) == '-i') THEN
+ INFILE=TRIM(CARG(J+1))
+ ELSEIF (CARG(J) == '-o') THEN
+ OUTFILE=TRIM(CARG(J+1))
+ ELSE
+ CALL USAGE
+ STOP
+ END IF
+ END DO
+
+ PRINT *, '*** Open input and output files'
+
+ CALL GRIB_OPEN_FILE (IUNIT1, INFILE, 'r', IRET)
+ IF ( IRET /= GRIB_SUCCESS) STOP ' GRIB_OPEN of INFILE failed'
+
+ CALL GRIB_OPEN_FILE (IUNIT2, OUTFILE, 'w', IRET)
+ IF ( IRET /= GRIB_SUCCESS) STOP ' GRIB_OPEN of OUTFILE failed'
+
+ PRINT *, '*** Start of loop through input GRIB-coded fields'
+
+ CALL GRIB_NEW_FROM_FILE(IUNIT1, IGRIB, IRET)
+
+ LOOP: DO WHILE (IRET /= GRIB_END_OF_FILE)
+
+ IF (IRET /= GRIB_SUCCESS) THEN
+ PRINT *, ' GRIB_NEW_FROM_FILE failed with error code = ', IRET
+ CALL GRIB_GET_ERROR_STRING(IRET,MESSAGE)
+ PRINT *, TRIM(MESSAGE)
+ PRINT *, 'Skipping to next message ...'
+ CALL GRIB_NEW_FROM_FILE(IUNIT1, IGRIB, IRET)
+ CYCLE
+ ENDIF
+
+ PRINT *, '*** Unpack the values in the input GRIB'
+
+ CALL GRIB_GET_SIZE(IGRIB,'values',len_in)
+ PRINT *, ' Allocating array for input field of size=',len_in
+ ALLOCATE(VALUES_IN(len_in))
+ CALL GRIB_SET(IGRIB,'missingValue',VALMISS)
+ CALL GRIB_GET(IGRIB,'values',VALUES_IN)
+
+! Define the input field via calls to INTIN
+ CHARV(1) = 'unpacked'
+ IRET = INTIN('form',INTV, REALV, CHARV)
+ IF ( IRET /= 0 ) THEN
+ PRINT *, ' INTIN failed to set format'
+ STOP
+ ENDIF
+
+! Get parameter information (assumes unportable ParamId structure)
+ CALL GRIB_GET(IGRIB,'paramId',IPARAM)
+ ITABLE = 128
+ IF (IPARAM.GT.1000) THEN
+ ITABLE = IPARAM / 1000
+ IPARAM = MOD(IPARAM,1000)
+ ENDIF
+
+ INTV(1) = ITABLE
+ IRET = INTIN('table',INTV, REALV, CHARV)
+ IF ( IRET /= 0 ) THEN
+ PRINT *, ' INTIN failed to set table'
+ STOP
+ ENDIF
+
+ INTV(1) = IPARAM
+ IRET = INTIN('parameter',INTV, REALV, CHARV)
+ IF ( IRET /= 0 ) THEN
+ PRINT *, ' INTIN failed to set parameter'
+ STOP
+ ENDIF
+
+! Check it's a Gaussian grid and set resolution
+ CALL GRIB_GET(IGRIB,'gridType',CINGRIDT)
+ IF ((TRIM(CINGRIDT) == 'regular_gg') .OR. &
+ (TRIM(CINGRIDT) == 'reduced_gg')) THEN
+ CALL GRIB_GET(IGRIB,'gridName',CINGRIDN)
+ CHARV(1) = CINGRIDN(1:20)
+ PRINT *, ' gridName = ', CHARV(1)
+ IRET = INTIN('gridname',INTV, REALV, CHARV)
+ IF ( IRET /= 0 ) THEN
+ PRINT *, ' INTIN failed to set gridname'
+ STOP
+ ENDIF
+ ELSE
+ PRINT *, 'Input grid type ', TRIM(CINGRIDT), ' not regular_gg/reduced_gg'
+ CYCLE
+ ENDIF
+
+! Set the missing value
+ CHARV(1) = 'yes'
+ REALV(1) = VALMISS
+ IRET = INTIN('missingvalue',INTV, REALV, CHARV)
+ IF ( IRET /= 0 ) THEN
+ PRINT *, ' INTIN failed to set missingValue'
+ STOP
+ ENDIF
+
+! Define the output field with calls to INTOUT
+ CHARV(1) = 'unpacked'
+ IRET = INTOUT('form',INTV, REALV, CHARV)
+ IF ( IRET /= 0 ) THEN
+ PRINT *, ' INTOUT failed to set format'
+ STOP
+ ENDIF
+
+ PRINT *, '*** Define the grid interval for the new field(s)'
+ REALV(1) = DLAT
+ REALV(2) = DLON
+ IRET = INTOUT('grid', INTV, REALV, CHARV)
+ IF ( IRET /= 0 ) THEN
+ PRINT *, ' INTOUT failed to set grid resolution'
+ STOP
+ ENDIF
+ PRINT *, ' GRID TYPE = lat-lon'
+ PRINT *, ' RESOL = ', REALV(1), 'x', REALV(2)
+
+! Calculate the number of points (assumes global grid)
+ Ni = INT(360.0/REALV(2))
+ Nj = INT(180.0/REALV(1)) + 1
+ len_out = Ni*Nj
+ PRINT *, ' Allocating output array of size = ', len_out
+ ALLOCATE(VALUES_OUT(LEN_OUT))
+
+! Define the packing accuracy for the new field(s).
+ INTV(1) = IBPV
+ IRET = INTOUT('accuracy', INTV, REALV, CHARV)
+ IF ( IRET /= 0 ) THEN
+ PRINT *, ' INTOUT failed to set accuracy'
+ STOP
+ ENDIF
+ PRINT *, ' ACCURACY = ', IBPV
+
+ PRINT *, '*** Interpolate'
+ INLEN =1
+ NEWLEN = 1
+ IRET = INTF(INGRIB,len_in,VALUES_IN,NEWFLD,len_out,VALUES_OUT)
+ IF ( IRET /= 0 ) THEN
+ WRITE(*,*) ' INTF failed for product '
+ WRITE(*,*) ' Skipping to next message ...'
+ CALL GRIB_RELEASE(IGRIB)
+ DEALLOCATE(VALUES_IN,VALUES_OUT)
+ CYCLE
+ ENDIF
+
+ PRINT *, '*** Set-up and write output GRIB'
+
+ CALL GRIB_SET(IGRIB,'gridType','regular_ll')
+ CALL GRIB_SET(IGRIB,'latitudeOfFirstGridPointInDegrees',90.0)
+ CALL GRIB_SET(IGRIB,'latitudeOfLastGridPointInDegrees',-90.0)
+ CALL GRIB_SET(IGRIB,'longitudeOfFirstGridPointInDegrees',0.0)
+ CALL GRIB_SET(IGRIB,'longitudeOfLastGridPointInDegrees',360.0 - DLON)
+ CALL GRIB_SET(IGRIB,'iDirectionIncrementInDegrees',DLON)
+ CALL GRIB_SET(IGRIB,'jDirectionIncrementInDegrees',DLON)
+ CALL GRIB_SET(IGRIB,'bitsPerValue',IBPV)
+ CALL GRIB_SET(IGRIB,'Ni',Ni)
+ CALL GRIB_SET(IGRIB,'Nj',Nj)
+ CALL GRIB_SET(IGRIB,'values',VALUES_OUT)
+ CALL GRIB_WRITE(IGRIB,IUNIT2)
+
+! Free the memory.
+ CALL GRIB_RELEASE(IGRIB)
+ DEALLOCATE(VALUES_IN, VALUES_OUT)
+
+! Loop back for next product.
+ CALL GRIB_NEW_FROM_FILE(IUNIT1, IGRIB, IRET)
+
+ END DO LOOP
+
+! Close input and output files.
+ CALL GRIB_CLOSE_FILE(IUNIT1, IRET)
+ CALL GRIB_CLOSE_FILE(IUNIT2, IRET)
+
+ STOP
+
+CONTAINS
+
+ SUBROUTINE USAGE
+
+ PRINT *, 'Usage: example_intf -i inputfile -o outputfile'
+ PRINT *, ' -i inputfile input file name (required)'
+ PRINT *, ' -o outputfile output file name (required)'
+
+ RETURN
+
+ END SUBROUTINE USAGE
+
+END PROGRAM EXAMPLE_INTF
+
diff --git a/tests/gribex_demo.F b/tests/gribex_demo.F
index d643f03..2313bf6 100644
--- a/tests/gribex_demo.F
+++ b/tests/gribex_demo.F
@@ -116,9 +116,9 @@ C
CHARACTER*1 YOPER
INTEGER IFILE, NUMERR, IPBLEN, IWORD, IFILEN, IRET, IARGC, NARGS
INTEGER JCOUNT, LENOUT
- INTEGER JLAT, JLONG, JSTART, JEND
- REAL ZFIRST, ZLAST, ZSTEP, ZLAT
- REAL ZMAX
+CC INTEGER JLAT, JLONG, JSTART, JEND
+CC REAL ZFIRST, ZLAST, ZSTEP, ZLAT
+CC REAL ZMAX
C
C Pick up file names from command line.
C
diff --git a/tests/regress/CMakeLists.txt b/tests/regress/CMakeLists.txt
index 917003e..bbf0856 100644
--- a/tests/regress/CMakeLists.txt
+++ b/tests/regress/CMakeLists.txt
@@ -1,90 +1,73 @@
-######################### D A T A #########################
+# Download interpolation source files/reference results
-file(READ "download_tests_regress_src_files.txt" files)
-string(REGEX REPLACE "\n" ";" files "${files}")
-ecbuild_get_test_multidata( TARGET download_tests_regress_src_files NOCHECK NAMES ${files} )
+file(STRINGS "download_tests_regress_src_files.txt" files)
+ecbuild_get_test_multidata(
+ TARGET download_tests_regress_src_files NOCHECK
+ NAMES ${files} )
-file(READ "download_tests_regress_ref_files.txt" files)
-string(REGEX REPLACE "\n" ";" files "${files}")
-ecbuild_get_test_multidata( TARGET download_tests_regress_ref_files NOCHECK NAMES ${files} )
+file(STRINGS "download_tests_regress_ref_files.txt" files)
+ecbuild_get_test_multidata(
+ TARGET download_tests_regress_ref_files NOCHECK
+ NAMES ${files} )
-######################## EMOS-216 #########################
+######################### EMOS-216 #########################
-# tests with intuvp2
-set( basen "regress_EMOS-216_intuvp2" )
-foreach( area "" "_sub-area" )
- foreach( out "regular_ll" "F80" "N80" "O80" )
- set( in "vo-d_sh" )
- set( test "${basen}_${in}_to_${out}${area}" )
- set( input "${in}.grib" )
- set( output "${test}.grib" )
- if( NOT (test MATCHES "_sh_.+_to_O" AND NOT HAVE_FFTW) )
- unset( opt )
- if( out MATCHES "^regular_ll" )
- list( APPEND opt "--grid=3/3" )
- else()
- list( APPEND opt "--gridname=${out}" )
- endif()
- if( "${area}" STREQUAL "_sub-area" )
- list( APPEND opt "--area=70/-60/20/60" )
- endif()
-
- # interpolate
- ecbuild_add_test(
- TARGET ${test}_interpol
- DEPENDS int
- TEST_DEPENDS download_tests_regress_src_files
- COMMAND ${CMD_INT}
- ARGS --input=${input} --output=${output} ${opt} --int=intuvp2
- ENVIRONMENT ${_emos_environment} )
-
- # compare results to reference data
- ecbuild_add_test(
- TARGET ${test}_compare
- TEST_DEPENDS ${test}_interpol download_tests_regress_ref_files
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS ${output}.ref ${output}
- ENVIRONMENT ${_grib_environment} )
-
- unset( opt )
- endif()
- unset( output )
- unset( input )
- unset( test )
- unset( in )
- endforeach()
-endforeach()
-unset( basen )
-
-# tests with intf2
-# not possible:
+# some interpolations are not possible:
# - regular_ll to reduced_gg (but regular_ll to regular_gg is possible)
# - regular_gg to reduced_gg
# - any to rotated reduced_gg/regular_gg
# - regular_ll to rotated regular_ll
-# - ... weird HIRLAM restrictions?
+# - ... HIRLAM restrictions?
# - any to octahedral without FFTW
# - swh_reduced_ll interpolations (SIGFPE, Arithmetic exception in INTIN) (FIXME: temporary disabling)
-set( basen "regress_EMOS-216_intf2" )
+foreach( area "" "_sub-area" )
+ foreach( in "vo-d_sh" )
+ foreach( out "regular_ll" "F80" "N80" "O80" )
+ set( label "regress_EMOS-216_intuvp2_${in}_to_${out}${area}" )
+ set( input "${in}.grib" )
+ set( output "${label}.grib" )
+ if( NOT (label MATCHES "_sh_to_O" AND NOT HAVE_FFTW) )
+ unset( opt )
+ if( out MATCHES "^regular_ll" )
+ list( APPEND opt "--grid=3/3" )
+ else()
+ list( APPEND opt "--gridname=${out}" )
+ endif()
+ if( "${area}" STREQUAL "_sub-area" )
+ list( APPEND opt "--area=70/-60/20/60" )
+ endif()
+ list( APPEND opt "--int=intuvp2" )
+
+ interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" download_tests_regress_src_files )
+ interpolation_add_test_compare( ${label} "${output}" "${output}.ref" download_tests_regress_ref_files )
+
+ unset( opt )
+ endif()
+ unset( output )
+ unset( input )
+ unset( label )
+ endforeach()
+ endforeach()
+endforeach()
+
foreach( area "" "_sub-area" )
foreach( rotated "" "rotated_" "hirlam_non-rotated_" )
foreach( in "2t_F640" "2t_F640_sub-area" "2t_N640" "2t_O1280" "2t_regular_ll" "2t_regular_ll_staggered" "2t_regular_ll_sub-area" "msl_F640" "msl_F640_sub-area" "msl_N640" "msl_O1280" "msl_regular_ll" "msl_regular_ll_sub-area" "swh_reduced_ll" "swh_reduced_ll_sub-area" "u-v_sh" "z_sh" )
foreach( out "regular_ll" "F80" "N80" "O80" "F48" )
- set( test "${basen}_${in}_to_${rotated}${out}${area}" )
+ set( label "regress_EMOS-216_intf2_${in}_to_${rotated}${out}${area}" )
set( input "${in}.grib" )
- set( output "${test}.grib" )
- if( NOT (test MATCHES "_sub-area_to_" AND NOT test MATCHES "_to_.*_sub-area")
- AND NOT (test MATCHES "_regular_ll.*_to_[NO]")
- AND NOT (test MATCHES "_F.+_to_[NO]")
- AND NOT (test MATCHES "(F.+|reduced_ll)_to_.*rotated_regular_ll")
- AND NOT (test MATCHES "_to_[NO].*_sub-area")
- AND NOT (test MATCHES "_to_.*rotated_[NOF]")
- AND NOT (test MATCHES "_to_.*rotated_.*sub-area")
- AND NOT (test MATCHES "_regular_ll.*_to_.*rotated_regular_ll$")
- AND NOT (test MATCHES "_sh.*_to_O" AND NOT HAVE_FFTW)
+ set( output "${label}.grib" )
+ if( NOT (label MATCHES "_sub-area_to_" AND NOT label MATCHES "_to_.*_sub-area")
+ AND NOT (label MATCHES "_regular_ll.*_to_[NO]")
+ AND NOT (label MATCHES "_F.+_to_[NO]")
+ AND NOT (label MATCHES "(F.+|reduced_ll)_to_.*rotated_regular_ll")
+ AND NOT (label MATCHES "_to_[NO].*_sub-area")
+ AND NOT (label MATCHES "_to_.*rotated_[NOF]")
+ AND NOT (label MATCHES "_to_.*rotated_.*sub-area")
+ AND NOT (label MATCHES "_regular_ll.*_to_.*rotated_regular_ll$")
+ AND NOT (label MATCHES "_sh_to_O" AND NOT HAVE_FFTW)
AND NOT (input MATCHES "swh_reduced_ll.*") ) #(FIXME)
unset( opt )
if( out MATCHES "^regular_ll" )
@@ -100,48 +83,128 @@ foreach( area "" "_sub-area" )
if( "${area}" STREQUAL "_sub-area" )
list( APPEND opt "--area=70/-60/20/60" )
endif()
+ list( APPEND opt "--int=intf2" )
- # interpolate
- ecbuild_add_test(
- TARGET ${test}_interpol
- DEPENDS int
- TEST_DEPENDS download_tests_regress_src_files
- COMMAND ${CMD_INT}
- ARGS --input=${input} --output=${output} ${opt} --int=intf2
- ENVIRONMENT ${_emos_environment} )
-
- # compare results to reference data, strict comparison except in some cases
- if( (test MATCHES "_F640_to_regular_ll")
- OR (test MATCHES "_N640_to_(regular_ll|O80|F80|F48)")
- OR (test MATCHES "_O1280_to_(regular_ll|N80)") )
- ecbuild_add_test(
- TARGET ${test}_compare
- TEST_DEPENDS ${test}_interpol download_tests_regress_ref_files
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS -P -T 2 ${output}.ref ${output}
- ENVIRONMENT ${_grib_environment} )
- else()
- ecbuild_add_test(
- TARGET ${test}_compare
- TEST_DEPENDS ${test}_interpol download_tests_regress_ref_files
- CONDITION CMD_GRIB_COMPARE
- COMMAND ${CMD_GRIB_COMPARE}
- ARGS ${output}.ref ${output}
- ENVIRONMENT ${_grib_environment} )
- endif()
+ interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" download_tests_regress_src_files )
+ interpolation_add_test_compare( ${label} "${output}" "${output}.ref" download_tests_regress_ref_files )
unset( opt )
endif()
unset( output )
unset( input )
- unset( test )
+ unset( label )
endforeach()
endforeach()
endforeach()
endforeach()
-unset( basen )
-###########################################################
+######################### EMOS-260 #########################
+
+set( label "regress_EMOS-260_intf2_2t_N640_to_regular_ll_sub-area" )
+set( input "2t_N640.grib" )
+set( output "${label}.grib" )
+set( opt "--area=47.1/-13.05/33/8.1" "--grid=0.15/0.15" )
+list( APPEND opt "--int=intf2" )
+
+interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" download_tests_regress_src_files )
+interpolation_add_test_compare( ${label} "${output}" "${output}.ref" download_tests_regress_ref_files )
+
+unset( opt )
+unset( output )
+unset( input )
+unset( label )
+
+
+######################### EMOS-262 #########################
+
+set( label "regress_EMOS-262_intf2_msl_N640_to_regular_ll_sub-area_single-point" )
+set( input "msl_N640.grib" )
+set( output "${label}.grib" )
+set( opt "--area=45.5/9.25/45.5/9.25" "--grid=0.125/0.125" )
+list( APPEND opt "--int=intf2" )
+
+interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" download_tests_regress_src_files )
+interpolation_add_test_compare( ${label} "${output}" "${output}.ref" download_tests_regress_ref_files )
+
+unset( opt )
+unset( output )
+unset( input )
+unset( label )
+
+
+######################### EMOS-269 #########################
+
+foreach( singleopt "--accuracy=16" "--interpolation=\"nearest neighbour\"" )
+ if( singleopt MATCHES "accuracy" )
+ set( label "regress_EMOS-269_intf2_msl_O1280_to_O1280_nointerpol_accuracy" )
+ elseif( singleopt MATCHES "nearest neighbour" )
+ set( label "regress_EMOS-269_intf2_msl_O1280_to_O1280_nointerpol_nearestn" )
+ endif()
+ set( input "msl_O1280.grib" )
+ set( output "${label}.grib" )
+ set( opt ${singleopt} )
+ list( APPEND opt "--int=intf2" )
+
+ interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" download_tests_regress_src_files )
+ interpolation_add_test_gridname( ${label} "${output}" "O1280" )
+
+ unset( opt )
+ unset( output )
+ unset( input )
+ unset( label )
+endforeach()
+
+
+################### GRIB-863 / EMOS-214 ####################
+
+# GRIB1 interpolate to regular_ll (1/16)/(1/16) degree
+foreach( in "2t_O1280" )
+ set( label "regress_GRIB-863_intf2_${in}_to_regular_ll_1-16" )
+ set( input "${in}.grib" )
+ set( output "${label}.grib" )
+ set( opt "--grid=0.0625/0.0625" )
+ list( APPEND opt "--int=intf2" )
+
+ interpolation_add_test_interpol( ${label} "${input}" "${output}" "${opt}" download_tests_regress_src_files )
+ interpolation_add_test_compare( ${label} "${output}" "${output}.ref" download_tests_regress_ref_files )
+
+ unset( opt )
+ unset( output )
+ unset( input )
+ unset( label )
+endforeach()
+
+
+######################### GRIB-864 #########################
+
+# GRIB1 sub-milli degree encoding limit
+# snap-milli-degree: snaps to 0.001 because grid is 0.00025/0.00025, and is GRIB1-encodable
+# snap-sub-milli-degree: snaps to 0.0005, not GRIB1-encodable (failure expected)
+foreach( snap "snap-milli-degree" "snap-sub-milli-degree_bad" "snap-sub-milli-degree_sub-area_bad" )
+ set( label "regress_GRIB-864_intf2_msl_N640_to_regular_ll_${snap}" )
+ set( input "msl_N640.grib" )
+ set( output "${label}.grib" )
+ if( snap STREQUAL "snap-sub-milli-degree_sub-area_bad" )
+ set( opt "--grid=0.0625/0.0625" "--area=1/0.0625/0/0.5625" )
+ elseif( snap STREQUAL "snap-sub-milli-degree_bad" )
+ set( opt "--grid=0.00025/0.00025" "--area=0.00074/0/0/0.00074" )
+ else()
+ set( opt "--grid=0.00025/0.00025" "--area=0.00076/0/0/0.00076" )
+ endif()
+ list( APPEND opt "--int=intf2" )
+
+ interpolation_add_test_interpol( ${label} "${input}" "/dev/null" "${opt}" download_tests_regress_src_files )
+ if( snap MATCHES "sub-milli-degree" )
+ set_tests_properties( ${label}_interpol PROPERTIES WILL_FAIL TRUE )
+ endif()
+
+ unset( opt )
+ unset( output )
+ unset( input )
+ unset( label )
+endforeach()
+
+
+############################################################
diff --git a/tests/regress/download_tests_regress_ref_files.txt b/tests/regress/download_tests_regress_ref_files.txt
index 0e0d71d..e2b1f04 100644
--- a/tests/regress/download_tests_regress_ref_files.txt
+++ b/tests/regress/download_tests_regress_ref_files.txt
@@ -108,3 +108,6 @@ regress_EMOS-216_intuvp2_vo-d_sh_to_O80.grib.ref
regress_EMOS-216_intuvp2_vo-d_sh_to_O80_sub-area.grib.ref
regress_EMOS-216_intuvp2_vo-d_sh_to_regular_ll.grib.ref
regress_EMOS-216_intuvp2_vo-d_sh_to_regular_ll_sub-area.grib.ref
+regress_EMOS-260_intf2_2t_N640_to_regular_ll_sub-area.grib.ref
+regress_EMOS-262_intf2_msl_N640_to_regular_ll_sub-area_single-point.grib.ref
+regress_GRIB-863_intf2_2t_O1280_to_regular_ll_1-16.grib.ref
diff --git a/tests/settings.cmake b/tests/settings.cmake
new file mode 100644
index 0000000..7f4e6fc
--- /dev/null
+++ b/tests/settings.cmake
@@ -0,0 +1,130 @@
+# Helper functions to abstract interpolation tools/environments
+
+
+# Set testing tools/environments:
+# - int (internal)
+# - gg_gridname (internal)
+# - grib_compare (bundle, on provided path, or on system path)
+# - cmp (strict binary comparison)
+
+if( ENABLE_INSTALL_TOOLS )
+ get_target_property( CMD_INT int LOCATION )
+ get_target_property( CMD_GG_GRIDNAME gg_gridname LOCATION )
+endif()
+
+if( TARGET grib_compare )
+ get_target_property( CMD_GRIB_COMPARE grib_compare LOCATION )
+endif()
+if( NOT CMD_GRIB_COMPARE )
+ find_program( CMD_GRIB_COMPARE grib_compare NO_DEFAULT_PATH HINTS "${grib_api_BASE_DIR}" PATH_SUFFIXES "bin" )
+endif()
+if( NOT CMD_GRIB_COMPARE )
+ find_program( CMD_GRIB_COMPARE grib_compare )
+endif()
+
+find_program( CMD_CMP cmp )
+
+
+if( NOT grib_api_BASE_DIR AND CMD_GRIB_COMPARE )
+ get_filename_component( _grib_compare_dir "${CMD_GRIB_COMPARE}" PATH )
+ get_filename_component( grib_api_BASE_DIR "${_grib_compare_dir}" ABSOLUTE )
+ set( grib_api_BASE_DIR "${grib_api_BASE_DIR}/../" )
+endif()
+
+if( grib_api_BASE_DIR )
+ set( _grib_environment
+ GRIB_DEFINITION_PATH=${grib_api_BASE_DIR}/share/grib_api/definitions/:${grib_api_BASE_DIR}/share/grib_api/definitions/grib1/
+ GRIB_SAMPLES_PATH=${grib_api_BASE_DIR}/share/grib_api/samples/ )
+endif()
+set( _emos_environment
+ "${_grib_environment}"
+# JDCNDBG=2
+# INTF2_DEBUG=1
+ CONFIG_INTERP=ON_FLY
+ MARS_LSM_PATH=${PROJECT_SOURCE_DIR}/tables/interpol
+ ECMWF_LOCAL_TABLE_PATH=${PROJECT_SOURCE_DIR}/gribtables
+ LOCAL_DEFINITION_TEMPLATES=${PROJECT_SOURCE_DIR}/gribtemplates )
+
+
+# log information
+ecbuild_info( "Test tool int: ${CMD_INT}" )
+ecbuild_info( "Test tool gg_gridname: ${CMD_GG_GRIDNAME}" )
+ecbuild_info( "Test tool grib_compare: ${CMD_GRIB_COMPARE}" )
+ecbuild_info( "Test tool cmp: ${CMD_CMP}" )
+if( NOT CMD_INT OR NOT CMD_GG_GRIDNAME OR NOT CMD_GRIB_COMPARE OR NOT CMD_CMP )
+ ecbuild_warn( "(some tools not found, some tests disabled)" )
+endif()
+ecbuild_debug( "Test _grib_environment: ${_grib_environment}" )
+ecbuild_debug( "Test _emos_environment: ${_emos_environment}" )
+
+
+# Easily add interpolation tests
+# (optional arg #5: test dependencies, default none)
+# (optional arg #6: environment variables, default none additional)
+function( interpolation_add_test_interpol
+ _label
+ _file1
+ _file2
+ _options )
+ set( _depends "" )
+ set( _environment "" )
+ if( ${ARGC} GREATER 4 )
+ set( _depends "${ARGV4}" )
+ endif()
+ if( ${ARGC} GREATER 5 )
+ set( _environment "${ARGV5}" )
+ endif()
+ ecbuild_add_test(
+ TARGET ${_label}_interpol
+ TEST_DEPENDS ${_depends}
+ DEPENDS int
+ COMMAND ${CMD_INT}
+ ARGS --input=${_file1} --output=${_file2} ${_options}
+ ENVIRONMENT ${_environment} ${_emos_environment} )
+endfunction()
+
+
+# Easily add comparison-to-reference results tests
+# (optional arg #4: test dependencies, default none)
+function( interpolation_add_test_compare
+ _label
+ _file1
+ _file2 )
+ set( _depends "" )
+ if( ${ARGC} GREATER 3 )
+ set( _depends "${ARGV3}" )
+ endif()
+ set( _tolerate "" )
+ if( (label MATCHES "F640_to_regular_ll$")
+ OR (label MATCHES "N640_to_F48$")
+ OR (label MATCHES "N640_to_F80$")
+ OR (label MATCHES "N640_to_O80$")
+ OR (label MATCHES "N640_to_regular_ll$")
+ OR (label MATCHES "O1280_to_N80$")
+ OR (label MATCHES "O1280_to_regular_ll(|_1-16)$")
+ OR (label MATCHES "regular_ll_to_regular_ll$") )
+ set( _tolerate -P -T 2 )
+ endif()
+ ecbuild_add_test(
+ TARGET ${_label}_compare
+ TEST_DEPENDS ${_label}_interpol ${_depends}
+ COMMAND ${CMD_GRIB_COMPARE}
+ ARGS ${_tolerate} ${_file1} ${_file2}
+ ENVIRONMENT ${_grib_environment} )
+endfunction()
+
+
+# Easily add expected-gridname tests
+function( interpolation_add_test_gridname
+ _label
+ _file
+ _gridname )
+ ecbuild_add_test(
+ TARGET ${_label}_gridname
+ TEST_DEPENDS ${_label}_interpol
+ CONDITION ENABLE_INSTALL_TOOLS
+ COMMAND ${CMD_GG_GRIDNAME}
+ ARGS --eq=${_gridname} ${_file}
+ ENVIRONMENT ${_grib_environment} )
+endfunction()
+
diff --git a/tests/fft99.F b/tests/test_fft99.F
similarity index 100%
rename from tests/fft99.F
rename to tests/test_fft99.F
diff --git a/tests/fftw.F b/tests/test_fftw.F
similarity index 100%
rename from tests/fftw.F
rename to tests/test_fftw.F
diff --git a/tests/hsp2gg.F b/tests/test_hsp2gg.F
similarity index 98%
rename from tests/hsp2gg.F
rename to tests/test_hsp2gg.F
index 465c1d8..677c44e 100644
--- a/tests/hsp2gg.F
+++ b/tests/test_hsp2gg.F
@@ -14,7 +14,6 @@ C Externals
INTEGER HSP2GG, HSP2GG2, HSP2GG3
C Local variables
- CHARACTER*1 HTYPE
INTEGER IRET(3)
INTEGER KTRUNC, KGAUSS, KSIZE
INTEGER KPTS(96)
diff --git a/tools/bufrtools_wmo/bufr_filter.F b/tools/bufrtools_wmo/bufr_filter.F
index 22ad96e..4c434ba 100644
--- a/tools/bufrtools_wmo/bufr_filter.F
+++ b/tools/bufrtools_wmo/bufr_filter.F
@@ -18,9 +18,9 @@ C METHOD.
C -------
C
C THE INPUT FILE IS READ ONE MESSAGE AT A TIME.
-C BUFR MESSAGE IS EXPANDED AND CHECKED AGAINST
+C BUFR MESSAGE IS EXPANDED AND CHECKED AGAINST
C REQUEST. IF BUFR MESSAGE IS NEEDED IT IS WRITTEN
-C INTO THE OUTPUT FILE. IF THERE IS MORE THAN ONE
+C INTO THE OUTPUT FILE. IF THERE IS MORE THAN ONE
C SUBSET IN THE BUFR MESSAGE, ONLY REQUESTED ARE REPACKED
C AND WRITTEN INTO THE OUTPUT FILE.
C
@@ -67,7 +67,7 @@ C
C
PARAMETER (KELEM=160000)
PARAMETER (KVALS=4096000)
-C
+C
C
COMMON /COMRQB/ CTIME,CAREA,CBLOCK,CIDN,CTYPE,CSBTYPE,CRDBT,
1 CMDBT,CQC,CIDENTS(99),CMETHOD,CSENSOR,CPRODUCT,
@@ -106,7 +106,7 @@ C
CHARACTER*4 CINSTR
C
cs EXTERNAL GETARG
-C
+C
C
C ------------------------------------------------------------------
C* 1. GET FILE NAMES.
@@ -167,7 +167,7 @@ C
iout=index(COUTFILE,' ')
iout=iout-1
ELSEIF(CARG(J).EQ.'-r') THEN
- CRQFILE=CARG(J+1)
+ CRQFILE=CARG(J+1)
icrq=index(CRQFILE,' ')
icrq=icrq-1
ELSEIF(CARG(J).EQ.'-t') THEN
@@ -231,7 +231,7 @@ C
GO TO 120
END IF
C
-C BLOCK
+C BLOCK
C
IF(CKIND.EQ.'BLOK') THEN
READ(CRECORD,'(A4,1X,I4,30(13X,I2))',
@@ -359,22 +359,28 @@ C* 1.3 OPEN FILE CONTAINING BUFR DATA.
C -------------------------------
130 CONTINUE
C
- IRET=0
+ IRET=0
C
CALL PBOPEN(IUNIT,CINFILE(1:icin),'R',IRET)
- IF(IRET.EQ.-1) STOP 'OPEN FAILED'
- IF(IRET.EQ.-2) STOP 'INVALID FILE NAME'
- IF(IRET.EQ.-3) STOP 'INVALID OPEN MODE SPECIFIED'
+ IF (IRET.EQ.-1 .OR. IRET .EQ. -2 .OR. IRET.EQ.-3) THEN
+ IF (IRET.EQ.-1) PRINT*,'OPEN FAILED'
+ IF (IRET.EQ.-2) PRINT*,'INVALID FILE NAME'
+ IF (IRET.EQ.-3) PRINT*,'INVALID OPEN MODE SPECIFIED'
+ CALL EXIT(2)
+ END IF
c
- IF(CREMFILE.NE.' ') then
- CALL PBOPEN(IUNIT2,CREMFILE(1:icrem),'W',IRET)
- IF(IRET.EQ.-1) STOP 'OPEN FAILED'
- IF(IRET.EQ.-2) STOP 'INVALID FILE NAME'
- IF(IRET.EQ.-3) STOP 'INVALID OPEN MODE SPECIFIED'
+ IF (CREMFILE.NE.' ') THEN
+ CALL PBOPEN(IUNIT2,CREMFILE(1:icrem),'W',IRET)
+ IF (IRET.EQ.-1 .OR. IRET .EQ. -2 .OR. IRET.EQ.-3) THEN
+ IF (IRET.EQ.-1) PRINT*,'OPEN FAILED'
+ IF (IRET.EQ.-2) PRINT*,'INVALID FILE NAME'
+ IF (IRET.EQ.-3) PRINT*,'INVALID OPEN MODE SPECIFIED'
+ CALL EXIT(2)
+ END IF
END IF
C
-C -----------------------------------------------------------------
+C -----------------------------------------------------------------
C* 2. READ BUFR MESSAGE.
C ------------------
200 CONTINUE
@@ -386,17 +392,22 @@ c KBUFF(I)=0
c201 CONTINUE
C
IRET=0
- CALL PBBUFR(IUNIT,KBUFF,JBYTE,KBUFL,IRET)
+ CALL PBBUFR(IUNIT,KBUFF,JBYTE,KBUFL,IRET)
IF(IRET.EQ.-1) THEN
PRINT*,'NUMBER OF MESSAGES READ ',IREAD
PRINT*,'NUMBER OF OBSERVATIONS READ ',ITOTAL
PRINT*,'NUMBER OF SINGLE SUBSET MESSAGES ',ISING
PRINT*,'NUMBER OF MULTISUBSET MESSAGES ',IMULTI
PRINT*,'NUMBER OF FILTERED OBSERVATIONS ',IFILTER
- STOP 'EOF'
+ PRINT*,'EOF'
+ STOP
+ ELSEIF (IRET.EQ.-2) THEN
+ PRINT*,'FILE HANDLING PROBLEM'
+ CALL EXIT(2)
+ ELSEIF (IRET.EQ.-3) THEN
+ PRINT*,'ARRAY TOO SMALL FOR PRODUCT'
+ CALL EXIT(2)
END IF
- IF(IRET.EQ.-2) STOP 'FILE HANDLING PROBLEM'
- IF(IRET.EQ.-3) STOP 'ARRAY TOO SMALL FOR PRODUCT'
C
IREAD=IREAD+1
JLEN=KBUFL
@@ -477,7 +488,7 @@ C
CALL BUFREX(KBUFL,KBUFF,KSUP,KSEC0 ,KSEC1,KSEC2 ,KSEC3 ,KSEC4,
1 KEL,CNAMES,CUNITS,KVALS,VALUES,CVALS,IERR)
C
- IF(IERR.NE.0) CALL EXIT(2)
+ IF(IERR.NE.0) CALL EXIT(2)
C
C* 2.4 PRINT EXPANDED BUFR MESSAGE.
C ----------------------------
@@ -624,7 +635,7 @@ C
WRITE(*,'(A)') 'ERROR WRITING INTO ',COUTFILE
CALL EXIT(2)
C -----------------------------------------------------------------
-C
+C
400 CONTINUE
C
END
@@ -650,7 +661,7 @@ C
C RDB KEY IN UNPACKED FORM IS USED TO CHECK AGAINST
C USER REQUEST. IF REQUST IS MEETED LOGICAL VARIABLE
C IS SET TO TRUE.
-C
+C
C
C EXTERNALS.
C ----------
@@ -817,7 +828,7 @@ C print*,'cident=',CIDENT(1:3)
C IF(IDL.EQ.0) THEN
C J=15
C DO 102 I=16,24
-C IF(KEY(I).EQ.32) THEN
+C IF(KEY(I).EQ.32) THEN
C GO TO 102
C ELSE
C J=J+1
@@ -894,7 +905,7 @@ C
IKBLOCK=(KEY(16)-48)*10+KEY(17)-48
OBLOCK=.FALSE.
DO 202 I=1,IBL
- IF(IKBLOCK.EQ.IBLOCK(I)) OBLOCK=.TRUE.
+ IF(IKBLOCK.EQ.IBLOCK(I)) OBLOCK=.TRUE.
202 CONTINUE
IF(.NOT.OBLOCK) THEN
OREQ=.FALSE.
@@ -941,7 +952,7 @@ C
END IF
END IF
C
-C LOWEST QUALITY
+C LOWEST QUALITY
C
IF(IQC.NE.0) THEN
IF(IQC.EQ.1) THEN
@@ -957,7 +968,7 @@ C
END IF
END IF
C
-C RDB TIME
+C RDB TIME
C
IF(IRDBT.NE.0) THEN
IF(IRDBT.EQ.1) THEN
@@ -973,7 +984,7 @@ C
END IF
END IF
C
-C MDB TIME
+C MDB TIME
C
IF(IMDBT.NE.0) THEN
IF(IMDBT.EQ.1) THEN
@@ -1039,9 +1050,9 @@ C
C IN THE CASE OF MULTI-SUBSET BUFR MESSAGES TO FIND REQUESTED
C OBSERVATION IT IS NEEDED TO USE FULLY EXPANDED MESSAGE.
C EVERY SUBSET IS CHECKED AGAINST REQUEST. NEEDED MESSAGES ARE
-C COLLECTED AND RETURNED, AND LOGICAL VARIABLE OREQ SET TO
+C COLLECTED AND RETURNED, AND LOGICAL VARIABLE OREQ SET TO
C TRUE.
-C
+C
C
C EXTERNALS.
C ----------
@@ -1186,7 +1197,7 @@ C
end if
IF(KTDEXP(I).EQ.002019) then
IF(INSTRUM.EQ.0) INSTRUM=I
- END IF
+ END IF
IF(KTDEXP(I).EQ.002172) then
if(IPROD.eq.0) IPROD=I
END IF
@@ -1312,7 +1323,7 @@ C
C
C CHECK TIME
C
-
+
OREQ=.true.
OREQ1=.false.
c
@@ -1390,7 +1401,7 @@ C
IKBLOCK=NINT(VALUES(IB))
OBLOCK=.FALSE.
DO 202 IX=1,IBL
- IF(IKBLOCK.EQ.IBLOCK(IX)) OBLOCK=.TRUE.
+ IF(IKBLOCK.EQ.IBLOCK(IX)) OBLOCK=.TRUE.
202 CONTINUE
IF(.NOT.OBLOCK) THEN
OREQ=.FALSE.
@@ -1483,23 +1494,23 @@ C
END IF
IF(IPSID.NE.0) THEN
II=IPSID+IKEL
- WRITE(CIDENT(1:3),'(I3)',iostat=ios)
+ WRITE(CIDENT(1:3),'(I3)',iostat=ios)
1 NINT(VALUES(II))
IF(IOS.NE.0) THEN
PRINT*,'INTERNAL WRITE ERROR.'
CALL EXIT(2)
END IF
-cs print*,'cident1=',CIDENT(1:3)
+cs print*,'cident1=',CIDENT(1:3)
IF(CIDENT(1:1).EQ.' '.AND.CIDENT(2:2).EQ.' ') THEN
- CIDENT(1:1)=CIDENT(3:3)
- CIDENT(2:2)=' '
- CIDENT(3:3)=' '
- ELSEIF(CIDENT(1:1).EQ.' ') THEN
- CIDENT(1:1)=CIDENT(2:2)
- CIDENT(2:2)=CIDENT(3:3)
- CIDENT(3:3)=' '
-cs print*,'cident=',cident(1:3)
+ CIDENT(1:1)=CIDENT(3:3)
+ CIDENT(2:2)=' '
+ CIDENT(3:3)=' '
+ ELSEIF(CIDENT(1:1).EQ.' ') THEN
+ CIDENT(1:1)=CIDENT(2:2)
+ CIDENT(2:2)=CIDENT(3:3)
+ CIDENT(3:3)=' '
END IF
+cs print*,'cident2=',CIDENT(1:3)
IDL=3
END IF
IF(IPBUOY.NE.0) THEN
@@ -1607,7 +1618,7 @@ C
c
if(nn1.ne.0) then
KSEC11(5)=128
- RYYY=1900.
+ RYYY=1900.
IF(NINT(VALUES1(IPYEAR)).GE.2001) RYYY=2000.
KSEC11( 9)=NINT(VALUES1(IPYEAR)-RYYY)
KSEC11(10)=NINT(VALUES1(IPMONTH))
diff --git a/tools/gg_gridname.c b/tools/gg_gridname.c
index 17d5b89..d08e125 100644
--- a/tools/gg_gridname.c
+++ b/tools/gg_gridname.c
@@ -151,7 +151,7 @@ int main_(int argc, char** argv) {
char htype[] = {T=='N'? 'R':T,' '};
int kpts[4000] = {0,};
jnumgg_(&knum,htype,kpts,&kret);
- if ((kret==0)) {
+ if (kret==0) {
/* get pl array */
size_t pl_len = 0;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/emos.git
More information about the debian-science-commits
mailing list