Puede declarar funciones en un archivo fuente EGL, como se describe en el apartado Formato fuente EGL.
El ejemplo siguiente muestra un componente de programa con dos funciones incorporadas, junto con una función autónoma y un componente de registro autónomo:
Program myProgram(employeeNum INT)
{includeReferencedFunctions = yes}
// variable global de programa
employees record_ws;
employeeName char(20);
// función incorporada obligatoria
Function main()
// inicializar nombres de empleados
recd_init();
// obtener el nombre de empleado correcto
// en función del employeeNum pasado
employeeName = getEmployeeName(employeeNum);
end
// otra función incorporada
Function recd_init()
employees.name[1] = "Employee 1";
employees.name[2] = "Employee 2";
end
end
// función autónoma
Function getEmployeeName(employeeNum INT) returns (CHAR(20))
// variable local
index BIN(4);
index = syslib.size(employees.name);
if (employeeNum > index)
return("Error");
else
return(employees.name[employeeNum]);
end
end
// componente de registro que actúa como typeDef de empleados
Record record_ws type basicRecord
10 name CHAR(20)[2];
end
El diagrama de sintaxis de un componente de función es el siguiente:
- Function nombreComponenteFunción ... end
- Identifica el componente como función y especifica el nombre del componente. Para conocer las normas de denominación, consulte el apartado Convenios de denominación.
- parámetro
- Un parámetro es un área de memoria disponible en toda la función y que puede recibir un valor
de la función invocadora. Para obtener detalles sobre la sintaxis utilizada para declarar un parámetro,
consulte Parámetros de función.
- returns (tipoRetorno)
- Describe los datos devueltos por la función al invocante. Las características del tipo de
retorno deben coincidir con las características de la variable que recibe el valor en la función
invocante.
- {alias = nombre}
- Solo es válido si la función está en una biblioteca de tipo nativeLibrary. En ese contexto,
nombre es el nombre de la función basada en DLL y por omisión es el nombre de la función
EGL. Establezca la propiedad alias explícitamente si se produce un error
de validación cuando denomine la función EGL con el nombre de la función basada en DLL.
- nombreComponenteElementoDatos
- Un componente dataItem que es visible para la función y que actúa como typedef (un modelo de formato) del valor de retorno.
- tipoPrimitivo
- El tipo primitivo de los datos devueltos al invocante.
- longitud
- La longitud de los datos devueltos al invocante. La longitud es un entero que representa el número de caracteres o dígitos del valor devuelto.
- decimales
- Para algunos tipos numéricos puede especificar decimales que es un entero que representa
el número de posiciones después de la coma decimal. El número máximo de posiciones decimales es el menor de dos números: 18 o el número de dígitos declarado como longitud. La coma decimal no se almacena con los datos.
- "máscaraFechaHora"
- Para los tipos TIMESTAMP e INTERVAL puede especificar máscaraFechaHora", que asigna un
significado (como por ejemplo "dígito de año") a una posición determinada en el valor de fecha y
hora. La
máscara no se almacena con los datos.
- sentencia
- Una sentencia EGL, según se describe en el apartado Sentencias EGL. La mayoría terminan
con un signo de punto y coma.
- declaraciónVariable
- Una declaración de variable, tal como se describe en la sección Variables de función.
- containerContextDependent
- Una indicación de si se debe ampliar el espacio de nombres utilizado para resolver las
funciones invocadas por la función que se declara. El valor por omisión es no.
Este indicador es para utilizarlo en el código
migrado de
VisualAge
Generator. Para obtener detalles, consulte el apartado containerContextDependent.