IBM Lotus Symphony
|
ここでは、Lotus® Symphony™ Basic でのプロシージャと関数の基本的な使用法について説明します。
![]() |
モジュールを新規作成すると、Lotus Symphony は自動的に「標準」という名前の SUB を挿入します。このデフォルト名は、Lotus Symphony Basic プロジェクトの順序または開始位置には関係ありません。このプロシージャ名は任意に変更できます。 |
プログラムの構造は、プロシージャ (SUB) や関数 (FUNCTION) を使用することで、個々の機能別に整理することができます。
またプロシージャや関数を使用するメリットの 1 つに、こうした特定の機能を担ったプログラムコード群を、別のプロジェクトで再利用できる点があります。
プロシージャや関数には、変数を渡すことができます。これらの変数は、SUB および FUNCTION ステートメント部で使用を宣言する必要があります。
SUB SubName( Parameter1 As Type, Parameter2 As Type,... )
Program code
END SUB
こうした SUB の呼び出しは、下記の構文で行います。
SubName(Value1, Value2,...)
SUB に渡す個々の変数は、SUB 宣言部の変数型と一致する必要があります。
これらの事項は FUNCTION についても同様ですが、この場合は関数の戻り値が返されます。これらの戻り値は、各関数の処理ルーチンが終了するまでに算出しておき、戻り値とする計算結果のパラメータを関数名に代入する形で確定します (例を参照)。
FUNCTION FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Program code
FunctionName=Result
End Function
こうした FUNCTION の呼び出しは、下記の構文で行います。
Variable=FunctionName(Parameter1, Parameter2,...)
![]() |
プロシージャまたは関数を呼び出すために、Library.Module.Macro() の完全修飾名を使用することもできます。例えば、Gimmicks ライブラリから Autotext マクロを呼び出すには、Gimmicks.AutoText.Main() というコマンドを使用します。 |
SUB や FUNCTION に渡すパラメータは、参照による受け渡しか値による受け渡しのいずれかの形で与えることができます。明示的に指定しない限り、パラメータは参照による受け渡しとして渡されます。この場合、SUB や FUNCTION に渡されたパラメータは、その値の読み取りだけでなく、値の変更が可能です。
値による受け渡しでパラメータを与えるには、下記の例のように SUB や FUNCTION の呼び出し時に「ByVal」キーワードをパラメータの直前に指定します。
Result = Function( ByVal Parameter)
この場合 FUNCTION 部には、パラメータ本体ではなくその値だけが渡されるため、パラメータ値が書き換えられることはありません。
SUB や FUNCTION 内部で定義された変数の有効範囲は、該当するプロシージャが終了するまでです。こうした変数は「局所 (ローカル)」変数と呼ばれます。しかしこうした変数の有効範囲については、すべてのプロシージャや、すべてのライブラリ内の全モジュールにまで拡張したり、該当する SUB や FUNCTION の終了後も使用したいケースもあり得ます。
GLOBAL VarName As TYPENAME
こうして宣言した変数は、Lotus Symphony のセッションの終了時まで有効となります。
PUBLIC VarName As TYPENAME
こうして宣言した変数は、すべてのモジュールで有効となります。
PRIVATE VarName As TYPENAME
こうして宣言した変数は、該当モジュールの内部だけで有効となります。
DIM VarName As TYPENAME
こうして宣言した変数は、該当モジュールの内部だけで有効となります。
CompatibilityMode(true) を設定することにより、プライベート変数を複数のモジュール間でプライベートにします。
REM ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Hello"
print "in module1 : ", myText
End Sub
REM ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Now returns empty string
' (or rises error for Option Explicit)
print "Now in module2 : ", myText
End Sub
STATIC VarName As TYPENAME
こうして宣言した変数は、次に SUB や FUNCTION を実行するまで有効となります。この場合の変数宣言は、SUB や FUNCTION の内部に記述する必要があります。
関数の戻り値のデータ型の設定は、変数の場合と同様の型宣言子を用いて行い、下記の例のように、関数宣言時の関数名とパラメータリストに続けて「As」および型宣言用キーワードを記述することで指定します。
Function WordCount(WordText as String) as Integer