I'm not sure we should measure the "march of progress" based on ease of writing print statements, but... Mike Bates writes: > If you want to make the contrast more dramatic, add some plain text, a > variable-length string, and an integer in hexadecimal. > > How many lines does it take to do this in Ada, C++, or Java: > > printf("The result for %-30s is %10.2f (%08x)\n", x, y, z); > > My question: Has anyone written good Ada equivalents to printf and > scanf? In a soon-to-be-released version of TASH, an Ada binding to Tcl/Tk, you could do the above with the Ada program whose source text is at the end of this email message. The output of this program is: The result for a piece of pi is 3.14 (00000059) The result for a half piece of pi is 1.57 (00000052) Of course, this is not pure Ada; it depends on linking with Tcl/Tk and using the TASH binding. I haven't yet started scanf and it probably will not be in the next release of TASH. By the way, this new version of TASH will also have regexp capability. -- Terry J. Westley, Principal Engineer Veridian Engineering, Calspan Operations [log in to unmask] http://www.veridian.com/ ------------------------------------------------------- Author of TASH, an Ada binding to Tcl/Tk. Visit the TASH web site at http://tash.calspan.com. ------------------------------------------------------- -------------- Ada source code follows; cut here ------------------ with Ada.Text_IO; with Tash.Floats; with Tash.Integers; with Tash.Lists; with Tash.Strings; procedure Test_Format is use type Tash.Strings.Tash_String; use type Tash.Floats.Tash_Float; use type Tash.Integers.Tash_Integer; X : Tash.Strings.Tash_String; Y : Tash.Floats.Tash_Float; Z : Tash.Integers.Tash_Integer; begin -- Test_Format -- Initialize some Tash objects to -- hold a string, float, and integer ------------------------------------ X := +"a piece of pi"; Y := +3.14159; Z := +89; -- Demonstrate use of C-style printf ------------------------------------ Ada.Text_IO.Put_Line (Tash.Lists.Format ( FormatString => "The result for %-30s is %10.2f (%08x)", Values => Tash.Lists.Create (X, Y, Z))); -- Demonstrate use of C-style printf without explictly -- creating the Tash objects: X, Y, and Z ------------------------------------------------------ Ada.Text_IO.Put_Line ( Tash.Lists.Format ( "The result for %-30s is %10.2f (%08x)", Tash.Lists.Create (+"a half piece of pi", +1.5708, +82))); end Test_Format;