Document revision date: 19 July 1999
|
|
|
|
OpenVMS RTL Library (LIB$) Manual
LIB$SCOPY_DXDX
The Copy Source String Passed by Descriptor to Destination routine
copies a source string passed by descriptor to a destination string.
Format
LIB$SCOPY_DXDX source-string ,destination-string
Corresponding JSB Entry Point
LIB$SCOPY_DXDX6
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
source-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
read only |
mechanism: |
by descriptor |
Source string to be copied to the destination string by LIB$SCOPY_DXDX.
The source-string argument contains the address of a
descriptor pointing to this source string. The descriptor class can be
unspecified, fixed-length, decimal string, array, noncontiguous array,
varying, or dynamic.
destination-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
write only |
mechanism: |
by descriptor |
Destination string to which the source string is copied. The
destination-string argument contains the address of a
descriptor pointing to this destination string.
The following actions occur depending on the class of the destination
string's descriptor:
Descriptor Class |
Action |
S, Z, SD, A, NCA
|
Copy the source string. If needed, space-fill or truncate on the right.
|
D
|
If the area specified by the destination descriptor is large enough to
contain the source string, copy the source string and set the new
length in the destination descriptor. If the area specified is not
large enough, return the previous space allocation (if any) and then
dynamically allocate the amount of space needed. Copy the source string
and set the new length and address in the destination descriptor.
|
VS
|
Copy source string to destination string up to the limit of the
descriptor MAXSTRLEN field with no padding. Readjust the current length
(CURLEN) field to the actual number of bytes copied.
|
Description
LIB$SCOPY_DXDX returns all condition values as a status; truncation is
a qualified success condition value (bit 0 set to 1).
In addition, an equivalent JSB entry point is available, with R0
containing the first argument and R1 containing the second.
Condition Values Returned
SS$_NORMAL
|
Routine successfully completed. All characters in the input string were
copied to the destination string.
|
LIB$_STRTRU
|
Routine successfully completed. String truncated. The destination
string could not contain all of the characters copied from the source
string.
|
LIB$_FATERRLIB
|
Fatal internal error. An internal consistency check has failed. This
usually indicates an internal error in the Run-Time Library and should
be reported to your Compaq support representative.
|
LIB$_INSVIRMEM
|
Insufficient virtual memory. Your program has exceeded the image quota
for virtual memory.
|
LIB$_INVSTRDES
|
Invalid string descriptor. A string descriptor has an invalid value in
its CLASS field.
|
LIB$SCOPY_R_DX
The Copy Source String Passed by Reference to Destination String
routine copies a source string passed by reference to a destination
string, passed by descriptor.
Format
LIB$SCOPY_R_DX word-integer-source-length ,source-string
,destination-string
Corresponding JSB Entry Point
LIB$SCOPY_R_DX6
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
word-integer-source-length
OpenVMS usage: |
word_unsigned |
type: |
word (unsigned) |
access: |
read only |
mechanism: |
by reference |
Length of the source string in bytes. The
word-integer-source-length argument is the address of an
unsigned word that contains the length of the source string.
source-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
read only |
mechanism: |
by reference |
Source string to be copied to the destination string by LIB$SCOPY_R_DX.
The source-string argument is the address of this
source string.
destination-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
write only |
mechanism: |
by descriptor |
Destination string to which the source string is copied. The
destination-string argument contains the address of a
descriptor pointing to this destination string.
Description
LIB$SCOPY_R_DX copies a source string, passed by reference, to a
destination string, passed by descriptor. It returns the status as a
condition value. Truncation is a qualified success; LIB$SCOPY_R_DX sets
bit 0 of the condition value to 1.
The actions taken by LIB$SCOPY_R_DX depend on the descriptor class of
the destination string. The following table describes these actions for
each descriptor class:
Descriptor Class |
Action |
S, Z, SD, A, NCA
|
Copy the source string. If needed, space fill or truncate on the right.
|
D
|
If the area specified by the destination descriptor is large enough to
contain the source string, copy the source string and set the new
length in the destination descriptor.
|
|
If the area specified is not large enough, return the previous space
allocation, if any, and then dynamically allocate the amount of space
needed. Copy the source string and set the new length and address in
the destination descriptor.
|
VS
|
Copy source string to destination string up to the limit of the
decsriptor's MAXSTRLEN field with no padding. Readjust the string's
current length (CURLEN) field to the actual number of bytes copied.
|
An equivalent JSB entry is available, with R0 being the first argument,
R1 the second, and R2 the third. The length argument is passed in bits
15:0 of R0.
Condition Values Returned
SS$_NORMAL
|
Routine successfully completed. All characters in the input string were
copied to the destination string.
|
LIB$_STRTRU
|
Routine successfully completed. String truncated. The destination
string could not contain all of the characters copied from the source
string.
|
LIB$_FATERRLIB
|
Fatal internal error. An internal consistency check has failed. This
usually indicates an internal error in the Run-Time Library and should
be reported to your Compaq support representative.
|
LIB$_INSVIRMEM
|
Insufficient virtual memory. Your program has exceeded the image quota
for virtual memory.
|
LIB$_INVSTRDES
|
Invalid string descriptor. A string descriptor has an invalid value in
its CLASS field.
|
LIB$SCOPY_R_DX_64 (Alpha Only)
The Copy Source String Passed by Reference to Destination String
routine copies a source string passed by reference to a destination
string, passed by descriptor.
Format
LIB$SCOPY_R_DX_64 quad-integer-source-length ,source-string
,destination-string
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
quad-integer-source-length
OpenVMS usage: |
quadword_unsigned |
type: |
quadword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Length of the source string in bytes. The
quad-integer-source-length argument is the address of
an unsigned quadword that contains the length of the source string.
source-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
read only |
mechanism: |
by reference |
Source string to be copied to the destination string by
LIB$SCOPY_R_DX_64. The source-string argument is the
address of this source string.
destination-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
write only |
mechanism: |
by descriptor |
Destination string to which the source string is copied. The
destination-string argument contains the address of a
descriptor pointing to this destination string.
Description
LIB$SCOPY_R_DX_64 copies a source string, passed by reference, to a
destination string, passed by descriptor. It returns the status as a
condition value. Truncation is a qualified success; LIB$SCOPY_R_DX_64
sets bit 0 of the condition value to 1.
The actions taken by LIB$SCOPY_R_DX_64 depend on the descriptor class
of the destination string. The following table describes these actions
for each descriptor class:
Descriptor Class |
Action |
S, Z, SD, A, NCA
|
Copy the source string. If needed, space fill or truncate on the right.
|
D
|
If the area specified by the destination descriptor is large enough to
contain the source string, copy the source string and set the new
length in the destination descriptor.
|
|
If the area specified is not large enough, return the previous space
allocation, if any, and then dynamically allocate the amount of space
needed. Copy the source string and set the new length and address in
the destination descriptor.
|
VS
|
Copy source string to destination string up to the limit of the
descriptor's MAXSTRLEN field with no padding. Readjust the string's
current length (CURLEN) field to the actual number of bytes copied.
|
Condition Values Returned
SS$_NORMAL
|
Routine successfully completed. All characters in the input string were
copied to the destination string.
|
LIB$_STRTRU
|
Routine successfully completed. String truncated. The destination
string could not contain all of the characters copied from the source
string.
|
LIB$_FATERRLIB
|
Fatal internal error. An internal consistency check has failed. This
usually indicates an internal error in the Run-Time Library and should
be reported to your Compaq support representative.
|
LIB$_INSVIRMEM
|
Insufficient virtual memory. Your program has exceeded the image quota
for virtual memory.
|
LIB$_INVSTRDES
|
Invalid string descriptor. A string descriptor has an invalid value in
its CLASS field.
|
LIB$SET_LOGICAL
The Set Logical Name routine requests the calling process's command
language interpreter (CLI) to define or redefine a supervisor-mode
process logical name. It provides the same function as the DCL command
DEFINE.
Format
LIB$SET_LOGICAL logical-name [,value-string] [,table] [,attributes]
[,item-list]
Either the item-list or value-string
argument must be specified. If both item-list and
value-string are specified, the
value-string argument is ignored.
RETURNS
OpenVMS usage: |
cond_value |
type: |
longword (unsigned) |
access: |
write only |
mechanism: |
by value |
Arguments
logical-name
OpenVMS usage: |
logical_name |
type: |
character string |
access: |
read only |
mechanism: |
by descriptor |
Logical name to be defined or redefined. The
logical-name argument contains the address of a
descriptor pointing to this logical name string. The maximum length of
a logical name is 255 characters. Note that logical names are case
sensitive.
value-string
OpenVMS usage: |
char_string |
type: |
character string |
access: |
read only |
mechanism: |
by descriptor |
Value to be given to the logical name. The
value-string argument contains the address of a
descriptor pointing to this value string. The maximum length of a
logical name value is 255 characters.
If omitted, an item list must be present to specify the values of the
logical name.
table
OpenVMS usage: |
char_string |
type: |
character string |
access: |
read only |
mechanism: |
by descriptor |
Name of the table in which to create the logical name. The
table argument contains the address of a descriptor
pointing to the logical name table. If no table is specified,
LNM$PROCESS is used as the default.
attributes
OpenVMS usage: |
mask_longword |
type: |
longword (unsigned) |
access: |
read only |
mechanism: |
by reference |
Logical name or translation attributes. The attributes
argument is the address of a longword bit mask that contains the
logical name or translation attributes.
LNM$M_CONFINE and LNM$M_NO_ALIAS are currently available logical name
attributes. See the description of the $CRELNM system service in the
OpenVMS System Services Reference Manual for definitions of LNM$M_CONFINE and LNM$M_NO_ALIAS. If
omitted, no special logical name attribute is established.
If no item-list is specified, the translation
attributes LNM$M_CONCEALED and LNM$M_TERMINAL may be specified. See the
description of the ASSIGN command in the OpenVMS DCL Dictionary for definitions
of these attributes. If an item-list is specified, it
will contain the translation attributes for each equivalence string in
the attribute.
item-list
OpenVMS usage: |
item_list_3 |
type: |
unspecified |
access: |
read only |
mechanism: |
by reference, array reference |
Item list describing the equivalence names for this logical name. The
item-list argument contains the address of an array
that contains this item list. If item-list is not
specified, the logical name will have only one value, as specified in
the value-string argument. Item codes for use with
this item list are included in libraries supplied by Compaq in module
$LNMDEF.
Either value-string or item-list must
be specified. If neither is specified, the LIB$_INVARG error is
produced. If both value-string and
item-list are specified, the
value-string argument is ignored.
If item-list is specified, only logical name
attributes are permitted. Translation attributes appear in the item
list.
The item-list argument is needed only when you want to
create multiple equivalence strings for a single logical name.
Description
If the optional table argument is defined, the logical
name will be placed in the table specified by the
table argument; otherwise, the logical name is placed
in the LNM$PROCESS table.
Unlike the system services $CRELOG and $CRELNM, LIB$SET_LOGICAL does
not require the caller to be executing in supervisor mode to define a
supervisor-mode logical name. Supervisor-mode logical names are not
deleted when an image exits. A program can obtain the current value of
any logical name by calling the system service $TRNLNM. For more
information on logical names, see the OpenVMS System Services Reference Manual.
This routine is supported for use with the DCL and MCR CLIs. If an
image is run directly as a subprocess or as a detached process, there
is no CLI present to perform this function. In that case, the error
status LIB$_NOCLI is returned.
This routine does not support the DCL DEFINE and DEASSIGN commands'
special side-effect of opening and closing a process-permanent file if
the logical name SYS$OUTPUT is specified.
See the OpenVMS DCL Dictionary for a description of the DEFINE command.
Condition Values Returned
SS$_NORMAL
|
Routine successfully completed.
|
SS$_ACCVIO
|
Access violation. The logical name or its value could not be read.
|
SS$_BADPARAM
|
Bad argument.
|
SS$_BUFFEROVF
|
Routine successfully completed; however, a buffer overflow occurred.
|
SS$_INSFMEM
|
Insufficient dynamic memory.
|
SS$_IVLOGNAM
|
Invalid logical name. The logical name or its value contained more than
255 characters.
|
SS$_IVLOGTAB
|
Invalid logical name table.
|
SS$_NOPRIV
|
No privileges for attempted operation.
|
SS$_SUPERSEDE
|
Routine successfully completed; the previous definition of the logical
name was replaced.
|
SS$_TOOMANYLNAM
|
Logical name translation exceeded allowed depth.
|
LIB$_INVARG
|
Neither the
value-string nor the
item-list argument was specified.
|
LIB$_INVSTRDES
|
Invalid string descriptor.
|
LIB$_NOCLI
|
No CLI present to perform function. The calling process did not have a
CLI to perform the function or the CLI did not support the request
type. Note that an image run as a subprocess or detached process does
not have a CLI.
|
LIB$_UNECLIERR
|
Unexpected CLI error. The CLI returned an error status which was not
recognized. This error may be caused by use of a nonstandard CLI. If
this error occurs while using the DCL command language interpreter,
please report the problem to your Compaq support representative.
|
Example
|
!+
! Initialize value for logical name MY_LOG
!-
SYMBOL$ = 'MY_LOG'
SETVAL$ = 'OFF'
CALL LIB$SET_LOGICAL (SYMBOL$, SETVAL$)
END
|
The BASIC program above sets the logical MY_LOG to OFF. This value can
be displayed after the program is run with SHOW LOGICAL as follows:
$ SHOW LOGICAL MY_LOG
"MY_LOG" = "OFF" (LNM$PROCESS_TABLE)
|