Buenas tardes, foro:

Estoy tratando de acceder desde un programa RPG a una base de datos DB2 en un 
servidor windows. La base de datos está en el directorio de bases de datos 
relacionales correctamente creada. De hecho, si ejecuto una select desde 
interactivo contra esa base de datos, funciona correctamente. Sin embargo, 
cuando esa mismo select está incluida en un programa me da un error que dice:

ID de mensaje  . . . . :   SQL0805       Gravedad . . . . . . . :   30        
Tipo de mensaje  . . . :   Diagnóstico                                        
Fecha envío  . . . . . :   16/03/06      Hora envío . . . . . . :   18:20:44  
                                                                              
Mensaje . . . . :   No se ha encontrado el paquete SQL @COLART 0X en EVE60PGM 
  en el servidor DRDA.                                                        
Causa . . . . . :   Se ha intentado una petición remota a *N para el paquete  
  SQL @COLART 0X en EVE60PGM. El paquete SQL no se ha encontrado. Si está     
  utilizando SQL Interactivo o el Gestor de Consultas, ha fallado el intento  
  de crear un paquete en el sistema remoto (vea la causa más frecuente más    
  adelante en este mensaje) y el paquete solicitado no existe.                
Recuperación  . :   La causa más frecuente de este problema en una sesión SQL 
  interactiva con un servidor que no es iSeries es que la conexión no se puede
  actualizar. En tal caso, el paquete no se puede crear automáticamente. Para 
  garantizar que la conexión pueda actualizarse, ejecute un mandato RELEASE   
  ALL seguido de una operación COMMIT antes de conectarse a la base de datos  
relacional.                                                                
  En otros casos, el paquete SQL puede crearse utilizando el mandato       
CRTSQLPKG. Además, al precompilar un programa SQL con el parámetro RDB     
especificado se creará un paquete SQL en el sistema. Cree o restaure el    
paquete SQL. Vuelva a ejecutar la aplicación.                              
  Si está utilizando SQL Interactivo o el Gestor de Consultas o la Interfaz
de Nivel de Llamada SQL, salga del producto y especifique un mandato CL    
COMMIT o ROLLBACK. Esto le permitirá seguir procesando en el sistema local.
Determine por qué ha fallado la creación del paquete examinando las        
anotaciones de trabajo. Corrija el problema e intente de nuevo la sesión de
SQL Interactivo o Gestor de Consultas.                                     
                                                                           
@COLART es un módulo con un único procedimiento que ejecuta una serie de 
sentencias SQL (en concreto, conectarse, ejecutar la select en cuestión y 
desconectarse de la base de datos remota) y devuelve el valor obtenido de la 
select.

Ya he probado a compilar con y sin el parámetro RDB(nombre de base de datos), 
he probado a poner la select en SQL estático y dinámico y nada.

He intentado crear el paquete SQL con CRTSQLPKG y recibo el siguiente error:

MSJ ID  GRV  REG     TEXTO                                                   
SQL5027  50          OPTION(*SYS) sólo es válido si la base de datos         
                     relacional ARTICULO (identificación de producto         
                     SQL08020) es un iSeries.                                
SQL5056              Ha resultado anómala la creación del paquete SQL para el
                     módulo @COLART. El nombre del paquete iba a ser @COLART 
                     en EVE60PGM de ARTICULO.                                

El caso es que no encuentro ningún parámetro OPTION(*SYS) ni en la compilación 
del módulo, ni en el CRTSQLPKG ni en el CRTPGM.

¿Alguna ayuda?

Gracias y un saludo.
Juan Carlos.

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.1.385 / Virus Database: 268.2.4/282 - Release Date: 15/03/2006
 

<<winmail.dat>>

Responder a