comp.lang.ada
 help / color / mirror / Atom feed
From: anon@anon.org (anon)
Subject: Re: How to exit an Ada program with (unix shell) error code?
Date: Thu, 14 May 2009 02:55:43 GMT
Date: 2009-05-14T02:55:43+00:00	[thread overview]
Message-ID: <PKLOl.226644$4m1.46779@bgtnsc05-news.ops.worldnet.att.net> (raw)
In-Reply-To: d73c38a7-8d9b-447f-a462-2aac8630c45f@v23g2000pro.googlegroups.com

Well, lets see. I did answer the original poster, Adam. It just that 
Martin suggest that functions are not portable and that where you 
came in.

Now, all OS's (AT&T OS port, Linux, and Windows) shell or application 
loaders, calls a program using the following format:

 Exit_Status := Application.all ( Augment_Count, 
                                  Argument_List, 
                                  Environment_List ) ;

This is defined from the "implementation's execution environment" which 
RM 1.1.3 (6) states that if it is "impossible or impractical" then Ada
variations are permitted. Which states that all Ada partitions that are 
executed under this type of OS which calls a program as a function shall 
return a value aka Exit_Status. 

The exception is where the program exits abnormally, such as an 
"unhanded exception" or using the two exit routines 
"System.OS_LIB.OS_Exit" and "System.OS_LIB.OS_Abort".

Also RM 1.1.3 (12), strengths these calling conversion and the normal 
function type of return value. 

Then you have RM 10.2 (21) which states that Ada must conform to the 
"implementation's execution environment". By return an exit status 
unless it terminates abnormally since it was called as a function. 

10.2  (21) A call to the main subprogram, if the partition has one. If 
           the main subprogram has parameters, they are passed; where 
           the actuals come from is implementation defined. What 
           happens to the result of a main function is also 
           implementation defined.

1.1.3 (12) Any result returned or exception propagated from a main 
           subprogram (see 10.2) or an exported subprogram (see 
           Annex B) to an external caller;

1.1.3 (6)  Contain no variations except those explicitly permitted by 
           this International Standard, or those that are impossible or 
           impractical to avoid given the implementation's execution 
           environment;


Note: Hope you had a fun holiday!!!


Also for Martin.

Can a user-created procedure (main subprogram) be concerned as a "public 
parameterless library procedures.  No! The reason is that the procedure 
is not public, it first must be bound by the binding process.

10.2  (29) An implementation may restrict the kinds of subprograms it 
           supports as main subprograms. However, an implementation is
           required to support all main subprograms that are public 
           parameterless library procedures.




In <d73c38a7-8d9b-447f-a462-2aac8630c45f@v23g2000pro.googlegroups.com>, Adam Beneschan <adam@irvine.com> writes:
>On May 8, 3:17 am, a...@anon.org (anon) wrote:
>
>[Note: I was out of town for a long weekend, for Mother's Day, and saw
>this post just today.]
>
>> Now, in the case of, Ada.Command_Line, RM A.15 (21) states:
>>
>> 21  An alternative declaration is allowed for package Command_Line if
>> different functionality is appropriate for the external execution
>> environment.
>
>OK, I wasn't aware of this.  But it doesn't help your case any.  In
>the post to which I was responding, you said:
>
>"And since there are times where the Ada.Command_Line package is
>not available, there has to be a way to send a 'exit status' to the OS
>in those case."
>
>If the OS is such that it expects programs to return an exit status,
>then certainly an alternative (or omitted) declaration of
>Ada.Command_Line that did not support Set_Exit_Status would not be
>"appropriate for the external execution environment".  (It would only
>be appropriate in cases where there is no real OS, or if there's a
>bare-bones OS that does not care about exit statuses.)  I think the
>point you're trying to make is that the language should *require*
>support for parameterless functions as main programs, but you still
>haven't demonstrated your point; ignoring cases where the vendor just
>plain screws up by providing an inappropriate version of Command_Line,
>you have not shown that there is ever a need to support main programs
>of this form.
>
>                              -- Adam




  reply	other threads:[~2009-05-14  2:55 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-04  9:08 How to exit an Ada program with (unix shell) error code? reinkor
2009-05-04  9:17 ` Samuel Tardieu
2009-05-04  9:26   ` reinkor
2009-05-04  9:31     ` Ludovic Brenta
2009-05-04  9:47       ` reinkor
2009-05-04  9:54         ` Martin
2009-05-04 11:38           ` sjw
2009-05-04 10:07       ` stefan-lucks
2009-05-04 13:42     ` Robert A Duff
2009-05-04 16:19       ` Martin
2009-05-07  9:48         ` anon
2009-05-04 16:09 ` anon
2009-05-05 10:49   ` Rob Norris
2009-05-05 11:15     ` Georg Bauhaus
2009-05-05 11:43   ` Martin
2009-05-05 14:57     ` Adam Beneschan
2009-05-05 15:34       ` Jean-Pierre Rosen
2009-05-06 15:28         ` Adam Beneschan
2009-05-06 22:10           ` Randy Brukardt
2009-05-07  9:08           ` anon
2009-05-07 10:01             ` Georg Bauhaus
2009-05-07 11:22               ` anon
2009-05-07 12:08                 ` Martin
2009-05-07 13:34                 ` Georg Bauhaus
2009-05-07 16:26             ` Adam Beneschan
2009-05-08 10:17               ` anon
2009-05-12 22:55                 ` Adam Beneschan
2009-05-14  2:55                   ` anon [this message]
2009-05-14  8:04                     ` Martin
2009-05-14  8:39                     ` Martin
2009-05-14  8:45                       ` Martin
2009-05-14  9:34                       ` Ludovic Brenta
2009-05-14 10:05                         ` Martin
2009-05-14 12:38                           ` Georg Bauhaus
2009-05-14 15:34                     ` Adam Beneschan
2009-05-15 10:20                       ` anon
2009-05-15 11:19                         ` Martin
2009-05-05 20:48       ` anon
2009-05-05 21:01         ` Adam Beneschan
2009-05-06 11:30         ` Hibou57 (Yannick Duchêne)
2009-05-05 20:31     ` anon
2009-05-05 21:27       ` Martin
2009-05-06  8:41         ` anon
2009-05-06  9:14           ` Martin
2009-05-06 11:41             ` Georg Bauhaus
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox