Parameter Descriptions -- Pascal [ HP System Dictionary XL Intrinsics ] MPE/iX 5.0 Documentation
HP System Dictionary XL Intrinsics
Parameter Descriptions -- Pascal
In this subchapter, the System Dictionary parameter types are defined in
Pascal terms. The only exception is the use of '*' the upper bound of an
array. Where '*' is used, the upper bound is defined by the caller.
AttributeDescription
= record
AttributeType : integer
AttributeLength : integer
end;
This parameter type is a record whose first
element is a four-byte integer which identifies
an attribute's data type, and whose second
element is a four-byte integer which describes
the attribute's data length. Where the data
length is either fixed or zero, the second
element can be zero.
AttributeEditsType
= array[1 .. *] of Boolean; { Boolean attribute data type }
or
= packed array[1 .. *] of char; { character attribute data type }
or
= array[1 .. *] of shortint; { 2-byte integer attribute data type }
or
= array[1 .. *] of integer; { 4-byte integer attribute data type }
or
= array[1 .. *] of real; { 4-byte floating point attribute data type }
or
= array[1 .. *] of longreal; { 8-byte floating point attribute data type }
If this parameter is Boolean data type :
This parameter type is an array with Boolean
values (true or false).
if this parameter is character data type :
This parameter type is an character array
containing a list of edit values for a
character data type attribute. The byte length
of each edit value is the same as the
attribute's byte length.
if this parameter is 2-byte integer data type :
This parameter type is an array containing
pairs of 2-byte integer values. Each pair
represents a range of valid integer values for
a 2-byte integer data type attribute.
if this parameter is 4-byte integer data type :
this parameter type is an array containing
pairs of 4-byte integer values. each pair
represents a range of valid integer values for
a 4-byte integer data type attribute.
if this parameter is 4-byte floating point data
type :
This parameter type is an array containing
pairs of 4-byte floating point values. Each
pair represents a range of valid floating point
values for a 4-byte floating point data type
attribute.
if this parameter is 8-byte floating point data
type :
This parameter type is an array containing
pairs of 8-byte floating point values. Each
pair represents a range of valid floating point
values for an 8-byte floating point data type
attribute.
AttributeListType
= packed array[1 .. *] of char; { name type }
or
= array[1 .. *] of integer; { internal number type }
If this parameter is name type :
This parameter type is a character array
containing the names of attributes. Each name
in the list must either be 32 characters long
or be separated from the next name in the list
by at least one blank. Separation by blanks is
optional if the names are 32 characters long.
The length of the list may be up to 8646
characters, and must be terminated with a
semicolon.
If this parameter is internal number type :
This parameter is an array of up to 263
four-byte integers. The first four bytes of
this array contain a number N (1 to 262), which
is followed by N internal numbers. The length
of the array is determined by the number of
integers being passed. The internal numbers
are the attributes' internal numbers.
AttributeValuesType = user defined type
This parameter type is any data type whose
fields match the data types and lengths for the
attributes supplied in the attribute list.
Note : The starting position of each attribute
value in the record must be correctly located.
The locations are described in Appendix C of
this manual, under the heading "Attribute Value
Alignment" .
DateType = packed array[1 .. 16] of char;
This parameter type is a 16 character field
containing a date generated by a System
Dictionary intrinsic. The date has the
following format:
YYYYMMDDhhmmsstt
where
YYYY is the year
MM is the month
DD is the day
hh is the hour
mm is the minute
ss is the second
tt is the tenths of the second
DcbType = array[1 .. 30] of integer;
The Dictionary control block is an array of 30
four-byte integers, and is used to pass control
information to the intrinsics.
DictionaryName = packed array[1 .. 86] of char;
This parameter should be left justified. If
the name is less than 86 characters, the last
character in the name must be a blank.
EntityListType
= packed array[1 .. *] of char; { name type }
or
= array[1 .. *] of integer; { internal number type }
If this parameter is name type :
This parameter type is a character array
containing the names of entities. Each name in
the list must either be 32 characters long or
be separated from the next name in the list by
at least one blank. Separation by blanks is
optional if the names are 32 characters long.
The length of the list may be up to 198
characters, and must be terminated with a
semicolon.
If this parameter is internal number type :
This parameter is an array of up to 7 four-byte
integers. The first four bytes of this array
contain a number N (1 to 6), which is followed
by N internal numbers. The length of the array
is determined by the number of integers being
passed. The internal numbers are the entities'
internal numbers. In the case where a single
relationship number is specified, the first
four bytes will contain the number 1, and the
second four will contain the relationship's
internal number.
EntityListOutType = packed array[2 .. *] of NameType;
This output parameter type is an array
containing up to seven entity names. Each name
in the array is defined by parameter type
NameType, and will be a left justified, right
blank filled, 32 character field. The list
will be terminated by a semicolon.
Note : The above list will contain a maximum
of six names but will include the list
terminator (;) in the first byte of the seventh
name space if the list contains six names. The
seventh name will not be right blank filled.
The maximum number of usable bytes in this
parameter is 193 [(32*6)+1].
ItemValueType = user defined type;
This parameter type is user defined. It is any
data type whose fields match the data type and
length for the corresponding specified item.
MessageType = packed array[1 .. 72] of char;
This output parameter type is a character array
used for error messages, and is left justified.
NameType = packed array[1 .. 32] of char;
This parameter type may be used as either an
input or output parameter. If it is used as an
input parameter, the name must be 32
characters, left justified, and right blank
filled. No blanks are allowed between
characters, however. All lower case letters
will be upshifted. All alphanumeric and
special characters may be used in a name EXCEPT
those in the following list:
, ; : . ( ) " = > < ^ !
If the name is an output parameter, it will be
left justified and right blank filled.
NameOrNumberType
= packed array[1 .. 32] of char; { name type }
or
= array[1 .. 2] of integer; { internal number type }
This parameter type passes information in
either name or number format.
If this parameter is name type :
This parameter is a left justified, right blank
filled, 32 character name. All lower case
letters used in the name will be upshifted.
All alphanumeric and special characters may be
used in a name EXCEPT those in the following
list:
, ; : . ( ) " = > < ^ !
If this parameter is internal number type:
The first four bytes of this array contain the
number 1 one), followed by a four-byte integer
which is the internal number.
Note :
If the parameter is : the internal number
should be:
an attribute the attribute's
internal number
a domain the domain's internal
number
an entity the entity's internal
number
an entity type the entity type's
internal number
a relationship class the relationship
class' internal number
a scope the scope's internal
number
a version the version's internal
number
NewEntityListType
= packed array[1 .. *] of char; { name type }
or
= array[1 .. *] of integer; { internal number type }
If this parameter is name type :
This parameter type is a character array
containing the names of entities. Each name in
the list must either be 32 characters long or
be separated from the next name in the list by
at least one blank. Separation by blanks is
optional if the names are 32 characters long.
The length of the list may be up to 198
characters, and must be terminated with a
semicolon.
If this parameter is internal number type :
This parameter is an array of up to 7 four-byte
integers. The first four bytes of this array
contain a number N (2 to 6), which is followed
by N internal numbers. The length of the array
is determined by the number of integers being
passed. The internal numbers are the entities'
internal numbers.
NewNameType = array[1 .. 2] of NameType;
This parameter type contains either one or two
names as defined by parameter type NameType.
The first name is an internal name and is
required. If an external name which is
different from the internal name is desired, a
second name may be included in the array. This
name fills positions 1 through 32 of the second
name in the array, and, like the first name,
must be left justified and right blank filled.
If a second name is not desired, the second
name space must be filled with blanks.
All alphanumeric and special characters may be
used in a name EXCEPT those in the following
list:
, ; : . ( ) " = > < ^ !
NewRelationshipTypeList
= packed array[1 .. *] of char; { name type }
or
= array[1 .. *] of integer; { internal number type }
If this parameter is name type :
This parameter type is a character array
containing the entity types involved in a
relationship type. Each name in the list must
either be 32 characters long or be separated
from the next name in the list by at least one
blank. Separation by blanks is optional if the
names are 32 characters long. The length of
the list may be up to 198 characters, and must
be terminated with a semicolon.
If this parameter is internal number type :
This parameter is an array of up to 7 four-byte
integers. The first four bytes of this array
contain a number N (2 to 6), which is followed
by N internal numbers. The length of the array
is determined by the number of integers being
passed. The internal numbers are the entity
types' internal numbers.
RelationshipTypeList
= packed array[1 .. *] of char; { name type }
or
= array[1 .. *] of integer; { internal number type }
If this parameter is name type :
This parameter type is a character array
containing the entity types involved in a
relationship type. Each name in the list must
either be 32 characters long or be separated
from the next name in the list by at least one
blank. Separation by blanks is optional if the
names are 32 characters long. The length of
the list may be up to 198 characters, and must
be terminated with a semicolon.
If this parameter is internal number type :
This parameter is an array of up to 7 four-byte
integers. The first four bytes of this array
contain a number N (1 to 6), which is followed
by N internal numbers. The length of the array
is determined by the number of integers being
passed. The internal numbers are the entity
types' internal numbers. In the case where a
single relationship type number is specified,
the first four bytes of the array will contain
the number 1, and the second four will contain
the relationship type's internal number.
RelationshipTypeOutList = packed array[2 .. *] of NameType;
This output parameter type is a character array
containing up to seven entity types involved in
a relationship type. Each name in the array is
defined by parameter type NameType, and will be
a left justified, right blank filled, 32
character field. The list will be terminated
by a semicolon.
Note : The above list will contain a maximum
of six names but will include the list
terminator (;) in the first byte of the seventh
name space if the list contains six names. The
seventh name will not be right blank filled.
The maximum number of usable bytes in this
parameter is 193 [(32*6)+1].
RetrievalIDType = array[1 .. 20] of integer;
This parameter type contains information
identifying what is to be retrieved, and passes
control information to the calling intrinsic.
The first four bytes of this parameter must be
initialized to a binary zero before the
intrinsic is called. During the first call,
the intrinsic changes the value of this
parameter to a new value which is determined by
the intrinsic being called. This new value
should never be changed, and must be passed
back to the intrinsic at each successive call.
ScopeAccessType = integer;
This parameter type contains a four-byte
integer which is the ScopeAccess number of the
scope. It specifies the access a scope has to
an entity or a relationship. The legal values
are:
1 = Read access
2 = Read and Modify access
3 = Create, Delete, Read, and Modify access
ScopePasswordType = packed array[1 .. 32] of char;
This parameter type contains a 32 character
array which must be right blank filled.
Trailing blanks are not considered part of the
password. However, the password may contain
embedded blanks, or be all blanks (no
password).
Note : All alphanumeric and special characters
may be used in passwords.
ScopeRightsType = array[1 .. *] of integer;
This parameter is an array of up to 7 four-byte
integers. The first four bytes of this array
contain a number N (1 to 6), which is followed
by N Scope Right numbers. The length of the
array is determined by the user. Scope Rights
are assigned as follows:
1 = Secure capability
2 = Extend capability
3 = Create capability
4 = Read capability
5 = Domain capability
6 = Version Control capability
StatusType = array[1 .. 7] of integer;
This parameter type is a 28-byte array (7
four-byte integers) containing information
indicating the success or failure of an
intrinsic call. Every intrinsic returns this
information. The first 16 bytes are the same
for each intrinsic, as shown below.
Table 3-1. STATUS CONTENTS (Pascal)
-------------------------------------------------------------------
| | |
| Bytes | Contain |
| | |
-------------------------------------------------------------------
| | |
| 1 - 4 | The System Dictionary condition code (error |
| | message number) |
| | |
-------------------------------------------------------------------
| 5 - 8 | |
| | The subsystem code number: |
| | |
| | 0 = No Subsystem Error |
| | 1 = MPE |
| | 2 = IMAGE |
| | 3 = SORT |
| | |
-------------------------------------------------------------------
| | |
| 9 - 12 | The subsystem error code. (e.g. the IMAGE |
| | error code) |
| | |
-------------------------------------------------------------------
| | |
| 13 - 16 | The intrinsic number |
| | |
-------------------------------------------------------------------
The contents of the remaining bytes (17 - 28)
are determined by the intrinsic being called.
The description of each intrinsic which uses
these bytes contains a continuation of this
table, which shows how they are used in that
particular intrinsic.
NOTE Every System Dictionary intrinsic which is used to retrieve a list
of items (e.g. SDFindRelList, SDGetDomainList, SDGetRelVarAttr)
will return System Dictionary error number 24 to the first four
bytes of the Status parameter after the last item in the list has
been retrieved. This number, however, is not really an intrinsic
"error" , but a value which may be used for program control (e.g.
testing within a loop). Because the value does not change until
after the last item in the list is retrieved, the intrinsic is
actually called one more time than the number of items in the list.
For example, the intrinsic SDGetDomainList is used in a dictionary
which has six domains. Assuming no dictionary errors, the first
four bytes of the Status parameter will be 0 during the first six
calls (0 = no dictionary errors). On the seventh call, however,
there are no more domains to retrieve, and the value 24 will be
returned, indicating "end-of-list" .
ValueLine = packed array[1 .. 80] of char;
This output parameter type is a line of
variable length attribute text.
ValueText = packed array[1 .. *] of char;
This input parameter type is variable length
attribute text. The length is determined by
the user.
VersionStatusType = integer;
This parameter type is a four-byte integer
specifying the status of a version. Valid
values for the version statuses are:
1 = Test status
2 = Production status
3 = Archival status
MPE/iX 5.0 Documentation