If you are using gnat, you can add pragma Ada_83; in this body to enforce Ada_83 restrictions (provided you don't use specific Ada95 features in this body) But this is really a bug of Ada83 cerrected in Ada95 Nicolas "Magnus Sparf" a �crit dans le message news: 9ijobe$qb4$1@mercur.foa.se... > I�m new to ADA (hopefully picking up track fast) and this summer I have the > task of converting an old Ada83 application (VAX environment) to Ada95 (PC > environment). > In the very heart of this application there is a homemade database that > compiles without problem in the VAX environment. When I compile it on GNAT > 3.13p in the PC environment. I get the following error: > > db.adb:58:49: actual for "Element_Type" must be a definite subtype :::(the > last line in the extract) > > Extract of code (DB is a generic package and used to create a lot of > different databases): > -------------------------------------------------------------------------- -- > ----------- > package body DB is > > type FILLED_TABLES is array (SMALL_NAT range <>) of BOOLEAN; > pragma pack (FILLED_TABLES); > > type LINE_COL is > record > X_V : SMALL_NAT := 1; > Y_V : SMALL_NAT := 1; > end record; > > type TABLE_VALUES is array (SMALL_NAT range <>) of LINE_COL; > > type M_T is array (SMALL_NAT range <>, > SMALL_NAT range <>) of ITEM; > type B_T is array (SMALL_NAT range <>, > SMALL_NAT range <>) of BOOLEAN; > > > type MATRIX (MAX : SMALL_NAT; > FIRST_RECORD : BOOLEAN; > ROWS_FIRST : SMALL_NAT; > ROWS_LAST : SMALL_NAT; > COLUMNS_FIRST : SMALL_NAT; > COLUMNS_LAST : SMALL_NAT) is > > record > case FIRST_RECORD is > when TRUE => > -- description of entire file with tables > FILLED : FILLED_TABLES(2..MAX) := > (others => FALSE); > DISCRIMANT_VALUES : TABLE_VALUES(2..MAX) := > (others => (1, 1)); > when FALSE => > -- tables > VALUE : M_T (ROWS_FIRST..ROWS_LAST, > COLUMNS_FIRST..COLUMNS_LAST); > ITEM_PUT : B_T (ROWS_FIRST..ROWS_LAST, > COLUMNS_FIRST..COLUMNS_LAST); > RAD_INDEX : R_T (ROWS_FIRST..ROWS_LAST); > COLUMN_INDEX : C_T (COLUMNS_FIRST..COLUMNS_LAST); > end case; > end record; > > package MY_DIRECT_IO is new Ada.DIRECT_IO(MATRIX); > -------------------------------------------------------------------------- -- > ------------- > > If I give type MATRIX default values it compiles with warnings about Storage > constraints errors in runtime (that also occurs...). MATRIX is used at a lot > of other places further down. > > Are there any quick (not dirty) solutions to this problem? My own ideas is > to create separate databases for all eight databases that uses DB (CAR_DB, > BOAT_DB, HOUSE_DB...) with specified values for MATRIX, but that seems like > a lot of work and not very objectoriented. > I�ve read the GNAT RM about the problem (Ada95 <-> Ada83) "Indefinite > subtypes in generics" but don`t seem to understand, especially when there�s > a standard package involved. > > All you experienced ones out there leave the "Ada is dead"-discussions and > pleaseeeeee help me out... > > Magnus Sparf > magnus-s@dsv.su.se > > >