{
{    The purpose of this request is to construct the
{ FMT$MASS_STORAGE_REQUEST_INFO data structure.  The mass storage information
{ supplied as parameters are placed in the data structure and validation
{ information is generated using information supplied and information obtained
{ about the job issuing the request.
{
{
{       RMP$BUILD_MASS_STORAGE_INFO (ALLOCATION_SIZE, ESTIMATED_FILE_SIZE,
{             TRANSFER_SIZE, FILE_CLASS, INITIAL_VOLUME,
{             VOLUME_OVERFLOW_ALLOWED, RING_OF_CALLER,
{             P_MASS_STORAGE_REQUEST_INFO, STATUS);
{
{ ALLOCATION_SIZE: (input)  This parameter specifies the amount of contiguous
{       mass storage space, in bytes, which is to be allocated to the file each
{       time additional space is needed.  The system will use the value of this
{       parameter as a guide in selecting the quantum of allocation for this
{       file.  The actual allocation size for the file may be more or less than
{       the specified value due to the characteristics of the device determined
{       by the other parameters of this request.
{
{       The value rmc$unspecified_allocation_size will cause the allocation
{       size to be determined by the ESTIMATED_FILE_SIZE parameter.
{
{ ESTIMATED_FILE_SIZE: (input)  This parameter specifies the likely size of the
{       file in bytes.  This information is used to select the allocation size
{       which would minimize the amount of mass storage space assigned to the
{       file should it ultimately reach the estimated size.
{
{       The value rmc$unspecified_file_size will cause the allocation size to
{       be determined by the ALLOCATION_SIZE parameter.
{
{ TRANSER_SIZE: (input)  This parameter specifies the amount of data (in bytes)
{       that are read from the file's mass storage device whenever the system
{       detects that the file can be read at the device rate (the streaming
{       rate).  The specified value is automatically rounded up to the nearest
{       power of 2.
{
{       The value rmc$unspecified_tranfer_size will cause the transfer size to
{       be determined by the type of mass storage device the file resides on.
{
{ FILE_CLASS: (input)  This parameter specifies the class of the file which is
{       to be assigned.  NOS/VE supports up to 26 classes of files.  Each class
{       is identified by an alphabetic character (upper and lower cases are
{       equivalent).  NOS/VE will select a volume which belongs to the class
{       specified by this parameter; abnormal status will be returned if no
{       candidate volume belongs to the specified class.
{
{       Only the user $SYSTEM may specify the following values:
{
{       rmc$msc_system_swap_files (C) rmc$msc_system_catalogs (J)
{       rmc$msc_system_permanent_files (K) rmc$msc_user_catalogs (L)
{       rmc$msc_system_critical_files (Q)
{
{       A task executing in rings 6..4 may specify any file class except C, J,
{       K, L, and Q.
{
{       A task executing in rings 13..7 may specify rmc$user_permanent_files
{       (M) for a permanent file and rmc$user_temporary_files (N) for a
{       temporary file.
{
{       The value rmc$unspecified_file_class causes NOS/VE to place the file on
{       the volume specified by the INITIAL_VOLUME parameter.
{
{       If the value rmc$unspecified_vsn is used for the INITIAL_VOLUME
{       parameter and rmc$unspecified_file_class is also specified for this
{       parameter, NOS/VE will assign the file to a volume that belongs to the
{       class that is appropriate for the file and the job in which the file is
{       created.  Refer to the System Performance and Maintenance manual for
{       information about the NOS/VE default file assignments in effect for
{       this release.
{
{       Specification of any non-alphabetic character will cause abnormal
{       status to be returned.
{
{ INITIAL_VOLUME: (input)  This parameter specifies the identification of a
{       specific mass storage volume to which this file is to be assigned.
{
{       If volume overflow is not allowed, the entire file will reside on this
{       volume; otherwise, this volume will be the initial volume assigned to
{       the file.  Refer to the VOLUME_OVERFLOW_ALLOWED parameter.
{
{       If the requested volume has no space available or the volume does not
{       exist in the active configuration, this request will be rejected.
{
{       If FILE_CLASS is given a value other than rmc$unspecified_file_class,
{       then the volume specified by this parameter must belong to the file
{       class specified or the request will be rejected.
{
{       The user $SYSTEM may use this parameter to place a file on any volume
{       in the configuration; however, rmc$unspecified_file_class will need to
{       be specified for the FILE_CLASS parameter.
{
{       A user executing in the maintenance job class may use this parameter to
{       place a temporary file on any volume in the configuration, regardless
{       of whether or not the volume belongs to the temporary file class (N);
{       however, rmc$unspecified_file_class will need to be specified for the
{       FILE_CLASS parameter.
{
{       A task executing in rings 6..4 may specify any volume that belongs to
{       one of the following classes:  B, D..I, M..P, R..Z.
{
{       A task executing in rings 13..7 may specify any volume that belongs to
{       class M for a permanent file or class N for a temporary file.
{
{       The value rmc$unspecified_vsn will cause the consideration of all
{       candidate volumes belonging to the file class specified (or defaulted).
{
{ VOLUME_OVERFLOW_ALLOWED: (input)  This parameter specifies whether or not the
{       file can be assigned to more than one volume.  If TRUE is specified,
{       the file may span any volume subject to validation and FILE_CLASS
{       constraints.  If FALSE is specified, the file will be confined to the
{       initial volume to which it is assigned.  Specifying no volume overflow
{       would typically be used in conjunction with requesting a specific mass
{       storage volume; this is generally done for fault tolerance reasons.
{       For example, all the files which are required for a particular feature
{       or product (e.g.  those required for system maintenance or operation)
{       must reside on the same volume (usually the system deadstart device) to
{       ensure their availability in case of a failure on any of the other
{       volumes.  Of course, copies of the files may be located on a second
{       volume (preferably on a different hardware path) to maximize
{       availability.
{
{       Specification of FALSE is permitted only in a job which has system
{       administrative privilege or maintenance privilege.
{
{ RING_OF_CALLER: (input)  This parameter specifies the execution ring of the
{       task which initiated this request.
{
{ P_MASS_STORAGE_REQUEST_INFO: (output)  This parameter specifies the location
{       of the variable to initialize with the mass storage information and
{       validation information.
{
{ STATUS: (output) This parameter specifies the request status.
{
