Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site ucbvax.ARPA
Path: utzoo!watmath!clyde!burl!ulysses!ucbvax!mit-multics.arpa!Mats_Ohlin_FOA2%QZCOM.MAILNET
From: Mats_Ohlin_FOA2%QZCOM.MAILNET@MIT-MULTICS.ARPA
Newsgroups: net.lang.ada
Subject: Mutually Recursive Data-Structures in Ahis on csnet a couple of times a
Message-ID: <123750@QZCOM>
Date: Sat, 21-Sep-85 06:27:31 EDT
Article-I.D.: QZCOM.123750
Posted: Sat Sep 21 06:27:31 1985
Date-Received: Sun, 22-Sep-85 23:55:36 EDT
References: <123604@QZCOM>
Sender: daemon@ucbvax.ARPA
Reply-To: ADA_mailing_list%QZCOM.MAILNET@MIT-MULTICS.ARPA
Organization: The ARPA Internet
Lines: 12

This problem is well known in other languages, e.g. SIMULA.
The problem is not covered in the language definition, however
at least some systems allow the user to compile the first unit
in which the compilation fails *but still generates some attribute
information /used by the compiler when compiling dependent modules/*.
This first compilation then lacks the necessary EXTERNAL declaration
(==> module 2).
Then compiling module 2 is possible even if it is referring to
an uncomplete definition of module 1. Recompiling module 1, this
time including the EXTERNAL declaration, recompiling module 2
and finally recompiling module 1 solves the problem. Cumbersome
maybe, but it works and with full security.