From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,b328eee5522f8a6c,start X-Google-Attributes: gid103376,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news2.google.com!news.glorb.com!newshub.sdsu.edu!tethys.csu.net!nntp.csufresno.edu!sn-xt-sjc-03!sn-xt-sjc-06!sn-post-sjc-01!supernews.com!corp.supernews.com!not-for-mail From: Shane Smith Newsgroups: comp.lang.ada Subject: [Beginner Problem] Varibles not getting assigned correctly Date: Fri, 11 Jan 2008 05:52:30 -0000 Organization: Posted via Supernews, http://www.supernews.com Message-ID: <13oe10uh39g0v85@corp.supernews.com> User-Agent: Pan/0.132 (Waxed in Black) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@supernews.com Xref: g2news1.google.com comp.lang.ada:19308 Date: 2008-01-11T05:52:30+00:00 List-Id: Hi all, I'm trying to write a simple program (that manacla game), I've encountered a problem where the variables that are used in a nested procedure can't be assigned a value. I'm using GNAT 4.1.2 on Linux. ---CODE--- procedure Manacla is type pits is array (1 .. 14) of Integer; type Score_Type is array (1 .. 2) of integer; type arr_point is access pits; board : arr_point; Score1 : Integer := 0; Score2 : Integer := 0; Scores : Score_type := (0,0); Player : Integer range 1 .. 2 := 1; Winner : integer := 0; Test : constant integer := 11; Pit : Integer := 0; ... procedure Status (Player : in integer) is begin -- Check if 'playing pits' are empty, if not exit while board.all(2 .. 7) = (0,0,0,0,0,0) or board.all(9 .. 14) = (0,0,0,0,0,0) loop if Player = 1 then if board.all(2 .. 7) = (0,0,0,0,0,0) then Winner := 1; else exit; end if; else if board.all(9 .. 14) = (0,0,0,0,0,0) then Winner := 2; else exit; end if; end if; end loop; end Status; ... procedure Player1 is Pit : Integer := 0; Player : Integer := 1; begin ... Status(Player); end PLayer1; begin ... player1; end Manacla; ---END CODE--- Basically main body calls player1 and player1 calls status(player) (which edits the winner variable). In gdb 'p winner' gives "$14 = 7270388". It happens to arrays and access varibles as well.