VMS Help
CRTL, creat, Arguments

 *Conan The Librarian

 file_spec

    A null-terminated string containing any valid file specification.

 mode

    An unsigned value that specifies the file-protection mode. The
    compiler performs a bitwise AND operation on the mode and the
    complement of the current protection mode.

    You can construct modes by using the bitwise OR operator (|)  to
    create mode combinations. The modes are as follows:

    0400   OWNER:READ
    0200   OWNER:WRITE
    0100   OWNER:EXECUTE
    0040   GROUP:READ
    0020   GROUP:WRITE
    0010   GROUP:EXECUTE
    0004   WORLD:READ
    0002   WORLD:WRITE
    0001   WORLD:EXECUTE

    The system is given the same privileges as the owner. A WRITE
    privilege implies a DELETE privilege.

                                   NOTE

       To create files with OpenVMS RMS default protections using
       the UNIX system-call functions umask, mkdir, creat, and
       open, call mkdir, creat, and open with a file-protection
       mode argument of 0777 in a program that never specifically
       calls umask. These default protections include correctly
       establishing protections based on ACLs, previous versions of
       files, and so on.

       In programs that do vfork/exec calls, the new process image
       inherits whether umask has ever been called or not from
       the calling process image. The umask setting and whether
       the umask function has ever been called are both inherited
       attributes.

  . . .

    An optional argument list of character strings of the following
    form:

    "keyword = value", . . . ,"keyword = value"

    Or in the case of "acc" or "err", this form:

    "keyword"

    Here, keyword is an RMS field in the file access block (FAB) or
    record access block (RAB); value is valid for assignment to that
    field. Some fields permit you to specify more than one value. In
    these cases, the values are separated by commas.

    The RMS callback keywords "acc" and "err" are the only keywords
    that do not take values. Instead, they are followed by a pointer
    to the callback routine to be used, followed by a pointer to a
    user-specified value to be used as the first argument of the
    callback routine. For example, to set up an access callback
    routine called acc_callback whose first argument is a pointer
    to the integer variable first_arg in a call to open, you can use
    the following statement:

    open("file.dat", O_RDONLY, 0 ,"acc", acc_callback, &first_arg)

    The second and third arguments to the callback routine must be
    pointers to a FAB and RAB, respectively, and the routine must
    have a return type of int. If the callback returns a value less
    than 0, the open, creat, or fopen fails. The error callback can
    correct the error condition and return a status greater than
    or equal to 0 to continue the creat call. Assuming the previous
    open statement, the function prototype for acc_callback would be
    similar to the following statement:

    #include <rms.h>

    int acc_callback(int *first_arg, struct FAB *fab, struct RAB *rab);

    FAB and RAB are defined in the <rms.h> header file, and the
    actual pointers passed to the routine are pointers to the RAB
    and FAB being used to open the file file.dat.

    If an access callback routine is established, then it will be
    called in the open-type routine immediately before the call to
    the RMS function sys$create or sys$open. If an error callback
    routine is established and an error status is returned from the
    sys$create or sys$open function, then the callback routine will
    be invoked immediately after the status is checked and the error
    value is discovered.

                                   NOTE

       Any manipulation of the RAB or FAB in a callback function
       could lead to serious problems in later calls to the
       Compaq C RTL I/O functions.

    RMS Valid Keywords and Values describes the RMS keywords and
    values.

    Table REF-3 RMS Valid Keywords and Values

    Keyword        Value  Description

    "acc"          callbacAccess callback routine.
    "alq = n"      decimalAllocation quantity.
    "bls = n"      decimalBlock size.
    "ctx = bin"    string No translation of '\n' to the terminal. Use
                          this for writing binary data to files.
    "ctx=cvt"      string Negates a previous setting of "ctx=nocvt".
                          This is the default.
    "ctx =         string No conversion of Fortran carriage-control
    nocvt"                bytes.
    "ctx = rec"    string Force record mode access.
    "ctx = stm"    string Force stream mode access.
    "ctx=xplct"    string Causes records to be written only when
                          explicitly specified by a call to fflush,
                          close, or fclose.
    "deq = n"      decimalDefault extension quantity.
    "dna =         string Default file-name string.
    filespec"
    "err"          callbacError callback routine.
    "fop = val,           File-processing options:
    val , . . . "
                   ctg    Contiguous.
                   cbt    Contiguous-best-try.
                   dfw    Deferred write; only applicable to files
                          opened for shared access.
                   dlt    Delete file on close.
                   tef    Truncate at end-of-file.
                   cif    Create if nonexistent.
                   sup    Supersede.
                   scf    Submit as command file on close.
                   spl    Spool to system printer on close.
                   tmd    Temporary delete.
                   tmp    Temporary (no file directory).
                   nef    Not end-of-file.
                   rck    Read check compare operation.
                   wck    Write check compare operation.
                   mxv    Maximize version number.
                   rwo    Rewind file on open.
                   pos    Current position.
                   rwc    Rewind file on close.
                   sqo    File can only be processed in a sequential
                          manner.
    "fsz = n"      decimalFixed header size.
    "gbc = n"      decimalThe requested number of global buffers for
                          a file.
    "mbc = n"      decimalMultiblock count.
    "mbf = n"      decimalMultibuffer count.
    "mrs = n"      decimalMaximum record size.
    "pmt=usr-      string Prompts for terminal input. Any RMS input
    prmpt"                from a terminal device will be preceded by
                          "usr-prmpt" when this option and "rop=pmt"
                          are specified.
    "rat = val,           Record attributes:
    val . . . "
                   cr     Carriage-return control.
                   blk    Disallow records to span block boundaries.
                   ftn    FORTRAN print control.
                   none   Explicitly forces no carriage control.
                   prn    Print file format.
    "rfm = val"           Record format:
                   fix    Fixed-length record format.
                   stm    RMS stream record format.
                   stmlf  Stream format with line-feed terminator.
                   stmcr  Stream format with carriage-return
                          terminator.
                   var    Variable-length record format.
                   vfc    Variable-length record with fixed control.
                   udf    Undefined.
    "rop = val,           Record-processing operations:
    val . . . "
                   asy    Asynchronous I/O.
                   cco    Cancel Ctrl/O (used with Terminal I/O).
                   cvt    Capitalizes characters on a read from the
                          terminal.
                   eof    Positions the record stream to the end-of-
                          file for the connect operation only.
                   nlk    Do not lock record.
                   pmt    Enables use of the prompt specified by
                          "pmt=usr-prmpt" on input from the terminal.
                   pta    Eliminates any information in the type-
                          ahead buffer on a read from the terminal.
                   rea    Locks record for a read operation for this
                          process, while allowing other accessors to
                          read the record.
                   rlk    Locks record for write.
                   rne    Suppresses echoing of input data on the
                          screen as it is entered on the keyboard.
                   rnf    Indicates that Ctrl/U, Ctrl/R, and DELETE
                          are not to be considered control commands
                          on terminal input, but are to be passed to
                          the application program.
                   rrl    Reads regardless of lock.
                   syncstsReturns success status of RMS$_SYNCH if
                          the requested service completes its task
                          immediately.
                   tmo    Timeout I/O.
                   tpt    Allows put/write services using sequential
                          record access mode to occur at any point
                          in the file, truncating the file at that
                          point.
                   ulk    Prohibits RMS from automatically unlocking
                          records.
                   wat    Wait until record is available, if
                          currently locked by another stream.
                   rah    Read ahead.
                   wbh    Write behind.
    "rtv=n"        decimalThe number of retrieval pointers that RMS
                          has to maintain in memory (0 to 127,255).
    "shr = val,           File sharing options:
    val, . . . "
                   del    Allows users to delete.
                   get    Allows users to read.
                   mse    Allows multi-stream connects.
                   nil    Prohibits file sharing.
                   put    Allows users to write.
                   upd    Allows users to update.
                   upi    Allows one or more writers.
                   nql    No query locking (file level).
    "tmo = n"      decimalI/O timeout value.

    In addition to these options, any option that takes a key value
    (such as "fop" or "rat") can be negated by prefixing the value
    with "no". For example, specify "fop=notmp" to clear the "tmp"
    bit in the "fop" field.

                                  NOTES

       o  While these options provide much flexibility and
          functionality, many of them can also cause severe
          problems if not used correctly.

       o  You cannot share the default Compaq C for OpenVMS stream
          file I/O. If you wish to share files, you must specify
          "ctx=rec" to force record access mode. You must also
          specify the appropriate "shr" options depending on the
          type of access you want.

       o  If you intend to share a file opened for append, you must
          specify appropriate share and record-locking options, to
          allow other accessors to read the record. The reason for
          doing this: the file is positioned at end-of-file through
          reading records in a loop until end-of-file is reached.

    For more information on these options, see the OpenVMS Record
    Management Services Reference Manual manual.
  Close     Help