1

Micro Focus Cobol.Netには、C#への変換を検討しているシステムがいくつかあります。

リフレクターでdllを開いてみましたが、Cコードを取得するだけです。

誰かがこれを行う方法の推奨事項がありますか?

リフレクターでC#を選択すると、次のようなコードが表示されます。

        meminit(&(this._MF_OSBLOCK[0]), 0x20, 4);
        this._MF_OSBLOCK[4] = 0x30;
        this._MF_OSBLOCK[5] = 0x30;
        this._MF_OSBLOCK[6] = 0x30;
        this._MF_OSBLOCK[7] = 0x30;
        meminit(&(this._MF_OSBLOCK[8]), 0x20, 30);
        memcpy(&(this._MF_OSBLOCK[0x26]), &(_MF_LITBLOCK[0]), 2);
        int num2 = 0;
        do
        {
            memcpy(&(this._MF_OSBLOCK[40 + num2]), &(_MF_LITBLOCK[0]), 2);
        }
        while ((num2 += 2) < 0xc6);
        memcpy(&(this._MF_OSBLOCK[240]), &(_MF_LITBLOCK[2]), 4);
4

2 に答える 2

4

C#コードを見ていると安全に想定できますが、ReflectorにはC用のコードコンバーターがありません。Cobolコンパイラが正常なC#コードを生成しているとは想定できません。そうする義務はありません。コンパイラに固有のランタイムアセンブリで定義されているヘルパー関数を自由に使用できます。Microsoft.CSharp.dllとは異なります。

Cのような名前のヘルパーを使用するコードを取得することは予想外ではありません。Cは非常に長い間どこでも実行できる言語でした。コンパイラが言語翻訳者であることがまれではありませんでした。この場合、CobolからCに移行し、Cコンパイラを使用してプラットフォーム固有のマシンコードを生成しました。Cを昔のILと考えてください。

生成されたC#コードを確実にコンパイルして実行できます。必ず、そのCOBOL固有のアセンブリリファレンスを使用してください。あなたはGACからそれを掘り出す必要があるかもしれません。まともなC#コードを取得するための実行開始に関しては、ほとんどありません。言語間の違いは大きすぎます。

于 2011-04-04T12:14:45.683 に答える
1

Reflectorで.NETdllを開いても、Cコードは表示されません。マネージC++コードが表示される場合がありますが、ツールバーの言語コンボボックスでC#を選択するだけで変更できます。FileDisassemblerアドイン
の使用を検討してください。これにより、アセンブリから完全なプロジェクトを作成できます。

于 2011-04-04T11:42:39.753 に答える