Hola Jordi:

Si que lo había pensado pero en COBOL no estoy seguro de que funcione
igual, no obstante ¿puedes pasarme un ejemplo?. Gracias.

Un saludo.
Juanra


El 12 de enero de 2016, 16:42, Jordi S.G. <[email protected]> escribió:

> Hola Juanra,
>
> ¿Has probado de montar la sentencia dinámicamente y luego ejecutarla con
> PREPARE?
> Yo lo tengo hecho en muchos sitios ...pero con RPG :-(
>
> Saludos.
>
> Jordi
>
>
> El Martes 12 de enero de 2016 16:03, Juan Ramón Garcia <
> [email protected]> escribió:
>
>
> Hola a tod@s:
>
> Nunca me he encontrado con este problema pero...siempre hay una primera
> vez.
> En un programa COBOL complicadísimo se utiliza SQL embebido para
> seleccionar una serie de registros cuyas características han sido
> seleccionadas por el usuario mediante una pantalla de opciones.
> El caso es que quieren cambiar el orden de impresión de los registros
> pero, tal y como está el programa, habría que rehacerlo y utilizar un
> fichero temporal cosa que prefieren que no se haga.
> La solución que se me ha ocurrido es condicionar algunas opciones del
> WHERE a si tiene o no tiene datos el campo correspondiente.
> Una imagen vale más que mil palabras:
>
> EXEC SQL
>    DECLARE CUR5 CURSOR FOR
>    SELECT B.PTOSERV, B.NPEDWEB, B.RUTA
>       FROM FSPEDC3 A
>       LEFT JOIN FPEDHIPC5 B
>          ON A.NPEDWEB = B.NPEDWEB
>       WHERE B.FECENT  = :W-FECHA
>         AND B.HINIENT = :W-HORAINI
>         AND B.CODEST IN ("20", "25", "27")
>       ORDER BY A.CCIRCOD, B.HINIENT, B.RUTA, B.NPEDWEB
> END-EXEC.
>
> lo que necesitaría seria algo como esto: (lo escribo en minúsculas para
> que se distinga
>
> EXEC SQL
>    DECLARE CUR5 CURSOR FOR
>    SELECT B.PTOSERV, B.NPEDWEB, B.RUTA
>       FROM FSPEDC3 A
>       LEFT JOIN FPEDHIPC5 B
>          ON A.NPEDWEB = B.NPEDWEB
>       WHERE B.FECENT  = :W-FECHA
> if :w-horaini1 <> "    "
>         AND B.HINIENT = :W-HORAINI1
> end-if
> if :w-horaini2 <> "    "
>         AND B.HINIENT = :W-HORAINI2
> end-if
>         AND B.CODEST IN ("20", "25", "27")
>       ORDER BY A.CCIRCOD, B.HINIENT, B.RUTA, B.NPEDWEB
> END-EXEC.
>
> Evidentemente no funciona y he probado con CASE y otras "cosas" que he
> encontrado por ahí pero no lo consigo y esto simplificaría mi problema.
>
> ¿Hay alguna forma de condicionar las sentencias del WHERE?
>
> Un saludo.
>
> Juanra
> SqlCobolSaurio
>
>
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd)
> Forum.Help400 © Publicaciones Help400, S.L.
>
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.
>
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a