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=-0.3 required=5.0 tests=BAYES_00,FREEMAIL_FROM, REPLYTO_WITHOUT_TO_CC,XPRIO autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,488864006f91ea7a,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-04-06 14:48:47 PST Path: supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!148.122.208.68!news2.oke.nextra.no!nextra.com!news3.oke.nextra.no.POSTED!not-for-mail Reply-To: "Frank" From: "Frank" Newsgroups: comp.lang.ada Subject: Pascal's: Variant Record or C's union X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2615.200 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 Message-ID: Date: Fri, 6 Apr 2001 23:48:26 +0200 NNTP-Posting-Host: 130.67.135.21 X-Complaints-To: news-abuse@nextra.no X-Trace: news3.oke.nextra.no 986593716 130.67.135.21 (Fri, 06 Apr 2001 23:48:36 MEST) NNTP-Posting-Date: Fri, 06 Apr 2001 23:48:36 MEST Organization: Nextra Public Access Xref: supernews.google.com comp.lang.ada:6593 Date: 2001-04-06T23:48:26+02:00 List-Id: Hi! How do I create a record in Ada, that behaves as the variant record in Pascal or similar to the union in C? It seems to me that the expression "variant" in Ada is used on how you define?/declare? :-) types based on a "type with many possible apperances":-). Something like: type TYPE_GOODS is record ITEM_NAME : string(1..6); GOODS_TYPE : integer; case GOODS_TYPE <--------??? when LIQUID: <---------??? LITRE : float; VOLUME_PCT : float; when TEXTILE: LENGTH : float; WIDTH : float; end case; end record; A : TYPE_GOODS; .. .. A.ITEM_NAME := 'COGNAC'; A.GOODS_TYPE := LIQUID; A.LITRE := 0.7; A.VOLUME_PCT := 45; A.ITEM_NAME := 'RED '; A.GOODS_TYPE := TEXTILE; A.LENGTH := 10.0; A.WIDTH := 0.6; Frank