CONSULTA DE LECTURA

Todo lo relacionado con REXX en este ambiente.
Responder
miguek1983
Usuario avanzado
Usuario avanzado
Mensajes: 33
Registrado: 29 Abr 2008, 20:39
Ubicación: Buenos Aires, Argentina

CONSULTA DE LECTURA

Mensaje por miguek1983 » 20 Nov 2012, 17:37

Buenas, estoy finalizando una REXX y noto un detalle que aún no puedo solucionar.
La REXX busca códigos de error en un PDS y si, los encuentra, lo displaya. Sin embargo, cuando la explicación a ese código de error supera la línea, se presenta mi problema.

Ej:

PDS con Códigos de error

OJCV SE HA PRODUCIDO UN ERROR DURANTE LA SUSTITUCION DE VARIABLES DE
JCL AL SOMETERSE EL TRABAJO O LA TAREA INICIADA O BIEN EL
PLANIFICADOR HA DETECTADO UN ERROR EN LA SENTENCIA RECOVER DURANTE
LA RECUPERACION AUTOMáTICA. EXAMINE EL JCL DE LA OPERACION O EL
CONJUNTO DE DATOS EQQMLOG PARA OBTENER MáS INFORMACION ACERCA DE
LA ANOMALíA.


RESULTADO DE LA REXX

OJCV SE HA PRODUCIDO UN ERROR DURANTE LA SUSTITUCION DE VARIABLES DE

***

Me podrían ayudar a que la REXX displaye toda la explicación y no solo la primera línea?

Muchas gracias!!!

Adjunto la sentencia:

/* REXX */
ADDRESS ISPEXEC 'VGET (CODERROR)'
ADDRESS ISPEXEC 'VPUT (CODERROR)'
ESTA = 0
"ALLOC DA('TRASPASO.ENDEVOR.JOBS(ERRORES)') F(GUIA) SHR"
IF RC = 12 THEN CALL FIN
"EXECIO * DISKR GUIA (FINIS STEM TODO."
IF RC = 2 THEN CALL FIN
'CLEAR'
DO I = 1 TO TODO.0
BUSCO = FIND(TODO.I,CODERROR)
IF BUSCO ¬= 0 THEN DO
SAY TODO.I
ESTA = 1
END
END
IF ESTA = 0 THEN DO
SAY 'NO EXISTE, SI LO SABE AGREGAR EN TRASPASO.ENDEVOR.JOBS(ERRORES)'
'ISPEXEC SETMSG MSG(COM002)'
END
FIN:
"FREE F(GUIA)"
M.K

Avatar de Usuario
acevedo
Colaborador Senior
Colaborador Senior
Mensajes: 375
Registrado: 01 Abr 2005, 14:36
País: España
Ciudad: Malaga
Ocupación: Analista de desarrollo

Re: CONSULTA DE LECTURA

Mensaje por acevedo » 21 Nov 2012, 04:51

Suponiendo que el código de error es OJCV y que guardas la descripción así (en varias lineas):
OJCV SE HA PRODUCIDO UN ERROR DURANTE LA SUSTITUCION DE VARIABLES DE
JCL AL SOMETERSE EL TRABAJO O LA TAREA INICIADA O BIEN EL
PLANIFICADOR HA DETECTADO UN ERROR EN LA SENTENCIA RECOVER DURANTE
LA RECUPERACION AUTOMáTICA. EXAMINE EL JCL DE LA OPERACION O EL
CONJUNTO DE DATOS EQQMLOG PARA OBTENER MáS INFORMACION ACERCA DE
LA ANOMALíA.
solo lo encontrará en la primera linea ya que el código de error (OJCV) no se encuentra en el resto

Código: Seleccionar todo

busco = find(todo.i,coderror) 

miguek1983
Usuario avanzado
Usuario avanzado
Mensajes: 33
Registrado: 29 Abr 2008, 20:39
Ubicación: Buenos Aires, Argentina

Re: CONSULTA DE LECTURA

Mensaje por miguek1983 » 21 Nov 2012, 09:18

Muchas gracias por tu respuesta. Podrías brindarme alguna alternativa para seleccionar toda la explicación y no solo la primera línea. Ya sea algún delimitador o sentencia que me permita recortar toda la definición.

Saludos!!
M.K

Avatar de Usuario
acevedo
Colaborador Senior
Colaborador Senior
Mensajes: 375
Registrado: 01 Abr 2005, 14:36
País: España
Ciudad: Malaga
Ocupación: Analista de desarrollo

Re: CONSULTA DE LECTURA

Mensaje por acevedo » 21 Nov 2012, 09:52

si el 'inicio de la explicación' lo marca el código de error, en este caso OJCV, o pones ese código en todas las lineas o pones un 'fin de explicación' (por ejemplo /OJCV), y una vez detectado el inicio muestras todas las lineas hasta que encuentres /OJCV.

miguek1983
Usuario avanzado
Usuario avanzado
Mensajes: 33
Registrado: 29 Abr 2008, 20:39
Ubicación: Buenos Aires, Argentina

Re: CONSULTA DE LECTURA

Mensaje por miguek1983 » 21 Nov 2012, 10:07

Muchas gracias!!!! Voy a optar por la segunda alternativa (incluir un fin de explicación), por lo que nuevamente apelo a tu generosidad y te pido por favor, si podrías pasarme un ejemplo de como codificarías la sentencia en el REXX para que la tome.
Te pido disculpas por tantos favores, hace muchos años que no programo y me olvidé de bastantes cosas.

Un fuerte abrazo!!!
M.K

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 540
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: CONSULTA DE LECTURA

Mensaje por Vicente » 21 Nov 2012, 10:59

Hola migue:
Si tu fin de explicación fuese del tipo /OJCV, prueba a sustituir la linea:
SAY TODO.I
por algo parecido a lo siguiente
PARSE VAR TODO.I CODIGO .
DO WHILE CODIGO <> '/'CODERROR
SAY TODO.I
I = I + 1
PARSE VAR TODO.I CODIGO .
END
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

josevaldeon
Usuario
Usuario
Mensajes: 13
Registrado: 23 Jul 2007, 11:28
Ubicación: ESPAÑA

Re: CONSULTA DE LECTURA

Mensaje por josevaldeon » 26 Nov 2012, 05:50

Por lo que entiendo, parece que el problema lo tienes al identificar el codigo de error en los registros del fichero de entrada. Ahora solo tienes un 'localizador' OJCV, que solo aparece al principio del primer registro. Pero no sabes cuantos registros pertenecen a este mensaje ni en que registro finaliza el mensaje. La solucion definitiva pasa por modificar el mensaje del PDS, de forma que el localizador te sirva para identificar no solo el inicio del mensaje sino tambien el final, o de otra forma, poniendo el localizador en todos los registrosdel mensaje de error. Por ejemplo que la primera palabra de cada linea dedel mensaje fuera el localizador, o poner el localizador en la primera y ultima palabra del mensaje. por ejemplo:
OJCV este es un mensaje
OJCV de error
OJCV controlado

o de otra forma
OJCV este es un mensaje
de error
controlado OJCV

Espero que te sirva
Saludos

miguek1983
Usuario avanzado
Usuario avanzado
Mensajes: 33
Registrado: 29 Abr 2008, 20:39
Ubicación: Buenos Aires, Argentina

Re: CONSULTA DE LECTURA

Mensaje por miguek1983 » 29 Nov 2012, 16:41

Muchas gracias Jose, ya pude usar el delimitador y funciona perfecto!!!

Saludos.
M.K

Responder