Procedurale vs. orientato agli oggetti
COBOL è procedurale con divisioni dati piatte, flusso di controllo a livello di paragrafo e stato implicito. C# è orientato agli oggetti con classi, namespace e variabili con ambito definito. Una conversione ingenua produce una singola classe riempita di metodi e campi statici, più difficile da mantenere rispetto al COBOL originale.
Riprogettazione del livello di accesso ai dati
I programmi COBOL utilizzano EXEC SQL per DB2, VSAM per file indicizzati e I/O di file piatti a larghezza fissa. C# necessita di ADO.NET, Entity Framework o Dapper. Il livello di accesso ai dati è spesso la parte più complessa di una migrazione da COBOL a C#.
I costrutti COBOL richiedono mappatura semantica
Gli intervalli PERFORM, EVALUATE/WHEN, MOVE CORRESPONDING, le condizioni di livello 88 e i pattern INSPECT non hanno un equivalente diretto in C#. Una conversione corretta richiede la comprensione della semantica COBOL e la generazione di pattern C# appropriati, non una sostituzione di testo riga per riga.