[EMAIL PROTECTED] escribió:
La solución era el DOU. Mi
problema(no
se si os paso a los que habeis cambiado al Free) es que como por
ejemplo
en la consulta que hice esta mañana,que al quitar indicadores hay que
cambiar
un poco la estuctura y la logica del programa,
Antes era algo así(esto no es
free,
es ILE normal):
KCLDTO
SETLL FCLDTOR
Dow Not *in69
Kcldto
READe FCLDTOR
69
If *in69
Leave
Endif
.
..
Enddo
i ahora seria así:
KCLDTO
SETLL FCLDTOR
Dou %Eof(Fcldto)
Kcldto
READe FCLDTOR
If %Eof(Fcldto)
Leave
Endif
.
.
Enddo
Y a veces me encabezono en
hacerlo
con la lógica antigua .
y a veces nos pilla encabezonados en
que la lógica es la misma.
[EMAIL PROTECTED]
escribió:
Hola Juanra. Como parte implicada te contesto lo que puedo porque
despues
de esta prueba no veo claro lo del %Eof:
Pronto vamos a cambiar de versión de S.O. y podremos programar con el
Free y tengo entendido que la tendencia es que si no se suprimen,al
menos
se restringe el uso de indicadores(si alguien está más puesto que yo
en el tema del Free,lo cual no es dificil y me quiere
corregir,bienvenido
sea). O sea, que estoy haciendo un programa de los de siempre, que en
resumidas
cuentas es un bucle(un poco especial eso sí) dentro de otro,he visto
que
cuando accedo por segunda vez al segundo bucle,%Eof está activo.
He supuesto que si IBM fomenta la desaparicion de indicadores tendria
estas
cosas previstas,y me he preguntado cómo se haria esto sin *inxx y sólo
con %Eof(fichero). La verdad,es que el bucle de dentro es un poco
especial,pero
se tienen que contemplar todas las posibilidades. En un programa
'normal',antes
del Setll habria apagado el indicador y listos. A ver los que
programen
en free cómo tratan el tema de indicadores.
Bueno, pues la respuesta a lo del bucle ya te la han
dado
los compañeros: lees antes de entrar en el bucle o haces DOU en lugar
de DOW.
Más que para repetir la solución contesto para reiterar que pienso que
el cambio merece la pena, no añade complejidad alguna y ofrece un
código
mucho más claro.
--
Saludos.
Fernando Pérez
Cerámica Saloni. Dpto. Sistemas
Pues yo tambíen utilizo (y me gusta más) la opción de Gerardo, que
pasado a tu caso sería :
KCLDTO
SETLL FCLDTOR
Kcldto
READe FCLDTOR
Dow %Eof(Fcldto)
Kcldto
READe FCLDTOR
.
.
Kcldto
READe FCLDTOR
Enddo
Ya puestos, por si no has llegado a mirar lo de las claves, en FREE ya
no son necesarios los KLIST:
( supongamos que los campos de Kcldto son clave1 y clave2)
readE (clave1: clave2) FCLDTOR ;
setLL (clave1: clave2) FCLDTOR
;
¡ Se acabó el ir al principio del programa a ver los campos por los que
se busca !
--
Saludos.
Fernando Pérez
Cerámica Saloni. Dpto. Sistemas
|
begin:vcard
fn;quoted-printable:Fernando P=C3=A9rez
n;quoted-printable:P=C3=A9rez;Fernando
org:;Sistemas
email;internet:[EMAIL PROTECTED]
tel;work:Ext. 627
version:2.1
end:vcard