1 ACS ACS is the Ada program library manager for Compaq Ada. The program library manager performs library management functions and provides an interface to the Compaq Ada compiler and OpenVMS Linker. 2 Closure The term closure is used in the description of a number of ACS commands; for example, ACS CHECK, COMPILE, COPY UNIT/CLOSURE, LINK, and RECOMPILE. In simple terms, closure is the complete set of units that a given unit depends on, plus any other units needed for its execution. In other words, closure refers to the execution closure of the given unit. 2 Getting_Started You compile and link Compaq Ada programs in the context of an Ada program library, which is managed by the Compaq Ada program library manager (ACS). To start using Compaq Ada, enter the following ACS commands to create, initialize, and define your current program library. This series of commands assumes that your program library is a subdirectory of your current OpenVMS working directory. $ ACS CREATE LIBRARY [.ADALIB] $ ACS SET LIBRARY [.ADALIB] Then, compile, link, and execute your program using the following commands (assuming that the name of your program is MYPROG, and that it depends on the package MYPACK): $ ADA/LIST MYPACK_.ADA, MYPACK.ADA, MYPROG.ADA $ ACS LINK MYPROG $ RUN MYPROG You can also use the following equivalent set of commands: $ ACS LOAD MY* $ ACS COMPILE/LIST MYPROG $ ACS LINK MYPROG $ RUN MYPROG Note that when you successfully compile an Ada program, the program library manager stores the object files associated with the program in your current program library, not in your current default directory. Once you compile an Ada compilation unit into a program library, the program library manager recognizes the unit by its unit name, not by its source file name. To prevent confusion and promote efficient compilation, use one source file for each compilation unit, and follow these conventions for naming Compaq Ada source files: o The name of the source file for a library specification should be the name of the unit, followed by a trailing underscore (_). For example, MYPACK_.ADA is the name of the source file containing the specification of the package MYPACK. o The name of the source file for a library body or main subprogram should be the name of the unit. For example, MYPACK.ADA is the name of the source file containing the body of package MYPACK. MYPROG.ADA is the name of the source file containing the main subprogram MYPROG. o The name of the source file for a library generic instantiation should be the name of the instantiation. For example, MYGEN_.ADA and MYGEN.ADA are names of source files containing a library generic package specification and its body. MYINST.ADA is the name of a source file containing a library generic instantiation of the generic package MYGEN. o The name of the source file for a subunit should be the name of the ancestor unit, followed by two underscore characters, followed by the name of the subunit. For example, MYPACK__MYSUBUNIT.ADA is the name of the source file containing a subunit of package MYPACK. 2 Interrupting After you have entered an ACS command, you may want to interrupt that command before it completes. You should press Ctrl/C to interrupt an ACS command in an orderly fashion. It is particularly important to use Ctrl/C (rather than Ctrl/Y) if the command is one that alters the contents of the program library, for example ACS DELETE UNIT. If you use Ctrl/Y to interrupt an ACS command, and then invoke another image in DCL, your program library may be left in an inconsistent state. You can use the ACS VERIFY command to determine inconsistencies in a program library; you can use ACS VERIFY/REPAIR to correct those inconsistencies. 2 Invoking You invoke the Compaq Ada program library manager interactively or with a one-line DCL command. To invoke the program library manager interactively, enter the following DCL command: $ ACS The program library manager responds with the following prompt: ACS> You can now enter any ACS command. To return to the DCL command line, type EXIT or press Ctrl/Z. To enter an ACS command as a DCL command, append the command to the ACS prefix. For example: $ ACS SET LIBRARY [ADA.AUGUSTA.ADALIB] If your ACS command is too long to fit on a single line, you can continue the command by typing a hyphen (-) as the last character of a line. For example: ACS> LINK/DEBUG/MAP/FULL/CROSS_REFERENCE - _ACS> MY_MAIN_PROGRAM - _ACS> [MATRIX.LIB]MATHPACK.OLB/LIB An ACS command can have a maximum of 1024 characters; individual command lines can have a maximum of 256 characters. 2 Libraries All Ada compilations (and ACS LINK operations) are performed in the context of the current program library, which can be either a program library or a sublibrary (see HELP Ada Sublibraries). The files that result from a successful compilation are stored in the library. The ACS LINK command retrieves object files from the library. Use the ACS SET LIBRARY command to specify the current program library. A Compaq Ada program library is a dedicated OpenVMS directory that is recognized by the Compaq Ada compiler and program library manager. Before any compilation has occurred, a program library contains only two files, which were created when the program library was created: o The library index file (ADALIB.ALB) o A file used for program library version control (ADA$LIB.DAT) Each time a unit is successfully compiled into the current program library, the following files are created or accounted for: o An object file (.OBJ) o A compilation unit file (.ACU) o Unless suppressed by the /NOCOPY_SOURCE compilation qualifier, a copied source file (.ADC); this file is used by the ACS RECOMPILE command and by the debugger You should not store any other files in a library directory. You also should not apply any of the DCL file manipulation commands (for example, DELETE and RENAME) to files in a library directory. 2 Sublibraries A sublibrary is a Compaq Ada program library that has a parent library. Units in a sublibrary are compiled in the context of both the sublibrary and the parent library. When your current program library is a sublibrary, the units in the sublibrary and parent libraries are visible in a fashion analogous to multiple panes of glass. The units in the sublibrary appear on the top pane, units in the immediate parent library appear on the next pane, units in the parent of the immediate parent appear on the following pane, and so on. Then, units by the same name hide each other such that a unit in a parent library is hidden by a unit of the same name in a closer sublibrary. The search for a unit begins with the closest pane of glass (the sublibrary) and follows through the parent panes until the unit is found. You can use a sublibrary to modify and test a new version of a unit. Any necessary units not in the sublibrary will be obtained from a parent library. When you have completed and tested the modified unit, you can use the ACS MERGE command to copy the new version to the parent library. There is no specific limit on the depth of sublibrary nesting, but the cost of the lookup operation indicates a practical limit of three or four levels. Most ACS commands operate on both program libraries and sublibraries. There are three specific ACS commands for sublibraries: CREATE SUBLIBRARY, DELETE SUBLIBRARY, and MERGE. Many of the ACS library management commands (for example, DELETE UNIT and DIRECTORY) operate only on the current library or sublibrary; a DELETE UNIT command will never delete a unit in some ancestor of the current library. NOTE Sublibraries contain references to their immediate parents, but the parent library contains no references to its sublibraries. You should be careful not to delete a library if it still has sublibraries. 2 Library_Search_Paths In many ways, you can view sublibrary relationships as defining a list of libraries to be searched. Compaq Ada library search paths provide another way to define a list of libraries to be searched. Like a sublibrary, a library search path simply defines a list of Compaq Ada libraries which are searched by the compiler and program library manager to locate units. You can use library search paths to achieve the same effects as sublibraries but with more flexibility. A library search path, also called the current library search path, or current path, defines the particular library search path that is used during compilation or an ACS operation. The compiler and program library manager search for a unit starting with the first library of the current path. If the unit is not found in that library, the search for the unit continues in subsequent libraries in the current path until the unit is either found or until the end of the current path is reached. Typically, the current path is a path that is associated with the current program library. This path, called the default library search path, or default path, is defined when you create a Compaq Ada program library or sublibrary. When you enter the ACS SET LIBRARY command, the specified library becomes the current program library, and the default path associated with that library becomes the current path. You can define the current path using one of two methods: 1. Enter the ACS SET LIBRARY command. For example: $ ACS SET LIBRARY [SMITH.SUBLIB] When you enter this command, the specified library becomes the current program library, and the default path associated with that library becomes the current path. In this example, the ACS SET LIBRARY command establishes the current program library to be [SMITH.SUBLIB], and the current path to be the default path for [SMITH.SUBLIB]. When the program library manager and compiler search for a unit, the library [SMITH.SUBLIB] is searched first. If the unit is not found, then any libraries in the default path of [SMITH.SUBLIB] are also searched. 2. Enter the/PATH qualifier with the ACS SET LIBRARY command. For example: $ ACS SET LIBRARY/PATH [SMITH.ADALIB],[JONES.ADALIB], - _ACS>[HOTEL.ADALIB] The /PATH qualifier allows you to establish a current path that is different than the default path associated with a program library. In this example, the /PATH qualifier defines the current path to be the list of libraries specified in the command line. It also establishes the current program library to be the first library in the path ([SMITH.ADALIB]). In some situations, you may want to identify the default path associated with a library or sublibrary in your current path along with other libraries. To specify a default path, you precede the library with an at sign (@). For example: $ ACS SET LIBRARY/PATH [JONES.ADALIB],@[HOTEL.ADALIB] In this example, any libraries in the default path of [HOTEL.ADALIB] are included in the current path. You can store library search paths in text files, and then include them in other library search paths. For example: $ ACS SET LIBRARY [JONES.ADALIB],@MYPATH.TXT To modify the default path of a program library, see the HELP ACS MODIFY LIBRARY. For more information on library search paths, see Developing Ada Programs on OpenVMS Systems. 2 ATTACH Enables you to switch control of your terminal from your current process running the program library manager to another process in your job. See also the ACS SPAWN command and the OpenVMS DCL Dictionary. Format ATTACH process-name 3 Parameters process-name Specifies the name of the process to which the connection is to be made. Process names can contain from 1 to 15 alphanumeric characters. If a connection to the specified process cannot be made, an error message is displayed. You cannot connect to the process if any of the following conditions apply: o The process is your current process. o The process is not part of your current job. o The process does not exist. 3 Description The ACS ATTACH command allows you to connect your input stream to another process. You can use the ATTACH command to change control from one subprocess to another subprocess or to the parent process. When you enter the ATTACH command, the parent or "source" process is put into a hibernation state, and your input stream is connected to the specified destination process. You can use the ATTACH command to connect to a subprocess that is part of a current job left hibernating as a result of an ACS SPAWN or DCL SPAWN/WAIT command, or of another ACS or DCL ATTACH command, as long as the connection is valid. (No connection can be made to the current process, to a process that is not part of the current job, or to a process that does not exist.) You can also use the ATTACH command in conjunction with the ACS SPAWN or DCL SPAWN/WAIT command to return to a parent process without terminating the created subprocess. See the description of the ACS SPAWN command for more details. 3 Example ACS> ATTACH JONES_1 $ Switches control of the terminal to the process JONES_1. 2 CHECK Forms the execution closure of one or more specified units and checks whether the set of units in the closure is complete and current. The ACS CHECK command searches the current program library (and all parent libraries, in the case of a sublibrary) for all units in the closure. Format CHECK unit-name[,...] 3 Parameters unit-name[,...] Specifies one or more units in the current program library whose closure is to be checked. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) 3 Description The ACS CHECK command goes through the following steps: 1. Forms the execution closure of the specified units. 2. Determines whether each unit in the closure is in the program library and is current. Units entered from other program libraries, as well as those compiled or copied into the current program library, are checked. 3. Identifies any unit in the closure that is not in the program library. 4. Identifies any unit in the closure that is obsolete and must be recompiled. 5. If there are obsolete units in the closure, identifies units that may become obsolete when the obsolete units are recompiled. 6. If all of the units in the closure are in the program library and are current, issues an informational message. 3 Command_Qualifiers /LOG /LOG /NOLOG (D) Controls whether a list of all the units in the closure is displayed in addition to a message indicating the result of the CHECK command. By default, only a message indicating the result of the CHECK command is displayed. /OBSOLETE /OBSOLETE=(option=[,...]) /NOOBSOLETE (D) Allows you to ask what the effect on a program or a set of units would be if some specific units were obsolete. When the execution closure of the units in the parameter list of the command is performed, the units named with the UNIT, SPECIFICATION, and BODY keywords are assumed to be obsolete as described below. If one of those units is not in the execution closure of the units named in the command's parameter list, it is not added to the closure. Unit names are specified with the UNIT, SPECIFICATION and BODY keywords as follows: UNIT:(unit_ The specifications and bodies of units name[,...]) specified with the UNIT keyword are assumed to be obsolete. SPECIFICATION:(unit_ Only the specifications of units specified name[,...]) with the SPECIFICATION keyword are assumed to be obsolete. BODY:(unit_ Only the bodies of units specified with the name[,...]) BODY keyword are assumed to be obsolete. You must specify at least one of these keywords with the /OBSOLETE qualifier. Unit names can contain wildcard characters. By default, units are identified as obsolete based on the current state of the program library. /OUTPUT /OUTPUT=file-spec Requests that the CHECK command output be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the CHECK command output is written to SYS$OUTPUT. /PROCESSING_LEVEL /PROCESSING_LEVEL[=option] Determines the kind of obsolete units identified. Obsolete units are identified based on the level of processing applied to the unit: syntax-checking, design-checking, or full compilation. You can request the following options: SYNTAX Determines whether a unit is obsolete because it has been syntax-checked only. Because all units in a program library are at least syntax-checked, and because syntax-checking does not require any particular order of compilation, generally accepts all units as being current. DESIGN Determines whether a unit is obsolete because it has been design-checked only. Accepts design- checked units and fully compiled units as being current, unless they are otherwise obsolete (for example, they depend on units that have been syntax-checked only, or they depend on other obsolete units). FULL Determines three kinds of obsolete units: units that are obsolete because they have been syntax checked only, units that have been design checked, and units that are obsolete as a result of the compilation of the units they depend on. Units that depend on obsolete units are also considered to be obsolete. By default, all units are fully checked (/PROCESSING_LEVEL=FULL), and all obsolete units are identified. /SMART_RECOMPILATION /SMART_RECOMPILATION (D) /NOSMART_RECOMPILATION Controls whether smart recompilation information, which is stored in the program library, is used to identify obsolete units. If smart recompilation is not in effect, units are identified as obsolete and in need of recompilation based on their time of compilation only. (See Developing Ada Programs on OpenVMS Systems for more information.) /STATISTICS /STATISTICS (D) /NOSTATISTICS Controls whether statistical information is displayed. Statistical information includes the number of obsolete and possibly obsolete units, and the total elasped time for the last compilation of all identified units. 3 Examples 1.ACS> CHECK SCREEN_IO %I, All units current, no recompilations required Shows that all the units in the closure of SCREEN_IO are defined in the current program library and are current. 2.ACS> CHECK/OBSOLETE=SPECIFICATION:RESERVATIONS RESERVATIONS %E, Obsolete library units are detected %I, The following units need to be recompiled: RESERVATIONS package specification 4-NOV-1992 14:48:39.75 (00:00:03.82) %I, The following units may also need to be recompiled: RESERVATIONS package body 4-NOV-1992 14:51:20.11 (00:00:14.02) RESERVATIONS.RESERVE procedure body 4-NOV-1992 14:49:55.78 (00:00:04.27) RESERVATIONS.RESERVE.BILL procedure body 4-NOV-1992 14:50:01.55 (00:00:05.12) RESERVATIONS.CANCEL procedure body 4-NOV-1992 14:51:36.25 (00:00:04.24) 1 obsolete unit, 4 possibly obsolete units (total 5) Total elapsed time for last compilation of all 5 units was 0:00:31.47 This command allows you to ask what the effect would be if you modified the unit RESERVATIONS. In the previous example, the ACS CHECK command lists the units that need to be recompiled, any units that are missing, and the total elasped time for the last compilation of the unit RESERVATIONS. 3.$ ACS CHECK A, B, C /OBSOLETE=(UNIT:(E, F), BODY:(G, H)) Checks the closure of the set of units A, B and C assuming that E and F's specifications and bodies are obsolete, and that G and H's bodies are obsolete. 2 COMPILE Forms the closure of one or more specified units. Compiles, from external source files, any unit in the closure (except entered units) that was revised since that unit was last compiled into the current program library. Recompiles, from external or copied source files, any unit in the closure that needs to be made current. Completes any incomplete generic instantiations. Format COMPILE unit-name[,...] 3 Parameters unit-name[,...] Specifies one or more units in the current program library whose closure is to be processed with the ACS COMPILE command. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) 3 Description The ACS COMPILE command is useful for compiling and recompiling units as you revise the source files of an existing Ada program. The COMPILE command goes through the following steps: 1. Forms the execution closure of the specified units. 2. Looks up the source file for each unit in the closure that has been compiled or copied (not entered) into the current program library. Unless otherwise specified with the SET SOURCE command, the source-file-directory search order is as follows: a. SYS$DISK:[] (the current default directory) b. ;0 (the directory that contained the file when it was last compiled), or node::;0 (if the file specification of the source file being compiled contains a node name) The search order takes precedence over the version number or creation date-time if different versions of a source file exist in two or more directories. Within any one directory, the version of a particular file that has the highest number is considered for compilation. 3. Compares the creation date-time of each source file with that of the version last noted in the program library by the /NOTE_ SOURCE compiler qualifier (the qualifier is used with the DCL ADA and ACS COMPILE and RECOMPILE commands). 4. Processes revised external source files to account for new compilation units or unit dependences if the /PRELOAD qualifier (the default) is in effect. 5. Notes for compilation any source file whose creation date-time is later than that noted in the program library. 6. Identifies any obsolete or incomplete units in the closure. Note that if the program library manager cannot find external source files for recompilation, recompilation is done from copied source files. If a needed copied source file is missing, the file is identified and no recompilations or completions are done. Copied source files are created when the /COPY_SOURCE qualifier is in effect during compilation (the default for the DCL ADA and ACS LOAD and COMPILE commands). If the closure you are recompiling includes an obsolete entered unit, that unit is not affected by the COMPILE command; an error diagnostic is issued and the COMPILE command is not executed. You should recompile an obsolete entered unit in its own program library and then reenter it into the current program library before you try to recompile its dependent units in the current library. 7. Creates a DCL command file. The file contains commands to compile the appropriate units from external source files and to recompile any obsolete units from external or copied source files, in the proper order. Entered units are not considered for compilation or recompilation. If you did not specify the /COMMAND qualifier, the command file is deleted after the COMPILE command is terminated, or the batch job finishes. If you did specify the /COMMAND qualifier, the command file is retained for future use, and the compiler is not invoked. 8. If you did not specify the /COMMAND qualifier, the Compaq Ada compiler is invoked as follows: a. By default (COMPILE/WAIT), the command file is executed in a subprocess. You must wait for the compilation to terminate before entering another command. When this qualifier is in effect, process logical names are propagated to the subprocess generated to execute the command file. b. If you specify the /SUBMIT qualifier, the command file generated in step 7 is submitted as a batch job. Program library manager output originating before the compiler is invoked is reported to your terminal by default, or to a file specified with the /OUTPUT qualifier. Compiler diagnostics are reported to the terminal by default, or to the a log file if the command file is executed in a batch job (by way of the COMPILE /SUBMIT command). See of the Developing Ada Programs on OpenVMS Systems for more information on the COMPILE command. 3 Command_Qualifiers /AFTER /AFTER=time Requests that the batch job be held until after a specific time when the command file is executed in batch mode. If the specified time has already passed, or if the /AFTER qualifier is not specified, the job is queued for immediate processing. You can specify either an absolute time or a combination of absolute and delta time. See the OpenVMS User's Manual (or type HELP Specify Date_Time at the DCL prompt) for complete information on specifying time values. /ANALYSIS_DATA /ANALYSIS_DATA[=file-spec] /NOANALYSIS_DATA (D) Controls whether a data analysis file containing source code cross-reference and static analysis information is created. The data analysis file is supported only for use with Digital layered products, such as the DEC Source Code Analyzer. One data analysis file is created for each source file that is compiled and for each unit that is recompiled. The default directory for data analysis files is the current default directory. The default file name is the name of the source file being compiled. The default file type is .ANA. No wildcard characters are allowed in the file specification. By default, no data analysis file is created. /ARCHITECTURE Controls the use of new Alpha instructions. The syntax for this switch is as follows: /ARCHITECTURE = { GENERIC | HOST | EV4 | EV5 | EV56 } Setting the /ARCH switch causes a corresponding setting in the /TUNE switch. (See the Release Notes for more information.) /BATCH_LOG /BATCH_LOG=file-spec Provides a file specification for the batch log file when the command file is executed in batch mode. If you do not give a directory specification with the file-spec option, the batch log file is created by default in the current default directory. If you do not give a file specification with the file-spec option, the default file name is the job name specified with the /NAME=job-name qualifier. If no job name has been specified, the program library manager creates a file name comprising up to the first 39 characters of the first unit name specified. If no job name has been specified and there is a wildcard character in the first unit specified, the program library manager uses the default file name ACS_COMPILE. The default file type is .LOG. No wildcard characters are allowed in the file specification. /CHECK /CHECK /NOCHECK Controls whether all run-time checks are suppressed. The /NOCHECK qualifier is equivalent to having all possible SUPPRESS pragmas in the source code. Explicit use of the /CHECK qualifier overrides any occurrences of the pragmas SUPPRESS and SUPPRESS_ALL in the source code, without the need to edit the source code. By default, run-time checks are only suppressed in cases where a pragma SUPPRESS or SUPPRESS_ALL appears in the source code. See the DEC Ada Language Reference Manual for more information on the pragmas SUPPRESS and SUPPRESS_ALL. /CLOSURE /CLOSURE Causes the /SPECIFICATION_ONLY qualifier to apply to all units in the closure of units named in the COMPILE command. (Without the /CLOSURE qualifier, the /SPECIFICATION_ONLY qualifier applies only to the units named in the command.) See the description of the /SPECIFICATION_ONLY qualifier in the list of command qualifiers. /COMMAND /COMMAND[=file-spec] Controls whether the compiler is invoked as a result of the COMPILE command, and determines whether the command file generated to invoke the compiler is saved. If you specify the /COMMAND qualifier, the program library manager does not invoke the compiler, and the generated command file is saved for you to invoke or submit as a batch job. The file-spec option allows you to enter a file specification for the generated command file. The default directory for the command file is the current default directory. By default, the program library manager provides a file name comprising up to the first 39 characters of the first unit name specified. If you use a wildcard character in the first unit name specified, the compiler uses the default name ACS_COMPILE. The default file type is .COM. No wildcard characters are allowed in the file specification. By default, if you do not specify the file-spec option, the program library manager deletes the generated command file when the COMPILE command completes normally or is terminated. Note that if you want to get the old behaviour (pre-version 3.0 behavior) for this command, you must also specify the /NOSMART_ RECOMPILATION qualifier. /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the COMPILE command asks you for confirmation before performing a possibly lengthy operation. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /COPY_SOURCE /COPY_SOURCE (D) /NOCOPY_SOURCE Controls whether a copied source file is created in the current program library when a compilation unit is compiled without error. The ACS RECOMPILE command requires that a copied source file exist in the current program library; the ACS COMPILE command uses the copied source file if it cannot find an external source file when it is recompiling an obsolete unit or completing an incomplete generic instantiation (see Developing Ada Programs on OpenVMS Systems). Copied source files may also be used by the OpenVMS Debugger (see OpenVMS Debugger Manual). By default, a copied source file is created in the current program library when a unit is compiled without error. /DEBUG /DEBUG[=(option[,...])] (D) /NODEBUG Controls which debugger compiler options are provided. You can debug Compaq Ada programs with the OpenVMS Debugger (see the Developing Ada Programs on OpenVMS Systems for more information on debugging tasks; see and OpenVMS Debugger Manual for more information on the OpenVMS debugger). You can request the following options: ALL Provides both SYMBOLS and TRACEBACK NONE Provides neither SYMBOLS nor TRACEBACK [NO]SYMBOLS Controls whether debugger symbol records are included in the object file [NO]TRACEBACK Controls whether traceback information (a subset of the debugger symbol information) is included in the object file By default, both debugger symbol records and traceback information are included in the object files (/DEBUG=ALL, or equivalently: /DEBUG) /DESIGN /DESIGN[=option] /DESIGN[=option] /NODESIGN (D) Controls whether a design-level check is performed when identifying obsolete units. A unit is not considered obsolete just because it is design-checked only. Also directs the compiler to process Ada source files as a detailed program design. For each unit that is design checked without error, the program library is updated with information about that unit. Design-checked units are considered to be obsolete in operations that require full compilation and must be recompiled. You can request the following options: [NO]COMMENTS Determines whether comments are processed for program design information. For the COMMENTS option to have effect, you must specify the /ANALYSIS_DATA qualifier with the ADA command. See Guide to Source Code Analyzer for VMS Systems for more information on using the Source Code Analyzer (SCA). If you specify NOCOMMENTS, comments are ignored. [NO]PLACEHOLDERS Determines whether design checking is performed. If you specify PLACEHOLDERS, compilation units are design checked-LSE placeholders are allowed and some of the Ada language rules are relaxed so that you can omit some implementation details. If you specify NOPLACEHOLDERS, full compilation is done-the compiler is invoked, LSE placeholders are not allowed, and Ada language rules are not relaxed. Note that when you specify this option with the /SYNTAX_ONLY qualifier, it determines only whether LSE placeholders are allowed. If you specify NOPLACEHOLDERS, then only valid Ada syntax is allowed. If you specify the /DESIGN qualifier without supplying any options, the effect is the same as the following default: /DESIGN=(COMMENTS,PLACEHOLDERS) If you specify only one of the options with the /DESIGN qualifier, the default value for the other option is used. For example, /DESIGN=NOCOMMENTS is equivalent to /DESIGN=(NOCOMMENTS,PLACEHOLDERS). In this case, both qualifiers specify that the unit is design-checked, but comment information is not collected. Similarly, /DESIGN=NOPLACEHOLDERS is equivalent to /DESIGN=(COMMENTS,NOPLACEHOLDERS). In this case, both qualifiers specify that comment information is collected, but the unit is not design-checked (that is, in the absence of the /SYNTAX_ONLY qualifier, units are fully compiled). /DIAGNOSTICS /DIAGNOSTICS[=file-spec] /NODIAGNOSTICS (D) Controls whether a diagnostics file containing compiler messages and diagnostic information is created. The diagnostics file is supported only for use with Digital layered products, such as the DEC Language-Sensitive Editor. One diagnostics file is created for each source file that is compiled and for each unit that is recompiled. The default directory for diagnostics files is the current default directory. The default file name is the name of the source file being compiled. The default file type of a diagnostics file is .DIA. No wildcard characters are allowed in the file specification. By default, no diagnostics file is created. /ERROR_LIMIT /ERROR_LIMIT[=n] (D) /NOERROR_LIMIT Controls whether execution of the COMPILE command for a given compilation unit is terminated upon the occurrence of the nth E-level error within that unit. Error counts are not accumulated across a sequence of compilation units. If the /ERROR_LIMIT=n option is specified, each compilation unit may have up to n - 1 errors without terminating the compilation. When the error limit is reached within a compilation unit, compilation of that unit is terminated, but compilation of subsequent units continues. The /ERROR_LIMIT=0 option is equivalent to ERROR_LIMIT=1. By default, execution of the COMPILE command is terminated for a given compilation unit upon the occurrence of the 30th E-level error within that unit (equivalent to /ERROR_LIMIT=30). /EXPORT_INTERFACE /EXPORT_INTERFACE=ADA (D) /EXPORT_INTERFACE=FORTRAN /EXPORT_INTERFACE=DEFAULT This qualifier sets the passing mechanism chosen for string parameters for exported subprograms unless an export pragma specifically specifies the passing mechanism. The default is ADA, which uses dope vectors for the passing mechanism. FORTRAN or DEFAULT will use VAX descriptors for the passing mechanism. For more information, please see the Compaq Ada release notes. /KEEP /KEEP (D) /NOKEEP Controls whether the batch log file generated is deleted after it is printed when the command file is executed in batch mode. By default, the log file is not deleted. /LIST /LIST[=file-spec] /NOLIST (D) Controls whether a listing file is created. One listing file is created for each compilation unit (not file) compiled or recompiled by the COMPILE command. The default directory for listing files is the current default directory. The default file name of a listing file corresponds to the name of its compilation unit and uses the Compaq Ada file- name conventions described in Developing Ada Programs on OpenVMS Systems. The default file type of a listing file is .LIS. No wildcard characters are allowed in the file specification. By default, the COMPILE command does not create a listing file. /LOG /LOG /NOLOG (D) Controls whether a list of all the units that must be compiled or recompiled is displayed. By default, a list of the units that must be compiled or recompiled is not displayed. /MACHINE_CODE /MACHINE_CODE /NOMACHINE_CODE (D) Controls whether generated machine code (approximating assembler notation) is included in the listing file. By default, generated machine code is not included in the listing file. /NAME /NAME=job-name Specifies a string to be used as the job name and as the file name for the batch log file when the command file is executed in batch mode. The job name can have from 1 to 39 characters. By default, if you do not specify the /NAME qualifier, the program library manager creates a job name comprising up to the first 39 characters of the first unit name specified. If you do not specify the /NAME qualifier, but use a wildcard character in the first unit name specified, the compiler uses the default name ACS_COMPILE. In these cases, the job name is also the file name of the batch log file. /NOTE_SOURCE /NOTE_SOURCE (D) /NONOTE_SOURCE Controls whether the file specification of the source file is noted in the program library when a unit is compiled without error. The COMPILE command uses this information to locate revised source files. By default, the file specification of the source file is noted in the current program library when a unit is compiled without error. /NOTIFY /NOTIFY (D) /NONOTIFY Controls whether a message is broadcast when the command file is executed in batch mode. The message is broadcast to any terminal at which you are logged in, notifying you that your job has been completed or terminated. By default, a message is broadcast. /OBSOLETE /OBSOLETE=(option[,...]) /NOOBSOLETE (D) Affects the overall set of units that is identified as obsolete. When the execution closure of the units in the parameter list of the command is performed, the units named with the UNIT, SPECIFICATION and BODY keywords are assumed to be obsolete as described below. If one of those units is not in the execution closure of the units named in the command's parameter list, it is not added to the closure. Unit names are specified with the UNIT, SPECIFICATION, and BODY keywords as follows: UNIT:(unit_ The specifications and bodies of units name[,...]) specified with the UNIT keyword are assumed to be obsolete. SPECIFICATION:(unit_ Only the specificiations of units specified name[,...]) with the SPECIFICATION keyword are assumed to be obsolete. BODY:(unit_ Only the bodies of units specified with the name[,...]) BODY keyword are assumed to be obsolete. You must specify at least one of these keywords with the /OBSOLETE qualifier. Unit names can contain wildcard characters. When the /SMART_RECOMPILATION qualifier is in effect, dependent units of the specified units are possibly obsolete and may be recompiled. To force recompilation of dependent units when smart recompilation is in effect, use the /OBSOLETE=UNIT:* qualifier. (See Developing Ada Programs on OpenVMS Systems for more information.) By default, units are identified as obsolete based on the current state of the program library. /OPTIMIZE /OPTIMIZE[=(option[,...])] /NOOPTIMIZE Controls the level of optimization that is applied in producing the compiled code. You can specify one of the following primary options: TIME Provides full optimization with time as the primary optimization criterion. Overrides any occurrences of the pragma OPTIMIZE(SPACE) in the source code. SPACE Provides full optimization with space as the primary optimization criterion. Overrides any occurrences of the pragma OPTIMIZE(TIME) in the source code. DEVELOPMENT Suggested when active development of a program is in progress. Provides some optimization, but development considerations and ease of debugging take preference over optimization. This option overrides pragmas that establish a dependence on a subprogram or generic body (the pragmas INLINE and INLINE_GENERIC), and therefore reduces the need for recompilations when such bodies are modified. This option also disables generic code sharing. NONE Provides no optimization. Suppresses inline expansions of subprograms and generics, including those specified by the pragmas INLINE and INLINE_ GENERIC. Suppresses occurrences of the pragma SHARE_GENERIC and disables generic code sharing. The /NOOPTIMIZE qualifier is equivalent to /OPTIMIZE=NONE. By default, the COMPILE command applies full optimization with time as the primary optimization criterion (like /OPTIMIZE=TIME, but observing uses of the pragma OPTIMIZE). The /OPTIMIZE qualifier also has a set of secondary options that you can use separately or together with the primary options to override the default behavior for inline expansion (generic and subprogram) and generic code sharing. The INLINE secondary option can have the following values (see the DEC Ada Run-Time Reference Manual for OpenVMS Systems for more information about inline expansion): NONE Disables subprogram and generic inline expansion. This option overrides any occurrences of the pragmas INLINE or INLINE_GENERIC in the source code, without your having to edit the source file. It also disables implicit inline expansion of subprograms. (Implicit inline expansion means that the compiler assumes a pragma INLINE for certain subprograms as an optimization.) A call to a subprogram or an instance of a generic in another unit is not expanded inline, regardless of the /OPTIMIZE options in effect when that unit was compiled. NORMAL Provides normal subprogram and generic inline expansion. Subprograms to which an explicit pragma INLINE applies are expanded inline under certain conditions. In addition, some subprograms are implicitly expanded inline. The compiler assumes a pragma INLINE for calls to some small local subprograms (subprograms that are declared in the same unit as the unit in which the call occurs). Instances are compiled separately from the unit in which the instantiation occurred unless a pragma INLINE_GENERIC applies to the instance. If a pragma INLINE_GENERIC applies and the generic body has been compiled, the generic is expanded inline at the point of instantiation. SUBPROGRAMS Provides maximal subprogram inline expansion and normal generic inline expansion. In addition to the normal subprogram inline expansion that occurs when INLINE:NORMAL is specified, this option results in implicit inline expansion of some small subprograms declared in other units. The compiler assumes a pragma INLINE for any subprogram if it improves execution speed and reduces code size. This option may establish a dependence on the body of another unit, as would be the case if a pragma INLINE were specified explicitly in the source code. With this option, generic inline expansion occurs in the same manner as for INLINE:NORMAL. GENERICS Provides normal subprogram inline expansion and maximal generic inline expansion. With this option, subprogram inline expansion occurs in the same manner as for INLINE:NORMAL. The compiler assumes a pragma INLINE_GENERIC for every instantiation in the unit being compiled unless an explicit pragma SHARE_GENERIC applies. This option may establish a dependence on the body of another unit, as would be the case if a pragma INLINE_GENERIC were specified explicitly in the source code. MAXIMAL Provides maximal subprogram and generic inline expansion. Maximal subprogram inline expansion occurs as for INLINE:SUBPROGRAMS, and maximal generic inline expansion occurs as for INLINE:GENERICS. The SHARE secondary option can have the following values: NONE Disables generic sharing. This option overrides the effect of any occurrences of the pragma SHARE_ GENERIC in the source code, without your having to edit the source file. In addition, instances do not share code from previous instantiations. NORMAL Provides normal generic sharing. Normally, the compiler will not attempt to generate shareable code for an instance (code that can shared by subsequent instantiations) unless an explicit pragma SHARE_GENERIC applies to that instance. However, an instance will attempt to share code that resulted from a previous instantiation to which the pragma SHARE_GENERIC applied. MAXIMAL Provides maximal generic sharing. The compiler assumes that a pragma SHARE_GENERIC applies to every instance in the unit being compiled unless an explicit pragma INLINE_GENERIC applies. Therefore, an instance will attempt to share code that resulted from a previous instantiation or to generate code that can be shared by subsequent instantiations. SHARE:MAXIMAL cannot be used in combination with INLINE:GENERICS or INLINE:MAXIMAL. By default, if you specify one of the /OPTIMIZE qualifier primary options on the left (for example, /OPTIMIZE=TIME), it has the same effect as specifying the secondary-option values to the right (in this case, /OPTIMIZE=(TIME,INLINE:NORMAL,SHARE:NORMAL)): TIME /OPTIMIZE=(TIME,INLINE:NORMAL,SHARE:NORMAL) SPACE /OPTIMIZE=(SPACE,INLINE:NORMAL,SHARE:NORMAL) DEVELOPMENT /OPTIMIZE=(DEVELOPMENT,INLINE:NONE,SHARE:NONE) NONE /OPTIMIZE=(NONE,INLINE:NONE,SHARE:NONE) See Developing Ada Programs on OpenVMS Systems for more information about the /OPTIMIZE qualifier and its options. /OUTPUT /OUTPUT=file-spec Requests that any program library manager output generated before the compiler is invoked be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the COMPILE command output is written to SYS$OUTPUT. /PRELOAD /PRELOAD (D) /NOPRELOAD Controls whether the COMPILE command processes revised external source files so that new compilation units or unit dependences introduced in those files-or any new source files previously processed by the ACS LOAD or DCL ADA command-are accounted for. Preload processing involves the partial compilation and syntax checking of the following files: o Any external source file whose creation date-time is later than that noted in the program library o Any new units introduced into the closure of units specified by way of modifications to the known external source files (preload processing does not include new external source files that are not already accounted for in the program library) Preload processing is done immediately, after the creation date- time of each external source file is checked, and before the usual COMPILE compilations and recompilations are performed. If you have also specified the /CONFIRM qualifier, you are prompted for confirmation for each external file to be preloaded. By default, the COMPILE command processes revised external source files to account for new compilation units or unit dependences. /PRINTER /PRINTER[=queue-name] /NOPRINTER (D) Controls whether the batch job log file is queued for printing when the command file is executed in batch mode. The /PRINTER qualifier allows you to specify a particular print queue. The default print queue for the log file is SYS$PRINT. By default, the log file is not queued for printing. If you specify the /NOPRINTER qualifier, the /KEEP qualifier is assumed. /QUEUE /QUEUE=queue-name Specifies the batch job queue in which the job is entered when the command file is executed in batch mode. By default, if the /QUEUE qualifier is not specified, the program library manager first checks whether the logical name ADA$BATCH is defined. If it is, the program library manager enters the job in the queue specified. Otherwise the job is placed in the default system batch job queue, SYS$BATCH. /SHOW /SHOW[=option] (D) /NOSHOW Controls the listing file options included when a listing file is provided. You can specify one of the following options: ALL Provides all listing file options. [NO]PORTABILITYControls whether a program portability summary is included in the listing file (see Developing Ada Programs on OpenVMS Systems). NONE Provides none of the listing file options (same as /NOSHOW). By default, the COMPILE command provides a portability summary (/SHOW=PORTABILITY). /SMART_RECOMPILATION /SMART_RECOMPILATION (D) /NOSMART_RECOMPILATION Controls whether smart recompilation information is stored and used to minimize unnecessary recompilations. When the /SMART_RECOMPILATION qualifier is in effect, detailed information about dependences is stored in the program library for each unit compiled. This information describes the dependences of a unit at a finer level than the compilation unit level. The ACS COMPILE command uses this information to detect when an unmodified unit in the closure is not affected by changes (if any) in its referenced units that are compiled or recompiled. The ACS COMPILE command does not recompile such dependent units and, therefore, minimizes unnecessary recompilations. Note that the ACS COMPILE command always compiles modified units. If smart recompilation is not in effect, detailed information about dependences is not stored in the program library, and units are considered obsolete and recompiled based on their time of compilation. (See Developing Ada Programs on OpenVMS Systems for more information.) /SPECIFICATION_ONLY /SPECIFICATION_ONLY Causes only the specifications of the units specified to be considered for compilation. You can use the /CLOSURE qualifier with the /SPECIFICATION_ONLY qualifier to force only the specifications in the execution closure of the specified units to be considered for compilation. By default, if the /SPECIFICATION_ONLY qualifier is omitted, all of the specifications, bodies, and subunits in the execution closure of the units specified are considered for compilation. /STATISTICS /STATISTICS (D) /NOSTATISTICS Controls whether statistical information is displayed. Statistical information includes the number of obsolete and possibly obsolete units, the total elasped time for the last compilation of all identified units, and the estimated elasped time savings due to smart recompilation. /SUBMIT /SUBMIT Directs the program library manager to submit the command file generated for the compiler to a batch queue. You can continue to enter commands in your current process without waiting for the batch job to complete. The compiler output is written to a log file. By default, the program library manager submits the command file generated for the compiler in a subprocess (by way of the COMPILE /WAIT command). /SYNTAX_ONLY /SYNTAX_ONLY /NOSYNTAX_ONLY (D) Controls whether a syntax-level check is performed when identifying obsolete units. A unit is not considered obsolete just because it is syntax-checked only. Because all units in a program library are at least syntax-checked, in effect, this qualifier selects only units with revised source files for compilation. This qualifier also directs the compiler to process source files for syntax only. Other compiler checks are not performed (for example, semantic analysis, type checking, and so on). By default, the COMPILE command performs full checking when identifying obsolete units and the compiler fully compiles units.) /TUNE Selects processor-specific instruction tuning for implementations of the Alpha architecture. Tuning for a specific implementation can provide improvements in runtime performance. The syntax for this switch is as follows: /TUNE = { GENERIC | HOST | EV4 | EV5 | EV56 } For more information, see the Release Notes. /WAIT /WAIT Directs the program library manager to execute the command file generated in a subprocess. Execution of your current process is suspended until the subprocess completes. The compiler output is written directly to your terminal. Note that process logical names are propagated to the subprocess generated to execute the command file. By default, the program library manager executes the command file generated in a subprocess. You must wait for the subprocess to terminate before you can enter another command. /WARNINGS /WARNINGS[=(option[,...])] /NOWARNINGS Controls which categories of informational (I-level) and warning (W-level) messages are displayed and where those messages are displayed. You can specify any combination of the following message options: WARNINGS: (destination[,...]) NOWARNINGS WEAK_WARNINGS: (destination[,...]) NOWEAK_WARNINGS SUPPLEMENTAL: (destination[,...]) NOSUPPLEMENTAL COMPILATION_NOTES: (destination[,...]) NOCOMPILATION_NOTES STATUS: (destination[,...]) NOSTATUS The possible values of destination are ALL, NONE, or any combination of TERMINAL (terminal device), LISTING (listing file), and DIAGNOSTICS (diagnostics file). The message categories are summarized as follows (see Developing Ada Programs on OpenVMS Systems for more information): WARNINGS W-level: Indicates a definite problem in a legal program-for example, an unknown pragma. WEAK_WARNINGS I-level: Indicates a potential problem in a legal program-for example, a possible CONSTRAINT_ERROR at run time. These are the only kind of I-level messages that are counted in the summary statistics at the end of a compilation. SUPPLEMENTAL I-level: Additional information associated with preceding E-level or W-level diagnostics. COMPILATION_ I-level: Information about how the compiler NOTES translated a program, such as record layout, parameter-passing mechanisms, or decisions made for the pragmas INLINE, INTERFACE, or the import-subprogram pragmas. STATUS I-level: End of compilation statistics and other messages. The defaults are as follows: /WARNINGS=(WARN:ALL,WEAK:ALL,SUPP:ALL,COMP:NONE,STAT:LIST) If you specify only some of the message categories with the /WARNINGS qualifier, the default values for the other categories are used. 3 Examples 1.ACS> COMPILE/SUBMIT/LOG RESERVATIONS %I, Invoking the DEC Ada compiler %I, The following syntax-checked units are obsolete: RESERVATIONS package body 4-NOV-1992 16:25:34.68 (00:00:14.02) %I, The following units may also be recompiled: RESERVATIONS.RESERVE procedure body 4-NOV-1992 14:49:55.78 (00:00:04.27) RESERVATIONS.RESERVE.BILL procedure body 4-NOV-1992 14:50:01.55 (00:00:05.12) RESERVATIONS.CANCEL procedure body 4-NOV-1992 14:51:36.25 (00:00:04.24) 1 obsolete unit, 3 possibly obsolete units (total 4) Total elapsed time for last compilation of all 4 units was 0:00:27.65 %I, Job RESERVATIONS (queue CLU_BATCH, entry 388) started on WIDTH_BATCH Lists all units in the closure of unit RESERVATIONS that need to be compiled and recompiled, then submits the compiler command file generated by ACS as a batch job. 2.$ ACS COMPILE MAIN /OBSOLETE=UNIT:* This combination can be used to force the compilation of the unit MAIN and of all the units in its closure. 2 COPY 3 FOREIGN Copies a foreign (non-Ada) object file into the current program library. The file is used as a library body (body of a package, procedure, or function). Format COPY FOREIGN file-spec unit-name 4 Parameters file-spec Specifies the object file containing the foreign body to be copied into the current program library. The default directory is the current default directory. The default file type is .OBJ. No wildcard characters are allowed in the file specification. unit-name Specifies the unit whose body is to be copied into the current program library with the ACS COPY FOREIGN command. 4 Description The ACS COPY FOREIGN command copies a foreign (non-Ada) object file into the current program library. Because the file is used as a library body, the program library must contain a library specification for the unit, and the specification must contain the pragma INTERFACE and (if appropriate) a pragma IMPORT_ FUNCTION, IMPORT_PROCEDURE, or IMPORT_VALUED_PROCEDURE for any procedure or function that the specification requires. Once you supply a foreign body for a unit, the program library manager assumes that the body is current until you supply a new (Ada or foreign) definition of the body. Compiling the specification of the unit does not cause the body to become obsolete. 4 Command_Qualifiers /LOG /LOG /NOLOG (D) Controls whether the unit name and object-file name are displayed after the object file is copied. By default, the unit name or object-file name is not displayed. /REPLACE /REPLACE /NOREPLACE (D) Controls whether the specified file replaces a body that is already defined in the current program library for the unit name specified. By default, the specified file does not replace a body that is already defined in the current program library for the unit name specified. 4 Example ACS> COPY FOREIGN USER:[JONES.WORK]SQUARE SQR Copies the object file SQUARE.OBJ from the directory USER:[JONES.WORK] into the current program library as the body of unit SQR. The specification of SQR must already be defined in the current program library. 3 UNIT Copies one or more units from another program library into the current program library. Format COPY UNIT from-directory-spec unit-name[,...] 4 Parameters from-directory-spec Specifies the program library or program sublibrary that contains the units to be copied into the current program library. unit-name Specifies one or more units to be copied into the current program library. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) 4 Description The ACS COPY UNIT command copies, into the current program library, each specified unit's specification and body (if any). If the specified unit is a subunit, the COPY UNIT command copies the subunit and any nested subunits. If you specify the /CLOSURE qualifier, the COPY UNIT command copies the closure of the set of units specified. For each unit copied, the COPY UNIT command updates the current program library as follows: 1. Creates local copies of all associated files 2. Updates the library index file of the current program library to account for the new files, and notes the date and time the unit was last compiled into its original program library Copying a unit that was entered into a program library produces a local copy of that unit. The COPY UNIT command does not affect the program library from which a unit is copied. Modifying the unit in the original program library does not affect the copied unit. Once a unit is copied to a given program library, it can be used as if it had been compiled locally. 4 Command_Qualifiers /CLOSURE /CLOSURE /NOCLOSURE (D) Controls whether the COPY UNIT command copies the closure of the set of units specified into the current program library. By default, only the specification and body of the units specified are copied. /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the COPY UNIT command displays the name of each unit before copying, and requests you to confirm whether or not the unit should be copied. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. o QUIT or Ctrl/Z indicates that you want to stop processing the command at that point. o ALL indicates that you want to continue processing the command without any further prompts. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the confirmation prompt is reissued. By default, no confirmation is requested. /ENTERED /ENTERED[=library] (D) /NOENTERED Controls whether entered units are copied. You can use the library option to copy units that were entered from a particular library. When you specify the /NOENTERED qualifier, only units that have been compiled or copied into the current program library are copied. Note that when you specify the /ENTERED qualifier, local units are copied unless the /NOLOCAL qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units specified, including entered units, are copied. /LOCAL /LOCAL (D) /NOLOCAL Controls whether local units (those units that were added to the library by a compilation or a COPY UNIT command) are copied. Note that when you specify the /LOCAL qualifier, entered units are copied unless the /NOENTERED qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units specified, including local units, are copied. /LOG /LOG /NOLOG (D) Controls whether the name of a unit is displayed after it has been copied. By default, the names of copied units are not displayed. /REPLACE /REPLACE /NOREPLACE (D) Controls whether the unit to be copied replaces a unit of the same name that is already defined in the current program library. By default, the unit to be copied does not replace a unit of the same name that is already defined in the current program library. 4 Positional_Qualifiers /BODY_ONLY /BODY_ONLY Copies only the body of the specified unit. When you append the /BODY_ONLY qualifier to the COPY UNIT command string, any /SPECIFICATION_ONLY qualifiers that are appended to parameters in the command line override the /SPECIFICATION_ONLY qualifier for those particular parameters. You cannot append both the /BODY_ONLY qualifier and the /SPECIFICATION_ONLY qualifier to the COPY UNIT command string or to the same unit name parameter. By default, if the /BODY_ONLY qualifier is omitted, the specification, as well as the body, is copied. /SPECIFICATION_ONLY /SPECIFICATION_ONLY Copies only the specification of the specified unit. When you append the /SPECIFICATION_ONLY qualifier to the COPY UNIT command string, any /BODY_ONLY qualifiers that are appended to parameters in the command line override the /BODY_ONLY qualifier for those particular parameters. You cannot append both the /SPECIFICATION_ONLY qualifier and the /BODY_ONLY qualifier to the COPY UNIT command string or to the same unit name parameter. By default, if the /SPECIFICATION_ONLY qualifier is omitted, the body, as well as the specification, is copied. 4 Examples 1.ACS> COPY UNIT [SMITH.WORK.ADALIB] STACKS,SUM Copies the units STACKS and SUM, located in the program library [SMITH.WORK.ADALIB], into the current program library. 2.ACS> COPY UNIT/CLOSURE DISK:[SMITH.SHARE.ADALIB] QUEUE_MANAGER Copies the closure of unit QUEUE_MANAGER from DISK:[SMITH.SHARE.ADALIB] into the current program library. 3.ACS> COPY UNIT DISK:[PROJ.ADALIB] STACKS* Copies the specification, body, and all of the subunits of the unit STACKS from the program library DISK:[PROJ.ADALIB] to the current program library. 2 CREATE 3 LIBRARY Creates a new Compaq Ada program library. To create a program sublibrary, use the ACS CREATE SUBLIBRARY command. Note that you cannot create a program library across DECnet if a corresponding OpenVMS directory does not already exist. Format CREATE LIBRARY directory-spec 4 Parameters directory-spec Specifies the program library to be created. The directory specification must contain a OpenVMS directory name and, optionally, a device name (see the OpenVMS User's Manual for OpenVMS directory naming conventions). The directory may be a subdirectory or a main (top-level) directory. No wildcard characters are allowed in the directory specification. The program libraries you create will typically be subdirectories of your main (top-level) directory. To create a program library as a top-level directory, you must have the necessary privileges. To create a subdirectory, you must have write access to the lowest level directory that currently exists. The directory specified to be a program library may be an existing empty directory, to allow you to use special ACL (access control list) options for that directory. See the OpenVMS User's Manual and the VMS Access Control List Editor Manual for more information on directory protection and ACL options. 4 Description The ACS CREATE LIBRARY command creates and initializes a new program library by performing the following steps: 1. Creates the specified OpenVMS directory, unless it already exists. If the directory already exists before the CREATE LIBRARY command is entered, the original directory protection attributes are maintained. If the directory does not exist when the command is entered, the command creates the specified directory with default protection attributes (see the description of the /PROTECTION qualifier). 2. Creates a library index file (ADALIB.ALB) and a library version control file (ADA$LIB.DAT) in the program library. 3. Initializes the program library to the following system characteristics: FLOAT_REPRESENTATION=VAX_FLOAT LONG_FLOAT = G_FLOAT MEMORY_SIZE = 2147483647 SYSTEM_NAME = VAX_VMS or OpenVMS_AXP You change these characteristics with the ACS SET PRAGMA command or with the /SYSTEM_NAME qualifier that applies to the ACS CREATE LIBRARY, CREATE SUBLIBRARY, EXPORT, and LINK commands. 4. If the /PREDEFINED qualifier is specified (the default), enters into the newly created program library the Compaq Ada predefined units (such as SYSTEM and TEXT_IO) that are located in the ADA$PREDEFINED program library on your system. This is equivalent to entering an ACS ENTER UNIT command for those predefined units. You can use the /NOPREDEFINED qualifier to change this default. The CREATE LIBRARY command does not define a new program library to be the current program library. You must use the ACS SET LIBRARY command to define the current program library. 4 Command_Qualifiers /FLOAT_REPRESENTATION /FLOAT_REPRESENTATION=VAX_FLOAT (D) Initializes the program library to a particular value of FLOAT_ REPRESENTATION. The possible values are either VAX_FLOAT or IEEE_ FLOAT (for Alpha systems only). The effect of this qualifier is similar to compiling a pragma FLOAT_REPRESENTATION. By default, if the /FLOAT_REPRESENTATION qualifier is not specified, the program library is initialized to VAX_FLOAT. /LARGE /LARGE /NOLARGE (D) Controls whether the program library manager creates subdirectories within the library directory to store library files for units compiled into the library. When the /NOLARGE qualifier is in effect (the default), the program library manager does not create subdirectories and stores unit library files in the library directory. When this qualifier is in effect, creating sublibrary directories to store library files can improve the compilation performance of large program libraries. (See the Developing Ada Programs on OpenVMS Systems and the release notes for more information.) /LOG /LOG (D) /NOLOG Controls whether the program library directory specification is displayed after the library has been created. By default, the program library directory specification is displayed. /LONG_FLOAT /LONG_FLOAT=option Initializes the program library to a particular value of LONG_ FLOAT. The possible values are D_FLOAT and G_FLOAT. The effect of this qualifier is equivalent to compiling a pragma LONG_FLOAT. By default, if the /LONG_FLOAT qualifier is not specified, the program sublibrary is initialized to the value G_FLOAT. /MEMORY_SIZE /MEMORY_SIZE=n Initializes the memory size of the program library to the value n. The effect of this qualifier is equivalent to compiling a pragma MEMORY_SIZE. By default, if the /MEMORY_SIZE qualifier is not specified, the initial memory size of the program library is 2,147,483,647 bytes. /PREDEFINED /PREDEFINED (D) /NOPREDEFINED Controls whether the Compaq Ada predefined units located in the program library denoted by the logical name ADA$PREDEFINED are entered into the specified program library. By default, the Compaq Ada predefined units are entered into the specified program library. /PROTECTION /PROTECTION=(code) Defines the file protection to be applied to the program library. File protection is specified as follows: /PROTECTION=(SYSTEM:rwed,OWNER:rwed,GROUP:rwed,WORLD:rwed) Refer to the OpenVMS User's Manual for complete information on the form and meaning of file protection codes. If you want to deny all access to a category, you must specify the category name without a colon. For example: /PROTECTION=(OWNER:RWE,GROUP,WORLD) If you do not specify a value for each access category, or if you omit the /PROTECTION qualifier when you create the program library, standard VMS directory and file protection defaults are applied as follows: o The directory protection defaults from the next-higher-level directory, less any delete access. o Protection for the library index file (ADALIB.ALB) and library version control file (ADA$LIB.DAT) defaults from the process default protection (see the DCL SET PROTECTION/DEFAULT command). See Developing Ada Programs on OpenVMS Systems for more information on program library protection. /SYSTEM_NAME /SYSTEM_NAME=system Determines the target operating system for the program library. On VAX systems, the possible system values are VAX_VMS and VAXELN. On Alpha systems, the system value is OpenVMS_AXP. By default, if the /SYSTEM_NAME qualifier is not specified, the initial target operating system is VAX_VMS on VAX systems and OpenVMS_AXP on Alpha systems. 4 Examples 1.ACS> CREATE LIBRARY [JONES.HOTEL.ADALIB] %I, Library USER:[JONES.HOTEL.ADALIB] created Creates the program library [JONES.HOTEL.ADALIB] on the default device, USER:. 2.ACS> CREATE LIBRARY/PROTECTION=(S:RWE,O:RWED,G:RW,W) - _ACS> [PROJ.ADALIB] %I, Program library USER:[PROJ.ADALIB] created Creates the program library [PROJ.ADALIB] on the default device, USER. The /PROTECTION qualifier assigns the specified program library protection. This protection is applied to the library index file, the library version control file, and the directory file for the newly created program library. 3 SUBLIBRARY Creates a new Compaq Ada program sublibrary and establishes its parent program library. Note that you cannot create a program sublibrary across DECnet if the corresponding OpenVMS directory does not already exist. Format CREATE SUBLIBRARY directory-spec 4 Parameters directory-spec Specifies the program sublibrary to be created. The directory specification must contain a OpenVMS directory name and, optionally, a device name (see the OpenVMS User's Manual for VMS directory naming conventions). No wildcard characters are allowed in the directory specification. You may use any valid OpenVMS directory specification when creating a program sublibrary; however, the program sublibraries you create will typically be subdirectories of your main (top- level) directory. The specified program sublibrary directory may be, but need not be, a subdirectory of the parent library directory. The directory specified to be a program sublibrary may be an existing empty directory. This allows you to use special ACL (access control list) options for that directory. In that case, the CREATE SUBLIBRARY command makes the directory a program library. See the OpenVMS User's Manual and the VMS Access Control List Editor Manual for more information on directory protection and ACL options. 4 Description The ACS CREATE SUBLIBRARY command creates and initializes a new program sublibrary by performing the following steps: 1. Checks that the parent library exists and is write accessible. 2. Creates the specified OpenVMS directory, unless it already exists. If the directory already existed before the CREATE SUBLIBRARY command was entered, the original directory protection attributes are maintained. If the directory did not exist before the command was entered, the command creates the specified directory with default protection attributes (see the description of the /PROTECTION qualifier). 3. Creates a library index file (ADALIB.ALB) and a library version control file (ADA$LIB.DAT) in the program sublibrary. 4. Initializes the library index file to reference the parent program library as specified with the /PARENT qualifier. If the /PARENT qualifier is not used, the parent program library is the current program library. 5. Initializes the program sublibrary to the parent library's current values for FLOAT_REPRESENTATION, LONG_FLOAT, MEMORY_ SIZE, and SYSTEM_NAME. Program sublibraries may be nested several levels deep. However, you should limit nesting to three or four levels for best performance. Note that the OpenVMS operating system imposes limits on how deeply directories and subdirectories can be nested. This limit has an effect only if you use increasingly subordinate subdirectories for each sublibrary in your sublibrary tree. The CREATE SUBLIBRARY command does not affect the definition of your current program library. If you want to define the newly created program sublibrary to be the current program library, you must use the ACS SET LIBRARY command. 4 Command_Qualifiers /FLOAT_REPRESENTATION /FLOAT_REPRESENTATION=VAX_FLOAT (D) Initializes the program library to a particular value of FLOAT_ REPRESENTATION. The possible values are either VAX_FLOAT or IEEE_ FLOAT (for Alpha systems only). The effect of this qualifier is similar to compiling a pragma FLOAT_REPRESENTATION. By default, if the /FLOAT_REPRESENTATION qualifier is not specified, the program library is initialized to VAX_FLOAT. /LOG /LOG (D) /NOLOG Controls whether the program sublibrary directory specification is displayed after the sublibrary has been created. By default, the program sublibrary directory specification is displayed. /LONG_FLOAT /LONG_FLOAT=option Initializes the program library to a particular value of LONG_ FLOAT. The possible values are D_FLOAT and G_FLOAT. By default, if the /LONG_FLOAT qualifier is not specified, the program sublibrary is initialized to the parent library's current value of LONG_FLOAT. /MEMORY_SIZE /MEMORY_SIZE=n Initializes the memory size of the created program sublibrary. By default, if the /MEMORY_SIZE qualifier is not specified, the initial memory size of the program sublibrary is the parent library's current value of MEMORY_SIZE. /PARENT /PARENT=directory-spec Specifies the program library or program sublibrary that is the immediate parent of the program sublibrary to be created. By default, if the /PARENT qualifier is not specified, the parent is the current program library as established by the last ACS SET LIBRARY command. /PROTECTION /PROTECTION=(code) Defines the file protection to be applied to the program sublibrary. File protection is specified as follows: /PROTECTION=(SYSTEM:rwed,OWNER:rwed,GROUP:rwed,WORLD:rwed) Refer to the OpenVMS User's Manual for complete information on the form and meaning of file protection codes. If you want to deny all access to a category, you must specify the category name without a colon. For example: /PROTECTION=(OWNER:RWE,GROUP,WORLD) If you do not specify a value for each access category, or if you omit the /PROTECTION qualifier when you create the program library, standard VMS directory and file protection defaults are applied as follows: o The directory protection defaults from the next-higher-level directory, less any delete access. o Protection for the library index file (ADALIB.ALB) and library version control file (ADA$LIB.DAT) defaults from the process default protection (see the DCL SET PROTECTION/DEFAULT command in the OpenVMS DCL Dictionary). See Developing Ada Programs on OpenVMS Systems for more information on program library protection. /SYSTEM_NAME /SYSTEM_NAME=system Initializes the target operating system of the program sublibrary. On VAX systems, the possible system values are VAX_ VMS and VAXELN. On Alpha systems, the system value is OpenVMS_AXP. By default, if the /SYSTEM_NAME qualifier is not specified, the initial target operating system is the parent library's current value of SYSTEM_NAME. 4 Examples 1.ACS> CREATE SUBLIBRARY [JONES.TEMP.SUBLIB] %I, Sublibrary USER:[JONES.TEMP.SUBLIB] created Creates the program sublibrary [JONES.TEMP.SUBLIB] on the current default device. The parent library is the current program library. 2.ACS> CREATE SUBLIBRARY/PARENT=[HOTEL.ADALIB] [JONES.LISTS.SUBLIB] %I, Sublibrary USER:[JONES.LISTS.SUBLIB] created Creates the program sublibrary [JONES.LISTS.SUBLIB] on the current default device. The command defines [HOTEL.ADALIB] to be the parent library. 2 DELETE 3 LIBRARY Deletes a Compaq Ada program library and all its units. To delete a program sublibrary, you must use the ACS DELETE SUBLIBRARY command. NOTE A program library does not contain any references to program sublibraries. When you enter the ACS DELETE LIBRARY command, you are not warned of the possible existence of any program sublibraries. Format DELETE LIBRARY directory-spec 4 Parameters directory-spec Specifies the program library directory to be deleted. The directory must be a Compaq Ada program library; that is, it must have been created with the ACS CREATE LIBRARY command. 4 Description The ACS DELETE LIBRARY command performs the following steps: 1. Checks whether the directory specified to be deleted is a Compaq Ada program library (has a valid library index file, ADALIB.ALB). If not, a message is issued and there is no further action. 2. If the specified directory is a Compaq Ada program library, deletes the files needed for program library operations. For example, the library index file (ADALIB.ALB), library version control file (ADA$LIB.DAT), and all object (.OBJ), compilation unit (.ACU), and copied source (.ADC) files are deleted. 3. If the program library is empty after step 2 and has the appropriate protection, deletes the directory. If the directory is not empty, it is preserved and a message is issued. To delete the files and directory in that case, you must exit from the program library manager and use the DCL DELETE command. Note that, when a program library is created, the directory inherits the protection of its parent directory less any delete access by default. Before attempting to delete a program library that is delete protected against the owner, you must change the directory protection of the library with the DCL SET PROTECTION command. See Developing Ada Programs on OpenVMS Systems for more information on program library protection. The DELETE LIBRARY command does not delete any program sublibraries of the specified program library. You cannot use the DELETE LIBRARY command to delete a sublibrary. 4 Command_Qualifiers /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the DELETE LIBRARY command displays the name of the program library before deleting it and requests you to confirm whether or not the program library should be deleted. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /LOG /LOG (D) /NOLOG Controls whether the program library directory specification is displayed after the library has been deleted. By default, the program library directory specification is displayed. 4 Example ACS> DELETE LIBRARY/CONFIRM [JONES.TEMP.ADALIB] USER:[JONES.TEMP.ADALIB], delete library? [N]: Y %I, Library USER:[JONES.SCRATCH.ADALIB] deleted Requests confirmation to delete the program library [JONES.TEMP.ADALIB]. After confirmation, the command deletes the library index file, library version control file, and all object, compilation unit, and copied source files. Because no other files remain in the program library directory, and the directory protection allows delete access, the directory is deleted and the name of the deleted program library is displayed. 3 SUBLIBRARY Deletes a Compaq Ada program sublibrary and all its units. To delete a program library, you must use the ACS DELETE LIBRARY command. NOTE A program sublibrary does not contain any references to nested program sublibraries. When you enter the ACS DELETE SUBLIBRARY command, you are not warned of the possible existence of any nested program sublibraries. Format DELETE SUBLIBRARY directory-spec 4 Parameters directory-spec Specifies the program sublibrary directory to be deleted. The directory must be a Compaq Ada program sublibrary; that is, it must have been created with the ACS CREATE SUBLIBRARY command. 4 Description The ACS DELETE SUBLIBRARY command performs the following steps: 1. Checks whether the directory specified to be deleted is a DEC Ada program sublibrary. If not, a message is issued and there is no further action. 2. If the specified directory is a Compaq Ada program sublibrary, deletes the files needed for sublibrary operations. For example, the library index file (ADALIB.ALB), library version control file (ADA$LIB.DAT), and all object (.OBJ), compilation unit (.ACU), and copied source (.ADC) files are deleted. 3. If the program sublibrary is empty after step 2 and has the appropriate protection, deletes the directory. If the directory is not empty, it is preserved and a message is issued. To delete the files and directory in that case, you must exit from the program library manager and use the DCL DELETE command. Note that, when a program sublibrary is created, the directory inherits the protection of its parent directory less any delete access by default (note that the parent directory may not necessarily be the sublibrary's parent library). Before attempting to delete a program sublibrary that is delete protected against the owner, you must change the directory protection of the sublibrary with the DCL SET PROTECTION command. See Developing Ada Programs on OpenVMS Systems for more information on sublibrary protection. The DELETE SUBLIBRARY command does not delete any nested program sublibraries of the specified program sublibrary. The DELETE SUBLIBRARY command does not delete a program library. 4 Command_Qualifiers /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the DELETE SUBLIBRARY command displays the name of the program sublibrary before deleting it and requests you to confirm whether or not the program sublibrary should be deleted. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /LOG /LOG (D) /NOLOG Controls whether the program sublibrary directory specification is displayed after the sublibrary has been deleted. By default, the program sublibrary directory specification is displayed. 4 Example ACS> DELETE SUBLIBRARY/CONFIRM [JONES.LISTS.SUBLIB] USER:[JONES.LISTS.SUBLIB], delete sublibrary? [N]: Y %I, Sublibrary USER:[JONES.LISTS.SUBLIB] deleted Requests confirmation to delete the sublibrary [JONES.LISTS.SUBLIB]. After confirmation, the command deletes the library index file and all object, compilation unit, and copied source files in [JONES.LISTS.SUBLIB]; it then deletes the program sublibrary. 3 UNIT Deletes one or more units from the current program library, including references to units entered from another program library. Format DELETE UNIT unit-name[,...] 4 Parameters unit-name[,...] Specifies one or more units to be deleted from the current program library. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) 4 Description The ACS DELETE UNIT command deletes, from the current program library, the specified unit's specification and body (if any). If you specify a subunit name, the DELETE UNIT command deletes the subunit and any nested subunits. The DELETE UNIT command deletes units that have been compiled, copied, or entered into the current program library. NOTE An ACS DELETE UNIT SYSTEM command deletes any unit called SYSTEM, be it predefined or user defined. Deleting the predefined unit SYSTEM can have major effects, such as not allowing you to use the predefined package TEXT_IO. If you accidentally delete the predefined package SYSTEM, you can restore it by entering the ACS ENTER UNIT command, and specifying the library denoted by the logical name ADA$PREDEFINED (see the ACS ENTER UNIT command for more information on entering units). For each unit specified, the DELETE UNIT command updates the current program library as follows: o Deletes the associated index entries in the library index file o Deletes any associated files from the current program library The DELETE UNIT command does not affect any files or index entries in program libraries other than the current program library. 4 Command_Qualifiers /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the DELETE UNIT command displays the unit name of each unit before deleting it, and requests you to confirm whether or not the unit should be deleted. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. o QUIT or Ctrl/Z indicates that you want to stop processing the command at that point. o ALL indicates that you want to continue processing the command without any further prompts. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /ENTERED /ENTERED[=library] (D) /NOENTERED Controls whether entered units are deleted. You can use the library option to delete units that were entered from a particular library. When you specify the /NOENTERED qualifier, only units that have been compiled or copied into the current program library are deleted. Note that when you specify the /ENTERED qualifier, local units are deleted unless the /NOLOCAL qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units specified, including entered units, are deleted. /LOCAL /LOCAL (D) /NOLOCAL Controls whether local units (those units that were added to the library by a compilation or a COPY UNIT command) are deleted. Note that when you specify the /LOCAL qualifier, entered units are deleted unless the /NOENTERED qualifier is also in effect (the defaults for these qualifiers are /LOCAL and ENTERED). By default, all units specified, including local units, are deleted. /LOG /LOG /NOLOG (D) Controls whether the name of a unit is displayed after it has been deleted. By default, the names of deleted units are not displayed. 4 Positional_Qualifiers /BODY_ONLY /BODY_ONLY Deletes only the body of the specified unit. When you append the /BODY_ONLY qualifier to the DELETE UNIT command string, any /SPECIFICATION_ONLY qualifiers that are appended to parameters in the command line override the /BODY_ ONLY qualifier for those particular parameters. You cannot append both the /BODY_ONLY qualifier and the /SPECIFICATION_ONLY qualifier to the DELETE UNIT command string or to the same unit name parameter. By default, if the /BODY_ONLY qualifier is omitted, the specification, as well as the body, is deleted. /SPECIFICATION_ONLY /SPECIFICATION_ONLY Deletes only the specification of the specified unit. When you append the /SPECIFICATION_ONLY qualifier to the DELETE UNIT command string, any /BODY_ONLY qualifiers that are appended to parameters in the command line override the /SPECIFICATION_ ONLY qualifier for those particular parameters. You cannot append both the /SPECIFICATION_ONLY qualifier and the /BODY_ONLY qualifier to the DELETE UNIT command string or to the same unit name parameter. By default, if the /SPECIFICATION_ONLY qualifier is omitted, the body, as well as the specification, is deleted. 4 Examples 1.ACS> DELETE UNIT/LOG SCREEN_IO %I, Package specification SCREEN_IO deleted %I, Package body SCREEN_IO deleted Deletes from the current program library the specification and body of SCREEN_IO, and displays the names of the components deleted. 2.ACS> DELETE UNIT/BODY_ONLY/CONFIRM RESERVATIONS RESERVATIONS, delete? [N]:Y Deletes the body of RESERVATIONS from the current program library. 3.ACS> DELETE UNIT STACKS* Deletes the specification, body, and all of the subunits of the unit STACKS. 2 DIRECTORY Displays information about one or more units in the current program library. Format DIRECTORY [unit-name[,...]] 3 Parameters [unit-name[,...]] Specifies one or more units in the current program library for which information is to be shown. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) 3 Description If you specify a unit name, the ACS DIRECTORY command displays information about the unit's specification and body, if the latter exists. If you specify a subunit name, the DIRECTORY command displays information about the subunit. If you do not specify a unit name, the DIRECTORY command displays information about all of the units in the current program library, including entered units. Units are listed by name in alphabetical order. Subunit names are shown using selected component notation. The output of the DIRECTORY command depends on whether you specify the /BRIEF, /FULL, or no formatting qualifier. If you do not specify a qualifier, the DIRECTORY command displays (for each unit specified) the unit name, the kind of unit (for example, procedure body, generic package declaration, and so on), and the compilation date and time. 3 Command_Qualifiers /BRIEF /BRIEF Lists only the names of the units specified. /ENTERED /ENTERED[=library] (D) /NOENTERED Controls whether entered units are displayed. You can use the library option to display units that were entered from a particular library. When you specify the /NOENTERED qualifier, only units that have been compiled or copied into the current program library are displayed. Note that when you specify the /ENTERED qualifier, local units are displayed unless the /NOLOCAL qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units, including entered units, are displayed. /FULL /FULL Lists (for each unit specified) the unit name, kind, compilation date and time, and the file specifications of the associated files. The file specifications of entered units are shown preceded with an at character (@). /LOCAL /LOCAL (D) /NOLOCAL Controls whether local units (those units that were added to the library by a compilation or a COPY UNIT command) are displayed. Note that when you specify the /LOCAL qualifier, entered units are displayed unless the /NOENTERED qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units specified, including local units, are displayed. /OUTPUT /OUTPUT=file-spec Requests that the DIRECTORY command output be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the DIRECTORY command output is written to SYS$OUTPUT. 3 Positional_Qualifiers /BODY_ONLY /BODY_ONLY Displays only the body of the specified unit. When you append the /BODY_ONLY qualifier to the DIRECTORY command string, any /SPECIFICATION_ONLY qualifiers that are appended to parameters in the command line override the /BODY_ONLY qualifier for those particular parameters. You cannot append both the /BODY_ONLY qualifier and the /SPECIFICATION_ONLY qualifier to the DIRECTORY command string or to the same unit name parameter. By default, if the /BODY_ONLY qualifier is omitted, the specification, as well as the body, is displayed. /SPECIFICATION_ONLY /SPECIFICATION_ONLY Displays only the specification of the specified unit. When you append the /SPECIFICATION_ONLY qualifier to the DIRECTORY command string, any /BODY_ONLY qualifiers that are appended to parameters in the command line override the /SPECIFICATION_ONLY qualifier for those particular parameters. You cannot append both the /SPECIFICATION_ONLY qualifier and the /BODY_ONLY qualifier to the DIRECTORY command string or to the same unit name parameter. By default, if the /SPECIFICATION_ONLY qualifier is omitted, the body, as well as the specification, is displayed. 3 Examples 1.ACS> DIRECTORY/NOENTERED/BRIEF * . . . HOTEL RESERVATIONS RESERVATIONS.CANCEL RESERVATIONS.RESERVE RESERVATIONS.RESERVE.BILL . . . Total of 13 units. Lists the names of all units and subunits that have been compiled or copied into the current program library. 2.ACS> DIRECTORY SCREEN_IO* SCREEN_IO package specification 4-NOV-1992 18:11:47.55 package body 4-NOV-1992 18:12:05.46 SCREEN_IO.INPUT procedure body 4-NOV-1992 18:12:20.80 SCREEN_IO.INPUT.BUFFER function body 4-NOV-1992 18:12:56.64 SCREEN_IO.OUTPUT procedure body 4-NOV-1992 18:13:09.14 Total of 5 units. Displays the unit name, unit kind, and date-time of the last compilation for all units in the current program library whose names start with SCREEN_IO. 3.ACS> DIRECTORY/FULL SCREEN_IO.INPUT* SCREEN_IO.INPUT procedure body 4-NOV-1992 18:12:20.80 SCREEN_IO__INPUT.ACU;3 SCREEN_IO__INPUT.OBJ;3 SCREEN_IO__INPUT.ADC;3 @ ADA25$:[RYAN.PROJECT.VAXADA_V30FT3]SCREEN_IO__INPUT.ADA;3 SCREEN_IO.INPUT.BUFFER function body 4-NOV-1992 18:12:56.64 SCREEN_IO__BUFFER.ACU;3 SCREEN_IO__BUFFER.OBJ;3 SCREEN_IO__BUFFER.ADC;3 @ ADA25$:[RYAN.PROJECT.VAXADA_V30FT3]SCREEN_IO__BUFFER.ADA;3 Displays the unit name, unit kind, associated file specifications, and date-time of the last compilation for all of the units in the current program library whose names start with SCREEN_IO.INPUT. The file specifications listed are those for the compilation unit (.ACU), object (.OBJ), copied source (.ADC), and source (.ADA) files. 4.$ ACS DIRECTORY ASSERT,HOTEL,RESERVATIONS.SEND,SQR ASSERT package instantiation 27-OCT-1992 10:07:54.09 HOTEL procedure body 4-NOV-1992 16:07:05.22
RESERVATIONS.SEND procedure body 4-NOV-1992 14:10:23.47 SQR function specification 4-NOV-1992 17:10:39.42 function body 4-NOV-1992 16:47:02.18 ADA_CALLER procedure body 4-NOV-1992 18:31:40.87
Total of 6 units. Displays the unit name, unit-kind, date-time of last compilation, and unit type and status for each unit specified. Note that the unit ADA_CALLER is a main program that has been design-checked. 2 ENTER 3 FOREIGN Enters a reference to an external file into the current program library. The file is entered as a foreign (non-Ada) library body (the body of a package, procedure, or function). The file may be an object file, object library, shareable image library, shareable image, or linker options file. Format ENTER FOREIGN file-spec unit-name 4 Parameters file-spec Specifies the file containing the foreign body to be entered into the current program library. The file may be a OpenVMS object file, object library, shareable image library, shareable image, or linker options file. The default directory is the current default directory. The default file type is .OBJ, unless the /LIBRARY, /OPTIONS, or /SHAREABLE qualifier is used. No wildcard characters are allowed in the file specification. If the file is an object file, you can optionally use the /OBJECT qualifier. The default file type is .OBJ. If the file is an object library or shareable image library, you must use the /LIBRARY qualifier. The default file type is .OLB. If the file is a linker options file, you must use the /OPTIONS qualifier. The default file type is .OPT. If the file is a shareable image, you must use the /SHAREABLE qualifier. The default file type is .EXE. unit-name Specifies the unit whose body is to be referenced with the ENTER FOREIGN command. 4 Description The ACS ENTER FOREIGN command enters a reference to an external file, which then serves as a foreign (non-Ada) library body for an Ada compilation unit. The program library must contain a library specification for the unit, and the specification must contain the pragma INTERFACE and (if appropriate) a pragma IMPORT_FUNCTION, IMPORT_PROCEDURE, or IMPORT_VALUED_PROCEDURE. Once you supply a foreign body for a unit, the program library manager assumes that the body is current until you supply a new (Ada or foreign) definition of the body. Compiling the specification of the unit does not cause the body to become obsolete. 4 Command_Qualifiers /LIBRARY /LIBRARY Indicates that the associated input file is a OpenVMS object library or shareable image library. The default file type is .OLB. By default, if you do not specify the /LIBRARY qualifier, the file is assumed to be an object file with a default file type of .OBJ. /LOG /LOG /NOLOG (D) Controls whether the unit name and associated file name are displayed after a foreign body has been entered. By default, the unit name and associated file name are not displayed. /OBJECT /OBJECT Indicates that the associated input file is an object file. The default file type is .OBJ. The /OBJECT qualifier is the default, if you do not specify a /LIBRARY, /OPTIONS, or /SHAREABLE qualifier. /OPTIONS /OPTIONS Indicates that the associated input file is a OpenVMS linker options file. The default file type is .OPT. By default, if you do not specify the /OPTIONS qualifier, the file is assumed to be an object file with a default file type of .OBJ. /REPLACE /REPLACE /NOREPLACE (D) Controls whether the foreign body to be entered replaces a body that is already defined in the current program library for the unit name specified. By default, the foreign body to be entered does not replace a body that is already defined in the current program library for the unit name specified. /SHAREABLE /SHAREABLE Indicates that the associated input file is a OpenVMS shareable image. The default file type is .EXE. By default, if you do not specify the /SHAREABLE qualifier, the file is assumed to be an object file with a default file type of .OBJ. 4 Example ACS> ENTER FOREIGN DISK:[SMITH.MATH]SQUARE SQR Enters the object file SQUARE.OBJ from DISK:[SMITH.MATH] into the current program library, as the body of unit SQR. The specification of SQR is (as required) already defined in the program library. 3 UNIT Enters references in the current program library to one or more units located in another program library. Format ENTER UNIT from-directory-spec unit-name [,...] 4 Parameters from-directory-spec Specifies the program library that contains the units to be referenced. unit-name[,...] Specifies one or more units to be entered into the current program library. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more detailed information on wildcard characters.) 4 Description The ACS ENTER UNIT command enters into the current progam library each specified unit's specification and body (if any). If the specified unit is a subunit, the ENTER UNIT command enters the subunit and any nested subunits. If the /CLOSURE qualifier is specified, the ENTER UNIT command enters the closure of the set of units specified. For each unit entered, the ENTER UNIT command updates the library index file of the current program library to refer to the unit and its associated files, and to include the date and time the unit was last compiled into its original program library. An entered unit can be used as if had been compiled locally. In other words, a unit entered into a program library can be named in a clause by a unit that has been compiled into that program library. The ENTER UNIT command does not affect the program library from which a unit is entered. However, if an entered unit is subsequently compiled in its original program library, all references to that unit from other program libraries are invalidated. You must enter the ACS REENTER command to make the references current. (You may also need to then recompile any units that depend on the entered unit.) The ACS COMPILE and RECOMPILE commands have no effect on entered units. 4 Command_Qualifiers /CLOSURE /CLOSURE /NOCLOSURE (D) Controls whether the ENTER UNIT command enters the closure of the set of units specified into the current program library. By default, only the specification and body of the units specified are entered. /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the ENTER UNIT command displays the name of each unit before entering that unit into the current program library, and requests that you confirm whether or not that unit should be entered. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. o QUIT or Ctrl/Z indicates that you want to stop processing the command at that point. o ALL indicates that you want to continue processing the command without any further prompts. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /ENTERED /ENTERED[=library] (D) /NOENTERED Controls whether entered units are entered. You can use the library option to enter units that were entered from a particular library. When you specify the /NOENTERED qualifier, only units that have been compiled or copied into the other program library are entered. Note that when you specify the /ENTERED qualifier, local units are entered unless the /NOLOCAL qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units, including entered units, are entered. /LOCAL /LOCAL (D) /NOLOCAL Controls whether local units (those units that were added to the library by a compilation or a COPY UNIT command) are entered. Note that when you specify the /LOCAL qualifier, entered units are entered unless the /NOENTERED qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units specified, including local units, are entered. /LOG /LOG /NOLOG (D) Controls whether the name of a unit is displayed after it has been entered. By default, the names of entered units are not displayed. /REPLACE /REPLACE /NOREPLACE (D) Controls whether the unit to be entered replaces a unit of the same name that is already defined in the current program library. By default, the unit to be entered does not replace a unit of the same name that is already defined in the current program library. 4 Positional_Qualifiers /BODY_ONLY /BODY_ONLY Enters only the body of the specified unit. When you append the /BODY_ONLY qualifier to the ENTER UNIT command string, any /SPECIFICATION_ONLY qualifiers that are appended to parameters in the command line override the /BODY_ ONLY qualifier for those particular parameters. You cannot append both the /BODY_ONLY qualifier and the /SPECIFICATION_ONLY qualifier to the ENTER UNIT command string or to the same unit name parameter. By default, if the /BODY_ONLY qualifier is omitted, the specification, as well as the body, is entered. /SPECIFICATION_ONLY /SPECIFICATION_ONLY Enters only the specification of the specified unit. When you append the /SPECIFICATION_ONLY qualifier to the ENTER UNIT command string, any /BODY_ONLY qualifiers that are appended to parameters in the command line override the /SPECIFICATION_ ONLY qualifier for those particular parameters. You cannot append both the /SPECIFICATION_ONLY qualifier and the /BODY_ONLY qualifier to the ENTER UNIT command string or to the same unit name parameter. By default, if the /SPECIFICATION_ONLY qualifier is omitted, the body, as well as the specification, is entered. 4 Examples 1.ACS> ENTER UNIT [PROJ.MAIN_LIB] * Enters all of the units from the project library into the current program library. 2.ACS> ENTER UNIT/REPLACE DISK:[SMITH.SHARE.ADALIB] QUEUE_MANAGER Enters the unit QUEUE_MANAGER into the current program library from the library DISK:[SMITH.SHARE.ADALIB], replacing any previous index reference to that unit. If the /REPLACE qualifier had not been used, a previously existing reference to QUEUE_MANAGER would not have been replaced. 2 EXIT Exits from the program library manager and returns control to DCL. Format EXIT 3 Description The EXIT command allows you to exit from the program library manager when you are using it interactively. You can also use Ctrl/Z for the same purpose. 3 Example ACS> EXIT $ Exits from the program library manager and returns control to DCL. 2 EXPORT Creates an object file that contains the object code for all units in the closure of the list of units specified. Format EXPORT unit-name[,...] 3 Parameters unit-name[,...] Specifies one or more units in the current program library whose closure will be used to create an object file. If you specify the /MAIN qualifier: o You can specify only one unit name. o The generated object file contains the image transfer address, and therefore can be used as a main program. o The transfer address of the unit specified is used. By default (or if you specify the /NOMAIN qualifier): o You can specify more than one unit name. The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the VMS DCL Concepts Manual for more information on wildcard characters.) o The generated object file does not contain the image transfer address, and therefore cannot be used as a main program. The exported units can be invoked by a non-Ada program. 3 Description The ACS EXPORT command creates a concatenated object file for all the units in the closure of the list of units specified. The object file always contains code to elaborate any library packages that are exported. Note that any exported units that will be called from a foreign module must contain the appropriate export pragma in the source code: EXPORT_FUNCTION, EXPORT_PROCEDURE, EXPORT_VALUED_PROCEDURE, EXPORT_OBJECT, PSECT_OBJECT, or EXPORT_EXCEPTION (see the DEC Ada Language Reference Manual and DEC Ada Run-Time Reference Manual for OpenVMS Systems for exact details). Object files created by different invocations of the EXPORT command may include some code that is common-for example, if each closure includes the predefined unit TEXT_IO. In such cases, you will not be able to link those files into the same image. Whenever you think that closures may include units in common, you should specify all the units in a single EXPORT command line. 3 Command_Qualifiers /LOG /LOG /NOLOG (D) Controls whether a list of all the units included in the exported object file is displayed. The display shows the units according to the order of elaboration for the program. By default, a list of the units included in the exported object file is not displayed. /MAIN /MAIN /NOMAIN (D) Controls whether the generated object file is to contain the image transfer address (of the first unit specified), and therefore is to be a main program. By default, the generated object file does not contain the image transfer address, and therefore is not to be a main program. /OBJECT /OBJECT=file-spec Provides a file specification for the generated object file that is to be exported. The default directory is the current default directory. The default file type is .OBJ. No wildcard characters are allowed in the file specification. By default, if you do not use the /OBJECT qualifier, a file name comprising up to the first 39 characters of the first unit name is provided. /OUTPUT /OUTPUT=file-spec Requests that the EXPORT command output be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the EXPORT command output is written to SYS$OUTPUT. /SYSTEM_NAME /SYSTEM_NAME=system Directs the program library manager to produce elaboration code for execution on a particular operating system; the possible system values are VAX_VMS and VAXELN on VAX systems and OpenVMS_AXP on Alpha systems. Note that when the value is VAXELN, the execution of elaboration code by non-Ada callers is not automatic; your program must take special action at run time to elaborate library packages. See the VAXELN Ada Programming Guide for more information. By default, if the /SYSTEM_NAME qualifier is not specified in the EXPORT command, the setting of the pragma SYSTEM_NAME for the current program library determines the target operating system environment. 3 Examples 1.ACS> EXPORT/MAIN HOTEL/OBJECT=EXP_HOTEL Creates the object file EXP_HOTEL.OBJ, which contains the code for all of the units in the execution closure of unit HOTEL, including any package elaboration code. Because the /MAIN qualifier is specified, the file created also contains the image transfer address. 2.ACS> EXPORT/SYSTEM_NAME=VAXELN HOTEL/OBJECT=VAXELN_HOTEL Creates the object file VAXELN_HOTEL, which contains the code for all of the units in the execution closure of unit HOTEL, including any package elaboration code. The elaboration code created is for a VAXELN target. See the VAXELN Ada Programming Guide for information on how to prepare and run VAXELN Ada programs. 2 EXTRACT 3 SOURCE Creates a copy of the copied source files associated with the specified units. The specified units must be defined in the current program library. Format EXTRACT SOURCE unit-name[,...] 4 Parameters unit-name[,...] Specifies one or more units in the current program library whose copied source files are to be copied. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for detailed information on wildcard characters.) 4 Description For each unit specified, the ACS EXTRACT SOURCE command creates a copy of the copied source files associated with the unit's specification and body. If a subunit name is specified, the EXTRACT SOURCE command creates a copy of the subunit's copied source file. The unit or subunit must be defined in the current program library. The files are created in the current default directory. If they have less than or equal to 39 characters, the file names are the same as those of the corresponding copied source files in the current program library-that is, file names follow the file- name conventions defined in Developing Ada Programs on OpenVMS Systems. If they have more than 39 characters, the program library manager generates a name. The file type of the created files is .ADA. 4 Command_Qualifiers /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the EXTRACT SOURCE command displays the name of each unit before creating a copy of the copied source files and requests that you confirm whether or not the unit should be copied. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. o QUIT or Ctrl/Z indicates that you want to stop processing the command at that point. o ALL indicates that you want to continue processing the command without any further prompts. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /ENTERED /ENTERED[=library] (D) /NOENTERED Controls whether the source files for entered units are extracted. You can use the library option to extract units that were entered from a particular library. When you specify the /NOENTERED qualifier, only the source files for units that have been compiled or copied into the current program library are extracted. Note that when you specify the /ENTERED qualifier, local units are extracted unless the /NOLOCAL qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, the source file for all units, including entered units, are extracted. /LOCAL /LOCAL (D) /NOLOCAL Controls whether local units (those units that were added to the library by a compilation or a COPY UNIT command) are extracted. Note that when you specify the /LOCAL qualifier, the source files for entered units are extracted unless the /NOENTERED qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, the source files for all units specified, including local units, are extracted. /LOG /LOG (D) /NOLOG Controls whether the names of units and extracted files are displayed after each unit's files are created. By default, the names of units and files are displayed. 4 Positional_Qualifiers /BODY_ONLY /BODY_ONLY Extracts the source file for only the body of the specified unit. When you append the /BODY_ONLY qualifier to the EXTRACT SOURCE command string, any /SPECIFICATION_ONLY qualifiers that are appended to parameters in the command line override the /BODY_ ONLY qualifier for those particular parameters. You cannot append both the /BODY_ONLY qualifier and the /SPECIFICATION_ONLY qualifier to the EXTRACT SOURCE command string or to the same unit name parameter. By default, if the /BODY_ONLY qualifier is omitted, the source file for the specification, as well as the body, is extracted. /SPECIFICATION_ONLY /SPECIFICATION_ONLY Extracts the source file for only the specification of the specified unit. When you append the /SPECIFICATION_ONLY qualifier to the EXTRACT SOURCE command string, any /BODY_ONLY qualifiers that are appended to parameters in the command line override the /SPECIFICATION_ONLY qualifier for those particular parameters. You cannot append both the /SPECIFICATION_ONLY qualifier and the /BODY_ONLY qualifier to the EXTRACT SOURCE command string or to the same unit name parameter. By default, if the /SPECIFICATION_ONLY qualifier is omitted, the source file for the body, as well as the specification, is extracted. 4 Example ACS> EXTRACT SOURCE TEXT_IO, STARLET Creates in the current default directory the files TEXT_IO_ .ADA, TEXT_IO.ADA, and STARLET_. These files are copies of the copied source files for, respectively, the specification and body of the predefined unit TEXT_IO and the specification of the predefined unit STARLET (TEXT_IO and STARLET were previously entered into the current program library). 2 HELP Displays information on ACS commands and qualifiers. Format HELP [keyword...] 3 Parameters [keyword...] Specifies zero or more keywords that indicate what information you want. Information is located in a hierarchical manner, depending on the level of information required. The levels are as follows: 1. None-Lists the ACS commands and selected topics. 2. Topic-Provides information about the topic. 3. Command-Describes the command, its format, and parameters, and lists its qualifiers. 4. Command followed by a qualifier-Describes the use of the qualifier. For example, CHECK/LOG describes the use of the /LOG qualifier. If you specify an asterisk (*) in place of any keyword, the HELP command displays all information available at that level. You can specify percent signs (%) and asterisks (*) in the keywords as wildcard characters. 3 Example ACS> HELP ENTER UNIT/CLOSURE Displays information about the /CLOSURE qualifier to the ACS ENTER UNIT command. 2 LINK Creates an executable image file for the specified units. Format LINK unit-name [file-spec[,...]] LINK/NOMAIN unit-name[,...] file-spec[,...] 3 Parameters unit-name[,...] By default (or if you specify the /MAIN qualifier): o You can specify only one unit, whose source code is written in Ada. o The Ada main program, which must be a procedure or function with no parameters. If the main program is a function, it must return a value of a discrete type; the function value is used as the OpenVMS image exit value. If you specify the /NOMAIN qualifier: o You can specify one or more units that are to be included in the executable image. The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) o The image transfer address comes from one of the non-Ada files specified. file-spec[,...] Specifies a list of OpenVMS object files, object libraries, shareable image libraries, shareable images, and linker option files that are to be used in linking the program. The default directory is the current default directory. The default file type is .OBJ, unless the /LIBRARY, /OPTIONS, or /SHAREABLE qualifier is used. No wildcard characters are allowed in a file specification. If the file is an object library or shareable image library, you must use the /LIBRARY qualifier. The default file type is .OLB. If the file is a linker options file, you must use the /OPTIONS qualifier. The default file type is .OPT. If the file is a shareable image, you must use the /SHAREABLE qualifier. The default file type is .EXE. If you specify the /NOMAIN qualifier, the image transfer address will come from one of the files (not units) specified. 3 Description The ACS LINK command goes through the following steps: 1. If LINK/NOMAIN is not specified, checks that only one unit is specified and that it is an Ada main program. 2. Forms the execution closure of the main program (LINK/MAIN) or of the specified units (LINK/NOMAIN) and verifies that all units in the closure are present, current, and complete. If the program library manager detects an error, the operation is terminated before the OpenVMS Linker is invoked. 3. Creates a DCL command file for the OpenVMS Linker. The command file is deleted after the ACS LINK operation is completed or terminated, unless LINK/COMMAND is specified. If LINK/COMMAND is specified, the command file is retained for future use, and the linker is not invoked. 4. Creates an object file (to be linked with the program) that elaborates the library units in proper order at run time. If the /NOMAIN qualifier is not specified, the object file also contains the image transfer address. This object file is deleted after the ACS LINK operation is completed or terminated, unless the /COMMAND qualifier is specified. If the /COMMAND qualifier is specified, the object file is retained and the linker is not invoked. 5. Unless the /COMMAND qualifier is specified, invokes the OpenVMS Linker as follows: a. By default (LINK/WAIT), the linker command file generated in step 3 is executed in a subprocess. You must wait for the link operation to terminate before entering another command. Note that when you specify the /WAIT qualifier (the default), process logical names are propagated to the subprocess generated to execute the command file. b. If you specify the /SUBMIT qualifier, the linker command file is submitted as a batch job. ACS output originating before the OpenVMS Linker is invoked is reported to your terminal by default, or to a file specified with the /OUTPUT qualifier. Linker diagnostics are reported to your terminal, by default, or to a log file if the ACS LINK command is executed in batch mode (ACS LINK/SUBMIT). Note that some new qualifiers are available with the OpenVMS Linker that are not supported by the ACS LINK command. You can pass such qualifiers to the linker by defining a symbol like the following before invoking the ACS LINK command: $ LINK :== LINK/NATIVE_ONLY/SYSEXE This symbol is then used by the ACS LINK command procedure that invokes the OpenVMS Linker. See Developing Ada Programs on OpenVMS Systems for more information on the ACS LINK command. The OpenVMS Linker is described in detail in the OpenVMS Linker Utility Manual. 3 Command_Qualifiers /AFTER /AFTER=time Requests that the batch job be held until after a specific time, when the ACS LINK command is executed in batch mode (LINK /SUBMIT). If the specified time has already passed, the job is queued for immediate processing. You can specify either an absolute time or a combination of absolute and delta time. See the OpenVMS User's Manual (or access the DCL HELP SPECIFY topic) for complete information on specifying time values. /BATCH_LOG /BATCH_LOG=file-spec Provides a file specification for the batch log file when the ACS LINK command is executed in batch mode (LINK/SUBMIT). If you do not give a directory specification with the file-spec option, the batch log file is created by default in the current default directory. If you do not give a file specification with the file-spec option, the default file name is the job name specified with the /NAME=job-name qualifier. If no job name has been specified, the program library manager creates a file name comprising up to the first 39 characters of the first unit name specified. If you specified LINK/NOMAIN and no job name and there is a wildcard character in the first unit specified, the program library manager uses the default file name ACS_LINK. The default file type is .LOG. /BRIEF /BRIEF Directs the linker to produce a brief image map file. The /BRIEF qualifier is valid only if you also specify the /MAP qualifier with the ACS LINK command. The /BRIEF qualifier is incompatible with the /FULL and /CROSS_REFERENCE qualifiers. A brief image map file contains only the following sections: o Object module synopsis o Image synopsis o Link run statistics In contrast, the default image map file contains the previous sections, as well as the program section synopsis and symbol definition section. See also the description of the /FULL qualifier. /COMMAND /COMMAND[=file-spec] Controls whether the linker is invoked as a result of the ACS LINK command, and determines whether the command file generated to invoke the linker is saved. If you specify the /COMMAND qualifier, the program library manager does not invoke the linker, and the generated command file is saved for you to invoke or submit as a batch job. The file-spec option allows you to enter a file specification for the generated command file. The default directory for the command file is the current default directory. By default, the program library manager provides a file name comprising up to the first 39 characters of the first unit name specified. If you specified LINK/NOMAIN and you used a wildcard character in the first unit name specified, the compiler uses the default name ACS_LINK. The default file type is .COM. No wildcard characters are allowed in the file specification. By default, if the /COMMAND qualifier is not specified, the program library manager deletes the generated command file when the ACS LINK command completes normally or is terminated. /CROSS_REFERENCE /CROSS_REFERENCE /NOCROSS_REFERENCE (D) Controls whether the image map file contains a symbol cross- reference. The /CROSS_REFERENCE qualifier is valid only if you also specify the /MAP qualifier in the ACS LINK command. The /CROSS_REFERENCE qualifier is incompatible with the /BRIEF qualifier. When you specify the /CROSS_REFERENCE qualifier, the linker replaces the symbol definition section of the image map file with the symbol cross-reference section. The cross-reference section lists, in alphabetical order, the name of each global symbol, together with the following information about each: o Its value o The name of the first module in which it is defined o The name of each module in which it is referenced The number of symbols listed in the cross-reference section depends on whether the linker is generating a full image map or a default image map. In a full image map, this section includes global symbols from all modules in the image, including those extracted from all libraries. In a default image map, this section does not include global symbols from modules extracted from the default system libraries SYS$SHARE:IMAGELIB.OLB and SYS$SHARE:STARLET.OLB. By default, the image map file does not contain a symbol cross- reference. In this case, if the linker is generating a default map or a full map, the map contains the symbol definition section instead of the symbol cross-reference section. /DEBUG /DEBUG[=file-spec] /NODEBUG (D) Controls whether a debugger symbol table is included in the executable image file, and whether the OpenVMS Debugger is invoked when the program is run. The /DEBUG qualifier optionally allows you to specify an alternate debugger or dynamic performance analyzer. The default file type is .OBJ. See the OpenVMS Debugger Manual for more information. By default, no debugger symbol table is included in the executable image. /EXECUTABLE /EXECUTABLE[=file-spec] (D) /NOEXECUTABLE Controls whether the linker creates an executable image file and optionally provides a file specification for the file. The default file type is .EXE. No wildcard characters are allowed in the file specification. You can use the /NOEXECUTABLE or /EXECUTABLE=NL: qualifier to test a set of qualifier options or input object modules without creating an image file. Using /EXECUTABLE=NL: is recommended, however, because the linker will not process certain qualifiers when the /NOEXECUTABLE qualifier is in effect. By default, an executable image file is created with a file name comprising up to the first 39 characters of the first unit name specified. /FULL /FULL Directs the linker to produce a full image map file, which is the most complete image map. The /FULL qualifier is valid only if you also specify the /MAP qualifier with the ACS LINK command. Also, the /FULL qualifier is incompatible with the /BRIEF qualifier, but not with the /CROSS_REFERENCE qualifier. A full image map file contains the following sections: o Object module synopsis o Module relocatable reference synopsis o Program section synopsis o Symbol definitions o Image section synopsis o Symbols by value o Module relocatable reference synopsis In contrast, the default image map file does not contain the image section synopsis, the symbols by value, or the module relocatable reference synopsis sections. Further, unlike the default image map, the full image map includes information about modules included from the system default libraries SYS$SHARE:STARLET.OLB and SYS$SHARE:IMAGELIB.OLB. Therefore, the object module synopsis, program section synopsis, and symbols by name sections of a default image map do not contain information about modules included from these default libraries, whereas in a full image map they do. /KEEP /KEEP (D) /NOKEEP Controls whether the batch log file generated is deleted after it is printed when the ACS LINK command is executed in batch mode (LINK/SUBMIT). By default, the log file is not deleted. /LOG /LOG /NOLOG (D) Controls whether a list of all the units included in the executable image is displayed. The display shows the units according to the order of elaboration for the program. By default, a list of all the units included in the executable image is not displayed. /MAIN /MAIN (D) /NOMAIN Controls where the image transfer address is to be found. The /MAIN qualifier indicates that the Compaq Ada unit specified determines the image transfer address and, hence, is to be a main program. The /NOMAIN qualifier indicates that the image transfer address will come from one of the files specified, and not from one of the Compaq Ada units specified. By default (/MAIN), only one Compaq Ada unit may be specified, and that unit must be a Compaq Ada main program. /MAP /MAP[=file-spec] /NOMAP (D) Controls whether the linker creates an image map file and optionally provides a file specification for the file. The default directory for the image map file is the current directory. The default file name comprises up to the first 39 characters of the first unit name specified. The default file type is .MAP. No wildcard characters are allowed in the file specification. By default, no image map file is created. /NAME /NAME=job-name Specifies a string to be used as the job name and as the file name for the batch log file when the ACS LINK command is executed in batch mode (LINK/SUBMIT). The job name can have from 1 to 39 characters. By default, if you do not specify the /NAME qualifier, the program library manager creates a job name comprising up to the first 39 characters of the first unit name specified. If you specify LINK/NOMAIN but do not specify the /NAME qualifier, and you use a wildcard character in the first unit name specified, the compiler uses the default name ACS_LINK. In these cases, the job name is also the file name of the batch log file. /NOTIFY /NOTIFY (D) /NONOTIFY Controls whether a message is broadcast when the ACS LINK command is executed in batch mode (LINK/SUBMIT). The message is broadcast to any terminal at which you are logged in, notifying you that your job has been completed or terminated. By default, a message is broadcast. /OBJECT /OBJECT=file-spec Provides a file specification for the object file generated by the ACS LINK command. The file is retained by the program library manager only when the /COMMAND qualifier is used-that is, when the result of the ACS LINK operation is to produce a linker command file for future use, rather than to invoke the linker immediately. The generated object file contains the code that directs the elaboration of library packages in the closure of the units specified. Unless you also specify the /NOMAIN qualifier, the object file also contains the image transfer address. The default directory for the generated object file is the current default directory. The default file type is .OBJ. No wildcard characters are allowed in the file specification. By default, if you do not specify the /OBJECT qualifier, the program library manager provides a file name comprising up to the first 39 characters of the first unit name specified. By default, if you do not specify the /COMMAND qualifier, the program library manager deletes the generated object file when the ACS LINK command completes normally or is terminated. /OUTPUT /OUTPUT=file-spec Requests that any ACS output generated before the linker is invoked be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the ACS LINK command output is written to SYS$OUTPUT. /PRINTER /PRINTER[=queue-name] /NOPRINTER (D) Controls whether the log file is queued for printing when the ACS LINK command is executed in batch mode (LINK/SUBMIT) and the batch job is completed. The /PRINTER qualifier allows you to specify a particular print queue. The default print queue for the log file is SYS$PRINT. By default, the log file is not queued for printing. If you specify /NOPRINTER, /KEEP is assumed. /QUEUE /QUEUE=queue-name Specifies the batch job queue in which the job is entered when the ACS LINK command is executed in batch mode (LINK/SUBMIT). By default, if the /QUEUE qualifier is not specified, the job is placed in the default system batch job queue, SYS$BATCH. /SUBMIT /SUBMIT Directs the program library manager to submit the command file generated for the linker to a batch queue. You can continue to enter commands in your current process without waiting for the batch job to complete. The linker output is written to a batch log file. By default, the generated command file is executed in a subprocess (LINK/WAIT). /SYSLIB /SYSLIB (D) /NOSYSLIB Controls whether the linker automatically searches the default system library for unresolved references. The default system library consists of the shareable image library SYS$LIBRARY:IMAGELIB.OLB and the object module library SYS$LIBRARY:STARLET.OLB. By default, the default system library is automatically searched. /SYSSHR /SYSSHR (D) /NOSYSSHR Controls whether the linker automatically searches the default system shareable image library SYS$LIBRARY:IMAGELIB.OLB for unresolved references. If you specify the /NOSYSSHR qualifier, only SYS$LIBRARY:STARLET.OLB is searched for unresolved references. By default, the default system shareable image library is searched. /SYSTEM_NAME /SYSTEM_NAME=system Directs the program library manager to produce an image for execution on a particular operating system. On VAX systems, the possible system values are VAX_VMS and VAXELN. If VAX_VMS is specified, OpenVMS versions of the Ada run- time library routines are used, and VMS-specific initialization code is generated. If VAXELN is specified, VAXELN versions of the Ada run-time library routines are used, and VAXELN-specific initialization code is generated. For more information on VAXELN Ada, see the VAXELN Ada Programming Guide. On Alpha systems, the value of NAME is OpenVMS_AXP. If the /SYSTEM_NAME qualifier is not specified in the ACS LINK command, the setting of the pragma SYSTEM_NAME for the current program library determines the target operating system environment. /THREADS_ENABLE /THREADS_ENABLE[=(MULTIPLE_KERNEL_THREADS,UPCALLS)] /NOTHREADS_ENABLE (default) Kernel threads allow a multithreaded application to have a thread executing on every CPU in a multiprocessor system. The /THREADS_ENABLE qualifier allows you to turn kernel threads on and off on a per-image basis. When you specify this qualifier, the OpenVMS linker sets the appropriate bits in the image header of the image being linked. These bits control the following: o Whether the image is allowed to enter a multiple kernel threads environment o Whether the image can receive upcalls from the OpenVMS scheduler On Alpha systems, the MULTIPLE_KERNEL_THREADS keyword sets the MULTIPLE_KERNEL_THREADS bit in the image header of the image being built. This bit indicates to the image activator that the image can be run in a multiple kernel threads environment. If you specify this keyword for OpenVMS VAX links, it is ignored. The UPCALLS keyword sets the UPCALLS bit in the OpenVMS image header of the image being built. This bit indicates to the image activator that the process can receive upcalls from the OpenVMS scheduler. For more information, consult the OpenVMS Linker documentation. /TRACEBACK /TRACEBACK (D) /NOTRACEBACK Controls whether the linker includes traceback information in the executable image file for run-time error reporting. By default, traceback information is included in the executable image. /USERLIBRARY /USERLIBRARY[=(table[,...])] /NOUSERLIBRARY Controls whether the linker searches any user-defined default libraries after it has searched any specified user libraries. When you specify the /USERLIBRARY qualifier, the linker searches the process, group, and system logical name tables to find the file specifications of the user-defined libraries. (The discussion of the linker in the OpenVMS Linker Utility Manual explains user-defined default libraries.) You can specify the following tables for the linker to search: ALL The linker searches the process, group, and system logical name tables for user-defined library definitions. GROUP The linker searches the group logical name table for user-defined library definitions. NONE The linker does not search any logical name table; this specification is equivalent to /NOUSERLIBRARY. PROCESS The linker searches the process logical name table for user-defined library definitions. SYSTEM The linker searches the system logical name table for user-defined library definitions. By default, the linker assumes /USERLIBRARY=ALL. /WAIT /WAIT Directs the program library manager to execute the command file generated for the linker in a subprocess. Execution of your current process is suspended until the subprocess completes. The linker output is written directly to your terminal. Note that process logical names are propagated to the subprocess generated to execute the command file. By default, the program library manager executes the command file generated for the linker in a subprocess: you must wait for the subprocess to terminate before you can enter another command. 3 Parameter_Qualifiers /INCLUDE /INCLUDE=(object-file,...) Indicates that the associated input file is a OpenVMS object module library or shareable image library with a default file type of .OLB, and that the named elements from that library should be linked with the main program named in the ACS LINK command. /LIBRARY /LIBRARY Indicates that the associated input file is a OpenVMS object module library or shareable image library to be searched for modules to resolve any undefined symbols in the input files. The default file type is .OLB. By default, if you do not specify the /LIBRARY qualifier, the file is assumed to be an object file with a default file type of .OBJ. /OPTIONS /OPTIONS Indicates that the associated input file is a OpenVMS linker options file. The default file type is .OPT. By default, if you do not specify the /OPTIONS qualifier, the file is assumed to be an object file with a default file type of .OBJ. /SELECTIVE_SEARCH /SELECTIVE_SEARCH Omits from the output image symbol table all symbols from the associated input object module that are not needed to resolve outstanding references. The binary code in the object module is always included. /SHAREABLE /SHAREABLE Indicates that the associated input file is a OpenVMS shareable image. The default file type is .EXE. By default, if you do not specify the /SHAREABLE qualifier, the file is assumed to be an object file with a default file type of .OBJ. 3 Examples 1.ACS> LINK HOTEL Forms the closure of the unit HOTEL, which is a Compaq Ada main program, creates a linker command file and package elaboration file, then invokes the command file in a spawned subprocess. 2.ACS> LINK/SUBMIT HOTEL NETWORK.OLB/LIBRARY,NET.OPT/OPTIONS %I, Job HOTEL (queue ALL_BATCH, entry 134) started on FAST_BATCH Instructs the linker to link the closure of the Compaq Ada main program HOTEL against the user library NETWORK.OLB, and to use the linker options file NET.OPT. The /SUBMIT qualifier causes the program library manager to submit the linker command file as a batch job. 3.ACS> LINK/NOMAIN FLUID_VOLUME,COUNTER MONITOR.OBJ Links the Compaq Ada units FLUID_VOLUME and COUNTER with the foreign object file MONITOR.OBJ. The /NOMAIN qualifier tells the linker that the image transfer address is in the foreign file. 4.ACS> LINK HOTEL ELN$:RTL/INCLUDE=(KER$MSGDEF) Links the closure of the Compaq Ada main program HOTEL against the message object file KER$MSGDEF from the VAXELN message library ELN$:RTL.OLB. 2 LOAD Processes the Ada units contained in one or more source files. Processing involves determining the compilation order for the units in the files and invoking the Compaq Ada compiler to partially compile the units. The partial compilation detects syntax errors and updates the current program library with unit dependence and source-file information. Loaded units are considered to be obsolete and must be subsequently recompiled. Format LOAD file-spec[,...] 3 Parameters file-spec[,...] Specifies one or more Compaq Ada source files to be loaded. If you do not specify a file type, the compiler uses the default file type of .ADA. Wildcard characters are allowed in the file specifications. (See the OpenVMS User's Manual for more information on wildcard characters.) 3 Description The ACS LOAD command invokes the Compaq Ada compiler to partially compile the units contained in the specified files in any order. The partial compilation detects syntax errors and updates the current program library with unit dependence and source-file information. Units that are loaded into a program library are considered obsolete and must be subsequently recompiled. See Developing Ada Programs on OpenVMS Systems for more information on recompilation. The LOAD command is useful for putting the units in a set of files into a program library for the first time. The LOAD command does not check for missing or duplicate compilation units. (Units that have the same name are considered to be duplicates.) The LOAD command allows unit bodies to be loaded into the program library in the absence of their corresponding specifications. Similarly, subunits may be loaded into the library in the absence of their corresponding parent (or ancestor) units. Because specifications, bodies, and subunits can be loaded in any order, the program library can be incomplete after a LOAD command has been executed. For example, the program library could contain a package body without a specification or a subunit without its corresponding parent unit. For each set of files specified, the LOAD command goes through the following steps: 1. Resolves any wildcards in the list of source files specified. Within any one directory, the version of a particular file that has the highest number is considered for compilation. 2. Creates a DCL command file for the compiler. The file contains commands to compile the units in the source files. The command file is deleted after the LOAD command is terminated, unless you specified the /COMMAND qualifier. If you specified the /COMMAND qualifier, the command file is retained for future use, and the compiler is not invoked. 3. If you did not specify the /COMMAND qualifier, the Compaq Ada compiler is invoked for syntax-only compilation as follows: a. By default (LOAD/WAIT), the command file is executed in a subprocess. You must wait for the compilation to terminate before entering another command. Note that process logical names are propagated to the subprocess generated to execute the command file. b. If you specified the /SUBMIT qualifier, the compiler command file generated in step 2 is submitted as a batch job. c. For each unit being compiled, the compiler checks to see if the unit is of the same name and kind as an existing unit in the current program library. If a unit has the same name and kind as an existing unit, a check is performed to see if the two units are identical; that is, to see if their source files have the same creation date and full file specification. If the two units are identical, the library is not updated with the new unit. If the two units are not identical or if the new unit is unique, the compiler updates the program library with the new unit. 3 Command_Qualifiers /AFTER /AFTER Requests that the batch job be held until after a specific time when the LOAD command is executed in batch mode (the default mode). If the specified time has already passed, or if the /AFTER qualifier is not specified, the job is queued for immediate processing. You can specify either an absolute time or a combination of absolute and delta time. See the OpenVMS User's Manual (or type HELP Specify Date_Time at the DCL prompt) for complete information on specifying time values. /BATCH_LOG /BATCH_LOG=file-spec Provides a file specification for the batch log file when the LOAD command is executed in batch mode (the default mode). If you do not give a directory specification with the file-spec option, the batch log file is created by default in the current default directory. If you do not give a file specification with the file-spec option, the default file name is the job name specified with the /NAME=job-name qualifier. If no job name has been specified, the program library manager creates a file name comprising up to the first 39 characters of the first unit name specified. If no job name has been specified and there is a wildcard character in the first unit specified, the program library manager uses the default file name ACS_LOAD. The default file type is .LOG. No wildcard characters are allowed in the file specification. /COMMAND /COMMAND[=file-spec] Controls whether the LOAD operations are performed as a result of the LOAD command, and determines whether the command file generated to perform the LOAD operations is saved. If you specify the /COMMAND qualifier, the program library manager does not perform the LOAD operations, and the generated command file is saved for you to invoke or submit as a batch job. The file-spec option allows you to enter a file specification for the generated command file. The default directory for the command file is the current default directory. By default, the program library manager provides a file name comprising up to the first 39 characters of the first unit name specified. If you use a wildcard character in the first unit name specified, the compiler uses the default name ACS_LOAD. The default file type is .COM. No wildcard characters are allowed in the file specification. By default, if you do not specify the file-spec option, the program library manager deletes the generated command file when the LOAD command completes normally or is terminated. /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the LOAD command displays the name of each file before loading, and requests you to confirm whether or not the file should be processed. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. o QUIT or Ctrl/Z indicates that you want to stop processing the command at that point. o ALL indicates that you want to continue processing the command without any further prompts. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /KEEP /KEEP (D) /NOKEEP Controls whether the batch log file generated is deleted after it is printed when the LOAD command is executed in batch mode (the default mode). By default, the log file is not deleted. /LOG /LOG /NOLOG Controls whether a list of all the files that will be loaded is displayed. By default, a list of the files that will be loaded is not displayed. /NAME /NAME=job-name Specifies a string to be used as the job name and as the file name for the batch log file when the LOAD command is executed in batch mode (the default mode). The job name can have from 1 to 39 characters. By default, if you do not specify the /NAME qualifier, the program library manager creates a job name comprising up to the first 39 characters of the first file name specified. If you do not specify the /NAME qualifier, but use a wildcard character in the first file name specified, the compiler uses the default name ACS_LOAD. In these cases, the job name is also the file name of the batch log file. /NOTIFY /NOTIFY (D) /NONOTIFY Controls whether a message is broadcast when the NOTIFY command is executed in batch mode (the default mode). The message is broadcast to any terminal at which you are logged in, notifying you that your job has been completed or terminated. By default, a message is broadcast. /OUTPUT /OUTPUT=file-spec Requests that any program library manager output generated before the compiler is invoked be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the LOAD command output is written to SYS$OUTPUT. /PRINTER /PRINTER[=queue-name] /NOPRINTER (D) Controls whether the batch job log file is queued for printing when the LOAD command is executed in batch mode. The /PRINTER qualifier allows you to specify a particular print queue. The default print queue for the log file is SYS$PRINT. By default, the log file is not queued for printing. If you specify the /NOPRINTER qualifier, the /KEEP qualifier is assumed. /QUEUE /QUEUE=queue-name Specifies the batch job queue in which the job is entered when the LOAD command is executed in batch mode. By default, if the /QUEUE qualifier is not specified, the program library manager first checks whether the logical name ADA$BATCH is defined. If it is, the program library manager enters the job in the queue specified. Otherwise, the job is placed in the default system batch job queue, SYS$BATCH. /SMART_RECOMPILATION /SMART_RECOMPILATION (D) /[NO]SMART_RECOMPILATION Controls whether smart recompilation information is preserved during the load operation. This information can be used in subsequent operations to minimize recompilations. When the /SMART_RECOMPILATION qualifier is in effect, smart recompilation information from previous compilations is preserved in the program library for each unit compiled. If the /NOSMART_RECOMPILATION qualifier is specified, units are loaded without preserving smart recompilation information. /SUBMIT /SUBMIT Directs the program library manager to submit the command file generated for the compiler to a batch queue. You can continue to enter commands in your current process without waiting for the batch job to complete. The compiler output is written to a log file. By default, the program library manager executes the command file generated for the compiler in a subprocess (/WAIT). /WAIT /WAIT Directs the program library manager to execute the command file generated for the compiler in a subprocess. Execution of your current process is suspended until the subprocess completes. The compiler output is written directly to your terminal. Note that process logical names are propagated to the subprocess generated to execute the command file. By default, the program library manager executes the command file generated for the compiler in a subprocess (LOAD/WAIT). 3 Positional_Qualifiers /BACKUP /BACKUP Selects files according to the dates of their most recent backups. Modifies the time value specified with the /BEFORE or /SINCE qualifier. This qualifier is incompatible with the other qualifiers that also allow you to select files according to time attributes: /CREATED, /EXPIRED, and /MODIFIED. If you specify none of these four time qualifiers, the default is /CREATED. /BEFORE /BEFORE[=time] Selects only those files dated prior to the specified time. You can specify time as an absolute time, as a combination of absolute and delta times, or as one of the following keywords: TODAY (the default), TOMORROW, or YESTERDAY. See the OpenVMS User's Manual (or type HELP Specify Date_Time at the DCL prompt) for complete information on specifying time values. You can specify one of the following qualifiers with the /BEFORE qualifier to indicate the time attribute to be used as the basis for selection: /BACKUP, /CREATED (the default), /EXPIRED, or /MODIFIED. /BY_OWNER /BY_OWNER[=uic] Selects only those files whose owner user identification code (UIC) matches the specified owner UIC. The default UIC is that of the current process. /COPY_SOURCE /COPY_SOURCE (D) /NOCOPY_SOURCE Controls whether a copied source file is created in the current program library when a compilation unit is loaded without error. The ACS RECOMPILE command requires that a copied source file exist in the current program library; the ACS COMPILE command uses the copied source file if it cannot find an external source file when it is recompiling an obsolete unit or completing an incomplete generic instantiation (see Developing Ada Programs on OpenVMS Systems. Copied source files may also be used by the OpenVMS Debugger (see the Developing Ada Programs on OpenVMS Systems for information on debugging tasks; see the OpenVMS Debugger Manual for information on OpenVMS debugger). By default, a copied source file is created in the current program library when a unit is loaded without error. /CREATED /CREATED Selects files based on their dates of creation. Modifies the time value specified with the /BEFORE or /SINCE qualifier. This qualifier is incompatible with the other qualifiers that also allow you to select files according to time attributes: /BACKUP, /EXPIRED, and /MODIFIED. If you specify none of these four time qualifiers, the default is /CREATED. /DESIGN /DESIGN[=option] /DESIGN[=option] /NODESIGN (D) Allows you to process Ada source files as a detailed program design. You can request the following options: [NO]COMMENTS Determines whether comments are processed for program design information. This option can be specified with the ACS LOAD command, however, it does not have an effect. [NO]PLACEHOLDERS Determines whether LSE placeholders are allowed. If you specify NOPLACEHOLDERS, then only valid Ada syntax is allowed. If you specify the /DESIGN qualifier without supplying any options, the effect is the same as the following default: /DESIGN=(COMMENTS,PLACEHOLDERS) If you specify only one of the options with the /DESIGN qualifier, the default value for the other option is used. For example, /DESIGN=NOCOMMENTS is equivalent to /DESIGN=(NOCOMMENTS,PLACEHOLDERS). In this case, both qualifiers specify that placeholders are allowed. Similarly, /DESIGN=NOPLACEHOLDERS is equivalent to /DESIGN=(COMMENTS, NOPLACEHOLDERS). In this case, both qualifiers have no effect. /DIAGNOSTICS /DIAGNOSTICS[=file-spec] /NODIAGNOSTICS (D) Controls whether a diagnostics file containing compiler messages and diagnostic information is created. The diagnostics file is supported only for use with Digital layered products, such as the DEC Language-Sensitive Editor. One diagnostics file is created for each source file that is compiled. The default directory for diagnostics files is the current default directory. The default file name is the name of the source file being compiled. The default file type of a diagnostics file is .DIA. No wildcard characters are allowed in the file specification. By default, no diagnostics file is created. /ERROR_LIMIT /ERROR_LIMIT[=n] /NOERROR_LIMIT Controls whether execution of the LOAD command for a given compilation unit is terminated upon the occurrence of the nth E-level error within that unit. Error counts are not accumulated across a sequence of compilation units. If the /ERROR_LIMIT=n option is specified, each compilation unit may have up to n - 1 errors without terminating the compilation. When the error limit is reached within a compilation unit, compilation of that unit is terminated, but compilation of subsequent units continues. The /ERROR_LIMIT=0 option is equivalent to ERROR_LIMIT=1. By default, execution of the COMPILE command is terminated for a given compilation unit upon the occurrence of the 30th E-level error within that unit (equivalent to /ERROR_LIMIT=30). /EXCLUDE /EXCLUDE=(file-spec[,...]) Excludes the specified files from the LOAD operation. You can include a directory but not a device in the file specification. Wildcard characters are allowed in the file specification. However, you cannot use relative version numbers to exclude a specific version. If you provide only one file specification, you can omit the parentheses. /EXPIRED /EXPIRED Selects files according to their expiration dates. (The expiration date is set with the DCL SET FILE/EXPIRATION_DATE command.) Modifies the time value specified with the /BEFORE or /SINCE qualifier. This qualifier is incompatible with the other qualifiers that also allow you to select files according to time attributes: /BACKUP, /CREATED, and /MODIFIED. If you specify none of these four time qualifiers, the default is /CREATED. /LIST /LIST[=file-spec] /NOLIST (D) Controls whether a listing file is created. One listing file is created for each compilation unit (not file) compiled by the LOAD command. The default directory for listing files is the current default directory. The default file name of a listing file corresponds to the name of its compilation unit and uses the Compaq Ada file- name conventions described in Developing Ada Programs on OpenVMS Systems. The default file type of a listing file is .LIS. No wildcard characters are allowed in the file specification. By default, the LOAD command does not create a listing file. /MODIFIED /MODIFIED Selects files according to the dates on which they were last modified. Modifies the time value specified with the /BEFORE or /SINCE qualifier. This qualifier is incompatible with the other qualifiers that also allow you to select files according to time attributes: /BACKUP, /CREATED, and /EXPIRED. If you specify none of these four time qualifiers, the default is /CREATED. /NOTE_SOURCE /NOTE_SOURCE (D) /NONOTE_SOURCE Controls whether the file specification of the source file is noted in the program library when a unit is loaded without error. The COMPILE command uses this information to locate revised source files. By default, the file specification of the source file is noted in the current program library when a unit is compiled without error. /REPLACE /REPLACE (D) /NOREPLACE Controls whether the loaded unit replaces a unit with the same name that is already defined in the current program library. If the /NOREPLACE qualifier is specified, and a unit already exists in the program library with the same name as a unit being loaded, a diagnostic message is issued, and the existing unit is not replaced. By default, the loaded unit replaces a unit with the same name that is already defined in the current program library. /SINCE /SINCE Selects only those files dated after the specified time. You can specify time as an absolute time, a combination of absolute and delta times, or as one of the following keywords: TODAY (the default), TOMORROW, or YESTERDAY. See the OpenVMS User's Manual (or type HELP Specify Date_Time at the DCL prompt) for complete information on specifying time values. You can specify one of the following qualifiers with the /SINCE qualifier to indicate the time attribute to be used as the basis for selection: /BACKUP, /CREATED (the default), /EXPIRED, or /MODIFIED. /WARNINGS /WARNINGS[=(option[,...])] /NOWARNINGS Controls which categories of informational (I-level) and warning (W-level) messages are displayed and where those messages are displayed. You can specify any combination of the following message options: WARNINGS: (destination[,...]) NOWARNINGS WEAK_WARNINGS: (destination[,...]) NOWEAK_WARNINGS SUPPLEMENTAL: (destination[,...]) NOSUPPLEMENTAL COMPILATION_NOTES: (destination[,...]) NOCOMPILATION_NOTES STATUS: (destination[,...]) NOSTATUS The possible values of destination are ALL, NONE, or any combination of TERMINAL (terminal device), LISTING (listing file), and DIAGNOSTICS (diagnostics file). The message categories are summarized as follows (see Developing Ada Programs on OpenVMS Systems for more information): WARNINGS W-level: Indicates a definite problem in a legal program-for example, an unknown pragma. WEAK_WARNINGS I-level: Indicates a potential problem in a legal program-for example, a possible CONSTRAINT_ERROR at run time. These are the only kind of I-level messages that are counted in the summary statistics at the end of a compilation. SUPPLEMENTAL I-level: Additional information associated with previous E-level or W-level diagnostics. COMPILATION_ I-level: Information about how the compiler NOTES translated a program, such as record layout, parameter-passing mechanisms, or decisions made for the pragmas INLINE, INTERFACE, or the import-subprogram pragmas. STATUS I-level: End of compilation statistics and other messages. The defaults are as follows: /WARNINGS=(WARN:ALL,WEAK:ALL,SUPP:ALL,COMP:NONE,STAT:LIST) If you specify only some of the message categories with the /WARNINGS qualifier, the default values for the other categories are used. 3 Example $ ACS LOAD/NOCOPY_SOURCE [JONES.NEW_UNITS]* . . . $ ACS COMPILE/NOCOPY_SOURCE MAIN . . . $ ACS LINK MAIN This series of commands builds the program MAIN from a set of files that have never been previously compiled. The LOAD command puts syntax-checked, obsolete units into the current program library. The COMPILE command recompiles the units from their original source files. The LINK command creates an executable image for the program MAIN. Note the use of /NOCOPY_SOURCE qualifiers to control the creation of copied source files. 2 MERGE Moves one or more units from the current program sublibrary to its immediate parent program library. Format MERGE unit-name[,...] 3 Parameters unit-name[,...] Specifies one or more units, in the current program library, that are to be merged into the next library in the current path. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) 3 Description The ACS MERGE command moves each specified unit's specification and body (if any) from the current sublibrary to the parent library. If a subunit name is specified, the MERGE command moves the subunit into the parent library. For each unit merged, the MERGE command moves its associated files into the parent library and updates that library's index file. If the parent library already has a version of the unit to be merged, the unit to be merged must have a more recent external source file. If you specified the ACS SET LIBRARY/PATH command to set the current path, the ACS MERGE command moves one or more units from the current program library to the next library in the current path. In the case of sublibraries, the next library in the current path is the parent library unless you explicitly set the path otherwise. For more information on library search paths, enter HELP ACS Library_Search_Paths. 3 Command_Qualifiers /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the MERGE command displays the name of each unit before merging and requests you to confirm whether or not the unit should be merged. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. o QUIT or Ctrl/Z indicates that you want to stop processing the command at that point. o ALL indicates that you want to continue processing the command without any further prompts. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /ENTERED /ENTERED[=library] (D) /NOENTERED Controls whether entered units are merged. You can use the library option to merge units that were entered from a particular library. When you specify the /NOENTERED qualifier, only the units that have been compiled or copied into the current program library are merged. Note that when you specify the /ENTERED qualifier, local units are merged unless the /NOLOCAL qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units, including entered units, are merged. /KEEP /KEEP /NOKEEP (D) Controls whether a copy of a unit being merged is retained in the current program sublibrary after the merge operation. By default, the unit is deleted from the current program library after the merge operation. /LOCAL /LOCAL (D) /NOLOCAL Controls whether local units (those units that were added to the library by a compilation or a COPY UNIT command) are merged. Note that when you specify the /LOCAL qualifier, entered units are merged unless the /NOENTERED qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units specified, including local units, are merged. /LOG /LOG /NOLOG (D) Controls whether the name of each unit is displayed after it has been merged. By default, the names of merged units are not displayed. 3 Positional_Qualifiers /BODY_ONLY /BODY_ONLY Merges only the body of the specified unit. When you append the /BODY_ONLY qualifier to the MERGE command string, any /SPECIFICATION_ONLY qualifiers that are appended to parameters in the command line override the /BODY_ONLY qualifier for those particular parameters. You cannot append both the /BODY_ONLY qualifier and the /SPECIFICATION_ONLY qualifier to the MERGE command string or to the same unit name parameter. By default, if the /BODY_ONLY qualifier is omitted, the specification, as well as the body, is merged. /SPECIFICATION_ONLY /SPECIFICATION_ONLY Merges only the specification of the specified unit. When you append the /SPECIFICATION_ONLY qualifier to the MERGE command string, any /BODY_ONLY qualifiers that are appended to parameters in the command line override the /SPECIFICATION_ONLY qualifier for those particular parameters. You cannot append both the /SPECIFICATION_ONLY qualifier and the /BODY_ONLY qualifier to the MERGE command string or to the same unit name parameter. By default, if the /SPECIFICATION_ONLY qualifier is omitted, the body, as well as the specification, is merged. 3 Example ACS> SET LIBRARY [JONES.HOTEL.SUBLIB] %I, Current program library is USER:[JONES.HOTEL.SUBLIB]) ACS> SHOW LIBRARY/FULL Program library USER:[JONES.HOTEL.SUBLIB] Sublibrary of USER:[HOTEL.ADALIB] . . . ACS> MERGE RESERVATIONS.CANCEL Establishes the sublibrary [JONES.HOTEL.SUBLIB] as the current program sublibrary. The SHOW LIBRARY/FULL command identifies the parent library [HOTEL.ADALIB]. The MERGE command copies the subunit RESERVATIONS.CANCEL from the current program sublibrary into the parent library, replacing any previous version of RESERVATIONS.CANCEL in the parent library, then deletes the original unit from the current program sublibrary. If the copy of the unit in the parent library is newer than the unit in the sublibrary, the unit is not merged. 2 MODIFY 3 LIBRARY Modifies the default path of a Compaq Ada program library or program sublibrary. Format MODIFY LIBRARY/PATH lib-term[,...] 4 Parameters lib-term[,...] Specifies the new default library search path for the specified library. For more information on library search paths, enter HELP ACS Library_Search_Paths. You can specify lib-term as follows: o The directory specification of a Compaq Ada library. For example: [JONES.HOTEL.ADALIB]. o The default path of a Compaq Ada library. To specify the default path, you enter the name of a Compaq Ada library preceded by an at sign(@). For example: @[JONES.HOTEL.ADALIB]. o A file specification preceded by an at sign (@). For example: @[JONES.HOTEL]MYPATH.TXT. Note the that file, MYPATH.TXT, must contain valid library terms. If you do not specify a full file specification, the default file name is PATH and the default file extension is .TXT. You must use commas to separate more than one lib-term in a library search path. 4 Description The ACS MODIFY LIBRARY/PATH command redefines the default library search path for a given library. If you do not specify a library (you omit the /LIBRARY=directory-spec qualifier), the default path for the current program library is redefined. The ACS MODIFY LIBRARY/PATH command stores the specified library search path in the given library in its original form. In other words, the search path is stored exactly as you specified it on the command line or with the editor. The command also evaluates and verifies the new library search path, and reports any errors. If you enter the ACS MODIFY LIBRARY/PATH command interactively (that is, at the ACS> prompt), the current path is not reevaluated. Therefore, if you modified the default path for the current library, this modification will not take effect until you reinvoke ACS. For more information on library search paths, enter HELP ACS Library_Search_Paths. 4 Command_Qualifiers /EDIT /EDIT[=edit_cmd] /NOEDIT Invokes an editor which allows you to edit the default path associated with the current program library. The current definition of the default path for the given library is placed in a text file, and the editor specified by edit-cmd is invoked. If you do not specify an editor with the /EDIT qualifier, callable EDT is invoked. When you exit from the editor, the default path for the library is redefined to be the library search path contained in the edited file. /LIBRARY Specifies a library whose default library search path is to be modified. By default, the default path of the current program library is modified. /PATH /PATH /NOPATH (D) Specifies that the default library search path for the given library is to be modified. /VERIFY /VERIFY /NOVERIFY Controls whether the program library manager suppresses the evaluation and verification of the new default path. By default, the new default path is evaluated and verified. 4 Example ACS> MODIFY LIBRARY/PATH/LIBRARY=[MY_LIB] [MY_LIB],[LIB1],[LIB2] Redefines the default path of the library [MY_LIB] to be as follows: [MY_LIB] [LIB1] [LIB2] Note that if you enter the ACS MODIFY LIBRARY command interactively, the current path is not reevaluated. Therefore, if you modified the default path for the current library, this modification will not take effect until you reinvoke ACS. 2 RECOMPILE Enters an ACS CHECK command for the specified units, then recompiles (makes current) any obsolete unit that is part of the closure of the set of units specified. Obsolete entered units must be made current before you can use the ACS RECOMPILE command (see the Description section). NOTE To be recompiled, units must have previously been compiled with the /COPY_SOURCE qualifier (this is the default value of this qualifier). Format RECOMPILE [unit-name[,...]] 3 Parameters [unit-name[,...]] Specifies one or more units in the current program library whose closure is to be processed by the ACS RECOMPILE command. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for detailed information on wildcard characters.) If you do not specify any units with the ACS RECOMPILE command, the command uses whatever units were involved with the most recent ACS CHECK command. 3 Description The ACS RECOMPILE command is designed to be used when a unit or a set of units must be compiled again, but the original source code has not changed. Therefore, the RECOMPILE command is useful for performing the following operations: o To make an obsolete unit or set of units current (see Developing Ada Programs on OpenVMS Systems for definitions of obsolescence and currency). o To complete incomplete generic instantiations, once the missing or changed generic body has been compiled into the current program library. o To recompile units after the value of a global program library characteristic such as LONG_FLOAT or SYSTEM_NAME has been changed (for example, after you have used the ACS SET PRAGMA command). o To obtain new versions of some units, compiled with a particular combination of compilation qualifiers (for example, /OPTIMIZE=SPACE, /CHECK, and so on). In this case, the units are not obsolete, but the RECOMPILE command, in combination with the /OBSOLETE qualifier, can be used to force the recompilation of the entire execution closure of a set of units. The RECOMPILE command goes through the following steps: 1. Forms the execution closure of the specified units. 2. Determines whether each unit in the closure is in the program library and is current. Units entered from other program libraries as well as those compiled or copied into the current program library are checked. 3. If all units in the closure are in the program library and are current, issues an informational message and terminates the operation. 4. Identifies any unit in the closure that is missing from the current program library. 5. Identifies any unit in the closure that is obsolete and must be recompiled. 6. If any units in the closure are obsolete, creates a DCL command file for the compiler. The file contains commands to compile the copied source file of each obsolete unit in the proper order. Entered units are not considered for recompilation. The command file is deleted after the RECOMPILE command is completed or terminated, unless the /COMMAND qualifier is specified. If the /COMMAND qualifier is specified, the command file is retained for future use, and the compiler is not invoked. 7. Unless the /COMMAND qualifier is specified, invokes the DEC Ada compiler as follows: a. By default (RECOMPILE/WAIT), the command file is executed in a subprocess. You must wait for the compilation to terminate before entering another command. When the /WAIT qualifier is in effect, process logical names are propagated to the subprocess generated to execute the command file. b. If you specify the /SUBMIT qualifier, the compiler command file generated in step 2 is submitted as a batch job. Note the use of copied source files in the recompilation. Files external to the current program library are ignored. If a copied source file needed for the recompilation is missing (because the /NOCOPY_SOURCE qualifier was specified in a previous compilation), the program library manager identifies the missing file, and the recompilation is not attempted. Therefore, if you intend to use the RECOMPILE command, you should not compile units with the /NOCOPY_SOURCE qualifier. If the closure you are recompiling includes an obsolete entered unit, that unit is not affected by the RECOMPILE command; an error diagnostic is issued and the RECOMPILE command is not executed. You should recompile an obsolete entered unit in its own program library and then reenter it into the current program library before you try to recompile its dependent units in the current library. Program library manager output originating before the compiler is invoked is reported to your terminal by default, or to a file specified with the /OUTPUT qualifier. Compiler diagnostics are to your terminal, by default, or to a log file if the command file is executed in batch mode (by way of the RECOMPILE/SUBMIT command). See Developing Ada Programs on OpenVMS Systems for more information on the RECOMPILE command. 3 Command_Qualifiers /AFTER /AFTER=time Requests that the batch job be held until after a specific time when the command file is executed in batch mode. If the specified time has already passed, or if the /AFTER qualifier is not specified, the job is queued for immediate processing. You can specify either an absolute time or a combination of absolute and delta time. See the OpenVMS User's Manual (or type HELP Specify Date_Time at the DCL prompt) for complete information on specifying time values. /ANALYSIS_DATA /ANALYSIS_DATA[=file-spec] /NOANALYSIS_DATA (D) Controls whether a data analysis file containing source code cross-reference and static analysis information is created. The data analysis file is supported only for use with Digital layered products, such as the DEC Source Code Analyzer. One data analysis file is created for each copied source file that is recompiled. The default directory for data analysis files is the current default directory. The default file name is the name of the source file being compiled. The default file type is .ANA. No wildcard characters are allowed in the file specification. By default, no data analysis file is created. /ARCHITECTURE Controls the use of new Alpha instructions. The syntax for this switch is as follows: /ARCHITECTURE = { GENERIC | HOST | EV4 | EV5 | EV56 } Setting the /ARCH switch causes a corresponding setting in the /TUNE switch. (See the Release Notes for more information.) /BATCH_LOG /BATCH_log=file-spec Provides a file specification for the batch log file when the command file is executed in batch mode. If you do not give a directory specification with the file-spec option, the batch log file is created by default in the current default directory. If you do not give a file specification with the file-spec option, the default file name is the job name specified with the /NAME=job-name qualifier. If no job name has been specified, the program library manager creates a file name comprising up to the first 39 characters of the first unit name specified. If no job name has been specified and there is a wildcard character in the first unit specified, the program library manager uses the default file name ACS_RECOMPILE. The default file type is .LOG. No wildcard characters are allowed in the file specification. /CHECK /CHECK /NOCHECK Controls whether all run-time checks are suppressed. The /NOCHECK qualifier is equivalent to having all possible SUPPRESS pragmas in the source code. Explicit use of the /CHECK qualifier overrides any occurrences of the pragmas SUPPRESS and SUPPRESS_ALL in the source code, without the need to edit the source code. By default, run-time checks are only suppressed in cases where a pragma SUPPRESS or SUPPRESS_ALL appears in the source code. See the DEC Ada Language Reference Manual for more information on the pragmas SUPPRESS and SUPPRESS_ALL. /CLOSURE /CLOSURE Causes the /SPECIFICATION_ONLY to apply to all units in the closure of units named in the RECOMPILE command. (Without the /CLOSURE qualifier, the /SPECIFICATION_ONLY qualifier applies only to the units named in the command.) See the description of the /SPECIFICATION_ONLY qualifier in the list of command qualifiers. /COMMAND /COMMAND[=file-spec] Controls whether the compiler is invoked as a result of the RECOMPILE command, and determines whether the command file generated to invoke the compiler is saved. If you specify the /COMMAND qualifier, the program library manager does not invoke the compiler, and the generated command file is saved for you to invoke or submit as a batch job. The file-spec option allows you to enter a file specification for the generated command file. The default directory for the command file is the current default directory. By default, the program library manager provides a file name comprising up to the first 39 characters of the first unit name specified. If you use a wildcard character in the first unit name specified, the compiler uses the default name ACS_RECOMPILE. The default file type is .COM. No wildcard characters are allowed in the file specification. By default, if you do not specify the /COMMAND qualifier, the program library manager deletes the generated command file when the RECOMPILE command completes normally or is terminated. /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the RECOMPILE command asks you for confirmation before performing a possibly lengthy operation. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /COPY_SOURCE /COPY_SOURCE (D) /NOCOPY_SOURCE Controls whether a copied source file is created in the current program library when a compilation unit is recompiled without error. The ACS RECOMPILE command requires that a copied source file exist in the current program library; the ACS COMPILE command uses the copied source file if it cannot find an external source file when it is recompiling an obsolete unit or completing an incomplete generic instantiation (see Developing Ada Programs on OpenVMS Systems. Copied source files may also be used by the OpenVMS Debugger (see the Developing Ada Programs on OpenVMS Systems for more information on debugging tasks; see OpenVMS Debugger Manual for more information on the OpenVMS debugger). The /[NO]COPY_SOURCE qualifier has an effect with the RECOMPILE command only for those obsolete units in a parent library that are being recompiled into the current sublibrary to make them current. In this case, by default, a copied source file is created in the current program library when a unit is recompiled without error. /DEBUG /DEBUG[=(option[,...])] (D) /NODEBUG Controls which debugger compiler options are provided. You can debug Compaq Ada programs with the OpenVMS Debugger (see the Developing Ada Programs on OpenVMS Systems for more information on debugging tasks; see the OpenVMS Debugger Manual for more information on the OpenVMS debugger). You can request the following options: ALL Provides both SYMBOLS and TRACEBACK NONE Provides neither SYMBOLS nor TRACEBACK [NO]SYMBOLS Controls whether debugger symbol records are included in the object file [NO]TRACEBACK Controls whether traceback information (a subset of the debugger symbol information) is included in the object file By default, both debugger symbol records and traceback information are included in the object files (/DEBUG=ALL, or equivalently: /DEBUG). /DESIGN /DESIGN[=option] /DESIGN[=option] /NODESIGN (D) Controls whether a design-level check is performed when identifying obsolete units. A unit is not considered obsolete just because it is design-checked only. Also directs the compiler to process Ada source files as a detailed program design. For each unit that is design checked without error, the program library is updated with information about that unit. Design-checked units are considered to be obsolete in operations that require full compilation and must be recompiled. You can request the following options: [NO]COMMENTS Determines whether comments are processed for program design information. For the COMMENTS option to have effect, you must specify the /ANALYSIS_DATA qualifier with the ADA command. See Guide to Source Code Analyzer for VMS Systems for more information on using the Source Code Analyzer (SCA). If you specify NOCOMMENTS, comments are ignored. [NO]PLACEHOLDERS Determines whether design checking is performed. If you specify PLACEHOLDERS, compilation units are design checked-LSE placeholders are allowed and some of the Ada language rules are relaxed so that you can omit some implementation details. If you specify NOPLACEHOLDERS, full compilation is done-the compiler is invoked, LSE placeholders are not allowed, and Ada language rules are not relaxed. Note that when you specify this option with the /SYNTAX_ONLY qualifier, it determines only whether LSE placeholders are allowed. If you specify NOPLACEHOLDERS, then only valid Ada syntax is allowed. If you specify the /DESIGN qualifier without supplying any options, the effect is the same as the following default: /DESIGN=(COMMENTS,PLACEHOLDERS) If you specify only one of the options with the /DESIGN qualifier, the default value for the other option is used. For example, /DESIGN=NOCOMMENTS is equivalent to /DESIGN=(NOCOMMENTS,PLACEHOLDERS). In this case, both qualifiers specify that the unit is design-checked, but comment information is not collected. Similarly, /DESIGN=NOPLACEHOLDERS is equivalent to /DESIGN=(COMMENTS,NOPLACEHOLDERS). In this case, both qualifiers specify that comment information is collected, but the unit is not design-checked (that is, in the absence of the /SYNTAX_ONLY qualifier, units are fully compiled). /DIAGNOSTICS /DIAGNOSTICS[=file-spec] /NODIAGNOSTICS (D) Controls whether a diagnostics file containing compiler messages and diagnostic information is created. The diagnostics file is supported only for use with Digital layered products, such as the DEC Language-Sensitive Editor. By default, a diagnostics file is created from the copied source file for each unit that is recompiled. /ERROR_LIMIT /ERROR_LIMIT[=n] /NOERROR_LIMIT Controls whether execution of the RECOMPILE command for a given compilation unit is terminated upon the occurrence of the nth E-level error within that unit. Error counts are not accumulated across a sequence of compilation units. If the /ERROR_LIMIT=n option is specified, each compilation unit may have up to n - 1 errors without terminating the compilation. When the error limit is reached within a compilation unit, compilation of that unit is terminated, but compilation of subsequent units continues. The /ERROR_LIMIT=0 option is equivalent to ERROR_LIMIT=1. By default, execution of the RECOMPILE command is terminated for a given compilation unit upon the occurrence of the 30th E- level error within that compilation unit (equivalent to /ERROR_ LIMIT=30). /EXPORT_INTERFACE /EXPORT_INTERFACE=ADA (D) /EXPORT_INTERFACE=FORTRAN /EXPORT_INTERFACE=DEFAULT This qualifier sets the passing mechanism chosen for string parameters for exported subprograms unless an export pragma specifically specifies the passing mechanism. The default is ADA, which uses dope vectors for the passing mechanism. FORTRAN or DEFAULT will use VAX descriptors for the passing mechanism. For more information, please see the Compaq Ada release notes. /KEEP /KEEP (D) /NOKEEP Controls whether the batch log file generated is deleted after it is printed when the command file is executed in batch mode. By default, the log file is not deleted. /LIST /LIST[=file-spec] /NOLIST (D) Controls whether a listing file is created. One listing file is created for each compilation unit (not file) recompiled by the RECOMPILE command. The default directory for listing files is the current default directory. The default file name of a listing file corresponds to the name of its compilation unit and uses the Compaq Ada file-name conventions described in Developing Ada Programs on OpenVMS Systems. The default file type of a listing file is .LIS. No wildcard characters are allowed in the file specification. By default, the RECOMPILE command does not create a listing file. /LOG /LOG /NOLOG (D) Controls whether a list of all the units that must be recompiled is displayed. By default, a list of the units that must be recompiled is not displayed. /MACHINE_CODE /MACHINE_CODE /NOMACHINE_CODE (D) Controls whether generated machine code (approximating assembler notation) is included in the listing file. By default, generated machine code is not included in the listing file. /NAME /NAME=job-name Specifies a string to be used as the job name and as the file name for the batch log file when the command file is executed in batch mode. The job name can have from 1 to 39 characters. By default, if you do not specify the /NAME qualifier, the program library manager creates a job name comprising up to the first 39 characters of the first unit name specified. If you do not specify the /NAME qualifier, but use a wildcard character in the first unit name specified, the compiler uses the default name ACS_RECOMPILE. In these cases, the job name is also the file name of the batch log file. /NOTE_SOURCE /NOTE_SOURCE (D) /NONOTE_SOURCE Controls whether the file specification of the source file is noted in the program library when a unit is recompiled without error. The COMPILE command uses this information to locate revised source files. The /[NO]NOTE_SOURCE qualifier has no effect with the RECOMPILE command. /NOTIFY /NOTIFY (D) /NONOTIFY Controls whether a message is broadcast when the RECOMPILE command is executed in batch mode. The message is broadcast to any terminal at which you are logged in, notifying you that your job has been completed or terminated. By default, a message is broadcast. /OBSOLETE /OBSOLETE=(option[,...]) /NOOBSOLETE (D) Affects the overall set of units that is identified as obsolete. When the execution closure of the units in the parameter list of the command is performed, the units named with the UNIT, SPECIFICATION, and BODY keywords are assumed to be obsolete as described below. If one of those units is not in the execution closure of the units named in the command's parameter list, it is not added to the closure. Unit names are specified with the UNIT, SPECIFICATION, and BODY keywords as follows: UNIT:(unit_ The specifications and bodies of units name[,...]) specified with the UNIT keyword are assumed to be obsolete. SPECIFICATION:(unit_ Only the specifications of units specified name[,...]) with the SPECIFICATION keyword are assumed to be obsolete. BODY:(unit_ Only the bodies of units specified with the name[,...]) BODY keyword are assumed to be obsolete. You must specify at least one of these keywords. Unit names can contain wildcard characters. When the /SMART_RECOMPILATION qualifier is in effect, dependent units of the specified unit may or may not be recompiled. To force recompilation of dependent units when smart recompilation is in effect, use the /OBSOLETE=UNIT:* qualifier. (See Developing Ada Programs on OpenVMS Systems for more information.) By default, units are identified as obsolete based on the current state of the program library. /OPTIMIZE /OPTIMIZE[=(option[,...])] /NOOPTIMIZE Controls the level of optimization that is applied in producing the compiled code. You can specify one of the following primary options: TIME Provides full optimization with time as the primary optimization criterion. Overrides any occurrences of the pragma OPTIMIZE(SPACE) in the source code. SPACE Provides full optimization with space as the primary optimization criterion. Overrides any occurrences of the pragma OPTIMIZE(TIME) in the source code. DEVELOPMENT Suggested when active development of a program is in progress. Provides some optimization, but development considerations and ease of debugging take preference over optimization. This option overrides pragmas that establish a dependence on a subprogram or generic body (the pragmas INLINE and INLINE_GENERIC), and therefore reduces the need for recompilations when such bodies are modified. This option also disables generic code sharing. NONE Provides no optimization. Suppresses inline expansions of subprograms and generics, including those specified by the pragmas INLINE and INLINE_ GENERIC. Suppresses occurrences of the pragma SHARE_GENERIC and disables generic code sharing. The /NOOPTIMIZE qualifier is equivalent to /OPTIMIZE=NONE. By default, the RECOMPILE command applies full optimization with time as the primary optimization criterion (like /OPTIMIZE=TIME, but observing uses of the pragma OPTIMIZE). The /OPTIMIZE qualifier also has a set of secondary options that you can use separately or together with the primary options to override the default behavior for inline expansion (generic and subprogram) and generic code sharing. The INLINE secondary option can have the following values (see the DEC Ada Run-Time Reference Manual for OpenVMS Systems for more information about inline expansion): NONE Disables subprogram and generic inline expansion. This option overrides any occurrences of the pragmas INLINE or INLINE_GENERIC in the source code, without your having to edit the source file. It also disables implicit inline expansion of subprograms. (Implicit inline expansion means that the compiler assumes a pragma INLINE for certain subprograms as an optimization.) A call to a subprogram or an instance of a generic in another unit is not expanded inline, regardless of the /OPTIMIZE options in effect when that unit was compiled. NORMAL Provides normal subprogram and generic inline expansion. Subprograms to which an explicit pragma INLINE applies are expanded inline under certain conditions. In addition, some subprograms are implicitly expanded inline. The compiler assumes a pragma INLINE for calls to some small local subprograms (subprograms that are declared in the same unit as the unit in which the call occurs). Instances are compiled separately from the unit in which the instantiation occurred unless a pragma INLINE_GENERIC applies to the instance. If a pragma INLINE_GENERIC applies and the generic body has been compiled, the generic is expanded inline at the point of instantiation. SUBPROGRAMS Provides maximal subprogram inline expansion and normal generic inline expansion. In addition to the normal subprogram inline expansion that occurs when INLINE:NORMAL is specified, this option results in implicit inline expansion of some small subprograms declared in other units. The compiler assumes a pragma INLINE for any subprogram if it improves execution speed and reduces code size. This option may establish a dependence on the body of another unit, as would be the case if a pragma INLINE were specified explicitly in the source code. With this option, generic inline expansion occurs in the same manner as for INLINE:NORMAL. GENERICS Provides normal subprogram inline expansion and maximal generic inline expansion. With this option, subprogram inline expansion occurs in the same manner as for INLINE:NORMAL. The compiler assumes a pragma INLINE_GENERIC for every instantiation in the unit being compiled unless an explicit pragma SHARE_GENERIC applies. This option may establish a dependence on the body of another unit, as would be the case if a pragma INLINE_GENERIC were specified explicitly in the source code. MAXIMAL Provides maximal subprogram and generic inline expansion. Maximal subprogram inline expansion occurs as for INLINE:SUBPROGRAMS, and maximal generic inline expansion occurs as for INLINE:GENERICS. The SHARE secondary option can have the following values: NONE Disables generic sharing. This option overrides the effect of any occurrences of the pragma SHARE_ GENERIC in the source code, without your having to edit the source file. In addition, instances do not share code from previous instantiations. NORMAL Provides normal generic sharing. Normally, the compiler will not attempt to generate shareable code for an instance (code that can be shared by subsequent instantiations) unless an explicit pragma SHARE_GENERIC applies to that instance. However, an instance will attempt to share code that resulted from a previous instantiation to which the pragma SHARE_GENERIC applied. MAXIMAL Provides maximal generic sharing. The compiler assumes that a pragma SHARE_GENERIC applies to every instance in the unit being compiled unless an explicit pragma INLINE_GENERIC applies. Therefore, an instance will attempt to share code that resulted from a previous instantiation or to generate code that can be shared by subsequent instantiations. SHARE:MAXIMAL cannot be used in combination with INLINE:GENERICS or INLINE:MAXIMAL. By default, if you specify one of the /OPTIMIZE qualifier primary options on the left (for example, /OPTIMIZE=TIME), it has the same effect as specifying the secondary-option values to the right (in this case, /OPTIMIZE=(TIME,INLINE:NORMAL,SHARE:NORMAL)): TIME /OPTIMIZE=(TIME,INLINE:NORMAL,SHARE:NORMAL) SPACE /OPTIMIZE=(SPACE,INLINE:NORMAL,SHARE:NORMAL) DEVELOPMENT /OPTIMIZE=(DEVELOPMENT,INLINE:NONE,SHARE:NONE) NONE /OPTIMIZE=(NONE,INLINE:NONE,SHARE:NONE) See Developing Ada Programs on OpenVMS Systems for more information about the /OPTIMIZE qualifier and its options. /OUTPUT /OUTPUT=file-spec Requests that any program library manager output generated before the compiler is invoked be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the RECOMPILE command output is written to SYS$OUTPUT. /PRINTER /PRINTER[=queue-name] /NOPRINTER (D) Controls whether the batch job log file is queued for printing when the command file is executed in batch mode. The /PRINTER qualifier allows you to specify a particular print queue. The default print queue for the log file is SYS$PRINT. By default, the log file is not queued for printing. If you specify the /NOPRINTER qualifier, the /KEEP qualifier is assumed. /QUEUE /QUEUE=queue-name Specifies the batch job queue in which the job is entered when the command file is executed in batch mode. By default, if the /QUEUE qualifier is not specified, the program library manager first checks whether the logical name ADA$BATCH is defined. If it is, the program library manager enters the job in the queue specified. Otherwise, the job is placed in the default system batch job queue, SYS$BATCH. /SHOW /SHOW[=option] (D) /NOSHOW Controls the listing file options included when a listing file is provided. You can specify one of the following options: ALL Provides all listing file options. [NO]PORTABILITYControls whether a program portability summary is included in the listing file (see Developing Ada Programs on OpenVMS Systems). NONE Provides none of the listing file options (same as /NOSHOW). By default, the RECOMPILE command provides a portability summary (/SHOW=PORTABILITY). /SMART_RECOMPILATION /SMART_RECOMPILATION (D) /NOSMART_RECOMPILATION Controls whether smart recompilation information is stored and used to identify obsolete units. When the /SMART_RECOMPILATION qualifier is in effect, detailed information about dependences is stored in the program library for each unit compiled. This information describes the dependences of a unit at a finer level than the compilation unit level. The ACS RECOMPILE command uses this information to detect when a unit in the closure is not affected by changes (if any) in its referenced units that are recompiled. The ACS RECOMPILE command does not recompile such dependent units and therefore minimizes unnecessary recompilations. If smart recompilation is not in effect, detailed information about dependences is not stored in the program library, and units are considered obsolete and recompiled based on their time of compilation. (See Developing Ada Programs on OpenVMS Systems for more information.) /SPECIFICATION_ONLY /SPECIFICATION_ONLY Causes only the specifications of the units specified to be considered for recompilation. You can use the /CLOSURE qualifier with the /SPECIFICATION_ONLY qualifier to force only the specifications in the execution closure of the specified units to be considered for recompilation. By default, if the /SPECIFICATION_ONLY qualifier is omitted, all of the specifications, bodies, and subunits in the execution closure of the units specified are considered for compilation. /STATISTICS /STATISTICS (D) /NOSTATISTICS Controls whether statistical information is displayed during recompilation. Statistical information includes the number of obsolete and possibly obsolete units, the total elasped time for the last compilation of the identified units, and the estimated elasped time savings due to smart recompilation. /SUBMIT /SUBMIT Directs the program library manager to submit the command file generated for the compiler to a batch queue. You can continue to enter commands in your current process without waiting for the batch job to complete. The compiler output is written to a log file. By default, the program library manager executes the command file for the compiler in a subprocess (by way of the RECOMPILE/WAIT command). /SYNTAX_ONLY /SYNTAX_ONLY /NOSYNTAX_ONLY (D) Controls whether a syntax-level check is performed when identifying obsolete units. A unit is not considered obsolete just because it is syntax-checked only. Because all units in a program library are at least syntax-checked, in effect, this qualifier generally identifies all units as current. The /SYNTAX_ONLY qualifier also directs the compiler to process source files for syntax only. Other compiler checks are not performed (for example, semantic analysis, type checking, and so on). By default, the RECOMPILE command performs full checking when identifying obsolete units (and the compiler fully compiles units). /TUNE Selects processor-specific instruction tuning for implementations of the Alpha architecture. Tuning for a specific implementation can provide improvements in runtime performance. The syntax for this switch is as follows: /TUNE = { GENERIC | HOST | EV4 | EV5 | EV56 } For more information, see the Release Notes. /WAIT /WAIT Directs the program library manager to execute the command file generated for the compiler in a subprocess. Execution of your current process is suspended until the subprocess completes. The compiler output is written directly to your terminal. Note that process logical names are propagated to the subprocess generated to execute the command file. By default, the program library manager executes the command file generated for the compiler to a subprocess: you must wait for the subprocess to terminate before you can enter another command. /WARNINGS /WARNINGS[=(option[,...])] /NOWARNINGS Controls which categories of informational (I-level) and warning (W-level) messages are displayed and where those messages are displayed. You can specify any combination of the following message options: WARNINGS: (destination[,...]) NOWARNINGS WEAK_WARNINGS: (destination[,...]) NOWEAK_WARNINGS SUPPLEMENTAL: (destination[,...]) NOSUPPLEMENTAL COMPILATION_NOTES: (destination[,...]) NOCOMPILATION_NOTES STATUS: (destination[,...]) NOSTATUS The possible values of destination are ALL, NONE, or any combination of TERMINAL (terminal device), LISTING (listing file), and DIAGNOSTICS (diagnostics file). The message categories are summarized as follows (see Developing Ada Programs on OpenVMS Systems for more information): WARNINGS W-level: Indicates a definite problem in a legal program-for example, an unknown pragma. WEAK_WARNINGS I-level: Indicates a potential problem in a legal program-for example, a possible CONSTRAINT_ERROR at run time. These are the only kind of I-level messages that are counted in the summary statistics at the end of a compilation. SUPPLEMENTAL I-level: Additional information associated with previous E-level or W-level diagnostics. COMPILATION_ I-level: Information about how the compiler NOTES translated a program, such as record layout, parameter-passing mechanisms, or decisions made for the pragmas INLINE, INTERFACE, or the import-subprogram pragmas. STATUS I-level: End of compilation statistics and other messages. The defaults are as follows: /WARNINGS=(WARN:ALL,WEAK:ALL,SUPP:ALL,COMP:NONE,STAT:LIST) If you specify only some of the message categories with the /WARNINGS qualifier, the default values for the other categories are used. 3 Examples 1.ACS> RECOMPILE/SUBMIT/LOG HOTEL %I, The following syntax-checked units are obsolete: RESERVATIONS package specification 4-NOV-1992 20:00:45.97 HOTEL procedure body 4-NOV-1992 20:05:16.26 2 obsolete units %I, Job HOTEL (queue ALL_BATCH, entry 448) started on FAST_BATCH Lists all of the units in the closure of unit HOTEL that need to be recompiled, then submits the compiler command file generated by the program library manager as a batch job. 2.ACS> RECOMPILE/CLOSURE/NOCHECK/COMMAND HOTEL Creates and retains the compiler command file generated by the program library manager. The command file has the file name and type HOTEL.COM, by default. 2 REENTER Enters current references to units that were entered into the current program library and subsequently compiled in their original libraries. Format REENTER unit-name[,...] 3 Parameters unit-name[,...] Specifies one or more units to be reentered into the current program library. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) 3 Description The ACS REENTER command, like the ACS ENTER UNIT command, operates on a specified unit's specification plus its body and subunits, if any. For each unit specified, the REENTER command looks up the unit in its original program library and enters the current definition of the unit into the current program library. By default, if a specified unit's definition is current, it is not reentered. 3 Command_Qualifiers /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the REENTER command displays the unit name of each unit before reentering and requests you to confirm whether or not the unit should be reentered. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. o QUIT or Ctrl/Z indicates that you want to stop processing the command at that point. o ALL indicates that you want to continue processing the command without any further prompts. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /ENTERED /ENTERED=library Controls whether entered units are selected for reentering. You can use the library option to reenter units that were entered from a particular library. When you specify the /NOENTERED qualifier, only units that have been compiled or copied into the current program library are reentered. Note that when you specify the /ENTERED qualifier, local units are selected unless the /NOLOCAL qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units specified are reentered from all of the libraries from which they were originally entered. /LOG /LOG /NOLOG (D) Controls whether the name of a unit is displayed after it has been reentered. By default, the names of reentered units are not displayed. 3 Positional_Qualifiers /BODY_ONLY /BODY_ONLY Reenters only the body of the specified unit. When you append the /BODY_ONLY qualifier to the REENTER command string, any /SPECIFICATION_ONLY qualifiers that are appended to parameters in the command line override the /BODY_ONLY qualifier for those particular parameters. You cannot append both the /BODY_ONLY qualifier and the /SPECIFICATION_ONLY qualifier to the REENTER command string or to the same unit name parameter. By default, if the /BODY_ONLY qualifier is omitted, the specification, as well as the body, is reentered. /DATE_CHECK /DATE_CHECK (D) /NODATE_CHECK Controls whether the REENTER command compares the compilation date-time in the current program library and original library as the criterion for reentering a unit. If you specify the /NODATE_ CHECK qualifier, the REENTER command will unconditionally reenter each unit specified in the command. By default, the REENTER command compares the compilation date- time and reenters only those references that were obsolete. /SPECIFICATION_ONLY /SPECIFICATION_ONLY Reenters only the specification of the specified unit. When you append the /SPECIFICATION_ONLY qualifier to the REENTER command string, any /BODY_ONLY qualifiers that are appended to parameters in the command line override the /SPECIFICATION_ONLY qualifier for those particular parameters. You cannot append both the /SPECIFICATION_ONLY qualifier and the /BODY_ONLY qualifier to the REENTER command string or to the same unit name parameter. By default, if the /SPECIFICATION_ONLY qualifier is omitted, the body, as well as the specification, is reentered. 3 Examples 1.ACS> REENTER/LOG * %I, QUEUE_MANAGER entered Reenters every unit in the current program library that needs to be reentered, in this case the unit QUEUE_MANAGER. 2.ACS> REENTER/NODATE_CHECK STACKS Unconditionally reenters the unit STACKS into the current program library, even if references to STACKS are current. 2 REORGANIZE Optimizes the organization of the current Compaq Ada program library (or the specified library). NOTE You can use this command only on a library to which you have exclusive access. Format REORGANIZE [directory-spec] 3 Parameters [directory-spec] Specifies the Compaq Ada program library to be reorganized. No wildcard characters are allowed in the directory specification. If you do not specify a program library, the ACS REORGANIZE command reorganizes the current program library. 3 Description The ACS REORGANIZE command optimizes the organization of the current program library or the specified library. You can use this command to improve the performance of any library; it is especially useful for improving the performance of libraries that have have been updated frequently. To use the REORGANIZE command, you must have exclusive read-write access to the program library you are reorganizing. If another user is accessing the library when you enter the REORGANIZE command, the command will fail. One way to obtain exclusive access is to use the ACS SET LIBRARY/EXCLUSIVE command (note that this command will also fail if you cannot gain exclusive access when you enter it). You must enter the SET LIBRARY/EXCLUSIVE command interactively for it to have an effect. Note that the SET LIBRARY/EXCLUSIVE command is not permitted for libraries across DECnet. 3 Command_Qualifiers /LOG /LOG (D) /NOLOG Controls whether a successful library reorganization is reported. By default, a successful library reorganization is reported. /OUTPUT /OUTPUT=file-spec Requests that the REORGANIZE command output be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the REORGANIZE command output is written to SYS$OUTPUT. 3 Example ACS> REORGANIZE %I, USER:[JONES.HOTEL.ADALIB] reorganized Reorganizes the current program library (the library defined by the last ACS SET LIBRARY command). To determine when a library was last reorganized, enter the ACS SHOW LIBRARY/FULL command for that library. 2 SET 3 LIBRARY Defines a Compaq Ada program library or program sublibrary as the current program library. Format SET LIBRARY directory-spec (Default) SET LIBRARY/PATH lib-term[,...] 4 Parameters directory-spec You use this command parameter when you do not also specify the /PATH qualifier. This parameter specifies the program library or program sublibrary that defines the current program library. The directory you specify must be a valid Compaq Ada program library or program sublibrary, previously created with the CREATE LIBRARY or CREATE SUBLIBRARY command, respectively. lib-term You use this command parameter when you specify the /PATH qualifier. This parameter specifies one or more valid library terms (lib- term) that are to be defined as the current path. You can specify lib-term as follows: o The directory specification of Compaq Ada library or sublibrary. o The default path of a Compaq Ada library. To specify the default path, you enter the name of a Compaq Ada library preceded by an at sign(@). o A file specification preceded by an at sign (@). For more information on library search paths, enter HELP ACS Library_Search_Paths. 4 Description The ACS SET LIBRARY command defines the current program library. Compaq Ada units are compiled in the context of the current program library. The current program library is the target library for compiler output and for ACS commands in general. The SET LIBRARY command performs the following steps: 1. Verifies that the specified directory is a valid Compaq Ada program library or sublibrary. If the directory is invalid, an error message is issued. 2. Assigns the directory specification to the process logical name ADA$LIB. The program library manager and the compiler use that logical name to maintain the current program library context when performing various operations. This assignment takes place even if the specified directory is invalid. If you specify an invalid library, the SET LIBRARY command sets the library to whatever you specified (to prevent you from incorrectly modifying the wrong library). You use the second form (ACS SET LIBRARY/PATH) to explicitly specify the current path. When you use this form, the first library in the specified path is defined as the current program library. For more information on libraries and library search paths, enter HELP ACS Libraries and HELP ACS Library_Search_ Paths. The SET LIBRARY command does not affect the definition of the current default directory. The DCL SET DEFAULT command does not affect the definition of the current program library. The /EXCLUSIVE and /READ_ONLY qualifiers are used for temporarily controlling access to program libraries in a shared library environment. When using the SET LIBRARY command with the /EXCLUSIVE or /READ_ONLY qualifier values, you need to enter the command interactively (not as a DCL one-line command). For example: ACS> SET LIBRARY/EXCLUSIVE [JONES.HOTEL.ADALIB] When you use the /EXCLUSIVE or /READ_ONLY qualifier, the qualifier remains in effect until you exit from the program library manager or until another SET LIBRARY command is executed. 4 Command_Qualifiers /EXCLUSIVE /EXCLUSIVE /NOEXCLUSIVE (D) Controls whether the specified program library is opened for exclusive or shared (/NOEXCLUSIVE) access when the SET LIBRARY command is executed. Exclusive access to a compilation library over DECnet is not permitted. If you execute a SET LIBRARY command without the /EXCLUSIVE qualifier or with the /NOEXCLUSIVE qualifier, then other processes are not denied access to the specified program library. If you try to execute a SET LIBRARY/EXCLUSIVE command while the specified program library is being accessed by another process, the command will fail. After executing a SET LIBRARY/EXCLUSIVE command, you have exclusive access to the specified program library until you exit from the program library manager or until another SET LIBRARY command is executed. Other processes are denied access to the program library until you exit from the program library manager or another SET LIBRARY command is executed. By default, the SET LIBRARY command provides for shared ( /NOEXCLUSIVE) access to the specified program library. /PATH /PATH /NOPATH (D) Allows you to define a current path that differs from the default path associated with the current program library. You use this qualifier to specify the second form of the ACS SET LIBRARY command. See the description section of this command for more information. /LOG /LOG (D) /NOLOG Controls whether the directory specification of the current program library being defined is displayed. By default, the directory specification is displayed. /READ_ONLY /READ_ONLY /NOREAD_ONLY (D) Controls whether the program library access is restricted to read-only access. When you execute the SET LIBRARY/READ_ONLY command, the program library is opened only for reading for the duration of the ACS session. Therefore, you can only perform operations that do not modify the library: for example, ACS CHECK, DIRECTORY, EXPORT, EXTRACT SOURCE, LINK, SHOW LIBRARY, or SHOW PROGRAM. You can also copy and enter units from (not to) the library. When you execute the SET LIBRARY/NOREAD_ONLY command, the program library is opened for reading, as well, but any subsequent command can try to open the library for a different kind of access. By default, the /NOREAD_ONLY qualifier is in effect. /VERIFY /VERIFY (D) /NOVERIFY Controls whether the current path is evaluated and verified when an ACS SET LIBRARY command is entered. By default, the current path is evaluated and verified each time you enter an ACS SET LIBRARY command. 4 Examples 1.ACS> SET LIBRARY [JONES.HOTEL.ADALIB] %I, Current program library is USER:[JONES.HOTEL.ADALIB] Defines the program library [JONES.HOTEL.ADALIB], on the default device, as the current program library. The library is opened for both read and write access. 2.ACS> SET LIBRARY/PATH [JONES.HOTEL.ADALIB],@[SMITH.ADALIB] Defines the program library [JONES.HOTEL.ADALIB] and establishes the current path. Suppose the default path of [SMITH.ADALIB] is as follows: [SMITH.ADALIB] [PROJECT.ADALIB] In this case, the current path evaluates to the following: [JONES.HOTEL.ADALIB] [SMITH.ADALIB] [PROJECT.ADALIB] 3.ACS> SET LIBRARY/READ_ONLY DISK:[SMITH.SHARE.ADALIB] %I, Current program library is DISK:[SMITH.SHARE.ADALIB] Defines the program library DISK:[SMITH.SHARE.ADALIB] as the current program library, with READ_ONLY access to the library. 3 PRAGMA Redefines specified values of the program library characteristics FLOAT_REPRESENTATION, LONG_FLOAT, MEMORY_SIZE, and SYSTEM_NAME. Note that use of this command may make units obsolete that depend on the previous value of a characteristic. Format SET PRAGMA 4 Description By default, a program library or sublibrary is created with the following system characteristics: o FLOAT_REPRESENTATION=VAX_FLOAT o LONG_FLOAT = G_FLOAT o MEMORY_SIZE = 2147483647 o SYSTEM_NAME = VAX_VMS or OpenVMS_AXP These may be changed by compiling a unit that contains the pragmas FLOAT_REPRESENTATION, LONG_FLOAT, MEMORY_SIZE, or SYSTEM_ NAME. The ACS SET PRAGMA command allows you to change the current program library's characteristics without having to compile a unit consisting of one of those pragmas. The SET PRAGMA command may make units that depend on these characteristics obsolete. You can use the ACS RECOMPILE command to make obsolete units current. 4 Command_Qualifiers /FLOAT_REPRESENTATION /FLOAT_REPRESENTATION=VAX_FLOAT (D) Redefines the value of the program library characteristic FLOAT_ REPRESENTATION. The possible values are either VAX_FLOAT or IEEE_ FLOAT (for Alpha systems only). By default, the current value of FLOAT_REPRESENTATION is unchanged. /LONG_FLOAT /LONG_FLOAT=option Redefines the value of the program library characteristic LONG_ FLOAT. The possible values are D_FLOAT and G_FLOAT. By default, the current value of LONG_FLOAT is unchanged. /MEMORY_SIZE /MEMORY_SIZE=n Redefines the value of the program library characteristic MEMORY_ SIZE to n. By default, the current value of MEMORY_SIZE is unchanged. /SYSTEM_NAME /SYSTEM_NAME=system Redefines the value of the program library characteristic SYSTEM_ NAME to a particular target operating system. The possible system values are VAX_VMS and VAXELN. By default, the current value of SYSTEM_NAME is unchanged. 4 Example ACS> SET PRAGMA/LONG_FLOAT=D_FLOAT Redefines the current program library characteristic LONG_FLOAT to the value D_FLOAT. 3 SOURCE Defines a source-file-directory search list for the ACS COMPILE command. Format SET SOURCE directory-spec[,...] 4 Parameters directory-spec[,...] Specifies one or more OpenVMS directories where the ACS COMPILE command should search for source files. 4 Description The ACS COMPILE command searches the directories in the order specified in the ACS SET SOURCE command. The search order takes precedence over the version number or revision date-time if different versions of a source file exist in two or more directories. Within any one directory, the version of a particular file that has the highest number is considered for compilation. The search list specified by SET SOURCE remains in effect until another SET SOURCE command is executed, or until the process logs out. If no SET SOURCE command is executed, the default search order is as follows: 1. SYS$DISK:[] (the current default directory) 2. ;0 (the directory that contained the file when it was last compiled), or node::;0 (if the file specification of the source file being compiled contains a node name) 4 Examples 1.ACS> SET SOURCE SYS$DISK:[],USER:[JONES.HOTEL],;0 Defines the source-file search list to be: first, the current default directory (SYS$DISK:[]); second, the directory USER:[JONES.HOTEL]; third, the directory where the particular source file was last compiled (;0). 2.ACS> SET SOURCE SYS$DISK:[],CMS$LIB Defines the source-file search list to be: first, the current default directory (SYS$DISK:[]); second the current CMS library, as defined by the most recent CMS SET LIBRARY command, which defines the logical name CMS$LIB. 2 SHOW 3 LIBRARY Displays information about one or more Compaq Ada program libraries, including directory specifications, library characteristics, and units defined in each library. Format SHOW LIBRARY [directory-spec[,...]] 4 Parameters [directory-spec[,...]] Specifies one or more Compaq Ada program libraries for display. No wildcard characters are allowed in the directory specifications. If you do not specify a program library, the SHOW LIBRARY command displays information about the current program library. 4 Description The ACS SHOW LIBRARY command displays various information about one or more specified program libraries, including the full directory specifications, library characteristics, and units defined in each program library. The output of the SHOW LIBRARY command depends on whether the /UNITS qualifier is used and, in addition, whether the /BRIEF or /FULL formatting qualifier is used. If you do not specify a qualifier, the SHOW LIBRARY command displays the directory specifications of the program libraries specified. 4 Command_Qualifiers /BODY_ONLY /BODY_ONLY Displays only the bodies of the specified units when you use the /UNITS qualifier. You cannot append both the /BODY_ONLY qualifier and the /SPECIFICATION_ONLY qualifier to the SHOW LIBRARY/UNITS command string. By default, if the /BODY_ONLY qualifier is omitted, the specifications, as well as the bodies, are displayed. /BRIEF /BRIEF Displays the program library directory specifications. If used with the /UNITS qualifier, also lists the names of all units contained in each program library. /ENTERED /ENTERED[=library] (D) /NOENTERED Controls whether entered units are displayed when you use the /UNITS qualifier. You can use the library option to display units that were entered from a particular library. When you specify the /NOENTERED qualifier, only units that have been compiled or copied into the current program library are displayed. Note that when you specify the /ENTERED qualifier, local units are displayed unless the /NOLOCAL qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units, as well as entered units are displayed when you use the /UNITS qualifier. /FULL /FULL Displays, for each program library specified, the directory specifications, unevaluated and evaluated forms of the current and default paths, and the values of the program library characteristics FLOAT_REPRESENTATION, LONG_FLOAT, MEMORY_SIZE, and SYSTEM_NAME. For more information on paths, enter HELP ACS Library_Search_Paths. If used with the /UNITS qualifier, also displays, for each program library specified, each unit's name, kind, compilation date-time, and the file specifications of the files associated with each unit. /LOCAL /LOCAL (D) /NOLOCAL Controls whether local units (those units that were added to the library by a compilation or a COPY UNIT command) are displayed when you use the /UNITS qualifier. Note that when you specify the /LOCAL qualifier, entered units are displayed unless the /NOENTERED qualifier is also in effect (the defaults for these qualifiers are /LOCAL and /ENTERED). By default, all units specified, including local units, are displayed. /OUTPUT /OUTPUT=file-spec Requests that the SHOW LIBRARY command output be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the SHOW LIBRARY command output is written to SYS$OUTPUT. /SPECIFICATION_ONLY /SPECIFICATION_ONLY Displays only the specifications of the specified units when you use the /UNITS qualifier. You cannot append both the /SPECIFICATION_ONLY qualifier and the /BODY_ONLY qualifier to the SHOW LIBRARY/UNITS command string. By default, if the /SPECIFICATION_ONLY qualifier is omitted, the bodies, as well as the specifications, are displayed. /UNITS /UNITS Lists each unit that is defined in the specified program libraries. The level of information displayed depends on whether the /BRIEF or /FULL qualifier is also used. The unit information displayed is identical to that displayed by the DIRECTORY command. 4 Examples 1.ACS> SHOW LIBRARY %I, Current program library is USER:[JONES.HOTEL.ADALIB] Identifies the current program library. 2.ACS> SHOW LIBRARY/FULL Current program library DISK:[LIB2] Current path in its original form: DISK:[LIB2] @DISK:[LIB1] Current path evaluates to: DISK:[LIB2] DISK:[LIB1] DISK:[LIB0] Program library DISK:[LIB2] Created: 4-NOV-1992 16:33:30.74, by DEC Ada V3.0 Last reorganized: 4-NOV-1992 19:47:36.13 Default path in its original form: DISK:[LIB2] @DISK:[LIB1] which evaluates to: DISK:[LIB2] DISK:[LIB1] DISK:[LIB0] Pragmas that affect STANDARD and SYSTEM: pragma FLOAT_REPRESENTATION(VAX_FLOAT) pragma LONG_FLOAT(G_FLOAT) pragma MEMORY_SIZE(2147483647) pragma SYSTEM_NAME(VAX_VMS) Identifies DISK:[LIB2] as the current program library with a current path of DISK:[LIB2],@DISK:[LIB1]. This path evaluates to DISK:[LIB2], DISK:[LIB1], DISK:[LIB0]. This example also shows the pragmas that affect STANDARD and SYSTEM. 3 PROGRAM Displays information about the execution closure of one or more units in the current program library. Format SHOW PROGRAM unit-name[,...] 4 Parameters unit-name[,...] Specifies one or more units, in the current program library, about whose execution closure various information is to be shown. You must express subunit names using selected component notation as follows: ancestor-unit-name{.parent-unit-name}.subunit-name The unit names may include percent signs (%) and asterisks (*) as wildcard characters. (See the OpenVMS User's Manual for more information on wildcard characters.) 4 Description The ACS SHOW PROGRAM command displays information about all of the units in the execution closure of the specified units. Units are listed by name in alphabetical order. Subunit names are shown using selected component notation. The output of the SHOW PROGRAM command depends on whether the /BRIEF, /FULL, or no formatting qualifier is used. If you do not specify a qualifier, the SHOW PROGRAM command displays a level of information that is part way between that displayed with the /BRIEF and /FULL qualifiers. If you do not specify a qualifier, the SHOW PROGRAM command displays the information provided by the /BRIEF qualifier plus the following information for each unit in the closure: o The list of that unit o The duration specified with the pragma TIME_SLICE o The names of units mentioned in one or more ELABORATE pragmas for that unit o The names of units that the unit has established a dependence on as a result of subprogram inline expansion o The names of units that the unit has established a dependence on as a result of generic inline expansion 4 Command_Qualifiers /BRIEF /BRIEF Displays the following information: o The directory specification of the current program library. o The values of the program library characteristics FLOAT_ REPRESENTATION, LONG_FLOAT, MEMORY_SIZE, and SYSTEM_NAME. o For each unit in the closure of the specified units: the unit name; the kind of unit (for example, procedure body); the date and time of the last compilation; and the file specification of the source file, or (if the unit was entered into the current program library) the directory specification of the other library. /FULL /FULL Displays the information provided by the SHOW PROGRAM command when used with no qualifier plus, for each unit in the closure, the file specifications of the associated files. /OUTPUT /OUTPUT=file-spec Requests that the SHOW PROGRAM command output be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. The default file type is .LIS. If you specify a file type but omit the file name, the default file name is ACS. No wildcard characters are allowed in the file specification. By default, the SHOW PROGRAM command output is written to SYS$OUTPUT. /OBSOLETE /OBSOLETE=(option[,...]) /NOOBSOLETE (D) Allows you to ask what the effect on a program or a set of units would be if some specific units were obsolete. When the execution closure of the units in the parameter list of the command is performed, the units named with the UNIT,SPECIFICATION, and BODY keywords are assumed to be obsolete as described below. If one of those units is not in the execution closure of the units named in the command's parameter list, it is not added to the closure. Unit names are specified with the UNIT, SPECIFICATION, and BODY keywords as follows: UNIT:(unit_ The specifications and bodies of units name[,...]) specified with the UNIT keyword are assumed to be obsolete. SPECIFICATION:(unit_ Only the specifications specified by the name[,...]) SPECIFICATION keyword are assumed to be obsolete. BODY:(unit_ Only the bodies of units specified with the name[,...]) BODY keyword are assumed to be obsolete. You must specify at least one of these keywords. Unit names can contain wildcard characters. By default, units are identified as obsolete based on the current state of the program library. /PROCESSING_LEVEL /PROCESSING_LEVEL[=option] Determines the kind of obsolete units identified. Obsolete units are identified based on the level of processing applied to the unit: syntax checking, design checking, or full compilation. You can request the following options: SYNTAX Determines whether a unit is obsolete because it has been syntax-checked only. Because all units in a program library are at least syntax-checked, and because syntax-checking does not require any particular order of compilation, generally accepts all units as being current. DESIGN Determines whether a unit is obsolete because it has been design-checked only. Accepts design- checked units and fully compiled units as being current, unless they are otherwise obsolete (for example, they depend on units that have been syntax-checked only, or they depend on other obsolete units). FULL Determines three kinds of obsolete units: units that are obsolete because they have been syntax- checked only, units that have been design-checked, and units that are obsolete as a result of the compilation of the units they depend on. Units that depend on obsolete units are also considered to be obsolete. By default, all units are fully checked (/PROCESSING_LEVEL=FULL), and all obsolete units are identified. /SMART_RECOMPILATION /SMART_RECOMPILATION (D) /NOSMART_RECOMPILATION Controls whether smart recompilation information, which is stored in the program library, is used to identify obsolete units. If smart recompilation is not in effect, units are identified as obsolete and in need of recompilation based on their time of compilation only. (See Developing Ada Programs on OpenVMS Systems for more information.) 4 Example ACS> SHOW PROGRAM ADA_CALLER ADA_CALLER ADA_CALLER 4-NOV-1992 08:57:12.48 Program library USER:[TEST] Created: 1-NOV-1992 10:03:53.93, by DEC Ada V3.0 Last reorganized: Default path in its original form: USER:[TEST] Default path evaluates to: USER:[TEST] Pragmas that affect STANDARD and SYSTEM: pragma FLOAT_REPRESENTATION(VAX_FLOAT) pragma LONG_FLOAT(G_FLOAT) pragma MEMORY_SIZE(2147483647) pragma SYSTEM_NAME(VAX_VMS) The closure of the specified units is: ADA_CALLER Procedure body Compiled: 4-NOV-1992 08:56:42.94 Source file: 31-JUL-1992 16:23:43.39 USER:[TEST]ADA_CALLER.ADA;1 With list: SQR INTEGER_TEXT_IO INTEGER_TEXT_IO Package instantiation Compiled: 2-NOV-1992 01:47:11.30 Entered from: ADA$PREDEFINED_ROOT:[ADALIB] With list: TEXT_IO Inline_Generic: TEXT_IO IO_EXCEPTIONS Package specification Compiled: 2-NOV-1992 01:45:42.02 Entered from: ADA$PREDEFINED_ROOT:[ADALIB] SQR Function specification Compiled: 4-NOV-1992 08:51:26.95 Source file: 7-NOV-1988 17:06:41.30 USER:[TEST]SQR_.ADA;2 Foreign function body Object file: 4-NOV-1992 08:51:26.95 SQR.OBJ;1 SYSTEM Builtin package TEXT_IO Package specification Compiled: 2-NOV-1992 01:46:43.02 Entered from: ADA$PREDEFINED_ROOT:[ADALIB] With list: IO_EXCEPTIONS Package body Compiled: 2-NOV-1992 01:46:56.16 Entered from: ADA$PREDEFINED_ROOT:[ADALIB] With list: SYSTEM Displays information about the closure of the unit ADA_CALLER, which also includes the unit SQR and a number of Compaq Ada predefined units. 3 SOURCE Displays the source-file-directory search list used by the ACS COMPILE command. Format SHOW SOURCE 4 Description The ACS SHOW SOURCE command displays the directory list specified in the last ACS SET SOURCE command. See the description of the SET SOURCE command. 4 Example ACS> SHOW SOURCE %I, Current source search list (ADA$SOURCE) is USER:[JONES.HOTEL] DISK:[SMITH.SHARE] Shows that the directories to be searched by the ACS COMPILE command for external source files are first the directory USER:[JONES.HOTEL] and then the directory DISK:[SMITH.SHARE]. 3 VERSION Displays the version of Compaq Ada that is installed on your system. Format SHOW VERSION 4 Description The ACS SHOW VERSION command displays a string that gives the version number of Compaq Ada (compiler and program library manager) that is installed on your system. 4 Example ACS> SHOW VERSION DEC Ada V3.0-0 Shows that Version 3.0 of DEC Ada is currently running on the user's system. 2 SPAWN Creates a subprocess of the current process and suspends execution of the current process. Format SPAWN [DCL-command] 3 Parameters [DCL-command] Specifies an optional DCL command. 3 Description The ACS SPAWN command creates a subprocess of the current process and suspends execution of the current process. If you specify a DCL command, that command is executed in a subprocess, and control is returned to the program library manager after the command is executed. If you do not specify a DCL command, an interactive subprocess is created allowing you to execute a whole series of DCL commands interactively. You can return to the program library manager by logging out of the subprocess (by entering a DCL LOGOUT command) or entering a DCL ATTACH command. See the description of the DCL ATTACH command in the OpenVMS DCL Dictionary. 3 Example ACS> SPAWN MAIL ! from process JONES MAIL> . . . MAIL> ATTACH JONES %I, Control returned to process JONES ACS> . . . ACS> ATTACH JONES_1 MAIL> The ACS SPAWN MAIL command, entered from process JONES, invokes the VMS Mail Utility in a subprocess named JONES_1. The DCL ATTACH command entered from MAIL (subprocess JONES_1) returns control back to process JONES. The ACS ATTACH command entered interactively from the program library manager (process JONES) switches control back to subprocess JONES_1. 2 VERIFY Performs a series of consistency checks on the current program library (or the specified library) to determine whether the library structure and library files are in valid form. The ACS VERIFY command optionally corrects some of the inconsistencies detected. Format VERIFY [directory-spec] 3 Parameters directory-spec Specifies the Compaq Ada program library to be verified. No wildcard characters are allowed in the directory specification. If you do not specify a program library, the ACS VERIFY command verifies the current program library. 3 Description The ACS VERIFY command checks the following items (unless otherwise stated, only files in the specified program library are checked): o The format of the library index file. o Whether all files cataloged in the library index file exist in the program library and are accessible-that is, all object (.OBJ), compilation unit (.ACU), and copied source (.ADC) files. In the case of entered units, the VERIFY command checks whether the files exist in the library from which they were entered. o Whether all .OBJ, .ACU, and .ADC files that exist in the program library directory are cataloged in the library index file. o Whether temporary files used by the REORGANIZE command are in the program library. o The format of the compilation unit files (.ACU). o Whether the protection code of cataloged .OBJ, .ACU, and .ADC files is consistent with that of the library index file (see Developing Ada Programs on OpenVMS Systems. If inconsistencies are found, the VERIFY command issues error messages indicating the units or files that are erroneous. The kinds of inconsistencies detected by the VERIFY command are typically not detected by the ACS CHECK command, which is used to determine whether any units in a closure are missing or obsolete. You can use the /REPAIR qualifier to correct some of the inconsistencies reported by the VERIFY command. When the /REPAIR qualifier is used, the VERIFY command performs the same checks as when the qualifier is not used, but corrective action is taken only on the specified program library or, by default, on the current program library. No corrective action is taken for entered units. 3 Command_Qualifiers /CONFIRM /CONFIRM /NOCONFIRM (D) Controls whether the VERIFY/REPAIR command asks for confirmation before deleting unit index entries from the library index file, or deleting uncataloged files from the program library directory. If you specify the /CONFIRM qualifier, the possible responses are as follows: o Affirmative responses are YES, TRUE, and 1. o Negative responses are NO, FALSE, 0, and the RETURN key. o QUIT or Ctrl/Z indicates that you want to stop processing the command at that point. o ALL indicates that you want to continue processing the command without any further prompts. You can use any combination of upper- and lowercase letters for word responses. Word responses can be abbreviated to one or more letters (for example, Y, YE, or YES). If you type a response other than one of those in the list, the prompt is reissued. By default, no confirmation is requested. /LOG /LOG /NOLOG (D) Controls whether the name of a unit or the specification of a file is displayed as that unit or file is verified. By default, the names of units or files being verified are not displayed. /OUTPUT /OUTPUT=file-spec Requests that the VERIFY command output be written to the file specified rather than to SYS$OUTPUT. Any diagnostic messages are written to both SYS$OUTPUT and the file. The default directory is the current default directory. If you specify a file type but omit the file name, the default file name is ACS. The default file type is .LIS. No wildcard characters are allowed in the file specification. By default, the VERIFY command output is written to SYS$OUTPUT. /REPAIR /REPAIR /NOREPAIR (D) Controls whether the VERIFY command repairs some of the inconsistencies that it has detected. To use the /REPAIR qualifier, you must have exclusive read-write access to the program library you are repairing. If another user is accessing the library when you enter the VERIFY/REPAIR command, the command will fail. One way to obtain exclusive access is to use the ACS SET LIBRARY/EXCLUSIVE command (note that this command will also fail if you cannot gain exclusive access when you enter it). You must enter the SET LIBRARY/EXCLUSIVE command interactively for it to have an effect. Note that the SET LIBRARY/EXCLUSIVE command is not permitted for program libraries over DECnet. The VERIFY/REPAIR command takes the following actions: o Identifies any files in the program library directory that are not cataloged in the library index file. Deletes any uncataloged files with a file type of .OBJ, .ACU, or .ADC. Deletes any temporary files remaining from an interrupted ACS REORGANIZE command. Deletes any other uncataloged files if you have also specified the /CONFIRM qualifier and given an affirmative response. o As necessary, changes the file protection on .OBJ, .ACU, and .ADC files to be consistent with the protection code for the library index file. o Marks as obsolete any unit whose .OBJ or .ACU file is inaccessible. A later VERIFY/REPAIR command will reset any such marks if the associated files are again available. o Removes references to inaccessible copied source files (.ADC) from the library index file. o Deletes any index entry with an illegal format from the library index file. By default, the VERIFY command only checks for inconsistencies and takes no corrective action. 3 Examples 1.ACS> VERIFY %I, USER:[JONES.HOTEL.ADALIB] verified Checks the current program library. No inconsistencies have been detected. 2.ACS> SET LIBRARY/EXCLUSIVE [PROJ.ADALIB] %I, Current program library is USER:[PROJ.ADALIB] ACS> VERIFY/REPAIR/LOG . . . %I, STARLET verified %I, STR verified %E, Inconsistent file protection [PROJ.ADALIB]SQR.OBJ;1 %W, SQR verified and repaired . . . %E, Error opening [PROJ.ADALIB]TEST_STACKS.OBJ;2 as input -E, file not found %W, TEST_STACKS verified and repaired . . . %I, Units with inaccessible files are obsolete. If repair (VERIFY/REPAIR) is not possible, then recompilation of these units is necessary; after entering a VERIFY/REPAIR command, the CHECK command will show any obsolete units %W, USER:[PROJ.ADALIB] verified and repaired ACS> RECOMPILE TEST_STACKS Defines the program library [PROJ.ADALIB] as the current program library, with exclusive read-write access. This step is necessary before using the VERIFY/REPAIR command. The VERIFY/REPAIR command then notes that the protection of file SQR.OBJ is inconsistent with that of the library index file and changes the protection to make it consistent; marks the unit TEST_STACKS as obsolete, because its .OBJ file (TEST_ STACKS.OBJ;2) is inaccessible; and issues a summary message that the program library has been verified and repaired. The RECOMPILE command then makes the obsolete unit, TEST_ STACKS, current.