UNCL - find out who references a symbol in a library.

Syntax:

uncl library [library]* [option]*
(+|-)All (-)             (+|-)Verbose (-)
(+|-)UnRef (-)           (+|-)DeckName (-)
Level=number             Name=symbol[,symbol]*

Examples:

uncl name=get.ch uw_tools/8fw1.5/blib +verbose
uncl uw_tools/8fw1.5/blib n=error lev=2 +all
uncl mylib uw_tools/8fw1.5/blib n=error,exit l=3 +a
uncl uw_tools/8fw1.5/batl +ur +deckname

Options:

library
is the name of a random object library.
Name=symbol[,symbol]*
is a list of routine names. UNCL will tell you all the routines in the given libraries that reference one or more of the symbols in the Name= list.
+All
says that you want to see references to all SYMDEFs in modules containing the given routines.
+DeckName
displays the deckname (module name) associated with a particular module instead of its SYMDEF. If a deckname does not exist, UNCL uses the first SYMDEF. You may not use this option with +Verbose, since there will only be one deckname per module (although there may be many SYMDEFs).
Level=number
specifies a search depth (see below).
+UnRef
searches for any module that is not referenced by any other module in the libraries specified.
+Verbose
specifies that all symbols in the referencing modules are to be included in the output. Without +Verbose, UNCL only shows the first SYMDEF of the module unless there is a reference to one of the other symbols.

Description:

UNCL produces a list of all routine names (strictly speaking, primary SYMDEFs) in the specified libraries which reference the given symbols, either as a SYMREF or as a block common. This is invaluable if you want to delete or modify a routine in action. UNCL can also be used to find any routines not used by other routines, thus indicating which routines may be obsolete in the particular library.

If a given name is a block common, UNCL checks all references to it for consistency of size. UNCL displays a "?" beside each referencing routine which disagrees with the first encountered size.

With +All, UNCL searches the libraries for the given names. When UNCL finds a module that contains a SYMDEF for a given name, UNCL also starts searching for references to all other symbols defined in that module.

If you specify more than one library, UNCL refers to the libraries by number, with the first library on the command line as number 1, the next as number 2, and so on from left to right. When UNCL finds a symbol reference inside one of these libraries, the output shows the library number beside the symbol reference. When searching for unreferenced decks, UNCL treats multiple libraries as if they were one larger library.

If you specify Level=number, UNCL repeats its action "number" times. Thus for each routine that references the given name, UNCL produces a list of routines referencing that routine, routines referencing those routines, and so on. This reference tree is produced breadth-first. If UNCL finds a name for which a sub-tree has already been produced, UNCL notes this with a "+" beside the name and does not reproduce the sub-tree.

CPU time rises exponentially with search depth. Large libraries or a search depth larger than 2 may take a long time to process. In this case, we suggest that you run the program in background (batch) mode.

With +Verbose, UNCL inserts a blank line to separate SYMDEFs belonging to different modules.

Copyright © 1996, Thinkage Ltd.