comp.lang.ada
 help / color / mirror / Atom feed
From: Mark Murray <w.h.oami@example.com>
Subject: Re: Formatted IO - Fortran style or similar.
Date: Mon, 30 Jul 2012 23:12:28 +0100
Date: 2012-07-30T23:12:28+01:00	[thread overview]
Message-ID: <501706ca$0$1151$5b6aafb4@news.zen.co.uk> (raw)
In-Reply-To: <jv5lta$4dn$1@news.ox.ac.uk>

On 30/07/2012 10:59, Ian Clifton wrote:
> I’m not quite sure what facilities you’re after—I don’t know C’s
> printf()/scanf(), but presumably they are quite different from Fortran’s
> format control—but I suspect the answer is going to be “Ada’s approach
> is different” (see below).

The syntax isn't all that important; its the fine-grained method of
specifying output with a format + list_of_variables.

Fortran separates the format from the read/write statements containing
the list of variables, C's printf/scanf put the format string as the
first argument of the function call. With both, quite detailed I/O
lines can be specified with a reduction in function calling.

I like them because of the compactness:

printf("A=%d B=%6.3f C=0x%04X\n" A, B, C);

... rather than multiple calls.

>> I could have sworn I saw a PL/1-style "picture" version of this, but I'm
>> coming round to believing that this was "customer code", not standard
>> library.
>
> Here, you could be thinking about “Edited Output for Decimal types”,
> described in the ARM Appendix F.

Could be, thanks!

>> PS: Is it really the case that put(some_integer,16) will _always_
>> print the '16#9999#' format, and that there is on way _in_the_
>> _standard_library_ of *not* getting the '16#.....#' wrapper?
>> Yes, I know there are ways you can get rid of it (eg with a slice), or
>> by "rolling your own" - alternatives aren't my question here :-).
>
> I believe Ada’s approach is to specify the results of
> put(some_integer,16) sufficiently carefully that you can do such
> post‐processing with the provided string manipulation packages and be
> confident of the final result. In other words, what you are trying to
> avoid ARE the language’s facilities for doing this sort of thing. I ought
> to mention in passing, the Ada.Text_IO packages are a little
> controversial, many dislike them, but I believe they are under‐rated.

If that is the "Ada way", then so be it. :-)

I held back on that method as it felt "wasteful"; why generate
something if you know you don't need it? ("I want XXXX (hexadecimal),
why do I need to generate 16#XXXX# first?")

I suppose that learning a language's idioms are part of learning the
language. Thanks for the help!

M
-- 
Mark "No Nickname" Murray
Notable nebbish, extreme generalist.



  parent reply	other threads:[~2012-08-07  7:16 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-30  8:50 Formatted IO - Fortran style or similar Mark Murray
2012-07-30  9:59 ` Ian Clifton
2012-07-30 18:57   ` Michael Rohan
2012-07-30 22:12   ` Mark Murray [this message]
2012-07-31  7:17     ` Dmitry A. Kazakov
     [not found]     ` <npbe18d3o3gdc2ut41f1codvv6rhfgidr3@invalid.netcom.com>
2012-07-31 11:56       ` Jacob Sparre Andersen
2012-07-31 15:12         ` stefan-lucks
2012-07-31 17:34           ` Adam Beneschan
2012-08-01  6:56             ` stefan-lucks
     [not found]           ` <be5g18p0gnf2ocdf3hmgjslgnu0jogrh91@invalid.netcom.com>
2012-08-01  6:48             ` stefan-lucks
2012-08-01  8:09           ` Jacob Sparre Andersen
2012-08-01 10:28             ` Georg Bauhaus
2012-08-01 16:28             ` Simon Wright
2012-08-01 19:14             ` Michael Rohan
replies disabled

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