- Cree un proyecto PL/I para el código fuente.
- Enlace la biblioteca DB2 al proyecto
abriendo la página de propiedades Opciones de enlace
local.
- Escriba /de db2api.lib en el campo
Opciones de enlace.
- Pulse Opciones de construcción PL/I local
en la lista de la izquierda, y facilite la siguiente información:
- Opciones de compilación
TEST,MACRO,OPTIONS
- SYSLIB
directorio_instalación\EXTRAS\INCLUDE\PLI
Nota: Sustituya
directorio_instalación por el directorio de instalación
de DB2.
- Seleccione El fuente contiene SQL intercalado.
- Pulse Examinar y seleccione la conexión de
DB2. Si todavía no ha configurado una conexión con la base de datos, pulse
Nueva conexión.
- Opcional: En el campo Otras opciones SQL, entre
opciones adicionales para pasarlas al preprocesador SQL. Las distintas opciones SQL se separan con comas.
- Pulse Aceptar.
Nota: No especifique opciones relacionadas con DB2 en el campo
Opciones de compilación.
Las opciones y
subopciones de compilador necesarias se crearán automáticamente a
partir de la conexión DB2 seleccionada y las opciones que
indique en el campo Otras opciones SQL.
- Inserte la siguiente sentencia antes de usar sentencias SQL en el código:
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE SQLDA;
Asegúrese asimismo de que todas
las sentencias SQL tienen el siguiente formato en su código:
EXEC SQL sentencia;
donde
sentencia es su sentencia SQL.
Ejemplo
- Código PL/I de ejemplo para acceder a una base de datos DB2
*PROCESS MARGINS(1,100) LANGLVL(SAA2) MACRO;
*PROCESS SOURCE XREF;
*PROCESS NOT('ª^') DFT(BYVALUE) ;
*PROCESS INCLUDE (EXT('CPY','INC','PLP','MRP'));
/*********************************************************************/
/* Autor : Su nombre */
/* Fecha de escritura : 7/07/04 */
/* Funciones primarias : Hacer select en la db2 DB de ejemplo */
/* */
/* Qué hay que cambiar: */
/* Debe cambiar USERNAME y PASSWORD para la base de datos de */
/* ejemplo Sample DB2 en la sentencia *PROCESS PP(SQL... y en la */
/* consulta Connect hacia el centro de este código de ejemplo. */
/* */
/*********************************************************************/
DB2Samp: PROCEDURE OPTIONS(MAIN);
DISPLAY('EXAMPLE STARTED.');
/*******************************************************************/
/* Declarar estructuras SQL */
/*******************************************************************/
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE SQLDA;
EXEC SQL WHENEVER SQLERROR CONTINUE;
DCL VALCODE BINARY(31) FIXED INIT(0);
DCL GOODCODE BINARY(31) FIXED INIT(0);
DCL FIRSTNME CHAR(30) var init('NOVAL');
/*******************************************************************/
/* Imprescindible conectar con base de datos para encontrar tabla */
/*******************************************************************/
EXEC SQL CONNECT TO sample USER 'USERNAME' using 'PASSWORD';
CALL PRSQLC ('CONNECT TO SAMPLE');
/********************************************************************/
/*Hace una operación SELECT para obtener el nombre del empleado */
/*cuyo número es el '000010' y lo almacena en la variable */
/*FIRSTNME y luego lo visualiza. */
/********************************************************************/
EXEC SQL SELECT firstnme
INTO :FIRSTNME
FROM employee
WHERE empno = '000010';
DISPLAY('FIRSTNME');
DISPLAY('========');
DISPLAY(FIRSTNME);
DISPLAY('');
CALL PRSQLC ('SELECT');
/****************************************************/
/****************************************************/
/* El proc. PRSQLC verifica que SQL ha funcionado. */
/* Si no funciona, visualizará el código SQL */
/* y el mensaje de error SQL. */
/* */
/* Escrito por: persona */
/****************************************************/
/****************************************************/
PRSQLC: PROCEDURE(FUNCTION);
DECLARE FUNCTION CHARACTER (80) VARYING;
IF (SQLCODE = GOODCODE) THEN
PUT SKIP(2) EDIT (FUNCTION, ' WAS SUCCESSFUL')
(A(LENGTH(FUNCTION)), A(15));
ELSE DO;
IF (SQLCODE ^= 1) THEN DO;
PUT SKIP(2) EDIT (FUNCTION, ' GOT SQLCODE ', sqlcode)
(A(LENGTH(FUNCTION)), A(13), F(8));
PUT SKIP(2) EDIT (FUNCTION, ' GOT SQLERRM ', SQLERRM)
(A(LENGTH(FUNCTION)), A(13), A(70));
VALCODE = VALCODE + 1;
PUT SKIP(2) EDIT ('| VALCODE = ', VALCODE) (A(12), F(8));
END;
ELSE PUT SKIP(2) EDIT (FUNCTION, ' REACHED BOTTOM OF TABLE')
(A(LENGTH(FUNCTION)), A(24));
END;
END PRSQLC;
/**************************************************/
/**************************************************/
EXEC SQL COMMIT;
/*******************************************************************/
END DB2Samp;