A continuación se ofrece un ejemplo de componente de registro fijo con una matriz subestructurada:
Record myPart type basicRecord 10 MyTopStructure CHAR(20)[5]; 20 MyStructureItem01 CHAR(10); 20 MyStructureItem02 CHAR(10); end
Las descripciones subsiguientes hacen referencia a las clases de envoltura de un programa determinado como clase de envoltura de programa, clases de envoltura de parámetro, clases de envoltura de matriz dinámica y clases de envoltura de matriz de elementos subestructurada.
EGL genera una clase BeanInfo para cada clase de envoltura de parámetro, clase de envoltura de matriz dinámica o clase de envoltura de matriz de elementos subestructurada. La clase BeanInfo permite utilizar la clase de envoltura relacionada como bean Java compatible con Java. Probablemente, no interaccionará con la clase BeanInfo.
Cuando genera una envoltura, la lista de parámetros del programa llamado no puede incluir parámetros de tipo BLOB, CLOB, STRING, Dictionary, ArrayDictionary o registro no fijo.
import com.ibm.javart.v6.cso.*; public class MyNativeClass { /* declarar una variable para middleware */ CSOPowerServer powerServer = null; try { powerServer = new CSOLocalPowerServerProxy(); } catch (CSOException exception) { System.out.println("Error al inicializar el middleware" + exception.getMessage()); System.exit(8); } }
myProgram = new MyprogramWrapper(powerServer);
Mypart myParm = myProgram.getMyParm(); Mypart2 myParm2 = myProgram.getMyParm2();
myRecArrayVar myParm3 = myProgram.getMyParm3();
Para obtener detalles acerca de cómo interactuar con matrices dinámicas, consulte el apartado Clases de envoltura de matriz dinámica.
El ID de usuario y la contraseña no se utilizan para el acceso a bases de datos.
myProgram.callOptions.setUserID("myID"); myProgram.callOptions.setPassword("myWord"); myUserID = myProgram.callOptions.getUserID(); myPassword = myProgram.callOptions.getPassword();
myProgram.execute();
powerServer.commit(); powerServer.rollback();
if (powerServer != null) { try { powerServer.close(); powerServer = null; } catch(CSOException error) { System.out.println("Error al cerrar el middleware" + error.getMessage()); System.exit(8); } }
la clase de envoltura de programa incluye una variable de instancia privada para cada parámetro del programa generado. Si el parámetro es un registro o un formulario, la variable hace referencia a una instancia de la clase de envoltura de parámetro relacionada. Si el parámetro es un elemento de datos, la variable tiene un tipo primitivo Java.
Al final de esta página de la ayuda figura una tabla que describe las conversiones entre EGL y los tipos Java.
finalidadnombreParámetro()
setPassword(contraseña) setUserid(IDusuario) getPassword() getUserid()
El evento PropertyChange se describe en la especificación JavaBean de Sun Microsystems, Inc.
Mypart myRecWrapperObject = myProgram.getMyrecord();
En este caso, se utiliza la memoria asignada por el objeto de envoltura de programa.
También puede utilizar la clase de envoltura de parámetro para declarar memoria, que es necesario si invoca al método call (en lugar de al método execute) del objeto programa.
finalidadnombreEE()
finalidadnombreEENullIndicator()
nombreClaseParámetro.nombreClaseMatriz
Record CompanyPart type basicRecord 10 Departments CHAR(20)[5]; 20 CountryCode CHAR(10); 20 FunctionCode CHAR(10)[3]; 30 FunctionCategory CHAR(4); 30 FunctionDetail CHAR(6); end
Si el parámetro Company se basa en CompanyPart, se utilizará la serie CompanyPart.Departments como el nombre de la clase interna.
Una clase interna de una clase interna amplía la utilización de una sintaxis con puntos. En este ejemplo, se utiliza el símbolo CompanyPart.Departments.Functioncode como el nombre de la clase interna de Departments.
Para obtener más detalles acerca de cómo denominar las clases de envoltura de matriz de elementos subestructurada, consulte el apartado Salida de la generación de envoltura Java.
Program myProgram(intParms int[], recParms MyRec[])
El nombre de las clases de envoltura de matriz dinámica es IntParmsArray y MyRecArray.
IntParmsArray myIntArrayVar = myProgram.getIntParms(); MyRecArray myRecArrayVar = myProgram.getRecParms();
Después de declarar las variables para cada matriz dinámica, puede añadir elementos:
// la adición a una matriz de tipos primitivos Java // es un proceso de un solo paso myIntArrayVar.add(new Integer(5)); // la adición a una matriz de registros o formularios // requiere varios pasos; en este caso, // empiece por asignar un objeto de registro nuevo MyRec myLocalRec = (MyRec)myRecArrayVar.makeNewElement(); // los pasos para asignar valores no se muestran // en este ejemplo, pero, después de asignar valores, // añada el registro a la matriz myRecArrayVar.add(myLocalRec); // a continuación, ejecute el programa myProgram.execute(); // cuando el programa efectúe el retorno, puede determinar // el número de elementos de la matriz int myIntArrayVarSize = myIntArrayVar.size(); // obtener el primer elemento de la matriz de enteros // y convertirlo temporalmente a un objeto Integer Integer firstIntElement = (Integer)myIntArrayVar.get(0); // obtener el segundo elemento de la matriz de registros // y convertirlo temporalmente a un objeto MyRec MyRec secondRecElement = (MyRec)myRecArrayVar.get(1);
Como indica el ejemplo, EGL proporciona varios métodos para manipular las variables que haya declarado.
Método de la clase de matriz dinámica | Finalidad |
---|---|
add(int, Objeto) | Insertar un objeto en la posición especificada por int y desplazar el elemento actual y los sucesivos hacia la derecha. |
add(Objeto) | Añadir un objeto al final de la matriz dinámica. |
addAll(ListaMatrices) | Añadir un objeto ArrayList al final de la matriz dinámica. |
get() | Recuperar el objeto ArrayList que contiene todos los elementos de la matriz. |
get(int) | Recuperar el elemento que está en la posición especificada por int |
makeNewElement() | Asignar un elemento nuevo del tipo específico de la matriz y recuperarlo sin añadirlo a la matriz dinámica. |
maxSize() | Recuperar un entero que indica el número máximo (pero no real) de elementos de la matriz dinámica. |
remove(int) | Eliminar el elemento que está en la posición especificada por int |
set(ArrayList) | Utilizar el objeto ArrayList especificado como sustitución de la matriz dinámica. |
set(int, Objeto) | Utilizar el objeto especificado como sustitución del elemento que está en la posición especificada por int |
size() | Recuperar el número de elementos que se encuentran en la matriz dinámica. |
La tabla siguiente indica la relación entre los tipos primitivos EGL del programa generado y los tipos de datos Java de la envoltura generada.
Tipo primitivo EGL | Longitud en caracteres o dígitos | Longitud en bytes | Decimales | Tipo de datos Java | Precisión máxima en Java |
---|---|---|---|---|---|
CHAR | 1-32767 | 2-32766 | NA | String | NA |
DBCHAR | 1-16383 | 1-32767 | NA | String | NA |
MBCHAR | 1-32767 | 1-32767 | NA | String | NA |
UNICODE | 1-16383 | 2-32766 | NA | String | NA |
HEX | 2-75534 | 1-32767 | NA | byte[] | NA |
BIN, SMALLINT | 4 | 2 | 0 | short | 4 |
BIN, INT | 9 | 4 | 0 | int | 9 |
BIN, BIGINT | 18 | 8 | 0 | long | 18 |
BIN | 4 | 2 | >0 | float | 4 |
BIN | 9 | 4 | >0 | double | 15 |
BIN | 18 | 8 | >0 | double | 15 |
DECIMAL, PACF | 1-3 | 1-2 | 0 | short | 4 |
DECIMAL, PACF | 4-9 | 3-5 | 0 | int | 9 |
DECIMAL, PACF | 10-18 | 6-10 | 0 | long | 18 |
DECIMAL, PACF | 1-5 | 1-3 | >0 | float | 6 |
DECIMAL, PACF | 7-18 | 4-10 | >0 | double | 15 |
NUM, NUMC | 1-4 | 1-4 | 0 | short | 4 |
NUM, NUMC | 5-9 | 5-9 | 0 | int | 9 |
NUM, NUMC | 10-18 | 10-18 | 0 | long | 18 |
NUM, NUMC | 1-6 | 1-6 | >0 | float | 6 |
NUM, NUMC | 7-18 | 7-18 | >0 | double | 15 |
Conceptos relacionados
Envoltura Java
Configuraciones de tiempo de ejecución
Tareas relacionadas
Generar envolturas Java