From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: * X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00,INVALID_MSGID, TO_NO_BRKTS_PCNT autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,2203a21a136b39cc,start X-Google-Attributes: gid103376,public From: Viqar Abbasi Subject: Fortran's Equivalence Date: 1997/03/25 Message-ID: <333840D1.7B12@cae.ca>#1/1 X-Deja-AN: 228426807 Organization: CAE Electronics Ltd Newsgroups: comp.lang.ada Date: 1997-03-25T00:00:00+00:00 List-Id: Hi all... Can anyone tell me the "standard" way to implement Fortran's "EQUIVALENCE" in ADA? Okay, okay, I realize that this is not really something that should be used in Fortran (or ADA) anyway. Still, I need to do something as follows: I have a BIT_PATTERN : System.Unsigned_32. The first 4 bits represent an integer A, the next 17 represent another record B, the last eleven represent an integer C. Ada gives something beautiful, in the "use at" clause, which lets me define a record to superimpose onto the bit pattern. The big problem with this approach is that it isn't guaranteed by the LRM, and I need my application to be portable to other Ada implementations. The Ada Quality and Style Guide, Clause 5.9.4, also tells us that we should not use the "use at" clause to do such things. I am using the GNAT compiler, 3.07 on the SGI. The final system will be delivered for a VAX. I have started doing my mapping via "Unchecked Conversions". This seems to be going well, as long as I take care of the VAX/SGI bit-pattern differences. Would using Unchecked_Conversions, when the sizes are always the same, be considered 100% portable, and will work under any ADA implementation? Furthermore, are any of you aware of a better way to map variables on top of each other? Please consider in any reply that I have extremely tight speed requirements as well. Thank you kindly, Viqar