CDD/Plus CDO — VMS CDD+_4.1A
Additional information available:
ATTACHCDO_FOREIGN_CMDCHANGECLEAR MESSAGESCOPY
DEFINEDELETEDIRECTORYEDITENTEREXIT
EXTRACTHELPMOVE DICTIONARYONPURGEREMOVE
SETSHOWSPAWNSPECIFYVERIFY
@(At Sign)area-attributesCDDPlus ErrorCDO ErrorCONVERT Command
edit-strexpressionsfield-attrfile-def-attrkey-attributesrecord-attr
system-attruser-attr
@(At Sign)
Executes a command file containing CDO commands. The default file type for a command file is .CDO. @file-spec ────────────>
Additional information available:
file-spec
The name of a file containing CDO commands. You can use a full VMS file specification, a file name, or a logical name for the name of the command procedure. If you use only a file name, CDO looks in the current default VMS directory for the command procedure. The file must contain valid CDO commands. If you use certain CDO commands at the start of each of your CDO sessions, you may want to create an initialization file that will execute these commands each time you invoke CDO. Name the file CDO$INIT.CDO and place it in the directory from which you invoke CDO. When a CDO$INIT.CDO file exists in the directory from which you invoke CDO, the commands contained in the file are executed each time you invoke CDO. You can also invoke CDO and execute CDO commands from a DCL command procedure.
Examples
The following CDO command procedure, START.CDO, places the user in the
[BOB.DICT] directory, then lists the objects in that directory. The
first command, SET VERIFY, instructs CDO to display each subsequent
command on the terminal screen during execution.
SET VERIFY ! Causes each command executed in this
! procedure to be echoed at the terminal
SET DEFAULT USER$DISK:[BOB.DICT] ! Places the user in the [BOB.DICT]
! directory
DIRECTORY ! Lists objects in the [BOB.DICT]
! directory
You need not specify the .CDO file type to execute a CDO command
procedure with the default file type of .CDO:
CDO> @START
SET DEFAULT USER$DISK:[BOB.DICT]
DIRECTORY
Directory USER$DISK:[BOB.DICT]
CDDPLUS DIRECTORY
CDO>
If the default file type of .CDO is not used for a CDO command
procedure, you must specify the file type to execute the command
procedure. The following command executes the CDO commands in a file
named CHANGE.PROCEDURE:
CDO> @CHANGE.PROCEDURE
The following initialization file CDO$INIT.CDO, is automatically
executed when you invoke CDO:
SET VERIFY !Causes each command executed in this
!procedure to be echoed at the terminal
SET DEFAULT USER$DISK:[JOHN.DICT] !Places the user in the [JOHN.DICT]
!directory
DIRECTORY !Lists the objects in the [JOHN.DICT]
!directory
The CDO$INIT.CDO file described above would produce the following
output:
$ DICTIONARY OPERATOR
SET DEFAULT USER$DISK:[JOHN.DICT]
DIRECTORY
Directory USER$DISK:[JOHN.DICT]
BACK_ORDERS;1 FIELD
CDDPLUS DIRECTORY
ORDER_NUMBER;1 FIELD
Welcome to CDO V1.0
The CDD/Plus V4.0 User Interface
Type HELP for help
CDO>
The following DCL command procedure, NEWFIELDS.COM, invokes CDO and
executes CDO commands:
SET VERIFY !Causes each command executed in this
!procedure to be echoed at the terminal
DICTIONARY OPERATOR !Invokes CDO
SET DEFAULT USER$DISK:[FRED.DICT] !Places the user in the [FRED.DICT]
!directory
DIRECTORY/TYPE=FIELD/SINCE=TODAY !Lists the new fields created in this
!directory on the current date
Note that after the CDO commands in a DCL command procedure execute,
you receive the DCL prompt:
$ @NEWFIELDS.COM
SET VERIFY
DICTIONARY OPERATOR
Welcome to CDO V1.0
The CDD/Plus V4.0 User Interface
Type HELP for help
SET DEFAULT USER$DISK:[FRED.DICT]
DIRECTORY/TYPE=FIELD/SINCE=TODAY
Directory USER$DISK:[FRED.DICT])
ORDER_NUMBER;1 FIELD
$
area-attributes
Provide additional control over file or area space allocation on disk devices to optimize performance. Areas are usually used with indexed files. A file can contain up to 255 areas. Areas must be defined in numerical order, beginning with 0. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid values for a particular keyword from the syntax diagram. For a mapping of keywords to the corresponding RMS Symbolic Field Offset see the subtopic "Table". area-attributes= ─┬─>
E
X
A
C
T
P
O
S
I
T
I
O
N
I
N
G ───────────┬─> ├─>
A
N
Y
C
Y
L
I
N
D
E
R ────────────────┤ ├─>
B
E
S
T
T
R
Y
C
O
N
T
I
G
U
O
U
S ─────────┤ ├─>
C
O
N
T
I
G
U
O
U
S ──────────────────┤ ├─>
P
O
S
I
T
I
O
N position-type ──────┤ ├─>
V
O
L
U
M
E numeric-literal ──────┤ ├─>
A
L
L
O
C
A
T
E numeric-literal ────┤ ├─>
B
U
C
K
E
T
S
I
Z
E numeric-literal ─┤ └─>
E
X
T
E
N
S
I
O
N numeric-literal ───┘
Additional information available:
position-typenumeric-literalTableExamples
position-type
Defines the alignment of an allocated area. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid values for a particular keyword from the syntax diagram. For a mapping of keywords to the corresponding XAB$B_ALN Symbolic Constant, see the subtopic "Table". position-type= ─┬─>
N
O
N
E ────────────────────────────────────────────────────┬─> ├─>
C
Y
L
I
N
D
E
R numeric-literal ─────────────────────────────────┤ ├─>
L
O
G
I
C
A
L numeric-literal ──────────────────────────────────┤ ├─>
V
I
R
T
U
A
L numeric-literal ──────────────────────────────────┤ └─>
F
I
L
E
I
D numeric-literal, numeric-literal, numeric-literal─┘
Additional information available:
numeric-literal
A positive integer. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid values for a particular keyword from the syntax diagram. For a mapping of keywords to the corresponding RMS Symbolic Field Offset, see the subtopic "Table".
Table
The following table shows the mapping of the keywords for position type options to XAB$B_ALN Symbolic Constants: Name of CDO Attribute XAB$B_ALN Symbolic Constant CYLINDER XAB$C_CYL FILE_ID XAB$C_RFI LOGICAL XAB$C_LBN NONE (default) XAB$C_ANY VIRTUAL XAB$C_VBN NONE is the default value for the position type options.
Example
The following example shows the position type option NONE in the RMS
database definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
.
.
.
cont> AREAS.
cont> AREA 0
cont> ALLOCATE 1000
cont> BUCKET_SIZE 10
cont> EXTENSION 100
cont> CONTIGUOUS.
cont> AREA 1
cont> ALLOCATE 1000
cont> BUCKET_SIZE 1
cont> EXTENSION 100
cont> BEST_TRY_CONTIGUOUS
cont> POSITION NONE.
cont> AREA 2
cont> ALLOCATE 1000
cont> BUCKET_SIZE 1
cont> EXTENSION 100
cont> BEST_TRY_CONTIGUOUS.
cont> END AREAS.
.
.
.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
numeric-literal
A positive integer. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid values for a particular keyword from the syntax diagram. For a mapping of keywords to the corresponding RMS Symbolic Field Offset, see the subtopic "Table".
Table
The following table shows the mapping of CDO area attributes to the
corresponding RMS Symbolic Field Offset:
Name of CDO Attribute RMS Symbolic Field Offset
ALLOCATE XAB$L_ALQ
ANY_CYLINDER XAB$V_ONC
BEST_TRY_CONTIGUOUS XAB$V_CBT
BUCKET_SIZE XAB$B_BKZ
CONTIGUOUS XAB$V_CTG
EXACT_POSITIONING XAB$V_HRD
EXTENSION XAB$W_DEQ
POSITION XAB$B_ALN
VOLUME XAB$W_VOL
The following area attributes override their corresponding file
definition attributes and file access block attributes, should you
specify both:
o XAB$V_CBT (BEST_TRY_CONTIGUOUS) overrides FAB$V_CBT
(BEST_TRY_CONTIGUOUS).
o XAB$B_BKZ (BUCKET_SIZE) overrides FAB$B_BKS (BUCKET_SIZE).
o XAB$V_CTG (CONTIGUOUS) overrides FAB$V_CTG (CONTIGUOUS).
o XAB$W_DEQ (EXTENSION) overrides FAB$W_DEQ (EXTENSION).
Examples
The following example shows the area attributes for the RMS database
definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
.
.
.
cont> AREAS.
cont> AREA 0
cont> ALLOCATE 1000
cont> BUCKET_SIZE 10
cont> EXTENSION 100
cont> CONTIGUOUS.
cont> AREA 1
cont> ALLOCATE 1000
cont> BUCKET_SIZE 1
cont> EXTENSION 100
cont> BEST_TRY_CONTIGUOUS.
cont> AREA 2
cont> ALLOCATE 1000
cont> BUCKET_SIZE 1
cont> EXTENSION 100
cont> BEST_TRY_CONTIGUOUS.
cont> END AREAS.
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the area attributes for the RMS database
definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
.
.
.
cont> AREAS.
cont> AREA 0
cont> ALLOCATE 1000
cont> BUCKET_SIZE 10
cont> EXTENSION 100
cont> CONTIGUOUS.
cont> AREA 1
cont> ALLOCATE 1000
cont> BUCKET_SIZE 1
cont> EXTENSION 100
cont> BEST_TRY_CONTIGUOUS
cont> POSITION NONE.
cont> AREA 2
cont> ALLOCATE 1000
cont> BUCKET_SIZE 1
cont> EXTENSION 100
cont> BEST_TRY_CONTIGUOUS.
cont> END AREAS.
.
.
.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
CDDPlus Error
Additional information available:
ALREXIATTEXISTSATTNOTAPPATTPROUSEATTVALFAIL
ATTVALWARNBADATTTYPBADBKPTRBADDICREF
BADDIRACLBADDTYPEBADENTTYPBADEXTREF
BADHNDBADLNKTYPBADLOCBADMEMBERBADNAME
BADOBJTYPBADORFBADOWNERBADRELTYP
BADSUBOBJBADUSAGEBLRBADCTXBLRFIELDID
BLRSYNERRBLRVARIABLEBOGLOBALBOGUS_DB_HANDLE
BOGUS_TXN_HANDLEBUGCHKBUGEXPCANTUSECANT_INHERIT
COMPLEX_CNSTCOMPLEX_RELCPYERRINCPYERROUT
CREDIRCTXMISMATCHCTXMISSINGCVT_NOTALL
DB_EXISTSDB_HNDL_ZERODB_IN_TXNDELEXTREF
DEXDICINVALIDDICMISMATCHDICRECDIFKIND
DIFTYPEDIRERRABTDIRNAMDELDIRNOOBJDIRREC
DIRSESSACTDIRSTARTDIR_FSYNCHDIR_SYNCH
DLKDMCS_IN_DIRDNEDNFDTMDTYPE_REQUIRED
DUPLINKDUPPROTNAMENDFINDENDGROUPENDSESSENTITYEXISTS
ENTPROUSEERRBLDEPENDERRCDDPROTERRCHGDIR
ERRCHGELEERRCHKMSGERRCLRMSGERRCOPY
ERRCREDICERRCREDIRERRCVTERRDDLERRDEFDE
ERRDEFELEERRDEFPROERRDEFPROTERRDELDE
ERRDELDICERRDELETEERRDELPROTERRERASE
ERRFETENDERRFETNEXERRFETNEXTERRFETSTART
ERRFETSTRERRFRCMSGERRGETERRGETELE
ERRIMAGEERRINBUFERRINHNDLRERRMODIFYERRMODPROT
ERRMOVDICERRMOVEERRPURGEERRSETDEFERRSIGNIN
ERRSIGNOUTERRSINOUTERRSTRSESERRTRANSERRVER
ERRVERIFYERRVERSIONERR_DELDICEXPECTED
EXSTINDBFDLKFETANDCOPYFIRSTVERSIONFIXBKPTR
FIXDICREFFIXDIRFIXDIRACLFIXEDFIXEXTREFFIXLOC
FIXNAMEFIXNODIRFIXORFFIXSNPFSDCHFSDNFFSERR
GVAGGHAS_DIMENSIONHAS_POINTERHIST_DDL_DB
HIST_DDL_SCHHIST_INT_FROMHIST_INT_TOHNDNOTZER
IDPCILLCHILLCONTXTILLDLMILLELLILLPSS
ILLSPILLVERSIONINCFLDATTINCPROTINTFAILINT_CREATE_CONF
INT_DELETEINT_DELETE_CONFINT_USERABORTINUSE
INVALID_EDIT_STRINVALID_INIT_VALINVALID_LENGTHINVALID_MISSING
INVALID_QRY_HDRINVALID_QRY_NAMINVALID_RDB_ATTINVALID_RDB_DIM
INVALID_RDB_DTYPEINVALID_RDB_RELINVALID_RDB_RSEINVALID_SCALE
INVALID_SEG_LENINVALID_SEG_SUBTYPEINVALID_SEG_TYPE
INVCPYPRINVCVTINVDICVSINVDTYPEINVEDIT_STRINGINVMAJOR
INVMINORINVPARMINVRECINV_BOOL_EXPINV_CTX_NAME
INV_EXP_VTBINV_FLD_EXPINV_FUN_EXPINV_LOG_EXP
INV_MATH_EXPINV_RDB_REL_EXPINV_STAT_EXPINV_STR_OP
INV_VAL_EXPIS_COMPUTEDJNLBADSIZEJNLCORRUPT
JNLNOTOTHERLABDUPDEFLABUNRESLASTVERSION
LNKNOTAPPLOCK_CONFLICTMBLRSYNERRMESS
MISSINGMORE_TO_COMEMULTIVALUEMUSTABORT
NAMCONFLICTNEEDASTNEEDDIRNAMENEWTXNNIU
NMDNMHNNFNOATTACHNOCDDNOCDDFLDNOCDDREL
NOCOMPATNOCONEXPNODEFINENODELETENODICNODENODICTUPLE
NODIRSESSNOJNLCRENOLINKNOMESSNOMODNOMODIFYNOOWNER
NOPRIMARYNOPROMODNOPRONAMENOPROTOCOL
NOPROTPRVNOREADNORECOVERNORECOVERY
NOREMOTENORENAMENOSETSYSNOSUCHOBJ
NOTADICNOTARELNOTAVAILNOTDICENTRYNOTEMPLATE
NOTEXSTINDBNOTINDBNOTYETNOT_A_DBNOT_A_SESSION
NOT_A_TXNNOT_FOUND_1NOT_FOUND_2NOT_FOUND_3
NOT_IN_TXNNOT_VALID_TYPENOUPGRADENOVALUE
NOVERSIONNOWILDCARDNOWITHINNOWRITENOXFND
NOXREQNO_ATT_DBNO_AUTOMATIC_UPGRADENO_COM_TXN
NO_CRE_DBNO_DB_NAMENO_DEL_DBNO_DESCRIPTION
NO_DET_DBNO_PATHNO_ROL_TXNNO_ST_TXN
NTLNVRECOBJDELOBSDIRPAROKEXTREFOKLOC
OKNAMEONEPRIMARYONLYNAMEOPENSESSORGREFORPHAN
OVERFLOWPRINOTORGPROEXISTSPROLATERPRONAMEX
PROTINUSEPRSERRORPRSMISSINGPRSNODIRPRSNOENT
PRSNOERRPRSNOHNDLPRSNOKINDPRSNONAME
PRSNOTARGPRSNOTYPEREADERRREBUILDRECNOTOTHER
RECNOTRELRECRECDIRREFREFRELEXISTSRELNOTFND
RELPROUSEREQATTMISREQPARAMRETRYRSERR
RTLERRSEGSTRINFOSESSACTIVESSERRSTARTSESS
STWONEST_TXN_BAD_ARGSSYNOFFSYNTAXTRUNCTXN_HNDL_ZERO
UNDERFLOWVALDEFFAILVALDEFWARNVALMODFAIL
VALMODWARNVALTOOLONGVERINCWITHINAMB
WRONGBUFWRONGENTTYPXREF
ALREXI
<text> already exists in the DMU dictionary Explanation: You tried to define an entity with the same name as an entity that already exists in the DMU dictionary. User Action: Either rename the new entity or delete the old one.
ATTEXISTS
an attribute with protocol tag value <value> already exists Explanation: You attempted to create a new attribute type with a protocol tag value duplicating the tag value of an attribute type in the dictionary. User Action: Use unique tag values for each attribute type.
ATTNOTAPP
attribute <text> is not applicable to object protocol <text>
Explanation: One of the given attributes is:
1. not applicable to the type of entity or relationship being
created or modified, or
2. is used in a dictionary query buffer on a relationship which
may not own it, or its value is requested on an entity or
relationship which may not own it.
The signal vector's first parameter is the attribute type in
question; the second is the type of the entity or relationship.
User Action: Only attempt to set or read the values of
attributes the entity or relationship is allowed to own.
ATTPROUSE
attribute protocol <value> V<value>.<value> in use Explanation: An attempt was made to delete an attribute protocol which is being used by some object type. User Action: Delete the entity or relationship protocol first, or delete the entire set of related protocols in one call.
ATTVALFAIL
invalid value, attribute <text> failed validation <text> Explanation: A validation failed while checking an attribute value. The current operation was aborted. User Action: Each validation checks for a different constraint. Use the name of the validation to find out what it requires, and make sure that the attribute value meets the constraint.
ATTVALWARN
potentially invalid value, attribute <text> failed validation <text> Explanation: A validation failed while CDD/Plus checked an attribute value. The current operation was aborted. User Action: Determine why the attribute value was illegal and respecify it.
BADATTTYP
the attribute type does not exist in the dictionary: <value> V<value>.<value> Explanation: You specified an attribute type that does not exist in the dictionary. The signal parameter is the attribute type. User Action: Use only defined attribute types.
BADBKPTR
the backpointer <text> does not correspond to a directory name Explanation: The given backpointer does not refer to a valid, existing directory name. User Action: Use VERIFY/FIX/ORPHAN to fix the backpointer.
BADDICREF
invalid external reference to <text><text> Explanation: The dictionary has a reference to a dictionary which cannot be accessed. User Action: Use VERIFY/FIX/ORPHAN to remove any references to this dictionary. directory.
BADDIRACL
the directory acl for <text> is corrupt Explanation: The directory has a corrupt access control list. User Action: Use VERIFY/FIX/DIRECTORY to fix the acl.
BADDTYPE
datatype not supported by CDD/Plus: <value> Explanation: You tried to give an attribute a datatype not supported by CDD/Plus. Supported datatypes are: o DSC$K_DTYPE_VT o DSC$K_DTYPE_T o DSC$K_DTYPE_W o DSC$K_DTYPE_L o DSC$K_DTYPE_Q o DSC$K_DTYPE_G o DSC$K_DTYPE_F o DSC$K_DTYPE_ADT o DSC$K_DTYPE_Z. User Action: Use only the supported datatypes to specify attribute values.
BADENTTYP
entity type does not exist in dictionary: <value> Explanation: The entity type specified does not exist. The message parameter is the entity type. User Action: Use only defined entity types.
BADEXTREF
external reference to <text> from <text> is bad Explanation: The pointer from the second dictionary to the first is wrong. The first dictionary may have been moved or may have had the name of its containing directory or disk changed. User Action: Use VERIFY/FIX to fix the pointer in the second dictionary to refer to the current location of the first.
BADHND
handle is not valid Explanation: A bad handle was passed to the dictionary. Either it has been corrupted, or it is not a handle to the correct type of dictionary object. User Action: Make sure handles passed to CDD/Plus are valid. Make sure fetch handles are passed to fetch loops, element handles are passed to GET_ELEMENT, etc.
BADLNKTYP
link type not found in dictionary: <value> Explanation: A link type was specifed that does not exist in the appropriate dictionary. User Action: Submit an SPR.
BADLOC
dictionary <text> has self-reference of <text> Explanation: The dictionary's own pointer indicating its directory name is wrong. The dictionary may have been moved or may have had the name of its containing directory or disk changed. User Action: Use VERIFY/FIX to fix the self-reference.
BADMEMBER
this type of entity may not be a member of this relationship. Entity type: <text> Relationship type: <text> Explanation: You tried to create a relationship of the given type with an entity of the given type as owner. However, the dictionary protocol does not declare the entity type as a legal owner of the relationship type. User Action: Only specify relationship members that are allowed by the relationship.
BADNAME
the name <text> does not correspond to a dictionary element Explanation: The given name does not refer to a valid, existing dictionary element. User Action: Use VERIFY/FIX/DIRECTORY to remove the name from the directory.
BADOBJTYP
this is not a valid entity or relationship type in this dictionary: <value> Explanation: An entity or relationship type was specified which does not exist in the dictionary. The signal parameter contains the invalid type. User Action: Only refer to protocols that are defined in the given dictionary.
BADORF
entity <text> is orphaned Explanation: The given object has no owner and no directory name. User Action: Use VERIFY/FIX/ORPHAN to enter a name for the object in the directory.
BADOWNER
this type of entity may not own this relationship. Entity type: <text> Relationship type: <text> Explanation: An attempt was made to create a relationship of the given type with an entity of the given type as owner. However, the dictionary protocol does not declare the entity type as a legal owner of the relationship type. User Action: Only specify relationships that an element is allowed to own.
BADRELTYP
relationship type does not exist in dictionary: <value> Explanation: The relationship type specified does not exist. The message parameter is the relationship type. User Action: Only use relationships types that are defined in the dictionary.
BADSUBOBJ
element <text> has corrupt suobjects
BADUSAGE
bad entity usage Explanation: You used an entity improperly. User Action: Submit an SPR.
BLRBADCTX
context references unknown relation Explanation: The BLR buffer passed to the DSRI call interface contained a field that referenced an unknown context. User Action: Check relation context numbers in the BLR buffer.
BLRFIELDID
dictionary cannot interpret BLR field ids Explanation: The BLR buffer passed to the DSRI call interface contained a BLR$K_FIELD_ID in a view's computed field which cannot be interpreted by the dictionary. User Action: Remove the reference to the BLR field id.
BLRSYNERR
syntax error in BLR buffer at offset <value> Explanation: A syntax error was discovered in a BLR buffer passed to CDD/Plus's DSRI call interface. The signal parameter has the offset of the error from the start of the buffer. User Action: Examine the buffer to determine the reason for the syntax error.
BLRVARIABLE
dictionary cannot interpret BLR variables Explanation: A syntax error was discovered in a BLR buffer passed to CDD/Plus's DSRI call interface. The BLR buffer contained a BLR$K_VARIABLE which cannot be interpreted by the dictionary. User Action: Remove the reference to the BLR variable.
BOGLOBAL
global field based on global field in same database
BOGUS_DB_HANDLE
the DB Handle passed is not a DB Handle Explanation: You passed an incorrect database handle. User Action: Correct the program calling this routine to pass a proper database handle. If you were using RDO, SQL, or RALLY when you received this error message, you should submit an SPR to the appropriate product.
BOGUS_TXN_HANDLE
the Transaction Handle passed is not a Transaction Handle Explanation: You passed an incorrect transaction handle. User Action: Correct the program calling this routine to pass a proper transaction handle. If you were using RDO, SQL, or RALLY when you received this error message, you should submit an SPR to the appropriate product.
BUGCHK
dictionary interface internal error Explanation: An internal error was uncovered in the CDD/Plus call interface. User Action: Submit an SPR to CDD/Plus.
BUGEXP
reason: <text> Explanation: An internal error occurred during the operation of CDD/Plus. This string explains the particular problem that was discovered. User Action: Submit an SPR to CDD/Plus, including the text of the error message you received.
CANTUSE
cannot use entity <text> Explanation: You specified an entity by name that does not exist. User Action: Make sure all entities used in a call to CDD/Plus exist.
CANT_INHERIT
record inheritance too complicated for Rdb/VMS relation Explanation: The record structure has both data elements (fields) and an inheritance link to another relation. CDD/Plus does not know how to inherit from this kind of structure. User Action: Create a record structure without inheritance.
COMPLEX_CNST
constraint is too complex for use in an Rdb/VMS database Explanation: Constraints must depend on a data value which depends on a single level of records using a field. You cannot use more complex structures. User Action: Define your constraints with RDO.
COMPLEX_REL
record too complex for an Rdb/VMS relation: nested structure or variants Explanation: This record contains either a nested structure or record variants. Neither of these are allowed in an Rdb/VMS relation. User Action: Rdb/VMS relations can only contain elementary fields. Redefine this record to create a flat record structure.
CPYERRIN
error opening input file <text> Explanation: A create or move dictionary operation failed to open one of the files associated with the input dictionary. User Action: Examine the following error messages for the reason.
CPYERROUT
error opening output file <text> Explanation: A create or move dictionary operation failed to open one of the files associated with the output dictionary. User Action: Examine the following error messages for the reason.
CREDIR
the backpointer <text> is being used to create a new directory Explanation: The given backpointer is being used to create a new directory file. User Action: None.
CTXMISMATCH
context and handle are not from a common session Explanation: Both a CDD context and a CDD/Plus handle were specified, but they don't belong to the same session. User Action: Use the context and handle that were used together in the call to CDD$ATTACH.
CTXMISSING
context parameter is missing Explanation: The handle passed belongs to a common session, but the context parameter was not passed to CDD$DETACH, CDD$START_SESSION or CDD$END_SESSION. User Action: Pass the context parameter.
CVT_NOTALL
some DTR attributes could not be converted Explanation: This message appears when some DTR attributes in the DMU record could not be translated to the new CDO record. The new record was created without them. User Action: Check the new record definition and change it appropriately.
DB_EXISTS
database, <text>, already exists in this directory Explanation: You tried to create a database using a pathname that already exists. User Action: Retry, using another name.
DB_HNDL_ZERO
database handle is zero Explanation: You passed a database handle of zero where a non-zero handle was expected. User Action: Return the handle from ATTACH/CREATE DATABASE.
DB_IN_TXN
database, <text>, cannot be detached because it is active in a transaction Explanation: You tried to detach a database that is currently involved in an active transaction. This error is usually caused by a bug in the product using the dictionary. User Action: Rolling back or committing the transaction before detaching from the database solves this problem. If that does not help, the interface's internal state is confused and you should submit an SPR.
DELEXTREF
external references prevent dictionary deletion Explanation: Relationships to or from other dictionaries prevent a dictionary from being deleted. User Action: Delete the relationships before deleting the dictionary.
DEX
directory <text><text> exists Explanation: You attempted to create a directory that already exists. User Action: Do not attempt to recreate existing directories.
DICINVALID
dictionary is corrupt Explanation: A call to VERIFY revealed problems with the dictionary. User Action: Use VERIFY/FIX to fix the dictionary.
DICMISMATCH
dictionary at <text> has an invalid dictionary pointer to dictionary <text> Explanation: The given dictionary contains a bad pointer to the second dictionary. It tried to access the second dictionary using the given directory and did not find it. User Action: Determine the current location of the second dictionary and execute the VERIFY/FIX/EXTERNAL_REFERENCES command on the dictionary.
DICREC
dictionary awaiting recovery of transaction on <text> Explanation: VERIFY determined that a transaction on the given dictionary needs to be recovered. The database name above is the name of the primary database for the transaction; it cannot be committed or rolled back until the primary database becomes available. Until the transaction is recovered, some definitions in the dictionary will be locked. User Action: None. When the primary database becomes available, the dictionary will be recovered automatically.
DIFKIND
entity is not of specified kind Explanation: You specified either an entity or relationship, but supplied a protocol tag that indicated the other type of element. User Action: Use the tag CDD$K_ENTITY to refer to entities and the tag CDD$K_RELATIONSHIP to refer to relationships.
DIFTYPE
entity type is different from previous version Explanation: An attempt was made to create a new version of an entity with a different type than the previous version. This is illegal. User Action: Never change the type when defining new versions of entities.
DIRERRABT
fetch stream aborted because of directory error Explanation: A fetch stream cannot continue after an attempt to change the directory fails. User Action: End the fetch stream and restart it from scratch.
DIRNAMDEL
directory name has been deleted Explanation: The preceding name has been deleted from the directory. User Action: None.
DIRNOOBJ
entity specified by directory, <text>, is not in dictionary Explanation: A name in the directory does not correspond to an existing entity in the dictionary, so the directory name has been deleted. This error indicates a synchronization error between the dictionary and directory. User Action: Submit an SPR.
DIRREC
dictionary awaiting recovery with directory Explanation: VERIFY determined that a transaction on the given dictionary needs to be recovered according to directory changes. User Action: None. This recovery takes place automatically.
DIRSESSACT
directory session active Explanation: A directory system operation requiring that no session be active was attempted while a session was active. User Action: Submit an SPR.
DIRSTART
directory session started Explanation: A directory session was started while a directory session was active. User Action: None.
DIR_FSYNCH
directory files in <text> are corrupt - rebuild, or submit SPR Explanation: The directory system's file structure is corrupt. The structure may be recoverable from the dictionary. User Action: Submit an SPR. VERIFY/RECOVER may restore the dictionary to a useable state.
DIR_SYNCH
directory data structures corrupt - submit SPR Explanation: Directory system data structure checks failed. User Action: Submit an SPR. VERIFY/RECOVER may restore the dictionary to a useable state.
DLK
directory <text><text> is locked Explanation: Another dictionary user has the CDO directory locked, preventing it from being opened for write access. User Action: Wait, and try again. This error should rarely appear, since CDD/Plus will retry the operation several times before returning the error to you.
DMCS_IN_DIR
multinational characters are not supported in directory names Explanation: Multinational characters are not supported in directory names. They can be used in element names. User Action: Use another name that does not contain multinational characters.
DNE
directory not empty Explanation: A CDO directory deletion operation failed because the directory was not empty. User Action: Delete the contents of the directory and try again.
DNF
directory <text><text> not found Explanation: A CDO directory specified in a path does not exist. User Action: Check that all directories in the path exist.
DTM
directory type mismatch on <text><text> Explanation: An operation was attempted on a directory record with a different type than the one supplied. User Action: Always specify a protocol type that matches the one on the name in the directory.
DTYPE_REQUIRED
field must have a datatype for inclusion in an Rdb/VMS database Explanation: You tried to include a field with no datatype into an Rdb/VMS database. User Action: Give the field a valid Rdb/VMS datatype and try again.
DUPLINK
link <value> is already owned by object type <value> Explanation: The same link type was specified twice as legal on the object type. User Action: Submit an SPR
DUPPROTNAM
a protocol with the name <text> already exists Explanation: All protocol names must be unique. The name you specified for a new protocol is already in use. User Action: Specify different names for every protocol in the dictionary.
ENDFIND
end of fetch stream Explanation: There are no more objects in the current fetch stream. User Action: Call CDD$FETCH_END to dispose of the fetch stream.
ENDGROUP
end of fetch stream group Explanation: There are no more objects in the current fetch stream group. User Action: If this message is ever returned or signalled, submit an SPR.
ENDSESS
error ending session Explanation: An unexpected error occurred while ending a session. User Action: The following error messages explain why the error occurred.
ENTITYEXISTS
entity type <value> already exists Explanation: The tag value given for a new entity protocol is in use in the dictionary. User Action: Use unique tag values across all entity and relationship protocols in the dictionary.
ENTPROUSE
entity protoocl <value> V<value>.<value> Explanation: You tried to delete an entity protocol that is the member of a relationship. User Action: Delete the owning relationship protocol first, or delete all related protocols in one call.
ERRBLDEPEND
error building dependency information Explanation: An error occurred building dependency information in CDDLIBSHR. User Action: See following error messages for specific information on the error that occurred.
ERRCDDPROT
DMU definition cannot be translated Explanation: You tried to translate a DMU definition that has no equivalent in CDO. User Action: Refer to the definition only through DMU entry points.
ERRCHGDIR
an error occurred while changing the directory Explanation: The entry level routine returned an error from the call to CHANGE_DIRECTORY. User Action: See the following error messages to determine the reason.
ERRCHGELE
error in the CHANGE_ELEMENT call Explanation: The entry level routine returned an error from the call to CHANGE_ELEMENT. User Action: See the following error messages to determine the reason.
ERRCHKMSG
error checking messages Explanation: An error occurred while CDD/Plus attempted to get messages on an entity. User Action: Examine the following error messages to determine the reason.
ERRCLRMSG
error clearing messages Explanation: An error occurred while CDD/Plus attempted to clear messages from an entity. User Action: Examine the following error messages to determine the reason.
ERRCOPY
error copying entities Explanation: An error occurred while CDD/Plus attempted to copy entities in the dictionary. User Action: Examine the following error messages to determine the reason.
ERRCREDIC
error creating dictionary Explanation: An error occurred while CDD/Plus attempted to create a new dictionary file. User Action: Examine the following error messages to determine the reason.
ERRCREDIR
an error occurred while creating the directory Explanation: The entry level routine returned an error from the call to CREATE_DIRECTORY. User Action: See the following error messages to determine the reason.
ERRCVT
error during convert Explanation: An error occurred during the conversion of a dictionary. User Action: Correct the error specified by the following messages and try again.
ERRDDL
error updating dictionary metadata Explanation: An error occurred executing a DDL request from the dictionary's DSRI call interface. User Action: See the following messages for a detailed explanation of the error.
ERRDEFDE
error defining directory entry Explanation: An error occurred while CDD/Plus attempted to define a directory entry. User Action: Examine the following error messages to determine the reason.
ERRDEFELE
an error occurred while defining element Explanation: An error occurred while defining new dictionary elements. User Action: See the following error messages to determine the reason.
ERRDEFPRO
an error occurred while defining protocol Explanation: An error occurred while defining a new protocol. User Action: See the following error messages to determine the reason.
ERRDEFPROT
error defining new dictionary protocols Explanation: An error occurred while CDD/Plus attempted to define new protocols. User Action: Examine the following error messages to determine the reason.
ERRDELDE
error erasing directory entry Explanation: An error occurred while CDD/Plus attempted to remove a directory entry. User Action: Examine the following error messages to determine the reason.
ERRDELDIC
error deleting dictionary from CDD/Plus Translator Explanation: An error occurred while deleting a dictionary. User Action: See the following error messages to determine the reason.
ERRDELETE
error deleting directory from CDD/Plus Translator Explanation: An error occurred while deleting a directory. User Action: See the following error messages to determine the reason.
ERRDELPROT
error deleting dictionary protocols Explanation: An error occurred while CDD/Plus tried to delete protocols. User Action: Examine the following error messages to determine the reason.
ERRERASE
could not delete entity Explanation: An unexpected error occurred while CDD/Plus attempted to delete an entity. User Action: Examine the following error messages to determine the reason.
ERRFETEND
error ending fetch stream Explanation: An error occurred while CDD/Plus attempted to end a fetch stream. User Action: Examine the following error messages to determine the reason.
ERRFETNEX
error during FETCH_NEXT from CDD/Plus Translator Explanation: An error occurred during a call to FETCH_NEXT. User Action: See the following error messages to determine the reason.
ERRFETNEXT
error fetching next stream entity Explanation: The next entity in a fetch stream could not be retrieved. User Action: Examine the following error messages to determine the reason.
ERRFETSTART
error starting fetch stream Explanation: A fetch stream could not be started. User Action: Examine the following error messages to determine the reason.
ERRFETSTR
error during FETCH_START from CDD/Plus Translator Explanation: An error occurred during a FETCH_START call. User Action: See the following error messages to determine the reason.
ERRFRCMSG
error forcing messages Explanation: An error occurred while CDD/Plus attempted to force messages. User Action: Examine the following error messages to determine the reason.
ERRGET
can't retrieve requested entities Explanation: An error occurred while CDD/Plus attempted to retrieve entities you requested. User Action: Examine the following error messages to determine the reason.
ERRGETELE
error during GET_ELEMENT from CDD/Plus Translator Explanation: An error occurred during the GET_ELEMENT call. User Action: See the following error messages to determine the reason.
ERRIMAGE
error locating image <text> in file <text> Explanation: LIB$FIND_IMAGE_SYMBOL failed to find a shareable image. User Action: The following error messages explain the exact nature of the error.
ERRINBUF
error in buffer Explanation: An error occurred dumping a buffer. User Action: Examine the following error messages for the reason.
ERRINHNDLR
error in handler Explanation: Because of a bug in CDD/Plus, an error occurred while an error was being handled. User Action: Submit an SPR.
ERRMODIFY
error modifying entities Explanation: An error occurred while CDD/Plus attempted to modify entities in the dictionary. User Action: Examine the following error messages to determine the reason.
ERRMODPROT
error modifying dictionary protocols Explanation: An error occurred while CDD/Plus tried to modify protocols. User Action: Examine the following error messages to determine the reason.
ERRMOVDIC
error moving dictionary Explanation: The dictionary could not be moved. User Action: Examine the following error messages to determine the reason.
ERRMOVE
error moving object Explanation: The specified object could not be moved. User Action: Examine the following error messages to determine the reason.
ERRPURGE
error during purge element from CDD/Plus Translator Explanation: An error occurred while purging the dictionary. User Action: See the following error messages to determine the reason.
ERRSETDEF
error setting default anchor Explanation: An error occurred while CDD/Plus attempted to set the default anchor. User Action: Examine the following error messages to determine the reason.
ERRSIGNIN
error signing in Explanation: An error occurred while signing in. User Action: Examine the following error messages to determine the reason.
ERRSIGNOUT
error signing out Explanation: An error occurred while signing out. User Action: Examine the following error messages to determine the reason.
ERRSINOUT
error signing out from CDD/Plus Translator Explanation: An error occurred while signing out of the dictionary. User Action: See the following error messages to determine the reason.
ERRSTRSES
error during START_SESSION from CDD/Plus Translator Explanation: An error occurred during a START_SESSION call. User Action: See the following error messages to determine the reason.
ERRTRANS
error during name translation Explanation: An error occurred while a name was translated. User Action: The following error messages tell why the error occurred. If you are not using the CDD/Plus call interface please submit an SPR.
ERRVER
error during VERIFY from CDD/Plus Translator Explanation: An error occurred while verifying the dictionary. User Action: See the following error messages to determine the reason.
ERRVERIFY
error verifying dictionary Explanation: An error occurred while CDD/Plus attempted to verify the dictionary. User Action: Examine the following error messages to determine the reason.
ERRVERSION
error determining version Explanation: An error occurred while CDD/Plus attempted to determine the version number. User Action: Examine the following error messages to determine the reason.
ERR_DELDIC
error deleting dictionary Explanation: An error occurred while CDD/Plus tried to delete a dictionary file. User Action: Examine the following error messages to determine the reason.
EXPECTED
expected value was <value> Explanation: Returned after a syntax error, indicates that the given byte value would have been legal at the point where an error was returned. The list of expected byte values is not exhaustive; it ignores any optional clauses. User Action: Examine the buffer passed to CDD/Plus to determine the reason for the syntax error.
EXSTINDB
dictionary database already contains <text> Explanation: The dictionary database contains the referenced entity. User Action: Check the entity name supplied. Generally entities are sought by matching the processing name to the name supplied.
FDLK
directory <text><text> is locked Explanation: Another dictionary user has the CDD/Plus directory locked, preventing it from being opened for write access. User Action: Wait, and try again or determine who has an extended lock on this directory. CDD/Plus has retried this directory several times without success. If this error is returned from CDD$FETCH_NEXT, the fetch stream must be ended before this directory may be retried.
FETANDCOPY
can't copy within a fetch stream Explanation: An attempt was made to use the copy call from within a fetch stream. User Action: End any open fetch streams before copying elements.
FIRSTVERSION
there is no prior version of this entity Explanation: The dictionary was asked for the prior version of an entity, but there was none. User Action: None.
FIXBKPTR
the backpointer <text> is being used to generate a new directory name Explanation: The given backpointer is being used to enter a name for the object. User Action: None.
FIXDICREF
external references to <text><text> have been removed Explanation: References to the specified dictionary have been removed. User Action: none.
FIXDIR
a directory object for <text> is being created Explanation: The given directory does not have an associated directory object. Create a directory object for the existing directory file. User Action: None.
FIXDIRACL
a directory acl for <text> is being created Explanation: The given directory's acl was corrupt. The acl is being re-created. User Action: None.
FIXED
dictionary was corrupt, has been fixed Explanation: Using VERIFY/FIX successfully fixed some problems with a dictionary. User Action: None.
FIXEXTREF
external reference to <text> from <text> is being fixed Explanation: The pointer from the second dictionary to the first is being fixed to point to the first dictionary's current location. User Action: None.
FIXLOC
fixing self-reference of dictionary <text> Explanation: The dictionary's own pointer indicating its directory name is being fixed to point to its current location. User Action: None.
FIXNAME
the name <text> is being deleted Explanation: The given name does not refer to a valid, existing dictionary element; it is being removed from the directory. User Action: None.
FIXNODIR
the backpointer <text> is being deleted Explanation: The given backpointer does not have an associated directory file. The directory object is therefore deleted. User Action: None.
FIXORF
name <text> being entered for orphaned object Explanation: The given object has no owner and no directory name; the given name is being entered for it in the directory. User Action: None.
FIXSNP
dictionary <text> snapshot file size reduced to 0 Explanation: The snapshot file has been reduced to zero bytes to maximize free disk space. User Action: None.
FSDCH
file system directory contains a hierarchy Explanation: The file system directory that you specified as a CDD/Plus anchor directory already contains a CDD/Plus directory hierarchy. User Action: Make sure the VMS directory is empty before trying to create a CDD/Plus dictionary in it.
FSDNF
file system directory <text> not found Explanation: The file system directory specified as an anchor was not found. User Action: Specify a valid CDD/Plus dictionary anchor.
FSERR
file system error Explanation: A file system call produced an unexpected error. User Action: Examine the following error messages to determine the reason.
GVAGG
group value outside of aggregate expression context Explanation: A group-value expression was encountered in a context where no aggregate stream has been defined to give it meaning. User Action: Correct the BLR and try again.
HAS_DIMENSION
Rdb/VMS fields cannot have dimension Explanation: A dictionary field contains either an ARRAY or OCCURS clause. User Action: Use a field that does not have dimension.
HAS_POINTER
Rdb/VMS fields may not be POINTER fields Explanation: A dictionary field has the POINTER datatype, which cannot be represented in the Rdb/VMS database. User Action: Choose another field.
HIST_DDL_DB
modified via RDO DDL Explanation: This text is used for the history entry that accompanies the modification of an Rdb/VMS CDD$DATABASE entity that results from RDO DDL. User Action: None.
HIST_DDL_SCH
new version created via RDO DDL from database <text> Explanation: This text is used for the history entry that accompanies the new version of a schema that results from RDO DDL. User Action: None.
HIST_INT_FROM
integrated from dictionary to database <text> Explanation: This text is used for the history entry that records an INTEGRATE FROM operation. User Action: None.
HIST_INT_TO
integrated to dictionary from database <text> Explanation: This text is used as the history entry that records an INTEGRATE TO operation. User Action: None.
HNDNOTZER
handle not zero Explanation: A handle you supplied was not zero. User Action: All calls that return a handle to you expect the handle to be passed in with a zero value. Make sure such handles are set to zero before calling CDD/Plus.
IDPC
invalid directory path component in name '<text>' Explanation: A path component in a path given to the directory system was too long, or contained illegal characters. User Action: Make sure all components of directory names contain only the characters A-Z, 0-9, "$", "-", and "_", and that each component is less than 32 characters long.
ILLCH
illegal character in directory name Explanation: A illegal character was used in a path name. User Action: Make sure all components of directory names contain only the characters A-Z, 0-9, "$", "-", and "_", and that each component is less than 32 characters long.
ILLCONTXT
invalid context for CDD/Plus dependency tracking routine Explanation: The context parameter passed to a CDD/Plus library dependency tracking routine was invalid. User Action: Call CDD$LIB_START_DEPENDENCY to set up a valid context.
ILLDLM
illegal use of delimiters Explanation: The name contains special characters that were not properly placed. User Action: Review the syntax for directory names and adhere to it.
ILLELL
illegal use of ellipses Explanation: Ellipses were embedded in the directory name illegally. User Action: Make sure that all ellipses contain exactly three periods. There must not be an extra period acting as a delimiter between the ellipses and the name on either side.
ILLPSS
illegal use of password delimiters
Explanation: A password was placed at the wrong point in the
directory name, or the '(' and ')' characters were improperly
matched.
User Action: Review the syntax for directory names and adhere
to it.
ILLSP
illegal spaces in directory name Explanation: There were spaces embedded in a directory name. User Action: Make sure all components of directory names contain only the characters A-Z, 0-9, "$", "-", and "_", and that each component is less than 32 characters long.
ILLVERSION
illegal version number: <text> Explanation: An illegal version number was specified in a name. The FAO parameter contains the string CDD/Plus is trying to interpret as a version number. User Action: The legal syntax for a version number is a semicolon followed by a signed integer. Change the version number passed to CDD/Plus to this format.
INCFLDATT
incompatible field attributes
INCPROT
protocol is incomplete: <value> Explanation: A protocol being defined was not completed. User Action: Make sure that all entity, relationship, and attribute protocols referenced in a DEFINE_PROTOCOL call are defined by the end of the call.
INTFAIL
integration failed Explanation: The integration from the database to dictionary (or dictionary to database) failed. User Action: See the following messages to find out why.
INT_CREATE_CONF
Create a dictionary entity with the given pathname?
Explanation: This message appears when the following conditions
are TRUE:
o RDO INTEGRATE is updating the CDD/Plus dictionary from
information in an Rdb/VMS database
o a field or relation in the Rdb/VMS database has an
associated dictionary pathname that does not exist in the
dictionary.
The message is used to ask you whether the pathname recorded in
the database should be created in the dictionary.
User Action: Answer YES (true) if INTEGRATE may perform the
operation. Answer NO (false) if INTEGRATE should not store the
directory information.
Your response depends on your interface to INTEGRATE. If you
are using an interactive utility like RDO, consult the RDO
documentation. If you are using the CDD/Plus call interface,
refer to the CDD/Plus Call Interface manual.
INT_DELETE
object <text> will be deleted -- data may be lost
Explanation: This message appears when the following conditions
are TRUE:
o INTEGRATE is updating an Rdb/VMS database from information
in the CDD/Plus dictionary
o a field or relation exists in the Rdb/VMS database that is
not described by metadata in the CDD/Plus dictionary
This message warns you that data will be lost if this object is
deleted.
User Action: Answer YES (true) if INTEGRATE may perform the
operation. Answer NO (false) if INTEGRATE may not delete the
object.
Your response depends on your user to INTEGRATE. If you are
using an interactive utility like RDO, you should consult the
RDO documentation. If you are using the CDD/Plus call
interface, you should refer to the CDD/Plus Call Interface
manual.
INT_DELETE_CONF
object will be deleted -- data may be lost. Continue?
Explanation: This message appears when the following conditions
are TRUE:
o RDO INTEGRATE is updating an Rdb/VMS database from
information in the CDD/Plus dictionary
o a field or relation exists in the Rdb/VMS database that is
not described by metadata in the CDD/Plus dictionary
The message warns you that data will be lost if this object is
deleted.
User Action: Answer YES (true) if INTEGRATE may perform the
operation. Answer NO (false) if INTEGRATE may not delete the
object.
Your response depends on your interface to INTEGRATE. If you
are using an interactive utility like RDO, consult the RDO
documentation. If you are using the CDD/Plus call interface,
refer to the CDD/Plus Call Interface manual.
INT_USERABORT
integration aborted by user Explanation: You answered "NO" to the INT_DELETE_CONF message, which caused the RDO INTEGRATE command to abort. User Action: Answer "YES" to INT_DELETE_CONF, and this error will not occur.
INUSE
element is the member of a relationship; it cannot be deleted Explanation: You tried to delete an entity that is the member of a relationship. This is not legal. User Action: Delete the owner of the relationship, or remove the relationship between the two elements, before deleting the member element.
INVALID_EDIT_STR
field contains an invalid EDIT STRING Explanation: The edit string for this field is not valid for Rdb/VMS' DATATRIEVE edit string. User Action: Redefine the field using valid attributes, and include that field in the database.
INVALID_INIT_VAL
field contains an invalid INITIAL VALUE Explanation: The field contains an initial value clause that cannot be represented in the Rdb/VMS database. User Action: Redefine the field using valid attributes, and include that field in the database.
INVALID_LENGTH
field contains an invalid LENGTH Explanation: A dictionary field contains a length that cannot be represented as a word value. This message is usually caused by a change to the field protocol. User Action: If you did not modify the field protocol, submit an SPR.
INVALID_MISSING
field contains an invalid MISSING VALUE Explanation: A dictionary field contains a missing value that cannot be represented in the Rdb/VMS database. User Action: Rdb/VMS allows only literal values. If the field contains an expression, it must be simplified into a literal.
INVALID_QRY_HDR
field contains an invalid QUERY HEADER Explanation: A dictionary field contains a query header that cannot be represented as a text string. User Action: If you did not modify the field protocol, submit an SPR.
INVALID_QRY_NAM
field contains an invalid QUERY NAME Explanation: A dictionary field contains a query name that cannot be represented as a text string. User Action: Enter a valid query name in the field definition.
INVALID_RDB_ATT
field contains an invalid Rdb/VMS attribute Explanation: A dictionary field contains an attribute that is not valid in an Rdb/VMS field. This is either a justification or digits attribute. User Action: Redefine the field using valid attributes, and include that field in the database.
INVALID_RDB_DIM
record <text> has dimension and cannot be used by Rdb/VMS Explanation: The record that caused this error message has an array or dimension. Rdb/VMS cannot support the record. User Action: Use only simple records with Rdb/VMS.
INVALID_RDB_DTYPE
datatype of field is not supported by Rdb/VMS Explanation: A dictionary field contains an datatype that is not valid in an Rdb/VMS field. User Action: Redefine the field using a valid Rdb/VMS datatype, and include that field in the database.
INVALID_RDB_REL
record contains invalid attributes for an Rdb/VMS relation Explanation: The record structure is either a computed record or has dimension. Neither of these can be represented in an Rdb/VMS relation. User Action: In the case of records with dimension, normalize the data. In the case of computed records, define a view in the Rdb/VMS database.
INVALID_RDB_RSE
RSE expression is not valid for Rdb/VMS Explanation: The record selection expression in a CDD/Plus expression buffer could not be mapped onto a valid Rdb/VMS record selection expression. User Action: Change the record selection expression so that each relation reference is a valid relation name or relation id.
INVALID_SCALE
field contains an invalid SCALE Explanation: A dictionary field contains a scale that cannot be represented as a word value. User Action: If you did not modify the field protocol, submit an SPR.
INVALID_SEG_LEN
field contains an invalid SEGMENT LENGTH Explanation: A dictionary field contains a segment length that cannot represented as a word value. User Action: If you did not modify the field protocol, submit an SPR.
INVALID_SEG_SUBTYPE
field subtype is not understood by Rdb/VMS Explanation: The field specified for use as an Rdb/VMS field has a subtype that Rdb/VMS does not understand. User Action: Specify fields with subtypes that Rdb/VMS understands.
INVALID_SEG_TYPE
field contains an invalid SEGMENT SUBTYPE Explanation: A dictionary field contains a segment subtype that cannot be represented as a word value.. User Action: If you did not modify the field protocol, submit an SPR.
INVCPYPR
invalid copy pair Explanation: The source and target patterns you specified are not legal. You must reenter the COPY command with valid wild cards and valid source and target patterns. User Action: Check documentation of the COPY command for the valid input and output wild card combinations.
INVCVT
invalid conversion, from: <value> to: <value> Explanation: The dictionary was not able to convert a data value to the necessary type. You may have specified an attribute value using a datatype that could not be converted to the datatype of the attribute; or the problem could have been caused by incompatible changes to protocols. User Action: If the error was returned when defining elements, use attribute values compatible with the declared datatype of the attributes. If the error was returned when reading elements, the element protocol has been changed so that old attribute values can no longer be read. They can be made available again by changing them back.
INVDICVS
invalid dictionary version; expected <value>.<value>, found <value>.<value> Explanation: The format of CDD/Plus dictionaries expected by the code did not match the dictionary found. User Action: Recreate the dictionary, or use the release of CDD/Plus that created the dictionary. Also, please submit an SPR.
INVDTYPE
invalid datatype conversion: from <value> to <value> Explanation: You cannot convert from the first datatype to the second. User Action: Use attribute values compatible with the declared datatype of the attributes. If this error is returned to you by your own program, submit an SPR.
INVEDIT_STRING
edit string is not translatable Explanation: The edit string in the DMU dictionary definition is not translatable to a CDO definition. User Action: Reenter the edit string with CDO.
INVMAJOR
invalid major version number. Expected: <value> Found: <value> Explanation: The major version number in a CDD/Plus buffer did not match that expected by CDD/Plus. The first signal parameter is the major version number expected by CDD/Plus; the second is the major version number that you supplied. User Action: Specify buffers using version numbers expected by the release of CDD/Plus you are using.
INVMINOR
invalid minor version number. Expected: <value> Found: <value> Explanation: The minor version number in a CDD/Plus buffer was greater than that expected by CDD/Plus. The first signal parameter is the largest minor version number acceptable to CDD/Plus; the second is the minor version number that you supplied. User Action: Specify buffers using version numbers expected by the release of CDD/Plus you are using.
INVPARM
invalid parameter supplied Explanation: An invalid parameter (or combination or of parameters) was supplied to the call. User Action: Check that you passed correct values for all parameters, and that you have not included an invalid combination of optional parameters.
INVREC
DMU record is not translatable to CDO format Explanation: The DMU record is not translatable to CDO format. User Action: Delete the DMU definition and use CDO to enter the equivalent definition directly into a CDO dictionary.
INV_BOOL_EXP
boolean expression not valid for Rdb/VMS Explanation: The boolean expression for an entity contained an operator that does not have an Rdb/VMS equivalent. User Action: Rewrite the boolean expression using only valid Rdb/VMS operators.
INV_CTX_NAME
unknown relation context for field in expression Explanation: A field reference contained a context name for a relation that was not defined within the scope of this field's usage. For example, the expression referenced a field from another record. User Action: Exclude this field from this record, or create a view using both relations.
INV_EXP_VTB
VIA TABLE not supported in Rdb/VMS Explanation: An expression contained a VIA TABLE expression which cannot be represented in Rdb/VMS. User Action: Do not include DATATRIEVE domain definitions in Rdb/VMS databases.
INV_FLD_EXP
field contains more than one field name Explanation: You made a field reference that contained more than one field segment; for example, "FOO IN BAR", which is not legal in Rdb/VMS. This type of reference can only occur in records with nested structures, which are invalid in Rdb/VMS. User Action: Remove the structure declarations, and then include the record in Rdb/VMS.
INV_FUN_EXP
function expressions are invalid for Rdb/VMS Explanation: Rdb/VMS cannot handle function expressions. User Action: Use DATATRIEVE.
INV_LOG_EXP
logical expression contained an operator not valid in Rdb/VMS Explanation: The logical expression operator MISSING is not supported by Rdb/VMS. User Action: Do not use MISSING as a logical expression operator.
INV_MATH_EXP
arithmetic expression contained an operator not valid in Rdb/VMS Explanation: The arithmetic expression contained either a ASL, ASR or ONES COMPLIMENT operator, none of which are valid Rdb/VMS operators. User Action: Do not use any of these operators in a definition that will be included in an Rdb/VMS database.
INV_RDB_REL_EXP
relational expression contained an operator not valid in Rdb/VMS Explanation: The CDD$K_EXP_INT (in table) relational operator is invalid in Rdb/VMS. User Action: Do not use any of these operators in a definition that will be included in an Rdb/VMS database.
INV_STAT_EXP
statistical expression contained an operator not valid in Rdb/VMS Explanation: The expression contained a CDD$K_EXP_SDV, CDD$K_EXP_RCT or CDD$K_EXP_RTT operator, or it did not contain a record selection expression for operators where Rdb/VMS requires one. User Action: Do not use any of these operators in a definition that will be included in an Rdb/VMS database.
INV_STR_OP
string expression contained an operator not valid in Rdb/VMS Explanation: CDD$K_EXP_AS2, CDD$K_EXP_ASK, CDD$K_EXP_CO2, CDD$K_EXP_CO3, and CDD$K_EXP_FORMAT are not supported by Rdb/VMS. User Action: Do not use any of these operators in a definition that will be included in an Rdb/VMS database.
INV_VAL_EXP
value expression contained an operator not valid in Rdb/VMS Explanation: The expression contained an operator that does not have an Rdb/VMS equivalent. User Action: Use only operators that have Rdb/VMS equivalents in definitions that will be included in an Rdb/VMS database.
IS_COMPUTED
Rdb/VMS fields cannot be COMPUTED BY Explanation: A dictionary field includes a COMPUTED BY clause. These cannot be directly stored into an Rdb/VMS database. User Action: Use another field.
JNLBADSIZE
jounalled size of object does not match real size protocol: <value> V<value>.<value>, real size: <value>, journalled size: <value> Explanation: CDD/Plus is trying to recover from a corrupt journal file. An object definition has been journalled. The size of that definition does not match the size of objects of that type in this dictionary. User Action: Submit an SPR.
JNLCORRUPT
journal file <text> is corrupt Explanation: The named journal file is corrupt. User Action: Please submit an SPR listing the actions that produced this journal file and the journal file itself if possible. Delete the journal file and use VERIFY/FIX to return the dictionary to a known state.
JNLNOTOTHER
recovery of single-dictionary object Explanation: This is an internal CDD/Plus function box bug. The only objects that need to be journalled are the ones split across databases. In this case, CDD/Plus tried to journal an object that is not split. User Action: Submit an SPR.
LABDUPDEF
duplicate definition of label: <value> Explanation: The given label was defined more than once in a metadata buffer. User Action: Each label value may be defined only once per buffer.
LABUNRES
unresolved label: <value> Explanation: The given label was used but not defined in a metadata buffer. User Action: Define the label to refer to one of the elements in the buffer.
LASTVERSION
this is the most recent version Explanation: An attempt was made to get the next more recent version of an entity, but there is none. User Action: None.
LNKNOTAPP
link not applicable. Link type: <value> Object type: <value> Explanation: You attempted to link two objects, but the specified owner of the link is not a type of object that may own the specified type of link. The link and object types are in the signal parameters. This error indicates a bug in the dictionary software. User Action: Submit an SPR.
LOCK_CONFLICT
operation failed because resource was locked Explanation: You are attempting to access a locked dictionary directory, subdictionary, or object that another user has locked. User Action: Try again. If you still get a LOCK_CONFLICT error, try again later.
MBLRSYNERR
syntax error in MBLR buffer at offset <value> Explanation: A syntax error was discovered in a MBLR buffer passed to CDD/Plus's DSRI call interface. The signal parameter has the offset of the error from the start of the buffer. User Action: Examine the buffer to determine the reason for the syntax error.
MESS
entity has messages Explanation: There are messages on the entity. User Action: Use CDD$CHECK_MESSAGES to find out what the messages are. Use CDD$CLEAR_MESSAGES to clear the messages.
MISSING
attribute is not asserted on this entity Explanation: An attribute value has been requested, but the attribute is not asserted on the given entity. User Action: None.
MORE_TO_COME
there is more of the definition to come Explanation: You requested the definition of an object, but the buffer provided is too small; as much of the definition as would fit has been returned, but another call with the same entity handle should be made to return the rest. User Action: Call the same routine again with a new buffer. If the second call returns normally, the two buffers should be concatenated before being interpreted. If the second call returns MORE_TO_COME again, repeat the process. Do not call any other CDD/Plus routine while attempting to retrieve the entire buffer.
MULTIVALUE
multivalued expression used in single value context
Explanation: An value expression of the form
<within-expression><attribute-protocol>
was used where only a single value is legal, and the within
expression contained more than one element.
User Action: Make sure the within expression specifies a unique
element when you use value expressions of this form.
MUSTABORT
previous errors require that session abort Explanation: A user of the CDD/Plus call interface specified that one read/write transaction was to span the entire session. An error occurred during that session, requiring that it be aborted. Instead of aborting, another call to CDD/Plus was made. User Action: Abort sessions with long transactions immediately after an error.
NAMCONFLICT
entity version name conflicts with previous version's name Explanation: Two versions of the same entity have different names. User Action: Submit an SPR. This situation should not occur.
NEEDAST
AST's are disabled Explanation: The dictonary detected that user mode AST's were disabled. User Action: Enable user mode AST's when you access the dictionary.
NEEDDIRNAME
need directory name on define element Explanation: CDD$DEFINE_ELEMENT was called with a metadata buffer version 1.1 or below and no directory name. User Action: Always specify a directory name for the top level element being defined when metadata buffer 1.0 or 1.1 is used.
NEWTXN
a new transaction has been started, fetch cannot continue Explanation: A new transaction was started during a fetch stream; that fetch stream is no longer valid. User Action: Submit an SPR.
NIU
name in use in the directory - anchor <text>, path <text> Explanation: A directory entry with the same name as provided exists, and has a different type than the type you specified. User Action: Make sure that new versions of elements have the same types as the previous verion.
NMD
no more directories Explanation: A search for directories is completed. There are no more directories. User Action: None.
NMH
no more hierarchies Explanation: A search-listed anchor has found no more hierarchies User Action: None.
NNF
name not found Explanation: The name you asked the directory system to look up does not exist in the directory system. User Action: None.
NOATTACH
unable to attach to dictionary database Explanation: CDD/Plus was unable to attach one of the databases it needed. User Action: Examine the following error messages to determine the cause of the problem.
NOCDD
there is no CDD/Plus definition for this entity
Explanation: This message appears when the following conditions
are TRUE:
o INTEGRATE is updating an Rdb/VMS database from information
in the CDD/Plus dictionary
o a field, relation, index, or constraint exists in the
Rdb/VMS database that is not described by metadata in the
CDD/Plus dictionary
This message warns you that data will be lost if this object is
deleted.
User Action: Answer YES (true) if INTEGRATE may perform the
operation. Answer NO (false) if INTEGRATE may not delete the
object.
Your response depends on your interface to INTEGRATE. If you
are using an interactive utility like RDO, consult the RDO
documentation. If you are using the CDD/Plus call interface,
you should refer to the CDD/Plus Call Interface manual.
NOCDDFLD
the field <text> is not defined in the dictionary Explanation: A field defined in a database is not defined in the dictionary metadata for that database. If the database is changed to match the dictionary, data associated with this field will be lost. See the documentation of the NOCDD error message for more details. User Action: Answer YES if the field and data associated with it should be deleted from the database.
NOCDDREL
the relation <text> is not defined in the dictionary Explanation: A relation defined in a database is not defined in the dictionary metadata for that database. If the database is changed to match the dictionary, data associated with this relation will be lost. See the documentation of the NOCDD error message for more details. User Action: Answer YES if the relation and data associated with it should be deleted from the database.
NOCOMPAT
you attempted a CDO dictionary operation on a DMU dictionary node <text> Explanation: You tried to perform a CDO dictionary operation on an entity that is stored in the DMU dictionary. User Action: Use DMU to operate on DMU entities.
NOCONEXP
no constraint expression Explanation: There is no BLR expression associated with a constraint. User Action: Define your constraints with RDO.
NODEFINE
no privilege to define new version <text> Explanation: You do not have sufficient privilege to define a new version of this element. User Action: Have the owner of the element set its protection so that you can define a new version.
NODELETE
no privilege to delete <text> Explanation: You tried to delete an element you do not have the privilege to delete. User Action: Have the owner of the element set its protection so that you can delete it.
NODICNODE
no dictionary node in remote dictionary <text>
NODICTUPLE
no dictionary entry in database Explanation: The database has not been set up as a dictionary. User Action: Specify a valid CDO dictionary anchor.
NODIRSESS
no directory session started Explanation: A directory operation requiring a directory session was attempted without a session being started User Action: Submit an SPR.
NOJNLCRE
cannot create journal file in anchor <text> Explanation: CDD/Plus was unable to create the journal file in the given anchor. User Action: Examine the following error messages to determine the reason.
NOLINK
objects are not linked Explanation: The dictionary system expected to find two objects linked (expected to find a member object linked to a relationship, for instance), but did not. User Action: Submit an SPR. Use VERIFY/RECOVER on the dictionary.
NOMESS
no messages Explanation: There are no messages on the entity. User Action: None.
NOMOD
entity or relationship is not being defined or modified Explanation: An attempt was made to set an attribute, modify an attribute or link another object to an object which is not being defined or modified. This is an internal bug. User Action: Submit an SPR.
NOMODIFY
no privilege to modify <text> Explanation: You tried to modify an element you do not have the privilege to modify. User Action: Have the owner of the element set its protection so that you can modify it.
NOOWNER
sub-object has no owner Explanation: An attempt was made to read a sub-object that has no owner. User Action: Submit an SPR.
NOPRIMARY
no primary database Explanation: The dictionary has not yet determined a primary database for this transaction. User Action: Submit an SPR. This should never happen.
NOPROMOD
cannot modify CDD/Plus object of protocol type <value> Explanation: You attempted to modify a CDD/Plus protocol using DEFINE_ELEMENT or CHANGE_ELEMENT. This is illegal. User Action: Call the proper routine to manipulate the given protocol; DEFINE_PROTOCOL to change protocols, FORCE or CLEAR_MESSAGES to operate on messages, or DEFINE_ENTRY for changing names.
NOPRONAME
protocol name must be supplied Explanation: When defining entity, attribute, or relationship types, the CDD$PROCESSING_NAME attribute must be supplied. User Action: Always specify the CDD$PROCESSING_NAME attribute when defining protocols.
NOPROTOCOL
requested protocol not found Explanation: The protocol you requested was not found. Since that protocol must be a CDD$DATA_ELEMENT or CDD$DATA_AGGREGATE, this is a severe error. User Action: Submit a SPR.
NOPROTPRV
error using protocol definition, no privilege for attempted operation Explanation: You were denied access to an element because the element's protocol protects elements of that type from that access by your UIC or UIC class. User Action: Get the protection on the element type changed to allow the access desired.
NOREAD
no privilege to read <text> Explanation: You tried to read an element you do not have the privilege to read. User Action: Have the owner of the element set its protection so that you can read it.
NORECOVER
dictionary does not need recovery Explanation: VERIFY determined that the given dictionary did not need to be recovered. User Action: None.
NORECOVERY
decision whether to recover has not been made Explanation: CDD/Plus is trying to recover from a corrupt journal file. Certain operations are never the first to be journalled. They depend on the previous operations to determine whether to recover or not. In this case, such an operation was the first encountered in the journal file. User Action: Submit an SPR.
NOREMOTE
operation not supported to a remote node
NORENAME
cannot rename protocols Explanation: The names of CDD/Plus protocols may not be changed. User Action: Define a new protocol with a unique name.
NOSETSYS
can't set system attributes, attribute <text> is a system attribute Explanation: You attempted to set the value of a system attribute. This cannot be done; their value is set by the system and cannot be changed by users. User Action: Repeat the operation without setting the system attributes.
NOSUCHOBJ
specified object not found Explanation: The dictionary expected to find an object, but the object was not there. User Action: Submit an SPR.
NOTADIC
Does not contain a CDO dictionary: <text> Explanation: The named file does not contain a CDO dictionary. User Action: Specify a valid CDO dictionary.
NOTAREL
object is not a relationship Explanation: You tried to treat an entity as a relationship. For example, you tried to give an entity an owner or member. User Action: Check the operation for entity types that appear where relationship types are required.
NOTAVAIL
dictionary <text> not available; dangling references in that dictionary Explanation: Two dictionary databases refer to each other, and one of them is being deleted. The other is not available at this time; it is on a remote node that is down, or on a device that is not mounted. The deletion of the dictionary will succeed, but the dictionary that is not available will still refer to it. User Action: When the dictionary becomes available, VERIFY/FIX/LOCATION will get rid of the reference.
NOTDICENTRY
this is not a dictionary entity Explanation: Indicates that the element of a fetch stream being returned is a directory entry that does not name a dictionary entity; the entity handle is left zero. User Action: The directory information buffer contains the name of the directory entry. Do not attempt to use the entity handle in another CDD/Plus call.
NOTEMPLATE
no template dictionary available Explanation: The dictionary template, CDD$TEMPLATE, did not exist or could not be used. A dictionary was created by from scratch. User Action: Determine why the template could not be used. If there are no special protocols in the template, the dictionary that has been created is usable.
NOTEXSTINDB
the element <text> does not exist in the database Explanation: You specified an element that does not exist in the database. User Action: Specify an existing element.
NOTINDB
dictionary database does not contain <text> Explanation: The database does not contain the referenced entity. User Action: Check the entity name supplied. Generally entities are sought by matching the processing name to the name supplied.
NOTYET
feature not implemented: <text> Explanation: You tried to use a feature of the dictionary that has not yet been implemented. User Action: None.
NOT_A_DB
<text>, is not the name of a CDD/Plus dictionary database Explanation: You specified a name for a database that was not the name of a CDD/Plus dictionary database. User Action: Reissue the command with the name of a CDD/Plus dictionary database.
NOT_A_SESSION
cannot end a transaction with a call to CDD$END_SESSION Explanation: You tried to end a transaction (started with a call to CDD$RDB_START_TRANSACTION) with a call to CDD$END_SESSION. User Action: End the transaction with a call to CDD$RDB_COMMIT_TRANSACTION or CDD$RDB_ROLLBACK_TRANSACTION.
NOT_A_TXN
cannot end a session with COMMIT or ROLLBACK transaction Explanation: CDD$RDB_COMMIT_TRANSACTION or CDD$RDB_ROLLBACK_TRANSACTION was called with a session handle and not a transaction handle. User Action: Correct the code to pass the proper handle to the proper routine. If you were using RDO, SQL, or RALLY, submit an SPR to the appropriate product.
NOT_FOUND_1
<text> <text> not found in dictionary Explanation: An entity of the given type with the given dictionary path name was not found in the dictionary. User Action: Specify an existing entity in the dictionary.
NOT_FOUND_2
<text> <text> not found in <text> <text> Explanation: An entity of the first type with the first processing name is not owned by the entity of the second type and second path name. User Action: Specify an existing entity.
NOT_FOUND_3
<text> <text> not found in <text> <text> within <text> <text> Explanation: An entity of the first type with the first processing name is not owned by the entity of the second type and second processing name within the entity of the third type with the third path name. User Action: Specify an existing entity.
NOT_IN_TXN
database not in this transaction Explanation: The database handle you passed on the call was not part of the active transaction. User Action: Include this database as one of the databases in the START_TRANSACTION call.
NOT_VALID_TYPE
Invalid entity type requested Explanation: You supplied a type of entity that cannot be described. The type being asked for is a DSRI type (e.g. MBLR$K_FIELD_DEF) as opposed to a CDD/Plus entity type. This message can also mean that the type of database object you specified cannot be returned. User Action: This message is caused by an internal CDD/Plus bug. Submit an SPR.
NOUPGRADE
cannot upgrade to protocol version <value>.<value> Explanation: The target dictionary cannot be upgraded to a new version of protocols. User Action: When you first attach to the dictionary, an attempt will be made to upgrade the protocol. If you receive this message and you have not changed the protocol, please submit an SPR. If you have changed protocols, see the following error messages for information on how to fix this problem.
NOVALUE
directory entry does not refer to a dictionary element Explanation: An attempt was made to read the dictionary element associated with a directory name that has no dictionary element. This error message usually occurs when the name you specified for a definition is already used as a directory name. User Action: Submit an SPR.
NOVERSION
the given object type does not have versions Explanation: Another version of an object has been requested, but only one version of the object exists, and CDD/Plus does not allow you to define new versions of the object. User Action: Submit an SPR.
NOWILDCARD
wild cards in '<text>' not allowed for attempted operation Explanation: You tried to use wild cards for an operation for which wild card processing is not performed. User Action: Specify a specific name for the element.
NOWITHIN
no entities match within clause Explanation: You used a within clause to specify the target of a CHANGE command or the member of a new relationship, but no entities in the dictionary matched the entity in the within clause. User Action: Make sure that the within clause specifies an existing element.
NOWRITE
no privilege to write <text> Explanation: You tried to write an element of a type you do not have the privilege to write. User Action: Have the dictionary maintainer set the protection of the element type to allow you to create elements of that type.
NOXFND
protocol not supported by translator: <text> Explanation: You tried to access a DMU entity though the CDO interface. The DMU entity was not a CDD$RECORD. User Action: Access the entity through DMU.
NOXREQ
requested protocol not supported by translator: <value> Explanation: You asked for a DMU entity other than a record or field through the CDO interface. User Action: Access the entity through DMU.
NO_ATT_DB
error attaching to database Explanation: An unforeseen error occurred while trying to attach to the dictionary's representation of the Rdb/VMS database. User Action: See the following messages for additional information that may help you correct the problem.
NO_AUTOMATIC_UPGRADE
upgrade protocols using CONVERT/DICTIONARY
NO_COM_TXN
error committing transaction Explanation: An unforeseen error occurred while trying to commit the dictionary's Rdb/VMS Call Interface transaction. User Action: See the following messages for additional information that may help you correct the problem.
NO_CRE_DB
error creating database definition in dictionary Explanation: An unforeseen error occurred during the creation of the dictionary's representation of the Rdb/VMS database. User Action: See the following messages for additional information that may help you correct the problem.
NO_DB_NAME
no (or a null) database filename was specified Explanation: You did not supply or supplied a null database pathname during a CREATE/DEFINE DATABASE command. This error is usually caused by a bug in the product using the dictionary. User Action: Submit an SPR to the product (RDO, for example) being used at the time you received this message.
NO_DEL_DB
error deleting database Explanation: An unforeseen error occurred during the deletion of the dictionary's representation of the Rdb/VMS database. User Action: See the following messages for additional information that may help you correct the problem.
NO_DESCRIPTION
error returning description of dictionary entity Explanation: An error occurred during the retrieval of a dictionary entity. This unexpeced error is returned in the following message. User Action: Consult the following message, correct the problem and retry the operation.
NO_DET_DB
error detaching from database Explanation: An unforeseen error occurred while trying to detach from the dictionary's representation of the Rdb/VMS database. User Action: See the following messages for additional information that may help you correct the problem.
NO_PATH
no (or a null) database pathname was specified Explanation: You supplied a database pathname that was either null or not specified. This error is usually caused by a bug in the product using the dictionary. User Action: Submit an SPR to the product (RDO, for example) being used at the time you received this message.
NO_ROL_TXN
error rolling back transaction Explanation: An unforeseen error occurred while trying to rollback the dictionary's Rdb/VMS Call Interface transaction. User Action: See the following messages for additional information that may help you correct the problem.
NO_ST_TXN
error attaching to database Explanation: An unforeseen error occurred while trying to attach to the dictionary's representation of the Rdb/VMS database. User Action: See the following messages for additional information that may help you correct the problem.
NTL
name longer than <value> characters Explanation: The given name contains a component longer than the maximum. User Action: Make sure all name components are under the maximum length.
NVREC
new-version messages need to be sent to dictionary at <text> Explanation: VERIFY determined that a new version of an entity was created and new version messages need to be sent to users of the entity in the named dictionary. User Action: None. When that dictionary becomes available the messages will be sent automatically.
OBJDEL
object has been deleted Explanation: You tried to use the handle of an object which has been deleted. User Action: Once an object is deleted, handles you may have to the deleted object are rendered invalid. Do not attempt to use these handles in later calls.
OBSDIRPAR
directory parameter is obsolete Explanation: CDD$DEFINE_ELEMENT was called with metadata buffer version 1.2 or higher and the directory parameter specified. User Action: The directory parameter is obselete on metadata buffers version 1.2 or higher. Instead, directory names should be defined in the metadata buffer itself.
OKEXTREF
external reference to <text> from <text> is okay Explanation: The pointer from the second dictionary to the first is accurate. Had the first dictionary been moved or had the name of its containing directory or disk been changed, the pointer might have been wrong. User Action: None.
OKLOC
dictionary <text> location self-reference is okay Explanation: The dictionary's own pointer indicating its directory name is accurate. It might have been wrong had it been moved or had the name of its containing directory or disk been changed. User Action: None.
OKNAME
the name <text> corresponds to a dictionary element Explanation: The given name refers to a valid, existing dictionary element. User Action: None.
ONEPRIMARY
transaction modifying multiple databases
Explanation: A CDD/Plus transaction allows you to make changes
to objects in only one database. Two ways you could have caused
this message are:
1. In the CHANGE_ELEMENT call, you specified with the
sub-object clause that you wanted to change elements in
three or more dictionaries.
2. You set the long_transaction parameter at the start of the
session, and you tried to update more than one dictionary in
the session.
User Action: If you caused this message in some other way,
submit an SPR.
ONLYNAME
cannot remove the only name from element <text>
OPENSESS
number of open sessions at sign-out: <value> Explanation: There was at least one dictionary session open when you called CDD$SIGN_OUT. The number of such sessions is in the FAO parameter. These sessions were aborted, and the sign-out was successful. User Action: None. If you end all sessions before you call CDD$SIGN_OUT, you will prevent this status from being returned.
ORGREF
cannot convert original to copy Explanation: CDD/Plus attempted to convert an original copy of an element to a subsidiary copy of that element. This is not allowed. User Action: Submit an SPR.
ORPHAN
metadata buffer would create orphans Explanation: The metadata buffer specified on define or modify would create entities that are neither owned by another entity nor are members of any relationships. User Action: Make sure that when all changes in a call to CDD/Plus are made, all elements have either a name or an owning element.
OVERFLOW
data value overflow Explanation: A data value was changed to a datatype too limited in range to hold it. You may have specified an attribute value using a datatype that could not be converted to the datatype of the attribute. Incompatible changes to protocols could also cause this problem. User Action: Use a smaller attribute value, or change the the protocol back to the way it was.
PRINOTORG
prior version not original Explanation: An attempt was made to create a new version of an element where the prior version was not the original. This usually happens when a directory entry is created for an element in an anchor other than the one where it was originally created, and then a new definition is specified for that directory name. User Action: Make sure that wherever a new version of an element is created, it is created in the same dictionary that the original version of the element was created in.
PROEXISTS
protocol <value> exists in dictionary Explanation: You tried to define a new protocol with the same tag value as an existing protocol. User Action: Each new protocol must have a unique tag value.
PROLATER
a version of protocol <value> already exists Explanation: You attempted to define a protocol that already exists in the dictionary. User Action: Make sure you specify a unique tag value for each protocol.
PRONAMEX
protocol name <text> exists Explanation: The name for the new protocol already exists in the dictionary. User Action: Give each different protocol in the dictionary a different name.
PROTINUSE
protocol <text> uses a protocol being deleted; deletion not allowed Explanation: You tried to delete a protocol that is being used by other protocols. For example, CDD/Plus does not allow you to delete an attribute type that is used by entity or relationship types. User Action: Delete all related protocols on a single call, or modify the using protocol to not use the protocol to be deleted.
PRSERROR
error reading element from dictionary Explanation: This error is returned by the generic parser when a message vector is returned for an element. User Action: Examine the message vector to determine why the error occurred.
PRSMISSING
attribute value is missing Explanation: This error is returned by the generic parser when you request an attribute value that is not in the buffer. User Action: None.
PRSNODIR
there is no directory information Explanation: This error is returned by the generic parser when you request directory information and there is none in the buffer. User Action: None.
PRSNOENT
no entity of the given type is defined Explanation: This error is returned by the generic parser when you request an entity of a type not defined in the buffer. User Action: None.
PRSNOERR
the element does not have an associated error Explanation: This error is returned by the generic parser when you request the error associated with an element but the element was returned successfully. User Action: None.
PRSNOHNDL
no handle was returned for the element Explanation: This error is returned by the generic parser when you request the handle associated with an element but none was defined the buffer. User Action: None.
PRSNOKIND
no element kind is available for the element Explanation: This error is returned by the generic parser when you request the element kind but there is an associated error or only a handle is available. User Action: None.
PRSNONAME
no directory name available for this entity Explanation: This error is returned by the generic parser when you request a directory name but there is none specified in the buffer. User Action: None
PRSNOTARG
there is no target for the relationship Explanation: This error is returned by the generic parser when you request the target of a relationship but no target is available in the buffer. User Action: None.
PRSNOTYPE
no element type is available for the element Explanation: This error is returned by the generic parser when the you request the element type but there is an associated error or only a handle is available. User Action: None.
READERR
errors occurred reading element definition Explanation: A call to read an element definition is returning with errors. The output metadata buffer is valid but contains error clauses to describe what parts of the definition could not be read. User Action: Be prepared to handle the error clauses when the metadata buffer is parsed.
REBUILD
rebuilding directory structure for <text> Explanation: The directory system is being rebuilt for the given anchor. User Action: None.
RECNOTOTHER
recovery of single-dictionary object Explanation: CDD/Plus is trying to recover from a corrupt journal file. The only objects that need to be journalled are the ones split across databases. The object that was journalled in this case was not split across databases. User Action: Submit an SPR.
RECNOTREL
journalled object is not relationship: protocol <value> V<value>.<value> Explanation: CDD/Plus is trying to recover from a corrupt journal file. Journalled objects are always relationships, because only relationships get split across databases. This journalled object was not a relationship. User Action: Submit an SPR.
RECRECDIR
recovery record contains directory operation Explanation: CDD/Plus is trying to recover from a corrupt journal file. A journal file should contain either directory recovery operations or dictionary recovery operations, but not both. In this case, after doing some dictionary recovery, a journal record journalling a directory operation was encountered. User Action: Submit an SPR.
REFREF
cannot make a copy of a copy Explanation: CDD/Plus attempted to make a subsidary copy of an element from another subsidiary copy. This is not allowed. User Action: Submit an SPR.
RELEXISTS
relationship type <value> already exists Explanation: The tag value given for a new relationship protocol is in use in the dictionary. User Action: Provide a unique tag for the new protocol.
RELNOTFND
relationship member not found in dictionary Explanation: You are calling CDD$LIB_CREATE_SIMPLE_REL and the relationship member specified does not exist in the dictionary. User Action: Specify an existing dictionary definition.
RELPROUSE
relationship protocol <value> V<value>.<value> is in use Explanation: You tried to delete a relationship protocol that is used by object types, or that is a member of a relationship. User Action: Delete all related protocols in a single call, or delete the protocols using the protocol to be deleted first.
REQATTMIS
required attribute <text> not specified Explanation: You have not specified all the required attributes for the object you are changing or defining. User Action: Specify all the required attributes for the object.
REQPARAM
required parameter <value> missing Explanation: You omitted a required parameter on a call to CDD/Plus. User Action: Make the call again with all the required parameters.
RETRY
retry operation Explanation: Indicates that the attempted operation failed due to a temporary condition. User Action: Abort the current transaction and try the operation again in a new transaction. The most common reason for this message is a deadlock reported by Rdb/VMS.
RSERR
error on remote node Explanation: An error in the remote server caused termination of the call. User Action: Examine the message vector to determine the cause of this error.
RTLERR
run-time library error Explanation: An error occurred while CDD/Plus was accessing the VMS Run-Time Library. User Action: See the following messages to determine the cause of the error.
SEGSTRINFO
invalid segemented string info Explanation: The dictionary could not find out important information about segmented strings it uses. User Action: The dictionary is corrupt. Submit an SPR.
SESSACTIVE
session still active Explanation: CDD$END_SESSION was not called to end a common session before calling CDD$DETACH. User Action: Call CDD$END_SESSION before calling CDD$DETACH.
SSERR
system service error Explanation: A system service produced an unexpected error. User Action: The following messages from the system service provide detail about the error.
STARTSESS
error starting session Explanation: An error occurred starting a session. User Action: The following messages tell what caused the error.
STWONE
protocols must start with 1.0 Explanation: The dictionary found itself trying to create a new protocol with a protocol version number other than 1.0. User Action: Submit an SPR.
ST_TXN_BAD_ARGS
number of databases does not match arglist in start transaction Explanation: The actual number of arguments supplied to a start transaction does not match what is expected from the sum of the fixed arguments and the number of databases being passed. User Action: Correct the caller of this function. If you were using RDO, SQL, or RALLY, submit an SPR to the appropriate product.
SYNOFF
syntax error in description buffer at offset <value> Explanation: A syntax error was discovered in a description buffer passed to CDD/Plus. The signal parameter has the offset of the error from the start of the buffer. User Action: Examine the buffer to determine the reason for the syntax error.
SYNTAX
syntax error in description buffer at <hex-value> Explanation: A syntax error was discovered in a description buffer passed to CDD/Plus. The signal parameter has the absolute address of the error. User Action: If the address is in a buffer you provided, examine the buffer to determine the reason for the syntax error. Otherwise, submit an SPR.
TRUNC
output value truncated Explanation: A string value was moved to a block of memory too small to hold it all, and some characters were lost. This error usually occurs when a text attribute is assigned a value it is too small to hold. This error may also occur if a protocol modification reduces the size of a text attribute. User Action: Specify a shorter string, or increase the size of the attribute in the protocol.
TXN_HNDL_ZERO
transaction handle is zero Explanation: You passed a transaction handle of zero where a non-zero handle was expected. User Action: Return the handle from START_TRANSACTION.
UNDERFLOW
data value underflow Explanation: A data value was changed to a datatype too limited in range to hold it. You specified an attribute value using a datatype that could not be converted to the datatype of the attribute, or you may have made incompatible changes to protocols. User Action: Change the datatype of the attribute to one with more precision.
VALDEFFAIL
entity <text> definition failed validation <text> Explanation: A validation failed while checking the definition of an entity and any relationships or attributes it may have created, causing the define to be aborted. User Action: Determine what condition the validation is checking for, and change the definition to conform.
VALDEFWARN
entity <text> definition failed validation <text> Explanation: A validation failed while checking the definitions of an entity and any relationships or attributes it may have defined. User Action: Change the attribute value to meet the constraints of the validation.
VALMODFAIL
entity <text> modification failed validation <text> Explanation: A validation failed while checking the modifications to an entity and any relationships or attributes it may have modified, causing the modify to be aborted. User Action: Determine what condition the validation is checking for, and change the definition to conform.
VALMODWARN
entity <text> modification failed validation <text> Explanation: A validation failed while checking the modifications to an entity and any relationships or attributes it may have modified. User Action: Examine the modification to see why it failed the validation, and change it accordingly.
VALTOOLONG
unstructured value is too long Explanation: An unstructured value exceeds CDD/Plus's limit of 4,294,967,295 bytes. The dictionary information has been tampered with by some other facility than CDD/Plus. The dictionary is now corrupt. User Action: Submit an SPR.
VERINC
verification incomplete due to errors Explanation: Errors prevented all checks from being made. Some inconsistancies may have been found and corrected, but some may still exist. User Action: Error messages printed during the course of the verification will explain the precise problems. If the problems are transient, such as other dictionary databases being unreachable, try again later.
WITHINAMB
within expression is ambiguous Explanation: A within expression was used to specify the target of a relationship, but more than one entity will satisfy it. User Action: Make sure that within expressions specifying relationship targets specify exactly one element.
WRONGBUF
wrong description buffer for this call. Expected: <value> Found: <value> Explanation: The description buffer passed as a parameter to CDD/Plus had the wrong type value in its block header. User Action: Pass the buffer expected by the call.
WRONGENTTYP
wrong entity type for description buffer Expected: <value> V<value>.<value> Found: <value> V<value>.<value> Explanation: The description buffer indicating what parts of an entity should be returned specifies another type of entity than the one given. User Action: Specify an entity type in the buffer that matches the entity type of the entity.
XREF
external reference missing Explanation: A local copy of an element defined in another dictionary has no pointer back to the original element. The dictionary is now corrupt. User Action: Submit an SPR detailing the sequence of events that produced this situation, if possible. Use VERIFY to fix the corrupt dictionary.
CDO Error
Additional information available:
AMBIGBADSEGBAD_NAMEBAD_QUALBUGCHKCABORT
CAPTIVECNTCVTCTRLZCTXUNDEFDBMBRDENSELYPACKED
DICDELDICMOVEDICTVERDIRDELENTDELENTDELDESC
ERRCHANGEERRCHGPROTERRCHKMSGERRCLEAR
ERRCOPYERRDEFINEERRDEFPROTERRDELETE
ERRDELPROTERRDIREERRDUMPERREADACLERRENTER
ERREXTRACTERRINHNDLRERRMODACLERRMOVE
ERRPURGEERRSETDEFERRSHOWERRSHOWDEFERRSHOWPROT
ERRSIGNOUTERRVERIFYEXCMAXCTXEXPREQ
ILLCHARILLQUALINVBUFINVDTYPINVEDIT_STRINGINVEXP
INVNAMEINVNUMINVPATHINVPOSINVVBUFINVVERINVVERSKIP
KWSYNENDKWSYNTAXMESSAGESMISMATCHMISMATCH_DICT
MULSPECATRMUL_SEG_TXTNEEDSEGNOACENOACL
NOACLATTNOAREANOAUDITNOBATCHNOCDOSYNTAXNOCONV
NODMUINFONOEXPNOMESSAGESNOPRONAM
NOPROTAGNOTCHANGEDNOTCREATEDNOTDELETED
NOTFOUNDNOTSHOWNNOTWITHINNOTYETONECHAR
ONLEVLOPNOVRFLOOSOVRFLOPSOVRFLOPURGETHING
READERRRECSIZRMS_ONLYSSYNTAXSTARTATZEROTROVRFLO
UNMPARENVERMISMTCHWRONGRECXTRVAR
AMBIG
syntax error, ambiguous keyword abbreviation Explanation: You have specified an ambiguous abbreviation for a keyword. User Action: Reenter the command, specifying more letters in the keyword.
BADSEG
invalid segment specification Explanation: An invalid segment record was specified in DEFINE RMS_DATABASE. You may have specified less than 2 within names, or perhaps you did not specify a field within [field-name within...] record. User Action: Correct the segment reference.
BAD_NAME
The protocol name supplied contains illegal wildcard characters Explanation: You supplied a name containing wild card characters as a protocol type. The protocol name cannot be properly resolved to a single type. User Action: Reenter the command, specifying the protocol name without using wild card characters.
BAD_QUAL
An illegal value was assigned to a qualifier for this command Explanation: You used a valid qualifier, but the value associated with this qualifier is illegal. User Action: See the following error messages to determine why the qualifier's value is illegal.
BUGCHK
internal user interface error Explanation: This error message is caused by an internal software error in the user interface. User Action: Submit an SPR describing your actions that resulted in this message.
CABORT
user entered CTRL/C to abort command Explanation: You typed CTRL/C to abort the command. User Action: Reenter the command or continue.
CAPTIVE
action not allowed from a captive account Explanation: The action you attempted is not allowed from a captive account. For example, you cannot spawn a subprocess from a captive account. User Action: Do not attempt this action, try this action on another account, or talk to the system manager.
CNTCVT
DMU attribute <text> cannot be converted to CDO Explanation: Portions of the DMU definition cannot be converted to the CDD/Plus protocol. User Action: Display the DMU record through CDO to determine invalid portions.
CTRLZ
CTRL/Z entered to abort command Explanation: You typed CTRL/Z at the continue> prompt to abort the command. User Action: None. Enter a new command.
CTXUNDEF
context variable <text> undefined Explanation: You used a context variable that was not defined in a record selection expression. User Action: Check the syntax of your aggregrate expression.
DBMBR
database <text> may need to be INTEGRATED Explanation: The entity you have changed is part of the named database. You should use RDO INTEGRATE to integrate this change into the database. User Action: None.
DENSELYPACKED
area <value> is not incrementally adjacent to last area defined Explanation: You specified an area number that is not one more than the last area defined. User Action: Define your RMS_DATABASE with a correct area number.
DICDEL
dictionary <text> deleted Explanation: The dictionary specified by the message was successfully deleted. User Action: None.
DICMOVE
dictionary <text> moved to <text> Explanation: The dictionary specified by the message was successfully moved to the location specified. User Action: None.
DICTVER
Dictionary <text> Major Version <value> Minor Version <value> Explanation: This messages is used for CDO SHOW VERSION. User Action: None.
DIRDEL
directory <text> deleted Explanation: The directory specified by the message was successfully deleted. User Action: None.
ENTDEL
entity <text> deleted Explanation: The entity specified by the message was successfully deleted. User Action: None.
ENTDELDESC
entity <text> and its descendants were deleted Explanation: The entity specified by the message and the entity's descendants were successfully deleted. User Action: None.
ERRCHANGE
error changing object Explanation: An error occurred during the CHANGE command. User Action: See the following error messages to determine why the error occurred.
ERRCHGPROT
error changing protection Explanation: An error occurred when you tried to change an ACE. User Action: See the following error messages to determine why the error occurred.
ERRCHKMSG
error checking messages Explanation: An error occurred that stopped message checking. User Action: Examine the message vector to determine what the error was, and take corrective action.
ERRCLEAR
error clearing object Explanation: An error occurred during the CLEAR MESSAGES command. User Action: See the following error messages to determine why the error occurred.
ERRCOPY
error copying object Explanation: An error occurred during the COPY command. User Action: See the following error messages to determine why the error occurred.
ERRDEFINE
error defining object Explanation: An error occurred during the DEFINE command. User Action: See the following error messages to determine why the error occurred.
ERRDEFPROT
error defining protection Explanation: An error occurred when you tried to define an ACE or ACL. User Action: See the following error messages to determine why the error occurred.
ERRDELETE
error deleting object Explanation: An error occurred during the DELETE command. User Action: See the following error messages to determine why the error occurred.
ERRDELPROT
error deleting protection Explanation: An error occurred when you tried to delete an ACE or ACL. User Action: See the following error messages to determine why the error occurred.
ERRDIRE
error during directory Explanation: An error occurred during a DIRECTORY command. User Action: See the following error messages to determine why the error occurred.
ERRDUMP
error dumping object Explanation: An error occurred when you tried to dump a buffer. User Action: See the following error messages to determine why the error occurred.
ERREADACL
error reading ACL Explanation: An error occurred when you tried to read the ACL attribute of an entity. User Action: See the following error messages to determine why the error occurred.
ERRENTER
error during enter Explanation: An error occurred during the CDO ENTER command. User Action: See the following error messages to determine why the error occurred.
ERREXTRACT
error during extract Explanation: An error occurred during the CDO EXTRACT command. User Action: See the following error messages to determine why the error occurred.
ERRINHNDLR
error in handler Explanation: Because of a bug in the CDD/Plus user interface, an error occurred while an error was being handled. User Action: Submit an SPR describing your actions that resulted in this message.
ERRMODACL
error modifying ACL Explanation: An error occurred when you tried to modify the ACL attribute of an entity. User Action: See the following error messages to determine why the error occurred.
ERRMOVE
error moving object Explanation: An error occurred when you tried to move an object. User Action: See the following error messages to determine why the error occurred.
ERRPURGE
error purging object Explanation: An error occurred when you tried to purge an object. User Action: See the following error messages to determine why the error occurred.
ERRSETDEF
error setting default Explanation: An error occurred during the SET DEFAULT command. User Action: See the following error messages to determine why the error occurred.
ERRSHOW
error displaying object Explanation: An error occurred when you tried to display an object. User Action: See the following error messages to determine why the error occurred.
ERRSHOWDEF
error displaying default directory Explanation: An error occurred when you tried to display your default directory. User Action: See the following error messages to determine why the error occurred.
ERRSHOWPROT
error displaying ACL Explanation: An error occurred when you tried to display the ACL attribute. User Action: See the following error messages to determine why the error occurred.
ERRSIGNOUT
error signing out of CDD/Plus Explanation: An error occurred during the sign out of CDD/Plus. User Action: See the following error messages to determine why the error occurred.
ERRVERIFY
error verifying object Explanation: An error occurred while trying to verify an object. User Action: See the following error messages to determine why the error occurred.
EXCMAXCTX
exceded maximum number of allowed context variables Explanation: More then 255 context variables were used in a record selection expression. User Action: Rewrite the expression, using views to minimize the use of context variables.
EXPREQ
variant must have an expression Explanation: If one variants has an expression, all must. User Action: Make sure all your variants (between the VARIANTS...END VARIANTS keywords) either 1. have expressions, or 2. do not have expressions
ILLCHAR
Illegal character encountered in input Explanation: Your command contained an illegal character. User Action: Reenter the command without the illegal character.
ILLQUAL
illegal qualifier encountered Explanation: Your command contained an illegal qualifier. User Action: See the documentation or help file for a list of legal qualifiers for the command, then reenter the command.
INVBUF
invalid metadata buffer Explanation: An invalid metadata descriptor buffer was returned by the CDD/Plus Call Interface routines. User Action: Submit an SPR describing your actions that resulted in this message, along with a BACKUP saveset containing the CDD/Plus dictionary and directory files.
INVDTYP
invalid datatype for RMS index key <value> Explanation: The field that was chosen for the RMS index has a datatype that is not supported by RMS. User Action: Redefine your RMS_DATABASE.
INVEDIT_STRING
invalid edit string Explanation: You passed an invalid edit string to CDD/Plus. User Action: Check your input buffer, or if you were using CDO, please submit an SPR.
INVEXP
invalid expression Explanation: The expression you used on a VARIANT keyword was a simple constant. This is not allowed. User Action: Change the expression to one that is not a simple constant. For example, VARIANT EXPRESSION IS FIELD1 IN REC1 = 5.
INVNAME
name <text> is invalid Explanation: The name you specified is a logical name; the logical name translates an invalid CDD/Plus name. User Action: Try specifying the name with a leading underscore, delete the logical name, or specify a different name.
INVNUM
value <value> is invalid, must be greater than zero Explanation: Your command contained an illegal number. User Action: Reenter the command without the illegal number, or specify a number greater than zero.
INVPATH
no path can be found to <text> Explanation: The path you specified to the named element does not exist. User Action: Check the structure of your records and fields.
INVPOS
position <value> is invalid, must be greater than zero Explanation: Your command contained an illegal number. User Action: Reenter the command without the illegal number, or specify a number greater than zero.
INVVBUF
invalid version buffer Explanation: An invalid version descriptor buffer was returned by the CDD/Plus Call Interface routines. User Action: Submit an SPR describing your actions which resulted in this message, along with a BACKUP saveset containing the CDD/Plus dictionary and directory files.
INVVER
buffer version not known Explanation: CDO does not know this buffer version. User Action: Install the latest version of CDO.
INVVERSKIP
buffer version not known, skipped <value> bytes parsing buffer Explanation: CDO does not know this buffer version. CDO skipped N bytes trying to parse this buffer. User Action: Install the latest version of CDO.
KWSYNEND
syntax error in command line Explanation: You have specified an invalid keyword, failed to provide a required keyword, or misspelled a keyword. User Action: Reenter the command with the appropriate keyword.
KWSYNTAX
syntax error in command line at or near <text> Explanation: You have have specified an invalid keyword, failed to provide a required keyword, or misspelled a keyword. User Action: Reenter the command with the appropriate keyword.
MESSAGES
entity has messages Explanation: The entity just displayed has messages associated with it. User Action: Type SHOW MESSAGES entity-name to display the messages. Type CLEAR MESSAGES entity-name to clear the messages.
MISMATCH
entity is of protocol type <text>, not <text> Explanation: There was a protocol mismatch. The entity matched the first protocol type, while you specified the second protocol type. User Action: Reenter the command with the appropriate protocol type.
MISMATCH_DICT
Verifying protocol information against <text> but current default is <text> Explanation: The command being executed required information about a specific protocol. The dictionary used to locate the needed information and the current default dictionary are different. This may cause protocol types to be reported as invalid or nonexistant. User Action: Reinvoke CDO, using the needed dictionary as the default.
MULSPECATR
attribute is specified redundantly Explanation: You specified an attribute more than once. Each attribute may be specified only once. User Action: Reenter your definition, specifying each attribute only one time.
MUL_SEG_TXT
all segments must be text datatype Explanation: In a multi-segment RMS index all segments must have a datatype of text. User Action: Redefine your index to either use one non-text key or to use all text keys.
NEEDSEG
at least one segment must be defined for each key Explanation: A valid RMS key definition must have at least one segment defined. You did not define any. User Action: Specify a key segment.
NOACE
specified ACE does not exist Explanation: You specified an ACE that does not match any ACE in the entity's access control list. User Action: Specify an ACE that exists.
NOACL
ACL on entity <text> has not been set Explanation: You have not defined an ACL on the specified entity. User Action: Do not try to delete an ACL that does not exist.
NOACLATT
protocol type <text> does not allow ACLs Explanation: The specified protocol type does not allow the ACL attribute to be placed on entities of that protocol type. User Action: Do not attempt to change ACLs on entities of the specified protocol type.
NOAREA
area <value> is not defined Explanation: You specified an area that has not been defined in a key definition. User Action: Define your RMS_DATABASE with this area or refer to a defined area.
NOAUDIT
audit information is not allowed by protocol definition Explanation: This element does not have audit information defined as part of its protocol. User Action: Use the CHANGE PROTOCOL command to add the CDD$HISTORY_LIST relationship to this element.
NOBATCH
editor cannot be used in batch mode Explanation: The CDO editor was invoked while output was directed to an unknown or hardcopy device. User Action: Invoke the CDO editor from a terminal only.
NOCDOSYNTAX
there is no CDO syntax to support a portion of this definition Explanation: You were displaying an entity through the CDO EXTRACT command and and there is no CDO syntax to support a piece of the definition. User Action: None, this entity cannot be extracted.
NOCONV
<text> already in CDO; no need for conversion
Explanation: This message appears after:
CONVERT x
where x is an entity in a CDO dictionary.
User Action: None.
NODMUINFO
<text> in DMU; no information on DMU node available
Explanation: This message appears after:
SHOW UNUSED x
SHOW USES x
SHOW USED_BY x
where x is a DMU dictionary object.
User Action: None.
NOEXP
variant cannot have expressions Explanation: You have specified an expression on a variant when other variants do not have expressions. User Action: Make sure all your variants (between the VARIANTS...END VARIANTS keywords) either 1. have expressions, or 2. do not have expressions.
NOMESSAGES
<text> has no messages Explanation: The entity does not have any messages. User Action: None.
NOPRONAM
protocol <text> does not exist in dictionary <text> Explanation: You have specified a protocol name that does not exist. User Action: Check the spelling of the protocol name or execute the SHOW PROTOCOL command for a list of valid protocols.
NOPROTAG
protocol <value> does not exist in dictionary <text> Explanation: You have specified a protocol name that does not exist. User Action: Check the spelling of the protocol name or execute the SHOW PROTOCOL command for a list of valid protocols.
NOTCHANGED
<text> not changed Explanation: The entity, dictionary, or directory you specified was not changed. User Action: See the following message or messages to determine why.
NOTCREATED
<text> not created Explanation: The entity, dictionary, or directory you specified was not created. User Action: See the following message or messages to determine why.
NOTDELETED
<text> not deleted Explanation: The entity, dictionary, or directory you specified was not deleted. User Action: See the following message or messages to determine why.
NOTFOUND
entity <text> not found in dictionary Explanation: The entity you specified does not exist, or it exists but its protocol type (for example, FIELD) does not match what you specified (for example, RECORD). User Action: Make sure the protocol type you specify matches the protocol type of the entity. Also, make sure the entity exists.
NOTSHOWN
<text> not displayed Explanation: The entity you specified was not displayed. User Action: See the following message or messages to determine why.
NOTWITHIN
entity <text> not found in dictionary or is not within start entity Explanation: The entity you specified on an ENTER command does not exist, or it exists but not within the named record or database. User Action: Make sure both named entities exist and that the first named entity is legitimately contained within the second.
NOTYET
feature not yet implemented Explanation: The feature of the user interface has been added to grammar, but the code that actually performs the function has not yet been implemented. User Action: None.
ONECHAR
only one character allowed for NULL_VALUE Explanation: Only one character is allowed for a NULL_VALUE in DEFINE RMS_DATABASE key User Action: Respecify the command, with one character.
ONLEVL
invalid ON context - use only within command procedures Explanation: You typed the 'ON' command during an interactive CDO session. User Action: Use 'ON' only within command procedures.
OPNOVRFLO
operand stack overflow Explanation: The operand_stack is at its allocated storage limit. User Action: Submit an SPR.
OSOVRFLO
operator stack overflow Explanation: The operator_stack is at its allocated storage limit. User Action: Submit an SPR.
PSOVRFLO
parse stack overflow Explanation: The parse_stack is at its allocated storage limit. User Action: Submit an SPR.
PURGETHING
entity <text> purged Explanation: The entity specified by the message was successfully deleted or purged. User Action: None.
READERR
error reading input command line Explanation: An error was encountered reading the input line. User Action: Attempt to reenter the input command line.
RECSIZ
cannot determine record size Explanation: The record has an overlay or structure within it. User Action: Manually specify the record size in the RMS definition.
RMS_ONLY
this operation can only be performed with RMS database Explanation: The command you entered is implemented only for RMS databases. User Action: For Rdb/VMS databases, use RDO.
SSYNTAX
string missing closing quote Explanation: The parser scanned a string and did not find the closing quote punctuation. User Action: Place a closing quotation mark at the end of the string, and reenter the command.
STARTATZERO
area numbers must start at zero, found <value> Explanation: You specified an area with a starting number other than zero. User Action: Define your RMS_DATABASE with an area number of zero.
TROVRFLO
operand stack memory pool overflow Explanation: The pool of memory from which the operand_stack is generated has reached its allocated storage limit. User Action: Submit an SPR.
UNMPAREN
unmatched parenthesis in value expression Explanation: An unmatched pair of parenthesis was found in a value expression. User Action: Check and correct the expression format.
VERMISMTCH
expected protcocol version <value> found version <value> Explanation: CDO does not handle this version of the protocol correctly. User Action: If you made an incompatable change to a protocol, none. Otherwise, install the latest version of CDO.
WRONGREC
specified segment record does not match RMS record Explanation: You specified an invalid segment record in the DEFINE RMS_DATABASE command. User Action: Correct the segment reference or record reference in the RMS definition.
XTRVAR
more VARIANT in command than in record Explanation: The command you entered contains more variant members than are specified in the record definition. User Action: Look at the record definition and change your command accordingly.
CONVERT Command
Copies a DMU format definition into a CDO dictionary. The DMU format definition remains in the DMU dictionary, and a copy of the DMU format definition is created in a CDO dictionary. CONVERT ──┬──┬> source-name ──┬───> destination-name ───┬─> │ └───────,────────┘ │ └───>
/
D
I
C
T
I
O
N
A
R
Y ──> anchor-name ───────────┘
Additional information available:
source-namedestination-nameanchor-nameRestrictionsExamples
source-name
The name of the DMU format definition to be converted. The DMU format object must be a definition of type CDD$RECORD. You can use either a full or relative DMU path name with the CONVERT command.
destination-name
The name that you select for the converted object in the CDO dictionary.
anchor-name
The VMS anchor directory containing the CDO dictionary whose protocols you want to upgrade.
Restrictions
If you specify more than one DMU object in source-name, the destination-name must be a name with a wildcard character. Because each CDO directory object must have a unique path name, a CDO directory cannot contain two objects with the same directory name. Therefore, if you try to convert a DMU object into your default CDO directory and give it the same name as an object that exists in your default directory, the operation fails. You can get around this restriction by copying the DMU definition to another location, then deleting the original DMU definition, and then converting the DMU definition with its original name. When a DMU format object that includes a description clause for the object and another description clause for a structure within the object is converted to a CDO format object, only the structure description clause appears in the CDO format object. When a DMU format object that contains a VALID FOR DATATRIEVE IF field attribute clause is converted to a CDO object, the VALID FOR DATATRIEVE IF clause is omitted from the resulting CDO object. When field description statements exist in a DMU object, each of the field description statements in the object are converted with the object, except for those field description statements containing a COMPUTED BY DATATRIEVE field attribute clause. To manipulate a converted field description statement with a CDO command, it must have a directory name. To assign a directory name to a converted field description statement, use the ENTER command. Some DMU record definitions use the same name as the given name of the record definition and as the name of the STRUCTURE field description statement inside the record definition. When you convert this kind of DMU record definition to a CDO record definition, the name you specify for the CDO record definition becomes both the directory name and processing name of the CDO record definition.
Examples
The following command shows how to convert a DMU record definition
named BADGE_NUMBER to a CDO record definition of the same name in your
default CDO directory. This example assumes that this is the first
record definition converted into a previously empty directory.
CDO> CONVERT CDD$TOP.PERSONNEL.BADGE_NUMBER BADGE_NUMBER
CDO> DIRECTORY
Directory USER$DISK:[JONES.DICT]
BADGE_NUMBER;1 RECORD
CDO>
The following command converts a DMU record definition named
DEPT_RECORD to a CDO record definition named SECTION_RECORD in your
default directory. The DIRECTORY command shows the result of the
conversion. The example assumes that this is the first record
definition converted into a previously empty directory.
CDO> CONVERT CDD$TOP.EMPLOYEE.DEPT_RECORD SECTION_RECORD
CDO> DIRECTORY
Directory USER$DISK:[SMITH.DICT]
SECTION_RECORD;1 RECORD
CDO>
In the following example, the DMU records CUSTOMER_RECORD and
INVENTORY_RECORD are converted into the default CDO directory. Because
the asterisk (*) wildcard character is used in the destination-name,
the DMU records keep their same names after being converted to CDO
records. This example assumes that these are the first records
converted into a previously empty CDO directory:
CDO> CONVERT CDD$TOP.SHIPMENTS.CUSTOMER_RECORD,
cont> CDD$TOP.SHIPMENTS.INVENTORY_RECORD *
CDO> DIRECTORY
Directory USER$DISK:[JONES.DICT]
CUSTOMER_RECORD;1 RECORD
INVENTORY_RECORD;1 RECORD
CDO>
In the first example below, YACHTS is the name of a DMU record
definition and also of the STRUCTURE field description statement within
the record definition. When you convert the DMU record definition
YACHTS to the CDO record definition YACHTS_NEW, as shown in the second
example, the CDO record definition is created with a directory name of
YACHTS_NEW and a processing name of YACHTS_NEW:
DEFINE RECORD CDD$TOP.HARBORMASTER.YACHTS
DESCRIPTION IS
/* This record contains the manufacturer, model, and
dock number of each yacht in the harbor, along
with the owner's name. */.
YACHTS STRUCTURE.
MANUFACTURER DATATYPE IS TEXT
SIZE IS 30 CHARACTERS.
MODEL DATATYPE IS TEXT
SIZE IS 30 CHARACTERS.
DOCK_NUMBER DATATYPE IS TEXT
SIZE IS 2 CHARACTERS.
NAME STRUCTURE.
LAST_NAME DATATYPE IS TEXT
SIZE IS 15 CHARACTERS.
FIRST_NAME DATATYPE IS TEXT
SIZE IS 10 CHARACTERS.
MIDDLE_INITIAL DATATYPE IS TEXT
SIZE IS 1 CHARACTER.
END NAME STRUCTURE.
END YACHTS STRUCTURE.
END YACHTS RECORD.
CDO> CONVERT YACHTS YACHTS_NEW
CDO> SHOW RECORD/FULL YACHTS_NEW
Definition of record YACHTS_NEW
| Contains field MANUFACTURER
| | Datatype text size is 30 characters
| Contains field MODEL
| | Datatype text size is 30 characters
| Contains field DOCK_NUMBER
| | Datatype text size is 2 characters
| Contains record NAME
| | Contains field LAST_NAME
| | | Datatype text size is 15 characters
| | Contains field FIRST_NAME
| | | Datatype text size is 10 characters
| | Contains field MIDDLE_INITIAL
| | | Datatype text size is 1 characters
CDO>
In the following example, a user attempts to upgrade the protocols in
his dictionary with the CONVERT/DICTIONARY command:
1. The user enters CDO.
2. The user starts to convert his dictionary.
3. Because the user did <emphasis>(not) have a back up of his;
dictionary, the user answers NO at the prompt from the CONVERT
command.
4. The user exits from CDO and backs up his dictionary, using the VMS
BACK UP Utility.
5. The user enters CDO again and proceeds to upgrade the protocols in
his dictionary using the CONVERT/DICTIONARY command.
$ DICTIONARY OPERATOR
Welcome To CDO T1.1-1
The CDD/Plus T4.1-1 User Interface
Type HELP for help
CDO> CONVERT/DICTIONARY [-.DICT1]
are you satisified with the back up of your dictionary, proceed? [Y/N] (N)N
CDO>EXIT
$ DICTIONARY OPERATOR
Welcome To CDO T1.1-1
The CDD/Plus T4.1-1 User Interface
Type HELP for help
CDO> CONVERT/DICTIONARY [-.DICT1]
are you satisified with the back up 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 T1.1-1
The CDD/Plus T4.1-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>
edit-str
Definitions in CDO dictionaries can be read by VAX products from DMU entry points. If a CDO field definition contains an edit string, CDO performs an automatic translation of the generic edit string characters for COBOL, DATATRIEVE, PL/I, and RPG. See subtopics below for examples of each character that is allowed in a generic edit string. See "Support-table" to learn how CDO translates a particular character in a generic edit string for COBOL, DATATRIEVE, PL/I, and RPG.
Additional information available:
Alphabetic(A)Alphanumeric(T,X)CommaDate-day-time
Decimal-pointDigit(9,F,7)Encoded-signExponentFloating(S,Z,-,+,$,\)
LiteralLogicalLowercaseMinus-literalMinus-parenthesesMissing-separator
Repeat-countUppercaseSupport-table
Alphabetic(A)
Edit String: AAAA
Field Value: WXYZ
Edited Value: WXYZ
Alphanumeric(T,X)
Additional information available:
T(Long-text)
Edit String: TTTTT Field Value: 1234567890 Edited Value: 12345
X(Any)
Edit String: XXXXXXXXXXX Field Value: fj32dj%^*I Edited Value: fj32dj%^*I
Comma
Edit String: $$,$$9.99 Field Value: 1234.56 Edited Value: $1,234.56 Edit String: $$,$$9.99 Field Value: 12.34 Edited Value: $12.34
Date-day-time
Additional information available:
D(Day-number)H(Twelve-hour-mode)J(Julian-digit)M(Month-name)
N(Month-number)P(Minute)Q(Second)R(Twenty-four-hour-mode)W(Weekday-name)
Y(Year)asterisk(Fraction-second)
D(Day-number)
Edit String: NN"/"DD"/"YY Field Value: May 4, '85 Edited Value: 05/04/85
H(Twelve-hour-mode)
Edit String: HH":"PP" "%% Field Value: 11:30 a.m. Edited Value: 11:30 AM
J(Julian-digit)
Edit String: YYYY"/"JJJ Field Value: 6/4/80 Edited Value: 1980/156
M(Month-name)
Edit String: MMM" "DD" "YY Field Value: May 4, '80 Edited Value: MAY 04 80
N(Month-number)
Edit String: NN"/"DD"/"YY Field Value: May 4, '85 Edited Value: 05/04/85
P(Minute)
Edit String: HH":"PP" "%% Field Value: 11:30 a.m. Edited Value: 11:30 AM
Q(Second)
Edit String: PP":"QQ"."** Field Value: 23 minutes 13.56 seconds Edited Value: 23:13.56
R(Twenty-four-hour-mode)
Edit String: RR":"PP Field Value: 2:30 p.m. Edited Value: 14:30
W(Weekday-name)
Edit String: WWWWWWWWW Field Value: June 3, 1987 Edited Value: WEDNESDAY
Y(Year)
Edit String: MMM" "DD" "YY Field Value: May 4, '85 Edited Value: MAY 04 85
%(AM/PM)
Edit String: HH":"PP" "%% Field Value: 11:30 a.m. Edited Value: 11:30 AM
asterisk(Fraction-second)
The asterisk (*) edit string character displays a value for a decimal fraction of a second. Edit String: MM":"QQ"."** Field Value: 23 minutes 13.56 seconds Edited Value: 23:13.56
Decimal-point
Edit String: 99.99 Field Value: 2813E-2 Edited Value: 28.13
Digit(9,F,7)
Additional information available:
F(Hexadecimal-digit)7(Octal-digit)9(Decimal-digit)
F(Hexadecimal-digit)
Edit String: FFF Field Value: 32 Edited Value: 020
7(Octal-digit)
Edit String: 777 Field Value: 32 Edited Value: 040
9(Decimal-digit)
Edit String: 999 Field Value: 613 Edited Value: 613
Encoded-sign
Additional information available:
C(Encoded-minus)G(Encoded-sign)K(Encoded-plus)
C(Encoded-minus)
Edit String: C99 Field Value: -456 Edited Value: M56
G(Encoded-sign)
Edit String: G99 Field Value: +123 Edited Value: A23 Edit String: G99 Field Value: -456 Edited Value: M56
K(Encoded-plus)
Edit String: K99 Field Value: +123 Edited Value: A23
Exponent
Edit String: S99ES99 Field Value: 1200 Edited Value: +12E+02
Floating(S,Z,-,+,$,\)
Additional information available:
S(Floating-sign)Z(Floating-zero-replace)-(Floating-minus)+(Floating-plus)
$(Floating-currency)\(Floating-blank)
S(Floating-sign)
Edit String: SSS9 Field Value: 54 Edited Value: +54
Z(Floating-zero-replace)
Edit String: Z" "99 Field Value: 25 Edited Value: 25 Edit String: Z"*"99 Field Value: 25 Edited Value: *25
-(Floating-minus)
Edit String: ---9 Field Value: -54 Edited Value: -54
+(Floating-plus)
Edit String: +++9 Field Value: 54 Edited Value: +54
$(Floating-currency)
Edit String: $,$$$.99 Field Value: 157.86 Edited Value: $157.86
\(Floating-blank)
Edit String: MMM\\\\\,YYYY Field Value: June 15, 1982 Edited Value: JUNE,1982
Literal
Edit String: 99" ""Hours" Field Value: 40 Edited Value: 40 Hours
Logical
Edit String: BBBBB Field Value: 0 Edited Value: FALSE
Lowercase
Edit String: LMMM" "DD Field Value: November 12th Edited Value: nov 12
Minus-literal
Edit String: 99&"CR" Field Value: -15 Edited Value: 15CR Edit String: 99&"DB" Field Value: -15 Edited Value: 15DB
Minus-parentheses
Edit String: ((999)) Field Value: -678 Edited Value: (678)
Missing-separator
Edit String: 999?"Unknown" Field Value: missing value Edited Value: Unknown
Repeat-count
Edit String: W(9) Field Value: June 3, 1987 Edited Value: WEDNESDAY
Uppercase
Edit String: UA(20) Field Value: Jones Edited Value: JONES
Support-table
Translation of CDO Edit String Characters for VAX Languages. (Symbols
in angle brackets <> are explained following the table.)
Character CDO Char. COBOL DTR PL/I RPG EDIT
Type or String PICTURE EDIT PICTURE WORD
Alphabetic A A A <n> <n>
Alphanumeric T X T <n> <n>
X X X <n> <n>
Comma , , , , ,
Date, Day,
and Time D <n> D <n> <n>
H <n> <i> <n> <n>
J <n> J <n> <n>
M <n> M <n> <n>
N <n> N <n> <n>
P <n> <i> <n> <n>
Q <n> <i> <n> <n>
R <n> <i> <n> <n>
W <n> W <n> <n>
Y <n> Y <n> <n>
% <n> <i> <n> <n>
* <n> <i> <n> <n>
Decimal
Point . . . . .
Digit F <n> <n> <n> <n>
7 <n> <n> <n> <n>
9 9 9 9 blank
Encoded
Sign C -9 -9 R <n>
G +9 +9 T <n>
K +9 +9 I <n>
Exponent E <n> E <n> <n>
Floating S + + S -
Z"string" <*> <*> <*> <*>
- - - - -
+ + + + blank
$ $ $ $ $
\ <pc> <pc> <pc> <pc>
Literal "string" <*> <*> <*> <*>
Logical B 9 9 9 blank
Lowercase L <i> <i> <i> <n>
Minus
_
Literal "string" <*> <*> <*> <*>
Minus
Parentheses () - () - -
Missing
Separator ? <i><**> ? <i><**> <i><**>
Repeat Count x(n) x(n) x(n) (n)x x repeats
n times
Uppercase U <i> <i> <i> <n>
Meaning of symbols used in the above table:
<n>---not supported; if the CDO character appears in a CDO edit string,
no picture clause or edit string is generated for the language.
Whenever an edit string character is not supported by a language but
the language is accessing a generic edit string, you should create
language-specific edit strings to exclude the language from the generic
edit string.
<i>---ignored; the CDO character is ignored for the language. However,
if the CDO character appears in an edit string with other characters
that can be translated, CDO will perform the appropriate translation
for the other edit string characters.
<pc>---the CDO character has the same value as the previous character
in the generic edit string.
<*>---see the table in the CDO edit strings chapter in the VAX CDD/Plus
Common Dictionary Operator Reference Manual for an explanation.
<**>---any characters appearing after the CDO character in the edit
string are not translated for the language.
Note: If the field definition has a datatype of DATE, an RPG EDIT CODE
of Y will be generated instead of an EDIT WORD.
expressions
CDO recognizes three types of expressions: value expressions, conditional expressions, and record selection expressions. CDO dictionaries store expressions in a generic format, not as text, so that many products and applications can share the same expression.
Additional information available:
value exprconditional exprrelational operatorsrecord sel expr
precedence ordering
value expr
A value expression is a symbol or string of symbols used to calculate a
value. When you use a value expression, the product using the
definition calculates the value associated with the expression and uses
that value at run time.
value-expr =
─────┬───> field-or-record ──────────┬─────>
├───> literals ─────────────────┤
├───> statistical-expr ─────────┤
├───> arithmetic-expr ──────────┤
├───> concatenated-expr ────────┤
└───> first-from-expr ──────────┘
Additional information available:
FIELD OR RECORD-exprLiteralsStatistical exprArithmetic expr
Concatenated exprFIRST FROM expr
FIELD OR RECORD-expr
The FIELD OR RECORD expression specifies the name of a field or record
in the database, consisting of a field or record name and a directory
name or context variable.
field-or-record=
─┬───────>──────┬────┬─> dir-name ─────┬──>
└┬─> name IN ─┬┘ └─> context-var ──┘
└──────<─────┘
Additional information available:
namedir-namecontext-varExample
name
The name of a field or record in a relation. For example, once you have defined E as the context variable for the EMPLOYEES relation, LAST_NAME IN E is a value expression that refers to a value from the LAST_NAME field of EMPLOYEES. Use name only in an expression with a context variable.
dir-name
The directory name of an object in the dictionary.
context-var
A temporary name that you associate with a record. You define a context variable in a record selection expression. You specify a context variable only when you use the name IN name part of the FIELD-OR-RECORD expression syntax.
Example
The following example specifies the LAST_NAME field in the FULL_NAME record in the EMPLOYEES relation: COUNT OF E IN EMPLOYEES WITH LAST_NAME IN FULL_NAME IN E = "SMITH".
Literals
You can use a literal as a value expression. A literal is either a character string or a numeric literal.
Additional information available:
Character str lit
A character string literal is a string of printable characters. A
character string literal must be enclosed in quotation marks. The
maximum length of a character string is 65,536 characters. The
printable characters consist of:
o Uppercase alphabetic characters (A-Z)
o Lowercase alphabetic characters (a-z)
o Numerals (0-9)
o The following special characters
! @ # $ % ^ & * ( ) - _ = + ` ~
[ ] { } ; : ' " \ | / ? > < . ,
o Any other characters that are part of the DIGITAL Multinational
Character Set.
Use a pair of quotation marks, either single or double, to enclose a
character string literal. When using quotation marks, follow these
rules:
o Begin and end a character string literal with the same type of
quotation mark.
o To include a quotation mark of one type in a character string
literal, enclose the literal in quotation marks of the other type.
For example, to include double quotation marks in a character
string literal, enclose the character string in single quotation
marks.
o If a quotation mark appears in a character string literal enclosed
by quotation marks of the same type, use two consecutive quotation
marks for every one you want to include in the literal. This
technique is necessary if you want to include quotation marks of
both types in a single quoted string.
The following table shows how to use quotation marks in character
string literals.
Character String Value
Value Expression
"JONES" JONES
'JONES' JONES
"JONES' [invalid]
"''''" ''''
"''''' [invalid]
'My name is "Lefty".' My name is "Lefty".
'My ''handle'' is "Lefty".' My 'handle' is "Lefty".
CDO usually treats uppercase and lowercase forms of the same letter as
the same character. However, it preserves the case distinction when
doing comparisons of character strings. That is, NAME = "JONES" and
NAME = "Jones" yield different results.
Additional information available:
Example
The character string literal "Toliver" appears in the following expression: E IN EMPLOYEES WITH LAST_NAME IN E = "Toliver"
Numeric lit
A numeric literal is a string of digits that interprets as a decimal
number. A numeric literal may be:
o A decimal string consisting of digits and an optional decimal
point. The maximum length, not counting the decimal point, is 19
digits.
o A decimal number in scientific notation (E-format), consisting of a
decimal string mantissa and a signed integer exponent, separated by
the letter D (for double), E (for E-format) or Q (for H_floating).
CDO allows you to use unary plus and minus in numeric expressions. You
can also use any form of decimal notation. CDO does not allow you to
embed spaces in E notation. The following are valid numeric strings:
123
34.9
-123
0.33889909
6.03 E+23
6.03 E -23
The following expressions are *not* valid numeric strings. Valid
numeric strings must start and end with a numeral and cannot contain
hexadecimal digits. Including a zero before .25 and after 123. in the
following invalid strings would them valid strings.
38ACFF
.25
123.
If you use a numeric literal to assign a value to a field or a
variable, the data type of the field or variable determines the maximum
value you can assign.
Because a period at the end of a data definition command line
terminates the command, do not use a decimal point to terminate a
number if you want to include more data definition clauses in the
statement. The period terminates the definition in the following data
definition clause:
COMPUTED BY X * 2.
If you want to include more data definition clauses, include a zero
after the decimal point, or place the value expression in parentheses:
COMPUTED BY X * 2.0
COMPUTED BY (X * 2.)
Additional information available:
Example
The numeric literal 40000 appears in the following expression: S IN SALARY_HISTORY WITH SALARY_AMOUNT IN S > 40000
Statistical expr
Statistical expressions calculate values based on a value expression for every record in a record stream. Statistical expressions are sometimes called "aggregate expressions" because they calculate a single value for a collection of records. When you use a statistical expression (except for COUNT), you specify a value expression and an RSE. A layered product evaluates the value expression for each record in the record stream formed by the RSE. Then the product calculates a single value based on the results of the first step. statistical-expr = ───────┬──>
M
A
X ─────┬──> value-expr ──┬──>
O
F ──> rse ──> ├──>
M
I
N ─────┤ │ ├──>
T
O
T
A
L ───┤ │ ├──>
A
V
E
R
A
G
E ─┘ │ └──>
C
O
U
N
T ─────────────────────┘
Additional information available:
value-expr
A value expression. A value expression is a symbol or string of symbols used to calculate a value.
rse
A record selection expression.
Examples
The following AVERAGE expression uses the RSE to form a record stream of records where the SALARY_AMOUNT field is greater than 50000. The average of the values in the SALARY_AMOUNT field for the records in the record stream is calculated by the product reading the expression. AVERAGE SALARY_AMOUNT IN CS OF CS IN SALARY WITH SALARY_AMOUNT IN CS GT 50000 The COUNT expression differs from the other statistical operators in that it operates on the record stream defined by the RSE rather than on values in that record stream. It returns the number of records in the record stream. In the following expression, the number of employees working in New Hampshire is returned: COUNT OF E IN EMPLOYEES WITH STATE IN E = "NH" The following MAX expression finds the highest paid employee in the company: MAX SALARY_AMOUNT IN CS OF SAL IN CURRENT_SALARY WITH SALARY IN SAL = MAX The following MIN expression finds the lowest paid employee in the company: MIN SALARY_AMOUNT IN CS OF SAL IN CURRENT_SALARY WITH SALARY IN SAL = MIN The following TOTAL expression finds the total annual payroll of the company: TOTAL SALARY_AMOUNT IN CS OF CS IN CURRENT_SALARY
Arithmetic expr
An arithmetic expression combines value expressions and arithmetic operators. When you use an arithmetic expression in a value expression, the product using the CDO expression calculates the value associated with the expression and uses that value when executing the statement. Therefore, an arithmetic expression must be reducible to a value. arith-expr = ───> value-expr ────┬──> typebox (+) ──┬────> value-expr ─────> ├──> - ──┤ ├──> typebox (*) ──┤ └──> typebox (/) ──┘
Additional information available:
value-expr
A value expression. A value expression is a string of symbols used to calculate a value.
Examples
The following example shows an arithmetic expression that adds two numeric literals: 8 + 7 The following example is an arithmetic expression that is evaluated as 11: 8 + 14 / 2 - 4 The following example is an arithmetic expression that is evaluated as 7: (8 + 14) / 2 - 4 The following example is an arithmetic expression that is evaluated as 1: 8 + 14 / (2 - 4)
Concatenated expr
A concatenated expression is a value expression that combines two other value expressions by joining the second to the end of the first. Concatenated expressions use the concatenate operator (|). You can combine value expressions of any kind, including numeric expressions, string expressions, and literals. concat-expr = ───> value-expr ───> | ───> value-expr ───>
Additional information available:
value-expr
A symbol or string of symbols used to calculate a value.
Example
The following example defines the field NAME using the FIRST_NAME, MIDDLE_INITIAL, and LAST_NAME fields. The space between each pair of quotation marks will appear in the output of the NAME field: DEFINE FIELD NAME COMPUTED BY FIRST_NAME | ' ' | MIDDLE_INITIAL | ' ' | LAST_NAME. Output is: JOHN Q PUBLIC
FIRST FROM expr
The FIRST FROM expression works in two steps:
1. It forms the record stream as specified by the record selection
expression.
2. If at least one record matches the RSE, the values stored in the
first record of the record stream are used to evaluate the value
expression.
first-from-expr =
───>
F
I
R
S
T ───> value-expr ───>
F
R
O
M ───> rse ───>
Additional information available:
value-expr
A symbol or string of symbols used to calculate a value.
rse
A clause that VAX Information Architecture products use at run time to include specific records for processing.
Example
The following example finds the salary of the first employee who works in the ZK02 facility: FIRST SALARY IN E FROM E IN EMPLOYEES WITH LOCATION IN E = "ZK02"
conditional expr
A conditional expression, sometimes called a Boolean expression,
represents the relationship between two value expressions. You can use
conditional expressions in CDO as objects for the WITH clause or VALID
IF clause of the record selection expression or the VALID IF clause in
field definitions. A conditional expression has a value of true,
false, or missing.
Conditional expressions consist of value expressions, relational
operators, and logical operators:
o Relational operators control the comparison of value expressions.
For information, go to the "relational_operators" subtopic under
the top-level topic "expressions".
o Logical operators (AND, OR, NOT) let you join two or more
conditional expressions and optionally reverse the value of a
conditional expression. The result of using a logical operator is
another conditional expression.
The following diagram shows the types of conditional expressions.
cond-expr=
──┬─> cond-expr ────────>
A
N
D ──> cond-expr ────────────────────────┬─>
├─> cond-expr ────────>
O
R ───> cond-expr ────────────────────────┤
├─────────────────────>
N
O
T ──> cond-expr ────────────────────────┤
├─> value-expr1 ──┬──────>───────────┬─> operator ─> value-expr2 ─┤
│ └>
C
A
S
E
S
E
N
S
I
T
I
V
E ─┘ │
├─> between-clause ───────────────────────────────────────────────┤
├─> containing-clause ────────────────────────────────────────────┤
├─> matching-clause ──────────────────────────────────────────────┤
├─> missing-clause ───────────────────────────────────────────────┤
└─> starting-with-clause ────────────────────────────────────────┘
Additional information available:
cond-exprvalue-expr1value-expr2operatorbetween-clausecontaining-clause
matching-clausemissing-clausestarting-with-clauseExamples
cond-expr
A conditional expression. This subtopic describes conditional expressions.
value-expr1
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null.
value-expr2
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null.
operator
One of the following mathematical relational operators:
= EQ
<> NE
> GT
>= GE
< LT
<= LE
between-clause
A relational clause that tests whether or not a value lies between two values. The product using CDO evaluates a BETWEEN clause as true, if the first value is between two values. If you use the keyword NOT, the product using CDO evaluates the clause as true, if the first value is not between two values. between-clause = ────> value-expr1 ────┬───>──────┬───>
B
E
T
W
E
E
N ────┐ └──>
N
O
T ──┘ │ ┌─────────────────────────────────────────────┘ └───> value-expr2 ───>
A
N
D ───> value-expr3 ───────>
Additional information available:
value-expr1value-expr2value-expr3Examples
value-expr1
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null. For more information and a diagram, see the subtopic "value-expr" under the top-level topic "expressions".
value-expr2
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null. For more information and a diagram, see the subtopic "value-expr" under the top-level topic "expressions".
value-expr3
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null. For more information and a diagram, see the subtopic "value-expr" under the top-level topic "expressions".
Examples
In the following example, if SALARY_AMOUNT is 20000, CDO evaluates the BETWEEN clause as true: SALARY_AMOUNT BETWEEN 10000 AND 30000 In the following example, if SALARY_AMOUNT is 40000, CDO evaluates the BETWEEN clause as true: SALARY_AMOUNT NOT BETWEEN 10000 AND 30000
containing-clause
A relational clause that tests for substring matches. This operation is not case sensitive. The product using CDO evaluates a CONTAINING clause as true, if the first string expression contains the string that the second string expression specifies. If you use the keyword NOT, the product using CDO evaluates the clause as true, if the first string expression does not contain the string that the second string expression specifies. containing-clause = ──> value-expr1 ──┬─────>────┬──>
C
O
N
T
A
I
N
I
N
G ──> value-expr2 ──> └──>
N
O
T ──┘
Additional information available:
value-expr1value-expr2Examples
value-expr1
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null. For more information and a diagram, see the subtopic "value-expr" under the top-level topic "expressions".
value-expr2
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null. For more information and a diagram, see the subtopic "value-expr" under the top-level topic "expressions".
Examples
In the following example, if LAST_NAME has the string "ITH", CDO evaluates the CONTAINING clause as true: LAST_NAME CONTAINING "ith" In the following example, if LAST_NAME does not contain "ith", CDO evaluates the CONTAINING clause as true: LAST_NAME NOT CONTAINING "ITH"
matching-clause
A relational clause that tests for substring matches. By using wildcard characters, you can specify the position of the substring. This operation is not case sensitive. The product using CDO evaluates a MATCHING clause as true, if the second expression matches a substring of the first value expression. If you use the keyword NOT, the product using CDO evaluates the clause as true, if the second expression does not match a substring of the first value expression. matching-clause = ───> value-expr ───┬─────>────┬─>
M
A
T
C
H
I
N
G ───> match-expr ────> └──>
N
O
T ──┘
Additional information available:
value-expr1
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null. For more information and a diagram, see the subtopic "value-expr" under the top-level topic "expressions".
match-expr
A value expression in quotation marks.
Examples
In the following example, the MATCHING clause finds those EMPLOYEE records that have "ON" as the last two letters in the field LAST_NAME: LAST_NAME MATCHING "*ON " In the following example, the MATCHING clause finds those EMPLOYEE records that have "ON" as the second and third letters in the field LAST_NAME: LAST_NAME MATCHING "%ON " You can also use the MATCHING clause with numeric data types. In the following example, the MATCHING clause finds all the salaries that start with the number 4: SALARY_AMOUNT MATCHING "4*" Another way of stating the same condition in the preceding example is by using the BETWEEN clause, as the following example shows: SALARY_AMOUNT BETWEEN 40000 AND 49999
missing-clause
A relational clause that tests for a null record or field expression. The product using CDO evaluates a MISSING clause as true, if the record or field expression is null. If you use the keyword NOT, the product using CDO evaluates the clause as true, if the record or field expression is not null. missing-clause= ─> field-or-record ──┬───>───┬─>
M
I
S
S
I
N
G ──> └>
N
O
T ─┘
Additional information available:
field-or-record
Specifies the name of a field or record in the database, consisting of a field or record name and a directory name or context variable. For a description and diagram, see the subtopic "FIELD_OR_RECORD-expr" under the subtopic "value_expr" of the top-level topic "expressions".
Examples
In the following example, CDO evaluates the field expression as true, when the LAST_NAME field from the FULL_NAME record of the EMPLOYEES relation is alphabetic: LAST_NAME IN FULL_NAME IN E ALPHABETIC In the following example, CDO evaluates the field expression as true, when the SALARY_AMOUNT field has a value that is not null: SALARY_AMOUNT NOT MISSING
starting-with-clause
A relational clause that tests for beginning substring matches. This operation is case sensitive. The product using CDO evaluates a STARTING WITH clause as true, if the first characters of the first string expression match the characters in the second string expression. If you use the keyword NOT, the product using CDO evaluates the clause as true, if the first string does not contain the string that the second string expression specifies. starting-with-clause = ──> value-expr1 ──┬────>───┬──>
S
T
A
R
T
I
N
G
W
I
T
H ──> value-expr2 ──> └─>
N
O
T ─┘
Additional information available:
value-expr1value-expr2Examples
value-expr1
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null. For more information and a diagram, see the subtopic "value-expr" under the top-level topic "expressions".
value-expr2
A value expression. If either value expression in a condition evaluates to null, the condition evaluates to null. For more information and a diagram, see the subtopic "value-expr" under the top-level topic "expressions".
Examples
In the following example, if LAST_NAME has the string "ith", CDO evaluates the CONTAINING clause as true: LAST_NAME CONTAINING "ith" In the following example, if LAST_NAME does not contain "ith", CDO evaluates the CONTAINING clause as true: LAST_NAME NOT CONTAINING "ITH"
Examples
The GT (>) operator compares two values. The following expression is true if the value in the SALARY_AMOUNT field of the SALARY_HISTORY record is greater than 50000. When this expression is evaluated, the relationship between the two value expressions, SALARY_AMOUNT IN SH and 50000, is examined. SALARY_AMOUNT IN SH > 50000 In the following example, the following conditional expression is true if the value in the SALARY_AMOUNT field from the SALARY_RECORD is 50000 or greater: NOT SALARY_AMOUNT IN SH < 50000 The following example show two commands. The first command, DEFINE FIELD uses a case sensitive relational operator in its VALID IF clause to test whether the code to be entered in the SEX field definition is either "M" or "F". The second command, SHOW FIELD displays the brief form of the SEX field definition: CDO> DEFINE FIELD SEX cont> VALID IF SEX CASE_SENSITIVE EQ "M" OR "F". CDO> SHOW FIELD SEX Definition of field SEX | Valid if ((SEX EQ "M") CASE_SENSITIVE OR "F")
relational operators
Relational operators specify the relationship of value expressions and perform the following kinds of operations: o Comparing a value with a range o Matching a pattern o Testing for missing fields CDO uses two kinds of relational operators in its conditional expressions. They are mathematical relational operators and pattern testing relational operators. The mathematical relational operators are symbols that allow you to compare values. Pattern testing relational operators are keywords that allow you to test for a pattern of values. Unlike the mathematical relational operators, each pattern testing relational operator has its own unique syntax.
Additional information available:
mathematical relational operatorspattern testing relational operators
mathematical relational operators
The following table lists the mathematical relational operators. In
all cases, if either operand in a conditional expression is null, the
value of the condition is null.
Permitted Symbols Relational Operation
EQ = True if the two value expressions are equal.
NE <> True if the two value expressions are not equal.
GT > True if the first value expression is greater than
the second.
GE >= True if the first value expression is greater than
or equal to the second.
LT < True if the first value expression is less than the
second.
LE <= True if the first value expression is less than or
equal to the second.
Use either the alphabetic symbol or the mathematical symbol from the
Permitted Symbols column, but do not use both consecutively when you
specify a relational operator. For example, both X = 5 and X EQ 5 are
legal expressions, but X =EQ 5 is not. Using two consecutive symbols
is not legal.
See the documentation for VAX languages and products that use the
dictionary to determine how that product evaluates character string
literals. In some cases, character string literals are compared
according to the ASCII collating sequence. Thus, lowercase letters are
considered to have a greater value than uppercase letters, and the
letters near the beginning of the alphabet are considered to have a
lesser value than those near the end.
For products that compare character string literals according to the
ASCII collating sequence, the following statements are true:
"a" > "A"
"a" < "z"
"A" < "Z"
NOTE: The NOT operator applies to conditional expressions. Do not use
the NOT operator and an equal sign instead of the NE or <> relational
operators. The following statement is not legal:
WITH SALARY_AMOUNT IN S NOT = 30000
Use one of the following alternatives:
WITH NOT (SALARY_AMOUNT IN S = 30000)
WITH SALARY_AMOUNT IN S NE 30000
WITH SALARY_AMOUNT IN S <> 30000
pattern testing relational operators
The following table lists the pattern testing relational operators.
Permitted Symbols Relational Operation
BETWEEN True if the first value expression is less than
or equal to the second and greater than or equal
to the third.
CONTAINING True if the string specified by the second string
expression is found within the string specified
by the first. CONTAINING is not case sensitive.
MATCHING True if the second expression matches a substring
of the first value expression. MATCHING is not
case sensitive. It uses the wildcard characters:
* Matches any string of zero or more characters
% Matches any single character in that position
MISSING True if the value expression is null.
STARTING WITH True if the first characters of the first string
expression match the second string expression.
STARTING WITH is case sensitive.
record sel expr
A record selection expression (RSE) is a clause that VAX Information
Architecture products use at run time to include specific records for
processing, based on a set of conditions described by the RSE.
rse =
──┬───────────────────┬───> relation-clause ──┬──────────────────┬─┐
└──> first-clause ──┘ └─> cross-clause ──┘ │
│
┌─────────────────────────────────────────────────────────────────┘
└┬──────────────────┬─┬────────────────────┬─┬──────────────────┬──>
└──> with-clause ──┘ └──> reduced-clause ─┘ └──> sort-clause ──┘
Additional information available:
first-clauserelation-clausecross-clausewith-clausereduced-clause
sort-clause
first-clause
The FIRST clause specifies how many records are in the record stream
formed by the record selection expression. The record stream cannot
contain more records than the number specified by the value expression.
first-clause=
───────>
F
I
R
S
T ──────> value-expr ───────>
Additional information available:
value-expr
A symbol or string of symbols used to calculate a value. The value expression in a FIRST clause must be either be a positive integer or a value expression that evaluates to a positive integer.
Example
You can use FIRST and SORTED BY to find the maximum values for a field. You could use the MAX statistical function to find the highest paid employee, but you can use a statement such as the following to find the five highest paid employees: FIRST 5 C IN CURRENT_SALARY SORTED BY DESCENDING SALARY_AMOUNT IN C
relation-clause
The RELATION clause is used to declare context variables for a record
stream or a loop. A context variable is a temporary name that
identifies the record stream to the layered product evaluating the
clause.
relation-clause =
──> context-var ───>
I
N ────> relation-name ──>
Additional information available:
context-varrelation-nameExamples
context-var
A context variable.
relation-name
The name of the relation from which the records in the record stream will be taken.
Examples
The following RSE retrieves all of the records from the EMPLOYEES relation: E IN EMPLOYEES The following example declares E as the context variable for the record stream of records from the EMPLOYEES relation: COUNT OF E IN EMPLOYEES WITH STATE IN E = "NY"
cross-clause
The CROSS clause of the record selection expression lets you combine
records from two or more record streams. You can join these records in
combinations based on the relationship between the values of fields in
the separate record streams. This combining of records is called a
relational join.
cross-clause =
─┬─>
C
R
O
S
S ──> relation-clause ───┬──>
└───────────────<────────────────┘
Additional information available:
relation-clause
The RELATION clause is used to declare context variables for a record stream or loop. For more information, see the subtopic "record_sel_expr" under the top-level topic "expressions".
Examples
The following example finds all the employees for whom data is stored in the JOB_HISTORY relation: E IN EMPLOYEES CROSS JH IN JOB_HISTORY WITH EMP_ID IN E = EMP_ID IN JH The following example retrieves information on all employees and their job descriptions: E IN EMPLOYEES CROSS J IN JOBS
with-clause
The WITH clause contains a conditional expression that allows you to
specify conditions that must be true for a record to be included in a
record stream.
with-clause=
──────>
W
I
T
H ───> cond-expr ───>
Additional information available:
cond-expr
A record becomes part of a record stream only when its values satisfy the conditions you specified in the conditional-expr (that is, only when the conditional expression is "true"). If the conditional expression evaluates to false or missing for a record, that record is not included in the record stream.
Example
The following RSE returns all employees whose JOB_CODE = "R": E IN EMPLOYEES WITH JOB_CODE IN E = "R"
reduced-clause
The REDUCED clause of the record selection expression lets you eliminate duplicate values for fields in a record stream. You can use this expression to eliminate redundancy in the results of a query and to group the records in a relation according to unique field values. However, merely using the REDUCED clause does not guarantee the resulting order of the resulting record stream; to ensure a specific order, use the SORTED BY clause. reduced-clause = ───────>
R
E
D
U
C
E
D
T
O ───┬──> value-expr ─────┬───> └───────── , <───────┘
Additional information available:
value-expr
A symbol or string of symbols used to calculate a value.
Example
The following expression lists all the currently active job codes only once: REDUCED TO JOB_CODE IN J
sort-clause
The SORTED BY clause of the record selection expression lets you sort the records in the record stream by the values of specific fields. You can sort the records according to a value expression called a sort key, which determines the order in which records are returned. sort-clause = ───>
S
O
R
T
E
D
B
Y ───┬─┬────────────────┬──> value-expr ──┬──> │ ├──>
A
S
C
E
N
D
I
N
G ──┤ │ │ └──>
D
E
S
C
E
N
D
I
N
G ─┘ │ └────────────── , <──────────────────┘
Additional information available:
value-expr
A value expression specifying the value to sort by. This is called the sort key.
Examples
The following expression sorts EMPLOYEES by ID Number: EMPLOYEES SORTED BY EMPLOYEE_ID IN E In the following example, records are sorted first first by STATUS_CODE in descending order. Within each STATUS_CODE group, the records are sorted by LAST_NAME in ascending order. Finally, within groups of employees with the same last name, records are sorted by EMPLOYEE_ID. The order for this last sort is also ascending because it adopts the order from the previous sort key. SORTED BY DESCENDING STATUS_CODE IN E ASCENDING LAST_NAME IN E, EMPLOYEE_ID IN E
precedence ordering
The following table shows the order in which CDD/Plus interprets
symbols used in a CDD/Plus expression. The first line of the table
shows the first part of an expression to be evaluated (a symbol or
group of symbols surrounded by parentheses). The second line of the
table shows the next part of an expression to be evaluated (the
multiplication and division symbols). Symbols on the same line in the
table have equal precedence; CDD/Plus evaluates them in the order they
appear in an expression. The items on any line of the table have lower
precedence than the items on the line above them. The final line in
the table is the logical operator OR. This is the last part of a
CDD/Plus expression to be evaluated.
Precedence Ordering within Expressions
(symbols) A Symbol or Symbols within Parentheses
* / Multiplication and Division Symbols
+ - Addition and Subtraction Symbols
< > <= >= = <> See subtopic "relational_operators"
NOT Logical Operator
AND Logical Operator
OR Logical Operator
Additional information available:
relational operators
The following table shows equivalent symbols for the relational operators shown in the Precedence Ordering within Expressions table: Relational Equivalent Operator Symbol Meaning < LT "Less than" > GT "Greater than" <= LE "Less than or equal to" >= GE "Greater than or equal to" = EQ "Equal to" <> NE "Not equal to"
Examples
CDO evaluates the following expression's value as 3: (6 + 12)/6 CDO evaluates the following expression's value as 8: 6 + 12/6 In the following expression, CDO evaluates X as a value between 2 through 4 or 11 through 20: IF (X GE 2 AND X LE 4) OR (X GE 11 AND X LE 20) THEN 1 ELSE 0
field-attr
Field attributes define the characteristics of the data you store in
fields. The following diagram shows the valid CDO field attributes:
field-attributes=
──────────────┬─> array-type ────────────────────────────────────┬──>
├─>
A
U
D
I
T typebox (I)typebox (S) typebox (/)typebox (*) text */ ─────────────────────────┤
├─>
B
A
S
E
D
O
N field-name ───────────────────────────┤
├─> computed-by-clause ────────────────────────────┤
├─>
D
A
T
A
T
Y
P
E typebox (I)typebox (S) data-type ─────────────────────────┤
├───┬─────>──────┬>
E
D
I
T
S
T
R
I
N
G typebox (I)typebox (S) edit-string ────┤
│ └> language ─┘ │
├─>
F
I
L
L
E
R ────────────────────────────────────────┤
├─>
I
N
I
T
I
A
L
V
A
L
U
E typebox (I)typebox (S) ──> value-expr ───────────────┤
├─>
J
U
S
T
I
F
I
E
D ───> justified-option ───────────────┤
├─>
M
I
S
S
I
N
G
V
A
L
U
E typebox (I)typebox (S) ──> value-expr ───────────────┤
├─>
N
A
M
E Ftypebox (O)typebox (R) language IS name ─────────────────────┤
├─> occurs-phrase ─────────────────────────────────┤
├─>
Q
U
E
R
Y
H
E
A
D
E
R typebox (I)typebox (S) ─┬─> quoted-string ─┬──────────┤
│ └───────── , <─────┘ │
├─>
Q
U
E
R
Y
N
A
M
E typebox (I)typebox (S) ──┬─> quoted-string ──┬──────────┤
│ └─> query-name ─────┘ │
└─>
V
A
L
I
D
I
F conditional-expr ─────────────────────┘
To remove a field attribute from a field definition, you use the CHANGE
FIELD command and add the prefix "NO" to the name of the attribute you
want to remove. The following diagram shows the keywords that are used
to remove field attributes from a field definition:
cancel-field-attributes=
───────────────────┬───>
N
O
A
R
R
A
Y ────────────────────┬───────>
├───>
N
O
B
A
S
E
D
O
N ─────────────────┤
├───>
N
O
C
O
M
P
U
T
E
D
B
Y ──────────────┤
├───>
N
O
D
A
T
A
T
Y
P
E ─────────────────┤
├─┬─────>─────┬─>
N
O
E
D
I
T
S
T
R
I
N
G ──┤
│ └>language ─┘ │
├───>
N
O
I
N
I
T
I
A
L
V
A
L
U
E ────────────┤
├───>
N
O
J
U
S
T
I
F
I
E
D ────────────────┤
├───>
N
O
M
I
S
S
I
N
G
V
A
L
U
E ────────────┤
├───>
N
O
N
A
M
E Ftypebox (O)typebox (R) language ────────┤
├───>
N
O
O
C
C
U
R
S ───────────────────┤
├───>
N
O
Q
U
E
R
Y
H
E
A
D
E
R ─────────────┤
├───>
N
O
Q
U
E
R
Y
N
A
M
E ───────────────┤
└───>
N
O
V
A
L
I
D
I
F ─────────────────┘
Additional information available:
ARRAYAUDITBASEDDATATYPEEDIT_STRINGFILLER
INITIAL_VALUEJUSTIFIEDMISSING_VALUENAMEOCCURS
QUERY_HEADERQUERY_NAMEVALID
ARRAY
Declares single- or multi-dimensional arrays. The syntax and function of the ARRAY field attribute are the same as for the ARRAY record attribute. array-type= ─┬────────>───────┬─>
A
R
R
A
Y ─┬─┬───>───┬─> n2 ─┬─> ├>
R
O
W
M
A
J
O
R ────┤ │ └> n1: ─┘ │ └>
C
O
L
U
M
N
M
A
J
O
R ─┘ └─────────<───────┘
Additional information available:
n1
The lower bound of the subscript. Replace n1 with a signed integer.
n2
The upper bound of the subscript. Replace n2 with a signed integer.
Examples
In the following example, the ARRAY clause declares 20 instances of SUPPLIER (from 0 to 19) where each instance is four 30-character strings. CDO> DEFINE FIELD SUPPLIER cont> ARRAY 0:19 1:4 cont> DATATYPE IS TEXT cont> SIZE IS 30 CHARACTERS. CDO> The following command removes the ARRAY clause from field SUPPLIER: CDO> CHANGE FIELD SUPPLIER cont> NOARRAY. CDO>
AUDIT
Allows you to enter comments that will appear in a history list entry to a field definition. ───>
A
U
D
I
T typebox (I)typebox (S) typebox (/)typebox (*) text */ ───────────────>
Additional information available:
text
Comments that will be included in a history list entry for the field definition.
Examples
The following example shows two commands. The first command creates the field definition ZIP_CODE. The DESCRIPTION clause explains what the field's value should be. The AUDIT clause is used to indicate that the field will be changed in the future. The second command shows the history list entry for the field definition after the first command executes: CDO> DEFINE FIELD ZIP_CODE cont> DESCRIPTION IS /* A 5 DIGIT POSTAL CODE */ cont> AUDIT IS /* WILL BE CHANGED TO 9 DIGITS EVENTUALLY */ cont> DATATYPE IS UNSIGNED LONGWORD cont> SIZE IS 5 DIGITS. CDO> SHOW FIELD/ALL ZIP_CODE Definition of field ZIP_CODE | acl (IDENTIFIER=[VCD,RICK],ACCESS=READ+WRITE+ MODIFY+ERASE+SHOW+DEFINE+CHANGE+DELETE+CONTROL+OPERATOR+ADMINISTRATOR) (IDENTIFIER=[*,*],ACCESS=READ+WRITE+MODIFY+ERASE+SHOW+OPERATOR+ADMINIS TRATOR) | Created time 10-JUN-1987 15:02:41.84 | Description ' A 5 DIGIT POSTAL CODE ' | Modified time 10-JUN-1987 15:02:41.84 | Owner RICK | Datatype unsigned longword 5 digits | | History entered by RICK ([VCD,RICK]) | | using CDO V1.0 | | to CREATE definition on 10-JUN-1987 15:02:31.73 | | Explanation: | | WILL BE CHANGED TO 9 DIGITS EVENTUALLY CDO> The following example shows two commands. The first command changes the value allowed for the ZIP_CODE field. The second command shows the history list entries for the field definition after the first command executes: CDO> CHANGE FIELD ZIP_CODE cont> DESCRIPTION IS /* A 9 DIGIT POSTAL CODE */ cont> AUDIT IS /* NEW POSTAL CODE IS NOW IN EFFECT */ cont> DATATYPE IS UNSIGNED LONGWORD cont> SIZE IS 9 DIGITS. CDO> SHOW FIELD/AUDIT ZIP_CODE Definition of field ZIP_CODE | | History entered by RICK ([VCD,RICK]) | | using CDO V1.0 | | to CREATE definition on 10-JUN-1987 14:20:47.53 | | Explanation: | | WILL BE CHANGED TO 9 DIGITS EVENTUALLY | | History entered by RICK ([VCD,RICK]) | | using CDO V1.0 | | to MODIFY on 10-JUN-1987 14:22:10.95 | | Explanation: | | NEW POSTAL CODE IS NOW IN EFFECT CDO> The following example shows the history list entry that would have been created for the field definition ZIP_CODE if no AUDIT clause had been specified during the creation or modification of the object: CDO> SHOW FIELD/AUDIT ZIP_CODE Definition of field ZIP_CODE | | History entered by RICK ([VCD,RICK]) | | using CDO V1.0 | | to CREATE definition on 10-JUN-1987 14:27:58.82 | | History entered by RICK ([VCD,RICK]) | | using CDO V1.0 | | to MODIFY on 10-JUN-1987 14:28:52.96 CDO>
BASED
BASED ON is used to define a field that shares the attributes of a field already defined. ──>
B
A
S
E
D
O
N ─────────> field-name ───────────────────────────────>
Additional information available:
field-name
The name of the field definition whose attributes will be used in the field you are defining.
Examples
The following group of examples shows how the BASED ON clause can be used to define several fields that contain the attributes of the base field. The following command creates the BADGE NUMBER field: CDO> DEFINE FIELD BADGE_NUMBER cont> DATATYPE PACKED DECIMAL 8. CDO> The following command creates the SUPERVISOR_BADGE_NUMBER field. Because the BASED ON clause is used, CDO reads the attributes of the BADGE_NUMBER field and applies them to the SUPERVISOR_BADGE_NUMBER field. If you want the new field to have additional attributes not found in the base field, you can specify the additional attributes when you define the based on field, or later with the CHANGE FIELD command. In this example, the VALID IF clause is used to specify an additional attribute in the SUPERVISOR_BADGE_NUMBER field. The VALID IF clause ensures that only badge numbers higher than 500 will be accepted in the SUPERVISOR_BADGE_NUMBER field: CDO> DEFINE FIELD SUPERVISOR_BADGE_NUMBER cont> BASED ON BADGE_NUMBER cont> VALID IF SUPERVISOR_BADGE_NUMBER > 500. CDO> The following command creates the MANAGER_BADGE_NUMBER field, which is based on the SUPERVISOR_BADGE_NUMBER field. CDO determines the attributes not explicitly specified in SUPERVISOR_BADGE_NUMBER by reading BADGE_NUMBER and then applies those attributes to MANAGER_BADGE_NUMBER. CDO does not apply the VALID IF clause in SUPERVISOR_BADGE_NUMBER to MANAGER_BADGE_NUMBER because the VALID IF clause specified in MANAGER_BADGE_NUMBER supersedes the VALID IF clause in SUPERVISOR_BADGE_NUMBER: CDO> DEFINE FIELD MANAGER_BADGE_NUMBER cont> BASED ON SUPERVISOR_BADGE_NUMBER cont> VALID IF MANAGER_BADGE_NUMBER > 1000. CDO> You can use the CHANGE FIELD to change the value of an attribute in a field definition based on another field definition. For example, after the following command executes, the MANAGER_BADGE_NUMBER field will only accept values greater than 1500: CDO> CHANGE FIELD MANAGER_BADGE_NUMBER cont> VALID IF MANAGER_BADGE_NUMBER > 1500 CDO> The following examples show how to use the BASED ON clause to give individual names to field definitions that share the same attributes. The following command defines the field SSAN: CDO> DEFINE FIELD SSAN cont> DATATYPE IS PACKED DECIMAL 9. CDO> Because a social security number does not change, the attributes in a field that is based on field SSAN shares the same attributes as SSAN. The following command defines the field SUPERVISOR_SSAN: CDO> DEFINE FIELD SUPERVISOR_SSAN cont> BASED ON SSAN. CDO> By giving different names to otherwise identical field descriptions, you can refer to each field uniquely when you define a record. The following command defines a record named EMPLOYEE_RECORD: CDO> DEFINE RECORD EMPLOYEE_RECORD. cont> SSAN. cont> SUPERVISOR_SSAN. cont> DEPT. cont> LAST_NAME. cont> MIDDLE_INITIAL. cont> FIRST_NAME. cont> STREET. cont> CITY. cont> ZIP. cont> END RECORD. CDO> The following example shows two commands. The first command defines the field MANAGER_SSAN based on field SSAN and gives MANAGER_SSAN the "MANAGER SSAN" query header. The second command removes the BASED ON attribute from the field MANAGER_SSAN: CDO> DEFINE FIELD MANAGER_SSAN cont> BASED ON SSAN cont> QUERY_HEADER IS "MANAGER SSAN". CDO> CHANGE FIELD MANAGER_SSAN cont> NOBASED ON. CDO>
computed-by-clause
Allows the value of a field to be determined by evaluating an expression at run-time. computed-by-clause= ─>
C
O
M
P
U
T
E
D
B
Y ─┬─> value-expr ─────────────┬─> └─> conditional-value-expr ─┘
Additional information available:
value-exprconditional-value-exprExamples
value-expr
An expression used to calculate the field's value.
conditional-value-expr
A value expression whose value is dependent on the value of a conditional (Boolean) expression. As part of the COMPUTED BY clause, it allows you to define a field that is equivalent to a COBOL 88 level condition. conditional-value-expr= ─>
I
F cond-expr THEN value-expr ─┬─────────>─────────┬─> └>
E
L
S
E value-expr ─┘
Additional information available:
cond-expr
An expression that represents the relationship between two value expressions. The value of a conditional expression is true, false, or null. For more information on conditional expressions, see the subtopic "conditional_expr" under the top-level topic "expressions."
value-expr
A symbol or string of symbols used to calculate a value. For more information on value expressions, see the subtopic "value_expr" under the top-level topic "expressions."
Examples
The following group of examples show how to create equivalent CDO
definitions for a COBOL record containing level 88 definitions. The
following example shows the COBOL syntax for a record containing level
88 definitions:
01 COB88.
03 C USAGE IS COMP PIC 9(4).
88 C_ONE VALUE 1.
88 C_FIVE_TEN VALUES ARE 5 THRU 10.
88 C_OTHER VALUES ARE 2 THRU 4
11 THRU 20.
The following example shows how to define the COBOL record in the
previous example with level 88 definitions using CDO syntax. First,
each of the fields that will be used in the record COB88 is defined,
then the record itself is defined:
CDO> DEFINE FIELD C
cont> DATATYPE SIGNED WORD.
CDO> DEFINE FIELD C_ONE
cont> COMPUTED BY IF C EQ 1 THEN 1 ELSE 0.
CDO> DEFINE FIELD C_FIVE_TEN
cont> NAME FOR COBOL IS C_5_10
cont> COMPUTED BY IF C GE 5 AND C LE 10 THEN 1 ELSE 0.
CDO> DEFINE FIELD C_OTHER
cont> COMPUTED BY
cont> IF (C GE 2 AND C LE 4)
cont> OR (C GE 11 AND C LE 20)
cont> THEN 1 ELSE 0.
CDO> DEFINE RECORD COB88.
cont> C.
cont> C_ONE.
cont> C_FIVE_TEN.
cont> END RECORD.
Examples
In the following example, no storage has been allocated for
TOTAL_PRICE. Instead, the expression UNIT_PRICE * QUANTITY is used to
calculate the value of TOTAL_PRICE at run time.
CDO> DEFINE FIELD TOTAL_PRICE
cont> COMPUTED BY UNIT_PRICE * QUANTITY.
CDO>
The following command removes the COMPUTED BY attribute from the field
TOTAL_PRICE:
CDO> CHANGE FIELD TOTAL_PRICE
cont> NOCOMPUTED BY.
CDO>
The COMPUTED BY clause can be used in fields that will be used in CDO
definitions that are equivalent to COBOL records containing level 88
definitions. The first example below shows the COBOL syntax for a
record containing level 88 definitions; the remaining examples show
equivalent CDO definitions for this COBOL record:
01 COB88.
03 C USAGE IS COMP PIC 9(4).
88 C_ONE VALUE 1.
88 C_FIVE_TEN VALUES ARE 5 THRU 10.
88 C_OTHER VALUES ARE 2 THRU 4
11 THRU 20.
The following examples show the equivalent CDO syntax for the COBOL
record in the previous example. Each individual field that will be
used in the record COB88 is defined, then the record itself is defined:
CDO> DEFINE FIELD C
cont> DATATYPE SIGNED WORD.
CDO> DEFINE FIELD C_ONE
cont> COMPUTED BY IF C EQ 1 THEN 1 ELSE 0.
CDO> DEFINE FIELD C_FIVE_TEN
cont> NAME FOR COBOL IS C_5_10
cont> COMPUTED BY IF C GE 5 AND C LE 10 THEN 1 ELSE 0.
CDO> DEFINE FIELD C_OTHER
cont> COMPUTED BY IF (C GE 2 AND C LE 4) OR (C GE 11 AND C LE 20)
cont> THEN 1 ELSE 0.
CDO> DEFINE RECORD COB88.
cont> C.
cont> C_ONE.
cont> C_FIVE_TEN.
cont> C_OTHER.
cont> END RECORD.
CDO>
DATATYPE
Declares the type and size of a field. Some valid CDO data types may not be supported by the languages or language processors which will use the CDO field definition. Be sure that the data type you specify is valid for the language processors that will use the field definition. data-type= ─┬>
A
L
P
H
A
B
E
T
I
C ──────> typebox (S)typebox (I)typebox (Z)typebox (E) typebox (I)typebox (S) ─> numeric-literal case CHARACTERS ───┬─> ├>
B
I
T ─────────────> typebox (S)typebox (I)typebox (Z)typebox (E) typebox (I)typebox (S) ─> numeric-literal ────────────────────┤ ├>
D
A
T
E ─────────────────────────────────────────────────────────────┤ ├> decimal-string-dtypes ────────────────────────────────────────────┤ ├> fixed-point-dtypes ───────────────────────────────────────────────┤ ├> floating-point-dtypes ────────────────────────────────────────────┤ ├>
P
O
I
N
T
E
R ──────┬─────────────────────>─────────────────────┬───────┤ │ └─> typebox (T)typebox (O) name ─────────┬─┬─────────────┬─┬────┘ │ │ │ └─>
I
N name ──┘ │ │ │ └─────────<───────┘ │ ├>
R
E
A
L ─────────────────────────────────────────────────────────────┤ ├>
S
E
G
M
E
N
T
E
D
S
T
R
I
N
G ─┬───────────────────────>───────────────────┬─┐ │ │ └>
S
E
G
M
E
N
T
L
E
N
G
T
H typebox (I)typebox (S) numeric-literal BYTES ─┘ │ │ │ ┌───────────────────<─────────────────────┘ │ │ └┬───────────────>───────────────┬──────────┤ │ └>
S
E
G
M
E
N
T
T
Y
P
E typebox (I)typebox (S) string-type ─┘ │ ├>
T
E
X
T ────────────> typebox (S)typebox (I)typebox (Z)typebox (E) typebox (I)typebox (S) ─> numeric-literal case CHARACTERS ────┤ ├>
U
N
S
P
E
C
I
F
I
E
D ─────> typebox (S)typebox (I)typebox (Z)typebox (E) typebox (I)typebox (S) ─> numeric-literal BYTES ──────────────┤ └>
V
A
R
Y
I
N
G
S
T
R
I
N
G ──> typebox (S)typebox (I)typebox (Z)typebox (E) typebox (I)typebox (S) ─> numeric-literal case CHARACTERS ────┘
Additional information available:
casedecimal-string-dtypesfloating-point-dtypesfixed-point-dtypes
numeric-literalSEGMENT LENGTH valuesSEGMENT TYPE values
nameExamples
case
Specifies whether the letters in a string data type are uppercase, lowercase, or neither. ──┬──>
C
A
S
E
I
N
S
E
N
S
I
T
I
V
E ─┬──> ├──>
L
O
W
E
R
C
A
S
E ─────────┤ └──>
U
P
P
E
R
C
A
S
E ─────────┘
Additional information available:
Examples
The following example shows two commands. In the first command, the DEFINE FIELD command specifies an ALPHABETIC data type field attribute for the field definition LAST_NAME, which consists of 26 uppercase letters. In the second command, the SHOW FIELD command displays the data type for the field definition LAST_NAME. CDO> DEFINE FIELD LAST_NAME cont> DATATYPE IS ALPHABETIC cont> SIZE IS 26 UPPERCASE CHARACTERS CDO> SHOW FIELD LAST_NAME Definition of field LAST_NAME | Datatype alphabetic size is 26 uppercase characters The following example shows two commands. In the first command, the DEFINE FIELD command specifies VARYING STRING data type field attribute for the field definition ADDRESS which consists of 50 upper and lowercase letters. In the second command, the SHOW FIELD command displays the data type for the field definition ADDRESS. CDO> DEFINE FIELD STREET_ADDRESS cont> DATATYPE VARYING STRING cont> SIZE 50 CASE_INSENSITIVE CHARACTERS. CDO> SHOW FIELD STREET_ADDRESS Definition of field STREET_ADDRESS | Datatype varying string size is 50 case_insensitive characters
decimal-string-dtypes
decimal-string-dtypes= ───────────┬─>
L
E
F
T ──┬────────┬>
S
E
P
A
R
A
T
E
N
U
M
E
R
I
C ────┬┬────┐ ├─>
R
I
G
H
T ─┘ └>
O
V
E
R
P
U
N
C
H
E
D
N
U
M
E
R
I
C ─┘│ │ ├─>
P
A
C
K
E
D
D
E
C
I
M
A
L ──────────────────────────┤ │ ├─>
Z
O
N
E
D
N
U
M
E
R
I
C ───────────────────────────┤ │ └─>
U
N
S
I
G
N
E
D
N
U
M
E
R
I
C ────────────────────────┘ │ ┌─────────────────────<────────────────────────────────┘ └┬───────────────────>─────────────────┬──┬─────>─────┬─> └> typebox (S)typebox (I)typebox (Z)typebox (E) typebox (I)typebox (S) ─> numeric-literal DIGITS ─┘ └>
S
C
A
L
E n ─┘
Additional information available:
n
A signed integer in the range -128 to 127. You can specify a SCALE as an implied exponent. The SCALE specification indicates the number of places to shift the decimal point when the field is evaluated. Negative n indicates a shift of n places to the left, and positive n indicates a shift of n places to the right.
numeric-literal
The number of DIGITS that will be allowed in the field. The number of digits must be greater than 0 and less than 32.
Example
The following command defines a field ACCOUNT_BALANCE with the SIGNED NUMERIC data type: CDO> DEFINE FIELD ACCOUNT_BALANCE cont> DATATYPE IS SIGNED NUMERIC cont> SIZE IS 9 DIGITS. CDO>
floating-point-dtypes
floating-point-dtypes= ─┬─>
D
F
L
O
A
T
I
N
G ─┬───┬──────>─────┬──┬────────>──────┬───> ├─>
F
F
L
O
A
T
I
N
G ─┤ └─>
C
O
M
P
L
E
X ─┘ └─>
S
C
A
L
E ─> n ─┘ ├─>
G
F
L
O
A
T
I
N
G ─┤ └─>
H
F
L
O
A
T
I
N
G ─┘
Additional information available:
n
A signed integer in the range -128 to 127. You can specify a SCALE as an implied exponent. The SCALE specification indicates the number of places to shift the decimal point when the field is evaluated. Negative n indicates a shift of n places to the left, and positive n indicates a shift of n places to the right.
Example
The following example defines the field STANDARD_DEVIATION with the H_FLOATING data type: CDO> DEFINE FIELD STANDARD_DEVIATION cont> DATATYPE IS H_FLOATING. CDO>
fixed-point-dtypes
fixed-point-dtypes= ──────────────┬─────>───────┬───┬─>
B
Y
T
E ─────┬────────┐ ├─>
S
I
G
N
E
D ───┤ ├─>
W
O
R
D ─────┤ │ └─>
U
N
S
I
G
N
E
D ─┘ ├─>
L
O
N
G
W
O
R
D ─┤ │ ├─>
Q
U
A
D
W
O
R
D ─┤ │ └─>
O
C
T
A
W
O
R
D ─┘ │ ┌────────────────────────<─────────────────────────────┘ └┬─────────────────>───────────────────┬──┬───────>───────┬─> └> typebox (S)typebox (I)typebox (Z)typebox (E) typebox (I)typebox (S) ─> numeric-literal DIGITS ─┘ └─>
S
C
A
L
E ─> n ─┘
Additional information available:
n
A signed integer in the range -128 to 127. You can specify a SCALE as an implied exponent. The SCALE specification indicates the number of places to shift the decimal point when the field is evaluated. Negative n indicates a shift of n places to the left, and positive n indicates a shift of n places to the right.
numeric-literal
The number of DIGITS that will be allowed in the field. The number of digits must be greater than 0 and less than 32.
Example
The following command defines a field NEW_MEMBERS with the UNSIGNED LONGWORD data type: CDO> DEFINE FIELD NEW_MEMBERS cont> DATATYPE IS UNSIGNED LONGWORD 3. CDO>
numeric-literal
The number of characters or bytes in the field being defined, or the number of bytes in a string segment in a field with a data type of SEGMENTED STRING. In a SEGMENT_TYPE clause, a number representing the segment type. The SEGMENTED STRING data type is supported by DSRI-compliant databases.
SEGMENT LENGTH values
The maximum size of a string segment is 64K bytes. If you do not specify a SEGMENT_LENGTH, the default segment length is 512 bytes. SEGMENT_LENGTH corresponds to RDB$LENGTH.
SEGMENT TYPE values
The following table shows valid values for SEGMENT_TYPE. +----------------+--------------------------------------+ | Value | Meaning | +----------------+--------------------------------------+ | 0 | The contents of the segmented string | | | are unspecified. | | 1 | The segmented string contains text. | | 2 | The segmented string contains Binary | | | Language Representation statements. | | Greater than 2 | Reserved for use by Digital. | | Less than 0 | Reserved for use by customers. | +----------------+--------------------------------------+ SEGMENT_TYPE corresponds to RDB$VALUE.
name
The name of a structure that is used to provide a path to an entity.
Examples
The following command defines a field BEST_SELLER with the TEXT data type: CDO> DEFINE FIELD BEST_SELLER cont> DATATYPE IS TEXT 40. CDO> The following command removes the DATATYPE attribute from the field BEST_SELLER: CDO> CHANGE FIELD BEST_SELLER cont> NODATATYPE. CDO>
EDIT_STRING
Provides a format that is followed when a field's value is displayed. ───┬───────>─────┬──>
E
D
I
T
S
T
R
I
N
G typebox (I)typebox (S) ─────> edit-string ────> └> language ──┘ language= ─────┬───>
C
O
B
O
L ───┬────> ├───>
D
T
R ─────┤ ├───>
P
L
I ─────┤ └───>
R
P
G ─────┘
Additional information available:
edit-string
An edit string. See the the top-level topic "edit-str" for a description of valid CDO edit strings.
language
A language that can be specified in a language-specific edit string. If you do not specify a language, a generic edit string is created. For more information on language-specific edit strings and generic edit strings, see the subtopic "more_info".
Additional information available:
more info
A generic edit string is used by all of the languages that support edit
strings (COBOL, DATATRIEVE, PL/I, and RPG).
A language-specific edit string is used only by the language you
specify. A COBOL edit string, for example, is used only by COBOL.
DATATRIEVE, PL/I, and RPG ignore a COBOL edit string.
You should create a language-specific edit string if:
1. One or more characters in the generic edit string cannot be
translated into valid edit string characters for a language that
uses the generic edit string. See the top-level topic "edit-str"
for a table that shows how CDO translates characters in a generic
edit string for COBOL, DATATRIEVE, PL/I, and RPG.
2. A language that uses the generic edit string does not support the
data type of the field definition that contains the generic edit
string.
When you specify a language-specific edit string for a field definition
that already contains a generic edit string, the language-specific edit
overrides the generic edit string for the specified language. For
example, if a generic edit string exists and you specify a COBOL
language-specific edit string, COBOL will always use the COBOL
language-specific edit string, not the generic edit string.
If you define only language-specific edit strings, those languages for
which you do not specify a language-specific edit string will not have
edit strings.
Should your programs fail to compile because of edit string or data
type errors, the language may not support the generic edit string. In
such cases, you should create a language-specific edit string to
exclude this language from accessing the generic edit string.
To remove a language-specific edit string, the language keyword must
precede the NOEDIT_STRING keyword.
Examples
In the following example, the EDIT_STRING attribute clause determines that the TRANS_DATE field will be displayed as a series of three 2-digit numbers in the format month/day/year. CDO> DEFINE FIELD TRANS_DATE cont> DATATYPE IS DATE cont> EDIT_STRING IS NN"/"DD"/"YY. CDO> The following command removes the EDIT_STRING attribute from the field TRANS_DATE: CDO> CHANGE FIELD TRANS_DATE cont> NOEDIT_STRING. CDO> In the following example, COBOL and DATATRIEVE programs use the field definition DTR_FIELD. In this case, the user specified a DATATRIEVE language-specific edit string because COBOL does not support an edit string for dates. The output from this DATATRIEVE language-specific edit string displays the date in a month/day/year format. CDO> DEFINE FIELD DTR_FIELD cont> DATATYPE IS DATE cont> DTR EDIT_STRING IS NN"/"DD"/"YY. CDO> In the following example, the SHOW FIELD command displays the DATATRIEVE edit string for the field definition DTR_FIELD: CDO> SHOW FIELD DTR_FIELD Definition of field DTR_FIELD | Datatype date | DTR Edit_string NN"/"DD"/"YY CDO> In the following example, the DTR NOEDIT_STRING keywords remove the language-specific DATATRIEVE EDIT_STRING field attribute from the field definition DTR_FIELD: CDO> CHANGE FIELD DTR_FIELD cont> DTR NOEDIT_STRING CDO>
FILLER
The FILLER field attribute is used to create an unnamed field
definition.
─>
F
I
L
L
E
R ──>
Unnamed field attributes are similar to FILLER fields in COBOL. You
can use them to format print records or to reserve space in a record
for future additions.
When you specify the FILLER field attribute, the value of the field
definition's processing name (CDD$PROCESSING_NAME) attribute is left
null. For more information on the CDD$PROCESSING_NAME attribute, see
the VAX CDD/Plus Call Interface Manual.
Additional information available:
Example
The following command creates an unnamed field definition by using the FILLER keyword: CDO> DEFINE FIELD BLANKS cont> DATATYPE IS TEXT 30 FILLER. CDO>
INITIAL_VALUE
Declares a field's value when the field is first allocated. ──>
I
N
I
T
I
A
L
V
A
L
U
E typebox (I)typebox (S) ────> value-expr ──────────────>
Additional information available:
value-expr
Must be a valid expression for the layered product that will evaluate it. See the help on the subtopic "value_expr" under the top-level topic "expressions" for a description and diagram of CDO value expressions.
Examples
The following example shows how to give the field AMOUNT an INITIAL_VALUE of 0: CDO> DEFINE FIELD AMOUNT CDO> DATATYPE IS UNSIGNED NUMERIC cont> SIZE IS 8 DIGITS cont> INITIAL_VALUE IS 0. CDO> The following command removes the INITIAL_VALUE attribute from field AMOUNT: CDO> CHANGE FIELD AMOUNT cont> NOINITIAL_VALUE. CDO>
JUSTIFIED
Specifies how text fills the storage space allocated to a field. ────>
J
U
S
T
I
F
I
E
D ────> justified-option ───> justified-option= ───┬>
R
I
G
H
T ──┬──> ├>
L
E
F
T ───┤ └>
C
E
N
T
E
R ─┘
Additional information available:
justified-option
One of the following options of the JUSTIFIED field attribute: o RIGHT, which truncates or fills a TEXT field from the left. o LEFT, which truncates or fills a TEXT field from the right. o CENTER, which centers a TEXT field. Only VAX COBOL supports the JUSTIFIED RIGHT attribute clause. Other language processors ignore it. For fields with the JUSTIFIED RIGHT clause, VAX COBOL stores as much of the right portion of the string as it can. If there is remaining storage space to the left of the string, VAX COBOL fills it with blanks.
Examples
The following command allocates space for 15 characters of text that will be right-justified by COBOL: CDO> DEFINE FIELD STREET cont> DATATYPE IS TEXT 15 cont> NAME FOR COBOL IS C_STREET cont> JUSTIFIED RIGHT. CDO> The following example shows how COBOL stores the strings "137 Smithsonian Avenue," "15 Maple Street", and "6 Oak Street" in the field STREET from the previous example (the underscores represent blanks that COBOL enters to fill the 15 characters allocated for field STREET): thsonian Avenue 15 Maple Street ___6 Oak Street The following command deletes the RIGHT_JUSTIFIED attribute from the field STREET: CDO> CHANGE FIELD STREET cont> NOJUSTIFIED. CDO>
MISSING_VALUE
Specifies a value to use if a field has not been assigned a meaningful value. A language processor uses this value in reports or displays only when the field does not contain a meaningful value. See the DATATRIEVE or Rdb/VMS documentation for more information on how those products interpret MISSING_VALUE clauses. ──>
M
I
S
S
I
N
G
V
A
L
U
E typebox (I)typebox (S) ────> value-expr ──────────>
Additional information available:
value-expr
A value expression. This must be a valid expression for the product that will evaluate it. See the subtopic "value_expr" under the top-level topic "expressions" for a description and diagram of CDO value expressions.
Examples
The following example assigns a missing value of 0 to the field PRICE. A PRICE of 0 indicates that the value for PRICE is missing; fields with PRICE equal to 0 are ignored when calculations are performed involving the PRICE field. CDO> DEFINE FIELD PRICE cont> DATATYPE IS SIGNED NUMERIC cont> SIZE IS 8 DIGITS cont> MISSING_VALUE IS 0. CDO> The following command removes the MISSING_VALUE attribute from the field PRICE: CDO> CHANGE FIELD PRICE cont> NOMISSING_VALUE. CDO>
language
A language that can be specified in a language-specific edit string. If you do not specify a language, a generic edit string is created. For more information on language-specific edit strings and generic edit strings, see the subtopic "more_info". language= ──┬─>
C
O
B
O
L ───┬─────> ├─>
D
T
R ─────┤ ├─>
P
L
I ─────┤ └─>
R
P
G ─────┘
Additional information available:
more info
A generic edit string is used by all of the languages that support edit
strings (COBOL, DATATRIEVE, PL/I, and RPG).
A language-specific edit string is used only by the language you
specify. A COBOL edit string, for example, is used only by COBOL.
DATATRIEVE, PL/I, and RPG ignore a COBOL edit string.
You should create a language-specific edit string if:
1. One or more characters in the generic edit string cannot be
translated into valid edit string characters for a language that
uses the generic edit string. See the top-level topic "edit-str"
for a table that shows how CDO translates characters in a generic
edit string for COBOL, DATATRIEVE, PL/I, and RPG.
2. A language that uses the generic edit string does not support the
data type of the field definition that contains the generic edit
string.
When you specify a language-specific edit string for a field definition
that already contains a generic edit string, the language-specific edit
overrides the generic edit string for the specified language. For
example, if a generic edit string exists and you specify a COBOL
language-specific edit string, COBOL will always use the COBOL
language-specific edit string, not the generic edit string.
If you define only language-specific edit strings, those languages for
which you do not specify a language-specific edit string will not have
edit strings.
Should your programs fail to compile because of edit string or data
type errors, the language may not support the generic edit string. In
such cases, you should create a language-specific edit string to
exclude this language from accessing the generic edit string.
To remove a language-specific edit string, the language keyword must
precede the NOEDIT_STRING keyword.
NAME
Declares a facility-specific name for a field. The specified language or language processor then recognizes only this name for the field. The NAME field attribute clause has the same syntax and function as the NAME record attribute clause. ───────────────>
N
A
M
E
F
O
R language IS name ───────────────> language= ──────────┬──>
B
A
S
I
C ────┬────────────────────────────────> ├──>
C
O
B
O
L ────┤ ├──>
P
L
I ──────┤ └──>
R
P
G ──────┘
Additional information available:
name
The facility-specific field name.
Examples
The following example provides a VAX COBOL name for the ORDER_NUMBER field. Because of the NAME clause, VAX COBOL recognizes the field only by the name ORDER-NUMBER: CDO> DEFINE FIELD ORDER_NUMBER cont> DATATYPE IS UNSIGNED NUMERIC cont> SIZE IS 10 DIGITS cont> NAME FOR COBOL IS ORDER-NUMBER. CDO> The following command removes the NAME FOR COBOL attribute from the field ORDER_NUMBER: CDO> CHANGE FIELD ORDER_NUMBER cont> NONAME FOR COBOL. CDO>
OCCURS
Declares fixed-length, one-dimensional arrays. occurs-phrase= ──>
O
C
C
U
R
S ───> n ──> typebox (T)typebox (I)typebox (M)typebox (E)typebox (S) ─────────────>
Additional information available:
n
The number of occurrences of the array.
Examples
The following command defines a field MULTIPLE that occurs 3 times: CDO> DEFINE FIELD MULTIPLE cont> OCCURS 3 TIMES cont> DATATYPE IS SIGNED LONGWORD. CDO> The following command removes the OCCURS attribute from the field MULTIPLE: CDO> CHANGE FIELD MULTIPLE cont> NOOCCURS. CDO>
QUERY_HEADER
Provides a label to be used as a column heading for a field in printouts and reports. ──>
Q
U
E
R
Y
H
E
A
D
E
R typebox (I)typebox (S) ──────────┬─> quoted-string ──┬───────> └───────── , <──────┘
Additional information available:
quoted-string
The query header.
Examples
The following command provides the query header TOTAL PRICE for the field TOTAL_PRICE: CDO> DEFINE FIELD TOTAL_PRICE cont> DATATYPE IS UNSIGNED LONGWORD cont> COMPUTED BY UNIT_PRICE * QUANTITY cont> QUERY_HEADER IS "TOTAL PRICE". CDO> The following command changes the query header in the TOTAL_PRICE field to "TOTAL." CDO> CHANGE FIELD TOTAL_PRICE cont> QUERY_HEADER IS "TOTAL". CDO> The following command removes the QUERY_HEADER attribute from the field TOTAL_PRICE: CDO> CHANGE FIELD TOTAL_PRICE cont> NOQUERY_HEADER. CDO>
QUERY_NAME
Provides an alternate reference name for a field. Currently, this clause is used only by VAX DATATRIEVE. ──>
Q
U
E
R
Y
N
A
M
E typebox (I)typebox (S) ──┬─> quoted-string ──┬──────────> └─> query-name ─────┘
Additional information available:
query-namequoted-stringExamples
query-name
A string that you want to use as a query name.
quoted-string
A string that you want to use as a query name. The string itself (not the quotation marks that enclose it) will be used as a query name.
Examples
In the following example, the QUERY_NAME clause specifies TP as an alternate name for the field TOTAL_PRICE: CDO> DEFINE FIELD TOTAL_PRICE cont> DATATYPE IS UNSIGNED LONGWORD cont> COMPUTED BY UNIT_PRICE * QUANTITY cont> QUERY_NAME IS "TP". CDO> You could also have specified TP as an alternate name for the field TOTAL_PRICE without using quotation marks around the alternate name: CDO> DEFINE FIELD TOTAL_PRICE cont> DATATYPE IS UNSIGNED LONGWORD cont> COMPUTED BY UNIT_PRICE * QUANTITY cont> QUERY_NAME IS TP. CDO> The following command changes the query name in the field TOTAL_PRICE to "TOT." CDO> CHANGE FIELD TOTAL_PRICE cont> QUERY_NAME IS "TOT". CDO> The following command removes the QUERY_NAME attribute from the field TOTAL_PRICE: CDO> CHANGE FIELD TOTAL_PRICE cont> NOQUERY_NAME. CDO>
VALID
VALID IF checks values assigned to a field to ensure that they are in the acceptable range for the field. ──>
V
A
L
I
D
I
F ─────> cond-expr ────────>
Additional information available:
cond-expr
The conditional expression that forms the validation expression. The conditional expression must be a valid expression for the product that will be evaluating it. See the subtopic "conditional_expr" under the top-level topic "expressions" for a description and diagram of CDO conditional expressions.
Examples
The VALID IF clause in the following command specifies that only values greater than zero can be assigned to field AMOUNT_OWED. CDO> DEFINE FIELD AMOUNT_OWED cont> DATATYPE IS UNSIGNED WORD cont> VALID IF AMOUNT_OWED > 0. CDO> The following command removes the VALID IF attribute from the field AMOUNT_OWED: CDO> CHANGE FIELD AMOUNT_OWED cont> NOVALID IF. CDO>
file-def-attr
Define file characteristics and certain run-time options. For a description and valid values for each of the keywords in the following diagram, see the reference manual for the VAX Record Management Services in the VAX/VMS documentation set. file-definition-attributes= ─┬─>
A
L
L
O
C
A
T
I
O
N numeric-literal ────────────────────────────────┬─> ├─>
B
U
C
K
E
T
S
I
Z
E numeric-literal ───────────────────────────────┤ ├─>
M
T
B
L
O
C
K
S
I
Z
E numeric-literal ─────────────────────────────┤ ├─>
G
L
O
B
A
L
B
U
F
F
E
R
C
O
U
N
T numeric-literal ───────────────────────┤ ├─>
M
A
X
R
E
C
O
R
D
N
U
M
B
E
R numeric-literal ─────────────────────────┤ ├─>
M
A
X
R
E
C
O
R
D
S
I
Z
E numeric-literal ───────────────────────────┤ ├─>
F
I
L
E
P
R
O
C
E
S
S
I
N
G
O
P
T
I
O
N
S ─┬─┬─────────────>───────────────┬─┤ ├─>
F
O
P ─────────────────────┘ └┬> file-processing-options ─┬┘ │ │ └──────────── , <───────────┘ │ ├─>
O
R
G
A
N
I
Z
A
T
I
O
N file-organization-options ────────────────────┤ └─> file-access-block-attributes ──────────────────────────────┘
Additional information available:
numeric-literalfile-processing-optionsfile-organization-optionsfile-access-block-attributes
TableExamples
numeric-literal
A positive integer. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid values for a particular keyword from the syntax diagram. For a mapping of keywords to the corresponding RMS Symbolic Field Offset see the subtopic "Table".
file-processing-options
Define optional file specifications for a program. The file processing
options fall into the following seven functional categories:
o Allocation and extension options. See the subtopic
"allocation_table" for a list of these options.
o File disposition options. See the subtopic "file_disp_table" for a
list of these options.
o File name parsing modifiers. See the subtopic "file_name_table"
for a list of these options.
o Magnetic tape processing options. See the subtopic
"magnetic_table" for a list of these options.
o Nonstandard processing options. See the subtopic
"nonstandard_table" for a list of these options.
o Performance options. See the subtopic "performance_table" for a
list of these options.
o Reliability options. See the subtopic "reliability_table" for a
list of these options.
Additional information available:
allocation tablefile disp tablefile name tablemagnetic table
nonstandard tableperformance tablereliability table
allocation table
The following table shows the mapping of CDO Allocation and Extension
Options to RMS Symbolic Bit Offsets:
Name of CDO Option RMS Symbolic Bit Offset
BEST_TRY_CONTIGUOUS FAB$V_CBT
CONTIGUOUS FAB$V_CTG
TRUNCATE_ON_CLOSE FAB$V_TEF
The following area attributes will override the file processing options
BEST_TRY_CONTIGUOUS and CONTIGUOUS, should you specify both:
o XAB$V_CBT (BEST_TRY_CONTIGUOUS) overrides FAB$V_CBT
(BEST_TRY_CONTIGUOUS).
o XAB$V_CTG (CONTIGUOUS) overrides FAB$V_CTG (CONTIGUOUS).
Additional information available:
Example
The following example shows the file processing option
BEST_TRY_CONTIGUOUS for the RMS database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> FILE_PROCESSING_OPTIONS BEST_TRY_CONTIGUOUS
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
file disp table
The following table shows the mapping of CDO File Disposition Options to RMS Symbolic Bit Offsets: Name of CDO Option RMS Symbolic Bit Offset DELETE_ON_CLOSE FAB$V_DLT PRINT_ON_CLOSE FAB$V_SPL SUBMIT_ON_CLOSE FAB$V_SCF TEMPORARY FAB$V_TMD NO_DIRECTORY_ENTRY FAB$V_TMP
file name table
The following table shows the mapping of CDO File Name Parsing Modifiers to RMS Symbolic Bit Offsets: Name of CDO Option RMS Symbolic Bit Offset CREATE_IF FAB$V_CIF MAXIMIZE_VERSION FAB$V_MXV SUPERSEDE FAB$V_SUP
Additional information available:
Example
The following example shows the file processing options CREATE_IF and
DEFERRED_WRITE for the RMS database definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> FOP CREATE_IF, DEFERRED_WRITE
.
.
.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
magnetic table
The following table shows the mapping of CDO Magnetic Tape Processing Options to RMS Symbolic Bit Offsets: Name of CDO Option RMS Symbolic Bit Offset MT_NOT_EOF FAB$V_NEF MT_CURRENT_POSITION FAB$V_POS MT_CLOSE_REWIND FAB$V_RWC MT_OPEN_REWIND FAB$V_RWO
nonstandard table
The following table shows the mapping of CDO Nonstandard Processing Options to RMS Symbolic Bit Offsets: Name of CDO Option RMS Symbolic Bit Offset NON_FILE_STRUCTURED FAB$V_NFS USER_FILE_OPEN FAB$V_UFO
performance table
The following table shows the mapping of CDO Performance Options to RMS Symbolic Bit Offsets: Name of CDO Option RMS Symbolic Bit Offset DEFERRED_WRITE FAB$V_DFW SEQUENTIAL_ONLY FAB$V_SQO
Additional information available:
Example
The following example shows the file processing options CREATE_IF and
DEFERRED_WRITE for the RMS database definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> FOP CREATE_IF, DEFERRED_WRITE
.
.
.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
reliability table
The following table shows the mapping of CDO Reliability Options to RMS Symbolic Bit Offsets: Name of CDO Option RMS Symbolic Bit Offset READ_CHECK FAB$V_RCK WRITE_CHECK FAB$V_WCK
file-organization-options
Define the organization of the file. For a description and valid values for each of the keywords in the following diagram, see the reference manual for the VAX Record Management Services in the VAX/VMS documentation set. For a mapping of keywords to the corresponding FAB$B_ORG Symbolic Constant, see the subtopic "Table". file-organization-options= ─┬─>
I
N
D
E
X
E
D ───┬─> ├─>
R
E
L
A
T
I
V
E ──┤ └─>
S
E
Q
U
E
N
T
I
A
L ─┘
Additional information available:
Table
The following table shows the mapping of CDO File Organization Options to FAB$B_ORG Symbolic Constants: Name of CDO Option FAB$B_ORG Symbolic Constant INDEXED FAB$C_INX RELATIVE FAB$C_REL SEQUENTIAL FAB$C_SEQ The default option is SEQUENTIAL.
Examples
The following example shows the file organization option INDEXED for
the RMS database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> ORGANIZATION INDEXED
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the file organization option INDEXED for
the RMS database definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> ORGANIZATION INDEXED
.
.
.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
file-access-block-attributes
Specify file access characteristics and certain run-time options. For a description and valid values for each of the keywords in the following diagram, see the reference manual for the VAX Record Management Services in the VAX/VMS documentation set. For a mapping of keywords to the corresponding RMS Symbolic Field Offset see the subtopic "Table". file-access-block-attributes= ─┬─>
E
X
T
E
N
S
I
O
N numeric-literal ────────────────────┬─> ├─>
C
O
N
T
R
O
L
F
I
E
L
D
S
I
Z
E numeric-literal ───────────┤ ├─>
L
O
G
I
C
A
L
N
A
M
E
M
O
D
E access-mode ────────────────┤ ├─>
W
I
N
D
O
W
S
I
Z
E numeric-literal ──────────────────┤ ├─>
C
H
A
N
N
E
L
A
C
C
E
S
S
M
O
D
E access-mode ──────────────┤ ├─>
A
C
C
E
S
S ─┬─┬─────────────────>────────────────┬┤ ├─>
F
A
C ────┘ └─┬> file-access-control-options ─┬┘│ │ └────────────── , <─────────────┘ │ ├─>
C
A
R
R
I
A
G
E
C
O
N
T
R
O
L carriage-control-options ────┤ ├─>
B
L
O
C
K
S
P
A
N ──────────────────────────────────┤ ├─>
F
O
R
M
A
T record-format-options ─────────────────┤ └─>
S
H
A
R
I
N
G ───┬──────────>─────────┬─────────────┘ └┬> share-options ─┬─┘ └─────── , <──────┘
Additional information available:
numeric-literalaccess-modefile-access-control-optionscarriage-control-options
record-format-optionsshare-optionsTableExamples
numeric-literal
A positive integer. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid values for a particular keyword from the syntax diagram. For a mapping of keywords to the corresponding RMS Symbolic Field Offset see the subtopic "Table".
access-mode
Defines an access mode for a channel. For a description and valid values for each of the keywords in the following diagram, see the reference manual for the VAX Record Management Services in the VAX/VMS documentation set. For a mapping of Access Mode Options to the corresponding RMS Symbolic Constants, see the subtopic "Table". access-mode= ─┬─>
N
O
N
E ───────┬─> ├─>
E
X
E
C
U
T
I
V
E ──┤ ├─>
S
U
P
E
R ──────┤ └─>
U
S
E
R ───────┘
Additional information available:
Table
The following table shows the mapping of CDO Access Mode Options to FAB$V_CHAN_MODE Symbolic Constants: Name of CDO Option Symbolic Constant NONE (default) 0 EXECUTIVE PSL$C_EXEC SUPER PSL$C_SUPER USER PSL$C_USER NONE is the default value which is interpreted by RMS as the executive mode.
Example
The following example shows the access mode option SUPER for the
CHANNEL_ACCESS_MODE attribute in the RMS database definition
EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> CHANNEL_ACCESS_MODE SUPER
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
file-access-control-options
Define the type of record-access operations that a program can perform. For a description and valid values for each of the keywords in the following diagram, see the reference manual for the VAX Record Management Services in the VAX/VMS documentation set. For a mapping of File Access Control Options to the corresponding FAB$B_FAC Symbolic Constants, see the subtopic "Table". file-access-control-options= ─┬─>
B
L
O
C
K
I
O ──┬─> ├─>
R
E
C
O
R
D
I
O ─┤ ├─>
D
E
L
E
T
E ────┤ ├─>
G
E
T ───────┤ ├─>
P
U
T ───────┤ ├─>
T
R
U
N
C
A
T
E ──┤ └─>
U
P
D
A
T
E ────┘
Additional information available:
Table
The following table shows the mapping of CDO File Access Control Options to FAB$B_FAC Symbolic Constants: Name of CDO Option FAB$B_FAC Symbolic Constant BLOCK_IO FAB$V_BIO DELETE FAB$V_DEL GET FAV$V_GET PUT FAV$V_PUT RECORD_IO FAV$V_BRO TRUNCATE FAV$V_TRN UPDATE FAV$V_UPD
Examples
The following example shows the file access control option RECORD_IO
for the RMS database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> ACCESS RECORD_IO
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the file access control option GET for the
RMS database definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> ACCESS GET
.
.
.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
carriage-control-options
Define the type of record control information for a record. For a description and valid values for each of the keywords in the following diagram, see the reference manual for the VAX Record Management Services in the VAX/VMS documentation set. For a mapping of Carriage Control Options to the corresponding RMS Symbolic Bit Offsets, see the subtopic "Table". carriage-control-options= ─┬─>
C
A
R
R
I
A
G
E
R
E
T
U
R
N ─┬─> ├─>
F
O
R
T
R
A
N ─────────┤ └─>
P
R
I
N
T ───────────┘
Additional information available:
Table
The following table shows the mapping of CDO Carriage Control Options to FAB$B_RAT Symbolic Bit Offsets: Name of CDO Option FAB$B_RAT Symbolic Bit Offset CARRIAGE_RETURN (default) FAB$V_CR FORTRAN FAB$V_FTN PRINT FAB$V_PRN CARRIAGE_RETURN is the default value for most VAX/VMS programs.
Example
The following example shows the carriage control option CARRIAGE_RETURN
for the RMS database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> CARRIAGE_CONTROL CARRIAGE_RETURN
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
record-format-options
Define the format for all the records in a file. For a description and valid values for each of the keywords in the following diagram, see the reference manual for the VAX Record Management Services in the VAX/VMS documentation set. For a mapping of keywords to the corresponding FAB$B_RFM Symbolic Constant, see the subtopic "Table". record-format-options= ─┬─>
F
I
X
E
D ────┬─> ├─>
S
T
R
E
A
M ───┤ ├─>
S
T
R
E
A
M
C
R ─┤ ├─>
S
T
R
E
A
M
L
F ─┤ ├─>
U
N
D
E
F
I
N
E
D ─┤ ├─>
V
A
R
I
A
B
L
E ─┤ └─>
V
F
C ──────┘
Additional information available:
Table
The following table shows the mapping of CDO Record Format Options to FAB$B_RFM Symbolic Constants: Name of CDO Option FAB$B_RFM Symbolic Constant FIXED FAB$C_FIX STREAM FAB$C_STM STREAM_CR FAB$C_STMCR STREAM_LF FAB$C_STMLF UNDEFINED FAB$C_UDF VARIABLE FAB$C_VAR VFC FAB$C_VFC
Examples
The following example shows the record format option VARIABLE for the
RMS database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> FORMAT VARIABLE
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the record format option FIXED for the RMS
database definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> FORMAT FIXED
.
.
.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
share-options
Define the type of record operations that a program will allow other programs sharing access to this file to perform. For a description and valid values for each of the keywords in the following diagram, see the reference manual for the VAX Record Management Services in the VAX/VMS documentation set. For a mapping of keywords to the corresponding FAB$B_SHR Symbolic Bit Offset, see the subtopic "Table". share-options= ─┬─>
D
E
L
E
T
E ─────────┬─> ├─>
G
E
T ────────────┤ ├─>
M
U
L
T
I
S
T
R
E
A
M ───┤ ├─>
P
R
O
H
I
B
I
T ──────┤ ├─>
P
U
T ───────────┤ ├─>
U
P
D
A
T
E ────────┤ └─>
U
S
E
R
I
N
T
E
R
L
O
C
K ─┘
Additional information available:
Table
The following table shows the mapping of CDO Share Options to FAB$B_SHR Symbolic Bit Offsets: Name of CDO Option FAB$B_SHR Symbolic Bit Offset DELETE FAB$V_SHRDEL GET FAB$V_SHRGET MULTISTREAM FAB$V_MSE PROHIBIT FAB$V_NIL PUT FAB$V_SHRPUT UPDATE FAB$V_SHRUPD USER_INTERLOCK FAB$V_UPI
Examples
The following example shows the share options GET and USER_INTERLOCK
for the RMS database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> SHARING GET, USER_INTERLOCK
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the share option GET for the RMS database
definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> SHARING GET
.
.
.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
Table
The following table shows the mapping of keywords for file access block (FAB) attributes: Name of CDO Attribute RMS Symbolic Field Offset ACCESS FAB$B_FAC BLOCK_SPAN FAB$V_BLK CARRIAGE_CONTROL FAB$B_RAT CHANNEL_ACCESS_MODE FAB$V_CHAN_MODE CONTROL_FIELD_SIZE FAB$B_FSZ EXTENSION FAB$W_DEQ FAC FAB$B_FAC FORMAT FAB$B_RFM LOGICAL_NAME_MODE FAB$V_LNM_MODE SHARING FAB$B_SHR WINDOW_SIZE FAB$B_RTV The attribute EXTENSION (FAB$W_DEQ) will be overridden by the area attribute EXTENSION (XAB$W_DEQ), should you specify both.
Examples
The following example shows the file access block attributes for the
RMS database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> CHANNEL_ACCESS_MODE SUPER
cont> CARRIAGE_CONTROL CARRIAGE_RETURN
cont> ACCESS RECORD_IO
cont> FORMAT VARIABLE
cont> SHARING GET, USER_INTERLOCK.
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the file access block attributes for the
RMS database definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_REC.
cont> FILE DEFINITION
.
.
.
cont> ACCESS GET
cont> SHARING GET
cont> BLOCK_SPAN
cont> FORMAT FIXED.
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
Table
The following table shows the mapping of keywords for file definition attributes: Name of CDO Attribute RMS Symbolic Field Offset ALLOCATION FAB$L_ALQ BUCKET_SIZE FAB$B_BKS FILE_PROCESSING_OPTIONS FAB$L_FOP FOP FAB$L_FOP GLOBAL_BUFFER_COUNT FAB$W_GBC MAX_RECORD_NUMBER FAB$L_MRN MAX_RECORD_SIZE FAB$W_MRS MT_BLOCK_SIZE FAB$W_BLS ORGANIZATION FAB$B_ORG The attribute BUCKET_SIZE (FAB$B_BKS) will be overridden by the area attribute BUCKET_SIZE (XAB$B_BKZ), should you specify both.
Examples
The following example shows the file definition attributes for the RMS
database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> ORGANIZATION INDEXED
cont> FILE_PROCESSING_OPTIONS BEST_TRY_CONTIGUOUS
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the file definition attributes for the RMS
database definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_REC.
cont> FILE_DEFINITION
cont> ORGANIZATION INDEXED
cont> FOP CREATE_IF, DEFERRED_WRITE
.
.
.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
key-attributes
Define the characteristics of a key in an indexed file. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid values for a particular keyword from the syntax diagram. For a mapping of keywords to the corresponding RMS Symbolic Field Offset see the subtopic "Table". key-attributes= ─┬─>
D
U
P
L
I
C
A
T
E
S ───────────────────────┬─> ├─>
C
H
A
N
G
E
S ──────────────────────────┤ ├─>
N
U
L
L
K
E
Y ──────────────────────────┤ ├─>
N
U
L
L
V
A
L
U
E null-value ─────────────┤ ├─>
D
A
T
A
A
R
E
A area-number ─────────────┤ ├─>
D
A
T
A
F
I
L
L numeric-literal ─────────┤ ├─>
D
A
T
A
K
E
Y
C
O
M
P
R
E
S
S
I
O
N ──────────────┤ ├─>
D
A
T
A
R
E
C
O
R
D
C
O
M
P
R
E
S
S
I
O
N ───────────┤ ├─>
I
N
D
E
X
A
R
E
A area-number ────────────┤ ├─>
I
N
D
E
X
C
O
M
P
R
E
S
S
I
O
N ─────────────────┤ ├─>
I
N
D
E
X
F
I
L
L numeric-literal ────────┤ ├─>
L
E
V
E
L
1
I
N
D
E
X
A
R
E
A area-number ─────┤ ├─>
N
O
D
A
T
A
K
E
Y
C
O
M
P
R
E
S
S
I
O
N ────────────┤ ├─>
N
O
D
A
T
A
R
E
C
O
R
D
C
O
M
P
R
E
S
S
I
O
N ─────────┤ ├─>
N
O
I
N
D
E
X
C
O
M
P
R
E
S
S
I
O
N ───────────────┤ ├─>
P
R
O
L
O
G numeric-literal ────────────┤ └─>
S
E
G
M
E
N
T within-name-clause ────────┘ A segment must be specified for each key you define. A segmented key can contain up to 8 segments. A key with only 1 segment can point to a field that has any allowable RMS datatype. For keys with more than 1 segment, each segment must point to a field that has a text datatype. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid RMS datatypes. When defining a SEGMENT, you cannot use a field that is in the variant portion of a record. Keys should be defined in numerical order, starting with 0. By default, Key 0 always has a DATA_AREA 0. If you specify NULL_VALUE without specifying NULL_KEY, CDO automatically specifies NULL_KEY. If you specify NULL_KEY without specifying NULL_VALUE, the default value for NULL_VALUE is 0.
Additional information available:
area-numbernumeric-literalnull-valuewithin-name-clauseTable
Examples
area-number
A positive integer that corresponds to the number of a previously defined area.
numeric-literal
A positive integer. See the reference manual for VAX Record Management Services in the VAX/VMS documentation set for the valid values for a particular keyword from the syntax diagram. For a mapping of keywords to the corresponding RMS Symbolic Field Offset see the subtopic "Table".
null-value
Specifies a null key value for an alternate index. This value must be either an integer or a single character within quotation marks.
within-name-clause
Specifies the name of the field or fields that are part of a segmented
key.
within-name-clause=
─> name ─┬───────>───────┬──>
└┬>
I
N name ─┬┘
└──────<──────┘
Every key must have at least one segment defined. A segmented key
allows you to define a key that accesses non-contiguous fields in a
record. You can specify from 2 to 8 segments for each segmented key in
an indexed file. For example, you can specify:
o A field in a record
o A field in a record that is in a record
o A field in a structure in a record
The field definition or definitions specified by the keyword SEGMENT in
the key-attributes clause determines the datatype of a key.
A segment must be specified for each key you define. A segmented key
contain up to 8 segments. A key with only one segment can point to a
field that has any allowable RMS datatype. For keys with more than one
segment, each segment must point to a field tha has a text datatype.
See the reference manual for VAX Record Management Services in the
VAX/VMS documentation set for the valid RMS datatypes.
Each segment can contain up to 255 characters, and the sum of all of
the characters for all of the segment for a key must not exceed 255
characters.
Additional information available:
name
Name of an existing field in a record or structure that you want to define as part of a segmented key. The first name you specify must be the name of a field and the last name must be the name of a record. The record should be the same one that was used to define the data structure of the RMS database in the DEFINE RMS_DATABASE command.
Examples
The following example shows the within-name-clause EMP_ID and LAST_NAME
for the RMS database definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
.
.
.
cont> KEYS.
cont> KEY 0
cont> DATA_AREA 0
cont> INDEX_AREA 0
cont> SEGMENT EMP_ID.
cont> KEY 1
cont> DUPLICATES
cont> DATA_AREA 1
cont> INDEX_AREA 1
cont> SEGMENT LAST_NAME.
cont> END KEYS.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the within-name-clause LAST_NAME IN
FULL_NAME and EMP_ID for the RMS database definition EMPLOYEE_DATABANK.
LAST_NAME is a field in the record FULL_NAME in the record
EMPLOYEE_DATA.
CDO> DEFINE RMS_DATABASE EMPLOYEE_DATABANK
cont> AUDIT IS "INFORMATION ON CURRENT EMPLOYEES".
cont> RECORD EMPLOYEE_DATA.
.
.
.
cont> KEYS.
cont> KEY 0
.
.
.
cont> SEGMENT EMP_ID
cont> KEY 1
.
.
.
cont> SEGMENT LAST_NAME IN FULL_NAME.
cont> END KEYS.
cont> END EMPLOYEE_DATABANK RMS_DATABASE.
CDO>
Table
The following table shows the mapping of CDO key attributes to the corresponding RMS Symbolic Field Offset: Name of CDO Attribute RMS Symbolic Field Offset DUPLICATES XAB$V_DUP CHANGES XAB$V_CHG NULL_KEY XAB$V_NUL DATA_AREA XAB$B_DAN DATA_FILL XAB$W_DFL DATA_KEY_COMPRESSION XAB$V_KEY_NCMPR DATA_RECORD_COMPRESSION XAB$V_DAT_NCMPR INDEX_AREA XAB$B_IAN INDEX_COMPRESSION XAB$V_IDX_NCMPR INDEX_FILL XAB$W_IFL LEVEL1_INDEX_AREA XAB$B_LAN NODATA_KEY_COMPRESSION XAB$V_KEY_NCMPR NODATA_RECORD_COMPRESSION XAB$V_DAT_NCMPR NOINDEX_COMPRESSION XAB$V_IDX_NCMPR PROLOG XAB$_PROLOG
Examples
The following example shows the key attributes for the RMS database
definition EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE EMPLOYEE_INFO DESCRIPTION IS "INFORMATION ON"
cont> "CURRENT EMPLOYEE".
.
.
.
cont> KEYS.
cont> KEY 0
cont> DATA_AREA 0
cont> INDEX_AREA 0
cont> SEGMENT EMP_ID IN EMPLOYEE_REC.
cont> KEY 1
cont> DUPLICATES
cont> DATA_AREA 1
cont> INDEX_AREA 2
cont> SEGMENT LAST_NAME IN EMPLOYEE_REC.
cont> END KEYS.
cont> END EMPLOYEE_INFO RMS_DATABASE.
CDO>
The following example shows the key attributes for the RMS database
definition MORE_EMPLOYEE_INFO:
CDO> DEFINE RMS_DATABASE MORE_EMPLOYEE_INFO DESCRIPTION IS "DATA ON"
cont> "CURRENT EMPLOYEES".
.
.
.
cont> KEYS.
cont> KEY 0
cont> DATA_AREA 0
cont> INDEX_AREA 0
cont> SEGMENT EMP_ID IN EMPLOYEE_REC.
cont> KEY 1
cont> DUPLICATES
cont> CHANGES
cont> DATA_AREA 1
cont> INDEX_AREA 2
cont> SEGMENT LAST_NAME IN EMPLOYEE_REC.
cont> END KEYS.
cont> END MORE_EMPLOYEE_INFO RMS_DATABASE.
CDO>
record-attr
Record attributes are used in the definition of records. The following diagram shows the valid CDO record attributes. record-attributes= ──┬─> array-type ────────────────────────────────────┬─────> ├─>
A
U
D
I
T typebox (I)typebox (S) typebox (/)typebox (*) text */ ───────────────────────────┤ ├─>
N
A
M
E
F
O
R language IS name ─────────────────────┤ └─> occurs-depending-clause ───────────────────────┘ To remove a record attribute from a record definition, use the CHANGE RECORD command and add the prefix NO to the name of the attribute to be removed. The following diagram shows the valid keywords to remove record attributes. cancel-record-attributes= ────────┬─>
N
O
A
R
R
A
Y ─────────────┬───> ├─>
N
O
N
A
M
E Ftypebox (O)typebox (R) language ─┤ └─>
N
O
O
C
C
U
R
S ────────────┘
Additional information available:
ARRAYAUDITNAMEOCCURS...DEPENDING
ARRAY
Declares multidimensional or one-dimensional arrays. array-type= ─┬────────>───────┬─>
A
R
R
A
Y ─┬─┬───>───┬─> n2 ─┬─> ├>
R
O
W
M
A
J
O
R ────┤ │ └> n1: ─┘ │ └>
C
O
L
U
M
N
M
A
J
O
R ─┘ └─────────<───────┘
Additional information available:
n1
The lower bound of the subscript. Replace n1 with a signed integer.
n2
The upper bound of the subscript. Replace n2 with a signed integer.
Examples
In the following example, the ARRAY clause defines the record SUPPLIER_REC as an array: CDO> DEFINE RECORD SUPPLIER_REC cont> ROW_MAJOR ARRAY 1:20. cont> END RECORD. CDO> The following command removes the ARRAY clause from record SUPPLIER_REC: CDO> CHANGE RECORD SUPPLIER_REC cont> NOARRAY. cont> END RECORD. CDO>
AUDIT
Allows you to enter comments that will appear in a history list entry to a record definition. ───>
A
U
D
I
T typebox (I)typebox (S) typebox (/)typebox (*) text */ ───────────────>
Additional information available:
text
Comments that will be included in a history list entry for the record definition.
Examples
The following example shows two commands. The first command creates the record definition PART_RECORD. The DESCRIPTION clause explains the record's purpose. The AUDIT clause is used to indicate that the record will be changed in the future. The second command shows the history list entry for the record definition after the first command executes: CDO> DEFINE RECORD PART_RECORD cont> DESCRIPTION IS /* SHOWS IF A PART IS IN STOCK */ cont> AUDIT IS /* THIS IS A TEST RECORD */. cont> PART_NUMBER. cont> IN_STOCK. cont> END RECORD. CDO> CDO> SHOW RECORD/ALL PART_RECORD cont> Definition of record PART_RECORD cont> | acl (IDENTIFIER=[VCD,RICK],ACCESS=READ cont> +WRITE+MODIFY+ERASE+SHOW+DEFINE+CHANGE+DELETE+CONTROL+OPERATOR+ cont> ADMINISTRATOR) cont> (IDENTIFIER=[*,*],ACCESS=READ+WRITE+MODIFY+ERASE+SHOW+OPERATOR+ cont> ADMINISTRATOR) cont> | Created time 10-JUN-1987 17:00:01.83 cont> | Description ' SHOWS IF A PART IS IN STOCK ' cont> | Modified time 10-JUN-1987 17:00:01.83 cont> | Owner RICK cont> | | History entered by RICK ([VCD,RICK]) cont> | | using CDO V1.0 cont> | | to CREATE definition on 10-JUN-1987 16:59:58.67 cont> | | Explanation: cont> | | THIS IS A TEST RECORD cont> | Contains field PART_NUMBER cont> | | Datatype unsigned longword 6 digits cont> | | | History entered by RICK ([VCD,RICK]) cont> | | | using CDO V1.0 cont> | | | to CREATE definition on 10-JUN-1987 16:59:38.43 cont> | Contains field IN_STOCK cont> | | Datatype text size is 1 characters cont> | | | History entered by RICK ([VCD,RICK]) cont> | | | using CDO V1.0 cont> | | | to CREATE definition on 10-JUN-1987 16:59:44.54 cont> | | Valid if ((IN_STOCK EQ "Y") OR "N") CDO> The following example shows two commands. The first command adds a field definition BACK_ORDER to the record PART_RECORD. The second command shows the history list entry for the record definition after the first command executes: CDO> CHANGE RECORD PART_RECORD cont> DESCRIPTION IS /* SHOWS IF A PART IS IN STOCK OR ON ORDER */ cont> AUDIT IS /* ADDING A NEW FIELD */. cont> DEFINE BACK_ORDER. cont> END BACK_ORDER DEFINE. cont> END RECORD. CDO> SHOW RECORD/AUDIT PART_RECORD cont> Definition of record PART_RECORD cont> | | History entered by RICK ([VCD,RICK]) cont> | | using CDO V1.0 cont> | | to CREATE definition on 10-JUN-1987 16:59:58.67 cont> | | Explanation: cont> | | THIS IS A TEST RECORD cont> | | History entered by RICK ([VCD,RICK]) cont> | | using CDO V1.0 cont> | | to MODIFY on 10-JUN-1987 17:18:05.66 cont> | | Explanation: cont> | | ADDING A NEW FIELD CDO> The following example shows the history list entry that would have been created for the record definition PART_RECORD if no AUDIT clause had been specified during the creation or modification of the object: CDO> SHOW RECORD/AUDIT PART_RECORD cont> Definition of record PART_RECORD cont> | | History entered by RICK ([VCD,RICK]) cont> | | using CDO V1.0 cont> | | to CREATE definition on 10-JUN-1987 17:23:25.52 cont> | | History entered by RICK ([VCD,RICK]) cont> | | using CDO V1.0 cont> | | to MODIFY on 10-JUN-1987 17:24:11.74 CDO>
NAME
Declares a facility-specific name for a record. The specified language or language processor then recognizes only this name for the record. The NAME record attribute clause has the same syntax and function as the NAME field attribute clause. ───────────────>
N
A
M
E
F
O
R language IS name ───────────────> language= ──────────┬──>
B
A
S
I
C ────┬────────────────────────────────> ├──>
C
O
B
O
L ────┤ ├──>
P
L
I ──────┤ └──>
R
P
G ──────┘
Additional information available:
name
The facility-specific record name.
Examples
The following command provides a VAX COBOL name for the record SUPPLIER_REC. Because of the NAME clause, VAX COBOL recognizes the record only by the name SUPPLIER-REC: CDO> DEFINE RECORD SUPPLIER_REC cont> ROW_MAJOR ARRAY 1:20 cont> NAME FOR COBOL IS SUPPLIER-REC. cont> END RECORD. CDO> The following command removes the VAX COBOL name from the record SUPPLIER_REC: CDO> CHANGE RECORD SUPPLIER_REC cont> NONAME FOR COBOL. cont> END RECORD. CDO>
OCCURS...DEPENDING
Declares a variable-length, one-dimensional array. occurs-depending-clause= ─>
O
C
C
U
R
S ─> n1 ─┬>
T
O n2 TIMES ─>
D
E
P
E
N
D
I
N
G typebox (O)typebox (N) ─────────┐ │ ┌─────────────────────────────────┘ │ └───> name1 ─┬┬───────>────┬┬──────┬───┐ │ │└>
I
N name2 ─┘│ │ │ │ └───────<──────┘ │ │ └>
T
I
M
E
S ──────────────────>──────────────┘ │ ┌───────────────────────<───────────────────────┘ └──┬─────────────>──────────────┬───> └──>
I
N
D
E
X
E
D typebox (B)typebox (Y) index-name ──┘
Additional information available:
n1n2name1name2index-nameExamples
n1
Start of the range for the number of occurrences.
n2
End of the range for the number of occurrences.
name1
The tag variable field, whose value determines the actual number of occurrences.
name2
The name of the entity in which the tag variable field can be found.
index-name
A VAX COBOL index name.
Examples
The following command determines how many times a record named VACATION_PAY occurs based on the run-time value of the tag variable field EXCESS_VACATION in the record EMPLOYEE_BENEFITS: CDO> DEFINE RECORD VACATION_PAY OCCURS 1 TO 2 TIMES cont> DEPENDING ON EXCESS_VACATION IN EMPLOYEE_BENEFITS. cont> EMP_SSAN. cont> WEEKLY_SALARY. cont> END RECORD. CDO> The following command removes the OCCURS...DEPENDING clause from the record VACATION_PAY: CDO> CHANGE RECORD VACATION_PAY cont> NOOCCURS. cont> END RECORD. CDO>
system-attr
System-specified attributes are those attributes that CDO automatically creates for every CDO entity you define. System-specified attributes include the following: o Access control list o Created time o Modified time o Owner Compare this to user-defined attributes, explained under the top-level topic "user-attr".
Additional information available:
Example
In the following example, the SHOW FIELD/ALL command displays both the user and system-specified attributes for FIELD_B. Only the datatype attribute was specified by the user. CDO> SHOW FIELD FIELD_B/ALL Definition of field FIELD_B | acl (IDENTIFIER=[VCD,MCGUIRE],ACCESS=READ+ | WRITE+MODIFY+ERASE+SHOW+DEFINE+CHANGE+DELETE+CONTROL+OPERATOR+ADMINIS TRATOR) | (IDENTIFIER=[*,*],ACCESS=READ+WRITE+MODIFY+E RASE+SHOW+OPERATOR+ADMINISTRATOR) | Created time 2-FEB-1988 12:25:00.83 | Modified time 2-FEB-1988 12:25:00.83 | Owner MCGUIRE | Datatype signed longword | | History entered by MCGUIRE ([VCD,MCGUIRE]) | | using CDO V1.0 | | to CREATE definition on 2-FEB-1988 12:24:59.71 CDO>
user-attr
User-supplied attributes are those characteristics that you specify when you are defining a CDO entity. The data type attribute is an example. Compare this to system-supplied attributes, explained under the top-level topic "system-attr".
Additional information available:
Example
In the following example, the SHOW FIELD/ALL command displays both the user and system-specified attributes for FIELD_B. Only the datatype attribute was specified by the user. CDO> SHOW FIELD FIELD_B/ALL Definition of field FIELD_B | acl (IDENTIFIER=[VCD,MCGUIRE],ACCESS=READ+ | WRITE+MODIFY+ERASE+SHOW+DEFINE+CHANGE+DELETE+CONTROL+OPERATOR+ADMINIS TRATOR) | (IDENTIFIER=[*,*],ACCESS=READ+WRITE+MODIFY+E RASE+SHOW+OPERATOR+ADMINISTRATOR) | Created time 2-FEB-1988 12:25:00.83 | Modified time 2-FEB-1988 12:25:00.83 | Owner MCGUIRE | Datatype signed longword | | History entered by MCGUIRE ([VCD,MCGUIRE]) | | using CDO V1.0 | | to CREATE definition on 2-FEB-1988 12:24:59.71 CDO>