当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2015年1月22日木曜日

Erl関数の戻り値に注意

こんにちは。4日連続での更新のために記事を書いてます(なんか、違う・・・)。
でも、さすがに疲れたので、連続更新は今日でおしまいです。

とりあえず、このボタンをクリックしてから始めましょう。
にほんブログ村 IT技術ブログへ


さて・・・
今日はErl関数についてです。
デザイナヘルプには「カレントスクリプトプロシージャ内でカレントエラーが発生した箇所の行番号を返します。」と出ています。
LotusScriptのプログラムでエラーが発生したところの行数を返してくれるというものですね。

例えば、下のようなプログラムを作成したとします。
Sub Click(Source As Button)
    On Error Goto ErrProc
   
    Dim inp As String
    Dim ret As Integer
   
    inp = "aaa"
    ret = Cint( inp )
    Msgbox ret
   
    Exit Sub
   
ErrProc:
    Msgbox _
    "エラー行数:" & Cstr(Erl) & Chr$(10) & _
    "エラー番号:" & Cstr(Err) & Chr$(10) & _
    "エラー内容:" & Error, _
    0 + 16, "エラー処理"
    Exit Sub
End Sub

このプログラムを実行すると、エラーになり、下図のようなダイアログが表示されます。

エラーメッセージ

ここで、エラー行数は「8」と出ています。
つまり、
ret = Cint( inp )
がエラーになっているという事ですが、ソースコードを見ても、まさにその通りだという事が分かります("aaa"という文字列を数値に直しなさいという命令ですから、エラーになります)。


この8というのは、1行目の「Sub Click(Source As Button)」から数えて8行目としているのですが、
Notes/Domino 8.5以降のデザイナの場合、注意が必要になってきます。
LotusScriptをEclipseベースにしている場合です。
同じソースコードをLotusScriptライブラリに記述してみました。
LotusScriptライブラリにサンプルコードを書いてみた

このプログラムを実行すると、やはり「8」行目でエラーが発生していますよ。というダイアログが表示されるので、8行目を見てみると・・・あれ???
何も書いてない行ですね。

従来の場合、「(Options)」と「(Declarations)」と各自作関数は分かれて表示されていたのですが、Eclipse版の場合、まとめて表示させることができるようになっています。

そのため、Erl関数の戻り値とソースコード上の行数が不一致になってしまうことがあります。
これくらいの簡単なソースなら、関数だけを表示することで行数を特定することもできますが、
ライブラリが複雑になってくると、探すのが難しくなってきます。
(実際に、(Declarations)なんかは表示する内容がEclipse版と従来版とで異なる個所があります)

どうしても探さないといけないという場合は、
[ファイル][プリファレンス]で「EclipseベースのLotusScriptエディタを使用」のチェックを外してからLotusScriptライブラリを表示しましょう。
従来の形で表示されるので、Erl関数の戻り値の場所を的確に探せるようになります。
LotusScriptエディタの種類を変更する

エラーの箇所が分かったら、またチェックを入れれば、Eclipse版に戻すことも可能です。
ちょっと面倒ですが、覚えておいた方が良いでしょう。

私はこの技?を便利に使ってます。


ということで今日はこの辺で・・・
明日の投稿はありませんので悪しからず。






【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: