comp.lang.ada
 help / color / mirror / Atom feed
From: eachus@spectre.mitre.org (Robert I. Eachus)
Subject: Re: Leading zeros with Int_IO.Put()?  Or another package?
Date: 1996/11/06
Date: 1996-11-06T00:00:00+00:00	[thread overview]
Message-ID: <EACHUS.96Nov6183636@spectre.mitre.org> (raw)
In-Reply-To: baldwinE0Eq2n.KLB@netcom.com


In article <baldwinE0Eq2n.KLB@netcom.com> baldwin@netcom.com (J.D. Baldwin) writes:

 >  I just got a copy of GNAT and 'make'-ed the examples.  The first one
 >  I ran, cal.exe, gave me the following date and time:

 >		   11/5/1996 10:4:3

 >  . . . when what one *wants* of course is:

 >		   11/05/1996 11:04:03

 >  (Leading zero optional--but, by me, preferred--for the date; omitting
 >  it is of course inexcusable for the minutes and seconds fields in the
 >  time.)...

 >  So I added relevant lines of code to CAL.ADB:

 >		     if (MINUTE <= 9) then
 >			Int_IO.Put(0, 0);
 >		     end if;
 >		     Int_IO.Put(MINUTE,0);

 >  . . . and so forth, for each relevant value.

 >  My question:  is there a better way to pad out integers with leading
 >  zeros?  What if I wanted to pad to a width of three or four or sixteen,
 >  all with zeros?  Is there a standard way to achieve this in Ada?

  Three answers.  1) Use the ADAR components which are designed
specifically to address things like this for Ada 83. 2) In Ada 95
look at Annex F.  3) Write your own Put function and use it instead of
the Text_IO.Integer_IO.Put operation.  There are several ways to do
this cleanly and still get a leading sign or blank if you want, but in
this case what you want is:

     with Int_IO;
     function Put_Leading(To: out String; Item: in Int_IO.Num) is
     begin
       Int_IO.Put(To,Item);
       for I in To'RANGE loop
         if To(I) = ' '
         then To(I) := '0';
         elsif To(I) = '-'  and I /= 1
         then To(1) := '-'; To(I) := '0';
         end if;
       end loop;
     end Put_Leading;

    This may be a little heavy for what you want.  (For your case,
negative numbers should not occur so moving the sign to the lead
position is overkill.)


--

					Robert I. Eachus

with Standard_Disclaimer;
use  Standard_Disclaimer;
function Message (Text: in Clever_Ideas) return Better_Ideas is...




  parent reply	other threads:[~1996-11-06  0:00 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-11-05  0:00 Leading zeros with Int_IO.Put()? Or another package? J.D. Baldwin
1996-11-05  0:00 ` Samuel Tardieu
1996-11-05  0:00 ` David Shochat
1996-11-08  0:00   ` robin
1996-11-08  0:00     ` Robert Dewar
1996-11-10  0:00       ` Verne Arase
1996-11-13  0:00       ` robin
1996-11-13  0:00         ` Ken Garlington
1996-11-19  0:00           ` robin
1996-11-19  0:00             ` Robert Dewar
1996-11-20  0:00             ` Norman H. Cohen
1996-11-20  0:00             ` Richard A. O'Keefe
1996-11-20  0:00               ` robin
1996-11-20  0:00                 ` Richard A. O'Keefe
1996-11-22  0:00                   ` robin
1996-11-22  0:00                     ` Richard A. O'Keefe
1996-11-23  0:00                       ` robin
1996-11-20  0:00                 ` Robert Dewar
1996-11-22  0:00                   ` Richard A. O'Keefe
1996-11-25  0:00                   ` shmuel
1996-11-20  0:00                 ` Larry J. Elmore
1996-11-25  0:00                   ` robin
1996-11-25  0:00                     ` Robert Dewar
1996-11-26  0:00                     ` Larry J. Elmore
1996-11-21  0:00                 ` Jerry Coffin
1996-11-22  0:00                 ` Ken Garlington
1996-11-20  0:00               ` Robert Dewar
1996-11-22  0:00             ` Ken Garlington
1996-11-27  0:00               ` Verne Arase
1996-12-02  0:00                 ` Ken Garlington
     [not found]             ` <56tjrh$4a <MPLANET.3294c204jcoffin989a3e@news.rmi.net>
1996-11-24  0:00               ` Bert
1996-11-13  0:00       ` robin
1996-11-13  0:00         ` Ken Garlington
1996-11-19  0:00           ` robin
1996-11-22  0:00             ` Robert Dewar
1996-11-22  0:00             ` Ken Garlington
1996-11-17  0:00         ` Robert Dewar
1996-11-08  0:00     ` Ken Garlington
1996-11-21  0:00   ` Robert I. Eachus
1996-11-22  0:00     ` robin
1996-11-06  0:00 ` Robert I. Eachus [this message]
1996-11-08  0:00   ` Norman H. Cohen
1996-11-06  0:00 ` Norman H. Cohen
1996-11-07  0:00   ` Pascal Obry
1996-11-07  0:00     ` Norman H. Cohen
1996-11-08  0:00   ` Norman H. Cohen
1996-11-09  0:00     ` Robert Dewar
1996-11-06  0:00 ` Stephen Leake
1996-11-08  0:00 ` David Emery
1996-11-24  0:00 ` Fergus Henderson
1996-11-24  0:00   ` Robert Dewar
1996-11-25  0:00     ` J. David Bryan
1996-11-25  0:00     ` Larry Kilgallen
1996-11-27  0:00     ` Verne Arase
1996-11-28  0:00   ` Richard A. O'Keefe
  -- strict thread matches above, loose matches on Subject: below --
1996-11-05  0:00 Collection of 2500+ links about Object-Orientation - interested ? Manfred Schneider
1996-11-07  0:00 ` Leading zeros with Int_IO.Put()? Or another package? John Herro
1996-11-07  0:00   ` James Rogers
1996-11-07  0:00   ` Robert Dewar
1996-12-15  0:00 Robert Dewar
replies disabled

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