Je, je, es como está ahora, con 4 cursores diferentes según el tipo de
selección.
El problema es que, al cambiar el orden de impresión de los registros, todo
esto ya no sirve.
No puedo seguir empleando más tiempo con este "Sprint" (*) la solución es
utilizar un fichero temporal y un programilla que lo trate.

Un saludo.

Juanra
ScrumSaurio

(*) Lo de Sprint viene de la metodología del departamento en el que
actualmente trabajo, basada en Scrum

El 13 de enero de 2016, 15:49, Bernabé Estrada <[email protected]>
escribió:

> Y con sentencias preparadas?
>
> El 13 de enero de 2016, 4:26, Juan Ramón Garcia <[email protected]>
> escribió:
>
>> Hola Bernabé:
>>
>> El código quedaría muy poco "elegante" y farragoso de comprender, yo os
>> he mandado un ejemplo sencillito pero intervienen 3 tablas, cada una de
>> ellas con decenas de elementos, las combinaciones AND y OR serían
>> larguísimas.
>>
>> Un saludo.
>> Juanra
>>
>> El 12 de enero de 2016, 18:00, Bernabé Estrada <[email protected]
>> > escribió:
>>
>>> Sin pensar, solo traduciendo tus if podría ser así:
>>>
>>>
>>> WHERE B.FECENT  = :W-FECHA and  (
>>>
>>> (:w-horaini1 <> "    " AND B.HINIENT = :W-HORAINI1)
>>>
>>> or
>>>
>>> (:w-horaini2 <> "    " AND B.HINIENT = :W-HORAINI2)
>>>
>>> )
>>>
>>>  AND B.CODEST IN ("20", "25", "27")
>>>
>>>
>>> El 12 de enero de 2016, 10: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.
>>>
>>
>>
>> ____________________________________________________
>> Ú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