/// <summary>
        /// Build the settings object using MSCI paths
        /// </summary>
        /// <param name="DATE">au format YYYYMMDD</param>
        private MSCI_SETTINGS GetPathSettings(string DATE, string MSCI_FILES_PATH = @"G:\,FGA MarketData\INDICES\MSCI\")
        {
            MSCI_Settings             = new MSCI_SETTINGS();
            MSCI_Settings.USED_DATE   = DATE;
            MSCI_Settings.PREFIX_DATE = DATE + "_" + DATE + "_";
            if (MSCI_FILES_PATH.EndsWith("\\"))
            {
                MSCI_Settings.rootPath = MSCI_FILES_PATH + DATE + "\\";
            }
            else
            {
                MSCI_Settings.rootPath = MSCI_FILES_PATH + "\\" + DATE + "\\";
            }

            // core_dm_daily
            MSCI_Settings.rootPath_DM  = MSCI_Settings.rootPath + DATE + "core_dm_daily_d";
            MSCI_Settings.indexType_DM = "core_dm_daily";
            // core_eafe_daily
            MSCI_Settings.rootPath_EAFE  = MSCI_Settings.rootPath + DATE + "core_eafe_daily_d";
            MSCI_Settings.indexType_EAFE = "core_eafe_daily";
            // core_amer_daily
            MSCI_Settings.rootPath_AMER  = MSCI_Settings.rootPath + DATE + "core_amer_daily_d";
            MSCI_Settings.indexType_AMER = "core_amer_daily";

            // core_amer_daily
            MSCI_Settings.rootPath_DM_ACE  = MSCI_Settings.rootPath + DATE + "core_dm_ace";
            MSCI_Settings.indexType_DM_ACE = "core_dm_ace";
            return(MSCI_Settings);
        }
        /// <summary>
        /// PROGRAMME EXECUTE
        /// Parametres: fichier_cours_xls et/ou fichier_prix_xls pour les extractions en cours devises et prix des composants
        /// msci_files_path pour le chemin vers les fichiers sources (par defaut:G:\,FGA Systèmes\PRODUCTION\FTP\INDICES\MSCI\)
        /// date pour la date utilisée
        /// liste_exclusion_prix pour une liste des tickers bloomberg à exclure
        /// </summary>
        /// <param name="args"></param>
        public void Execute(Arguments CommandLine)
        {
            string[] inutile = CommandLine.Intercept(new string[] { "fichier_cours_csv", "fichier_cours_xls", "fichier_devises_csv", "fichier_devises_xls", "date", "msci_files_path", "liste_exclusion_prix" });
            // afficher les parametres passés et inutiles
            // prendre ceux qui commencent par @xxx ou #xxx qui représentent les variables
            if (inutile.Length > 0)
            {
                if (InfoLogger.IsInfoEnabled)
                {
                    string liste = "(";
                    foreach (string s in inutile)
                    {
                        if (!s.StartsWith("@") && !s.StartsWith("#"))
                        {
                            liste += s + " ";
                        }
                    }
                    liste += ")";
                    if (liste.Length > 2)
                    {
                        InfoLogger.Info("Les parametres suivants ne sont pas exploitees: " + liste);
                    }
                }
            }

            DataSet DS_fichier_cours   = null;
            DataSet DS_fichier_devises = null;

            //------------------------------------------------------------------------------------------
            if (CommandLine["date"] != null)
            {
                if (CommandLine["msci_files_path"] != null)
                {
                    this.MSCI_Settings = this.GetPathSettings(CommandLine["date"], CommandLine["msci_files_path"]);
                }
                else
                {
                    this.MSCI_Settings = this.GetPathSettings(CommandLine["date"]);
                }


                // Soit extraction des cours MSCI
                if ((CommandLine["fichier_cours_xls"] != null) || (CommandLine["fichier_cours_csv"] != null))
                {
                    if (CommandLine["liste_exclusion_prix"] != null)
                    {
                        string [] excluded = CommandLine["liste_exclusion_prix"].Split(new char[] { ',', ';', ':' });
                        this.excluded_security_ticker = new HashSet <string>(excluded);
                    }
                    DS_fichier_cours = this.Extract_ZIPFile_MSCI_Indexes_Daily_Security();
                }

                if (CommandLine["fichier_cours_xls"] != null)
                {
                    string outputFileName = this.ParameterFileNameWithDateTime(CommandLine["fichier_cours_xls"], this.MSCI_Settings.RUNNING_TIME);
                    ExcelFile.CreateWorkbook(DS_fichier_cours, outputFileName);
                }
                if (CommandLine["fichier_cours_csv"] != null)
                {
                    string outputFileName = this.ParameterFileNameWithDateTime(CommandLine["fichier_cours_csv"], this.MSCI_Settings.RUNNING_TIME);
                    CSVFile.WriteToCSV(DS_fichier_cours, outputFileName);
                }

                // Soit extraction des devises MSCI
                if ((CommandLine["fichier_devises_xls"] != null) || (CommandLine["fichier_devises_csv"] != null))
                {
                    DS_fichier_devises = this.Extract_ZIPFile_MSCI_Indexes_Daily_ForexRate();
                }


                if (CommandLine["fichier_devises_xls"] != null)
                {
                    string outputFileName = this.ParameterFileNameWithDateTime(CommandLine["fichier_devises_xls"], this.MSCI_Settings.RUNNING_TIME);
                    ExcelFile.CreateWorkbook(DS_fichier_devises, outputFileName);
                }
                if (CommandLine["fichier_devises_csv"] != null)
                {
                    string outputFileName = this.ParameterFileNameWithDateTime(CommandLine["fichier_devises_csv"], this.MSCI_Settings.RUNNING_TIME);
                    CSVFile.WriteToCSV(DS_fichier_devises, outputFileName);
                }
            }
        }