コンパイルエラーメッセージ
この章では、LotusScript® 言語のコンパイルエラーメッセージについて説明します。
D004 DELETE は有効ではありません: <名前>
T005 INCLUDE の入れ子が深すぎます
F001 ソースファイルの行が多すぎます
ソースファイルの行が多すぎます。
I023 配列宣言の後の OPTION BASE が不正です
暗黙の宣言の後では OPTION DECLARE は使えません
T003 INPUT/OUTPUT ステートメントに指定した項目が多すぎます
以下のいずれかに 255 より多い要素が指定されています。
I061 OPTION BASE の値が不正です
このエラーの原因として、次のいずれかのことが考えられます。
T004 ON...GOTO ステートメントに指定したラベルが多すぎます
子クラス SUB NEW の引数が親クラス SUB NEW の引数と一致していません
N003 以前に宣言した名前です: <名前>
現在のスコープですでに宣言された名前が、同じネームスペースでもう一度宣言されています。同じネームスペースにある名前はスコープの中で一度しか宣言できません。各モジュール、サブルーチン、関数、プロパティ、クラス、ユーザー定義の型には、個別のスコープがあります。LotusScript には、3 つの別々のネームスペースがあります。
C007 クラスはこのクラスの親ではありません: <クラス名>
このエラーが起こったときは、以下のいずれかの条件が考えられます。
I020 クラスまたは型の名前が不正です: <名前>
ユーザー定義のクラスまたはデータ型として、Object という単語が使用されています。Object は LotusScript の予約語です。
P013 シンボルは他のモジュール内で PUBLIC として宣言されています: <名前>
M008 メンバーはサブプログラムではありません: <メンバー名>
ベースクラスのメンバ変数を参照するのに「ドットドット」表記が使用されています。この表記は、ベースクラスのメンバ関数、サブルーチン、プロパティを参照するときにのみ正当です。ベースクラスのメンバ変数を参照すると不正となります。
I016 モジュールレベルの実行可能コードが不正です
実行可能なステートメントがモジュールレベルで現れました。LotusScript を動かす製品は、モジュールレベルに実行可能なステートメントを認めていません。
I033 PRIVATE クラスまたは型の PUBLIC のインスタンスが不正です: <インスタンス名>
I050 名前の接尾辞の型が不正です: <名前>
以下の 1 つに関してデータ型を宣言する接尾辞が使用されています。
I063 ISELEMENT の引数はリストまたは VARIANT ではありません: <名前>
I040 PUBLIC または PRIVATE の範囲が不正です: <名前>
I010 コンストラクタ節が不正です: <サブルーチン名>
P001 親クラスの SUB NEW に引数があります。子クラスの SUB NEW にも引数が必要です: <クラス名>
I060 宣言の後の USE または UseLSX ステートメントが不正です
M007 親クラス内で宣言しているメンバです
派生クラスで、ベースクラスのメンバ変数、サブルーチン、関数、プロパティと同じ名前を使用してメンバ変数を宣言しようとしました。これは許可されません。
E006 イベントのハンドルは LotusScript の SUB でなければいけません: <ハンドラ名>
M009 PUBLIC クラスまたは型のメンバーは PRIVATE クラスまたは型のインスタンスです: <メンバー名>
F006 FORALL の別名変数は以前に宣言されています: <名前>
Forall ステートメントの参照変数に Dim ステートメントを使用することはできません。以下に例を示します。
F004 FORALL の別名変数はすでに使われています: <変数名>
C006 CASE ELSE は SELECT ステートメントの最後の CASE でなければいけません
T007 TYPE の宣言にメンバがありません
D003 外部サブプログラムの宣言はクラス定義の内部ではできません
I051 FORALL ターゲットに配列またはリストの要素は使えません
I058 プロパティの使い方が不正です: <プロパティ名>
名前を付けられたプロパティを以下のいずれかとして使用しようとしました。
引数 <引数名> の型が不正です。(イベントハンドラ <イベントハンドラ名>)
M004 配列の最大次元 (8) を超えています: <配列名>
8 より大きい次元を持つ配列が宣言されたか、配列の参照に 8 を超えるサブスクリプトが使用されました。配列は 8 次元までしか持てません。
I001 配列の境界が不正です: <配列名>
このエラーの原因として、次のいずれかのことが考えられます。
A003 配列サイズは最大値を超えています: <配列名>
合計のサイズが許容範囲を超えた配列が宣言されました。配列のサイズの最大値は 65,536 バイト (64K) です。
I043 指定した配列の境界が不正です: <配列名>
サブルーチンまたは関数の宣言のパラメータの指定時に、配列の境界が含まれました。配列であるパラメータは空のカッコのみを含みます。
D002 宣言は有効な TYPE の範囲ではありません: <名前>
ユーザー定義型のメンバとして以下の 1 つが宣言されています。
S006 TYPE ブロックのステートメントが不正です: <キーワード>
S005 CLASS ブロックのステートメントが不正です: <キーワード>
T008 TYPE のメンバーに TYPE 自身のインスタンスを宣言しました: <インスタンス名>
ユーザー定義型のインスタンスが宣言されましたが、そのインスタンスはそれ自身のメンバとして定義されています。ユーザー定義型の定義にはメンバとして別のユーザー定義型のインスタンスを含めることができますが、それ自身のインスタンスを含めることはできません。以下に例を示します。
メモリ不足です。
このエラーメッセージを引き起こした操作を実行するには、十分なメモリを解放しなければなりません。コンピュータのメモリを解放するには、次の方法があります。
S003 データサイズはこのスコープで 64K を越えることはできません
スコープ (モジュールかクラス) 中のデータが 64K バイトの制限を超えています。
S003 データサイズはこの範囲で 32K を超えることはできません
スコープ (サブルーチン、関数、またはプロパティ) 中のデータが 32K バイトの制限を超えています。
I008 定数式が不正です: <CONST 名>
A002 宣言に不正な引数があります: <サブルーチン名>
このエラーの原因として、次のいずれかのことが考えられます。
U001 ラベルが定義されていません: <ラベル名>
コンパイルしたばかりのサブルーチン、関数、プロパティが、定義されていないラベルへの参照を含んでいます。エラーメッセージの行番号は、エラーを起こしたプロシージャの終わりを示す End Sub、End Function、End Property ステートメントです。ラベルはそれが参照されるのと同じスコープ内で定義されなければなりません。
I011 引数に対するデータ型が不正です: <引数名>
サブルーチンまたは関数の宣言でパラメータとして固定長の文字列が使用されています。固定長文字列はサブルーチンや関数のパラメータとして正しくありません。
T002 引数が多すぎます: <サブプログラム名>
サブルーチンまたは関数に 31 個の制限を超えるパラメータが宣言されています。サブルーチンまたは関数に指定できるパラメータの最大数は 31 です。
C005 サブクラスができません: <クラス名>
製品固有のクラスが派生クラスのベースクラスとして指定されています。製品クラスを派生クラスのベースクラスとして使用することはできません。
D005 親が PRIVATE のとき、PUBLIC クラスは指定できません: <クラス名>
I056 NEW または DELETE の使い方が正しくありません
D006 この範囲内で DIM の宣言が必要です
モジュールレベルで Dim、Public、Private キーワードなしで変数が宣言されたか、プロシージャ内で Dim または Static キーワードなしで変数が宣言されました。これらのキーワードのいずれかが必要です。
I029 PRIVATE の宣言は不正です: <名前>
I032 PUBLIC の宣言は不正です: <名前>
N006 名前は他のものとして前方宣言しています: <名前>
D007 前方宣言が重複しています: <名前>
S009 記憶領域またはスコープは前方宣言と一致していません: <サブプログラム名>
R002 リターンタイプは前方宣言と一致していません: <関数名>
N016 引数の数は前方宣言と一致していません: <サブプログラム名>
A001 引数は前方宣言と一致していません: <引数名>
I019 Function の戻り値の型が不正です: <関数名>
M011 親では他のクラスのメソッドが宣言されています: <メソッド名>
M010 メソッドの署名は親のメソッドと一致していません: <メソッド名>
P006 PROPERTY GET と PROPERTY SET は記憶領域とスコープが一致しなければいけません
以下のいずれかが発生しました。
I031 プロパティの型が不正です: <プロパティ名>
P005 PROPERTY GET と PROPERTY SET は同じデータ型を指定してください
P011 親では他のクラスのプロパティが宣言されています: <プロパティ名>
P010 プロパティの型は親のプロパティと一致していません: <プロパティ名>
I027 値渡しが不正です: <引数名>
以下のいずれかが起こりました。
I044 STATIC が不正です: <名前>
I018 外部の引数が不正です: <引数名>
C 関数が宣言され、そのパラメータの型が固定長文字列またはリストとして指定されました。C 関数のパラメータは固定長文字列やリストとして指定できません。
I009 型のインスタンスが不正です: <インスタンス名>
ユーザー定義型の変数の宣言、またはその変数に値を代入するステートメントで、キーワード New が使用されました。ユーザー定義型の変数の参照にはキーワード New を使用できません。以下に例を示します。
C010 クラスまたは型名が見つかりません: <名前>
既存のクラスやユーザー定義型が要求されるところで、クラスや型を参照しない名前が使用されました。以下のいずれかのコンテキストでこの名前が使用されました。
I034 指定した範囲が正しくありません
I014 DEFtype ステートメントが宣言の後にあります
D010 指定した範囲が重複しています
L001 ラベルはサブプログラム以外不正です
ラベルがモジュールレベルで定義されました。ラベルはモジュールレベルでは定義できません。モジュールレベルで実行可能なステートメントはモジュールがコンパイルされるときに実行され、それから破棄されます。したがって、モジュールレベルでラベルを付けられたステートメントに制御は移りません。
E004 エラーの数値は INTEGER の定数でなければいけません: <名前>
E003 エラーの数値は INTEGER でなければいけません
I022 ON ERROR ステートメントが不正です
S008 サブプログラムのステートメントが不正です
モジュールレベルで不正なステートメントが使用されています。このようなステートメントには、以下のものがあります。
N009 製品クラスではありません: <名前>
以下のステートメントでユーザー定義のクラス名が使用されています。
N010 製品クラスのインスタンスではありません: <名前>
N014 イベント名ではありません: <名前>
N012 SUB または FUNCTION の名前ではありません: <名前>
関数かサブルーチンの名前が必要なステートメントで、サブルーチンでも関数名でもない名前が使用されました。このステートメントは以下のいずれかです。
I035 REDIM が不正です: <名前>
I039 RESUME ステートメントが不正です
F002 FOR のカウント変数はすでに使われています: <名前>
F005 FORALL の別名変数は同一のデータ型ではありません: <名前>
F003 FOR の制御変数はスカラー変数でなければいけません: <名前>
I048 FORALL の別名変数に不正な接尾辞があります: <名前>
PUBLIC のメンバーではありません: <名前>
I038 FORALL の別名変数の参照が不正です: <名前>
T010 接尾辞の型はデータ型と一致していません: <名前>
宣言された型とは異なるデータ型を意味する接尾辞を付けて、変数、定数、関数、プロパティのいずれかが参照されています。変数が Variant 型として宣言されている場合、その変数への参照に接尾辞を含むことはできません。
N008 メンバーではありません: <名前>
クラスかユーザー定義型の存在しないメンバが参照されました。以下に例を示します。
V001 宣言されていない変数です: <名前>
I042 1 行の IF が不正です
N001 名前は FOR の制御変数と一致していません: <名前>
N013 配列、リスト、コレクションまたは VARIANT ではありません: <名前>
M006 ME はクラスメソッドの外側では使えません
クラスのプロシージャの外側でキーワード Me が使用されています。キーワード Me はクラスの内側だけで使用します。クラスのメンバを参照するときは、そのクラスの定義で Me を使用します。
.. 001 .. はクラスメソッドの外側では使えません
「ドットドット」構文がクラスのプロシージャの外側で使用されました。「ドットドット」構文はクラスのプロシージャの内側でのみ有効です。「ドットドット」表記は、ベースクラスのプロシージャと同じ名前のプロシージャを派生クラスが持っている場合に、そのプロシージャを参照するときに使用します。例を次に示します。
R001 参照は 1 つの添字を含む必要があります: <名前>
リストかコレクションの参照が、サブスクリプト (添字) なしか、複数のサブスクリプトを含んでいます。リストかコレクションの参照は正確に 1 つのサブスクリプトを含まなければなりません。
I026 カッコの参照が正しくありません: <名前>
カッコが後ろに続く名前の参照が指定されましたが、その参照は配列、リスト、コレクション、これらの参照を含む Variant 型、関数のいずれでもありません。
W005 配列の添字の数が不正です: <配列名>
配列参照のサブスクリプトの数が、配列に対して定義された次元と一致していません。
N015 インスタンス名ではありません: <名前>
名前の後ろにドットがありますが、それはオブジェクト参照変数、オブジェクトの参照を含む Variant 型変数、ユーザー定義型の変数ではありません。この 3 種類のいずれかの変数にのみ「ドット」表記を使用します。
B001 REDIM ステートメントの中に境界を指定してください: <配列名>
V002 要求した変数: <名前>
N007 製品クラスのインスタンスに付けた名前は有効ではありません
以下のステートメントのいずれかで、正しくないコンテキストで製品のオブジェクトの名前が使用されました。
I036 不正な参照です: <名前>
値を含まず、参照しない名前が、値を含むか参照するかのように使用されています。以下に例を示します。
N017 数値がオーバーフローです
N018 数値がアンダーフローです
I021 数値定数が正しくありません
既定のデータ型または指定されたデータ型に一致しない値を代入して、数値定数を定義しようとしました。以下に例を示します。
I030 製品の定数が不正です: <名前>
製品によって認識されない製品の定数が指定されています。
N005 名前が長すぎます: <名前>
指定された名前が長すぎます (エラーメッセージでは縮められています)。LotusScript の名前の最大長は 40 文字です。
T001 トークンが長すぎます
LotusScript のトークン (固有の意味を持つ文字列) の最大長が文字列定数の最大許容長 (16K 文字) とその区切り文字の和を超えることはできません。
D001 宣言は接尾辞とデータ型を含むことはできません: <名前>
I045 文字列長の定数が不正です: <名前>
固定長文字列の長さが以下のいずれかとして指定されています。
I055 配列またはリストの宣言で NEW の使い方が正しくありません: <名前>
配列かリストの宣言でキーワード New が使用されています。これは正しくありません。その型がクラスである配列やリストでは、要素は個々に構成されなければなりません。
I062 INCLUDE のファイル名は正確な文字列でなければいけません。
C004 インクルードファイルが開けません: <ファイル名>
このエラーの原因として、次のことが考えられます。
U007 %REM ブロックが終了していません
U009 文字列定数が終了していません
ある 1 行で引用符で囲まれたリテラルの終わりを示す二重引用符が省略されています。二重引用符を使用する場合、開始と終了の引用符を同じ行内に記述する必要があります。以下に例を示します。
U006 複数行の文字列が終了していません
複数行にまたがる文字列の終わりを示す縦線 (|) または閉じ中括弧 (}) が省略されているか、一方の区切り文字として中括弧を使用し、それに対応する他方の区切り文字として縦線が使用されています。以下に例を示します。
U008 大カッコの参照が終了していません
大カッコの参照が同じ行で閉じ大カッコ (]) で終了していません。大カッコは製品の項目名を参照するために使用されることがあります。
I005 継続文字の後に不正な文字があります
ある行で行継続文字 ( _ ) の直後にコメント文字 (') 以外の文字が付いています。行継続文字は、コメント文字で始まる任意のコメントを除いて、行の最後の文字でなければなりません。
I007 %INCLUDE 命令後の文字が不正です
クラスのインスタンスに SET の割り当てが必要です (メッセージの説明)
変数にオブジェクト参照を割り当てようとしましたが、Set キーワードが省略されています。オブジェクト参照では、ユーザー定義クラスのインスタンス、製品のオブジェクト OLE オートメーションオブジェクト、または定数 NOTHING を参照できます。オブジェクト参照の代入では Set キーワードが必要です。以下に例を示します。
U005 <キーワード> ブロックが終了していません
以下のブロックステートメントのいずれかの終わりを示すキーワードが省略されています。
Unexpected: <token>; Expected: <token>
コンパイラが予期しない言語要素に遭遇しました。
パーサースタックがオーバーフローしました (Parser stack overflow at): <トークン名>
U004 ステートメントが分かりません
コンパイラがエラーメッセージに示されている行を解析できませんでした。
M005 コンパイルエラーが最大数に達しました。
最大 20 のコンパイルエラー数に達し、コンパイルが停止しました。
P009 PROPERTY SET が定義されていません: <プロパティ名>
P007 PROPERTY GET が定義されていません: <プロパティ名>
D009 オプションが重複しています
M012 引数がありません: <関数名>
このエラーの原因として、次のいずれかのことが考えられます。
E007 引数リストが完全に終っていません: <関数名>
組み込み関数の最後の省略可能な引数の前にカンマが使用されていますが、引数が提供されていません。以下に例を示します。
W002 引数の数が不正です: <名前>
このエラーの原因として、次のいずれかのことが考えられます。
L004 LISTTAG の引数は FORALL の別名変数ではありません
T009 データ型が一致しません: <名前>
このエラーの原因として、次のことが考えられます。
I003 引数の BYVAL が不正です: <サブプログラム名>
I047 参照先の TO が不正です: <名前>
このエラーの原因として、次のことが考えられます。
I002 不正な BYVAL です
このエラーの原因として、次のことが考えられます。
ラベルが重複しています: <ラベル名>
同じスコープ内に、エラーメッセージに示されるラベルが定義されています。
I017 EXIT <EXIT の型> が不正です。
I025 宣言の後の OPTION PUBLIC が不正です
I052 ERASE の使い方が不正です
S001 SET はクラス定数の割り当てのみに使用されます
I027 値渡しが不正です
値渡しできない引数をカッコで囲むか、ByVal キーワードを外部 C 関数の引数に使用するかのいずれかの方法で渡そうとしました。
W004 クラスコンストラクタに対する引数の数が不正です: <クラス名>
I037 配列またはリストのリファレンスが不正です: <配列またはリスト名>
配列またはリストの名前が不正な文脈で使用されています。不正な文脈には、変数 X に対する以下のものが含まれます。この場合、X は配列かリストの名前です。
I049 キーワードまたは接尾辞の型が不正です: <キーワード>
LotusScript の組み込み関数の名前に不正なデータ型接尾辞が使用されています。接尾辞 $ を使用できる LotusScript の組み込み関数もありますが、それらの関数に対する他のデータ型の接尾辞は正しくありません。他の関数の名前では、末尾にデータ型の接尾辞を付けることはできません。以下に例を示します。
C012 コンパイラステートメントスタックがオーバーフローしました: <トークン名>
M001 最大の利用できるコードサイズを越えています
コンパイルしているモジュールが 64 KB を超える実行可能コードを含んでいます。
M001 最大の利用できるデータサイズを越えています
コンパイルしているモジュールが 64 KB を超えるデータを含んでいます。
M003 最大の利用できるシンボルテーブルサイズを越えています
コンパイルしているモジュールが 64 KB を超える記号 (名前) を含んでいます。
P012 PUBLIC はこのモジュール内では使えません
I004 CALL が不正です: <サブルーチン名>
E001 カッコが空ではいけません: <名前>
Variant 型の変数の参照、または未定義の関数やサブルーチンの参照 (LotusScript では、暗黙的に宣言された Variant 型の変数の参照として解釈されます) で空のカッコが使用されています。以下に例を示します。
I057 カッコの使い方が正しくありません
引数リストをカッコで囲んでサブルーチンか関数を呼び出しました。このようなカッコの使い方が有効なのは、次の場合に限られます。
C008 BIND で指定していないクラスです: <名前>
I015 命令が不正です
このエラーが起こったときは、原因として次のいずれかが考えられます。
U010 %IF, %ELSEIF または %ELSE 命令が終了していません
スクリプトに %If 命令が含まれていますが、対応する %End If がありません。以下に例を示します。
I006 命令後の文字が不正です
L003 LIB 名は文字列定数でなければいけません
U013 USE または USELSX 名は文字列定数でなければいけません
E005 EVALUATE の引数は文字列定数でなければいけません
I041 参照の 2 番目のカッコが不正です
ネストされた配列、リスト、コレクションの要素を参照しようとしました。以下に例を示します。
S007 ステートメントはサブプログラム内で不正です
LotusScript のプロシージャ内で次のいずれかのステートメントを使用しました。
I059 UNICODE または LMBCS のキーワードの使い方が不正です
U003 UNICODE と LMBCS の文字列は BYVAL で宣言していなければいけません
T006 WITH の入れ子が深すぎます
一連の With ステートメントを 17 以上の深さでネストしようとしました。これは許可されません。
I054 識別子のエスケープ文字の使い方が不正です: <名前>
以下の許可されていない文脈でエスケープ文字が使用されています。
I053 拡張文字の使い方が不正です
行末にエスケープ文字を使用しました。これは許可されません。 以下に例を示します。
EVALUATE マクロにエラーがあります (メッセージ 1)
N004 このスコープ内で以前に参照した名前です
変数が外側のスコープで宣言されています。次に、この変数が内側のスコープで参照され、そのスコープ内で宣言されています。以下に例を示します。
W003 イベントハンドラの引数の数が違います: <サブルーチン名>
P008 プロパティは読み込み専用です: <プロパティ名>
インデックスの配列サブスクリプトまたはコレクションがありません (Missing array subscript or collection index for:): <名前>
このエラーの原因として、次の 2 つのことが考えられます。
M013 引数が不正です: <クラス名>
M014 配列の境界に失敗しました: <配列名>
L002 LEN の引数は変数または文字列式でなければいけません
M016 インデックスのコレクションに失敗しました: <名前>
コレクションの参照に空のカッコが含まれています。これは許可されません。 空のカッコを削除するか、正しいサブスクリプトを挿入してください。カッコを削除するとコレクション全体を参照しますが、サブスクリプトを含めるとコレクションの 1 つの要素を参照します。
M017 ISELEMENT の引数に対するサブスクリプトのリストに失敗しました: <リスト名>
C009 コレクションの項目に指定することはできません
コレクションの項目に値を割り当てようとしました。コレクションの項目を得ることはできますが、値は代入できません。
C003 CLASS または TYPE の宣言は前にできません
C009 CLASS または TYPE の宣言は制御ブロックの内部でなければいけません
P003 手続きの宣言は制御ブロックの内部でなければいけません
P004 製品クラスは New メソッドがありません: <クラス名>
C011 コレクションの項目は例ではありません
インデックスが付いたコレクションの項目が、それがオブジェクトであるかのように参照されていますが、オブジェクトではありません。例えば、iColl が整数のコレクションである場合、次のステートメントは不正です。
この範囲内の宣言が不正です: <キーワード>
このエラーの原因として、次のいずれかのことが考えられます。
イベントハンドラ <ハンドル名> 内の戻り値の型が不正です。
イベントの戻り値のデータ型と関数の戻り値のデータ型が一致していません。
E008 イベントハンドルは FUNCTION でなければなりません
オブジェクトに対するイベントハンドラは、必ず関数にしてください。登録したプロシージャはサブルーチンです。
E009 イベントのハンドルは SUB でなければいけません
オブジェクトのイベントハンドルは、サブルーチンでなくてはなりません。ユーザー定義のプロシージャは関数になります。
C013 競合のオプションです
PROPERTY GET と SET の引数が一致していません: <プロパティ名>
対応する Get と Set ステートメントのパラメータに同じデータ型が割り当てられていません。
引数の数が PROPERTY GET と SET に一致していません: <プロパティ名>
プロパティに対する Get と Set のパラメータ数が異なります。
プロパティの署名が親のプロパティと一致しません: <プロパティ名>
接尾辞が必要です: <名前>
データ型の接尾辞を付けて暗黙宣言された変数が、接尾辞なしで使用されています。変数が接尾辞付きで暗黙宣言されたときは、後続の参照には必ずその接尾辞が含まれていなければなりません。接尾辞のない参照は、宣言済み変数の暗黙の宣言とみなされます。この場合、変数が 2 度宣言されたことになり、正しくありません。
SUB にしてください: <プロシージャ名>
Initialize または Terminate という名前の付いたモジュールレベルのプロシージャは、サブルーチンでなくてはなりません。Initialize はモジュールがロードされるときに、Terminate はモジュールがアンロードされるときに実行されます。
親トピック:
LotusScript 言語