public DataSet Extract_ZIPFile_MSCI_Indexes_Daily_ForexRate()
        {
            var x = new
            {
                indexType   = this.MSCI_Settings.indexType_DM,
                xmlPath     = this.MSCI_Settings.rootPath,
                xsdClass    = typeof(MSCIBarra_EquityIndex.package_D_5D),
                xmlDataFile = this.MSCI_Settings.PREFIX_DATE + "CORE_DM_ALL_COUNTRY_FXRATE_DAILY_D.xml",
                zipDataFile = this.MSCI_Settings.USED_DATE + "core_dm_daily_d.zip"
            };

            MSCIBarra_EquityIndex.package_D_5D p = (MSCIBarra_EquityIndex.package_D_5D) this.GetPackageClassInZIP(x.xmlPath, x.xsdClass, x.zipDataFile, x.xmlDataFile);

            DataSet DS = new DataSet();

            DS.Tables.Add(read(p));

            return(DS);
        }
        private static DataTable read(MSCIBarra_EquityIndex.package_D_5D p)
        {
            DataTable DT = new DataTable("MSCI_D5D");

            string columnsDef = "CODEDEVISE;DEVISE;DATE;OPEN_4PMLONDON;CLOSE_4PMLONDON";

            foreach (string c in columnsDef.Split(';'))
            {
                DT.Columns.Add(c);
            }
            decimal?forexUSDEUR = null;

            //Console.WriteLine("ALL:  Nb of Securities: {0}", p.dataset_D15D.Count);
            foreach (MSCIBarra_EquityIndex.package_D_5DEntry e in p.dataset_D_5D)
            {
                if (e.ISO_currency_symbol == "EUR")
                {
                    forexUSDEUR = e.spot_fx_eod00d;
                }
            }

            if (forexUSDEUR == null)
            {
                throw new ApplicationException("USDEUR forex not available ( " + p.dataset_D_5D.Count + " forex available ");
            }

            foreach (MSCIBarra_EquityIndex.package_D_5DEntry e in p.dataset_D_5D)
            {
                if (e.ISO_currency_symbol != "EUR")
                {
                    decimal?cours  = e.spot_fx_eod00d / forexUSDEUR;
                    string  coursS = (cours == null ?"NA": String.Format("{0:0.########}", cours));
                    DT.Rows.Add("EUR", e.ISO_currency_symbol, String.Format("{0:dd/MM/yyyy}", e.calc_date), coursS, coursS);
                }
            }

            return(DT);
        }