Hola Rafa:

Porque las combinaciones son tremendas, hay 3 tablas, cada una de ellas con
decenas de elementos, podría llegar a funcionar pero el código sería poco
"elegante".
Como ahora yo no soy el que decido, he mandado las 2 propuestas (fichero
temporal y partir el programa en 2 o SQL dinámico).
Ya os contaré.

Un saludo.
Juanra


El 12 de enero de 2016, 17:51, Rafa Vidal <[email protected]> escribió:

> ...¿Y porqué no pruebas a sustituir el "<>" por un "=" y el "AND" por un
> "OR"...?
>
> Un saludo,
> Rafa Vidal
>
> Enviado desde mi Windows Phone
> ------------------------------
> De: Juan Ramón Garcia <[email protected]>
> Enviado: ‎12/‎01/‎2016 17:35
> Para: forum.help400 <[email protected]>
> Asunto: Re: COBOL y SQL embebido IF dentro de WHERE
>
> Pues.... no funciona, en cuanto encuentra un elemento de W-HORA en blanco
> ya no se cumple la condición AND y no selecciona el registro.
>
> Puffff, o me lo monto con PREPARE o un fichero temporal.
> El problema es que yo no soy quien decido como hacerlo, tengo que
> consultar a mi supervisor. Antes como yo era el Jefe lo hacía coo me daba
> la gana :-)
>
> Un saludo.
> Juanra
>
>
>
> El 12 de enero de 2016, 17:12, Juan Ramón Garcia <[email protected]>
> escribió:
>
> Hola Javier:
>
> Pues compilar, compila, que ya es mucho :-)
> Pues nada, voy a tirar por ese camino y ya os contaré
>
> Un saludo.
> Juanra
>
>
> El 12 de enero de 2016, 17:08, Juan Ramón Garcia <[email protected]>
> escribió:
>
> Hola Javier:
>
> Pues no está nada mal, tiene pinta de funcionar y es sencillo de implantar
> :-)
>
> De todas formas acabo de encontrar ejemplos de PREPARE y EXCUTE para
> COBOL, por si a alguien le interesa:
> http://www.craigsmullins.com/dbu_1004.htm
>
> Voy a probar lo tuyo, me resulta más cómodo y tengo que cambiar menos
> cosas. Muchas gracias
>
> Un saludo.
> Juanra
>
>
> El 12 de enero de 2016, 17:01, Javier Mora <[email protected]> escribió:
>
> Si no recuerdo mal, en mi instalación hemos tenido que hacer algo parecido
> pero ahora no lo encuentro. Se me ocurre lo siguiente:
>
>
>
>       WHERE B.FECENT  = :W-FECHA
>
>         AND (:w-horaini1 <> “  “ and B.HINIENT = :W-HORAINI1)
>
>         AND (:w-horaini2 <> "    " and B.HINIENT = :W-HORAINI2)
>
>         AND B.CODEST IN ("20", "25", "27")
>
>
>
> Saludos
>
>
>
> *De:* [email protected] [mailto:
> [email protected]] *En nombre de *Juan Ramón Garcia
> *Enviado el:* martes, 12 de enero de 2016 16:04
> *Para:* forum.help400
> *Asunto:* COBOL y SQL embebido IF dentro de WHERE
>
>
>
> 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