From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 27 Oct 92 15:21:46 GMT 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 oodenough) Subject: Re: sequential io with multiple types Message-ID: <1992Oct27.152146.17600@sei.cmu.edu> List-Id: 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