• 締切済み

COBOL97,Power-COBOLでの効率の良い書き方

汎用機のCOBOLでは添字にはCOMP-1を使うと効率が良いとか、ベースレジスタ削減のために 01レベルのワーク領域の数を減らす(少数の01レベルの配下にワーク領域を定義する)などがマニュアルに記載されていました。 ところがパソコン/サーバ上で動くCOBOLの場合は、計算用にCOMP-3を使うと処理効率が悪い、計算用ではCOMP-3よりはDISPLAY項目、さらに良いのはCOMP-5である、などと言う記事もあり汎用機COBOLとはずいぶん違うようです。実際のところ、パソコン/サーバ上で動くCOBOLで実行時の効率が良いプログラムを書くためには、どのような事に注意すれば良いのでしょうか?

みんなの回答

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.3

>>パソコン/サーバ上でのベストな手法が明確になると良いのですが・・・。 「ベストな手法」は、どういう評価ポイントで判断するか?が変われば、その結果も変わると思いますよ。 質問にある「実行時の効率」っていう意味では、経験されたように、データファイルが小さくなるようなコーディング方法は、有効でしょうね。無駄にI/Oしないで、できるだけメモリー上で処理するとか、効果的なアルゴリズムを採用するなど、とりあえずは、ごく普通の方法が思いつきます。 でも、そういうCOBOLのコーディング上の問題よりも、業務系なら、統合システムに発展する場合のメンテナンス性など考えて、データベースの利用を先に考えることが多いかも?で、そうなると正規化を中心にすすめながらも、あえて処理効率を重視し、どこを「正規化くずし」にするか?って考えるほうが、処理効率に与える影響は大きいと思えます。 データベースシステムは、私たちが下手に考えるよりも、もっと高度なアクセス手法と、整合性や障害対策などを実現してくれていますからね。 感覚的には、COBOLのコーディング手法よりも、データベースまわり、ネットワークやHDDの性能とか、耐障害性などが、より重要に思えます。コーディングの手直しは、リリース後でも可能だけど、それ以外の手直しは、困難なことが多いですから。

neko1963
質問者

お礼

御回答ありがとうございます。 但し、今回はデータベース、ネットワーク、HDDなどのシステムにまで範囲を広げずに、、あくまでもCOBOLでのプログラミング/コーディングに限定させていただけると幸いです。 汎用機であればメーカのマニュアルに明記されていた内容であり、昔のプロジェクト内ではコーディングルールとして規定していました。パソコン/サーバベースでのCOBOLでは、どのような規定がなされている(あるいは、どのような規定があり得る)のか事例が知りたいのですが。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

以下が参考になるのでは? http://q.hatena.ne.jp/1171405263 >>実際のところ、パソコン/サーバ上で動くCOBOLで実行時の効率が良いプログラムを書くためには、どのような事に注意すれば良いのでしょうか? 昔は、汎用機やオフコン、パソコンでCOBOLのアプリを書いていました。ハードレベルのことは、よくわかりませんが、記載されていたとおりだという気がしますね。でも、メモリーや処理効率が悪とはいっても、人間のレベルからしたら、気にしないでもいい程度だと思いますよ。 個人的には、メモリ効率等よりも汎用機・オフコンなどとソースの共用ができるほうが良いと思うので、汎用機に合わせたいところですが、汎用機で使う予定が無いならパソコン・サーバ上でベストな指定でもいいかもしれませんね。 そして、数値計算(特にお金の計算)では、10進で行われるCOMP-3が計算誤差やデバッグの容易さで有利だと思えます。

neko1963
質問者

お礼

御回答ありがとうございます。 昔は汎用機で他社の担当者が作ったCOBOLプログラムを改修したりしましたが、データ量が多い場合には数値のDISPLAY項目をCOMP-3に修正するだけでも容量削減(オープンリールMT7本から5本に削減)があり、その分のI/O時間・処理時間削減効果が大きかったです。 パソコン/サーバ上でのベストな手法が明確になると良いのですが・・・。

回答No.1

>パソコン/サーバ上で動くCOBOL というように一括りにはできません。 メーカーが出しているマニュアル、技術資料を参照するしかありません。

neko1963
質問者

お礼

御回答ありがとうございます。 >パソコン/サーバ上で動くCOBOL と括ってしまいましたが、実際に使用しているのは表題にあるようにふ富士通COBOL97,Power-COBOL(V6.1 L20)です。 なお、HTML版のマニュアルは参照しましたが、あまり詳しい事は記載されていませんでした。他に詳しい資料、Webページなどがあれば御回答いただけると幸いです。

関連するQ&A