2016-04-15 11 views
2

私は1990年代にコンサルタントがWindows環境に戻したが、Microfocus(Eclipseなど)を使用しているCOBOLであった古いUNIXベースのCOBOLバッチアプリケーションを変換する責任があります。COBOL - Microfocus - 汎用I/O

これは、1つの小さなグリッチを除いて、かなり簡単な作業です。

古いアプリケーションは、COBOL内で明示的なファイル処理を行うことはありませんでした。つまり、COBOLプログラムにFD、OPEN、READ、WRITE、またはCLOSEコマンドはありません。代わりに、渡されたパラメータ(ファイル名、recの長さ、および必要な関数を含む)に基づいて、さまざまな関数の1つを実行するCプログラムを作成しました。

このサブルーチンを書き直したいCOBOLでは、変換されるCOBOLメインプログラムの変更はほとんど必要ありません。つまり、サブルーチンを呼び出すことはできますが、現在はCの代わりにCOBOLになります。

しかし、ほとんどのファイルに対してそのサブルーチンを書き込む方法があります。私は可変長レコードのルートを調べなければならないと思います。なぜなら、文字通り最大長までの最大サイズになる可能性があるからです。しかし、エラーの影響を受けやすいようです(さまざまな種類のファイルを開こうとすると) 。

誰かがこのようなタスクに関するこの経験やアイデアを経験していますか?そうでなければ、私は実行する必要のある特定のCOBOLコマンド(Open、Readなど)を使って各呼び出しステートメントをそのサブルーチンに置き換える鈍い強制ルートを実行しなければならない可能性があります。メインプログラムに追加されました。

ありがとうございます。あなたは、FD-nameは、はい、そう

FD fd-name. 
... 

ある

CALL "subprogram" USING fd-name 

することができるかもしれません

+0

質問に含めることができるCサブプログラムのソースがありますか? –

+0

ここにどれくらい含めることができないのかわかりませんが、これはファイルを開く関数です:/ *************************** ******************************************** ** 編集それは大きすぎた。私は月曜日まで待たなければならないかもしれない。ここにファイルを添付できますか? – DaveL

+0

質問の下に編集リンクがあります。それを使用すると、3万人のキャラクターが遊んでいますが、これで十分です。 –

答えて

0

?おそらく?、汎用COBOLファイルを取ることができるサブプログラムを引き出すことができるかもしれません。しかし、レコードレイアウトや他の楽しいものにマッチするので、注意してください。これは、COBOLからCOBOLには作用しないかもしれませんが、ファイル制御ブロックへの参照を渡すと、COBOLはCに戻ります。

在庫システムのライブラリを調べる方がよいでしょう。利用可能な場合はCBL_OPEN_FILECBL_READ_FILEのようなものがあります。これにより、現在のCサブプログラムで想定されるストリーミングIOとのより緊密な一致が得られます。

また、Billがコメントに示唆しているように、なぜC言語が使用されたのかを理解しておきましょう。外国の関数が必要ない場合は、新しいCOBOLプロシージャを読み込んで書きましょう。終わり。

+0

コメントありがとうございました。他のプログラマーに見直して、回答とオプション(ここで言及しているものを含みます - 明示的にCOBOLでの書き換えとCサブルーチンの移植)を検討した後、新しいコードの量は膨大ではないと判断しました。それを幹線内に保つことによって処理する。 – DaveL