Document revision date: 15 July 2002 | |
Previous | Contents | Index |
You can also protect disk files with access control lists (ACLs). (ACLs cannot be used with magnetic tape files.)
An ACL is a list of people or groups who are allowed to access a particular file. ACLs offer more scope than UICs in determining what action you want taken when someone tries to access your file. You can provide an ACL on any file to permit as much or as little access as you want.
You can specify the ACL for a file when you create it if you use RMS directly. You cannot specify an ACL in an FDL specification, and ACLs are not supported over DECnet.
After a file is created, you can define the access control list for it with the ACL Editor. You can invoke this editor with either of the following DCL commands:
For more information about how to invoke, modify, and display ACLs, see
the OpenVMS System Management Utilities Reference Manual. For additional information about operating system
security features, see your system or security manager, or consult the
documentation related to OpenVMS security.
4.5 Populating a File
The next two sections explain how to use the Convert utility to
populate a file.
4.5.1 Using the Convert Utility
The Convert utility allows you to create and populate a file.
To create a file, you need an input data file and an FDL file that describes the output file you want to create. You issue a DCL command in the following form:
CONVERT/CREATE/FDL=fdl-file input-file output-file |
As with the CREATE/FDL command, the CONVERT/CREATE/FDL command creates a file named by the output-file parameter and having characteristics specified in your FDL file. Unlike the CREATE/FDL command, CONVERT populates the output file with the records from the input file. For example, to create the file CUST.IDX from the specifications in the FDL file STDINDEX.FDL and copy the records from the input file CUST.SEQ into CUST.IDX, you enter the following command:
$ CONVERT/CREATE/FDL=STDINDEX.FDL CUST.SEQ CUST.IDX |
RMS assigns the characteristics specified in the file STDINDEX.FDL to
the records in CUST.IDX. Note that the Convert utility processes
relative files by sequentially reading records from the input file,
then writing them to the output file. As a result, the relative record
numbers (RRN) change when the input file contains deleted or unused
records.
4.5.2 Using the Convert Routines
You can invoke the functions of the Convert utility from your application program by calling the following series of convert routines:
CONV$PASS_FILES | Names the files to be converted. You can also specify an FDL file. |
CONV$PASS_OPTIONS | Indicates the CONVERT qualifiers that you want to use. You may specify any legal CONVERT option, or you may accept the defaults. |
CONV$CONVERT | Copies records from one or more source data files to an output data file. The output file is not required to have the same file organization and format as the source files. |
The routines must be called in this order.
Example 4-8 shows how to call the CONVERT routines from a Fortran program.
Example 4-8 Using the CONVERT Routines in a Fortran Program |
---|
* This program calls the routines that perform the * functions of the Convert utility. It creates an * indexed output file named CUSTDATA.DAT from the * specifications in an FDL file named INDEXED.FDL. * The program then loads CUSTDATA.DAT with records * from the sequential file SEQ.DAT. No exception * file is created. This program also returns the * "BRIEF" CONVERT statistics. * Program declarations IMPLICIT INTEGER*4 (A - Z) * Set up parameter list: number of options, CREATE, * NOSHARE, FAST_LOAD, MERGE, APPEND, SORT, WORK_FILES, * KEY=0, NOPAD, PAD CHARACTER, NOTRUNCATE, * NOEXIT, NOFIXED_CONTROL, FILL_BUCKETS, NOREAD_CHECK, * NOWRITE_CHECK, FDL, and NOEXCEPTION. * INTEGER*4 OPTIONS(19), 1 /18,1,0,1,0,0,1,2,0,0,0,0,0,0,0,0,0,1,0/ * Set up statistics list as an array with the * number of statistics that requested. There are * four: number of files, number of records, exception * records, and good records, in that order. INTEGER*4 STATSBLK(5) /4,0,0,0,0/ * Declare the file names CHARACTER IN_FILE*7 /'SEQ.DAT'/, 1 OUT_FILE*12 /'CUSTDATA.DAT'/, 1 FDL_FILE*11 /'INDEXED.FDL'/ * Call the routines in their required order. STATUS = CONV$PASS_FILES (IN_FILE, OUT_FILE, FDL_FILE) IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) STATUS = CONV$PASS_OPTIONS (OPTIONS) IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) STATUS = CONV$CONVERT (STATSBLK) IF (.NOT. STATUS) CALL LIB$STOP (%VAL(STATUS)) * Display the statistics information. WRITE (6,1000) (STATSBLK(I),I=2,5) 1000 FORMAT (1X,'Number of files processed: ',I5/, 1 1X,'Number of records: ',I5/, 1 1X,'Number of exception records: ',I5/, 1 1X,'Number of valid records: ',I5) END |
Example 4-9 shows how to call the CONVERT routines from a COBOL program.
Example 4-9 Using the CONVERT Routines in a COBOL Program |
---|
* CONV.COB * * This program calls the routines that perform the * functions of the Convert utility. It creates an * indexed output file named CUSTDATA.DAT from the * specifications in an FDL file named INDEXED.FDL. * The program then loads CUSTDATA.DAT with records * from the sequential file SEQ.DAT. No exception * file is created. This program also returns the * "BRIEF" CONVERT statistics. * * DATA NAMES: * * IN-REC defines the input record * OUT-REC defines the output record * STATVALUE receives the status value from the * routine call * NORMAL receives the value from SS$_NORMAL * OPTIONS defines the CONVERT parameter list * STATSBLK receives the CONVERT statistics. The * first data field (NUM-STATS) contains * the total number of statistics requested. * There are four: * (1) number of files processed (NUM-STATS) * (2) number of records processed (NUM-FILES) * (3) number of exception records (NUM-RECS) * (4) number of valid records (NUM-VALRECS) * IDENTIFICATION DIVISION. PROGRAM-ID. PARTS. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. VAX OBJECT-COMPUTER. VAX INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO SEQ. SELECT OUT-FILE ASSIGN TO CUSTDATA. DATA DIVISION. FILE SECTION. FD IN-FILE DATA RECORD IS IN-REC. 01 IN-REC. 02 IN-NUM PIC X(4). 02 IN-NAME PIC X(20). 02 IN-COLOR PIC X(4). 02 IN-WEIGHT PIC X(4). 02 SUPL-NAME PIC X(20). 02 FILLER PIC X(28). FD OUT-FILE DATA RECORD IS OUT-REC. 01 OUT-REC. 02 OUT-NUM PIC X(4). 02 OUT-NAME PIC X(20). 02 OUT-COLR PIC X(4). 02 OUT-WGHT PIC X(4). 02 SUPL-NAME PIC X(20). WORKING-STORAGE SECTION. 01 MORE-DATA-FLAGS PIC X(3) VALUE 'YES'. 88 THERE-IS-DATA VALUE 'YES'. 88 THERE-IS-NO-DATA VALUE 'NO '. 01 STATVALUE PIC S9(9) COMP. 01 OPTIONS USAGE IS COMP. 02 NUM-OPTS PIC S9(9) VALUE 18. 02 CREATE PIC S9(9) VALUE 1. 02 NOSHARE PIC S9(9) VALUE 0. 02 FASTLOAD PIC S9(9) VALUE 1. 02 NOMERGE PIC S9(9) VALUE 0. 02 NOPPEND PIC S9(9) VALUE 0. 02 XSORT PIC S9(9) VALUE 1. 02 XWORKFILES PIC S9(9) VALUE 2. 02 KEYS PIC S9(9) VALUE 0. 02 NOPAD PIC S9(9) VALUE 0. 02 PADCHAR PIC S9(9) VALUE 0. 02 NOTRUNCATE PIC S9(9) VALUE 0. 02 NOEXIT PIC S9(9) VALUE 0. 02 NOFIXEDCTRL PIC S9(9) VALUE 0. 02 NOFILLBUCKETS PIC S9(9) VALUE 0. 02 NOREADCHECK PIC S9(9) VALUE 0. 02 NOWRITECHECK PIC S9(9) VALUE 0. 02 FDL PIC S9(9) VALUE 1. 02 NOEXCEPTION PIC S9(9) VALUE 0. 01 STATSBLK USAGE IS COMP. 02 NUM-STATS PIC S9(9) VALUE 4. 02 NUM-FILES PIC S9(9) VALUE 0. 02 NUM-RECS PIC S9(9) VALUE 0. 02 NUM-EXCS PIC S9(9) VALUE 0. 02 NUM-VALRECS PIC S9(9) VALUE 0. PROCEDURE DIVISION. MAIN. PERFORM CONVERT-FILE THRU DISPLAY-STATS. OPEN INPUT IN-FILE. READ IN-FILE AT END MOVE 'NO ' TO MORE-DATA-FLAGS. CLOSE IN-FILE. STOP RUN. CONVERT-FILE. CALL 'CONV$PASS_FILES' USING BY DESCRIPTOR 'SEQ.DAT' BY DESCRIPTOR 'CUSTDATA.DAT' BY DESCRIPTOR 'INDEXED.FDL' GIVING STATVALUE. IF STATVALUE IS FAILURE CALL 'LIB$STOP' USING BY VALUE STATVALUE. CALL 'CONV$PASS_OPTIONS' USING BY CONTENT OPTIONS GIVING STATVALUE. IF STATVALUE IS FAILURE CALL 'LIB$STOP' USING BY VALUE STATVALUE. CALL 'CONV$CONVERT' USING BY REFERENCE STATSBLK GIVING STATVALUE. IF STATVALUE IS FAILURE CALL 'LIB$STOP' USING BY VALUE STATVALUE. DISPLAY-STATS. DISPLAY 'Number of files processed: ',NUM-FILES CONVERSION. DISPLAY 'Number of records: ',NUM-RECS CONVERSION. DISPLAY 'Number of exception records: ',NUM-EXCS CONVERSION. DISPLAY 'Number of valid records: ',NUM-VALRECS CONVERSION. |
For more information about calling the Convert routines, see the
OpenVMS Utility Routines Manual.
4.6 Summary of File-Creation Options
This section summarizes the file-creation options that are available using RMS. File-creation options may be available as qualifiers or keywords to the OPEN statement and include various aspects of file creation, including file disposition, file characteristics, file allocation, and file positioning.
Note that the run-time options for opening files in conjunction with
creating files are not included here, but they are described in
Chapter 9.
4.6.1 File-Creation Options
The following table lists the creation-time options that apply to specifying how an application uses a file:
The creation-time options that define file characteristics are described in the following chart:
Name of Option | Function |
---|---|
Block size |
Defines the number of bytes to be used in each block (unit of I/O)
throughout the life of this file. This file characteristic applies only
to magnetic tape files.
|
Bucket size |
Defines the number of blocks to be used in each bucket (unit of I/O)
throughout the life of this file. This file characteristic applies only
to relative and indexed files.
|
Date information |
Specifies the date and time values for file backup, file creation, file
expiration, and file revision. Can also set the number of file
revisions.
|
File organization |
Defines the file organization: sequential, relative, or indexed.
|
File protection |
Defines the file protection for the file being created.
|
Fixed-length control field size |
Defines the number of bytes in the fixed-length control field of a VFC
record.
|
Key characteristics |
Defines the characteristics of a key in an indexed file, including key
size, starting position, key type, bucket fill size, and key options.
|
Maximum record number |
Defines the maximum number of records for the file. Applies only to
relative files.
|
Maximum record size |
Defines the maximum record size for all records in the file. Maximum
record size refers to the size of all records in a file with
fixed-length records, the size of the largest record with
variable-length records, or the size of the variable-length portion of
VFC records. A value of 0 with variable-length records means that there
is no limit on the record size, except for magnetic tape files, for
which a value of 0 sets an effective maximum record size equal to the
block size minus 4. Variable-length records and VFC records must
conform to certain physical limitations (see the OpenVMS Record Management Services Reference Manual).
|
Record attributes |
Defines the following control information for each record:
|
Record format |
Defines the record format:
|
You can specify file-allocation and positioning options with either the FAB control block or an allocation XAB (XABALL) control block. Note that any value specified in the XABALL control block overrides the corresponding value in the FAB. The creation-time options described in the following table apply to file allocation and positioning:
Name of Option | Function |
---|---|
Allocation quantity |
Allocates the file or area using the number of blocks specified by this
value, rounded up to the nearest even multiple of the volume's cluster
size.
|
Areas |
Allocates the file using single or multiple areas. Applies only to
indexed files; sequential and relative files are always contained in a
single area. Indexed files can be placed in specific areas, for
example, to separate the data area from the index area.
|
Contiguous |
Allocates the file or area using a single extent. If the disk's
unallocated space does not permit the file to be allocated
contiguously, an error is returned.
|
Contiguous best try |
Attempts to allocate the file or area using a minimum number of
extents. If the file cannot be allocated contiguously, an error is not
returned.
|
Cylinder boundary |
Allocates the file or area at the beginning of a cylinder boundary.
|
Cylinder position |
Positions the file or area at the beginning of the specified cylinder
number.
|
Default extension |
Defines the minimum number of blocks for a file extension (extent) when
additional disk space is needed. For the Edit/FDL utility file
extension sizes, see Appendix A.
|
Hard positioning |
Directs OpenVMS RMS to return an error if the requested file or area
positioning or alignment cannot be performed.
|
Logical block
position |
Positions the file or area at the beginning of the specified logical
block.
|
Related file
position |
Positions the file or area as close as possible to a related file, at
the specified virtual block.
|
Virtual block
position |
Positions the file or area at the beginning of the specified virtual
block.
|
Truncate end of file |
Truncates a nonshared sequential file at its logical end to release the
space between the logical end of the file (end of file data) and the
physical end of the file (allocated file space) for other use.
|
Volume number |
Indicates the volume set where the file or area is placed when it is
created.
|
For the list of the run-time options that are common to creating and opening a file, see Chapter 9.
For more information about the options listed above, see Chapter 2. For more detailed information about the programming aspects of these options, refer to the OpenVMS Record Management Services Reference Manual.
Previous | Next | Contents | Index |
privacy and legal statement | ||
4506PRO_013.HTML |