FAQ

ERR=0007(メモリが足りません)が発生する

エラー07h(メモリが足りません)が発生するのは、何が原因ですか?

実行エラー07hは、ファイルを保存するメモリ領域が不足している場合や、プログラム動作用のメモリ領域が不足している場合に発生するエラーです。
プログラム動作用のメモリ領域とは、ワーク変数や、サブルーチンのスタック用の領域です。

具体的な原因としては、以下が考えられます。

[原因1] プログラムファイルやデータファイルを保存するメモリ領域が不足している場合
  プログラムファイル容量、データファイル容量を見直してください。
メモリが十分足りているように見える場合は、こちらをご覧ください。
 
[原因2] プログラムが使用しているワーク変数が不足している場合
 

ワーク変数とは、DIM,PRIVATE,PUBLIC,STATIC,GLOBALで宣言された変数、または宣言なしで使用している変数です。
ワーク変数として使用できる変数領域については、こちらをご覧ください。
使用している変数をレジスタ変数として宣言して、ワーク変数を減らすことで、対処してください。

 
[原因3] ユーザ定義関数やサブルーチンが使うスタック領域が不足している場合
 

DEF FN、SUB、FUNCTIONといったユーザ定義関数や、GOSUBでサブルーチンを呼び出す場合、これらを呼び出した行へ戻るために、その場所をスタック領域に記憶しています。
また、ユーザ定義関数呼び出し時に確保される動的なメモリ(呼び出し時の引数、戻り値、関数内でローカル的に確保される変数) もスタック領域に記憶しています。
関数の中から、別の関数やサブルーチンを呼び出すと、その戻り場所や動的メモリが次々にスタック領域に確保されていきますので、その繰り返し(ネスト)が多いと、実行エラー07hとなります。
アルゴリズムのミスにより、関数(サブルーチン)から関数(サブルーチン)の呼び出しが膨大となって発生するケースがほとんどですので、プログラムの流れにそのような問題がないか確認し、排除してください。

お問合せ

QBdirect

まだ会員に登録されていない方

本会員専用サイトにおけるサービスは、会員登録していただいた上でのみご利用いただけます。

新規会員登録