START TRANSID asincronico

Todo lo relacionado al CICS .
Responder
JAVIERGRANDA

START TRANSID asincronico

Mensaje por JAVIERGRANDA »

Hola a todos,

Recurro al foro para compartir y encontrar una solución al problema que estoy teniendo en CICS.

Situación:

Tengo 2 transacciones y 3 programas. El PGM2 y el PGM3 estan compilados con sentencias Oracle.

* Con la TRX1 inicia el PGM1:
---a. El PGM1 hace un LINK al PGM2:
-----Dentro del PGM2:
-------1. Se realiza un START TRANSID(TRX2) NOCHECK (PGM3)
-------2. Se realiza un call a un Store Procedure de Oracle
-------3. Se retorna el control al PGM1
---b. Retorna control al CICS
* Finaliza la tarea iniciada por TRX1, y en este momento y este es el problema se inicia la transacción TRX2 lanzada por el PGM2.

La TRX2 debió lanzarse en el momento que se hace el START y no lo hizo.

Espero poder resolverlo junto con ustedes.

Desde ya muchas gracias.

Saludos.-
riloama

Re: START TRANSID asincronico

Mensaje por riloama »

Hola Javiergranda

podrias comentar que EIBRESP / EIBRESP2 devuelve CICS luego de realizar el START.
riloama

Re: START TRANSID asincronico

Mensaje por riloama »

y agrego, podrias enviarnos la sentencia START que invoca a la TRX2.
JAVIERGRANDA

Re: START TRANSID asincronico

Mensaje por JAVIERGRANDA »

Hola riolama,

La instrucción CICS es

EXEC CICS
START TRANSID (CT-TRAN-TRX2)
FROM (WS-GUECCL02-01)
LENGTH (WS-LONG-AREA)
NOCHECK
END-EXEC

La respuesta da ok:

EIBRESP = 0 NORMAL
EIBRESP2 = 0

Y todas las dos transacciones finalizan bien. Lo único es que la TRX2 se ejecuta una vez que finaliza la tarea de la TRX1.
Sera problemas de espacio?
De como estan definidas las transacciones?

Es como que se encola la tarea 2 esperando que finalice la tarea 1 que la inicia.

En ambiente de desarrollo funciona bien, en homologación esta fallando.
El administrador del CICS dice que ambos ambientes estan igual definidos.

Desde ya muchas gracias.

Javier.
riloama

Re: START TRANSID asincronico

Mensaje por riloama »

Javier,

tal como esta escrito y hasta donde se, TRX2 debe lanzarse al ejecutarse el START sin ningun delay.

Desconozco que puede estar pasando.
kikebike

Re: START TRANSID asincronico

Mensaje por kikebike »

¿Por que usas la opcion NOCHECK?.

Parece que es para mejorar el rendimiento cuando la trx se lanza a sistema remotos:

"NOCHECK
Specifies that, for a remote system, CICS should optimize the execution of the START command to improve performance by providing less error checking and slightly less function. For more information, see the TXSeries for Multiplatforms Intercommunication Guide"

¿Has comprobado en un historico o similar que la hora de START de la TRX2 es despues de que acabe la TRX1?.

Es por si la TRX2 se hubiera arrancado y estuviera a la espera de algun recurso.

Todo lo demas seria seguirlo con CEDF para ver como se comporta.
JAVIERGRANDA

Re: START TRANSID asincronico

Mensaje por JAVIERGRANDA »

Buen día,

Gracias por la colaboración, el NOCHECK ya estaba en el programa, se implemento algo que involucra a este programa y por eso se tuvo que recompilar. En desarrollo funciona ok y en homologacion tiene el comportamiento comentado.
Ya probe con display de timestamp el momento de ejecución de los eventos y la TRX2 se inicia despues que finalice la tarea iniciada con TRX1. Este comportamiento lo pude observar tambien siguiendolo con CEDX.
Lo que voy a tratar de chequear ahora es lo que mensionas, que la TRX2 se quede esperando algun recurso tomado por la TRX1.

Desde ya muchas gracias por la ayuda.

Comento si dio resultado.

Alguna idea nueva bienvenida sea.

Saludos.-
Vicente

Re: START TRANSID asincronico

Mensaje por Vicente »

Hola Javier:
Teniendo en cuenta que en desarrollo funciona y en homologación no, yo utilizaría CEDA para revisar las definiciones de transacciones y programas en ambos CICS, por si hay diferencias.
Un saludo
JAVIERGRANDA

Re: START TRANSID asincronico

Mensaje por JAVIERGRANDA »

Buenas tardes,

Muchas cosas no puedo hacer ya que no soy admin del CICS, pero buscando vi que en producción la transaccion esta definida asi:

PROGRAM(PGM01) TWASIZE(1000) PROFILE(DFHCICST)
STATUS(ENABLED) TASKDATALOC(ANY) TASKDATAKEY(USER)
STORAGECLEAR(NO) RUNAWAY(SYSTEM) SHUTDOWN(DISABLED) ISOLATE(YES)
DYNAMIC(NO) ROUTABLE(NO) PRIORITY(1) TRANCLASS(DFHTCL00)
DTIMOUT(NO) RESTART(NO) SPURGE(YES) TPURGE(YES) DUMP(YES)
TRACE(NO) CONFDATA(NO) OTSTIMEOUT(NO) ACTION(BACKOUT) WAIT(YES)
WAITTIME(0,0,0) RESSEC(NO) CMDSEC(YES)

Y en homologación:

PROGRAM(PGM01) TWASIZE(1000) PROFILE(DFHCICST)
STATUS(ENABLED) TASKDATALOC(BELOW) TASKDATAKEY(USER)
STORAGECLEAR(NO) RUNAWAY(SYSTEM) SHUTDOWN(DISABLED) ISOLATE(YES)
DYNAMIC(NO) ROUTABLE(NO) PRIORITY(1) TRANCLASS(DFHTCL00)
DTIMOUT(NO) RESTART(NO) SPURGE(YES) TPURGE(YES) DUMP(YES)
TRACE(YES) CONFDATA(NO) OTSTIMEOUT(NO) ACTION(BACKOUT) WAIT(YES)
WAITTIME(0,0,0) RESSEC(NO) CMDSEC(YES)

En homologacion tendria que cambiar:

TASKDATALOC(BELOW) por TASKDATALOC(ANY) ya que esta definido ISOLATE(YES) ?
Puede existir un problema de espacio?

Por lo que pude probar no se queda esperando la liberación de algún recurso.

Saludos.-
riloama

Re: START TRANSID asincronico

Mensaje por riloama »

Probaste ejecutar la TRX1 con CEDF y en otra sesion de CICS interceptar la TRX2 con CEDX verificando que una vez realizado el START TRX2 no haya intercepcion de esta transaccion ?
JAVIERGRANDA

Re: START TRANSID asincronico

Mensaje por JAVIERGRANDA »

Hola buen día,

Realice esa prueba y tiene el mismo comportamiento, el de iniciarce una vez finalizada la tarea iniciada por la TRX1.

Puede ser problema de storege, que porboque algun paginado?

Saludos.
JAVIERGRANDA

Re: START TRANSID asincronico

Mensaje por JAVIERGRANDA »

Buenas tardes a todos,

Después de tanto buscar y probar pudimos resolver el problema.
A la sentencia START le agregamos el REQID para poder ver información adicional de la solicitud que quedaba pendiente.
A partir de esto el admin del CICS vio que el problema estaba en la definición de la Temporary Storage Model.

Desde ya muchas gracias a todos por la colaboración y compromiso.

Saludos.-

Javier.
Responder