EGL ファイルに関数を宣言することができます。詳細については、『EGL ソース形式』に説明します。
以下の例では、2 つの組み込み関数を含むプログラム・パーツ、スタンドアロンの関数、およびスタンドアロンのレコード・パーツを示します。
Program myProgram(employeeNum INT)
{includeReferencedFunctions = yes}
// プログラム・グローバル変数
employees record_ws;
employeeName char(20);
// 必要組み込み関数
Function main()
// 従業員名の初期化
recd_init();
// 渡された employeeNum に基づいて
// 目的の従業員名を取得
employeeName = getEmployeeName(employeeNum);
end
// 別の組み込み関数
Function recd_init()
employees.name[1] = "Employee 1";
employees.name[2] = "Employee 2";
end
end
// スタンドアロンの関数
Function getEmployeeName(employeeNum INT) returns (CHAR(20))
// ローカル変数
index BIN(4);
index = syslib.size(employees.name);
if (employeeNum > index)
return("Error");
else
return(employees.name[employeeNum]);
end
end
// 従業員の typeDef として機能するレコード・パーツ
Record record_ws type basicRecord
10 name CHAR(20)[2];
end
- Function functionPartName ... end
- パーツを関数として識別し、パーツ名を指定します。命名の規則については、『命名規則』を参照してください。
- parameter
- 関数全体で使用でき、呼び出し元の関数から値を受け取るメモリー領域となるパラメーター。
パラメーターを宣言するために使用する構文については、『関数パラメーター』を参照してください。
- returns (returnType)
- 関数が呼び出し側に戻すデータを記述します。戻りの型の特性は、呼び出し側関数内の値を受け取る変数と同じでなければなりません。
- {alias = name}
- 関数が nativeLibrary 型のライブラリー内にある場合にのみ有効です。このコンテキストでは、name は DLL ベースの関数名で、EGL 関数名にデフォルト設定されます。DLL ベースの関数を使用して EGL 関数に名前を付ける際に検証エラーが発生した場合、alias プロパティーを明示的に設定してください。
- dataItemPartName
- 関数に可視であり、戻り値の typedef (形式のモデル) として機能する dataItem パーツ。
- primitiveType
- 呼び出し側に戻されるデータのプリミティブ型。
- length
- 呼び出し側に戻されるデータの長さ。length は、戻される値の文字数または桁数を表す整数です。
- decimals
- 一部の数値型には、decimals を指定できます。これは、小数点以下の桁数を表す整数です。
小数部の桁の最大数は、18 または length で宣言された桁数の小さいほうです。小数点は、データとともに保管されません。
- "dateTimeMask"
- TIMESTAMP 型および INTERVAL 型には、"dateTimeMask" を指定できます。これは、日時値の特定の位置に意味 (「年の桁」など) を割り当てるものです。
このマスクは、データと一緒には格納されません。
- statement
- EGL 文。詳細については、『EGL 文』に説明します。ほとんどはセミコロンで終了します。
- variableDeclaration
- 『関数変数』で説明されている変数宣言。
- containerContextDependent
- 宣言されている関数によって呼び出される関数を解決するために使用される名前空間を拡張するかどうかの指示。
デフォルトは no です。
このインディケーターは、VisualAge® Generator からマイグレーションされたコードの中で使用します。
詳細については、『containerContextDependent』を参照してください。