Copyright Digital Equipment Corp. All rights reserved.

EXPAND

   The EXPAND function determines the symbol to which an occurrence
   belongs and returns the full set of occurrences for the symbol.

   For example, the following code fragments, written in a pseudo
   language, declare and use the variable i in three files.

     file 1          file 2          file 3
     ------          ------          ------

     GLOBAL i (d)    LOCAL i (d)     EXTERNAL i (d)

     i := 0 (wr)     i := 5 (wr)     IF i EQUALS 0 (rr)

     (d)  - declaration
     (wr) - write reference
     (rr) - read reference

   The pseudo language defines variables, such that the variable i
   in "file 1" and the variable i in "file 3" are the same variable.
   The variable i in "file 2", however, is a different variable. SCA
   treats these variables in the same manner by saying there are two
   unique symbols which happen to have the same name.

   The important point in the previous example is that what the
   programmer considers unique items SCA also considers unique items.
   In SCA terms, these items are symbols.

   Given the previous code fragments, consider the follwoing query:

     FIND SYMBOL_CLASS=VARIABLE AND OCCURRENCE=READ

   This query returns one occurrence, which is the read reference in
   "file 3." Now consider the next query:

     FIND EXPAND( symbol_class=variable and occurrence=read )

   This query returns two occurrences of "i" in "file 1" and the two
   occurrences of "i" in "file 3." The EXPAND function uses the read
   reference to determine the corresponding symbol and then returns
   all the occurrences for that symbol. In this case the symbol was
   the global variable "i".

   Note that the two occurrences in "file 2" are not returned because
   they belong to a different symbol. The programmer does not view
   the i in "file 2" to be the same as the i in "file 1" and "file 3"
   and SCA reflects that view.

   When given more than one occurrence, the EXPAND function performs
   this operation iteratively and removes any duplicate occurrences
   from the result.

   In the following example, you use the EXPAND function to find the
   declarations of routines defined in the system, but which are not
   used. To do this, specify the following query:

     FIND (SYMBOL=ROUTINE AND OCCURRENCE=PRIMARY) AND NOT
     EXPAND(SYMBOL=ROUTINE AND OCCURRENCE=REFERENCE)