Select con REXX

Todo lo relacionado con REXX en este ambiente.
Responder
qwe2
Usuario avanzado
Usuario avanzado
Mensajes: 60
Registrado: 21 Ene 2015, 16:13
País: Argentina
Ciudad: CABA
Ocupación: Analista de desarrollo

Select con REXX

Mensaje por qwe2 » 23 Feb 2018, 21:44

Que tal? estoy tratando de hacer un CLIST/REXX que consulte una tabla sysibm con un where que paso por parametro al rexx. Alguien tiene un ejemplo de como podria hacerlo? estuve buscando ejemplos en foros en ingles pero encontré algunos muy viejos y no estoy seguro de que funcionen.
Si tienen alguno a mano mejor, sino, en todo caso, mas tarde armo lo que tengo y lo posteo a ver si alguno puede darme una mano.
Gracias por leer :sombrero:

qwe2
Usuario avanzado
Usuario avanzado
Mensajes: 60
Registrado: 21 Ene 2015, 16:13
País: Argentina
Ciudad: CABA
Ocupación: Analista de desarrollo

Re: Select con REXX

Mensaje por qwe2 » 24 Feb 2018, 13:08

Por el momento tengo esto:

Código: Seleccionar todo

/* REXX */                                                      
TRACE O                                                         
MAIN:                                                           
                                                                
ADDRESS TSO "SUBCOM DSNREXX"                                    
IF RC <> 0 THEN DO                                              
  S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')                    
  IF S_RC <> 0 THEN DO                                          
    SAY 'EL AMBIENTE NO RESPONDE, INTENTE MAS TARDE'            
    EXIT                                                        
  END                                                           
END                                                             
                                                                
ssid = 'DSNB'                                                   
ADDRESS DSNREXX "CONNECT" ssid                                  
IF SQLCODE ¬= 0 THEN CALL SALERROR 'CONNECT'        
El problema es que me esta dando un SQLCODE -922, SQLERRMC = PLAN ACCESS 00F30034, SQLERRP = DSNAET03, SQLSTATE= 42505... Si alguien tiene una idea de porque puede ser se los agradeceria.

PD: Comprobe que en el SPUFI el DSNB es el que usamos en desarrollo para hacer querys.

qwe2
Usuario avanzado
Usuario avanzado
Mensajes: 60
Registrado: 21 Ene 2015, 16:13
País: Argentina
Ciudad: CABA
Ocupación: Analista de desarrollo

Re: Select con REXX

Mensaje por qwe2 » 27 Feb 2018, 15:35

Hable con la mis DBA's y me dijeron basicamente que ahora no hay posibilidad de conectarse desde REXX a DB2, asi que ese camino esta cerrado. Pienso que puedo hacer 2 cosas (2 entre varias, pero se me ocurren 2 simples por lo menos). 1) hacer que el rexx invoque a un jcl que ejecute un paso de BMC que haga el unload que yo quiero de las tablas sysibm, o 2) Hacer un pgm cobol con DB2 que con un cursor que haga lo que yo quiero y que el REXX lo ejecute.
Los problemas/dudas que tengo son: Para el 1, cuando ejecuto el jcl y quiero mostrar la salida con un browse me da un error de archivo en uso por otra tarea (y eso que el jcl termino con 0 antes de hacer el browse (si alguien puede darme una mano pongo lo que tengo y me dan alguna pista de lo que puede ser). Y para el 2 tengo varias preguntas, es mejor (digo en cuestion de velocidad) ejecutar un pgm cobol que se ejecuta en el momento que mandar una tarea a la cola del spool? Otra pregunta es como hago el include de las tablas sysibm que quiero usar; que copys tienen? donde deberian estar?

En fin, si alguno me puede dar su opinion sobre lo que quiero hacer acepto comentarios, nunca hice algo como esto y estoy yendo medio a ciegas.
Gracias por todo!

Avatar de Usuario
jlanderos
Usuario
Usuario
Mensajes: 13
Registrado: 26 Sep 2017, 18:21
País: México
Ciudad: CDMX
Ocupación: IT Specialist

Re: Select con REXX

Mensaje por jlanderos » 06 Mar 2018, 05:18

Hola:

Me parece que en el ejemplo que envías hace falta primero validar la conexión con DB2 y después de ello comenzar a trabajar con sentencias...

Hice un rápido proceso para conectar a DB2 y validar su ambientación:

Código: Seleccionar todo

/* REXX */                                              
                                                        
call DB2_ChkConn                                        
                                                        
if result then                                          
  say 'Falla en ambientación.'                          
else                                                    
  call DB2_Connect('<<SSID Name>>')                              
                                                        
exit(abs(result))


DB2_ChkConn:

say 'DSNREXX: Evaluando ambientación...'                  
"SUBCOM DSNREXX"  /* Verifica ambientación a DSNREXX      
                     0. Ambientación existente.           
                     1. Ambientación inexistente.    */   
if rc then do                                             
  say 'RXSUBCOM: Ambientando...'                          
  call RXSUBCOM 'ADD', 'DSNREXX', 'DSNREXX'               
  say 'DSNREXX: Validando ambientación...'                
  "SUBCOM DSNREXX"     /* Vuelve a validar ambientación */
end                                                       
else                                                      
  say 'DSNREXX: Ambientación disponible. RC='rc           
return rc                                                 
                                                          
                                                          
DB2_Connect:

parse value arg(1) with SSID .                            

say 'Conectando a SSID' SSID'...'                         
address DSNREXX 'CONNECT' SSID                  
if rc <> 0 then                                 
  say 'RC='rc '; Falla en conexión a' SSID'.'   
else                                            
  say 'RC='rc '; SSID' SSID 'disponible.'       
                                                
say '   SQLCODE:' sqlcode '; SQLSTATE:' sqlstate
                                                
return sqlcode                                  
Para mayor referencia con lo que buscas te sugiero revisar el libro de programación de DB2 para z-OS. Te anexo el link de donde obtuve la base para validar el proceso y crear la ambientación con DB2.

https://www.ibm.com/support/knowledgece ... rface.html

Mucha suerte con ello. Si logras realizar la actividad sería bueno nos apoyaras colocando qué fue lo que hiciste para ello.

El camino de 1,000 kms inicia con un solo paso. :arriba:

Avatar de Usuario
Horacio Villa
Colaborador
Colaborador
Mensajes: 181
Registrado: 04 Dic 2003, 13:11
País: Argentina
Ciudad: Buenos Aires
Ocupación: DBA

Re: Select con REXX

Mensaje por Horacio Villa » 09 Abr 2018, 17:54

Si te niegan el acceso desde REXX, podés generar un secuencial con Unload y leerlo desde el REXX.
HV

Responder