Procédural vs. orienté objet
COBOL est procédural avec des divisions de données plates, un flux de contrôle par paragraphes et un état implicite. C# est orienté objet avec des classes, des namespaces et des variables à portée définie. Une conversion naïve produit une seule classe remplie de méthodes et champs statiques, plus difficile à maintenir que le COBOL original.
Refonte de la couche d'accès aux données
Les programmes COBOL utilisent EXEC SQL pour DB2, VSAM pour les fichiers indexés et des E/S de fichiers plats à largeur fixe. C# nécessite ADO.NET, Entity Framework ou Dapper. La couche d'accès aux données est souvent la partie la plus complexe d'une migration COBOL vers C#.
Les constructions COBOL nécessitent un mappage sémantique
Les plages PERFORM, EVALUATE/WHEN, MOVE CORRESPONDING, les conditions de niveau 88 et les patterns INSPECT n'ont pas d'équivalent direct en C#. Une conversion correcte nécessite la compréhension de la sémantique COBOL et la génération de patterns C# appropriés, pas une substitution de texte ligne par ligne.