SCA$MENU.HLB  —  SCA Topics, Getting Started, Using FORTRAN
    This section contains some basic examples that illustrate what
    SCA can do to help you with your programs. The examples have very
    little explanation. If you want a more detailed explanation of the
    underlying concepts, see the Basic_Query_Concepts help topic. The
    remainder of this section is written in terms that are specific to
    FORTRAN programs.

    If you want to follow along and try the examples, you will need to
    have an SCA library available. The examples use generic variable
    names (such as 'i'). You will have to substitute variable names that
    exist in your code when trying the examples.

    The first example is the easiest query: It lets you find all the
    items in your SCA library named i, and shows you all the places
    where they appear (all occurrences of i).

    FIND i

    characters (for example, FIND i*).

    Now let's say you are looking for an occurrence, and you know
    that it occurs in a particular file. The following query finds all
    occurrences of items that are named i but will then limit them to
    those which happen to occur in the file named 'PROG.FOR'.

    FIND i AND FILE_SPEC="PROG.FOR"

    Another typical question one might ask is "Find all the places
    where this item is assigned to (or read from, called, declared,
    and so forth)." The next example finds all occurrences of items
    that are named i, but then limits them to only those occurrences
    where i is assigned a value.

    FIND i AND OCCURRENCE=WRITE

    (SCA understands many occurrence classes other then WRITE. See the
    help subtopics under Getting_Started for tables containing all the
    SCA attributes and their corresponding meanings in FORTRAN.)

    Often, you only want to know where (in what file or module) a
    particular subroutine is, so that you can go to it and edit it.
    You could use the first query (where i would be the name of the
    subroutine) and then look through the output. The output would
    include all occurrences of the subroutine, one of which would be
    its definition, which you could then select. Or, you could ask SCA
    to limit the search for you by typing the following query:

    FIND i AND OCCURRENCE=PRIMARY

    In SCA terms, a primary declaration is the most significant
    declaration of an item. For a FORTRAN subroutine, this is where
    the actual SUBROUTINE statement is. This is in contrast to a
    FORTRAN EXTERNAL declaration, which in SCA terms is an associated
    declaration. The FORTRAN compiler also creates implicit associated
    declarations for any undeclared functions.

    Another problem you might have is that there are many different
    items in your system having a given name. Some may be variables;
    others may be subroutines, PARAMETER constants, and so forth.
    Suppose you want to find only the subroutines named i. Again, the
    query FIND i would give you what you wanted, but it would also
    give you much more. It is preferable to issue the following query:

    FIND i AND SYMBOL_CLASS=SUBROUTINE

    The last four examples have all selected information based on two
    attributes. The last example selected information based on a name
    attribute (in this case, i) and a symbol class attribute (in this
    case, SUBROUTINE). Note how the attributes are combined using the
    boolean operator AND. In general, you can select items out of your
    library based on any combination of attributes, using AND as well
    as the other logical operators OR, XOR and NOT.

    The next example shows another primary feature of SCA - the
    ability to display relationships between items. The example
    given here shows the most common use of this feature. It finds
    the complete call tree (that is, all subroutines called directly
    and indirectly), of the subroutine named i.

    FIND CALLED_BY (I, DEPTH=ALL)

    If you want to limit the depth of the call tree, you can replace
    the keyword ALL by any positive integer.

    To obtain help on the following topics, request help as indicated.

    o  For help on query language, see the Basic_Query_Concepts help
       topic.

    o  For help on libraries, see the Building_An_SCA_Library help
       topic.
Close Help