GUIビルダ(PowerCOBOL)で作成したアプリケーションを実行すると、「例外:スタックオーバーフロー」というエラーが出力されます。

GUIビルダ(PowerCOBOL)で作成したアプリケーションを実行すると、「例外:スタックオーバーフロー」というエラーが出力されます。
実行中にスタック域が足りなくなってしまったことが原因です。プログラム構造上の問題がなければ、スタックサイズの指定値を増やしてアプリケーション(EXEファイル)を再作成してください。
GUIビルダ(PowerCOBOL)でアプリケーションを作成する場合、スタックサイズは指定値またはデフォルト値が設定されます。しかし、プログラムによっては、実行中にスタック域が不足する場合があります。設計外の呼び出しが繰り返されているといったプログラム構造上の問題がない場合は、スタック域を増やす必要があります。

スタックサイズを増やすには、GUIビルダ(PowerCOBOL)のビルド(リンク)時にスタックサイズを指定し、EXEファイルを再作成します。
以下は、GUIビルダ(PowerCOBOL)でスタックサイズを1MBにする例です。V3.0のGUIビルダ(PowerCOBOL)の場合は[オプション]メニューの[翻訳環境]-「結合オプション」、V4.0以降のGUIビルダ(PowerCOBOL)の場合はモジュールのリンクプロパティページのオプションに、次のように指定してください(1000000がスタックサイズでバイト単位に指定します)。
 /STACK:1000000

また、別のケースとして「再帰的なイベント呼び出し」によってスタックオーバーフローが発生した場合、上記のように単にスタックサイズを大きくしただけでは、問題は解決されません。「再帰的なイベント呼び出し」とは、TextBoxコントロールのChangeイベントの中で、そのTextBoxコントロールのTextプロパティに値を設定しているような場合、Changeイベントが再び発生し、無限ループしてしまう現象です。したがって、スタックオーバーフローが発生した場合には、「再帰的なイベント呼び出し」をしている手続きを記述していないか、確認またはデバッグが必要になることがあります。
製品・サービス情報
対象製品NetCOBOL
プラットフォームWindows x86
アンサー種別 運用/保守
このページの先頭へ