|
VMS Help FDL Routines *Conan The Librarian |
The FDL routines perform many of the functions of the File
Definition Language that define file characteristics.
| 1 - FDL$CREATE |
The FDL$CREATE routine creates a file from an FDL specification
and then closes the file.
Format
FDL$CREATE fdl_desc [,filename] [,default_name] [,result_name]
[,fid_block] [,flags] [,stmnt_num] [,retlen] [,sts]
[,stv] [,default_fdl_desc]
1.1 - Returns
OpenVMS usage:cond_value
type: longword (unsigned)
access: write only
mechanism: by value
Longword condition value. Most utility routines return a
condition value in R0. Condition values that this routine can
return are listed under Condition Values Returned.
1.2 - Arguments
fdl_desc
OpenVMS usage:char_string
type: character-coded text string
access: read only
mechanism: by descriptor-fixed-length string descriptor
The fdl_desc argument is one of the following:
o A character string descriptor pointing to a file containing
the FDL specification to be parsed
o A character string containing the actual FDL specification
The choice depends on the application making the call. For
example, if the application wants to create data files that are
compatible with a PC application, it might create the following
FDL file and name it TRANSFER.FDL:
FILE
ORGANIZATION sequential
RECORD
FORMAT stream_lf
The application could then include the address of the FDL file as
the fdl_desc argument to the FDL$PARSE call:
call fdl$parse transfer.fdl , . . .
Optionally, the application might code the FDL specification
itself into the call using a quoted character string as the fdl_
desc argument:
call fdl$parse "FILE; ORG SEQ; FORMAT STREAM_LF;" , . . .
Note that directly including the FDL specification into the call
requires you to do the following:
o Enclose the fdl_desc argument in quotation marks
o Use a semicolon to delimit statements within the fdl_desc
argument
o Assign the symbol FDL$M_FDL_STRING as the flags mask value
filename
OpenVMS usage:char_string
type: character-coded text string
access: read only
mechanism: by descriptor-fixed-length string descriptor
Name of the OpenVMS RMS file to be created using the FDL
specification. The filename argument is the address of a
character string descriptor pointing to the RMS file name.
This name overrides the default_name parameter given in the FDL
specification.
default_name
OpenVMS usage:char_string
type: character-coded text string
access: read only
mechanism: by descriptor-fixed-length string descriptor
Default name of the file to be created using the FDL
specification. The default_name argument is the address of a
character string descriptor pointing to the default file name.
This name overrides any name given in the FDL specification.
result_name
OpenVMS usage:char_string
type: character-coded text string
access: write only
mechanism: by descriptor-fixed-length string descriptor
Resultant name of the file created by FDL$CREATE. The result_name
argument is the address of a character string descriptor that
receives the resultant file name.
fid_block
OpenVMS usage:vector_longword_unsigned
type: longword (unsigned)
access: write only
mechanism: by reference
File identification of the RMS file created by FDL$CREATE. The
fid_block argument is the address of an array of longwords that
receives the RMS file identification information. The first
longword contains the FID_NUM, the second contains the FID_
SEQ, and the third contains the FID_RVN. They have the following
definitions:
FID_ The location of the file on the disk. Its value can
NUM range from 1 up to the number of files the disk can
hold.
FID_ The file sequence number, which is the number of times
SEQ the file number has been used.
FID_ The relative volume number, which is the volume number
RVN of the volume on which the file is stored. If the file
is not stored on a volume set, the relative volume
number is 0.
flags
OpenVMS usage:mask_longword
type: longword (unsigned)
access: read only
mechanism: by reference
Flags (or masks) that control how the fdl_desc argument is
interpreted and how errors are signaled. The flags argument is
the address of a longword containing the control flags (or a
mask). If you omit this argument or specify it as 0, no flags are
set. The following table shows the flags and their meanings:
Flag Function
FDL$V_FDL_ Interprets the fdl_desc argument as an FDL
STRING specification in string form. By default, the
fdl_desc argument is interpreted as the file
name of an FDL file.
FDL$V_LONG_ Returns the RESULT_NAME using the long result
NAMES name from a long name access block (NAML). By
default, the RESULT_NAME is returned from the
short fields of a name access block (NAM) and
thus may have a generated specification.
This flag is valid for OpenVMS Alpha only.
FDL$V_SIGNAL Signals any error. By default, the status code
is returned to the calling image.
By default, an error status is returned rather than signaled.
stmnt_num
OpenVMS usage:longword_unsigned
type: longword (unsigned)
access: write only
mechanism: by reference
FDL statement number. The stmnt_num argument is the address
of a longword that receives the FDL statement number. If the
routine finishes successfully, the stmnt_num argument is the
number of statements in the FDL specification. If the routine
does not finish successfully, the stmnt_num argument receives
the number of the statement that caused the error. Note that line
numbers and statement numbers are not the same and that an FDL
specification in string form has no "lines."
retlen
OpenVMS usage:longword_unsigned
type: longword (unsigned)
access: write only
mechanism: by reference
Number of characters returned in the result_name argument. The
retlen argument is the address of a longword that receives this
number.
sts
OpenVMS usage:longword_unsigned
type: longword_unsigned
access: write only
mechanism: by reference
RMS status value FAB$L_STS. The sts argument is the address of
a longword that receives the status value FAB$L_STS from the
$CREATE system service.
stv
OpenVMS usage:longword_unsigned
type: longword (unsigned)
access: write only
mechanism: by reference
RMS status value FAB$L_STV. The stv argument is the address of
a longword that receives the status value FAB$L_STV from the
$CREATE system service.
default_fdl_desc
OpenVMS usage:char_string
type: character-coded text string
access: read only
mechanism: by descriptor-fixed-length string descriptor
The default_fdl_desc argument is one of the following:
o A character string descriptor pointing to a file containing
the default FDL specification to be parsed
o A character string containing the actual default FDL
specification
See the description of the fdl_desc argument for details.
This argument allows you to specify default FDL attributes. In
other words, FDL$CREATE processes the attributes specified in
this argument unless you override them with the attributes you
specify in the fdl_desc argument.
You can code the FDL defaults directly into your program,
typically with an FDL specification in string form.
1.3 - Description
FDL$CREATE calls the FDL$PARSE routine to parse the FDL
specification. The FDL specification can be in a file or a
character string.
Source
of FDL
SpecificatAdvantages Disadvantages
FDL Variability; for File must be in default directory.
file example, if the Slower.
specification
changes
regularly, you
can revise the
file without
revising the
calling program.
Character You do not have Program must be recoded to change
string to be concerned FDL specification.
with locating a
file.
Faster access.
If the FDL specification is relatively simple and is not going
to change, put the FDL specification in a character string as the
fdl_desc argument to the call.
FDL$CREATE opens (creates) the specified RMS file and then closes
it without putting any data in it.
FDL$CREATE does not create the output file if an error status is
either returned or signaled.
1.4 - Condition Values Returned
RMS$_NORMAL Normal successful completion.
FDL$_ABKW Ambiguous keyword in statement
number<CRLF>reference-text.
FDL$_ABPRIKW Ambiguous primary keyword in statement
number<CRLF>reference-text.
FDL$_BADLOGIC Internal logic error detected.
FDL$_CLOSEIN Error closing filename as input.
FDL$_CLOSEOUT Error closing filename as output.
FDL$_CREATE Error creating filename.
FDL$_CREATED Filename created.
FDL$_CREATED_STM Filename created in stream format.
FDL$_FDLERROR Error parsing FDL file.
FDL$_ILL_ARG Wrong number of arguments.
FDL$_INSVIREM Insufficient virtual memory.
FDL$_INVBLK Invalid RMS control block at virtual address
'hex-offset'.
FDL$_MULPRI Multiple primary definition in statement
number.
FDL$_OPENFDL Error opening filename.
FDL$_OPENIN Error opening filename as input.
FDL$_OPENOUT Error opening filename as output.
FDL$_OUTORDER Key or area primary defined out of order in
statement number.
FDL$_READERR Error reading filename.
FDL$_RFLOC Unable to locate related file.
FDL$_SYNTAX Syntax error in statement number reference-
text.
FDL$_UNPRIKW Unrecognized primary keyword in statement
number<CRLF> reference-text.
FDL$_UNQUAKW Unrecognized qualifier keyword in statement
number<CRLF> reference-text.
FDL$_UNSECKW Unrecognized secondary keyword in statement
number<CRLF> reference-text.
FDL$_VALERR Specified value is out of legal range.
FDL$_VALPRI Value required on primary in statement number.
FDL$_WARNING Parsed with warnings.
FDL$_WRITEERR Error writing filename.
RMS$_ACT File activity precludes operation.
RMS$_CRE Ancillary control process (ACP) file create
failed.
RMS$_CREATED File was created, not opened.
RMS$_DNF Directory not found.
RMS$_DNR Device not ready or not mounted.
RMS$_EXP File expiration date not yet reached.
RMS$_FEX File already exists, not superseded.
RMS$_FLK File currently locked by another user.
RMS$_PRV Insufficient privilege or file protection
violation.
RMS$_SUPERSEDE Created file superseded existing version.
RMS$_WLK Device currently write locked.
| 2 - FDL$GENERATE |
The FDL$GENERATE routine produces an FDL specification and writes
it to either an FDL file or a character string.
Format
FDL$GENERATE flags ,fab_pointer ,rab_pointer [,fdl_file_dst]
[,fdl_file_resnam] [,fdl_str_dst] [,bad_blk_addr]
[,retlen]
2.1 - Returns
OpenVMS usage:cond_value
type: longword (unsigned)
access: write only
mechanism: by value
Longword condition value. Most utility routines return a
condition value in R0. Condition values that this routine can
return are listed under Condition Values Returned.
2.2 - Arguments
flags
OpenVMS usage:mask_longword
type: longword (unsigned)
access: read only
mechanism: by reference
Flags (or masks) that control how the fdl_str_dst argument is
interpreted and how errors are signaled. The flags argument is
the address of a longword containing the control flags (or a
mask). If you omit this argument or specify it as zero, no flags
are set. The flags and their meanings are as follows:
Flag Function
FDL$V_FDL_ Interprets the fdl_str_dst argument as an FDL
STRING specification in string form. By default, the
fdl_str_dst argument is interpreted as the file
name of an FDL file.
FDL$V_FULL_ Includes the FDL attributes to describe all
OUTPUT the bits and fields in the OpenVMS RMS control
blocks, including run-time options. If this flag
is set, every field is inspected before being
written. By default, only the FDL attributes
that describe permanent file attributes
are included (producing a much shorter FDL
specification).
FDL$V_LONG_ Returns the FDL_FILE_RESNAME using the long
NAMES result name from a long name access block
(NAML). By default, the FDL_FILE_RESNAM is
returned from the short fields of a name access
block (NAM) and thus may have a generated
specification.
This flag is valid for OpenVMS Alpha only.
FDL$V_SIGNAL Signals any error. By default, the status code
is returned to the calling image.
By default, an error status is returned rather than signaled.
fab_pointer
OpenVMS usage:address
type: longword (unsigned)
access: read only
mechanism: by reference
RMS file access block (FAB). The fab_pointer argument is the
address of a longword containing the address of a FAB.
rab_pointer
OpenVMS usage:address
type: longword (unsigned)
access: read only
mechanism: by reference
RMS record access block (RAB). The rab_pointer argument is the
address of a longword containing the address of a RAB.
fdl_file_dst
OpenVMS usage:char_string
type: character-coded text string
access: read only
mechanism: by descriptor
Name of the FDL file to be created. The fdl_file_dst argument
is the address of a character-string descriptor containing the
file name of the FDL file to be created. If the FDL$V_FDL_STRING
flag is set in the flags argument, this argument is ignored;
otherwise, it is required. The FDL specification is written to
the file named in this argument.
fdl_file_resnam
OpenVMS usage:char_string
type: character-coded text string
access: write only
mechanism: by descriptor-fixed-length string descriptor
Resultant name of the FDL file created. The fdl_file_resnam
argument is the address of a variable character-string descriptor
that receives the resultant name of the FDL file created (if
FDL$GENERATE is directed to create an FDL file).
fdl_str_dst
OpenVMS usage:char_string
type: character-coded text string
access: write only
mechanism: by descriptor-fixed-length string descriptor
FDL specification. The fdl_str_dst argument is the address of
a variable character string descriptor that receives the FDL
specification created. If the FDL$V_FDL_STRING bit is set in
the flags argument, this argument is required; otherwise, it is
ignored.
bad_blk_addr
OpenVMS usage:address
type: longword (unsigned)
access: write only
mechanism: by reference
Address of an invalid RMS control block. The bad_blk_addr
argument is the address of a longword that receives the address
of an invalid control block (a fatal error). If an invalid
control block is detected, this argument is returned; otherwise,
it is ignored.
retlen
OpenVMS usage:longword_unsigned
type: longword (unsigned)
access: write only
mechanism: by reference
Number of characters received in either the fdl_file_resnam or
the fdl_str_dst argument. The retlen argument is the address of a
longword that receives this number.
2.3 - Condition Values Returned
SS$_NORMAL Normal successful completion.
FDL$_INVBLK Invalid block.
RMS$_ACT File activity precludes operation.
RMS$_CONTROLC Operation completed under Ctrl/C.
RMS$_CONTROLO Output completed under Ctrl/O.
RMS$_CONTROLY Operation completed under Ctrl/Y.
RMS$_DNR Device not ready or mounted.
RMS$_EXT ACP file extend failed.
RMS$_OK_ALK Record already locked.
RMS$_OK_DUP Record inserted had duplicate key.
RMS$_OK_IDX Index update error occurred.
RMS$_PENDING Asynchronous operation pending completion.
RMS$_PRV Insufficient privilege or file protection
violation.
RMS$_REX Record already exists.
RMS$_RLK Target record currently locked by another
stream.
RMS$_RSA Record stream currently active.
RMS$_WLK Device currently write locked.
SS$_ACCVIO Access violation.
STR$_FATINERR Fatal internal error in run-time library.
STR$_ILLSTRCLA Illegal string class.
STR$_INSVIRMEM Insufficient virtual memory.
| 3 - FDL$PARSE |
The FDL$PARSE routine parses an FDL specification, allocates
OpenVMS RMS control blocks (FABs, RABs, or XABs), and fills in
the relevant fields.
Format
FDL$PARSE fdl_desc ,fdl_fab_pointer ,fdl_rab_pointer [,flags]
[,default_fdl_desc] [,stmnt_num]
3.1 - Returns
OpenVMS usage:cond_value
type: longword (unsigned)
access: write only
mechanism: by value
Longword condition value. Most utility routines return a
condition value in R0. Condition values that this routine can
return are listed under Condition Values Returned.
3.2 - Arguments
fdl_desc
OpenVMS usage:char_string
type: character-coded text string
access: read only
mechanism: by descriptor-fixed-length string descriptor
Name of the FDL file or the actual FDL specification to be
parsed. See the description of the fdl_desc argument for the
FDL$CREATE routine for details.
fdl_fab_pointer
OpenVMS usage:address
type: longword (unsigned)
access: write only
mechanism: by reference
Address of an RMS file access block (FAB). The fdl_fab_pointer
argument is the address of a longword that receives the address
of the FAB. FDL$PARSE both allocates the FAB and fills in its
relevant fields.
fdl_rab_pointer
OpenVMS usage:address
type: longword (unsigned)
access: write only
mechanism: by reference
Address of an RMS record access block ( for Alpha, it is the
RAB64). The fdl_rab_pointer argument is the address of a longword
that receives the address of the RAB or RAB64. FDL$PARSE both
allocates the RAB or RAB64 and fills in any fields designated in
the FDL specification.
For Alpha, the 64-bit record access block (RAB64) consists of the
traditional 32-bit RAB followed by some 64-bit fields. The RAB64
is automatically allocated for Alpha users, who can either use it
as a RAB64 or overlay it with the 32-bit RAB definition and use
it as a traditional 32-bit RAB.
flags
OpenVMS usage:mask_longword
type: longword (unsigned)
access: read only
mechanism: by reference
Flags (or masks) that control how the default_fdl_desc argument
is interpreted and how errors are signaled. The flags argument
is the address of a longword containing the control flags. If you
omit this argument or specify it as zero, no flags are set. The
flags and their meanings are as follows:
Flag Function
FDL$V_DEFAULT_ Interprets the default_fdl_desc argument
STRING as an FDL specification in string form. By
default, the default_fdl_desc argument is
interpreted as the file name of an FDL file.
FDL$V_FDL_STRING Interprets the fdl_desc argument as an FDL
specification in string form. By default, the
fdl_desc argument is interpreted as the file
name of an FDL file.
FDL$V_LONG_NAMES Allocates and returns a long name access
block (NAML) linked to the returned RMS file
access block (FAB). The appropriate values
are set in the NAML and FAB blocks so that
the long file name fields of the NAML block
will be used.
By default, a name block is not allocated and
the file name fields of FAB are used.
If the FDL$V_LONG_NAMES flag is set, then
the FDL$V_LONG_NAMES bit must also be set in
the flags argument to the FDL$RELEASE routine
to ensure that memory allocated for the NAML
block is deallocated properly.
This flag is valid for OpenVMS Alpha only.
FDL$V_SIGNAL Signals any error. By default, the status
code is returned to the calling image.
By default, an error status is returned rather than signaled.
default_fdl_desc
OpenVMS usage:char_string
type: character-coded text string
access: read only
mechanism: by descriptor-fixed-length string descriptor
The default_fdl_desc argument is the address of a character-
string descriptor pointing to either the default FDL file or the
default FDL specification. See the description of the fdl_desc
argument for the FDL$CREATE routine for details.
This argument allows you to specify default FDL attributes. In
other words, FDL$PARSE processes the attributes specified in this
argument unless you override them with the attributes you specify
in the fdl_desc argument.
You can code the FDL defaults directly into your program,
typically with an FDL specification in string form.
stmnt_num
OpenVMS usage:longword_unsigned
type: longword (unsigned)
access: write only
mechanism: by reference
FDL statement number. The stmnt_num argument is the address
of a longword that receives the FDL statement number. If the
routine finishes successfully, the stmnt_num argument is the
number of statements in the FDL specification. If the routine
does not finish successfully, the stmnt_num argument receives
the number of the statement that caused the error. Note that line
numbers and statement numbers are not the same and that an FDL
specification in string form has no "lines."
By default, an error status is returned rather than signaled.
3.3 - Condition Values Returned
SS$_NORMAL Normal successful completion.
LIB$_BADBLOADR Bad block address.
LIB$_BADBLOSIZ Bad block size.
LIB$_INSVIRMEM Insufficient virtual memory.
RMS$_DNF Directory not found.
RMS$_DNR Device not ready or not mounted.
RMS$_WCC Invalid wildcard context (WCC) value.
| 4 - FDL$RELEASE |
The FDL$RELEASE routine deallocates the virtual memory used by
the OpenVMS RMS control blocks created by FDL$PARSE. You must
use FDL$PARSE to populate the control blocks if you plan to
deallocate memory later with FDL$RELEASE.
Format
FDL$RELEASE [fab_pointer] [,rab_pointer] [,flags]
[,badblk_addr]
4.1 - Returns
OpenVMS usage:cond_value
type: longword (unsigned)
access: write only
mechanism: by value
Longword condition value. Most utility routines return a
condition value in R0. Condition values that this routine can
return are listed under Condition Values Returned.
4.2 - Arguments
fab_pointer
OpenVMS usage:address
type: longword (unsigned)
access: read only
mechanism: by reference
File access block (FAB) to be deallocated using the LIB$FREE_VM
routine. The fab_pointer argument is the address of a longword
containing the address of the FAB. The FAB must be the same one
returned by the FDL$PARSE routine. Any name blocks (NAMs) and
extended attribute blocks (XABs) connected to the FAB are also
released.
If you omit this argument or specify it as zero, the FAB (and any
associated NAMs and XABs) is not released.
rab_pointer
OpenVMS usage:address
type: longword (unsigned)
access: read only
mechanism: by reference
Record access block (RAB) to be deallocated using the LIB$FREE_
VM system service. The rab_pointer argument is the address of a
longword containing the address of the RAB. The address of the
RAB must be the same one returned by the FDL$PARSE routine. Any
XABs connected to the RAB are also released.
If you omit this argument or specify it as zero, the RAB (and any
associated XABs) is not released.
flags
OpenVMS usage:mask_longword
type: longword (unsigned)
access: read only
mechanism: by reference
Flag (or mask) that controls how errors are signaled. The flags
argument is the address of a longword containing the control flag
(or a mask). If you omit this argument or specify it as zero, no
flag is set. The flag is defined as follows:
FDL$V_ Signals any error. By default, the status code is
SIGNAL returned to the calling image.
FDL$V_LONG_ Deallocates any virtual memory used for a long
NAMES name access block (NAML) created by the FDL$PARSE
routine.
This flag is valid for OpenVMS Alpha only.
badblk_addr
OpenVMS usage:address
type: longword (unsigned)
access: write only
mechanism: by reference
Address of an invalid RMS control block. The badblk_addr argument
is the address of a longword that receives the address of an
invalid control block. If an invalid control block (a fatal
error) is detected, this argument is returned; otherwise, it
is ignored.
4.3 - Condition Values Returned
SS$_NORMAL Normal successful completion.
FDL$_INVBLK Invalid RMS control block at virtual address
'hex-offset'.
LIB$_BADBLOADR Bad block address.
RMS$_ACT File activity precludes operation.
RMS$_RNL Record not locked.
RMS$_RSA Record stream currently active.
SS$_ACCVIO Access violation.
|
|