Jean-Pierre Rosen wrote: > > declare > > D : Some_Decrete_Type := Left; > > begin > > while D <= Right loop > > sequence_of_statements > > D := Some_Decrete_Type'Succ (D); > > end loop; > > end; > > > FYI: this equivalence is wrong, a for loop is never equivalent to a while loop (unlike what C people think) > Hint: look at what happens when D=Some_Discrete_Type'Last Yes, you are right. Thank you. This is my silly bug. How about if rewriting like below ? if Left <= Right then declare D : Some_Decrete_Type := Left; begin loop sequence_of_statements exit when D >= Right; D := Some_Decrete_Type'Succ (D); end loop; end end if; Regards, -- ------------------------------------------------------------------------ Toshitaka KUMANO <[log in to unmask]>