diff --git a/test/Regression/Compare_gribfiles/7.0.4/Controls/CONTROL_EA5.compare b/test/Regression/Compare_gribfiles/7.0.4/Controls/CONTROL_EA5.compare
new file mode 100644
index 0000000000000000000000000000000000000000..088a08ae12dc5a4f5c3ad605ede17108ec0fe4be
--- /dev/null
+++ b/test/Regression/Compare_gribfiles/7.0.4/Controls/CONTROL_EA5.compare
@@ -0,0 +1,40 @@
+DAY1
+DAY2
+DTIME 3
+TYPE AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN
+TIME 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
+STEP 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ACCTYPE FC
+ACCTIME 06/18
+ACCMAXSTEP 12
+CLASS EA
+STREAM OPER
+NUMBER OFF
+EXPVER 1
+GRID 1000  
+LEFT -0
+LOWER 0
+UPPER 5000
+RIGHT 5000
+LEVEL 137
+LEVELIST 130/to/137
+CWC 1
+RESOL 159
+GAUSS 0
+ACCURACY 24
+OMEGA 0
+OMEGADIFF 0
+ETA 1
+ETADIFF 0
+DPDETA 1
+SMOOTH 0
+FORMAT GRIB1
+ADDPAR 186/187/188/235/139/39
+PREFIX EA
+ECSTORAGE 0
+ECTRANS 1
+ECFSDIR ectmp:/${USER}/econdemand/
+MAILFAIL ${USER} 
+MAILOPS ${USER}
+GRIB2FLEXPART 0
+EOF
diff --git a/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120100 b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120100
new file mode 100644
index 0000000000000000000000000000000000000000..2f13181129b644237b9d3b7bad344b3d8d2b5070
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120100 differ
diff --git a/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120103 b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120103
new file mode 100644
index 0000000000000000000000000000000000000000..98b062aba14404f9068b236af94b7773829bb6a8
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120103 differ
diff --git a/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120106 b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120106
new file mode 100644
index 0000000000000000000000000000000000000000..ffab5fc6c492c2665a5211242b09600ccf3c9a60
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120106 differ
diff --git a/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120109 b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120109
new file mode 100644
index 0000000000000000000000000000000000000000..7bc46c56b77ee42dc4ab1aed4d555d52408b64a3
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120109 differ
diff --git a/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120112 b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120112
new file mode 100644
index 0000000000000000000000000000000000000000..ac00421772296496ca1be967ed6c358a91bbc074
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120112 differ
diff --git a/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120115 b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120115
new file mode 100644
index 0000000000000000000000000000000000000000..b54e9ba288aff7866b59769d2fb0cfbcdee3c650
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120115 differ
diff --git a/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120118 b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120118
new file mode 100644
index 0000000000000000000000000000000000000000..c183450b38d65d911cf006075c443c5353916c02
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120118 differ
diff --git a/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120121 b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120121
new file mode 100644
index 0000000000000000000000000000000000000000..7ae16fcef53a74d4335c3c3ca50ef65614c96e93
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.0.4/EA5/EA18120121 differ
diff --git a/test/Regression/Compare_gribfiles/7.1/Controls/CONTROL_EA5.compare b/test/Regression/Compare_gribfiles/7.1/Controls/CONTROL_EA5.compare
new file mode 100644
index 0000000000000000000000000000000000000000..27a505d713a315b30d6adfc69827e4096f54a402
--- /dev/null
+++ b/test/Regression/Compare_gribfiles/7.1/Controls/CONTROL_EA5.compare
@@ -0,0 +1,23 @@
+START_DATE
+DTIME 3
+TYPE AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN AN
+TIME 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
+STEP 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ACCTYPE FC
+ACCTIME 06/18
+ACCMAXSTEP 12
+CLASS EA
+STREAM OPER
+GRID 1.  
+LEFT 0.
+LOWER 0.
+UPPER 5.
+RIGHT 5.
+LEVEL 137
+LEVELIST 130/to/137
+RESOL 159
+ETA 1
+ADDPAR LCC/MCC/HCC/SKT/STL1/SWVL1
+PREFIX EA
+ECTRANS 1
+CWC 1
diff --git a/test/Regression/Compare_gribfiles/7.1/EA5/EA18120100 b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120100
new file mode 100644
index 0000000000000000000000000000000000000000..2f13181129b644237b9d3b7bad344b3d8d2b5070
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120100 differ
diff --git a/test/Regression/Compare_gribfiles/7.1/EA5/EA18120103 b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120103
new file mode 100644
index 0000000000000000000000000000000000000000..98b062aba14404f9068b236af94b7773829bb6a8
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120103 differ
diff --git a/test/Regression/Compare_gribfiles/7.1/EA5/EA18120106 b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120106
new file mode 100644
index 0000000000000000000000000000000000000000..ffab5fc6c492c2665a5211242b09600ccf3c9a60
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120106 differ
diff --git a/test/Regression/Compare_gribfiles/7.1/EA5/EA18120109 b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120109
new file mode 100644
index 0000000000000000000000000000000000000000..7bc46c56b77ee42dc4ab1aed4d555d52408b64a3
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120109 differ
diff --git a/test/Regression/Compare_gribfiles/7.1/EA5/EA18120112 b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120112
new file mode 100644
index 0000000000000000000000000000000000000000..ac00421772296496ca1be967ed6c358a91bbc074
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120112 differ
diff --git a/test/Regression/Compare_gribfiles/7.1/EA5/EA18120115 b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120115
new file mode 100644
index 0000000000000000000000000000000000000000..b54e9ba288aff7866b59769d2fb0cfbcdee3c650
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120115 differ
diff --git a/test/Regression/Compare_gribfiles/7.1/EA5/EA18120118 b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120118
new file mode 100644
index 0000000000000000000000000000000000000000..c183450b38d65d911cf006075c443c5353916c02
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120118 differ
diff --git a/test/Regression/Compare_gribfiles/7.1/EA5/EA18120121 b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120121
new file mode 100644
index 0000000000000000000000000000000000000000..7ae16fcef53a74d4335c3c3ca50ef65614c96e93
Binary files /dev/null and b/test/Regression/Compare_gribfiles/7.1/EA5/EA18120121 differ
diff --git a/test/Regression/Compare_gribfiles/New_files/EA13080800 b/test/Regression/Compare_gribfiles/New_files/EA13080800
new file mode 100644
index 0000000000000000000000000000000000000000..b38d5e6c69563c3d6d2b7b617190d96c390e4d54
Binary files /dev/null and b/test/Regression/Compare_gribfiles/New_files/EA13080800 differ
diff --git a/test/Regression/Compare_gribfiles/New_files/EA13080803 b/test/Regression/Compare_gribfiles/New_files/EA13080803
new file mode 100644
index 0000000000000000000000000000000000000000..293fa14c5b1c8e55d8dce3d9ee3aedd3647c9109
Binary files /dev/null and b/test/Regression/Compare_gribfiles/New_files/EA13080803 differ
diff --git a/test/Regression/Compare_gribfiles/New_files/EA13080806 b/test/Regression/Compare_gribfiles/New_files/EA13080806
new file mode 100644
index 0000000000000000000000000000000000000000..f05485aea8ae1da7b47445eb7501096fa4b340bf
Binary files /dev/null and b/test/Regression/Compare_gribfiles/New_files/EA13080806 differ
diff --git a/test/Regression/Compare_gribfiles/New_files/EA13080809 b/test/Regression/Compare_gribfiles/New_files/EA13080809
new file mode 100644
index 0000000000000000000000000000000000000000..39389c8c83ae935b329b20596c688b7d5affb6b7
Binary files /dev/null and b/test/Regression/Compare_gribfiles/New_files/EA13080809 differ
diff --git a/test/Regression/Compare_gribfiles/New_files/EA13080812 b/test/Regression/Compare_gribfiles/New_files/EA13080812
new file mode 100644
index 0000000000000000000000000000000000000000..b5948f2c7664c577cc546b40eec6ca0971be1011
Binary files /dev/null and b/test/Regression/Compare_gribfiles/New_files/EA13080812 differ
diff --git a/test/Regression/Compare_gribfiles/New_files/EA13080815 b/test/Regression/Compare_gribfiles/New_files/EA13080815
new file mode 100644
index 0000000000000000000000000000000000000000..b9490a2d4cdef532a6bde71b9a31f6053139b059
Binary files /dev/null and b/test/Regression/Compare_gribfiles/New_files/EA13080815 differ
diff --git a/test/Regression/Compare_gribfiles/New_files/EA13080818 b/test/Regression/Compare_gribfiles/New_files/EA13080818
new file mode 100644
index 0000000000000000000000000000000000000000..8abad5e097da27e248b5ec31a2a7d9b65b16f6d2
Binary files /dev/null and b/test/Regression/Compare_gribfiles/New_files/EA13080818 differ
diff --git a/test/Regression/Compare_gribfiles/New_files/EA13080821 b/test/Regression/Compare_gribfiles/New_files/EA13080821
new file mode 100644
index 0000000000000000000000000000000000000000..f0375f5cb7eeb3db99ef212f66606ae67107ab0b
Binary files /dev/null and b/test/Regression/Compare_gribfiles/New_files/EA13080821 differ
diff --git a/test/Regression/Compare_gribfiles/Reference_files/EA13080800 b/test/Regression/Compare_gribfiles/Reference_files/EA13080800
new file mode 100644
index 0000000000000000000000000000000000000000..b38d5e6c69563c3d6d2b7b617190d96c390e4d54
Binary files /dev/null and b/test/Regression/Compare_gribfiles/Reference_files/EA13080800 differ
diff --git a/test/Regression/Compare_gribfiles/Reference_files/EA13080803 b/test/Regression/Compare_gribfiles/Reference_files/EA13080803
new file mode 100644
index 0000000000000000000000000000000000000000..293fa14c5b1c8e55d8dce3d9ee3aedd3647c9109
Binary files /dev/null and b/test/Regression/Compare_gribfiles/Reference_files/EA13080803 differ
diff --git a/test/Regression/Compare_gribfiles/Reference_files/EA13080806 b/test/Regression/Compare_gribfiles/Reference_files/EA13080806
new file mode 100644
index 0000000000000000000000000000000000000000..f05485aea8ae1da7b47445eb7501096fa4b340bf
Binary files /dev/null and b/test/Regression/Compare_gribfiles/Reference_files/EA13080806 differ
diff --git a/test/Regression/Compare_gribfiles/Reference_files/EA13080809 b/test/Regression/Compare_gribfiles/Reference_files/EA13080809
new file mode 100644
index 0000000000000000000000000000000000000000..39389c8c83ae935b329b20596c688b7d5affb6b7
Binary files /dev/null and b/test/Regression/Compare_gribfiles/Reference_files/EA13080809 differ
diff --git a/test/Regression/Compare_gribfiles/Reference_files/EA13080812 b/test/Regression/Compare_gribfiles/Reference_files/EA13080812
new file mode 100644
index 0000000000000000000000000000000000000000..b5948f2c7664c577cc546b40eec6ca0971be1011
Binary files /dev/null and b/test/Regression/Compare_gribfiles/Reference_files/EA13080812 differ
diff --git a/test/Regression/Compare_gribfiles/Reference_files/EA13080815 b/test/Regression/Compare_gribfiles/Reference_files/EA13080815
new file mode 100644
index 0000000000000000000000000000000000000000..b9490a2d4cdef532a6bde71b9a31f6053139b059
Binary files /dev/null and b/test/Regression/Compare_gribfiles/Reference_files/EA13080815 differ
diff --git a/test/Regression/Compare_gribfiles/Reference_files/EA13080818 b/test/Regression/Compare_gribfiles/Reference_files/EA13080818
new file mode 100644
index 0000000000000000000000000000000000000000..8abad5e097da27e248b5ec31a2a7d9b65b16f6d2
Binary files /dev/null and b/test/Regression/Compare_gribfiles/Reference_files/EA13080818 differ
diff --git a/test/Regression/Compare_gribfiles/Reference_files/EA13080821 b/test/Regression/Compare_gribfiles/Reference_files/EA13080821
new file mode 100644
index 0000000000000000000000000000000000000000..f0375f5cb7eeb3db99ef212f66606ae67107ab0b
Binary files /dev/null and b/test/Regression/Compare_gribfiles/Reference_files/EA13080821 differ
diff --git a/test/Regression/Compare_gribfiles/test_cmp_grib_file.py b/test/Regression/Compare_gribfiles/test_cmp_grib_file.py
new file mode 100644
index 0000000000000000000000000000000000000000..31d52c7c8361fbef2ccf2790b6184a2972f4faf5
--- /dev/null
+++ b/test/Regression/Compare_gribfiles/test_cmp_grib_file.py
@@ -0,0 +1,244 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+"""
+
+# ------------------------------------------------------------------------------
+# MODULES
+# ------------------------------------------------------------------------------
+import os
+import sys
+from eccodes import GribFile, GribMessage
+
+# ------------------------------------------------------------------------------
+# FUNCTION
+# ------------------------------------------------------------------------------
+def get_cmdline_params(parlist, debug=True):
+
+    import getopt
+
+    iref_path = '' # e.g. Reference_files
+    inew_path = '' # e.g. New_files
+    smatch = '' # e.g. files matching pattern
+
+    try:
+        opts, pars = getopt.getopt(parlist,
+                                   "hr:n:p:",
+                                   ["ipref=", "ipnew=", "pattern="])
+    except getopt.GetoptError:
+        print('test_cmp_grib_file.py -r <ipref> -n <ipnew> -p <pattern>')
+        sys.exit(2)
+
+    for opt, par in opts:
+        if opt == '-h':
+            print('test_cmp_grib_file.py -r <ipref> -n <ipnew> -p <pattern>')
+            sys.exit()
+        elif opt in ("-r", "--ipref"):
+            iref_path = par
+        elif opt in ("-n", "--ipnew"):
+            inew_path = par
+        elif opt in ("-p", "--pattern"):
+            smatch = par
+
+    if iref_path == '':
+        sys.exit('NO REFERENCE INPUT PATH SET!')
+    if inew_path == '':
+        sys.exit('NO "NEW" COMPARISON INPUT PATH SET!')
+    if smatch == '':
+        sys.exit('NO MATCHING PATTERN FOR FILES SET!')
+
+    if debug:
+        print("\n\nWelcome!")
+        print('Reference path is: ', iref_path)
+        print('New path is: ', inew_path)
+        print('Filepattern is: ', smatch)
+
+    return iref_path, inew_path, smatch
+
+def get_files(ipath, matchingstring, debug=True):
+    """
+        @Description:
+            Get filenames from input path matching the
+            string or regular expression and return it.
+
+        @Input:
+            ipath: string
+                Path to the files.
+
+            matchingstring: string
+                A string defining the filenames,
+                with or without regular exprssion.
+
+        @Return
+            filename: list of strings
+                A list of all files matching the pattern of
+                matchingstring.
+    """
+    import fnmatch
+
+    files = []
+
+    for fn in os.listdir(ipath):
+        if fnmatch.fnmatch(fn, matchingstring):
+            files.append(fn)
+
+    filelist = sorted(files)
+    if debug:
+        print('The input files are: %s' %(filelist))
+
+    return filelist
+
+def cmp_files_list(flist1, flist2):
+    '''
+    '''
+
+    # 1. same length?
+    length = len(flist1) == len(flist2)
+    if not length:
+        print('There are not the same amount of files.')
+        sys.exit('Message 1')
+
+    # 2. same content?
+    content = [True for i, j in zip(flist1, flist2) if i == j]
+    if not len(content) == len(flist1):
+        print('Not the same file list')
+        sys.exit('Message 2')
+
+    return True
+
+
+def cmp_number_messages(iref, flist1, inew, flist2):
+
+    ref_dict = {}
+    new_dict = {}
+    res_dict = {}
+    for file in flist1:
+        with GribFile(os.path.join(iref,file)) as grib:
+            ref_dict[file] = len(grib)
+        with GribFile(os.path.join(inew,file)) as grib:
+            new_dict[file] = len(grib)
+
+        res_dict[file] = ref_dict[file] == new_dict[file]
+
+    for k, res in res_dict.items():
+        if not res == True:
+            print('LOG: Amount of messages in files {} are not the same!'.format(k))
+
+    return True
+
+
+def cmp_grib_msg_header(ipath_ref, ipath_new, filelist):
+    from subprocess import Popen, PIPE
+    # ref_dict = {}
+    # new_dict = {}
+    # for file in flist1:
+        # with GribFile(os.path.join(iref,file)) as grib:
+            # for i in range(len(grib)):
+                # msg = GribMessage(grib)
+                # ref_dict[file] = {}
+                # ref_dict[file][i] = [msg['shortName'],msg['level'],
+                                  # msg['editionNumber'],msg['dataDate'],
+                                  # msg['dataTime'],msg['marsClass'],
+                                  # msg['type'], msg['gridType'],
+                                  # msg['stepRange']]
+    error_flag = False
+    cmp_flag = False
+    for file in filelist:
+        try:
+            res = Popen(['grib_compare', '-H',
+                         ipath_ref + '/' + file,
+                         ipath_new + '/' + file],
+                        stdin=PIPE, stdout=PIPE, stderr=PIPE)
+            output, error = res.communicate()#.decode("utf-8"))
+            if error:
+                print('... ERROR: \n\t{}'.format(error.decode()))
+                error_flag = True
+            if output:
+                print('{}'.format(output.decode()))
+                cmp_flag = True
+        except ValueError as e:
+            print('... ERROR CODE: ' + str(e.returncode))
+            print('... ERROR MESSAGE:\n \t ' + str(res))
+            error_flag = True
+        except OSError as e:
+            print('... ERROR CODE: ' + str(e.errno))
+            print('... ERROR MESSAGE:\n \t ' + str(e.strerror))
+            error_flag = True
+
+    if error_flag:
+        sys.exit('... ERROR IN GRIB MESSAGE COMPARISON!')
+    if cmp_flag:
+        sys.exit('... FILES HAVE DIFFERENCES IN GRIB MESSAGES!')
+
+    return True
+
+
+def cmp_grib_msg_statistics(ipath_ref, ipath_new, filelist):
+
+    from subprocess import Popen, PIPE
+
+    error_flag = False
+    cmp_flag = False
+    for file in filelist:
+        try:
+            res = Popen(['grib_compare', '-c', 'statistics:n',
+                         ipath_ref + '/' + file,
+                         ipath_new + '/' + file],
+                        stdin=PIPE, stdout=PIPE, stderr=PIPE)
+            output, error = res.communicate()#.decode("utf-8"))
+            if error:
+                print('... ERROR: \n\t{}'.format(error.decode()))
+                error_flag = True
+            if output:
+                print('\nIn File: {}'.format(file))
+                print('{}'.format(output.decode()))
+                cmp_flag = True
+        except ValueError as e:
+            print('... ERROR CODE: ' + str(e.returncode))
+            print('... ERROR MESSAGE:\n \t ' + str(res))
+            error_flag = True
+        except OSError as e:
+            print('... ERROR CODE: ' + str(e.errno))
+            print('... ERROR MESSAGE:\n \t ' + str(e.strerror))
+            error_flag = True
+
+    if error_flag:
+        sys.exit('... ERROR IN GRIB MESSAGE COMPARISON!')
+    if cmp_flag:
+        sys.exit('... FILES HAVE DIFFERENT STATISTICS!')
+    return True
+
+if __name__ == '__main__':
+
+    # get the parameter list of program call
+    ref_path, new_path, fmatch = get_cmdline_params(sys.argv[1:])
+
+    # get the list of files of both cases
+    ref_files = get_files(ref_path, fmatch)
+    new_files = get_files(new_path, fmatch)
+
+    # flag to store successfull tests
+    suc = True
+
+    # 1. Does the 2 cases contain the same list of files?
+    suc = True if suc and cmp_files_list(ref_files, new_files) else False
+
+    # 2. Does each file in both cases contain the same amount of messages?
+    suc = True if suc and cmp_number_messages(ref_path, ref_files, new_path, new_files) else False
+
+    # 3. Does each file has the same parameters (in Header)?
+    # Since we can be sure that both cases have the same files,
+    # we just use 1 filelist
+    suc = True if suc and cmp_grib_msg_header(ref_path, new_path, new_files) else False
+
+    # 4. Are the statistics of each message the same?
+    # Since we can be sure that both cases have the same files,
+    # we just use 1 filelist
+    suc = True if suc and cmp_grib_msg_statistics(ref_path, new_path, new_files) else False
+
+    # If the program comes this far and flag "suc" = True,
+    # all tests were successful
+    if suc:
+        exit('GRIB_COMPARISON: SUCCESSFULL!')
+    else:
+        exit('GRIB_COMPARISON: FAILURE!')