Hrmcobol,
Bueno, antes de nada Hrm,
nunca utilices nombres_de_variables con el guión medio (-), usa siempre el guión bajo (_), porque si no, el gestor de SQL, cree que estás restando los valores de esas 2 variables, yo al principio me volví loco con eso, hasta que me di cuenta de casualidad, por eso en el ejemplo que te he puesto, uso las mismas variables que tú, pero cambiando el guión.
Para ese tipo de consulta, (que dependen de unas condiciones para montar un tipo u otro de consulta), no puedes hacerlo con un
DECLARE sólo, has de usar un
PREPARE también, prueba de la siguiente manera a ver si te funciona:
Código COBOL:
INITIALIZE SQL_WG_TXT001.
STRING "SELECT * FROM EST_ORIGEN WHERE "
"ART_DESCRI LIKE '%RECEP%' AND ART_CODIGO LIKE '%X-123%'"
DELIMITED BY SIZE INTO SQL_WG_TXT001
END-STRING.
EXEC SQL
DECLARE cursor_1 CURSOR FOR CONSULTA
END-EXEC.
EXEC SQL
PREPARE CONSULTA FROM :SQL_WG_TXT001
END-EXEC.
EXEC SQL
OPEN cursor_1
END-EXEC.
.
.
.
.
EXEC SQL
CLOSE cursor_1
END-EXEC.
De ésta manera, con el
STRING y el
PREPARE, puedes montar la consulta que quieras, si no, imagínate lo que sería hacer una consulta de la pantalla que adjunto ...
Si necesitas un ejemplo más grande, dímelo y te pongo alguno de los que tengo hecho en algún programa mío.
Un saludo