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=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: "Zhu, Qun-Ying" Newsgroups: comp.lang.ada Subject: What's the cause of extra new line with Text_IO when program exit Date: Thu, 15 Aug 2013 18:02:09 -0700 Organization: A noiseless patient Spider Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Fri, 16 Aug 2013 01:02:09 +0000 (UTC) Injection-Info: mx05.eternal-september.org; posting-host="0ccb2cfc9ff2c65af7d36050d331d27f"; logging-data="14098"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/kDRol5GdupkIzKkMKSUCS" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0 SeaMonkey/2.20 Cancel-Lock: sha1:m91Y/Zg1DBR0dI+3k2CEGqPww1I= Xref: news.eternal-september.org comp.lang.ada:16884 Date: 2013-08-15T18:02:09-07:00 List-Id: Hi, I have known this problem for quite some time, but did not really know why it behave like this. These two programs: ====================================================================== -- hello.adb with Ada.Text_IO; use Ada.Text_IO; procedure Hello is begin Put("Hello"); Put(" "); Put("World!"); end Hello; -- hello_stream.adb with Ada.Text_IO; use Ada.Text_IO; with Ada.Text_IO.Text_Streams; use Ada.Text_IO.Text_Streams; procedure hello_stream is std_out : Stream_Access; begin std_out := Stream (Standard_Output); String'Write (std_out, "Hello"); String'Write (std_out, " "); String'Write (std_out, "World!"); end hello_stream; ================================================================== When executing, they have different behavior. For hello, you have: # ./hello Hello World! # While for hello_stream, you got: # ./hello_stream Hello World!# If change the last Put to Put_Line for hello, you got the same result. I would like to know why it is like that.