_____________________________________________________
VAX CDD/Plus Release Notes
AA-GK49E-TE
May 1989
This manual contains the release notes for VAX CDD/Plus
Version 4.1. It includes the release notes for VAX CDD/Plus
Version 4.0.
Operating Systems: VMS Version 5
Software Version: VAX CDD/Plus Version 4.1
digital equipment corporation
maynard, massachusetts
_____________________________________________________
May 1989
The information in this document is subject to change without
notice and should not be construed as a commitment by Digital
Equipment Corporation. Digital Equipment Corporation assumes
no responsibility for any errors that may appear in this
document.
The software described in this document is furnished under a
license and may be used or copied only in accordance with the
terms of such license.
No responsibility is assumed for the use or reliability
of software on equipment that is not supplied by Digital
Equipment Corporation or its affiliated companies.
© Digital Equipment Corporation 1978, 1979, 1980, 1981, 1982,
1983, 1984, 1985, 1986, 1987, 1988, 1989.
All Rights Reserved.
Printed in U.S.A.
The postpaid Reader's Comments forms at the end of this
document request your critical evaluation to assist in
preparing future documentation.
The following are trademarks of Digital Equipment Corporation:
DEC DIBOL UNIBUS
DEC/CMS EduSystem VAX
DEC/MMS IAS VAXcluster
DECnet MASSBUS VMS
DECsystem-10 PDP VT
DECSYSTEM-20 PDT
DECUS RSTS
DECwriter RSX DIGITAL
This document was prepared using VAX DOCUMENT, Version 1.1
________________________________________________________________
Contents
Preface.................................................. vii
Technical Changes and New Features....................... xiii
1 New Features and Bug Fixes in This Release
1.1 Performance Enhancements........................ 1-1
1.2 Security Enhancements........................... 1-1
1.2.1 Restricted Access to Dictionary/Directory
System Files................................. 1-1
1.2.2 ACLs Supported for Directories ............... 1-3
1.3 LMF Support..................................... 1-3
1.4 ENTER and REMOVE Commands....................... 1-4
1.5 VERIFY Command Provides /COMPRESS Option........ 1-4
1.6 Using Remote Dictionaries....................... 1-4
1.6.1 CDD$REMOTE Process Is Terminated ............. 1-4
1.6.2 Logical Names and Remote Access .............. 1-4
1.6.3 Proxy Accounts ............................... 1-5
1.7 CDD/Plus Enables ASTs........................... 1-5
1.8 Bug Fixes ...................................... 1-5
1.8.1 Corruption Bug Fixed ......................... 1-5
iii
1.8.2 MISSING Clause in VALID IF Works Correctly ... 1-6
1.8.3 CDO Reporting of Syntax Errors Fixed ......... 1-6
1.8.4 Errors in CONVERT Command Fixed .............. 1-6
1.8.5 Infinite Loop on Syntax Error Fixed .......... 1-6
1.8.6 Bugs Fixed and Restrictions Lifted in DEFINE
RMS_DATABASE Command......................... 1-7
1.8.7 Text Data in SHOW GENERIC Prints Correctly ... 1-7
1.8.8 Directory Corruption Fixed ................... 1-7
1.8.9 Comparison in Within Query Fixed ............. 1-7
1.8.10 CDD$_NODICT Message Text Changed ............. 1-8
1.8.11 CDD V3.4 Allows System Logical Names in
Subdictionary Specifications................. 1-8
2 Notes about the Installation Procedure
2.1 System and Process Quotas....................... 2-1
2.2 Upgrading Protocols............................. 2-1
2.3 Concealed Device Name Errors.................... 2-3
2.4 New Text in Installation Procedure.............. 2-4
2.5 Temporary Files Created in Right Location....... 2-4
2.6 Installing Known Images with SYSPRV............. 2-5
2.7 Installation Failures on Old DATATRIEVE Sites... 2-5
2.8 CDD/Plus with TEAMDATA.......................... 2-5
2.9 Installing Compilers with CDD/Plus.............. 2-5
2.10 DESKTOP-VMS Restriction......................... 2-6
3 Known Problems and Restrictions in CDD/Plus Utilities
3.1 Known Problems and Restrictions in CDO.......... 3-1
3.1.1 ENTER Command Does Not Accept FROM GENERIC
Clause....................................... 3-1
3.1.2 ENTER Restriction with RMS Databases ......... 3-1
3.1.3 Restriction Verifying a Dictionary Without
Privilege.................................... 3-1
3.1.4 Bit-Aligned Fields Aligned on Byte Boundary .. 3-2
3.1.5 VAX PASCAL V3.4 Required for CDO Support ..... 3-2
iv
3.1.6 DATATRIEVE SHOW Does Not Display Source of
CDO Record Definitions....................... 3-2
3.1.7 Restrictions for CDO Command CONVERT ......... 3-2
3.1.7.1 Change of Processing Name on CONVERT....... 3-2
3.1.7.2 Converting Fields Defined by a DATATRIEVE
COMPUTED BY Expression in a DMU Record
Definition................................. 3-3
3.1.7.3 ACLs for DMU Definitions Are Not
Converted.................................. 3-3
3.1.7.4 Converting DMU Records Containing
OCCURS...DEPENDING Clause.................. 3-3
3.1.7.5 Some DMU Field Attribute Clauses Not
Converted.................................. 3-3
3.1.7.6 Alignment Differences in DMU Record
Definitions Containing the ALIGNED
Clause..................................... 3-4
3.1.7.7 Directories Not Automatically Converted.... 3-4
3.1.8 Record Access Denied on Field Protection
Violation.................................... 3-5
3.1.9 Specifying Full Path Names to Segments in
DEFINE RMS_DATABASE Command.................. 3-5
3.2 CDO Editor Restrictions......................... 3-6
3.2.1 CDO Editor Does Not Display Entities Without
Processing Names............................. 3-6
3.2.2 CDO Editor Does Not Read the Missing Value
Attribute Correctly.......................... 3-6
3.2.3 CDO Editor Does Not Handle Expressions or
Arrays....................................... 3-7
3.3 Known Problems in the CDD/Plus Call Interface... 3-7
3.3.1 CDD$FETCH_NEXT Returns an Extra Dot in Path
Names of DMU Directories..................... 3-7
3.4 CDDV Is a Privileged Image...................... 3-7
3.5 Known Problems and Restrictions in DMU and
CDDL............................................ 3-7
3.5.1 Wildcard Characters Not Allowed in Logical
Names........................................ 3-7
3.5.2 CDDL Supports the VAX Language-Sensitive
Editor (LSE)................................. 3-8
v
3.5.3 Moving Subdictionary Files ................... 3-8
3.5.4 Avoid the CDDL ALIGNED Clause in Template
Records...................................... 3-9
3.5.5 Copying and Renaming a Dictionary Object
Protected by a Password...................... 3-9
3.5.6 Using /STAGE with the DMU RESTORE Command .... 3-9
3.5.7 Using a Wild Card with the
DELETE/SUBDICTIONARY Command................. 3-10
3.5.8 DMU DELETE * Aborts When a CDO Definition is
Encountered.................................. 3-10
3.5.9 DMU LIST Does Not Alphabetize Contents of
Rdb/VMS Database............................. 3-10
4 Known Problems Using Rdb/VMS with CDD/Plus
4.1 Rolling Back Transactions to Avoid Inconsistent
Metadata........................................ 4-1
4.2 DEFINE RELATION FROM PATHNAME Cannot Rename
Record.......................................... 4-1
4.3 Avoid Copying Both Field Definition and Fields
Based on That Definition........................ 4-1
4.4 Assigning Segmented String Attributes to Avoid
New Versions.................................... 4-2
4.5 Restriction on Asterisk (*) Wild Card Character
in SHOW Command................................. 4-2
4.6 Displaying Indices or Constraints .............. 4-3
5 Hints for Using CDD/Plus
5.1 Compatibility of CDD/Plus V4.1 and V4.0......... 5-1
5.2 Assigning Resource Identifiers to Prevent Disk
Quota Errors.................................... 5-1
5.3 Avoiding Locking Problems....................... 5-3
5.4 Using RMU/BACKUP and RMU/RESTORE on CDO
Dictionaries.................................... 5-3
vi
6 Documentation Additions and Corrections
6.1 Corrections to the Online HELP.................. 6-1
6.1.1 Documentation of Error Messages .............. 6-1
6.2 Additions to the VAX CDD/Plus Common Dictionary
Operator Reference Manual....................... 6-1
6.2.1 DIRECTORY Option on Protection Commands ...... 6-1
6.2.2 ENTER Command ................................ 6-2
6.2.3 REMOVE Command ............................... 6-3
6.2.4 Enhanced Syntax for Expressions .............. 6-3
6.2.5 Enhancements to Edit Strings ................. 6-4
6.3 Corrections to the VAX CDD/Plus User's Guide.... 6-5
6.3.1 VALID IF Does Not Have an Underscore ........ 6-5
6.3.2 DEFINE DATABASE Examples Show Wrong Syntax ... 6-5
6.3.3 Copying Database Definitions ................. 6-5
6.3.4 Reference to Nonexistent Compiler ............ 6-6
6.3.5 INTEGRATE Statement Implies
START_TRANSACTION............................ 6-6
6.3.6 Using VAX SQL ................................ 6-6
6.4 Corrections and Additions to the VAX CDD/Plus
Call Interface Manual........................... 6-7
6.4.1 Directory Name Required When Requesting
Information from CDD$FETCH_START............. 6-7
6.4.2 Comment Line Missing in RETRIEVE_RECORD.PAS .. 6-8
6.4.3 Directory Information Buffer Accepts ACL
Buffer....................................... 6-8
6.4.4 Modified Expression Buffer ................... 6-9
6.4.5 Modified Edit String Buffer .................. 6-12
CDD$GET_ELEMENT ................................ 6-21
6.4.6 New Parameter to CDD$GET_ELEMENT ............ 6-21
CDD$CHANGE_DIRECTORY............................ 6-23
6.4.7 CDD$CHANGE_DIRECTORY Routine Added ........... 6-23
CDD$DELETE_DIRECTORY............................ 6-25
6.4.8 CDD$DELETE_DIRECTORY Routine Missing from the
VAX CDD/Plus Call Interface Manual........... 6-25
CDD$ERASE_DIRECTORY_ENTRY....................... 6-28
6.4.9 CDD$ERASE_DIRECTORY_ENTRY Routine ............ 6-28
vii
7 Guidelines for Submitting an SPR
Index
viii
________________________________________________________________
Preface
This manual provides information about VAX CDD/Plus Version
4.1 software, also referred to in this book as CDD/Plus. This
manual replaces Version 4.0 of VAX CDD/Plus Release Notes.
Intended Audience
This manual contains information not included in other
manuals in the documentation set. This information is in-
tended for data administrators, system managers, programming
supervisors, and programmers.
Operating System Information
Information about the versions of the operating system and
related software that are compatible with this version of
CDD/Plus is included in the CDD/Plus media kit, in either
the VAX CDD/Plus Installation Guide or the Before You Install
letter.
For information on the compatibility of other software
products with this version of CDD/Plus, refer to the System
Support Addendum (SSA) that comes with the Software Product
Description (SPD). You can use the SPD/SSA to verify which
vii
versions of your operating system are compatible with this
version of CDD/Plus.
Structure
This manual consists of seven chapters of release notes.
Chapter 1 Explains the new features and bug fixes in
CDD/Plus Version 4.1
Chapter 2 Contains hints and explanations about the
CDD/Plus Version 4.1 installation procedure.
Chapter 3 Lists restrictions and known problems in the
dictionary utilities.
Chapter 4 Contains release notes related to using Rdb/VMS
with CDD/Plus.
Chapter 5 Presents some hints for using CDD/Plus more
effectively.
Chapter 6 Includes corrections to the CDD/Plus Version 4.0
documentation.
Chapter 7 Explains what you need to include when you
include a software problem.
Related Documents
The other manuals in the VAX CDD/Plus documentation set are:
_ VAX CDD/Plus User's Guide
Provides tutorial material for the CDO utility and
describes how to coordinate definitions stored in CDO
and DMU dictionaries.
_ VAX CDD/Plus Common Dictionary Operator Reference Manual
viii
Provides reference material and syntax for all CDO
commands.
_ VAX Common Data Dictionary Data Definition Language
Reference Manual
Describes the VAX Common Data Dictionary Data Definition
Language Utility (CDDL), which manipulates definitions in
DMU dictionaries.
_ VAX Common Data Dictionary Utilities Reference Manual
Describes the Dictionary Management Utility (DMU) and the
Dictionary Verify/Fix Utility (CDDV), utilities you use to
manipulate DMU dictionaries.
The VAX CDD/Plus Call Interface Manual provides reference
material for the system administrator on CDO dictionary
architecture. This manual can be ordered separately.
Conventions
The special symbols used in this book are:
_____________________________________________________________
Symbol_____________Meaning___________________________________
<CTRL/x> This symbol tells you to press the CTRL
(control) key and hold it down while
pressing the specified letter key.
KPn Key names that begin with KP indicate keys
on the numeric keypad on the right side of
the terminal keyboard.
SHIFT The CDO editor uses the PF1 key as a shift
key.
ix
_____________________________________________________________
Symbol_____________Meaning___________________________________
SHIFT-KPn The hyphen in key names means that you
press the two keys in the order listed.
<RET> This symbol indicates the RETURN key.
BOLD Bold lettering indicates the definition of
a new term.
Vertical ellipsis in an example means that
. information not directly related to the
. example has been omitted.
.
$ The dollar sign is used to indicate the
DCL prompt. This prompt may be different
on your system.
Color______________Color_in_examples_shows_user_input._______
References to Products
The VAX CDD/Plus documentation to which this document belongs
often refers to other Digital products by their abbreviated
names.
_ VAX ACMS software is referred to as ACMS.
_ VAX CDD software-released prior to VAX CDD/Plus-is
referred to as CDD.
_ VAX CDD/Plus software is referred to as CDD/Plus.
_ VAX DATATRIEVE software is referred to as DATATRIEVE.
_ VAX Rdb/VMS software is referred to as Rdb/VMS.
_ VAX RMS software is referred to as RMS.
_ VAX DBMS software is referred to as VAX DBMS.
x
_ VAX TDMS software is referred to as TDMS.
_ VAX COBOL software is referred to as VAX COBOL.
_ VAX DECreporter software is referred to as DECreporter.
_ VAX Language-Sensitive Editor software is referred to as
LSE.
_ VAX SQL software is referred to as SQL.
xi
________________________________________________________________
Technical Changes and New Features
CDD/Plus Version 4.1 provides bug fixes for CDD/Plus Version
4.0. It also provides the following new functions:
_ Enhanced security.
_ Protection for dictionary directories.
_ Performance improvements.
_ The CDO command ENTER to define additional directory
entries for an existing dictionary definition. This
command allows CDO access to the functions of the
CDD$DEFINE_DIRECTORY_ENTRY routine.
_ The CDO command REMOVE and the CDD$ERASE_DIRECTORY_ENTRY
routine to remove directory entries from an existing
dictionary definition.
CDD/Plus Version 4.0 Features
CDD/Plus Version 4.0 is an enhanced version of CDD V3.4.
CDD/Plus supports dictionary definitions created by CDD
V3.4 and earlier as well as by the new CDO utility and the
CDD/Plus call interface. It provides the following major
features:
_ An Easy-to-Use Interface
xiii
CDD/Plus provides a single user interface, known as
CDO, where you can accomplish all data definition,
administration, and management functions for CDO
dictionaries. A menu-driven editor allows you to enter
common field and record definitions easily. You can also
read your DMU dictionary from CDO; CDD/Plus automatically
translates the DMU definitions to a form CDO understands.
CDD/Plus still provides the DMU, CDDL, and CDDV utilities
to maintain definitions created by CDD V3.4 and earlier.
You should use these utilities if you use VAX layered
products that do not yet support CDO dictionary features
or if you need to write to DMU dictionaries.
_ Distributed Dictionary Implementation
CDO dictionaries can be located on different devices on
a single node, on different nodes on a VAXcluster, and
on local or wide area networks. The CDO utility allows
you to access all of these dictionaries, as well as your
system DMU dictionary and subdictionaries, as one logical
dictionary.
_ Field-Level Data Descriptions
Field definitions are the smallest fundamental data
definitions in CDO dictionaries. You can include
these field definitions in many different records and
structures. These definitions can be shared by many other
dictionary definitions, thereby reducing redundancy of
data.
_ Relationships
CDD/Plus connects dictionary definitions automatically
when you create definitions through the CDO utility. You
can create relationships explicitly through the call
interface. These relationships can connect different
dictionaries on the same system or on different systems
across a network, but cannot link definitions created with
CDD V3.4 or earlier.
xiv
_ Pieces Tracking
CDD/Plus keeps track of all dictionary usage in CDO
dictionaries. With CDO commands, you can locate the
definitions that would be affected if a particular
definition were to be changed.
You control whether changes to CDO definitions take effect
immediately or are incorporated into related definitions
over time. If you want the change to take place at once,
CDD/Plus automatically changes record definitions that
include the field definition. If you want to phase
the change in over time, create a new version of the
definition. CDD/Plus attaches a notice about the change to
CDO definitions but does not automatically change those
definitions.
_ Data Security and Integrity
The CDD/Plus protection provisions are consistent with
VMS and Rdb/VMS. To maintain integrity, CDD/Plus provides
automatic journaling capabilities and commands you can use
to verify the dictionary condition.
_ Call Interface
You can make direct calls from user programs to CDD/Plus
routines that manipulate dictionaries with CDO format.
The call interface is documented in the VAX CDD/Plus Call
Interface Manual.
xv
1
________________________________________________________________
New Features and Bug Fixes in This Release
This chapter explains the enhancements, new features, and bug
fixes in CDD/Plus Version 4.1.
1.1 Performance Enhancements
CDD/Plus Version 4.1 includes numerous improvements in the
way memory is managed. A large Rdb/VMS INTEGRATE may take
60% fewer page faults, and other operations should show
proportionate improvements.
If you do not see such improvements in INTEGRATE, you should
file an SPR stating the problem. See Chapter 7 for details of
the information you need to include with an SPR.
1.2 Security Enhancements
The following sections describe enhancements of security for
CDD/Plus Version 4.1.
1.2.1 Restricted Access to Dictionary/Directory System Files
In versions of the CDD before V3.4, all metadata (except
that created by the DMU CREATE/SUBDIRECTORY command)
was kept in a single file identified by the logical name
CDD$DICTIONARY. In order to allow users to define metadata
in the dictionary hierarchy, this file allowed WORLD WRITE
access-an alternative no longer acceptable in security-
conscious times.
New Features and Bug Fixes in This Release 1-1
To enhance security, CDD/Plus Version 4.1 defines a new
rights identifier, CDD$SYSTEM, in the VMS rights database.
It then uses access control lists (ACLs) to assign access
rights to this identifier while disallowing all other access.
The privileged image grants and revokes the identifier,
so only the dictionary code can access the files in the
dictionary/directory system.
CDDV.EXE is also installed as a privileged image to allow it
to access secure dictionary files.
You should not assign this identifier to any users. Do not
delete it or you will not be able to access any dictionary
files.
After you create a dictionary anchor directory, invoke the
ACL editor to add an ACL to the directory as follows:
(IDENTIFIER=CDD$SYSTEM,ACCESS=READ+WRITE+EXECUTE+DELETE+CONTROL)
(IDENTIFIER=[*,*],ACCESS=READ)
You should also add UIC-based protection:
(RWED,,,)
You can add UIC-based protection either by using the
/PROTECTION qualifier on the CREATE/DIRECTORY command or
later by a separate SET PROTECTION command.
With these ACLs, only dictionary files can be created in
a dictionary anchor directory. You can also modify the
protection of any existing dictionary anchor directories
to restrict access in this way.
Since CDD/Plus gives itself the identifier CDD$SYSTEM when
it creates journal and directory files, you do not need to
modify the ACLs of any other files in the anchor directory.
The installation procedure will protect the compatibility
dictionary and template.
The RDO utility can no longer directly access dictionary
databases. You should still be able to use RMU/BACKUP and
RMU/RESTORE if you invoke them from an account with system
privileges.
VMS utilities can no longer directly access dictionary
files unless you invoke them from an account with system
privileges.
1-2 New Features and Bug Fixes in This Release
A local copy of a remote definition does not include the ACL
from the remote node; the distributed copy is assigned the
default protection. Protecting a local field will not cause
it to be protected in a remote definition.
1.2.2 ACLs Supported for Directories
CDD/Plus Version 4.1 supports ACLs for directories. The
following CDO commands now allow an option of DIRECTORY:
_ DEFINE PROTECTION
_ DELETE PROTECTION
_ CHANGE PROTECTION
_ SHOW PROTECTION
_ SHOW PRIVILEGE
To allow directory ACLs to be created, changed, and read
through the call interface, the directory information buffer
has been modified to allow it to contain an ACL buffer. The
format of the modified directory information buffer is shown
in Section 6.4.3.
Directory protection works in a manner similar to VMS
directory protection:
_ SHOW privilege allows you to read the directory and its
contents.
_ CHANGE privilege allows you to define new objects and new
versions and to delete objects in the directory. You do
not need CHANGE privilege to change existing objects in
place.
_ DELETE privilege allows you to delete the directory if it
is empty.
1.3 LMF Support
CDD/Plus now supports DDSLA/LMF availability licensing in the
VAX CDD/Plus kit installation. CDO, and DMU.
New Features and Bug Fixes in This Release 1-3
1.4 ENTER and REMOVE Commands
The generic ENTER and REMOVE commands have been added to
CDD/Plus Version 4.1.
ENTER creates additional directory names for a dictio-
nary definition that already has one or more directory
entries. The syntax of the ENTER command is explained in
Section 6.2.2.
REMOVE removes additional directory names for a dictionary
definition that has more than one directory entry. The syntax
of the REMOVE command is explained in Section 6.2.3.
1.5 VERIFY Command Provides /COMPRESS Option
The VERIFY command now provides the /COMPRESS option to
call RDB$CHANGE_DATABASE to shrink the snapshot file to its
original size.
The /COMPRESS option is not a part of /ALL and can be used
only by itself. If you specify both /ALL and /COMPRESS,
/COMPRESS will not be used.
VERIFY/COMPRESS requires that you must be the only user of
the database at the time you issue the command. If you do not
have system privilege, CDD/Plus returns a no privilege error.
VERIFY/COMPRESS must also be the first command you enter
after starting a CDO session. If it is not, you will get an
error indicating there is a conflict with another user.
1.6 Using Remote Dictionaries
1.6.1 CDD$REMOTE Process Is Terminated
If a network error occurs during the remote access, the
remote process will now be terminated correctly on the remote
system based on system parameters for network processes. See
the DECnet documentation for details.
1.6.2 Logical Names and Remote Access
Do not use a logical name such as CDD$COMPATIBILITY to refer-
ence a remote dictionary. The results are unpredictable. For
example, the pathname NODE::CDD$COMPATIBILITY:FOO may not al-
ways return the results you expect. Use NODE::SYS$COMMON:[CDDPLUS]FOO
instead.
1-4 New Features and Bug Fixes in This Release
1.6.3 Proxy Accounts
When you access a data definition that depends on a
definition stored in a dictionary on a remote node, CDD/Plus
creates a process on the remote node. If the account that
is accessing the dictionary has proxy access to the remote
system, that proxy account will be used; otherwise, the
access takes place under control of the DECnet account.
Remote access works only with a proxy account or a DECnet
account that has all the process quotas listed in the VAX
CDD/Plus Installation Guide. The default DECnet account
does not have enough process quotas for remote dictionary
operations.
1.7 CDD/Plus Enables ASTs
CDD/Plus Version 4.1 requires that ASTs are enabled. If
CDD/Plus detects that ASTs are disabled, it will enable them
and then restore the previous state before returning to the
user.
1.8 Bug Fixes
This section describes bug fixes in CDD/Plus Version 4.1.
1.8.1 Corruption Bug Fixed
In several cases of corrupt dictionaries, a SHOW RECORD
command returned an "object not found" error. This bug has
been fixed.
If you created an object with a zero-length unstructured
attribute, and used that object in another object through a
grouping relationship, the second object became unreadable.
Most commonly this happened when you used the EDIT FIELD
command, created a description but didn't edit it (pressed
<RET> twice), and exited.
If you then created a record using the field and entered a
CDO SHOW RECORD command, you would see this error.
The field in question will show a 'value is unprintable'
error on a CDO SHOW FIELD for the field description.
Zero-length unstructured attributes are now treated as
missing and you are not allowed to create this kind of field.
CDD/Plus will correctly handle existing objects with this
problem, so new records created using an existing field will
work correctly.
New Features and Bug Fixes in This Release 1-5
You can read existing corrupt records, though reading such
records will be more inefficient than reading a good record.
You can also delete existing records, and copy them.
You cannot change a field that is used by a corrupted record.
If you try this, a BADSUBOBJ error will be signaled with the
name of the corrupted record. To correct the problem, copy
the record to a new location, delete the original, and try
the change again on the copy.
If the field was owned by multiple records, you will have to
repeat this procedure for each record that owns the field.
1.8.2 MISSING Clause in VALID IF Works Correctly
Formerly, a field definition such as the following generated
incorrect internal representations of the expression:
DEFINE FIELD Y VALID IF Y NOT MISSING.
An attempt to show field Y resulted in an invalid metadata
buffer error.
This problem has been fixed.
1.8.3 CDO Reporting of Syntax Errors Fixed
Formerly, if you made a syntax error in a CDO command and
used a tab character in that command, CDO did not reproduce
the line correctly to indicate the error. CDO now reproduces
the command line and puts the pointer in the right place.
1.8.4 Errors in CONVERT Command Fixed
Formerly, the scale of missing and initial values was not
converted correctly. Now it is.
DMU records containing structures are now handled correctly.
1.8.5 Infinite Loop on Syntax Error Fixed
Formerly, CDO would loop endlessly if you typed the following
syntactically incorrect CDO command:
CDO> DEFINE FIELD FOO DESCRIPTION="text"...
This bug has been fixed.
1-6 New Features and Bug Fixes in This Release
1.8.6 Bugs Fixed and Restrictions Lifted in DEFINE RMS_
DATABASE Command
DEFINE RMS_DATABASE can now use records with VALID IF and
MISSING values.
DEFINE RMS_DATABASE can now use keys that are not strings and
represents their data type correctly.
DEFINE RMS_DATABASE can now use index keys that are group
items.
DEFINE RMS_DATABASE now works correctly when the record's
directory name is different from its processing name.
DEFINE RMS_DATABASE allows you to define RMS databases that
use records that contain variants. CDD/Plus will determine
the correct record size. However, indices cannot be part of
the variant structure.
1.8.7 Text Data in SHOW GENERIC Prints Correctly
GENERIC attributes that have a text subtype are now printed
correctly by the SHOW GENERIC command.
1.8.8 Directory Corruption Fixed
Sometimes when changes to a large directory were rolled back,
the directory was left in an inconsistent state. This problem
has been fixed.
1.8.9 Comparison in Within Query Fixed
In programs that invoke the CDD/Plus call interface directly,
in a dictionary within query passed to CDD$FETCH_START,
queries that specified either a greater than or a less than
comparison with attributes whose values were dates or numeric
in value were not compared correctly. An example of such a
query is:
New Features and Bug Fixes in This Release 1-7
begin
dictionary_within_query V1.0
within_exp
query
and
eql
attribute CDD$PROTOCOL_TAG
literal LONGWORD 0 "2818549"
and
geq
attribute CDD$CREATED_TIME
literal DATE "01-MAY-1988 00:00:00.00"
lss
attribute CDD$CREATED_TIME
literal DATE "01-JUN-1988 00:00:00.00"
end
eoc
This within query requests all entities from the stream that
are fields and that were created during the month of May.
This problem did not occur in CDO because CDO does not
generate this kind of within buffer.
1.8.10 CDD$_NODICT Message Text Changed
The text of the CDD$_NODICT message has changed to:
%CDD-F-NODICT, CDD$DICTIONARY not defined as a system executive mode logical
If the logical name CDD$DICTIONARY is not defined as a system
executive mode logical name, you will receive this message
and you will not be able to access the dictionary. You should
never see this message unless you have redefined system
logical names.
1.8.11 CDD V3.4 Allows System Logical Names in Subdictionary
Specifications
In previous versions of CDD, within a DMU subdictionary file
specification, you could use only logical names from the
LNM$SYSTEM_TABLE table. With the release of CDD/Plus Version
4.0, you can use a logical name from any system logical name
table defined in LNM$SYSTEM.
1-8 New Features and Bug Fixes in This Release
2
________________________________________________________________
Notes about the Installation Procedure
2.1 System and Process Quotas
Before attempting to install CDD/Plus, you should make
sure your system has the quotas shown in the VAX CDD/Plus
Installation Guide. If any quotas are too low, the IVP or
your applications may fail with unexplained errors.
After installing CDD/Plus, make sure each process that will
be accessing the dictionary has the process quotas shown
in VAX CDD/Plus Installation Guide. Low quotas can cause
applications to run poorly, hang, or fail with unexplained
errors. For large applications, the page file quota may need
to be made even larger than the minimum shown.
2.2 Upgrading Protocols
CDD/Plus Version 4.1 introduces new protocols that an upgrade
process adds to existing dictionaries.
This upgrade process takes place in two separate steps:
1 The IVP procedure automatically upgrades the protocols in
the CDD$COMPATIBILITY dictionary.
2 At your convenience, you can upgrade the protocols
in the other dictionaries on your system using: CDO>
CONVERT/DICTIONARY [anchor-name]. However, until you
upgrade the protocols in your dictionaries, you cannot
use any CDO commands except for VERIFY.
When you use the CONVERT/DICTIONARY command, CDO asks you if
you are satisfied with the backup of your dictionary. If you
have not backed up your dictionary at this time, you should
answer NO and proceed to back up your dictionary. If you
are satisfied with the backup of your dictionary, you should
answer YES.
Notes about the Installation Procedure 2-1
After CDO successfully upgrades the protocols in your
dictionary, it responds with the following success message:
%CDO-I-UPGRADE_SUCCEED, dictionary successfully upgrade to new protocols
CDO>
If the protocols in a dictionary need to be upgraded, all
attempts to use this dictionary (except for the VERIFY
command) return the following error message asking you to
upgrade your dictionary:
-CDD-F-NO_AUTOMATIC_UP, upgrade protocols using CONVERT/DICTIONARY
CDO>
If you issue the VERIFY command and then the CONVERT/DICTIONARY
command in the same CDO session, CDO does not upgrade the
protocols in your dictionary, even though it displays the
success message.
You can use the VMS BACKUP Utility to back up your dictionary
only if no one else is using the dictionary. The following
command backs up a dictionary to a file:
$ BACKUP [anchor.dict1 ]*.* dict_feb1.bck /SAVE_SET
The following example shows how you might attempt to upgrade
the protocols in your dictionary:
1 Enter CDO.
2 Start to convert your dictionary.
3 If you do not have a backup of the dictionary, answer NO
at the prompt from the CONVERT command.
4 Exit from CDO and back up the dictionary, using the VMS
BACKUP Utility.
5 Enter CDO again and upgrade your dictionary using the
CONVERT/DICTIONARY command.
$ DICTIONARY OPERATOR
Welcome To CDO V1.1
The CDD/Plus V4.1 User Interface
Type HELP for help
CDO> CONVERT/DICTIONARY [-.DICT1]
are you satisfied with the backup of your dictionary, proceed? [Y/N] (N)N
CDO>EXIT
2-2 Notes about the Installation Procedure
$ DICTIONARY OPERATOR
Welcome To CDO V1.1
The CDD/Plus V4.1 User Interface
Type HELP for help
CDO> CONVERT/DICTIONARY [-.DICT1]
are you satisfied with the backup of your dictionary, proceed? [Y/N] (N)Y
%CDO-I-UPGRADE_SUCCEED, dictionary successfully upgrade to new protocols
CDO>
In the following example, a user accesses a dictionary
that needs to have its protocols upgraded. The DEFINE FIELD
command returns an error message stating that the protocols
need to be upgraded. Only the VERIFY command does not return
an error message, before you upgrade the protocols.
$ DICTIONARY OPERATOR
Welcome to CDO V1.1
The CDD/Plus V4.1 User Interface
Type HELP for help
CDO> SET DEF [-.DICT1]
CDO> DEFINE FIELD X.
%CDO-E-ERRDEFINE, error defining object
-CDD-F-NO_AUTOMATIC_UP, upgrade protocols using CONVERT/DICTIONARY
CDO>
2.3 Concealed Device Name Errors
If the SYSTEM account UAF entry does not define a default de-
vice, only a directory (for example, SYS$LOGIN = "[SYSMGR]"),
the CDD/Plus installation fails when it executes the command
DEFINE DICTIONARY CDD$TEMPLATE just prior to starting the
IVP. The error displayed is:
%RDMS-F-NOTSYSCONCEAL, non system concealed device name in file name
Rdb/VMS uses the SYS$LOGIN logical name when creating a
recovery-unit journal in the context of the CDO command.
Rdb/VMS tries to translate SYS$LOGIN_DEVICE and gets an error
when the definition does not include a device name.
If this error occurs, change the logical name to include a
device name and retry the installation.
Notes about the Installation Procedure 2-3
2.4 New Text in Installation Procedure
The following text (marked with bars) is additional
information that will appear as part of the output of the
installation procedure. The installation does not ask any
questions about the rights identifier.
.
.
.
************************************************************
The CDD/Plus V4.1 Installation Verification Procedure
(IVP) has been provided and can be run after the installation
is complete. It is invoked as follows:
$ @SYS$COMMON:[SYSTEST.CDD]CDDIVP
*************************************************************
| ************************************************************
|
| CDD$SYSTEM has been added to the rights database as a
| non-resource, non-dynamic identifier. All dictionary files
| are protected by this identifier.
|
| ************************************************************
|
.
.
.
There may be other changes to the installation procedure
text; check the VAX CDD/Plus Installation Guide for the text
of the current installation procedure.
2.5 Temporary Files Created in Right Location
The installation procedure for CDD/Plus version 4.0 did not
execute correctly if the installer set the process default
to the directory SYS$SYSROOT:[SYSTEST.CDD] when using a
system configured with a common system disk. The problem
occurred when the IVP tried to create a temporary file in the
directory SYS$SPECIFIC:[SYSTEST.CDD], which does not exist.
The installation has been changed to make sure the temporary
file is created in SYS$COMMON.
2-4 Notes about the Installation Procedure
2.6 Installing Known Images with SYSPRV
If you use the INSTALL utility to install a known image
with the qualifier /PRIVILEGED=(SYSPRV), you must install
the associated message file with the qualifier /SHARED.
Otherwise, the image cannot access its own message file. For
example, if you install DMU with SYSPRV, you should install
DMUEXC.EXE, DMU's message file, with the qualifier /SHARED.
2.7 Installation Failures on Old DATATRIEVE Sites
The installation procedure now checks for and deletes old
Rdb/VMS dummy files installed by DATATRIEVE V3.1 and earlier.
Installations should no longer fail with the "Image Ident
mismatch" error.
2.8 CDD/Plus with TEAMDATA
If you use TEAMDATA with CDD/Plus, you should run the
CDD/Plus startup procedure again after each time you run
the TEAMDATA shutdown procedure. The TEAMDATA shutdown
procedure shuts down a remote support file, RPC$SHARE.EXE,
that CDD/Plus requires to run.
2.9 Installing Compilers with CDD/Plus
When you install a VAX language, such as VAX C V.24-026, on
a VMS V5 system, you must have the following files installed
and started on the system:
RPC$SHARE.EXE
CDDSHR.EXE
RDBSHR.EXE
If the files listed are not installed and started on the
system, running a language compiler causes an "image file not
found" error and the installation verification procedure for
the compiler fails.
You can start these files by running the CDD startup
procedure:
$ @SYS$STARTUP:CDDSTRTUP
Notes about the Installation Procedure 2-5
2.10 DESKTOP-VMS Restriction
CDD/Plus Version 4.0 supports DESKTOP-VMS, with the following
restriction. The logical names CDD$COMPATIBILITY and
CDD$TEMPLATE, which define the location of the CDD/Plus
compatibility and template dictionaries, cannot be defined
to reside on the logical device SYS$COMMON. Therefore, you
cannot choose the default (press <RET>) for either of the
following questions, during the installation of VAX CDD/Plus.
* Enter the CDD/Plus root dictionary file's device and directory:
[SYS$COMMON:[CDDPLUS]]
* Enter the CDD/Plus template dictionary file's device and directory:
[SYS$COMMON:[CDD$TEMPLATE]]
Instead, respond to these questions with SYS$SYSDEVICE:[CDDPLUS]
and SYS$SYSDEVICE:[CDD$TEMPLATE], respectively, or another
device and directory of your choice. The following examples
illustrate valid answers to these two questions:
* Enter the CDD/Plus root dictionary file's device and directory:
[SYS$COMMON:[CDDPLUS]] SYS$SYSDEVICE:[CDDPLUS]<RET>
* Enter the CDD/Plus template dictionary file's device and directory:
[SYS$COMMON:[CDD$TEMPLATE]] SYS$SYSDEVICE:[CDD$TEMPLATE]<RET>
Or:
* Enter the CDD/Plus root dictionary file's device and directory:
[SYS$COMMON:[CDDPLUS]] DUA1:[CDDPLUS]<RET>
* Enter the CDD/Plus template dictionary file's device and directory:
[SYS$COMMON:[CDD$TEMPLATE]] DUA1:[CDD$TEMPLATE]<RET>
2-6 Notes about the Installation Procedure
3
________________________________________________________________
Known Problems and Restrictions in CDD/Plus Utilities
This chapter describes restrictions and known problems in the
CDD/Plus utilities, including CDO, DMU, CDDL, and the call
interface.
3.1 Known Problems and Restrictions in CDO
This section describes known problems and restrictions in the
CDO utility, including the call interface.
3.1.1 ENTER Command Does Not Accept FROM GENERIC Clause
The ENTER command returns a syntax error if you enter a
command in the form ENTER GENERIC xxx FROM GENERIC yyy. The
second GENERIC clause will not be accepted; only RECORD or
DATABASE are valid.
3.1.2 ENTER Restriction with RMS Databases
The ENTER FROM DATABASE clause of the ENTER command works
only for Rdb/VMS databases. It does not work for RMS
databases.
3.1.3 Restriction Verifying a Dictionary Without Privilege
If you use the VERIFY command to verify a dictionary, and you
do not have privilege to all dictionary directories, you will
receive a NOPRIV error and will not be able to verify those
areas of the dictionary to which you do not have access.
Verifying the dictionary requires read access; VERIFY/FIX may
also require write access.
Known Problems and Restrictions in CDD/Plus Utilities 3-1
3.1.4 Bit-Aligned Fields Aligned on Byte Boundary
If you use the CDO command DEFINE RECORD to specify BIT
alignment on a CDO field, the field is aligned on the next
byte boundary rather than the next bit boundary.
3.1.5 VAX PASCAL V3.4 Required for CDO Support
To include CDO definitions in VAX PASCAL programs, you must
have VAX PASCAL Version 3.4 or higher.
3.1.6 DATATRIEVE SHOW Does Not Display Source of CDO Record
Definitions
The DATATRIEVE command SHOW displays only record definitions
created through the DMU call interface or converted by
CDD/Plus Version 4.1 or later. It cannot display the source
of a record definition created by CDD/Plus Version 4.0. If
you try to display a record definition created by CDD/Plus
Version 4.0, you will receive a "Source text for record-name
not found in dictionary" error message from DATATRIEVE.
To display the CDO record definition, use the DATATRIEVE
command EXTRACT record-name or convert the record using
CDD/Plus Version 4.1 or later.
3.1.7 Restrictions for CDO Command CONVERT
The following sections explain restrictions for the CDO
command CONVERT.
3.1.7.1 Change of Processing Name on CONVERT If you
convert a DMU-format record definition that has a different
directory name from its processing name, then the converted
record in CDO format will not have its processing name
changed.
For example, the following CDDL statement shows a record,
YACHTS, that defines a record whose processing name is BOAT:
DEFINE RECORD YACHTS.
01 BOAT
.
.
.
If you then convert the record definition using the CDO
command CONVERT YACHTS YACHTS_NEW, the directory entry for
the new record is YACHTS_NEW, but the processing name is
still BOAT:
3-2 Known Problems and Restrictions in CDD/Plus Utilities
DEFINE RECORD YACHTS_NEW
01 BOAT
In contrast, the following CDDL statement shows a record
whose directory name and processing name are the same:
DEFINE RECORD YACHTS.
01 YACHTS
.
.
.
3.1.7.2 Converting Fields Defined by a DATATRIEVE COMPUTED
BY Expression in a DMU Record Definition When you convert
a record definition from DMU format to CDO format, any field
that is defined by a DATATRIEVE COMPUTED BY expression is not
included in the converted CDO record definition.
3.1.7.3 ACLs for DMU Definitions Are Not Converted When
you convert a record definition from DMU format to CDO
format, the CDO record receives a default access control
list.
3.1.7.4 Converting DMU Records Containing OCCURS...DEPENDING
Clause When you convert a DMU record definition that
contains an
OCCURS...DEPENDING ON clause, the name of the DMU record
definition that contains the item referred to in the
OCCURS...DEPENDING ON clause is not changed. If you change
the name of the DMU record definition that contains the
OCCURS...DEPENDING ON clause, the new CDO record cannot be
used with DATATRIEVE. This can be remedied by changing the
CDO record yourself to have the correct reference.
3.1.7.5 Some DMU Field Attribute Clauses Not Converted Not
all DMU field attribute clauses are supported in CDO record
definitions:
_ A CONDITION NAME clause that contains the EXTERNAL NAME
clause is not converted, and no informational message
is issued. However, CONDITION NAME clauses that do not
contain the EXTERNAL NAME clause are converted.
_ The VALID FOR DATATRIEVE IF clause is not converted,
although the field definition containing the clause is
converted. You receive an informational message telling
you that "some DTR attributes could not be converted".
Known Problems and Restrictions in CDD/Plus Utilities 3-3
3.1.7.6 Alignment Differences in DMU Record Definitions
Containing the ALIGNED Clause You can convert a DMU record
definition that contains an ALIGNED clause; however, in
the converted record definition, the alignment of the field
definition may be different from the alignment of the field
definition within the DMU record definition. Because DMU
stores bit offsets instead of alignment, a field definition
in a converted CDO record definition will be aligned on a
larger boundary if the field happens to fall on the larger
boundary.
For example, if the DMU record definition has a field
definition that is aligned on a word boundary, the field
definition may be aligned on a longword boundary in the CDO
record definition if the field falls on a longword boundary.
3.1.7.7 Directories Not Automatically Converted When you
try to convert a DMU-format definition to CDO format, and
the DMU-format definition is in a directory that exists only
in DMU, the CONVERT command will not convert the directory
automatically and will return an error.
The workaround is to create the CDO directory by hand using
the DEFINE command before you attempt to convert the other
definitions.
The following example illustrates the problem:
Welcome to CDO V1.1
The CDD/Plus V4.1 User Interface
Type HELP for help
CDO> set default cdd$top.corporate
CDO> dir
Directory NAD$DISK:[DICTIONARY]CORPORATE
ADDRESS_RECORD;1 RECORD
ALLTYPE_LIST;1 RECORD
ARRAY;1 RECORD
CREW_LIST;1 RECORD
EMPLOYEE_LIST;1 RECORD
STOCK_RECORD;1 RECORD
TEAM_LIST;1 RECORD
VARIANT;1 RECORD
VIRTUAL;1 RECORD
CDO> convert team_list converted.*
%CDO-E-ERRCOPY, error copying object
-CDD-E-DNF, directory NAD$DISK:[DICTIONARY]CORPORATE not found
3-4 Known Problems and Restrictions in CDD/Plus Utilities
3.1.8 Record Access Denied on Field Protection Violation
If a record contains a field that you do not have access to,
CDD/Plus denies you access to the entire record, rather than
returning "no privilege" messages for the individual fields
that you do not have access to. For example:
CDO> DEFINE RECORD EMPLOYEE.
cont> EMPLOYEE_NAME.
cont> SALARY_CLASS1.
cont> BADGE_NUMBER.
cont> END.
CDO> CHANGE PROTECTION FOR
cont> FIELD SALARY_CLASS1
cont> POSITION 1 ACCESS NOSHOW.
CDO> SHOW RECORD EMPLOYEE
%CDO-E-ERRSHOW, error displaying object
-CDD-E-NOREAD, no privilege to read dev:[directory]NFB$EMBED_NOPRIV.
SALARY_CLASS1;2
3.1.9 Specifying Full Path Names to Segments in DEFINE RMS_
DATABASE Command
The segment you specify in the SEGMENT clause of the DEFINE
RMS_DATABASE command must be a field within the record
specified by the RECORD clause. You must specify the full
path to the field in the record.
For example, the following command defines a record named
EMPLOYEES. The second command defines an RMS_DATABASE named
EMPLOYEE_STORAGE. Note that the SEGMENT clause in the second
command includes the full path to the LAST_NAME field.
Known Problems and Restrictions in CDD/Plus Utilities 3-5
CDO> DEFINE RECORD EMPLOYEES.
cont> EMPLOYEE_NAME STRUCTURE.
cont> LAST_NAME.
cont> FIRST_NAME.
cont> END EMPLOYEE_NAME STRUCTURE.
cont> ADDRESS.
cont> END.
CDO> DEFINE RMS_DATABASE EMPLOYEE_STORAGE.
cont> RECORD EMPLOYEES.
cont> FILE_DEFINITION
cont> ORGANIZATION INDEXED.
cont> KEYS.
cont> KEY 0
cont> SEGMENT LAST_NAME IN EMPLOYEE_NAME IN EMPLOYEES.
cont> END KEYS.
cont> END.
3.2 CDO Editor Restrictions
The following sections explain CDO editor restrictions.
3.2.1 CDO Editor Does Not Display Entities Without Processing
Names
The CDO editor lists entities that have the same directory
name and processing name. If an entity has no processing
name, the CDO editor does not list that entity in any of its
menus. If the processing name and the directory name differ,
the CDO editor displays the entity by its processing name,
and when you exit the editor, CDO creates a new entity with
the same directory name as the processing name.
3.2.2 CDO Editor Does Not Read the Missing Value Attribute
Correctly
The EDIT FIELD command does not read missing values
correctly, although it does store them correctly.
As a workaround, you can use the DEFINE FIELD or CHANGE FIELD
commands to define or change field definitions that have a
missing value.
3-6 Known Problems and Restrictions in CDD/Plus Utilities
3.2.3 CDO Editor Does Not Handle Expressions or Arrays
The CDO editor does not handle arrays or any attributes that
have expression buffers as values. It will not recreate these
attributes if you edit a definition that contains one of
these attributes.
3.3 Known Problems in the CDD/Plus Call Interface
The following section explains a known problem in the
CDD/Plus call interface.
3.3.1 CDD$FETCH_NEXT Returns an Extra Dot in Path Names of
DMU Directories
Directory information buffers returned by CDD$FETCH_NEXT will
contain an extra dot in the path name if the name returned is
a DMU directory under CDD$TOP.
For example, the following buffer contains an extra dot in
the path name between [CDDPLUS] and CDD$EXAMPLES:
13 directory_info_dsc V2.0
14 directory_name_list
45 directory_name "SYS$COMMON:[CDDPLUS].CDD$EXAMPLES"
46 end
51 type 2818049
56 size 0
58 dictionary_type "109"
59 eoc
3.4 CDDV Is a Privileged Image
CDDV.EXE is now an installed privileged image. This is done
because CDDV needs to gain access to secure dictionary files.
3.5 Known Problems and Restrictions in DMU and CDDL
The following sections describe restrictions and problems in
the DMU and CDDL utilities.
3.5.1 Wildcard Characters Not Allowed in Logical Names
You cannot use a logical name for a DMU pathname if that
logical name include wildcard characters anywhere in the
pathname, including the version. If the logical name includes
a wildcard character, you will receive a "node not found"
error.
Known Problems and Restrictions in CDD/Plus Utilities 3-7
3.5.2 CDDL Supports the VAX Language-Sensitive Editor (LSE)
Version 4.0 of CDDL supports the VAX Language-Sensitive
Editor (LSE). If the VAX Language-Sensitive Editor is
installed on your system, you can use it to help write,
compile, and debug CDDL definitions. The CDDL Language-
Sensitive Editor provides templates and menus to walk you
through CDDL options and syntax. It is especially useful for
users unfamiliar with CDDL.
To invoke the Language-Sensitive Editor, type LSEDIT at the
DCL prompt. The following command, for example, creates a
file ADDRESS.CDDL and displays a CDDL record definition
template to guide you through the process of describing a
CDDL record:
$ LSEDIT ADDRESS.CDDL
When LSE compiles your source definition, it expects a file
type of .CDDL. The CDDL compiler now recognizes both file
types .CDDL and .DDL.
The /DIAGNOSTICS qualifier with the CDDL command creates
a diagnostics file that lists errors occurring during
compilation. /DIAGNOSTICS is designed for use from the LSE
environment. /DIAGNOSTICS lists errors in a file that has
the default name of your definition file and the extension
.DIA. The diagnostic file is reserved for use by Digital. LSE
uses the diagnostic file to display diagnostic messages and
to position the cursor on the line and column where a source
error exists.
You cannot use /DIAGNOSTICS with CDDL/RECOMPILE.
For complete information on using LSE, see the VAX Language-
Sensitive Editor User's Guide.
3.5.3 Moving Subdictionary Files
When you move a DMU subdictionary file from one system to
another, make sure that the DMU subdictionary's path name
on the new system is the same as it was on the old system.
Because both DATATRIEVE and VAX DBMS use full path names by
default to locate data definitions, changing the path name of
a DMU subdictionary will produce errors when DATATRIEVE or
VAX DBMS tries to access definitions in that subdictionary.
Currently, CDD/Plus does not check to ensure that DMU
subdictionary path names remain unchanged.
3-8 Known Problems and Restrictions in CDD/Plus Utilities
3.5.4 Avoid the CDDL ALIGNED Clause in Template Records
You should not use the ALIGNED clause in template records.
When CDDL stores the template record, the position of an
aligned field is fixed within the record and is not changed
when the record is copied into another record definition.
Therefore, the newly created field may not align properly in
the new record definition.
DMU records created with the ALIGNED clause using previous
versions of CDDL may not have aligned fields properly. CDD
Version 3.1 corrected this alignment problem. However, if you
recompile the records using the ALIGNED clause, data already
stored will no longer match the recompiled data definition.
3.5.5 Copying and Renaming a Dictionary Object Protected by
a Password
In some cases, you are granted UPDATE and CONTROL privileges
for a DMU object only through a password. In this situation,
you cannot copy a version of another object with the same
name as the protected object to the directory containing
the protected object. This is because the DMU command COPY
provides no way to specify the protected object's password.
In a case where you are granted the UPDATE privilege for an
object only through a password, you cannot rename another
object as a new version of the protected object. The DMU
command RENAME provides no way to specify the protected
object's password.
3.5.6 Using /STAGE with the DMU RESTORE Command
If you specify the /STAGE qualifier with the DMU command
RESTORE, all changes remain in virtual memory until the
restoration is completed, which assures that either all or
none of the changes are made. Therefore, the size of the
portion you back up is limited by the amount of virtual
memory. By contrast, /NOSTAGE (the default) frees virtual
memory in stages, as each directory is restored.
The DMU commands BACKUP and RESTORE should be used to back
up only portions of the DMU dictionary hierarchy. DMU BACKUP
will back up only DMU definitions, not CDO definitions. Use
the DCL command BACKUP to back up an entire DMU dictionary
file or the entire CDD/Plus dictionary system.
Known Problems and Restrictions in CDD/Plus Utilities 3-9
3.5.7 Using a Wild Card with the DELETE/SUBDICTIONARY
Command
When you use a wild card character with the DELETE/SUBDICTIONARY
command, you can delete only 255 or fewer DMU subdictionar-
ies.
3.5.8 DMU DELETE * Aborts When a CDO Definition is Encountered
If you type "DELETE *" at the DMU> prompt, DMU can delete
only those definitions stored in DMU dictionaries. If it
encounters a CDO format definition while interpreting the
wild card path name, DMU aborts.
3.5.9 DMU LIST Does Not Alphabetize Contents of Rdb/VMS
Database
When you list the contents of an Rdb/VMS database with the
DMU command LIST, the field and relation definitions are not
sorted alphabetically.
3-10 Known Problems and Restrictions in CDD/Plus Utilities
4
________________________________________________________________
Known Problems Using Rdb/VMS with CDD/Plus
The following sections explain known problems using Rdb/VMS
with CDD/Plus.
4.1 Rolling Back Transactions to Avoid Inconsistent Metadata
When you invoke a database with the RDO statement INVOKE...PATHNAME
and an error occurs in either CDO or RDO, you must roll
back the current transaction. If the current transaction
is not rolled back, the dictionary and the database may be
inconsistent.
4.2 DEFINE RELATION FROM PATHNAME Cannot Rename Record
You cannot rename a record definition when you copy it
from the dictionary into an Rdb/VMS database using the RDO
statement DEFINE RELATION FROM PATHNAME.
The workaround is to define a CDO record with the name you
want for the relation in the Rdb/VMS database, then copy the
new CDO record definition into the database.
4.3 Avoid Copying Both Field Definition and Fields Based on
That Definition
If you have a CDO field definition that is based on another
CDO field definition, do not copy both fields into an Rdb/VMS
database. Include only the field definition that is based
on the original definition. RDO refuses to define a relation
from a CDD/Plus record that includes one or more fields based
on other fields in the same record. Such a definition is
rejected with the following error message:
%CDD-E-BOGLOBAL, global field based on global field in same database,
Known Problems Using Rdb/VMS with CDD/Plus 4-1
The workaround is to avoid definingCDD/Plus records that
include fields based on other fields in the same record; the
fields and record should be defined like this:
CDO> DEFINE FIELD X DATATYPE .....
CDO> DEFINE FIELD XP BASED ON X.
CDO> DEFINE FIELD Y BASED ON X.
CDO> DEFINE RECORD R.
CDO> XP.
CDO> Y.
CDO> END.
This will cause XP and Y to be defined as global fields in
the Rdb/VMS database; field X will not appear in the data
base.
4.4 Assigning Segmented String Attributes to Avoid New Versions
When you use CDO to define a field with a data type of
SEGMENTED STRING and plan to use the definition in an Rdb/VMS
database, assign the field a SEGMENT_LENGTH and SEGMENT_TYPE
value. Otherwise, Rdb/VMS will assign the default SEGMENT_
LENGTH and SEGMENT_TYPE values when you copy the field into
the database. Later, when you use the RDO statement INTEGRATE
to copy your database definitions into the dictionary, new
versions of these segmented string fields containing the
default Rdb/VMS SEGMENT_LENGTH and SEGMENT_TYPE values will
be created in the dictionary.
4.5 Restriction on Asterisk (*) Wild Card Character in SHOW
Command
You can use the asterisk (*) wild card character for the
field name or record name when you display fields or records
in an Rdb/VMS database definition. For example:
CDO> SHOW FIELD * FROM DATABASE PARTS
CDO> SHOW RECORD * FROM DATABASE PARTS
However, the asterisk wild card character must replace the
entire field name or record name. You cannot specify part
of the name and use the asterisk to identify the rest. The
following commands receive error messages:
4-2 Known Problems Using Rdb/VMS with CDD/Plus
CDO> SHOW FIELD A* FROM DATABASE PARTS
%CDO-E-ERRSHOW, error displaying object
-CDO-E-NOTFOUND, entity A* not found in dictionary
CDO> SHOW RECORD EMP_* FROM DATABASE PARTS
%CDO-E-ERRSHOW, error displaying object
-CDO-E-NOTFOUND, entity EMP_* not found in dictionary
4.6 Displaying Indices or Constraints
You can use the CDO command SHOW GENERIC to display indices
or constraints in an Rdb/VMS database definition. The syntax
for the command is:
SHOW GENERIC protocol-name entity-name FROM DATABASE name
For example, you can view the index RDB$REL_REL_ID_NDX using
this command:
CDO> SHOW GENERIC CDD$INDEX RDB$REL_REL_ID_NDX
cont> FROM DATABASE MY_RDB_DB
Definition of RDB$REL_REL_ID_NDX (Type : CDD$INDEX)
| CDD$UNIQUE_INDEX 1
| Contains CDD$INDEX_SEGMENT
| | *** name is unspecified *** (Type : CDD$DATA_VALUE)
CDO>
Known Problems Using Rdb/VMS with CDD/Plus 4-3
5
________________________________________________________________
Hints for Using CDD/Plus
This chapter contains hints for using CDD/Plus and for
diagnosing some common problems.
5.1 Compatibility of CDD/Plus V4.1 and V4.0
If you have two physical dictionaries on different nodes and
upgrade node A to run Version 4.1 but not node B, then:
_ Using definitions on a Version 4.0 node within a structure
defined on node A using Version 4.1 will not trigger a
protocol upgrade. Upgrading of protocols is done on the
local node.
_ The two dictionaries should work together because CDD/Plus
reads each object relative to the protocol on its system.
You should be able to use definitions on either node in
creating new structures on the other node.
_ You can perform operations that use existing structures.
However, you won't get new features, like directory
protection checking.
5.2 Assigning Resource Identifiers to Prevent Disk Quota Errors
A problem can occur if there are quotas set on the disk where
the compatibility dictionary or any CDO dictionary resides
when CDD/Plus users do not have disk quotas enabled for them
on the disk. When the users without disk quotas try to define
something in the compatibility dictionary, they receive the
following message:
Hints for Using CDD/Plus 5-1
CDO> DEFINE FIELD LAST_NAME
cont> DATATYPE IS TEXT
cont> SIZE IS 20.
%CDO-E-ERRDEFINE, An error occurred during the DEFINE command.
%CDD-F-NOJNLCRE, CDD/Plus was unable to create the journal file in
the given anchor
-RMS-E-OCRE, ACP FILE CREATE FAILED
To permit CDD/Plus users to access their dictionaries,
the system manager should assign resource identifiers to
control access to the CDD/Plus compatibility dictionary's VMS
directory. Follow these steps:
1 Define a rights identifier called CDD_USER.
UAF> ADD/ID CDD_USER/ATTR=RESOURCE
2 Grant the CDD_USER identifier whatever quota seems
reasonable on the compatibility dictionary's disk. It
should be generous, so that no problems with running out
of journal file space will occur.
3 Create the CDD/Plus compatibility dictionary's anchor
with the CDD_USER identifier as the owner. For ex-
ample, if your compatibility dictionary's anchor is
SYS$SYSROOT:[000000]CDDPLUS.DIR, execute the following
command:
$ SET FILE/OWNER=CDD_USER SYS$SYSROOT:[000000]CDDPLUS.DIR
4 Grant the CDD_USER identifier with the resource attribute
to all users of the dictionary.
UAF> GRANT/ID CDD_USER/ATTR=RESOURCE user-name
This procedure means that all the space allocated to the
dictionary files in the compatibility dictionary is owned by
the CDD_USER identifier. Therefore, no individual user needs
quotas on the system disk. The only people who can use the
dictionary are users with the CDD_USER identifier and users
with quotas explicitly set for them on the compatibility
dictionary's disk.
For more information about setting disk quotas, see the Guide
to VAX/VMS System Security.
5-2 Hints for Using CDD/Plus
5.3 Avoiding Locking Problems
Locking problems mayu occur when multiple database users
write to a dictionary. For example, when a user updates
metadata using RDO, the database indices that the user
accesses are locked against other users.
Locking problems may also occur when users access multiple
Rdb/VMS databases maintained in the same dictionary location.
To avoid these locking problems:
_ Place databases in separate dictionaries whenever possible
_ In RDO, use the COMMIT or ROLLBACK statement as often as
possible
_ Perform large updates, such as with the INTEGRATE and
RESTORE statements, as after-work batch jobs
5.4 Using RMU/BACKUP and RMU/RESTORE on CDO Dictionaries
If you used RMU/BACKUP and then RMU/RESTORE on a dictio-
nary, you can restore your dictionary directory using
VERIFY/REBUILD_DIRECTORY even if the dictionary directory
files no longer exist in the anchor directory. Note that
RMU/BACKUP only backs up the CDO part of the dictionary, not
the DMU part of the dictionary.
The security enhancements made to CDD/Plus Version 4.1
mean that RMU must be invoked from an account with system
privileges. Otherwise, RMU will not be allowed to access the
dictionary files.
If users are constantly accessing the dictionary and you
cannot back up the dictionary using the VAX/VMS BACKUP
utility, you can use the RMU/BACKUP command. You can also
use RMU/BACKUP to take advantage of RMU backup compression.
The following example backs up the CDD$DATABASE in the anchor
directory DIC$ANCHOR_DIR to a file called DICTIONARY:
$ RMU/BACKUP DIC$ANCHOR_DIR:CDD$DATABASE DICTIONARY
Make sure the directory where you want to restore your
dictionary database is empty, then restore the dictionary
database:
$ RMU/RESTORE/NOCDD DICTIONARY
Hints for Using CDD/Plus 5-3
After restoring the dictionary, you must use VERIFY/REBUILD_
DIRECTORY in CDO to recreate the dictionary's directory
system. For example:
$ DICTIONARY OPERATOR VERIFY/REBUILD_DIRECTORY DIC$ANCHOR_DIR
If you changed the location of the dictionary, during the
backup you must also use VERIFY/LOCATION:
$ DICTIONARY OPERATOR VERIFY/LOCATION DIC$ANCHOR_DIR
5-4 Hints for Using CDD/Plus
6
________________________________________________________________
Documentation Additions and Corrections
This chapter describes documentation errors and provides
additional corrected text for new functions.
6.1 Corrections to the Online HELP
6.1.1 Documentation of Error Messages
The CDO and CDD/Plus error messages are included in the
online help.
In addition, the CDO error messages are included in the file
SYS$HELP:CDDPLUS_MSG.DOC. The CDD/Plus error messages can be
found in the file SYS$HELP:CDO_MSG.DOC.
6.2 Additions to the VAX CDD/Plus Common Dictionary Operator
Reference Manual
The following sections describe additions to the VAX CDD/Plus
Common Dictionary Operator Reference Manual.
6.2.1 DIRECTORY Option on Protection Commands
The following commands now allow an option of DIRECTORY:
SHOW PROTECTION FOR DIRECTORY ...
DEFINE PROTECTION FOR DIRECTORY...
CHANGE PROTECTION FOR DIRECTORY...
DELETE PROTECTION FOR DIRECTORY...
SHOW PRIVILEGE FOR DIRECTORY...
Documentation Additions and Corrections 6-1
6.2.2 ENTER Command
The CDO ENTER command creates a directory entry for GENERIC
entities and specifies the directory name to be created. You
can also use the ENTER command to create additional directory
names for objects that already have a directory entry.
The directory name can identify a definition in a dictionary
on another node; if it does, a local copy will be maintained.
Syntax
The syntax of the ENTER command is:
ENTER { FIELD |
RECORD | name1 { from-clause |
GENERIC protocol_name } for-clause }
from-clause ::= FROM { RECORD |
DATABASE |
GENERIC protocol_name } name2
for-clause ::= FOR name3
Parameters
protocol_name
The name of the protocol on which the entity is based.
name1
The processing name of the entity you are entering in the
directory.
name2
The name of the entity that owns name1.
name3
The name to be created in the directory.
protocol-name
The name of the protocol on which the entity is based.
Usage Notes
The name-clause is required. Either the from-clause or for-
clause must be used to form a legal command but both cannot
be used in the same command.
The from-clause creates a directory name for an element that
is a member of a relationship, for example, a record in a
field.
6-2 Documentation Additions and Corrections
The for-clause creates a directory name for an element that
already has a directory name, for example, giving a record a
new name on a remote node.
The from-clause behaves as it did for CDD/Plus Version
4.0; the for-clause enters name1 (a directory name) in the
directory as an alternate name for name3 (a directory name).
6.2.3 REMOVE Command
The CDO REMOVE command removes a directory name from the
directory.
Syntax
The syntax of the REMOVE command is:
REMOVE { FIELD | RECORD | GENERIC protocol_name }
directory_name [ ,directory_name ]...
Parameters
protocol-name
The name of the protocol on which the entity is based.
directory_name
The name of the entity you want to remove from the directory.
Usage Notes
If the name specified by directory_name is the only directory
entry for the entity, and the entity does not have any
relationships to other existing objects, the directory entry
will not be removed and an error will be issued.
6.2.4 Enhanced Syntax for Expressions
Expressions have been enhanced to allow specification
of array subscripts in a field segment and more complex
comparisons of strings.
You can request case-sensitive comparisons of alphanumeric
strings:
[CASE_SENSITIVE] relational_operator
The relational_operator parameter can be one of the
following:
=
>\
GE
Documentation Additions and Corrections 6-3
<
LE
<>
MATCHING
BETWEEN
STARTING WITH
CONTAINING
The following options can be used where MISSING is valid in
expressions:
field_expression ALPHABETIC
field_expression LOWERCASE_ALPHABETIC
field_expression UPPERCASE_ALPHABETIC
field_expression EMPTY_FIELD
field_expression FULL_FIELD
field_expression NUMERIC
6.2.5 Enhancements to Edit Strings
The following new field attributes can be used in the CDO
DEFINE, CHANGE and EDIT FIELD commands wherever a field
attribute is valid:
[language] EDIT_STRING [IS] edit_string
language ::= { COBOL | DTR | PLI | RPG | [no]FORMS }
[language] INPUT_EDIT_STRING [IS] edit_string
language ::= { [no]FORMS }
The CDD$INPUT_EDIT_STRING attribute is created if no
language is specified. The CDD$INPUT_EDIT_STRING_FORMS
attribute is created if FORMS is specified.
DISPLAY_SCALE [IS] n
n is a signed integer and indicates the number of places
to shift the decimal point when the field is displayed. Negative
n indicates a shift of n places to the left, and positive n
indicates a shift of n places to the right.
DECIMAL_POINT IS quoted-string
quoted-string specifies the character(s) to be displayed
as the decimal point.
CURRENCY_SIGN IS quoted-string
quoted-string specifies the character(s) to be displayed
as the currency sign.
6-4 Documentation Additions and Corrections
JUSTIFIED { RIGHT | LEFT | CENTER | DECIMAL }
HELP_TEXT IS quoted-string
quoted-string specifies the help text to be associated
with the field.
DATATYPE [IS] { ALPHABETIC | TEXT | VARYING_STRING }
[SIZE IS] numeric-literal [CHARACTERS]
{ LOWERCASE | UPPERCASE | CASE_INSENSITIVE }
LOWERCASE, UPPERCASE and CASE_INSENSITIVE specify the
alphabetic case to be stored in the field. It can only be
associated with the ALPHABETIC, TEXT, and VARYING STRING
data types.
INPUT_VALUE { REQUIRED | OPTIONAL }
6.3 Corrections to the VAX CDD/Plus User's Guide
6.3.1 VALID IF Does Not Have an Underscore
On page 4-5, Table 4-1 lists the VALID_IF attribute. This
should read VALID IF (no underscore).
The error occurs again on page 2-8, Table 2-2.
6.3.2 DEFINE DATABASE Examples Show Wrong Syntax
In section 7.2.3 'Defining a New Database' the following
examples are given:
RDO> DEFINE DATABASE DEPT1
cont> IN 'CDD$TOP.PERSONNEL'.
RDO> DEFINE DATABASE DEPT2
cont> IN 'CDD$TOP.PERSONNEL'.
The commands should read as follows:
RDO> DEFINE DATABASE DEPT1
cont> IN 'CDD$TOP.PERSONNEL.DEPT1'.
RDO> DEFINE DATABASE DEPT2
cont> IN 'CDD$TOP.PERSONNEL.DEPT2'.
6.3.3 Copying Database Definitions
In Section 2.4 of the VAX CDD/Plus User's Guide, the word
"currently" should be removed from the second sentence after
the Note. The sentence should read:
You cannot use CONVERT to copy database definitions.
Documentation Additions and Corrections 6-5
6.3.4 Reference to Nonexistent Compiler
Page 7-24 in the chapter on "Using VAX Rdb/VMS with VAX
CDD/Plus", refers to a precompiler called RDML/ADA, which
does not exist.
6.3.5 INTEGRATE Statement Implies START_TRANSACTION
The first line, as follows, should be removed from both
examples on page 7-26:
RDO> START_TRANSACTION READ_WRITE
The last line in the CAUTION box and the last line on
page 7-26 should also be removed. The INTEGRATE statement
implies both an INVOKE DATABASE and a START_TRANSACTION
statement: the INTEGRATE FROM will fail if preceded by a
START_TRANSACTION statement.
6.3.6 Using VAX SQL
The following information for VAX SQL users should be added
to Chapter 7, Section 7.3.5, of the VAX CDD/Plus User's
Guide. The following text should be inserted after the
paragraph that ends, "For more information on RDML, see
the RDML Reference Manual and the VAX Rdb/VMS Guide to
Programming."
With VAX SQL, users can define, update, and query relational
databases. VAX SQL provides the following environments for
issuing SQL statements:
_ An interactive SQL utility
_ A precompiler that lets users embed SQL statements in Ada,
FORTRAN, PL/I, COBOL, or C programs
_ SQL module language modules containing SQL statements that
any language can call
_ A dynamic SQL interface that processes SQL statements
generated when the program runs
VAX SQL uses a single precompiler, SQL$PRE, to preprocess
programs written in Ada, C, COBOL, FORTRAN, and PL/I. The
precompiler lets you embed DML and DDL statements in programs
that will access Rdb/VMS databases.
6-6 Documentation Additions and Corrections
You can define symbols to invoke the precompiler for your
host language:
$ SADA :== $SYS$SYSTEM:SQL$PRE/ADA
$ SCC :== $SYS$SYSTEM:SQL$PRE/CC
$ SCOB :== $SYS$SYSTEM:SQL$PRE/COBOL
$ SFOR :== $SYS$SYSTEM:SQL$PRE/FORTRAN
$ SPLI :== $SYS$SYSTEM:SQL$PRE/PLI
You can invoke the precompiler in one of two ways:
_ Enter the input file name on the same line as the invoke
command.
_ Invoke the precompiler without an input file name and wait
for the INPUT prompt to enter the input file name.
For example:
$ SADA PROGRAMC
6.4 Corrections and Additions to the VAX CDD/Plus Call
Interface Manual
The following sections describe corrections and additions to
the the VAX CDD/Plus Call Interface Manual.
6.4.1 Directory Name Required When Requesting Information
from CDD$FETCH_START
When you call the CDD/Plus entry point CDD$FETCH_START and
pass a directory information buffer as a template for output
information, the buffer must contain a directory name tag.
The syntax for the directory information buffer shows the
directory name tag to be optional, but in this situation, the
tag is required. Specify a length of zero:
13 directory_info_dsc V2.0
14 directory_name_list
45 directory_name 0
46 end
59 eoc
Documentation Additions and Corrections 6-7
6.4.2 Comment Line Missing in RETRIEVE_RECORD.PAS
The example program in Section 3.4 is missing a line in the
comment block at the top of page 3-28. This comment line
described the EOC tag for the directory name buffer embedded
in the metadata buffer for the CDD$GET_ELEMENT call.
The code itself is correct; only the comment was wrong. The
comment block in question should look like this:
.
.
.
{ We are including a directory buffer because we want this information }
{ returned; therefore, we are not including a name in the template buffer. }
{ However, the buffer syntax does not give us the option of including the }
{ CDD$K_DIRECTORY_NAME tag without including a name so we specify a name }
{ with a length of zero on the input buffer. }
{ CDD$K_DIRECTORY_NAME | byte }
{ length | word }
{ CDD$K_END | byte }
{ Missing line here with CDD$K_EOC | byte }
{ CDD$K_ATTRIBUTE_LIST | byte }
{ CDD$K_ATTRIBUTE | byte }
{ CDD$K_ATT_PROCESSING_NAME | longword }
{ CDD$K_END | byte }
{ CDD$K_END | byte }
{ CDD$K_EOC | byte }
.
.
.
6.4.3 Directory Information Buffer Accepts ACL Buffer
The directory information buffer is a text descriptor
containing the name of the directory node whose ACL is to
be modified. It can now also optionally contain an ACL buffer
defining the ACL to be associated with the new directory
node.
The directory information buffer has the following format;
a vertical bar character in the left margin marks the new
syntax. See the VAX CDD/Plus Call Interface Manual for the
complete description of this descriptor and the ACL buffer.
6-8 Documentation Additions and Corrections
<directory_info> ::= <block_header>
[: <directory_name_list>
<ent_type>
<size>
<protocol_name>
<dictionary_type>
<physical_access>
| <directory_protection> :]
<block_terminator>
<directory_protection> ::=
{ CDD$K_PROTECTION <longword_length> <acl_buf_dsc> |
CDD$K_NOPROTECTION }
The CDD$K_PROTECTION clause defines directory protection
on a call to CDD$DEFINE_DIRECTORY and changes the directory
protection on a call to CDD$CHANGE_DIRECTORY.
CDD$K_PROTECTION 0 requests that directory protection
information be returned from a call to CDD$FETCH_START.
CDD$K_NOPROTECTION deletes directory protection on a call to
CDD$CHANGE_DIRECTORY. In a buffer returned from CDD$FETCH_
START, it means that no protection exists for the entity.
The CDD$CHANGE_DIRECTORY routine is new for CDD/Plus
Version 4.1. Its syntax and parameters are explained in
Section 6.4.7.
6.4.4 Modified Expression Buffer
The expression buffer has been enhanced to allow speci-
fication of array subscripts in a field segment and more
complex comparisons of strings. The modified buffer has a
major version number of 1 and a minor version number of 1.
The buffer has the following format. Only items changed
for CDD/Plus Version 4.1 are explained here; the rest of
the buffer is explained in the VAX CDD/Plus Call Interface
Manual. The new syntax is marked by a vertical bar character
at the left margin. (Vertical bars on the right are part
of the syntax notation, which is fully explained in the VAX
CDD/Plus Call Interface Manual.)
Documentation Additions and Corrections 6-9
<value_expression> ::= <arithmetic_expression> |
<dbkey_expression> |
| <field_expression> |
<from_expression> |
<function_expression> |
<literal_expression> |
<statistical_expression> |
<string_expression> |
<via_expression> |
<aggregate_function> |
<group_value> |
<via_table_expression> |
| <variable_expression>
<field_expression> ::=
CDD$K_EXP_ELEMENT_NAME [<context_variable>] <field_name> |
CDD$K_EXP_ELEMENT_ID [<context_variable>] <field_id>
<context_variable> ::=
CDD$K_EXP_CONTEXT <length> DEC Multinational Character Set string
<field_name> ::=
CDD$K_EXP_FIELD <field_segment> [<field_segment>]...
| <field_segment> ::=
| CDD$K_EXP_FIELD_SEGMENT <length> DEC Multinational Character Set string
| [ <array_specification> ]
|
| <array_specification> ::=
| CDD$K_EXP_ARRAY_SUBSCRIPT_LIST
| { CDD$K_EXP_ARRAY_SUBSCRIPT unsigned word } ...
<variable_expression> ::=
CDD$K_EXP_VARIABLE <variable_id>
<variable_id> ::= unsigned word
<expression_buffer> ::= <value_expression> |
| <boolean_expression> |
<RSE> |
<conditional_value_expression> |
<table>
| <boolean_expression> ::=
| [ <case_sensitive> ] <relational_expression> |
| <literal_expression> |
| <logical_expression> |
| <rse_expression>
6-10 Documentation Additions and Corrections
| <case_sensitive> ::=
| CDD$K_EXP_CASE_SENSITIVE
<relational_expression> ::=
CDD$K_EXP_COT <value_expression> <value_expression> |
CDD$K_EXP_EQL <value_expression> <value_expression> |
CDD$K_EXP_GTR <value_expression> <value_expression> |
CDD$K_EXP_GEQ <value_expression> <value_expression> |
CDD$K_EXP_INT <field_expression> <table_name> |
CDD$K_EXP_LSS <value_expression> <value_expression> |
CDD$K_EXP_LEQ <value_expression> <value_expression> |
CDD$K_EXP_MATCHES <value_expression> <value_expression> |
CDD$K_EXP_NEQ <value_expression> <value_expression> |
CDD$K_EXP_BETWEEN <value_expression> <value_expression>
<value_expression> |
CDD$K_EXP_STW <value_expression> <value_expression>
| <logical_expression> ::=
| CDD$K_EXP_ALPHABETIC <field_expression> |
| CDD$K_EXP_ALPHABETIC_LOWER <field_expression> |
| CDD$K_EXP_ALPHABETIC_UPPER <field_expression> |
| CDD$K_EXP_AND <boolean_expression> <boolean_expression> |
| CDD$K_EXP_EMPTY_FIELD <field_expression> |
| CDD$K_EXP_FULL_FIELD <field_expression> |
| CDD$K_EXP_MIS <value_expression> |
| CDD$K_EXP_NOT <boolean_expression> |
| CDD$K_EXP_NUMERIC <field_expression> |
| CDD$K_EXP_OR <boolean_expression> <boolean_expression> |
| CDD$K_EXP_XOR <value_expression> <value_expression>
The syntax elements valid in an expression buffer are
explained in the order in which they appear in the syntax
diagram. Only items new for CDD/Plus Version 4.1 are
explained.
_ CDD$K_EXP_ARRAY_SUBSCRIPT_LIST
This tag is used to signify that the subsequent infor-
mation will be a list of array subscripts for the field
whose description it follows.
_ CDD$K_EXP_ARRAY_SUBSCRIPT
This tag specifies that the word value following it
defines one subscript for an array. One of these tags
is used to define the subscript for each dimension of an
array.
_ CDD$K_EXP_CASE_SENSITIVE
Documentation Additions and Corrections 6-11
This tag is used to determine whether relational
comparisons are to be case-sensitive or case-insensitive.
If the tag is present, the comparisons are case-sensitive.
_ CDD$K_EXP_ALPHABETIC
This tag is used in a logical expression to determine if a
given field's value is entirely alphabetic.
_ CDD$K_EXP_ALPHABETIC_LOWER
This tag is used in a logical expression to determine if a
given field's value is entirely lower case alphabetic.
_ CDD$K_EXP_ALPHABETIC_UPPER
This tag is used in a logical expression to determine if a
given field's value is entirely uppercase alphabetic.
_ CDD$K_EXP_EMPTY_FIELD
This tag is used in a logical expression to determine if a
given field's value has not been entered.
_ CDD$K_EXP_FULL_FIELD
This tag is used in a logical expression to determine if a
given field's value fills the field's output size.
_ CDD$K_EXP_NUMERIC
This tag is used in a logical expression to determine if a
given field's value is numeric.
6.4.5 Modified Edit String Buffer
The block header of the edit string buffer has a type of
CDD$K_EXPRESSION_BUF_DSC. The major version number is 1 and
the minor version number is 1. The tags are each one word in
length. Data type values (i.e. DSC$K_DTYPE_...) are stored as
a word, not a byte. Revisions are marked by a vertical bar on
the left. (Vertical bars on the right are part of the syntax
notation, which is fully explained in the VAX CDD/Plus Call
Interface Manual.)
Format:
6-12 Documentation Additions and Corrections
<expression> ::=
<block_header>
<expression_buff>
<block_terminator>
<expression_buff> ::=
<value_expr> |
<boolean_expr> |
<RSE> |
<conditional_value_expr> |
<table>
<table> ::=
CDD$K_EXP_TABLE
{ <value_expr> | <boolean_expr> } ...
CDD$K_EXP_END
<value_expression> ::=
<arithmetic_expression> |
<dbkey_expression> |
<field_expression> |
<from_expression> |
<function_expression> |
<literal_expression> |
<statistical_expression> |
<string_expression> |
<via_expression> |
<aggregate_function> |
<group_value> |
<via_table_expression> |
<variable_expression>
<arithmetic_expression> ::=
CDD$K_EXP_ADD <value_expression> <value_expression> |
CDD$K_EXP_ASL <value_expression> <value_expression> |
CDD$K_EXP_ASR <value_expression> <value_expression> |
CDD$K_EXP_ONES_CMP <value_expression> |
CDD$K_EXP_DIV <value_expression> <value_expression> |
CDD$K_EXP_MUL <value_expression> <value_expression> |
CDD$K_EXP_NEG <value_expression> |
CDD$K_EXP_SUB <value_expression> <value_expression>
<dbkey_expression> ::=
CDD$K_EXP_DBKEY <length> <context_variable>
<length> ::= unsigned word
Documentation Additions and Corrections 6-13
<field_expression> ::=
CDD$K_EXP_ELEMENT_NAME [<context_variable>] <field_name> |
CDD$K_EXP_ELEMENT_ID [<context_variable>] <field_id>
<context_variable> ::=
CDD$K_EXP_CONTEXT <length> DEC MCS string
<field_name> ::=
CDD$K_EXP_FIELD <field_segment> [<field_segment>]...
| <field_segment> ::=
| CDD$K_EXP_FIELD_SEGMENT <length> DEC MCS string
| [ <array_specification> ]
|
| <array_specification> ::=
| CDD$K_EXP_ARRAY_SUBSCRIPT_LIST
| { CDD$K_EXP_ARRAY_SUBSCRIPT unsigned word } ...
<field_id> ::= unsigned word
<from_expression> ::=
CDD$K_EXP_FROM <RSE> <value_expression>
<function_expression> ::=
CDD$K_EXP_ABS <value_expression> |
CDD$K_EXP_EXP <value_expression> <value_expression> |
CDD$K_EXP_FAC <value_expression> |
CDD$K_EXP_MOD <value_expression> <value_expression> |
CDD$K_EXP_RND <value_expression> |
CDD$K_EXP_SGN <value_expression> |
CDD$K_EXP_SQRT <value_expression> |
<user_function_call>
<user_function_call> ::=
CDD$K_EXP_FUNCTION [<file_name>]
<function_name>
<parameter_list>
CDD$K_EXP_END
<file_name> ::=
CDD$K_EXP_FUNCTION_FILE <length> DEC MCS string
<function_name> ::=
CDD$K_EXP_FUNCTION_NAME <length> DEC MCS string
<parameter_list> ::= <value_expression> [...]
6-14 Documentation Additions and Corrections
<literal_expression> ::= CDD$K_EXP_LITERAL
{ DSC$K_DTYPE_B <scale> <fixed_point_value> |
DSC$K_DTYPE_BU <scale> <fixed_point_value> |
DSC$K_DTYPE_W <scale> <fixed_point_value> |
DSC$K_DTYPE_WU <scale> <fixed_point_value> |
DSC$K_DTYPE_L <scale> <fixed_point_value> |
DSC$K_DTYPE_LU <scale> <fixed_point_value> |
DSC$K_DTYPE_Q <scale> <fixed_point_value> |
DSC$K_DTYPE_QU <scale> <fixed_point_value> |
DSC$K_DTYPE_O <scale> <fixed_point_value> |
DSC$K_DTYPE_OU <scale> <fixed_point_value> |
DSC$K_DTYPE_F <floating_point_value> |
DSC$K_DTYPE_D <floating_point_value> |
DSC$K_DTYPE_G <floating_point_value> |
DSC$K_DTYPE_H <floating_point_value> |
DSC$K_DTYPE_FC <floating_point_value> |
DSC$K_DTYPE_DC <floating_point_value> |
DSC$K_DTYPE_GC <floating_point_value> |
DSC$K_DTYPE_HC <floating_point_value> |
DSC$K_DTYPE_NU <word_length> <scale> <numeric_byte_string> |
DSC$K_DTYPE_NL <word_length> <scale> <numeric_byte_string> |
DSC$K_DTYPE_NLO <word_length> <scale> <numeric_byte_string> |
DSC$K_DTYPE_NR <word_length> <scale> <numeric_byte_string> |
DSC$K_DTYPE_NRO <word_length> <scale> <numeric_byte_string> |
DSC$K_DTYPE_NZ <word_length> <scale> <numeric_byte_string> |
DSC$K_DTYPE_P <word_length> <scale> <numeric_byte_string> |
DSC$K_DTYPE_T <word_length> <byte_string> |
DSC$K_DTYPE_VT <word_length> <byte_string> |
DSC$K_DTYPE_V <longword_length> <byte_string>|
DSC$K_DTYPE_VU <word_length> <byte_string> |
DSC$K_DTYPE_ADT <binary_date_time> |
DSC$K_DTYPE_Z <word_length> <byte_string> |
CDD$K_DTYPE_ALPHABETIC <word_length> <byte_string> |
CDD$K_DTYPE_POINTER <4_byte_string> |
CDD$K_DTYPE_SEG_STRING <longword_length> <byte_string> }
<scale> ::= unsigned byte
Documentation Additions and Corrections 6-15
<statistical_expression> ::=
CDD$K_EXP_AVG <value_expression> [<RSE>] |
CDD$K_EXP_COUNT <RSE> |
CDD$K_EXP_MAX <value_expression> [<RSE>] |
CDD$K_EXP_MIN <value_expression> [<RSE>] |
CDD$K_EXP_SDV <value_expression> <RSE> |
CDD$K_EXP_TTL <value_expression> <RSE> |
CDD$K_EXP_RCT |
CDD$K_EXP_RTT <value_expression>
<string_expression> ::=
CDD$K_EXP_AS2 <field_expression> |
CDD$K_EXP_ASK <field_expression> |
CDD$K_EXP_CO2 <value_expression> <value_expression> |
CDD$K_EXP_CO3 <value_expression> <value_expression> |
CDD$K_EXP_CON <value_expression> <value_expression> |
CDD$K_FORMAT <field_expression> <edit_string> |
<substring_expression>
<substring_expression> ::=
CDD$K_EXP_SUBSTRING <source_string> <start_position>
<substring_length>
<source_string> ::= <value_expression>
<start_position> ::= <value_expression>
<substring_length> ::= <value_expression>
<edit_string> ::= (see CDD$K_EDIT_STRING_DSC buffer)
<via_expression> ::=
CDD$K_EXP_VIA <RSE> <value_expression> <value_expression>
<aggregate_function> ::=
<agg_count_fn> | <agg_stat_fn>
<agg_count_fn> ::=
CDD$K_EXP_AGG_COUNT [<filter>] CDD$K_EXP_END
<agg_stat_fn> ::=
<agg_stat> <value_expression> [<filter>] CDD$K_EXP_END
<agg_stat> ::=
CDD$K_EXP_AGG_AVERAGE |
CDD$K_EXP_AGG_MAX |
CDD$K_EXP_AGG_MIN |
CDD$K_EXP_AGG_TOTAL
<filter> ::= <project> | <select>
<project> ::=
CDD$K_EXP_PROJECT <count> <value_expression>...
6-16 Documentation Additions and Corrections
<select> ::=
CDD$K_EXP_BOOLEAN <boolean_expression>
<group_value> ::=
CDD$K_EXP_GROUP_VALUE <group_value_id>
<via_table_expression> ::=
CDD$K_EXP_VTB <value_expression> <table_name>
<variable_expression> ::=
CDD$K_EXP_VARIABLE <variable_id>
<variable_id> ::= unsigned word
| <boolean_expression> ::=
| [ <case_sensitive> ] <relational_expression> |
| <literal_expression> |
| <logical_expression> |
| <rse_expression>
|
| <case_sensitive> ::=
| CDD$K_EXP_CASE_SENSITIVE
<relational_expression> ::=
CDD$K_EXP_COT <value_expression> <value_expression> |
CDD$K_EXP_EQL <value_expression> <value_expression> |
CDD$K_EXP_GTR <value_expression> <value_expression> |
CDD$K_EXP_GEQ <value_expression> <value_expression> |
CDD$K_EXP_INT <field_expression> <table_name> |
CDD$K_EXP_LSS <value_expression> <value_expression> |
CDD$K_EXP_LEQ <value_expression> <value_expression> |
CDD$K_EXP_MATCHES <value_expression> <value_expression> |
CDD$K_EXP_NEQ <value_expression> <value_expression> |
CDD$K_EXP_BETWEEN <value_expression> <value_expression>
<value_expression> |
CDD$K_EXP_STW <value_expression> <value_expression>
Documentation Additions and Corrections 6-17
| <logical_expression> ::=
| CDD$K_EXP_ALPHABETIC <field_expression> |
| CDD$K_EXP_ALPHABETIC_LOWER <field_expression> |
| CDD$K_EXP_ALPHABETIC_UPPER <field_expression> |
| CDD$K_EXP_AND <boolean_expression> <boolean_expression> |
| CDD$K_EXP_EMPTY_FIELD <field_expression> |
| CDD$K_EXP_FULL_FIELD <field_expression> |
| CDD$K_EXP_MIS <value_expression> |
| CDD$K_EXP_NOT <boolean_expression> |
| CDD$K_EXP_NUMERIC <field_expression> |
| CDD$K_EXP_OR <boolean_expression> <boolean_expression> |
| CDD$K_EXP_XOR <value_expression> <value_expression>
<rse_expression> ::=
CDD$K_EXP_ANY <RSE> | CDD$K_EXP_UNQ <RSE>
<RSE> ::=
CDD$K_EXP_RSE <relation_count>
{ <context_variable> <RSE_source> }...
[ <rse_clause>... ]
CDD$K_EXP_END
<RSE_source> ::=
CDD$K_EXP_RELATION <RDB relation name> |
CDD$K_EXP_RELATION_ID <RDB relation_id> |
CDD$K_EXP_DOMAIN <DATATRIEVE domain name> |
CDD$K_EXP_COLLECTION <name> |
CDD$K_EXP_LIST <name> |
CDD$K_EXP_RECORD <name> |
CDD$K_EXP_MERGE <merge_list> |
CDD$K_EXP_AGGREGATE <aggregate_exp>
<merge_list> ::= <count> <merge_item>...
<merge_item> ::= <RSE> <map>
<aggregate_exp> ::= <RSE> [<grouping>] <map>
<grouping> ::= CDD$K_EXP_GROUP_BY <count> <grouping_exp>...
<grouping_exp> ::=
CDD$K_EXP_GROUP_VALUE <group_value_id> <value_expression>
<map> ::=
CDD$K_EXP_MAP <count> {<logical_field> <value_expression>}...
6-18 Documentation Additions and Corrections
<logical_field> ::= CDD$K_EXP_MAP_FIELD <length> DEC MCS string
<group_value_id> ::= unsigned byte
<count> ::= unsigned byte
<relation_count> ::= unsigned byte
<name> ::= <length> DEC MCS string
<relation_id> ::= unsigned byte
<context_variable> ::= <length> DEC MCS string
<rse_clause> ::=
CDD$K_EXP_ALL |
CDD$K_EXP_FIRST <field_expression> |
CDD$K_EXP_BOOLEAN <boolean_expression> |
CDD$K_EXP_REDUCE <reduction_count> <field_expression>... |
CDD$K_EXP_SORT <item_count> <sort_item>...
<reduction_count> ::= unsigned byte
<item_count> ::= unsigned byte
<sort_item> ::=
[ CDD$K_EXP_ASCENDING | CDD$K_EXP_DESCENDING ]
<field_expression>
<conditional_value_expression> ::=
CDD$K_EXP_COND <if-expression>
<then-expression>
[<else-expression>]
<if-expression> ::= CDD$K_EXP_IF <boolean_expression>
<then-expression> ::= CDD$K_EXP_THEN <value_expression>
<else-expression> ::= CDD$K_EXP_ELSE <value_expression>
The syntax elements valid in an edit string buffer are
explained in the order in which they appear in the syntax
diagram. Only items new for CDD/Plus Version 4.1 are
explained. Refer to the VAX CDD/Plus Call Interface Manual
for explanations of the other items.
_ CDD$K_EXP_ARRAY_SUBSCRIPT_LIST
This tag signifies that the subsequent information will be
a list of array subscripts for the field whose description
it follows.
_ CDD$K_EXP_ARRAY_SUBSCRIPT
This tag specifies that the word value following it
defines one subscript for an array. One of these tags
is used to define the subscript for each dimension of an
array.
_ CDD$K_EXP_CASE_SENSITIVE
Documentation Additions and Corrections 6-19
This tag is used to determine whether or not relational
comparisons are to be done case-sensitive or case-
insensitive. If the tag is present, the comparisons are
case-sensitive.
_ CDD$K_EXP_ALPHABETIC
This tag is used in a logical expression to determine if a
given field's value is entirely alphabetic.
_ CDD$K_EXP_ALPHABETIC_LOWER
This tag is used in a logical expression to determine if a
given field's value is entirely lowercase alphabetic.
_ CDD$K_EXP_ALPHABETIC_UPPER
This tag is used in a logical expression to determine if a
given field's value is entirely uppercase alphabetic.
_ CDD$K_EXP_EMPTY_FIELD
This tag is used in a logical expression to determine if a
given field's value has not been entered.
_ CDD$K_EXP_FULL_FIELD
This tag is used in a logical expression to determine if a
given field's value fills the field's output size.
_ CDD$K_EXP_NUMERIC
This tag is used in a logical expression to determine if a
given field's value is numeric.
6-20 Documentation Additions and Corrections
CDD$GET_ELEMENT
________________________________________________________________
CDD$GET_ELEMENT
________________________________________________________________
6.4.6 New Parameter to CDD$GET_ELEMENT
A new optional parameter has been added to the CDD$GET_
ELEMENT call to return the full length of the output metadata
buffer. Through this parameter, layered products will be
able to determine the real length when a static descriptor
is passed and, in the case of an overflow, the size of the
remaining portion of the buffer.
Format
CDD$GET_ELEMENT exception_vector, element_handle,
metadata_buf_in_dsc, metadata_buf_out_dsc,
metadata_buf_out_size
New Parameter
metadata_buf_out_size
VMS longword_unsigned
usage:
type: longword (unsigned)
access: modify
mechanism: by reference
The address of a longword to be set to the length of the
entire output metadata buffer.
Documentation Additions and Corrections 6-21
CDD$GET_ELEMENT
Usage Notes
If the entire buffer can be copied into the buffer described
by the metadata_buf_out_dsc parameter, this parameter's value
will be the length of the portion of the buffer that was
used.
If the entire buffer cannot fit in the output metadata
buffer, the size will reflect the length of the entire
buffer. The metadata_buf_out_dsc parameter's length will
be the length of the portion of the buffer that has been
returned. Subsequent calls to CDD$GET_ELEMENT can be made to
get the remainder of the buffer.
If the metadata_buf_out_size parameter is specified on a
subsequent call, the value will be the length of the entire
buffer minus the length of any portions that were returned
in previous calls to CDD$GET_ELEMENT. The length of the
portion of the buffer returned in a given call will always be
included in this length.
6-22 Documentation Additions and Corrections
CDD$CHANGE_DIRECTORY
________________________________________________________________
CDD$CHANGE_DIRECTORY
________________________________________________________________
6.4.7 CDD$CHANGE_DIRECTORY Routine Added
Change the ACL for a node in a directory hierarchy.
Format
CDD$CHANGE_DIRECTORY exception_vector, session_handle,
directory_info_buffer
Returns
VMS condition_value
usage:
type: longword (unsigned)
access: write only
mechanism: by value
Longword condition value. All CDD/Plus callable routines
return (by immediate value) a condition value in R0.
Condition values that can be returned by this service
include:
SS$_NORMAL Operation completed successfully.
Arguments
exception_vector
VMS message_vector
usage:
Documentation Additions and Corrections 6-23
CDD$CHANGE_DIRECTORY
type: array of 20 longwords
access: write only
mechanism: by reference
An array of 20 longwords conforming to the VMS exception
vector format.
session_handle
VMS quadword_unsigned
usage:
type: quadword (unsigned)
access: read only
mechanism: by reference
Unsigned quadword uniquely identifying the dictionary session
for which directory ACLs are modified. This value is assigned
by CDD$START_SESSION.
directory_info_buffer
VMS unstructured
usage:
type: text
access: read only
mechanism: by descriptor (static or dynamic)
A text descriptor containing the name of the directory node
whose ACL is to be modified and the ACL buffer defining
the ACL to be associated with the directory node. See
Section 6.4.3 for the description of this buffer.
6-24 Documentation Additions and Corrections
CDD$DELETE_DIRECTORY
________________________________________________________________
CDD$DELETE_DIRECTORY
________________________________________________________________
6.4.8 CDD$DELETE_DIRECTORY Routine Missing from the VAX
CDD/Plus Call Interface Manual
The description of the CDD$DELETE_DIRECTORY entry point was
accidentally omitted from the VAX CDD/Plus Call Interface
Manual. The following information should appear in Chapter 4,
following page 4-28.
The CDD$DELETE_DIRECTORY routine deletes a directory node. If
any objects exist in the directory, an error is returned.
Format
CDD$DELETE_DIRECTORY exception_vector, session_handle,
directory_info_buffer
Returns
VMS usage: condition value
type: longword (unsigned)
access: write only
mechanism: by value
Longword condition value. All CDD/Plus callable routines
return (by immediate value) a condition value in R0.
Condition values that can be returned by this service
include:
SS$_NORMAL Operation completed successfully.
Documentation Additions and Corrections 6-25
CDD$DELETE_DIRECTORY
Arguments
exception_vector
VMS usage: message_vector
type: array of 20 longwords
access: write only
mechanism: by reference
An array of 20 longwords conforming to the VMS exception
vector format.
session_handle
VMS usage: quadword_unsigned
type: quadword (unsigned)
access: read only
mechanism: by reference
An unsigned quadword that uniquely identifies a dictionary
session. This value is assigned by CDD$START_SESSION.
directory_info_buffer
VMS usage: unstructured
type: text
access: read only
mechanism: by descriptor (static or dynamic)
A text descriptor containing the name of the directory path
to delete. The format of this descriptor can be found in
Section 5.3 in VAX CDD/Plus Call Interface Manual.
6-26 Documentation Additions and Corrections
CDD$DELETE_DIRECTORY
Usage Notes
If there are any entries in the named directory node, an
error is returned.
Documentation Additions and Corrections 6-27
CDD$ERASE_DIRECTORY_ENTRY
________________________________________________________________
CDD$ERASE_DIRECTORY_ENTRY
________________________________________________________________
6.4.9 CDD$ERASE_DIRECTORY_ENTRY Routine
The CDD$ERASE_DIRECTORY_ENTRY routine has been added to the
call interface. This routine removes a name from a directory,
but does not delete the associated dictionary element.
Format
CDD$ERASE_DIRECTORY_ENTRY exception_vector, element_handle,
directory_info_buffer
Returns
VMS usage: condition_value
type: longword (unsigned)
access: write only
mechanism: by value
Longword condition value. All CDD/Plus callable routines
return (by immediate value) a condition value in R0.
Condition values that can be returned by this service
include:
SS$_NORMAL Operation completed successfully.
Arguments
exception_vector
VMS usage: message_vector
6-28 Documentation Additions and Corrections
CDD$ERASE_DIRECTORY_ENTRY
type: array of 20 longwords
access: write only
mechanism: by reference
An array of 20 longwords conforming to the VMS exception
vector format.
element_handle
VMS usage: quadword_unsigned
type: quadword (unsigned)
access: read only
mechanism: by reference
An unsigned quadword identifying the dictionary element for
which CDD/Plus deletes the directory entry.
directory_info_buffer
VMS usage: unstructured
type: text
access: read only
mechanism: by descriptor (static or dynamic)
A buffer identifying the directory entry CDD/Plus deletes.
For a complete description of directory information buffers,
see the VAX CDD/Plus Call Interface Manual.
Documentation Additions and Corrections 6-29
CDD$ERASE_DIRECTORY_ENTRY
Usage Notes
Because the CDD/Plus dictionary and directory systems are
separate, you can delete directory information without
deleting metadata. This call deletes no metadata.
If you try to delete the only directory entry for a
particular dictionary element, and that element is not the
member of some relationship, CDD/Plus does not delete the
directory entry and returns an error to your program. Your
dictionary remains unchanged.
6-30 Documentation Additions and Corrections
7
________________________________________________________________
Guidelines for Submitting an SPR
If you find a CDD/Plus software error, please submit a
Software Performance Report (SPR) to Digital SPR Administration
if you are eligible for that service. Your SPR should include
the following information:
_ A statement of the problem.
_ A VMS BACKUP of the dictionaries in which the error
occurred.
_ A hard copy of all error messages, including any traceback
information for bugchecks.
_ The exact sequence of commands issued that caused the
problem.
If you want to submit machine-readable information, please
include all necessary files to compile and link your program.
You should also include a command procedure (or instructions)
on how to link the program.
Guidelines for Submitting an SPR 7-1
___________________________________________________________
Index
A Alignment (cont'd.)
Access Control Lists in CDDL template records,
See ACLs 3-9
ACLs problem in CDO bit
for converted records, alignment, 3-2
3-3 Anchor directory
for dictionary anchors, ACLs for, 1-2
1-2 ASTs, 1-5
for directories, 1-3 Attributes
call interface support for segmented string
, 1-3 fields, 4-2
in call interface B
CDD$CHANGE_DIRECTORY BADSUBOBJ error, 1-6
routine, 6-23 BASED ON fields, 4-1
in directory information Bit alignment in CDO fields
buffers, 6-8 , 3-2
ALIGNED clause BOGLOBAL error message,
in CDDL template records, 4-1
3-9 Buffers
Alignment dictionary within query,
differences between DMU 1-7
and CDO, 3-4
Index-1
Buffers (cont'd.) CDD$REMOTE process
directory information termination, 1-4
extra dot in path CDD$SYSTEM identifier
names, 3-7 with RDO utility, 1-2
directory name with RMU utility, 1-2
documentation error in with VMS utilities, 1-2
syntax of, 6-7 CDD$SYSTEM rights
C identifier, 1-2
in installation procedure
Callable routines , 2-4
CDD$ERASE_DIRECTORY_ CDD$_NODICT message, 1-8
ENTRY, 6-28 CDDL
CDD$CHANGE_DIRECTORY alignment in template
routine, 6-23 records, 3-9
CDD$COMPATIBILITY LSE support, 3-8
upgrading, 2-1 CDDV.EXE
CDD$DELETE_DIRECTORY installed as a privileged
routine, 6-25 image, 1-2
CDD$DICTIONARY logical name CDD_USER rights identifier,
CDD$_NODICT message, 1-8 5-2
protection, 1-1 CDO editor
CDD$ERASE_DIRECTORY_ENTRY expressions in, 3-7
routine, 6-28 missing values, 3-6
description of, 6-28 processing name differs
CDD$FETCH_NEXT from directory name,
extra dot in path names, 3-6
3-7 CDO record definitions
CDD$FETCH_START routine with SHOW command (DTR),
directory information 3-2
buffer CDO utility
documentation errors syntax errors fixed, 1-6
in syntax of, 6-7 CHANGE FIELD command
within queries, 1-7 with missing values, 3-6
CDD$GET_ELEMENT routine CHANGE PROTECTION command,
size parameter added, 1-3
6-21
Index-2
CHANGE PROTECTION command D
(cont'd.) Data types
syntax of DIRECTORY of keys in DEFINE RMS_
option, 6-1 DATABASE command, 1-7
Comparisons DEFINE DATABASE command
case sensitive, 6-3 documentation error, 6-5
Compressing dictionary DEFINE FIELD command
snapshot files, 1-4 with missing values, 3-6
Concealed device names, DEFINE PROTECTION command,
2-3 1-3
CONDITION NAME clause syntax of DIRECTORY
conversion of, 3-3 option, 6-1
Constraints DEFINE RECORD command
displaying, 4-3 bit alignment problem,
CONVERT command 3-2
ACLs for converted DEFINE RELATION FROM
records, 3-3 PATHNAME command (RDO),
alignment in record 4-1
definitions, 3-4 DEFINE RMS_DATABASE command
COMPUTED BY expressions, data type of keys, 1-7
3-3 differing directory and
converting DMU structures processing names, 1-7
, 1-6 group items as index
differing directory and keys, 1-7
processing names, 3-2 MISSING clause, 1-7
field attributes in, 3-3 specifying segments, 3-5
OCCURS...DEPENDING clause VALID IF clause, 1-7
, 3-3 variants in, 1-7
scale of missing and DELETE/SUBDICTIONARY
initial values, 1-6 command
VALID FOR DATATRIEVE IF wild cards in, 3-10
clause, 3-3 DELETE PROTECTION command,
with database definitions 1-3
, 6-5 syntax of DIRECTORY
option, 6-1
Deleting
Index-3
Deleting (cont'd.) Directory names (cont'd.)
directory entries, 6-28 DEFINE RMS_DATABASE
in DMU command, 1-7
subdictionaries, 3-10 deleting, 6-3
wild card characters, in CDO editor when
3-10 processing name differs
orphaned elements, 6-30 , 3-6
Dictionary elements Disk quota errors
deleting reducing, 5-1
directory entry for, DMU field attributes
6-28 not converted, 3-3
Directories, 1-7 DMU objects and passwords,
Directory corruption 3-9
problem fixed, 1-7 DMU RESTORE command
Directory entries /STAGE qualifier, 3-9
deleting, 6-28 DMU subdictionaries
Directory information logical names in, 1-8
buffers moving, 3-8
ACL buffer for, 6-8 wild cards when deleting,
ACL buffers, 1-3 3-10
documentation error in Documentation errors
syntax of, 6-7 CDD$DELETE_DIRECTORY
extra dot in path names, routine, 6-25
3-7 DEFINE DATABASE syntax,
input 6-5
to CDD$DELETE_ in comments of sample
DIRECTORY, 6-26 programs, 6-8
to CDD$DELETE_ in directory information
DIRECTORY_ENTRY, buffer syntax, 6-7
6-24 VALID IF clause, 6-5
to CDD$ERASE_ E
DIRECTORY_ENTRY,
6-29 EDIT FIELD command
Directory names expressions in, 3-7
adding, 6-2 with missing values, 3-6
CONVERT command, 3-2 Edit strings
Index-4
Edit strings (cont'd.) EXTERNAL NAME clause
enhancements, 6-4 conversion of, 3-3
Element handles F
input
CDD$ERASE_DIRECTORY_ Field definitions
ENTRY, 6-29 no privilege to read,
ENTER command, 1-4 3-5
FROM GENERIC restriction, I
3-1
syntax of, 6-2 Indices
with RMS databases, 3-1 displaying, 4-3
ERRDEFINE error, 5-1 locking problems with,
Errors 5-3
about concealed device Installation problems
names, 2-3 checking system quotas,
access denied, 3-5 2-1
BADSUBOBJ, 1-6 concealed device name
BOGLOBAL, 4-1 errors, 2-3
caused by disk file ident mismatch failures,
quotas, 5-1 2-5
defining journal file, Installation procedure
5-1 ident mismatch failures,
documentation of, 6-1 2-5
NODICT text change, 1-8 new text, 2-4
no privilege, 1-4 SYSPRV, 2-5
on SHOW FIELD command, temporary files, 2-4
1-5 INTEGRATE command
on SHOW RECORD command, performance improvements,
1-5 1-1
value is unprintable, J
1-5
Expression buffers Journal files, errors
enhancements, 6-9 defining, 5-1
Expressions
enhanced syntax, 6-3 K
in CDO editor, 3-7 Keys
Index-5
Keys (cont'd.) NOPRIV error
for indexes in DEFINE during VERIFY command,
RMS_DATABASE command, 3-1
1-7 NOTSYSCONCEAL error, 2-3
L O
LIST command OCCURS...DEPENDING clause
sorting problem, 3-10 conversion of, 3-3
LMF support, 1-3 Orphans
Lock conflicts and deleting directory
reducing, 5-3 entries, 6-30
Logical names P
CDD$DICTIONARY, 1-1, 1-8
concealed device names, Passwords for DMU objects,
2-3 3-9
in subdictionary Path names
specifications, 1-8 extra dot in, 3-7
M in SEGMENT clause, 3-5
when moving DMU
Messages subdictionaries, 3-8
CDD$_NODICT, 1-8 Performance enhancements,
no privilege to read 1-1
record definition, 3-5 Processing names
Missing values in CONVERT command, 3-2
converting scale, 1-6 in DEFINE RMS_DATABASE
in CDO editor, 3-6 command, 1-7
in DEFINE RMS_DATABASE not displayed in CDO
command, 1-7 editor, 3-6
in EDIT FIELD command, Process quotas, 2-1
3-6 Protection
in VALID IF clause, 1-6 See ACLs
with DEFINE or CHANGE See security
FIELD commands, 3-6 Protocols
N upgrading, 2-1
CDD$COMPATIBILITY,
NOJNLCRE error, 5-1 2-1
Index-6
Protocols (cont'd.) Resource identifiers
upgrading a dictionary, (cont'd.)
2-1 to prevent disk quota
Q errors, 5-1
Rights identifiers
Query buffers CDD_USER, 5-2
within expressions, 1-7 RMS databases
Quotas not allowed with ENTER
disk, 5-1 FROM DATABASE, 3-1
Quotas, system and process, RMU utility
2-1 and new protection, 1-2
R to back up and restore
CDO dictionaries, 5-3
Rdb/VMS databases Rolling back after errors,
displaying indices and 4-1
constraints, 4-3 S
not sorted with LIST
command, 3-10 Security
using fields based on CDD$SYSTEM rights
another field, 4-1 identifier, 1-2
RDO utility directory protection,
and new protection, 1-2 1-3
reducing lock conflicts, enhancements, 1-1
5-3 installing privileged
rolling back after errors images, 2-5
, 4-1 protecting anchor
Record definitions directories, 1-2
alignment in, 3-4 protecting compatibility
no privilege to read, dictionary, 1-2
3-5 protecting template
Remote dictionary access, dictionary, 1-2
1-4 protection for
REMOVE command, 1-4 directories, 6-1
syntax of, 6-3 restrictions during
Renaming records, 4-1 VERIFY command, 3-1
Resource identifiers with RDO utility, 1-2
Index-7
Security (cont'd.) Text attributes (cont'd.)
with RMU, 1-2 in SHOW GENERIC command,
with VMS utilities, 1-2 1-7
SEGMENT clause U
specifying path names in,
3-5 Unexplained errors due to
Segmented strings, 4-2 low process quotas, 2-1
Session handles Upgrading
input a dictionary, 2-1
CDD$DELETE_DIRECTORY, V
6-26
to, 6-24 VALID IF clause
SHOW command documentation errors,
wild cards in, 4-2 6-5
SHOW command (DTR) for DATATRIEVE, 3-3
with CDO record in DEFINE RMS_DATABASE
definitions, 3-2 command, 1-7
SHOW FIELD errors, 1-5 missing values, 1-6
SHOW GENERIC command Variants
displaying indices and in DEFINE RMS_DATABASE
constraints, 4-3 command, 1-7
text attributes in, 1-7 VAX DATATRIEVE
SHOW PRIVILEGE command, displaying record
1-3 definition sources,
SHOW PROTECTION command, 3-2
1-3 VAX PASCAL support, 3-2
syntax of DIRECTORY VAX SQL, 6-6
option, 6-1 VERIFY/REBUILD_DIRECTORY
SHOW RECORD errors, 1-5 command
Snapshot files to restore dictionaries,
compressing, 1-4 5-3
System quotas, 2-1 VERIFY command
T /COMPRESS option, 1-4
privilege restrictions,
Temporary files, 2-4 3-1
Text attributes VMS utilities
Index-8
VMS utilities (cont'd.)
and new protection, 1-2
W
Wild card characters
in DELETE/SUBDICTIONARY
command, 3-10
in DELETE command, 3-10
in SHOW command, 4-2
Index-9