COBOL プログラムを移植する言語を選択する場合、どの言語を選択しますか? また、その理由は何ですか? 「言語Xに精通しているため」という答えを探しているわけではありません。
COBOL の設計にうまく対応する言語の機能を探しています。
更新:プログラムは、ユーティリティ、データ処理、画面などに対してギャミットを実行します。
COBOL プログラムを移植する言語を選択する場合、どの言語を選択しますか? また、その理由は何ですか? 「言語Xに精通しているため」という答えを探しているわけではありません。
COBOL の設計にうまく対応する言語の機能を探しています。
更新:プログラムは、ユーティリティ、データ処理、画面などに対してギャミットを実行します。
それらを ... うーん ... COBOL に移植します。はい、それだけです。コボル。
申し訳ありませんが、抵抗できませんでした。
真面目な話、現在のプラットフォーム用の COBOL コンパイラは存在しますが、コードを移植する必要がある理由をもう少し理解しない限り、助けにならないかもしれません。
それが実行されるプラットフォームは時代遅れですか? 経営陣は、より「現代的な」ソリューションを推進しているだけですか? System z から Windows に何かを移動する必要がありますか (うーん!)?
COBOL (最も純粋な形式であり、OO-COBOL ゴミではありません) はほとんど単純な手続き型言語 (ReportWriter にもかかわらず) であるため、他の手続き型言語のいずれにもかなりうまく変換されます。
さて、COBOL プログラムが通常取得する入力を検討する必要があります。
COBOL は、大量の固定幅形式のテキストを入力として処理し、ほぼ同じ方法で出力するように設計されています。これは、何よりも ETL プロセスのように思えます。
したがって、私は COBOL プログラムを単に別の言語に移植するつもりはありません。SQL Server Integration Services (SSIS) や少なくともその前身である DTS (SQL Data Transformation Services) などの適切な ETL テクノロジに移植します。SSIS は (少なくとも SQL Server 2005 では) VB.NET を使用することを意味しますが、それは問題にはなりません。
私は COBOL のことはあまり知りませんが、COBOL の直接のスーパーセットである現在の言語はないと思います (そのため、COBOL を言語に直接マップするのは簡単ではありません)。いくつかの問題があります。
10 進演算のビルトイン サポート - これにより、演算子のオーバーロードのない最新の言語が除外されます。
構造化レコードのより良いサポート - C のように構造体/共用体の組み合わせを使用できますが、識別子が非常に長くなる場合があると思います (少なくとも私が見たプログラムでは)。
Goto ステートメント - これがないと、プログラムを書き直すときに、プログラムのロジックを完全に分析する必要があります。
マッピングが容易でないその他の機能が存在する場合があります。
私は COBOL コアを保持しますが、エッジを拡張します。
Microfocusは、COBOL が Web サービスと対話できるようにする Enterprise Server と呼ばれるツールを提供します。
COBOL プログラム A と別の COBOL プログラム B があり、A がインターフェイス セクションを介して B を呼び出す場合、このツールを使用すると、B のインターフェイス セクションを Web サービスとして公開できます。
次に、プログラム A に対してクライアント プロキシを生成すると、A は Web サービスを介して B を呼び出すことができます。
もちろん、B には Web サービスがあるため、他の種類のプログラム (コマンド ライン、Windows アプリケーション、Java、ASP など) もそれを呼び出すことができます。
また、Visual Studio 内で実行され、COBOL を MSIL に変換する COBOL.NET という製品もあります。これは、任意の .NET コンポーネントにリンクできることを意味します。
したがって、アプローチは、COBOL コアを維持しながら、Web サービスを介してインターフェイスし、任意の CLR 準拠言語 (C#、VB など) で新しい開発を行うことです。
私は、現在の実装ではなく、プログラムの意図した設計に基づいて、個人的にこの決定を行います。ただし、単純な行ごとのポートが必要な場合は、おそらく c/c++ と言うでしょう。
おそらく、新しい言語をすぐに検討する代わりに、コードの一部を .Net などの最新のフレームワークに移行することを検討できます。完全に独り占めする準備が整うまでは、それが適切な中間ソリューションであることがわかるかもしれません。
富士通のNetCOBOLなど、利用可能な .NET 用の COBOL コンパイラがいくつかあります。
私は以前、いくつかの COBOL を C に移植する作業に携わっていました (1989 年くらい)。問題の COBOL は、盗難警報器や火災警報器などを監視するためのコードでした。それは、よりリアルタイムの種類の環境に適した種類のプログラムでした。 . これらの膨大な数の顧客フィールド デバイスを 1 分間に何度もポーリングします。「COBOL の設計にうまく対応する言語の機能を探す」ことは、COBOL の設計を無視する COBOL プログラムがたくさんあるという事実を無視します。