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.

