El siguiente ejemplo explica como usar consultas dinamicas en PROGRESS. La idea es emplear un puntero handle, asignarle el codigo de la consulta, abrir el puntero, recorrerlo, cerrarlo.
/* declaro la variable como handle */
DEF VAR hQuery AS HANDLE NO-UNDO.
/* defino mi consulta */
DEF VAR cSQL AS CHAR NO-UNDO.
cSQL = "FOR EACH tabla1 NO-LOCK,
EACH tabla2 NO-LOCK,
EACH tabla3 NO-LOCK".
/* creo la query */
CREATE QUERY hQuery.
/* debemos agregar 1 buffer por tabla usada o referenciada */
hquery:SET-BUFFERS(BUFFER tabla1:HANDLE, BUFFER tabla2:HANDLE, BUFFER tabla3:HANDLE).
/* inicializo la query */
hquery:QUERY-PREPARE(cSQL).
/* abro la query para recorrerla */
hQuery:QUERY-OPEN().
/* obtengo el primer registro a partir de la query dinamica */
hQuery:GET-FIRST().
/* mientras tenga registros... */
DO WHILE NOT hQuery:QUERY-OFF-END:
/* podemos acceder a los campos de las tablas de la forma: tablai.campoj */
/* avanzo el puntero */
hQuery:GET-NEXT().
END.
Suerte,
Walter.