IBM Lotus Symphony


プロシージャと関数の使用法

ここでは、Lotus® Symphony™ Basic でのプロシージャと関数の基本的な使用法について説明します。

ノートアイコン モジュールを新規作成すると、Lotus Symphony は自動的に「標準」という名前の SUB を挿入します。このデフォルト名は、Lotus Symphony Basic プロジェクトの順序または開始位置には関係ありません。このプロシージャ名は任意に変更できます。

プログラムの構造は、プロシージャ (SUB) や関数 (FUNCTION) を使用することで、個々の機能別に整理することができます。

またプロシージャや関数を使用するメリットの 1 つに、こうした特定の機能を担ったプログラムコード群を、別のプロジェクトで再利用できる点があります。

プロシージャ (SUB) や関数 (FUNCTION) への変数の渡し方

プロシージャや関数には、変数を渡すことができます。これらの変数は、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 の終了後も使用したいケースもあり得ます。

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

SUB や FUNCTION 終了後も値を維持できる変数

STATIC VarName As TYPENAME

こうして宣言した変数は、次に SUB や FUNCTION を実行するまで有効となります。この場合の変数宣言は、SUB や FUNCTION の内部に記述する必要があります。

関数の戻り値のデータ型の指定

関数の戻り値のデータ型の設定は、変数の場合と同様の型宣言子を用いて行い、下記の例のように、関数宣言時の関数名とパラメータリストに続けて「As」および型宣言用キーワードを記述することで指定します。

Function WordCount(WordText as String) as Integer


製品フィードバック | その他の資料 | 商標