Hello!! The following program 1. behaves the same way in GNAT DOS 3.05 and GNAT Win95 3.09 ------------ 2. behaves different in GNAT DOS 3.07 --------- Main Program: ------------- --Body with R; with S; procedure Principal is begin null; end Principal; Package R (increments periodically a variable and prints it): --------- --Specification package R is pragma Elaborate_Body; end R; --Body with D; with text_io; use text_io; with Ada.Real_Time; use Ada.Real_Time; package body R is N : D.D_T; task Thread is pragma Priority( 3); end Thread; procedure Codigo_Periodico is package My_Int_IO is new Integer_IO(Integer); use My_Int_IO; begin D.Operacion (D.Inc, N); Put(integer(N)); end Codigo_Periodico; task body Thread is T : Time; Periodo : Time_Span := Milliseconds(2000); begin T := Clock + Periodo; loop delay until(T); Codigo_Periodico; T := T + Periodo; end loop; end Thread; end R; Package S: (The same than R, but it decrements instead of incrementing) ---------- --Specification package S is pragma Elaborate_Body; end S; --Body with D; with text_io; use text_io; with Ada.Real_Time; use Ada.Real_Time; package body S is N : D.D_T; task Thread is pragma Priority(3); end Thread; procedure Codigo_Periodico is package My_Int_IO is new Integer_IO(Integer); use My_Int_IO; begin D.Operacion (D.Dec, N); --(The only different sentence from package R) Put(integer(N)); end Codigo_Periodico; task body Thread is T : Time; Periodo : Time_Span := Milliseconds(2000); begin T := Clock + Periodo; loop delay until(T); Codigo_Periodico; T := T + Periodo; end loop; end Thread; end S; Package D: --------- --Specification package D is type Op_T is (Inc, Dec); type D_T is new integer; procedure Operacion (Op : Op_T; Res : out D_T); end D; --Body package body D is dato : D_T := 0; procedure Operacion (Op : Op_T; Res : out D_T) is begin case Op is when Inc => dato := dato + 1; when Dec => dato := dato - 1; end case; Res := dato; end Operacion; end D; Well, The output of GNAT DOS 3.05 and GNAT Win95 3.09 is somthing like that: 0 1 0 1 0 -1 0 1 0 -1 ... (oscilates) The output of GNAT DOS 3.07 is somthing like that: 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 ... (monotonic) My Question is: What is the good one?? Both??