From 7cf121dff0924ae6b03b9c4d3f267f210fad37f6 Mon Sep 17 00:00:00 2001
From: Ian Boyd <iboyd@astro.umass.edu>
Date: Thu, 26 Sep 2024 22:30:39 +0000
Subject: [PATCH] Replace geoms_tc.pro

---
 geoms_tc.pro | 279 ++++++++++++++++++++++++++-------------------------
 1 file changed, 140 insertions(+), 139 deletions(-)

diff --git a/geoms_tc.pro b/geoms_tc.pro
index cf41105..40cce66 100644
--- a/geoms_tc.pro
+++ b/geoms_tc.pro
@@ -1,139 +1,140 @@
-;---------------------------------------------------------------------------------------------------
-;
-; name:			geoms_tc.pro
-; description: 	AVDC/EVDC GEOMS template checker tool
-;
-; 2011-02-03, v0.1	Christian Retscher	initial implementation
-; 2011-04-11, v0.2	Christian Retscher	MWR support addded
-;										concept: 1) GEOMS-VA -> HDF; 2) HDF -> GEOMS-VA checks
-; 2011-04-17, v0.3	Christian Retscher	FTIR support start
-;										filter for [SOLAR|LUNAR], [ppmv|ppbv|pptv], "...()"
-; 2011-04-23, v0.4	Christian Retscher	FTIR support finalized, LIDAR support tested
-; 2011-04-25, v0.5	Christian Retscher	Full LIDAR support added
-; 2011-04-26, v0.6	Christian Retscher	Split in wrapper and TC tools (keep versioning)
-; 2011-05-13, v0.7	Christian Retscher	Integrate UVVIS.DOAS
-; 2013-12-19, v1.3  Ian Boyd  align with geoms_tctools version
-; 2014-01-28, v1.34 Ian Boyd  align geoms_tools version due to change in geoms_tctools
-; 2014-03-11, v1.35 Ian Boyd  align versions with geoms_tools
-; 2014-03-25, v1.36 Ian Boyd  update due to modification to idlcr8ascii
-; 2014-03-29, v1.37 Ian Boyd  update due to modification to idlcr8hdf
-; 2014-05-22, v1.38 Ian Boyd  update due to modification to idlcr8hdf
-; 2014-08-06, v1.39 Ian Boyd  update due to modification to idlcr8hdf and geoms_tools
-; 2014-09-09, v1.40 Ian Boyd  update due to modification to idlcr8hdf and geoms_tools
-; 2014-11-10, v1.41 Ian Boyd  update due to modification to idlcr8hdf and idlcr8ascii
-; 2015-01-27, v1.42 Ian Boyd  update due to modification to idlcr8hdf and idlcr8ascii
-; 2015-02-17, v1.43 Ian Boyd  update due to modification to idlcr8hdf and idlcr8ascii
-; 2015-03-02, v1.44 Ian Boyd  update due to bug fix in idlcr8hdf
-; 2015-04-09, v1.45 Ian Boyd  update due to bug fix in idlcr8hdf
-; 2015-08-11, v1.46 Ian Boyd  update due to bug fixes and improvements in idlcr8hdf
-; 2015-09-26, v1.47 Ian Boyd  update due to bug fixes and improvements in idlcr8hdf
-; 2015-10-21, v1.48 Ian Boyd  update due to bug fixes and improvements in idlcr8hdf
-; 2015-11-04, v1.49 Ian Boyd  update due to fix in idlcr8hdf
-; 2015-11-09, v1.50 Ian Boyd  update due to bug fixes and improvements in idlcr8hdf and idlcr8ascii
-; 2015-11-16, v1.51 Ian Boyd  update due to fix in idlcr8hdf
-; 2015-12-15, v1.52 Ian Boyd  update due to fix in idlcr8hdf
-; 2016-02-13, v1.53 Ian Boyd  Add extra satellite instruments to the obsolete list for DATA_SOURCE
-;                             in idlcr8hdf. Modifications to idlcr8hdf and idlc8ascii
-; 2016-06-14, v1.54 Ian Boyd  update due to fix in idlcr8ascii
-; 2016-07-25, v1.55 Ian Boyd  update due to fix in idlcr8ascii and idlcr8hdf
-; 2016-11-16, v1.56 Ian Boyd  update due to fix in idlcr8hdf
-; 2016-11-30, v1.57 Ian Boyd  update due to fix in idlcr8ascii and idlcr8hdf and account for
-;                             non-GEOMS variable attributes (ptr_valid check) in geoms_tctools
-; 2016-12-17, v1.58 Ian Boyd  update due to fixes in idlcr8ascii
-; 2016-12-30, v1.59 Ian Boyd  Add FV keyword to geoms_tools (options 20-22 in geoms_harmon call).
-;                             If called then forces the DATA_FILE_VERSION not to increment when
-;                             performing harmonization; Incorporates fixes made to idlcr8hdf
-; 2017-03-31, v1.60 Ian Boyd  update due to improvements to idlcr8hdf
-; 2017-11-21, v1.61 Ian Boyd  update due to fixes in idlcr8hdf
-; 2018-02-18, v1.62 Ian Boyd  update due to fix in idlcr8ascii and idlcr8hdf
-; 2018-03-14, v1.63 Ian Boyd  update due to fix in idlcr8hdf
-; 2018-05-28, v1.64 Ian Boyd  update due to fix in idlcr8hdf
-; 2018-09-01, v1.65 Ian Boyd  update due to fix in idlcr8hdf
-; 2018-11-16, v1.66 Ian Boyd  update due to fix in idlcr8ascii
-; 2019-05-06, v1.67 Ian Boyd  QA checks now carried out using the metadata definitions in the TAV version
-;                             given in the FILE_META_VERSION global attribute. If this attribute is invalid
-;                             or not present, or the TAV file can't be located, the input TAV file will
-;                             be used for checks but an error code will be generated. Fix to idlcr8hdf
-;                             that caused a crash if the file does not use a DATA_TEMPLATE
-; 2019-05-14, v1.68 Ian Boyd  update due to fix in idlcr8ascii
-; 2019-08-07, v1.69 Ian Boyd  update due to modifications to idlcr8ascii and idlcr8hdf
-; 2019-08-21, v1.70 Ian Boyd  update due to fix in idlcr8ascii
-; 2019-12-05, v2.00 Ian Boyd  update due to changes in geoms_qa to support checks on the optional DATA_SOURCE
-;                             Version Name value (third field in DATA_SOURCE).
-; 2020-02-26, v2.01 Ian Boyd  update due to geoms_vntools updates
-; 2020-03-11, v2.02 Ian Boyd  update due to fix to idlcr8hdf
-; 2020-04-27, v2.03 Ian Boyd  update due to geoms_vntools update
-; 2020-07-09, v2.04 Ian Boyd  update due to fix to idlcr8hdf
-; 2020-09-30, v2.05 Ian Boyd  update due to fix to idlcr8ascii; geoms_tools now returns a QA_error_code
-;                             value of -2 to geoms_qa if idlcr8ascii can't read the input file, to stop
-;                             template and version name checks
-; 2020-10-20, v2.06 Ian Boyd  update due to fixes to idlcr8hdf
-; 2020-10-26, v2.07 Ian Boyd  update due to fix to idlcr8hdf
-; 2020-11-22, v2.08 Ian Boyd  QA checks carried out using the metadata definitions in the TAV version
-;                             determined by the FILE_GENERATION_DATE (FGD), in the first instance, then the
-;                             FILE_META_VERSION (FMV), if different. This adds a check for the FMV TAV version
-;                             using definitions that are out-of-date. If either TAV can't be determined or found
-;                             then the input TAV will be used for checks and an error generated
-; 2020-12-11, v2.09 Ian Boyd  Apply fixes and improvements to procedures identifying correct TAV version(s) to
-;                             use for checks; Fix IDL Math Error (Floating Illegal Operand) in idlcr8hdf
-; 2021-06-17, v2.10 Ian Boyd  update due to fix to idlcr8hdf
-; 2022-08-09, v2.11 Ian Boyd  update due to fixes and improvements in geoms_tools, idlcr8hdf and idlcr8ascii
-; 2023-12-18, v2.12 Ian Boyd  update due to fixes to idlcr8hdf and geoms_vntools
-; 2024-01-12, v2.13 Ian Boyd  update due to fix to idlcr8hdf
-; 2024-09-12, v2.14 Ian Boyd  update due to fixes to idlcrascii and idlcr8hdf
-;---------------------------------------------------------------------------------------------------
-
-PRO geoms_tc
-
-	args = command_line_args()
-	iNrArgs = size(args, /N_ELEMENTS)
-
-	if ( iNrArgs ne 2 ) then begin
-		print
-		print, 'GEOMS template checker (geoms_tc)'
-		print, '  Release v2.14, 2024-09-12'
-		print, '  Does GEOMS template compliance checks on HDF4/5 files.'
-		print
-		print, 'usage: idl -rt=geoms_tc.sav -args [GEOMS-TE-FILE] [HDFFILE] '
-		print
-		print, '1: GEOMS-TE-FILE is the path to the GEOMS template file'
-		print, '2: HDFFILE is the path of the HDF file, you want to check for template compliance'
-		print, '------------------------------------------------------------------------------------------------'
-		print
-
-		TC_error_code = 3
-		exit, status=TC_error_code
-	end
-
-	templatefile 	= STRTRIM( args( 0 ), 2 )
-	hdffile			= STRTRIM( args( 1 ), 2 )
-
-	TC_error_code = 3
-
-	if ( file_test( hdffile ) eq 0 ) then begin
-		TC_error_code = 3
-		print, '  ERROR: HDF file not found.'
-	end else begin
-		TC_error_code = 0
-	end
-
-	if ( file_test( templatefile ) eq 0 ) then begin
-		TC_error_code = 3
-		print, '  ERROR: GEOMS template file not found.'
-	end else begin
-		TC_error_code = 0
-	end
-
-	; find and remove log file (see geoms_tools.pro)
-	logfile=STRMID(hdffile,0,STRPOS(hdffile,'.',/REVERSE_SEARCH))+'.log'
-    openw,lu,logfile,/GET_LUN
-	close
-
-	if ( TC_error_code eq 0 ) then begin
-		TC_error_code = geoms_tctools( templatefile, hdffile, 0 )
-	end
-
-	print, TC_error_code
-	exit, status=TC_error_code
-
-END
+;---------------------------------------------------------------------------------------------------
+;
+; name:			geoms_tc.pro
+; description: 	AVDC/EVDC GEOMS template checker tool
+;
+; 2011-02-03, v0.1	Christian Retscher	initial implementation
+; 2011-04-11, v0.2	Christian Retscher	MWR support addded
+;										concept: 1) GEOMS-VA -> HDF; 2) HDF -> GEOMS-VA checks
+; 2011-04-17, v0.3	Christian Retscher	FTIR support start
+;										filter for [SOLAR|LUNAR], [ppmv|ppbv|pptv], "...()"
+; 2011-04-23, v0.4	Christian Retscher	FTIR support finalized, LIDAR support tested
+; 2011-04-25, v0.5	Christian Retscher	Full LIDAR support added
+; 2011-04-26, v0.6	Christian Retscher	Split in wrapper and TC tools (keep versioning)
+; 2011-05-13, v0.7	Christian Retscher	Integrate UVVIS.DOAS
+; 2013-12-19, v1.3  Ian Boyd  align with geoms_tctools version
+; 2014-01-28, v1.34 Ian Boyd  align geoms_tools version due to change in geoms_tctools
+; 2014-03-11, v1.35 Ian Boyd  align versions with geoms_tools
+; 2014-03-25, v1.36 Ian Boyd  update due to modification to idlcr8ascii
+; 2014-03-29, v1.37 Ian Boyd  update due to modification to idlcr8hdf
+; 2014-05-22, v1.38 Ian Boyd  update due to modification to idlcr8hdf
+; 2014-08-06, v1.39 Ian Boyd  update due to modification to idlcr8hdf and geoms_tools
+; 2014-09-09, v1.40 Ian Boyd  update due to modification to idlcr8hdf and geoms_tools
+; 2014-11-10, v1.41 Ian Boyd  update due to modification to idlcr8hdf and idlcr8ascii
+; 2015-01-27, v1.42 Ian Boyd  update due to modification to idlcr8hdf and idlcr8ascii
+; 2015-02-17, v1.43 Ian Boyd  update due to modification to idlcr8hdf and idlcr8ascii
+; 2015-03-02, v1.44 Ian Boyd  update due to bug fix in idlcr8hdf
+; 2015-04-09, v1.45 Ian Boyd  update due to bug fix in idlcr8hdf
+; 2015-08-11, v1.46 Ian Boyd  update due to bug fixes and improvements in idlcr8hdf
+; 2015-09-26, v1.47 Ian Boyd  update due to bug fixes and improvements in idlcr8hdf
+; 2015-10-21, v1.48 Ian Boyd  update due to bug fixes and improvements in idlcr8hdf
+; 2015-11-04, v1.49 Ian Boyd  update due to fix in idlcr8hdf
+; 2015-11-09, v1.50 Ian Boyd  update due to bug fixes and improvements in idlcr8hdf and idlcr8ascii
+; 2015-11-16, v1.51 Ian Boyd  update due to fix in idlcr8hdf
+; 2015-12-15, v1.52 Ian Boyd  update due to fix in idlcr8hdf
+; 2016-02-13, v1.53 Ian Boyd  Add extra satellite instruments to the obsolete list for DATA_SOURCE
+;                             in idlcr8hdf. Modifications to idlcr8hdf and idlc8ascii
+; 2016-06-14, v1.54 Ian Boyd  update due to fix in idlcr8ascii
+; 2016-07-25, v1.55 Ian Boyd  update due to fix in idlcr8ascii and idlcr8hdf
+; 2016-11-16, v1.56 Ian Boyd  update due to fix in idlcr8hdf
+; 2016-11-30, v1.57 Ian Boyd  update due to fix in idlcr8ascii and idlcr8hdf and account for
+;                             non-GEOMS variable attributes (ptr_valid check) in geoms_tctools
+; 2016-12-17, v1.58 Ian Boyd  update due to fixes in idlcr8ascii
+; 2016-12-30, v1.59 Ian Boyd  Add FV keyword to geoms_tools (options 20-22 in geoms_harmon call).
+;                             If called then forces the DATA_FILE_VERSION not to increment when
+;                             performing harmonization; Incorporates fixes made to idlcr8hdf
+; 2017-03-31, v1.60 Ian Boyd  update due to improvements to idlcr8hdf
+; 2017-11-21, v1.61 Ian Boyd  update due to fixes in idlcr8hdf
+; 2018-02-18, v1.62 Ian Boyd  update due to fix in idlcr8ascii and idlcr8hdf
+; 2018-03-14, v1.63 Ian Boyd  update due to fix in idlcr8hdf
+; 2018-05-28, v1.64 Ian Boyd  update due to fix in idlcr8hdf
+; 2018-09-01, v1.65 Ian Boyd  update due to fix in idlcr8hdf
+; 2018-11-16, v1.66 Ian Boyd  update due to fix in idlcr8ascii
+; 2019-05-06, v1.67 Ian Boyd  QA checks now carried out using the metadata definitions in the TAV version
+;                             given in the FILE_META_VERSION global attribute. If this attribute is invalid
+;                             or not present, or the TAV file can't be located, the input TAV file will
+;                             be used for checks but an error code will be generated. Fix to idlcr8hdf
+;                             that caused a crash if the file does not use a DATA_TEMPLATE
+; 2019-05-14, v1.68 Ian Boyd  update due to fix in idlcr8ascii
+; 2019-08-07, v1.69 Ian Boyd  update due to modifications to idlcr8ascii and idlcr8hdf
+; 2019-08-21, v1.70 Ian Boyd  update due to fix in idlcr8ascii
+; 2019-12-05, v2.00 Ian Boyd  update due to changes in geoms_qa to support checks on the optional DATA_SOURCE
+;                             Version Name value (third field in DATA_SOURCE).
+; 2020-02-26, v2.01 Ian Boyd  update due to geoms_vntools updates
+; 2020-03-11, v2.02 Ian Boyd  update due to fix to idlcr8hdf
+; 2020-04-27, v2.03 Ian Boyd  update due to geoms_vntools update
+; 2020-07-09, v2.04 Ian Boyd  update due to fix to idlcr8hdf
+; 2020-09-30, v2.05 Ian Boyd  update due to fix to idlcr8ascii; geoms_tools now returns a QA_error_code
+;                             value of -2 to geoms_qa if idlcr8ascii can't read the input file, to stop
+;                             template and version name checks
+; 2020-10-20, v2.06 Ian Boyd  update due to fixes to idlcr8hdf
+; 2020-10-26, v2.07 Ian Boyd  update due to fix to idlcr8hdf
+; 2020-11-22, v2.08 Ian Boyd  QA checks carried out using the metadata definitions in the TAV version
+;                             determined by the FILE_GENERATION_DATE (FGD), in the first instance, then the
+;                             FILE_META_VERSION (FMV), if different. This adds a check for the FMV TAV version
+;                             using definitions that are out-of-date. If either TAV can't be determined or found
+;                             then the input TAV will be used for checks and an error generated
+; 2020-12-11, v2.09 Ian Boyd  Apply fixes and improvements to procedures identifying correct TAV version(s) to
+;                             use for checks; Fix IDL Math Error (Floating Illegal Operand) in idlcr8hdf
+; 2021-06-17, v2.10 Ian Boyd  update due to fix to idlcr8hdf
+; 2022-08-09, v2.11 Ian Boyd  update due to fixes and improvements in geoms_tools, idlcr8hdf and idlcr8ascii
+; 2023-12-18, v2.12 Ian Boyd  update due to fixes to idlcr8hdf and geoms_vntools
+; 2024-01-12, v2.13 Ian Boyd  update due to fix to idlcr8hdf
+; 2024-09-12, v2.14 Ian Boyd  update due to fixes to idlcrascii and idlcr8hdf
+; 2024-09-27, v2.15 Ian Boyd  update due to fix to idlcr8ascii
+;---------------------------------------------------------------------------------------------------
+
+PRO geoms_tc
+
+	args = command_line_args()
+	iNrArgs = size(args, /N_ELEMENTS)
+
+	if ( iNrArgs ne 2 ) then begin
+		print
+		print, 'GEOMS template checker (geoms_tc)'
+		print, '  Release v2.15, 2024-09-27'
+		print, '  Does GEOMS template compliance checks on HDF4/5 files.'
+		print
+		print, 'usage: idl -rt=geoms_tc.sav -args [GEOMS-TE-FILE] [HDFFILE] '
+		print
+		print, '1: GEOMS-TE-FILE is the path to the GEOMS template file'
+		print, '2: HDFFILE is the path of the HDF file, you want to check for template compliance'
+		print, '------------------------------------------------------------------------------------------------'
+		print
+
+		TC_error_code = 3
+		exit, status=TC_error_code
+	end
+
+	templatefile 	= STRTRIM( args( 0 ), 2 )
+	hdffile			= STRTRIM( args( 1 ), 2 )
+
+	TC_error_code = 3
+
+	if ( file_test( hdffile ) eq 0 ) then begin
+		TC_error_code = 3
+		print, '  ERROR: HDF file not found.'
+	end else begin
+		TC_error_code = 0
+	end
+
+	if ( file_test( templatefile ) eq 0 ) then begin
+		TC_error_code = 3
+		print, '  ERROR: GEOMS template file not found.'
+	end else begin
+		TC_error_code = 0
+	end
+
+	; find and remove log file (see geoms_tools.pro)
+	logfile=STRMID(hdffile,0,STRPOS(hdffile,'.',/REVERSE_SEARCH))+'.log'
+    openw,lu,logfile,/GET_LUN
+	close
+
+	if ( TC_error_code eq 0 ) then begin
+		TC_error_code = geoms_tctools( templatefile, hdffile, 0 )
+	end
+
+	print, TC_error_code
+	exit, status=TC_error_code
+
+END
-- 
GitLab