En el manual (DB2 Universal Database for iSeries SQL Programming with Host Languages) viene esto, seguro que te ayuda:
 

Given the statement:

*...1....+....2....+....3....+....4....+....5....+....6....+....7...*

C/EXEC SQL FETCH CLS_CURSOR INTO :CLSCD,

C+ :DAY :DAYIND,

C+ :BGN :BGNIND,

C+ :END :ENDIND

C/END-EXEC

 

variables can be declared as follows:

*...1....+....2....+....3....+....4....+....5....+....6....+....7...*

I               DS

I                                              1     7         CLSCD

I                              B             8     9    0   DAY

I                              B           10  11    0    DAYIND

I                                            12  19          BGN

I                              B            20 21     0    BGNIND

I                                             22 29           END

I                              B            30 31     0    ENDIND

 

-----Mensaje original-----
De: Cristhian Nu�ez [mailto:[EMAIL PROTECTED]
Enviado el: jueves, 20 de noviembre de 2003 16:22
Para: [EMAIL PROTECTED]
Asunto: Re: Problemas con Nulos

Gracias amigo por la pronta respuesta, yo tambien estoy utilizando variables pero lo que deseo saber es que si es posible utilizar una estructura.
 
Saludos y gracias.
 
----- Original Message -----
Sent: Thursday, November 20, 2003 10:08 AM
Subject: RE: Problemas con Nulos

Justo acabo de terminar un programa donde tenia el mismo problema. La soluci�n es:
 
D PRINFO            S            50A               
D INFORME         S              2B 0          
 
    donde PRINFO es la variable del sistema principal e INFORME es el campo que tiene nulos
 
el SQL declarando el cursor es algo as�:
 
 C/EXEC SQL                                                              
 C+ DECLARE C1 CURSOR FOR SELECT SUBSTR(COD_PROVEEDOR, 3, 4),            
 C+ B.INFORME ,A.GRUPO FROM GRUPO_CODPROVEEDOR A                         
 C+ LEFT OUTER JOIN GRUPO_INFORME B ON A.GRUPO=B.GRUPO ORDER BY          
 C+ SUBSTR(COD_PROVEEDOR, 3, 4)                                          
 C/END-EXEC              
 
y el Fetch ser� as�:
 
C/EXEC SQL                                                      
C+ FETCH NEXT FROM C1 INTO :PRPROV, :PRINFO :INFORME, :PRGRUPO  
C/END-EXEC                                                      
 
luego (Si no quieres grabar nulos en la salida)  tienes que usar:
 
C                   MOVE      PRPROV        PROV             
C                   MOVEL     PRINFO        CINF             
C                   MOVE      PRGRUPO       DESC             
 *                                                           
C                   IF        %NULLIND(CINF)                 
C                   CLEAR                   CINF             
C                   ENDIF                                    
 
 y no te olvides en la hoja  H
 
H DEBUG ALWNULL(*USRCTL)                                          
                                                                                    
-----Mensaje original-----
De: Cristhian Nu�ez [mailto:[EMAIL PROTECTED]
Enviado el: jueves, 20 de noviembre de 2003 16:01
Para: [EMAIL PROTECTED]
Asunto: Problemas con Nulos

Saludos a todos:
 
Tengo un programa en SQLRPGLE al recuperar datos de una tabla con campos que permite nulos.
Para poder manejar los nulos es necesario trabajar con indicadores, pero mi problema esta en que deseo pasar los datos de un cursor a una estructura de datos pero no se como y donde declarar los inidicadores de nulos. Es posible?
 
* Estructura
Empleado        DS   
   eCodigo                    5A
   eNombre                 60A
   eFecha                       D            
   eCategoria                 2A
 
* FechaCese campo que permite nulos
 
C/EXEC SQL                                           
C+   DECLARE c1 CURSOR FOR                           
C+   SELECT Codigo,Nombre,FechaCese, Categoria 
C+   FROM empleado
C/END-EXEC
                                           
C/EXEC SQL                        
C+   OPEN c1                      
C/END-EXEC                         
                                 
C/EXEC SQL                        
C+   FETCH c1 INTO :Empleado
C/END-EXEC                        
 
He probado pasar el cursor a variables y si funciona, pero deseo utilizar una estructura.
Saludos y gracias.

Responder a