From: "Mark A. Biggar" <mark@biggar.org>
Subject: Re: terminate applications
Date: Thu, 17 Jul 2003 20:55:26 GMT
Date: 2003-07-17T20:55:26+00:00 [thread overview]
Message-ID: <23ERa.75454$OZ2.12362@rwcrnsc54> (raw)
In-Reply-To: <bf6upn$b2m7q$1@ID-25716.news.uni-berlin.de>
Nick Roberts wrote:
> "Riccardo" <rfulcoli@amsjv.it> wrote in message
> news:bf5uks$8n0$1@e3k.asi.ansaldo.it...
>
>
>>is present a function that terminated applications?
>>if yes what's?
>>
>>for example: exit(0); // language C
>
>
> You should transfer control to the end of the main subprogram. For example:
>
> with Ada.Text_IO;
> procedure Main is
> Count: Natural := 0;
> procedure Some_Inner_Procedure is
> use Ada.Text_IO;
> begin
> Put_Line("Hello World");
> if Count = 100 then
> -- we want to terminate program here
> goto End_of_Program;
> end if;
> end Some_Inner_Procedure;
> begin
> loop
> Some_Inner_Procedure;
> Count := Count + 1;
> end loop; -- infinite loop
> <<End_of_Program>> -- this is how you write a goto label in Ada
> end Main;
>
> This example doesn't necessarily show the most elegant technique, but it is
> generally acceptable, and illustrates the idea.
>
> Of course, the best technique is always to let the program flow naturally to
> the end of the main subprogram, if it is reasonable to do so. To illustrate
> this, the above example would certainly be better rewritten like this:
>
> with Ada.Text_IO;
> procedure Main is
> procedure Some_Inner_Procedure is
> use Ada.Text_IO;
> begin
> Put_Line("Hello World");
> end Some_Inner_Procedure;
> begin
> for i in 1..100 loop
> Some_Inner_Procedure;
> end loop;
> end Main;
>
> I think it is quite important that, normally, you do not use any other
> method to terminate an Ada program, since using another method could prevent
> library packages (e.g. Ada.Text_IO, used in my examples) from finalizing
> ('cleaning up') properly.
If you really need to abort an Ada program form some deeply nested code,
raising an exception is a reaaonable way to do it. All clean up actions
are guarenteed to happen and you can add a handler to the main procedure
to do any last gasp stuff cleanly.
--
mark@biggar.org
mark.a.biggar@comcast.net
next prev parent reply other threads:[~2003-07-17 20:55 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-17 10:39 terminate applications Riccardo
2003-07-17 19:54 ` Nick Roberts
2003-07-17 20:55 ` Mark A. Biggar [this message]
2003-07-17 22:44 ` Nick Roberts
2003-07-18 3:55 ` sk
-- strict thread matches above, loose matches on Subject: below --
2003-07-18 9:36 christoph.grein
2003-07-18 10:54 ` Jeffrey Creem
2003-07-18 11:51 ` Marin David Condic
2003-07-18 13:26 ` Nick Roberts
2003-07-18 15:18 ` Jeffrey Creem
2003-07-19 15:44 ` Marin David Condic
2003-07-20 2:03 ` Robert I. Eachus
2003-07-20 11:04 ` Marin David Condic
2003-07-20 17:53 ` Robert I. Eachus
2003-07-21 12:02 ` Marin David Condic
2003-07-21 20:31 ` Robert I. Eachus
2003-07-22 12:11 ` Marin David Condic
2003-07-22 12:26 ` Arnaud Charlet
2003-07-22 12:36 ` Marin David Condic
2003-07-22 13:23 ` Arnaud Charlet
2003-07-22 23:23 ` Marin David Condic
2003-07-22 23:46 ` Samuel Tardieu
2003-07-23 12:22 ` Marin David Condic
2003-07-23 22:17 ` Randy Brukardt
2003-07-24 1:47 ` Hyman Rosen
2003-07-24 3:36 ` tmoran
2003-07-24 3:44 ` Hyman Rosen
2003-07-24 8:02 ` Samuel Tardieu
2003-07-24 19:54 ` Randy Brukardt
2003-07-24 7:45 ` Dmitry A. Kazakov
2003-07-24 14:54 ` Warren W. Gay VE3WWG
2003-07-24 15:46 ` Dmitry A. Kazakov
2003-07-26 2:58 ` Warren W. Gay VE3WWG
2003-07-28 8:17 ` Dmitry A. Kazakov
2003-07-28 21:08 ` Warren W. Gay VE3WWG
2003-07-29 10:42 ` Marin David Condic
2003-07-29 13:47 ` Hyman Rosen
2003-07-29 17:04 ` Warren W. Gay VE3WWG
2003-07-24 12:01 ` Marin David Condic
2003-07-24 20:12 ` Randy Brukardt
2003-07-24 23:11 ` Robert I. Eachus
2003-07-26 12:52 ` Marin David Condic
2003-07-26 3:28 ` Warren W. Gay VE3WWG
2003-07-24 11:51 ` Marin David Condic
2003-07-24 20:32 ` Randy Brukardt
2003-07-26 3:16 ` Warren W. Gay VE3WWG
2003-07-26 13:16 ` Marin David Condic
2003-07-26 15:23 ` Nick Roberts
2003-07-26 15:48 ` Warren W. Gay VE3WWG
2003-07-27 11:36 ` Marin David Condic
2003-07-26 19:52 ` rleif
2003-07-26 13:01 ` Marin David Condic
2003-07-24 14:46 ` Warren W. Gay VE3WWG
2003-07-24 18:50 ` tmoran
2003-07-26 13:21 ` Marin David Condic
2003-07-23 4:02 ` Robert I. Eachus
2003-07-23 12:28 ` Marin David Condic
2003-07-24 16:06 ` Robert I. Eachus
2003-07-26 13:33 ` Larry Kilgallen
[not found] ` <Pine.LNX.4.44.0307221518190.26977-10000Organization: LJK Software <$TwrUBtoh25l@eisner.encompasserve.org>
2003-07-26 15:07 ` Warren W. Gay VE3WWG
2003-07-27 11:43 ` Marin David Condic
2003-07-26 17:27 ` Larry Kilgallen
[not found] ` <Pine.LNX.4.44.0307221518190.26977-10000Organization: LJK Software <etldVqgp8sE1@eisner.encompasserve.org>
2003-07-26 20:18 ` Warren W. Gay VE3WWG
2003-07-26 20:24 ` Larry Kilgallen
[not found] ` <Pine.LNX.4.44.0307221518190.26977-10000Organization: LJK Software <q5jLYypXp6Yg@eisner.encompasserve.org>
2003-07-27 21:52 ` Warren W. Gay VE3WWG
2003-07-28 2:45 ` Larry Kilgallen
2003-08-01 17:00 ` Warren W. Gay VE3WWG
2003-08-01 17:56 ` Larry Kilgallen
2003-08-01 18:17 ` Warren W. Gay VE3WWG
2003-08-01 18:48 ` Larry Kilgallen
2003-07-22 12:59 ` Lutz Donnerhacke
2003-07-22 5:16 ` Randy Brukardt
2003-07-22 12:02 ` Marin David Condic
2003-07-22 14:45 ` Nick Roberts
2003-07-23 1:08 ` Dave Thompson
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox