Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報
[掲示板に戻る全部  1-  最新50
1 データ部1単位領域の大きさ
640Xi 2010-3-24 18:14  [返信] [編集]

いつもありがとうございます。

1点教えて下さい。
COBOLプログラムをコンパイルすると、
「F N0004 データ部の1単位領域の大きさが
64K バイトを超えた」というFATALエラーが発生しました。

本メッセージの通り、データ部は非常に大きいのですが、
どの項目も外すに外せない項目なので苦慮しています。

何とかコンパイルを通したいのですが、裏技などありましたら
教えて下さい。

2 Re:データ部1単位領域の大きさ
富山清風 2010-3-24 19:21  [返信] [編集]

苦労していますね。

小生は下記の方法により対応していますが、
640Xiさんの場合の当てはまるかどうかは、わかりませんが・・・

内容:
もともと、「TBL-AREA」だったのですが「TBL-AREA-1」、「TBL-AREA-2」、・・・「TBL-AREA-6」と分けて対応しています。
01レベル1ヶのバイト数が64Kを超えないように分割しています
参考になれば幸いですが・・・

以上



000490 01  TBL-AREA-1.
000500     03  T-O-1           OCCURS 1008.
000510       05  T-GYO         PIC  9(04).
000520       05  T-NO          PIC  9(06).
000530       05  T-SRKB        PIC  X(03).
000540       05  T-TYUNO       PIC  X(07).
000550       05  T-JYUDT       PIC  9(08).
000560       05  T-KTCD        PIC  X(13).
000570       05  T-KTCD-EDIT   PIC  X(18).
000580 01  TBL-AREA-2.
000590     03  T-O-2           OCCURS 1008.
000600       05  T-KTNM        PIC  X(30).
000610       05  T-BHCD        PIC  X(30).
3 Re:データ部1単位領域の大きさ
640Xi 2010-3-24 20:05  [返信] [編集]

富山さん、早速のレスありがとうございます。



私も、富山さんと同様に、01レベル1ヶのバイト数が

64Kを超えた場合は、作業領域を分割しています。

(コンパイルエラーが出てから対応していますが。。)



その際のエラーメッセージは、

「F F0041 単位領域の大きさが 64K バイトを超えている」

です。

このエラーメッセージの場合は、どの作業領域がサイズオーバー

かを、コンパイラが行潤・ナ教えてくれます。



しかし、今回のエラーメッセージ、

「F N0004 データ部の1単位領域の大きさが 64K バイトを超えた」

は様子が違い、どの作業領域がサイズオーバーなのか教えてくれません。



もしかしたら、確認漏れで01レベル1ヶのバイト数が64Kを超えている

のかも、と、見直してみましたが、制限を超えてはいませんでした。



DATA部全体で 64K を超えるとNGなのか?とも思いましたが、

それでは、他のプログラムも余裕で制限を超えてしまいます。



同じようなエラーメッセージですが、2種類あるところから、

意味合いが違うような気もします。



勉強不足ですみませんがヒントでも構いませんので

お気づきの点を教えていただければと思います。

4 Re:データ部1単位領域の大きさ
桃太郎 2010-3-25 11:59  [返信] [編集]

こんにちは、桃太郎と申します。



もしかしたら、そのプログラムは入力系とかでPROCEDUREのステップ数の

多いものではないですか?



そうだとしたら、PROCEDUREの中で64Kバイトを超えている可能性が考えられます

もしそうだとしたら区分化機能で回避することが出来ます。



PROCEDUREの中をSECTION文で区切るだけです、

詳しくはCOBOL85プログラミング手引書の区分化機能の項をご覧下さい。



参考になれば良いのですけど?

5 Re:データ部1単位領域の大きさ
640Xi 2010-3-25 21:31  [返信] [編集]

桃太郎さん、ご回答ありがとうございます。



ご指摘の通り、入力系で、ステップ数が多いものです。

区分化機能は設定していたのですが、もっと細かく区分してみます。



後程、結果を報告します。ありがとうございました。

6 Re:データ部1単位領域の大きさ
温泉好きのうさぎ 2010-3-26 0:53  [返信] [編集]

COBOLの時代なら手続き部での区分化は必要でしたが、COBOL85になってからは、64KBを越えたらコンパイラが自動的に区分化してしまうので、明示的にSECTIONで分ける必要は無いはずです。



従って、#LINKでオーバレイなど特殊なリンク方法をとらないのであれば、手続き部のSECTIONは全て取り払って、区分化をコンパイラにまかせてしまったほうが良いと思います。
7 Re:データ部1単位領域の大きさ
640Xi 2010-3-26 9:58  [返信] [編集]

桃太郎さん、おはようございます。

区分化を再度見直し、細分化しましたところ、
エラーがなくなりました。

ありがとうございました。

8 Re:データ部1単位領域の大きさ
640Xi 2010-3-26 10:03  [返信] [編集]

温泉好きのうさぎさん、おはようございます。



本プログラムは、COBOL74で作成されております。

本来であれば、COBOL85へ組み替えしなければいけませんが、

私の怠慢でできておりません。



実は、温泉好きのうさぎさんのご回答の下記仕様を知りませんでした。

とても魅力的ですので、本プログラムと、他にCOBOL74で構築している

プログラムをCOBOL85へ組み替えていきます。



>「COBOL85になってからは、64KBを越えたらコンパイラが自動的に区

> 分化してしまうので、明示的にSECTIONで分ける必要は無い」



有益な情報をありがとうございました。



9 区分化の件、
桃太郎 2010-3-26 15:39  [返信] [編集]

温泉好きのうさぎさん、こんにちは。



3100時代にCOBOL85で64KBを超えたらエラーになっていたので、

そう思っていましたが、温泉好きのうさぎさんのコメントを読んで

改めて現在の600で同じプログラムをSECTION文を外して

同じパラメーターでコンパイルしてみたところ、

エラーが出ないですね、

良いことを教えて頂き、ありがとう御座います。



長年携わっていると、思い込みと惰性で仕事をしているものですから(^^ゞ



[掲示板に戻る全部 前100 次100 最新50
BluesBB ©Sting_Band