Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ATTACH

CDO_FOREIGN_CMD

CHANGE

CLEAR MESSAGES

COPY

DEFINE

DELETE

DIRECTORY

EDIT

ENTER

EXIT

EXTRACT

HELP

MOVE DICTIONARY

ON

PURGE

REMOVE

SET

SHOW

SPAWN

SPECIFY

VERIFY

@(At Sign)

area-attributes

CDDPlus Error

CDO Error

CONVERT Command

edit-str

expressions

field-attr

file-def-attr

key-attributes

record-attr

system-attr

user-attr

file-spec

Examples

position-type

numeric-literal

Table

Examples

numeric-literal

Table

Example

ALREXI

ATTEXISTS

ATTNOTAPP

ATTPROUSE

ATTVALFAIL

ATTVALWARN

BADATTTYP

BADBKPTR

BADDICREF

BADDIRACL

BADDTYPE

BADENTTYP

BADEXTREF

BADHND

BADLNKTYP

BADLOC

BADMEMBER

BADNAME

BADOBJTYP

BADORF

BADOWNER

BADRELTYP

BADSUBOBJ

BADUSAGE

BLRBADCTX

BLRFIELDID

BLRSYNERR

BLRVARIABLE

BOGLOBAL

BOGUS_DB_HANDLE

BOGUS_TXN_HANDLE

BUGCHK

BUGEXP

CANTUSE

CANT_INHERIT

COMPLEX_CNST

COMPLEX_REL

CPYERRIN

CPYERROUT

CREDIR

CTXMISMATCH

CTXMISSING

CVT_NOTALL

DB_EXISTS

DB_HNDL_ZERO

DB_IN_TXN

DELEXTREF

DEX

DICINVALID

DICMISMATCH

DICREC

DIFKIND

DIFTYPE

DIRERRABT

DIRNAMDEL

DIRNOOBJ

DIRREC

DIRSESSACT

DIRSTART

DIR_FSYNCH

DIR_SYNCH

DLK

DMCS_IN_DIR

DNE

DNF

DTM

DTYPE_REQUIRED

DUPLINK

DUPPROTNAM

ENDFIND

ENDGROUP

ENDSESS

ENTITYEXISTS

ENTPROUSE

ERRBLDEPEND

ERRCDDPROT

ERRCHGDIR

ERRCHGELE

ERRCHKMSG

ERRCLRMSG

ERRCOPY

ERRCREDIC

ERRCREDIR

ERRCVT

ERRDDL

ERRDEFDE

ERRDEFELE

ERRDEFPRO

ERRDEFPROT

ERRDELDE

ERRDELDIC

ERRDELETE

ERRDELPROT

ERRERASE

ERRFETEND

ERRFETNEX

ERRFETNEXT

ERRFETSTART

ERRFETSTR

ERRFRCMSG

ERRGET

ERRGETELE

ERRIMAGE

ERRINBUF

ERRINHNDLR

ERRMODIFY

ERRMODPROT

ERRMOVDIC

ERRMOVE

ERRPURGE

ERRSETDEF

ERRSIGNIN

ERRSIGNOUT

ERRSINOUT

ERRSTRSES

ERRTRANS

ERRVER

ERRVERIFY

ERRVERSION

ERR_DELDIC

EXPECTED

EXSTINDB

FDLK

FETANDCOPY

FIRSTVERSION

FIXBKPTR

FIXDICREF

FIXDIR

FIXDIRACL

FIXED

FIXEXTREF

FIXLOC

FIXNAME

FIXNODIR

FIXORF

FIXSNP

FSDCH

FSDNF

FSERR

GVAGG

HAS_DIMENSION

HAS_POINTER

HIST_DDL_DB

HIST_DDL_SCH

HIST_INT_FROM

HIST_INT_TO

HNDNOTZER

IDPC

ILLCH

ILLCONTXT

ILLDLM

ILLELL

ILLPSS

ILLSP

ILLVERSION

INCFLDATT

INCPROT

INTFAIL

INT_CREATE_CONF

INT_DELETE

INT_DELETE_CONF

INT_USERABORT

INUSE

INVALID_EDIT_STR

INVALID_INIT_VAL

INVALID_LENGTH

INVALID_MISSING

INVALID_QRY_HDR

INVALID_QRY_NAM

INVALID_RDB_ATT

INVALID_RDB_DIM

INVALID_RDB_DTYPE

INVALID_RDB_REL

INVALID_RDB_RSE

INVALID_SCALE

INVALID_SEG_LEN

INVALID_SEG_SUBTYPE

INVALID_SEG_TYPE

INVCPYPR

INVCVT

INVDICVS

INVDTYPE

INVEDIT_STRING

INVMAJOR

INVMINOR

INVPARM

INVREC

INV_BOOL_EXP

INV_CTX_NAME

INV_EXP_VTB

INV_FLD_EXP

INV_FUN_EXP

INV_LOG_EXP

INV_MATH_EXP

INV_RDB_REL_EXP

INV_STAT_EXP

INV_STR_OP

INV_VAL_EXP

IS_COMPUTED

JNLBADSIZE

JNLCORRUPT

JNLNOTOTHER

LABDUPDEF

LABUNRES

LASTVERSION

LNKNOTAPP

LOCK_CONFLICT

MBLRSYNERR

MESS

MISSING

MORE_TO_COME

MULTIVALUE

MUSTABORT

NAMCONFLICT

NEEDAST

NEEDDIRNAME

NEWTXN

NIU

NMD

NMH

NNF

NOATTACH

NOCDD

NOCDDFLD

NOCDDREL

NOCOMPAT

NOCONEXP

NODEFINE

NODELETE

NODICNODE

NODICTUPLE

NODIRSESS

NOJNLCRE

NOLINK

NOMESS

NOMOD

NOMODIFY

NOOWNER

NOPRIMARY

NOPROMOD

NOPRONAME

NOPROTOCOL

NOPROTPRV

NOREAD

NORECOVER

NORECOVERY

NOREMOTE

NORENAME

NOSETSYS

NOSUCHOBJ

NOTADIC

NOTAREL

NOTAVAIL

NOTDICENTRY

NOTEMPLATE

NOTEXSTINDB

NOTINDB

NOTYET

NOT_A_DB

NOT_A_SESSION

NOT_A_TXN

NOT_FOUND_1

NOT_FOUND_2

NOT_FOUND_3

NOT_IN_TXN

NOT_VALID_TYPE

NOUPGRADE

NOVALUE

NOVERSION

NOWILDCARD

NOWITHIN

NOWRITE

NOXFND

NOXREQ

NO_ATT_DB

NO_AUTOMATIC_UPGRADE

NO_COM_TXN

NO_CRE_DB

NO_DB_NAME

NO_DEL_DB

NO_DESCRIPTION

NO_DET_DB

NO_PATH

NO_ROL_TXN

NO_ST_TXN

NTL

NVREC

OBJDEL

OBSDIRPAR

OKEXTREF

OKLOC

OKNAME

ONEPRIMARY

ONLYNAME

OPENSESS

ORGREF

ORPHAN

OVERFLOW

PRINOTORG

PROEXISTS

PROLATER

PRONAMEX

PROTINUSE

PRSERROR

PRSMISSING

PRSNODIR

PRSNOENT

PRSNOERR

PRSNOHNDL

PRSNOKIND

PRSNONAME

PRSNOTARG

PRSNOTYPE

READERR

REBUILD

RECNOTOTHER

RECNOTREL

RECRECDIR

REFREF

RELEXISTS

RELNOTFND

RELPROUSE

REQATTMIS

REQPARAM

RETRY

RSERR

RTLERR

SEGSTRINFO

SESSACTIVE

SSERR

STARTSESS

STWONE

ST_TXN_BAD_ARGS

SYNOFF

SYNTAX

TRUNC

TXN_HNDL_ZERO

UNDERFLOW

VALDEFFAIL

VALDEFWARN

VALMODFAIL

VALMODWARN

VALTOOLONG

VERINC

WITHINAMB

WRONGBUF

WRONGENTTYP

XREF

AMBIG

BADSEG

BAD_NAME

BAD_QUAL

BUGCHK

CABORT

CAPTIVE

CNTCVT

CTRLZ

CTXUNDEF

DBMBR

DENSELYPACKED

DICDEL

DICMOVE

DICTVER

DIRDEL

ENTDEL

ENTDELDESC

ERRCHANGE

ERRCHGPROT

ERRCHKMSG

ERRCLEAR

ERRCOPY

ERRDEFINE

ERRDEFPROT

ERRDELETE

ERRDELPROT

ERRDIRE

ERRDUMP

ERREADACL

ERRENTER

ERREXTRACT

ERRINHNDLR

ERRMODACL

ERRMOVE

ERRPURGE

ERRSETDEF

ERRSHOW

ERRSHOWDEF

ERRSHOWPROT

ERRSIGNOUT

ERRVERIFY

EXCMAXCTX

EXPREQ

ILLCHAR

ILLQUAL

INVBUF

INVDTYP

INVEDIT_STRING

INVEXP

INVNAME

INVNUM

INVPATH

INVPOS

INVVBUF

INVVER

INVVERSKIP

KWSYNEND

KWSYNTAX

MESSAGES

MISMATCH

MISMATCH_DICT

MULSPECATR

MUL_SEG_TXT

NEEDSEG

NOACE

NOACL

NOACLATT

NOAREA

NOAUDIT

NOBATCH

NOCDOSYNTAX

NOCONV

NODMUINFO

NOEXP

NOMESSAGES

NOPRONAM

NOPROTAG

NOTCHANGED

NOTCREATED

NOTDELETED

NOTFOUND

NOTSHOWN

NOTWITHIN

NOTYET

ONECHAR

ONLEVL

OPNOVRFLO

OSOVRFLO

PSOVRFLO

PURGETHING

READERR

RECSIZ

RMS_ONLY

SSYNTAX

STARTATZERO

TROVRFLO

UNMPAREN

VERMISMTCH

WRONGREC

XTRVAR

source-name

destination-name

anchor-name

Restrictions

Examples

Alphabetic(A)

Alphanumeric(T,X)

Comma

Date-day-time

Decimal-point

Digit(9,F,7)

Encoded-sign

Exponent

Floating(S,Z,-,+,$,\)

Literal

Logical

Lowercase

Minus-literal

Minus-parentheses

Missing-separator

Repeat-count

Uppercase

Support-table

T(Long-text)

X(Any)

%(AM/PM)

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)

F(Hexadecimal-digit)

7(Octal-digit)

9(Decimal-digit)

C(Encoded-minus)

G(Encoded-sign)

K(Encoded-plus)

S(Floating-sign)

Z(Floating-zero-replace)

-(Floating-minus)

+(Floating-plus)

$(Floating-currency)

\(Floating-blank)

value expr

conditional expr

relational operators

record sel expr

precedence ordering

FIELD OR RECORD-expr

Literals

Statistical expr

Arithmetic expr

Concatenated expr

FIRST FROM expr

name

dir-name

context-var

Example

Character str lit

Numeric lit

Example

Example

value-expr

rse

Examples

value-expr

Examples

value-expr

Example

value-expr

rse

Example

cond-expr

value-expr1

value-expr2

operator

between-clause

containing-clause

matching-clause

missing-clause

starting-with-clause

Examples

value-expr1

value-expr2

value-expr3

Examples

value-expr1

value-expr2

Examples

value-expr1

match-expr

Examples

field-or-record

Examples

value-expr1

value-expr2

Examples

mathematical relational operators

pattern testing relational operators

first-clause

relation-clause

cross-clause

with-clause

reduced-clause

sort-clause

value-expr

Example

context-var

relation-name

Examples

relation-clause

Examples

cond-expr

Example

value-expr

Example

value-expr

Examples

relational operators

Examples

ARRAY

AUDIT

BASED

DATATYPE

EDIT_STRING

FILLER

INITIAL_VALUE

JUSTIFIED

MISSING_VALUE

NAME

OCCURS

QUERY_HEADER

QUERY_NAME

VALID

computed-by-clause

language

n1

n2

Examples

text

Examples

field-name

Examples

value-expr

conditional-value-expr

Examples

cond-expr

value-expr

Examples

case

decimal-string-dtypes

floating-point-dtypes

fixed-point-dtypes

numeric-literal

SEGMENT LENGTH values

SEGMENT TYPE values

name

Examples

Examples

n

numeric-literal

Example

n

Example

n

numeric-literal

Example

edit-string

language

Examples

more info

Example

value-expr

Examples

justified-option

Examples

value-expr

Examples

more info

name

Examples

n

Examples

quoted-string

Examples

query-name

quoted-string

Examples

cond-expr

Examples

numeric-literal

file-processing-options

file-organization-options

file-access-block-attributes

Table

Examples

allocation table

file disp table

file name table

magnetic table

nonstandard table

performance table

reliability table

Example

Example

Example

Table

Examples

numeric-literal

access-mode

file-access-control-options

carriage-control-options

record-format-options

share-options

Table

Examples

Table

Example

Table

Examples

Table

Example

Table

Examples

Table

Examples

area-number

numeric-literal

null-value

within-name-clause

Table

Examples

name

Examples

ARRAY

AUDIT

NAME

OCCURS...DEPENDING

n1

n2

Examples

text

Examples

name

Examples

n1

n2

name1

name2

index-name

Examples

Example

Example

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-specExamples

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-literalTableExample

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)X(Any)

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:

%(AM/PM)

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 litNumeric lit

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

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

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-exprrseExamples

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-exprExamples

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-exprExample

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-exprrseExample

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-expr1match-exprExamples

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-recordExamples

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-exprExample

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-clauseExamples

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-exprExample

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-exprExample

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-exprExamples

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 operatorsExamples

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

computed-by-clauselanguage

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:

n1n2Examples

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:

textExamples

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-nameExamples

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-exprvalue-exprExamples

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

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:

nnumeric-literalExample

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:

nExample

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:

nnumeric-literalExample

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-stringlanguageExamples

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

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

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-exprExamples

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-optionExamples

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-exprExamples

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

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:

nameExamples

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:

nExamples

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-stringExamples

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-exprExamples

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

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

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

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:

TableExamples

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:

TableExample

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:

TableExamples

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:

TableExample

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:

TableExamples

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:

TableExamples

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:

nameExamples

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:

n1n2Examples

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:

textExamples

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:

nameExamples

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

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

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>

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026