手続き型 vs. オブジェクト指向
COBOLはフラットなデータ部門、段落レベルの制御フロー、暗黙の状態を持つ手続き型言語です。C#はクラス、namespace、スコープ付き変数を持つオブジェクト指向言語です。単純な変換では静的メソッドとフィールドで埋め尽くされた単一クラスが生成され、元のCOBOLよりも保守が困難になります。
データアクセス層の再設計
COBOLプログラムはDB2向けのEXEC SQL、索引付きファイル向けのVSAM、固定幅フラットファイルI/Oを使用します。C#にはADO.NET、Entity Framework、またはDapperが必要です。データアクセス層はCOBOLからC#への移行で最も複雑な部分であることが多いです。
COBOL構文には意味的マッピングが必要
PERFORM範囲、EVALUATE/WHEN、MOVE CORRESPONDING、88レベル条件、INSPECTパターンにはC#の直接的な対応がありません。正しい変換にはCOBOLのセマンティクスの理解と適切なC#パターンの生成が必要で、行ごとのテキスト置換ではありません。