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