@Section @Title { "@Database and @SysDatabase" } @Tag { database } @Begin @PP database.sym @Index { @@Database symbol } The @@Database symbol is used to declare the existence of a file of symbol invocations that Lout may refer to when evaluating cross references. In Basser Lout, for example, @ID @Code { "@Database @Months @WeekDays { standard }" } means that there is a file called @Code "standard.ld" containing invocations of the previously defined symbols @Code "@Months" and {@Code "@WeekDays"}. A @@Database symbol may appear anywhere a definition or a @@Use symbol may appear. Different definitions packages may refer to a common database, provided the definitions they give for its symbols are compatible. An entry is interpreted as though it appears at the point where the cross reference that retrieves it does, which allows symbols like @Code "@I" for @Code "Slope @Font" to be used in databases. The database file may not contain @@Database or @@Include symbols, and each invocation within it must be enclosed in braces. @PP Basser Lout constructs an {@I {index file}}, index.file @Index { Index file (for databases) } which in this example is called {@Code "standard.li"}, the first time it ever encounters the database, as an aid to searching it. If the database file is changed, its index file must be deleted by the user so that Basser Lout knows to reconstruct it. There is also an installation option which allows this deletion to be done automatically on suitable systems (including Unix). @PP Basser Lout searches for databases in the current directory first, then in a sequence of standard places. To search the standard places only, use sysdatabase.sym @Index { @@SysDatabase symbol } @@SysDatabase. @End @Section