comp.lang.ada
 help / color / mirror / Atom feed
From: dog.ee.lbl.gov!overload.lbl.gov!agate!usenet.ins.cwru.edu!magnus.acs.ohio -state.edu!cis.ohio-state.edu!news.sei.cmu.edu!jbg@ucbvax.Berkeley.EDU  (John G
Subject: Re: sequential io with multiple types
Date: 27 Oct 92 15:21:46 GMT	[thread overview]
Message-ID: <1992Oct27.152146.17600@sei.cmu.edu> (raw)

In article <9210160237.AA26805@akela.src.honeywell.com>,
englehar@src.honeywell.com (Matt Englehart) writes: 

|> Along the same lines as my previous question, suppose that I have a file
|> with short_floats and integers written out in binary format (by a fortran
|> program, as real*4 and integer*4).  If I instantiate SEQUENTIA_IO with type 
|> integer, and read all data as an integer, how do I convert data that is not
|> an integer from the integer value read in to the true short_float
|> representation?

The obvious answer here is to use unchecked conversion.  This is a good
example of well-justified use.

A less obvious answer is to point out that Ada allows a program to open the
same external file with *different* data types, i.e., you can instantiate
SEQUENTIAL_IO with different data types, declare a file object for each of the
instantiated file types, and apply the appropriate open procedure to each of
these file objects using the same external file name.  Then you read from an
appropriate file object depending on what type of data you expect the next
file element to be.

This is allowed because the Ada OPEN procedure is not the same as the
operating system notion of opening a file -- OPEN in Ada only establishes an
"association" between an (internal) file object and an external file.

Of course, not all Ada implementations support such multiple "openings" of the
same external file because this behavior is not required by the standard, but
it is allowed, and it is quite useful if an implementation supports it.

John B. Goodenough					Goodenough@sei.cmu.edu
Software Engineering Institute				412-268-6391

             reply	other threads:[~1992-10-27 15:21 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1992-10-27 15:21 dog.ee.lbl.gov!overload.lbl.gov!agate!usenet.ins.cwru.edu!magnus.acs.ohio [this message]
  -- strict thread matches above, loose matches on Subject: below --
1992-10-30 15:11 sequential io with multiple types agate!spool.mu.edu!yale.edu!qt.cs.utexas.edu!cs.utexas.edu!zaphod.mps.ohi
1992-10-27 17:40 dog.ee.lbl.gov!overload.lbl.gov!agate!linus!linus.mitre.org!maestro!jclan
1992-10-27 17:02 David Emery
1992-10-16  2:37 van-bc!cs.ubc.ca!destroyer!sol.ctr.columbia.edu!src.honeywell.com!mail-en
replies disabled

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