Ese error quiere decir que el programa espera que le envies 2 parametros de
entrada y probablemente al ejecutarlo no los estas enviando.

CALL PGM(PROGRAMA) PARM(VNSEC VIDSEC)

 

  _____  

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Garce
Sent: Jueves, 29 de Mayo de 2008 02:23 p.m.
To: [email protected]
Subject: Parametro de retorno para secuenciador SQL

 

Hola a todos;

 

Se trata de un SQLRPGLE en formato FREE cuyo nombre es SEC en V5R4, pego mi
código para ser mas "elocuente";

 

 *    *Entry PList                                 
D MIPGM             PR                  ExtPgm('SEC')
D  vnsec                        10                 
D  vidsec                       10                 
D MIPGM             PI                               
D  vnsec                        10                 
D  vidsec                       10                 

 *    *Variables                              
D sqlstmt         S            200    Varying 
D nrosec          S             10  0         
 *--------------------------------------------
 /FREE                                        
    Eval sqlstmt = 'Select Nextval for '      
         + %trim(vnsec)                       
         + ' from sysibm/sysdummy1';          
    Exec SQL Prepare SS From :SQLSTMT;        
    Exec SQL Declare C1 Cursor for SS;        
    Exec SQL Open C1;                         

    Exec SQL Fetch C1 into :nrosec;
    Exec SQL Close C1;

    Eval vidsec = %char(nrosec);      

    *inlr = *on;
/END-FREE    

 

Bueno, hasta el FETCH va bien pues llega a incrementar el valor del
secuenciador pasado en el parámetro de entrada "vnsec", también verifico el
valor que se incrementó en ":nrosec", funciona, el problema esta en el
parámetro que quiero utilizar como de salida (vidsec), no consigo que me
reconozca tal parámetro como de retorno, me da el sgte. error;

 

Error de puntero o parámetro (C G D F).

El puntero no hace referencia a ninguna ubicación.              
Error de función. MCH3601 no supervisado por SEC en la sentencia
  0000000139, instrucción X'0000'. (esta sentencia es donde esta "Eval
vidsec = %char(nrosec))

 

He probado hacerlo en formato fijo y es lo mismo, por si acaso el SQLRPGLE
FREE tenga algún problema, pues eso, se los agradeceré infinitamente por
cualquier sugerencia.

 

Salu2.                                    

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

Responder a