


With the SIMDIR program you can easily find out:
> Which separately compiled modules are required by one or several main
programs.
> Which program modules require a certain separately compiled procedure
or class.
To start the program type:
.R SIMDIR
SIMDIR responds with a "*" , signalling that it is ready for a command.

In the simplest case, you can now write:

   SEARCH /ALL REQUIRED BY main

This will list all modules on your PPN which are used by the module
main.  main is usually a SIMULA main program, but can be a separately
compiled module.

   SEARCH /ALL USING proc

This will list all modules on your PPN which use the separately compiled
module proc.

You can precede the SEARCH command with a DIRECTORY command to tell the
system to include other PPN:s in the search.  For example, you can
write:

   DIRECTORY [*,*]
   SEARCH /ALL USING proc

This will give a listing of all SIMULA programs on all PPN:s which
require your separately compiled procedure proc.

As input SIMDIR requires ATR-files from separately compiled classes and
procedures and REL-files from main programs.  This means that SIMDIR
only works when such ATR and REL files are present for the programs to
be listed.

The syntax of SIMDIR commands follows:

     <SEARCH-command>::= SEARCH <pattern> [<relation>[<pattern>]]
        <relation>::= USING ! REQUIRED BY
        <pattern>::= [<device>][<filename>][<ppn>][<switches>]
        <ppn>::= <left bracket><ppn1><right bracket>
        <ppn1>::= SELF ! OTHERS ! <pnr>,<pnr>
        <pnr>::= ! * ! <octal number>
        <switches>::= <switch> ! <switches><switch>
        <switch>::= /<switchname>
        <switchname>::= ALL ! MAIN ! CLASSES ! PROCEDURES !
                FPROCEDURES ! SPROCEDURES ! MPROCEDURES !
                FAST ! TTY
        <device>::= <name>:
        <filename>::= <name>

        SEARCH <pattern> means that all modules matching the pattern
        will be searched for and listed.

        SEARCH <pattern> <relation> means that all modules matching the
        pattern will be searched for and listed together with the
        modules which have the given relation to the modules.

        SEARCH <pattern> <relation> <pattern> means that all modules
        matching the first pattern and having the given relation to any
        module matching the second pattern are listed.

        A module matches a pattern when it matches all components of
        that pattern.  If any component is missing in a pattern, then
        all modules match that component.  The pattern may not be empty,
        however.

        There are two special PPN:s that you may use in a pattern:
        [SELF] is the LOGIN PPN.  [OTHERS] stands for all PPN's except
        [SELF] which have been given in DIRECTORY commands.

        Explanation of switches:
                ALL             All modules match
                MAIN            Main programs match
                CLASSES         Classes match
                PROCEDURES      Procedures match
                FPROCEDURES     FORTRAN procedures match
                MPROCEDURES     MACRO-10 procedures match
                SPROCEDURES     SIMULA procedures match
                FAST            Do not output PPN
                TTY             Change output device
                                temporarily to TTY.


     <DIRECTORY-command>::= DIRECTORY <directories>
        <directories>::= <directory> ! <directory>,<directories>
        <directory>::= [<switch>] <ppn> [<switch>]
        <switch>   ::= /MAIN ! /-MAIN

        Include the given directories when searching.
        /MAIN means that all modules are fetched from this directory,
        /-MAIN that only external classes and procedures are fetched.
        Default is /-MAIN.


     <LIST-command>::= LIST <file specification>

        Program output is written on the specified file.  Default is
        DSK:SIMDIR.LST


     <CLOSE-command>::= CLOSE

        The current list file is closed.


     <EXIT-command>::= EXIT

        Close current list file (if any) and return to monitor.


     <HELP-command>::= HELP [ /TTY ]

        Output help-text.


     All "reserved words" (upper case letters above) can be abbreviated
     arbitrarily.  Any conflicts are resolved as follows :
        /M means /MAIN
        /F means /FAST


     When SIMDIR is started a *D[S]/M command is automatically
     performed.


     EXAMPLES:

     List all SIMULA modules on your own PPN
      .R SIMDIR
      *S/ALL
        .
        .
        .

     List those of your own modules which are used by others in the same
     project.
      .R SIMDIR
      *DIR [,*]/M
      *SEARCH [SELF] REQ BY [OTHERS]
        .
        .
        .


                          [END OF SIMDIR.HLP]
