Cobol to sql

Soyez le premier à donner votre avis sur cette source.

Vue 4 070 fois - Téléchargée 870 fois

Description

ce programme permet de convertir la descriptions des fichiers de données dans cobol vers le langage SQL afin de pouvoir charger directement les données de l'application Cobol dans une base de donnés SQL SERVER.
Il faut noter que les données des fichiers dans cobol n'ont pas de délimiteur.

Source / Exemple :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SIC_SQL
{
    public class Stype
    {
        private string entree { get; set; }

        private int valeur;

        public int Valeur
        {
            get
            {
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC XX\.)").Groups[1].Success) { return 2; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC XXX\.)").Groups[1].Success) { return 3; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC X\.)").Groups[1].Success) { return 1; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9V99\.)").Groups[1].Success) { return 1; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*99V99\.)").Groups[1].Success) { return 2; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9V9\.)").Groups[1].Success) { return 1; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*99V9\.)").Groups[1].Success) { return 2; }
                else
                {
                    try
                    {
                        return int.Parse(System.Text.RegularExpressions.Regex.Match(entree, @"\(([^)]*)\)").Groups[1].Value.ToString());
                    }
                    catch (Exception)
                    {

                        return 0;
                    }
                }
            }
            set { valeur = value; }
        }

        private int mantisse;

        public int Mantisse
        {
            get
            {
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9V99\.)").Groups[1].Success) { return 2; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*99V99\.)").Groups[1].Success) { return 2; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9V9\.)").Groups[1].Success) { return 1; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*99V9\.)").Groups[1].Success) { return 1; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9\(\d+\)V99\.)").Groups[1].Success) { return 2; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9\(\d+\)V9\.)").Groups[1].Success) { return 1; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9\(\d+\)V9(3).)").Groups[1].Success) { return 3; }
                if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9\(\d+\)V9(4).)").Groups[1].Success) { return 4; }
                else
                {
                    try
                    {
                        return int.Parse(System.Text.RegularExpressions.Regex.Match(entree, @"V9\(([^)]*)\)\.").Groups[1].Value.ToString());
                    }
                    catch
                    {
                        return 0;
                    }
                }
            }
            set { mantisse = value; }
        }

        public string get_numeric()
        {

            switch (Valeur)
            {
                case 1: { return "tinyint"; }
                case 2: { return "smallint"; }
                case 3: { return "int"; }
                case 4: { return "int"; }
                case 5: { return "bigint"; }
                case 6: { return "bigint"; }
                case 7: { return "bigint"; }
                case 8: { return "bigint"; }
                default: { return "numeric(" + Valeur + ")"; }

            }
        }
        public int getTotal()
        {
            return Valeur + Mantisse;
        }

        private string Get_Type()
        {

            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+X\()").Groups[1].Success) { return "varchar(" + Valeur + ")"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9V99\.)").Groups[1].Success) { return "numeric(1,2)"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*99V99\.)").Groups[1].Success) { return "numeric(2,2)"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9V9\.)").Groups[1].Success) { return "numeric(1,1)"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*99V9\.)").Groups[1].Success) { return "numeric(2,1)"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9\(\d+\)V99\.)").Groups[1].Success) { return "numeric(" + Valeur + ",2)"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9\(\d+\)V9\.)").Groups[1].Success) { return "numeric(" + Valeur + ",1)"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9\(\d+\)\.)").Groups[1].Success) { return get_numeric(); }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC\s+[Ss]*9\(\d+\)V9\(\d+\)\.)").Groups[1].Success) { return "numeric(" + Valeur + "," + Mantisse + ")"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC XX\.)").Groups[1].Success) { return "varchar(2)"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC XXX\.)").Groups[1].Success) { return "varchar(3)"; }
            if (System.Text.RegularExpressions.Regex.Match(entree, @"(PIC X\.)").Groups[1].Success) { return "varchar(1)"; }
            else
            {
                return "";
            }

        }
        public string SQLType()
        {
            string _type = Get_Type();
            if (_type == "numeric(3,4)") { return "float(7)"; }
            else return _type;
        }

        public Stype(string val_entree)
        {
            entree = val_entree;
        }

        public Stype()
        {
            // TODO: Complete member initialization
        }

    }
}

Conclusion :


ce programme m'a permis de charger les données qui se trouvaient dans notre DPS7000 dans SQL SERVER en respectant la dentition des données, leur type et leur taille.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.