いよいよ今回から、QR コードを作成するプログラムをノーツで作成します。作業は、前回発見した、Excel VBA で記述された”モジュール”を LotusScript に移植するところから始めます。
スクリプトライブラリの作成
まずは、LotusScript のスクリプトライブラリ lsQRCode を新規作成して、Excel VBA のモジュールの中身を丸ごとコピペします。
当たり前ですが、エラーが発生します。
これらを順につぶしていきましょう。
Optional キーワードは使えない
このキーワードは、関数の引数の指定を任意にする機能を持ちます。このキーワードを設定すると、呼び出し元の関数で引数を省略しても、文法のエラーとはなりません。
例えば、NotesView クラスの GetDocumentByKey メソッドで、検索方式を完全位置させるか指定する2つ目の引数は、省略可能となっています。このような機能を提供するのが Optional キーワードです。
Set notesDocument = notesView.GetDocumentByKey(keyArray [, exactMatch%]) |
LotusScript では、このキーワードはサポートされていません。以前、Domino Ideas Portal に要望を投稿したのですが、残念ながら No Plans to Implement の判定を受けました。
Support optional keyword in Lotus Script
対応してもらえると、ライブラリ構築の柔軟性も増すし、便利な機能だと思うのですが、残念でなりません...
さて、本題に戻ります。今回の作業では、使用できないものは仕方がないので、Optional キーワードを削除します。要は引数の指定が必須となるということですね。
上記 3 か所以外に、8 か所ありますで、検索/置換機能を利用してすべて消去します。
ByRef キーワードは使えない
上記、対応が終わると、次のエラーが発生します。エラーの原因は ByRef です。
このキーワードは、引数を参照渡しと指定します(値渡しの場合は ByVal)。LotusScript では、ByRef キーワードは利用できません。ただし、省略した(ByValをしていない)場合のデフォルトが値渡しです。よって、この問題は、ByRef を削除するだけの対応となります。
ByRef については、上記 2 か所以外に、5 か所存在していましたので削除します。
予約語の変数名を変更
次は以下のエラーが発生します。
VBA では、Err という変数が定義できるようですが、LotusScript では同名の命令があるのでエラーとなります。
上図の通り、変数の定義でエラーが発生していますが、変数名を変更しても、変数名を使用している部分の変更も必要となりますので、置換機能を使用して Err を sErr に置換します。
同様に、err$ という変数も存在するので、sErr$ に置換します。ただ、変数使用時は”$”が付いていませんので、検索に頼りすぎないよう注意してください。
作業対象となる関数は、次の2つでした。
- qr_gen
- dmx_gen
作画機能をコメントアウト
このサンプルは QR コードをシートに作画していました。よって、作画する部分は Excel の機能を使いまくっていて、エラーが発生します。最終的に作画は Excel に頼らないので、文法エラーを調査する上で邪魔になります。
対象の関数は、次のように Excel のオブジェクトなど LotusScript で使用できないクラス名を使用しています。
これら関数を文法エラーが出ないようにコメントアウトします。関数全体をコメントアウトすると呼び出し元で、エラーが発生するので、関数の中身だけをコメントアウトします。
対象は、次の5つの関数となります。
- bc_1D
- bc_1Dms
- bc_2D
- bc_2Dms
- drw
続きは次回...
ここまでの作業が完了すると、状況は次の通りとなりました。いたるところでエラーが出ていて、悪化しているようにさえ感じますね...
ただ少しづつは進んでいるので、気を取り直して作業を進めましょう。ただ、長くなったので、続きは次回とします。
前回 | ノーツで QR コード | 次回 |
0 件のコメント:
コメントを投稿