10.1 組み込みファンクションについて
組み込みファンクションは、LANSAで使用可能なデータの汎用クラスごとに存在します。例えば、文字列、数値、日付、時間、時刻等の組み込みファンクションがあります。全ての組み込みファンクションは1つの結果を返し、コマンドラインにて結果のパラメータを指定する必要はありません。組み込みファンクションの結果はそれ自体、コマンドで使用される値であると想定されます。
以下の例について考えます。
#com_owner.caption := 'Employee salary is ' + #salary.asstring
上記の例では、文字列と数値フィールドを連結するために+演算子が使用されています。組み込みファンクションを使用しない場合、#salaryから英数字フィールドに値を移動してから、これを使用してキャプションを作成する必要があります。
asstring組み込みファンクションは、#salaryの値を文字列に変換し、それを結果として返します。返された文字列は、LANSAで他の文字列と同様に使用できます。
組み込みファンクションを使用できるのは、特定のフィールドを参照している場合だけではありません。定義上、組み込みファンクションはデータのクラスに属します。以下のコード例について考えます。
Mthroutine Name(Set_Caption)
#com_owner.caption := 'Employee salary is ' + #Com_owner.Get_Salary(#Empno).AsString
Endroutine
Mthroutine Name(Get_Salary)
Define_Map For(*Input) Class(#Empno) Name(#iEmployee)
Define_Map For(*Result) Class(#Salary) Name(#oSalary)
Fetch Fields(#Salary) from_file(Pslmst) with_key(#iEmployee)
#oSalary := #Salary
Endroutine
この例では、Set_Captionメソッドが最初の例とほぼ同じ処理を実行します。主な違いは、キャプションを作成するためにsalaryフィールドが使用されず、Get_Salaryメソッドの結果が使用されることです。Define_Map #oSalaryはクラス#salaryに属しているため、定義上、これは数値です。すなわち、どのNumeric型組み込みファンクションでも値を操作できます。
同様に、フォーム幅などコンポーネントの数値プロパティを参照する場合にも、Numeric型組み込みファンクションを使用できます。
組み込みファンクションがSQL NULL値に対して呼び出された場合、その組み込みファンクションが明示的にSQL NULLを処理しない限り、SQL NULLが生成されます。例については、「IsSqlNull」を参照してください。