The new appl_CMS_GROUP logical name in the application logical
name table is used to control access to an applications common CMS
The appl_CMS_PATH logical name now supports a search list of generations. It must also be used in place of the appl_CMS_CLASS and appl_CMS_GENERATION logical name.
During the transition from V2.5-2 to V2.6 of SysWorks, it is possible to have both the appl_CMS_CLASS or appl_CMS_GENERATION logicals names defined at the same time as appl_CMS_PATH. This allows applications to change their LOGICALS.COM before V2.6 installation, and still work immediately afterwards.
To do this the folowing steps must be performed:
$ CMS INSERT GEN *.*/GEN=1+ FIN_DEV "Ready for V2.6"
$ CMS CREATE CLASS FIN_DEV_JONES_AB "Ready for V2.6"
The new appl_CMS_VARIANT logical name in the application
logical name table is used to control access to an applications common
The meaning of the envr_DEVELOPER_STYLE logical name has been
changed. The values of COMMON and SPECIFIC no indicate the default
entry scope when an APPLICATION or ENVIRONMENT command is used.
The new appl_GROUPS logical name in the application logical
name table is used to place ACMS task group definitions in a specific
dictionary directory rather than CDD$DEFAULT.
The new appl_MENUS logical name in the application logical
name table is used to place ACMS menu definitions in a specific
dictionary directory rather than CDD$DEFAULT.
The new appl_MSGHLP_LIB logical name in the application
logical name table is used to identify the HELP/MESSAGE data file used
by the application (if any).
The new appl_TASKS logical name in the application logical
name table is used to place ACMS task definitions in a specific
dictionary directory rather than CDD$DEFAULT.
The new appl_TDMS_REPLACE logical name in the application
logical name table is used to indicate that TDMS sources (i.e. request
and request library definitions) contain RDU utility commands such as
create or replace, and that SysWorks should not issue these commands.
By default, SysWorks issues these commands.
This logical name defines the default entry scope used when a developer
enters an application environment with the APPLICATION or ENVIRONMENT
commands. It is overridden by the appl_DEVELOPER_STYLE logical
name when that is present (eg. defined in an application's LOGICAL.COM
The SWRK_ENVR_WRK_envr and SWRK_ENVR_VACL_envr logical names in the LNM_SWRK_DATABASE logical name table have been superceded by the SWRK_ENVR_envr logical names which contain all the information about an environment. For public level installations of SysWorks, these logical names are usually defined in the site specific pre startup procedure SWRK_LCL_DIR:site_PRE_STARTUP.COM which should be changed to reflect the new logical names.
The following DCL commands illustrates how one of these logical names might be defined:
$ DEFDAT := DEFINE/TABLE=LNM_swrk_DATABASE $ DEFDAT SWRK_ENVR_DEV "SCOP=SPECIFIC\WORK=1\VACL=0\VRNT=0\VRSN=0"
Note that the equivalence must be in uppercase and inside quotes. The five properties have the following meanings:
|SCOP||COMMON||Only the common scope is supported|
|SPECIFIC||Both command and specific scopes are supported|
|WORK||0||No work directories are supported|
|1||Work directories are supported|
|VACL||0||CMS variants should not be used|
|1||CMS variants should be used|
|VRNT||0||No multi-variant support|
|VRSN||0||No multi-version support|
The following are the standard defaults:
Note that if ACMS is present on a computer node, the scope property is
overridden to be common, since ACMS cannot support the SPECIFIC scope
The SWRK_ENVR_VACL_envr logical name has been superceded by the SWRK_ENVR_envr logical name.
Revised SWRK_ENVR_VACL_envr logical name (in the
LNM_SWRK_DATABASE logical name table for non-private installation
levels) is used to specify CMS variant class control flags. If this
logical has a true value, the generations in the application
environments CMS class must be variants.
The SWRK_ENVR_WRK_envr logical name has been superceded by the SWRK_ENVR_envr logical name.
New SWRK_ENVR_WRK_envr logical name to control which
environments should have work areas. This logical name should be placed
in the LNM_swrk_DATABASE logical name table, which will be system wide
when SysWorks is installed at or above the public installation level.
For sites which install SysWorks at or below the public level, this
logical name should be defined in the site specific SysWorks pre
startup command procedure.
This logical name has an equivalence of SYSTEM or USER and controls
where the utility logical names supported in SysWorks are defined.
2.7.19 SQL$USER and LNK$LIBRARY_nn
The SQL$USER logical name is no longer defined as a LNK$LIBRARY_nn logical name. This is to allow the use of multi-variant DEC Rdb and part of a trend away from using LNK$LIBRARY_nn logical names. In order to use the SQL$USER object library, each the Linker option file for each image shich uses SQL should include a line such as:
Regarding the trend away from LNK$LIBRARY_nn logical names, application Linker options files should include a line similar to the above for each library they need to link against. It is recommened that each library be represented by a logical name.
The preferred SysWorks format for such logical names include the following:
|appl_HELP_LIB||appl_DOC_DIR: applHLP.HLB||Application help library|
|appl_IMAGE_LIB||appl_SFT_DIR: applIMG.OLB||Application shareable image library|
|appl_OBJECT_LIB||appl_LIB_DIR: applOBJ.OLB||Application object library|
|appl_SYMBOL_LIB||appl_LIB_DIR: applSYM.OLB||Application symbol library (if separate from the object library)|
|appl_TEXT_LIB or appl_COPY_LIB||appl_LIB_DIR: applTXT.TLB||Application Cobol, DECforms and/or Fortran include library|
The following routines were provided as part of SysWorks as a public
interface into the SWRKSHR shareable image.
This routine searches an ordered table of keywords using a binary
This routine closes the SysWorks standard output stream.
This routine displays OpenVMS help.
This routine dumps an image list and frame analysis. It takes one
argument which is the address of an outout callback routine. If this
routine is not present, the output is directed to SYS$OUTPUT.
This routine established the SysWorks exception handler. Its behaviour
changes depending on the execution mode of the caller, or whether the
caller was within the main image or an executable image. If the
debugger is present, no exception handler is established, since it is
assumed that the debuggers exception handler will suffice.
This routine now detects PCA$COLLECTOR in addition to DEBUG for the purpose of not handling most exceptions. This is so that these images can trap exceptions.
This routine is the actual exception handler which is established by
SWRK_ESTABLISH. It takes the arguments specified in the OpenVMS
Introduction to System Services manual.
This routine has been enhanced to support the /SELECT qualifier. As a
consequence, all SysWorks commands which use SWRK_EXTENDED_FILE_SEARCH
now support the /SELECT qualifier. All such commands have had their
documentation updated to reflect this.
This JSB routine is used to handle SysWorks format shareable image
This routine has been enhanced to allow a leading double ampersand to be interpreted as a single ampersand rather than as a symbol substitution operator.
This routine has been enhanced to allow a leading ampersand to be
interpreted as symbol substitution operator. The command parameter or
qualifier value will be that of the symbol name following the ampersand
rather than the value initially passed by the used. If the symbol named
after the ampersand is not defined, a blank value results.
This routine opens the SysWorks standard output stream.
This routine writes a line to the SysWorks standard output stream.
This section briefly describes the new and changed Macros provided in
The FIXUP macro replaces the previoud UPDATE macro. It is used to fixup
address information in a data structure explicitly at runtime rather
than at image activation time.
The new UPDATE macro performs an update on a file and is thus now
related to the CREATE, GET, OPEN and PUT macros.
2.10 MMS Generators
This section briefly describes the new or updated MMS generators
provided in SysWorks.
2.10.1 Improvements to All MMS Generators
All MMS generators have now been enhanced to allow a logical name to be
used for a file based dependency. This feature was first introduced for
Cobol, and is now used throughout all MMS generators which make
dependencies on files. There are a number of important side effects of
this change. For example, in conjunction with the
appl_EXPLICIT_LINK_FLG logical name, it is now possible to
have more than one object library within an application.
All ACMS sources now generate dependencies for %INCLUDE statements. These dependencies now work for both ADU REPLACE and ADU BUILD commands. Note that only complete statements can be present within an include source at this time. Examples of such statements include:
forms are ... ; procedures are .... ; tasks are ... ; workspaces are ... ;
Many improvement and reorganizations have been made to the ACMS Task Group MMS script generator. The aim of these has been to increase the level of automation and reduce the level of application specific MMS script used with these.
The following changes have been made:
For a complete description of all the dependencies generated for an
ACMS Task Group source and the assumptions made in order to generate
them, please refer to the SysWorks Application Development
There is a new MMS generator variant for ADA sources with a file type
There is a new MMS generator variant for Basic sources with a file type
There is a new MMS generator variant for Bookreader bookshelf sources
with a file type of .DECW$BOOKSHELF_SRC.
A now logical name of the form appl_EXPLICIT_LINK_FLG now control whether the MMS generator for C creates link time dependencies in addition to compile time dependencies.
The default value of NO causes the generator to behave as it did previously i.e. it uses .TAG_EP dependencies to correctly build images.
A value of YES stops this behaviour. Under these circumstances, the best method of linking to ensure correct builds is to explicilty list each module in a Linker options file, either as an object file or an included modules from an object library. Benefits of this approach include:
These benefits allow SysWorks to be used with legacy or external code
without the need for substantial modifications.
The MMS generator for C now generates dependencies for include files whose names do not start with the application code. In order to distinguish between application and system include files, a search for the file is made in the application work directory. If it is present, a dependecy is made on it. If it is not present, it is assumed to be a system include file and no dependency is generated (i.e. the previous behaviour).
Note that no search for the file is made if its name starts with the application code (i.e. same as previous behaviour). Thus is is more efficient to continue the practise of using the application code as a file name prefix.
This enhanced behaviour is primarily intended to support legacy or
imported code rather than relaxing the recommendation to prefix all
sources with the application code.
There is a new MMS generator variant for C++ sources with a file types of .CXX, .HXX and .IXX.