07/03/87 vfile_ Syntax: vfile_ path {-control_args} Function: This I/O module supports I/O from/to files in the storage system. All logical file types are supported. Arguments: path is the absolute or relative pathname of the file. Control Arguments: -extend specifies extension of the file if it already exists. -truncate, -tc specifies truncation of the file if it already exists. This control argument is only meaningful with openings for output and input_output. -old indicates that a new file is not to be created if an attempt is made to open a nonexisting file. -append in input_output openings, this control argument causes put_chars and write_record operations to add to end of file instead of truncating when the file position is not at end of file. An existing file is not truncated at open. -ssf restricts the file to a single segment. -share {N} allows a file to be open in more than one process at the same time, even though not all openings are for input. If specified, N is the maximum time in seconds that this process waits to perform an operation on the file. A value of -1 means the process may wait indefinitely. The default value of N is 1. -blocked {N} specifies attachment to a blocked file. If a nonempty file exists, N is ignored and may be omitted. Otherwise, N is used to set the maximum record size (bytes). -no_end permits positioning beyond end of file and then appending to the file without encountering an error. -dup_ok indicates that the creation of duplicate keys is permitted. -exclusive causes the exclusion of all shared references in other openings for the duration of this opening. The file must be opened for modification. This control argument conflicts with the -share control argument. -stationary causes newly created records to be of the stationary type, and forces vfile_ to maintain a reference count during the addition and removal of keys from such records. -transaction tcf_sw, -trans tcf_sw indicates that all operations on this switch are performed within transactions associated with a control file attached to the I/O switch named tcf_sw. -header {N} indicates that a header is expected in an existing file, or is to be created for a new file. N is the optional file identifier. -no_trunc indicates that a put_chars order into the middle of an unstructured file is permitted, and no truncation is to occur in such cases. Notes: The -extend, -append, and -no_trunc control arguments conflict; only one of these may be specified. List of control orders: The following orders are supported by the vfile_ I/O module. Control orders can also be performed using the io_call command. add_key delete_key error_status exclude file_status get_key max_rec_len min_block_size read_position reassign_key record_status seek_head select set_file_lock set_wait_time truncate Syntax of control orders from command level: io_call control switch_name order {optional_args} Arguments: order is any of the control orders supported by vfile_, or the short name of the control order, if it has one. optional_args are required for certain orders as indicated in the descriptions of the orders. Multiple Openings: It is possible to have two or more open I/O switches attached to the same file. The switches might be in the same process or in different processes. The classes of multiple openings are: 1. Openings for input without the -share control argument. 2. Openings for output or input_output without the -extend control argument. 3. Openings for update without the -share control argument and for output or input_output without the -share control argument and with the -extend control argument. 4. Openings with the -share control argument. Control order: add_key: creates a new index entry with a given key and record descriptor. The I/O switch must be open for direct_output, direct_update, keyed_sequential_output, or keyed_sequential_update. Current and next record positions are unchanged. The info_ptr argument must point to a structure of the following form: dcl 1 ak_info based (info_ptr), 2 flags aligned, 3 input_key bit(1) unal, 3 input_desc bit(1) unal, 3 mbz bit(34) unal, 2 descrip fixed bin(35), 2 key_len fixed bin, 2 key char(256 refer(ak_info.key_len)); Info structure: input_key (Input) indicates whether the new key is given in the info structure. input_desc (Input) indicates whether the new descriptor is given in the info structure. descrip (Input) is used only if the variable input_descrip is set to "1"b. The descriptor is stored into the index together with its associated key. key_len (Input) is the length of the key_string. key (Input) is used only if ak_info.input_key is set to "1"b. It defines the key to be added to the index with the appropriate record descriptor. mbz (Input) must be set to zero by the user. Command Level: io_call control switch_name ak {flags} key {descrip} Arguments: flags is a string of two bits corresponding to the switch settings for input_key and input_descrip. If one argument is given, it is interpreted as a key to be added to the current record, i.e., flags defaults to "10"b key is a character string that must be given if flags.input_key is set. descrip is an octal descriptor that must be supplied if flags.input_descrip is set. Possible error codes: error_table_$key_duplication error_table_$too_many_refs error_table_$no_key Control order: delete_key: The delete_key order deletes a specified index entry. The I/O switch must be open for direct_update or keyed_sequential_update. For this order, the info_ptr argument may be null, or it may point to a structure whose form is identical to the structure for the add_key order. Command Level: io_call control switch_name dk {args} Arguments: are the same as for add_key above (flags, key, descrip). Optionally, if no arguments are given, the order is equivalent to a delete_key order with no info structure (null info_ptr). Possible error codes: error_table_$last_reference error_table_$no_key error_table_$no_record Control order: error_status: returns information about the most recent attempt to position beyond either end of file in the current opening. The error_status order is accepted when the I/O switch is open and attached to an indexed or sequential file. The info_ptr argument must point to a structure of the following form: dcl 1 error_info based (info_ptr), 2 version fixed bin, 2 type fixed bin, 2 requested fixed bin(34), 2 received fixed bin(34); Info structure: version (Input) must be set to one by the user. type (Output) indicates the type of error that has occurred. 0 no errors 1 attempt to position beyond end or beginning of file. requested (Output) gives the value of the position skip argument that led to the most recent error. received (Output) gives the actual number of records successfully skipped before encountering end or beginning of file (negative if backwards skip). Command Level: io_call control switch_name er Control order: exclude: causes subsequent vfile_ operations to behave as if a subset of records and their keys are absent from an indexed file. The subset of interest may be specified in terms of ranges of keys, a list of record descriptors, or an identifying number for a previously formed subset. Various items of information that may be returned include a subset number, count of distinct descriptors, or an identifying number for a previously formed subset. However, status_only may not be requested via exclude. None of the file position designators (current and next record positions) are affected by this order. For this order, the info_ptr argument must point to one of the following structures: dcl 1 common_sl_info based (info_ptr), 2 flags aligned, 3 list_type fixed bin(3) unal, 3 status_only bit(1) unal, 3 output_descriptors bit(1) unal, 3 delete_old_subsets bit(1) unal, 3 mbz bit(11) unal, 3 version fixed bin(17) unal, 2 array_limit fixed bin(19), 2 subset_no fixed bin, 2 count fixed bin(34), 2 desc_arrayp ptr; where common_sl_info.desc_arrayp may point to the following structure-- dcl desc_array(1:common_sl_info.count) fixed bin(35) based (sl_info.desc_arrayp); or-- dcl 1 hi_sl_info based (info_ptr), 2 common like common_sl_info, 2 interval(1:sl_array_limit refer (hi_sl_info.array_limit)), 3 first_head, 4 length fixed bin, 4 kptr ptr unal, 3 last_head, 4 length fixed bin, 4 kptr ptr unal; or-- dcl 1 da_sl_info based (info_ptr), 2 common like common_sl_info, 2 desc_array(1:sl_array_limit refer(da_sl_info.array_limit)) fixed bin(35); dcl sl_array_limit fixed bin; dcl sl_info_version_0 static options(constant) internal fixed bin init(0); Structure elements: flags.list_type (Input) is a code indicating the manner in which this info structure specifies a subset: list_type=0 causes the reuse of a subset formed earlier in this opening, whose subset number is given in sl_info.subset_no. list_type=1 indicates that the subset is specified in terms of ranges of keys, or index intervals, using a structure like hi_sl_info. list_type=2 indicates that a list of descriptors with a structure like da_sl_info will be used to define the subset of interest. flags.status_only (Input) if set, status information will be returned for the current subset without making any subset changes. flags.output_descriptors (Input) if set, causes a sorted list of descriptors for the resulting subset to be output into the structure desc_array. flags.delete_old_subsets (Input) if set, and list_type=1 or 2, causes all existing subsets to be deleted. The current subset number must be 0. version (Input) is the version number for this info structure, which should be set to sl_info_version_0. array_limit (Input) gives the number of array elements in this info structure. subset_no (Input/Output) is an identifying number for the resulting subset, which permits its subsequent reuse in the same opening. count (Output) is the number of distinct record descriptors for the resulting current subset. desc_arrayp (Input/Output) is used only if the flag, output_descriptors, is set. If null, the required desc_array structure will be allocated in system_free_area, and its address will be returned in desc_arrayp. Otherwise, desc_arrayp is assumed to point to an already allocated structure of sufficient size, in which the sorted list of descriptors (with duplications removed) is returned. desc_array (Output) is an optionally returned list of record descriptors in the current subset, sorted and with duplications removed. first_head.length (Input) is the number of bytes in the key string that defines the starting head for this range of keys. first_head.kptr (Input) gives the location of the character string that specifies the first head of this index interval. last_head.length (Input) is the number of bytes in the key string that defines the end of this index interval. last_head.kptr (Input) gives the address of the last_head. da_sl_info.desc_array (Input) contains a list of record descriptors that define the subset of interest. Command Level: io_call control switch_name ex {args} Arguments: -brief, -bf suppresses the printing of the current subset number, descriptor count, and any error messages except the errors no_operation and bad_arg. -delete_old_subset, -dos deletes all existing subsets, before the new subset is created. This is incompatible with -list. The current subset number must be 0. -list, -ls prints the list of descriptors for the resulting subset. (-key, -head) interval_spec1 ({-or, -or_key} interval_spec2 ({-or, -or_key} interval_specN...)) specifies the subset in terms of ranges of keys where: interval_spec is of the form: first_key ({-thru, -to} last_key) -key indicates that the following interval is defined as those keys exactly matching the specified first_key . A last_key may not be given for this interval. -head indicates that the following interval starts with the first key whose head is greater than or equal to the specified first_key. This is the default. first_key is a character string that defines the starting point for a range, or interval of keys. last_key is a character string giving the head that defines the end of an index interval. Its default value is that of the first_key. -thru separates the first and last key specifications for a closed index interval. -to separates the first and last key specifications for an open index interval. -or delimits the start of another interval specification that is of the default type. -or_key, -ork delimits the start of an interval specification of the type that follows the -key control argument. {-or, -or_key} interval_spec1 (interval_spec2...) is the same as (-key, -head) above, except: -or if the first argument, it is taken as the default delimiter, and should be omitted between interval specifications following on this command line. -or_key, -ork if the first argument, it is taken as the default delimiter, and should be omitted between interval specifications following on this command line. {-desc} descriptor_list specifies the subset in terms of a list of record descriptors where: -desc, -ds indicates that the subset specification for this order is in terms of a list of descriptors that follows. descriptor_list is a list of octal record descriptors. {-reset} subset_number specifies the subset in terms of an identifying number for a previously formed subset where: -reset, -rs indicates that a previously formed subset is to be reused. If no subset_number follows, subset 0 is assumed. subset_number is the identifying subset number for the subset to be reused. Possible error codes: error_table_$no_record error_table_$no_operation error_table_$bad_arg Control order: file_status: returns various items of information about the file. The info_ptr argument must point to a structure identical to one of those required for the vfile_status_ subroutine. Command Level: io_call control switch_name fs Control order: get_key: returns both the key and the record descriptor for the specified index entry in a file opened for keyed_sequential_input or keyed_sequential_update. The info_ptr argument must point to a structure of the following form: dcl 1 gk_info based (info_ptr), 2 flags aligned, 3 input_key bit(1) unal, 3 input_desc bit(1) unal, 3 desc_code fixed bin(2) unal, 3 position_specification unal, 4 current bit(1) unal, 4 rel_type fixed bin(2) unal, 4 head_size bit(9) unal, 3 reset_pos bit(1) unal, 3 mbz bit(8) unal, 3 version fixed bin(8) unal, 2 descrip fixed bin(35), 2 key_len fixed bin(17), 2 key char(256 refer(gk_info.key_len)); dcl gk_info_version_0 fixed bin static init(0); Info structure: input_key (Input) if set to "1"b indicates that the key in this info structure is an input argument, which must bear the specified relationship to a key in the index. Otherwise the key of interest is located through either the next or the current position, according to the setting of flags.current. inputdesc (Input) if set to "1"b indicates that the desired index entry must have a descriptor that is equal to that given in this structure as an input argument. Otherwise the descriptor may either have any value or must be that of the current record, as specified by the setting of flags.desc_code. desc_code (Input) is used only if flags.input_desc="0"b to specify the desired descriptor portion of an index entry. If desc_code=0, then any descriptor is satisfactory. If desc_code=1, then the index entry of interest must be associated with the current record. No other desc_code settings are defined in this implementation. current (Input) applies only if flags.input_key="0"b. If set to "1"b, this indicates that the current index entry is the one of interest. This control argument conflicts with the setting of flags.input_desc to "1"b. Otherwise, if flags.current="0"b, the next record position is used as a starting point to find the desired index entry by scanning for the next occurrence of the desired descriptor, until end of file is encountered, or until the next key ceases to satisfy an immediately preceding successful seek_head order. rel_type (Input) applies only if flags.input_key="1"b. This indicates the desired relationship that the head of a key in the index must have with the key_string given in this info structure. Allowed values and their meanings are the same as those for the seek_head order. head_size (Input) applies only if flags.input_key="1"b, specifying the number of characters in the key_string contained in the desired head. reset_pos (Input) if set to "1"b, the state of the file position designators will be left unchanged by this order. Otherwise the current and next record positions will be left at the specified index entry. version (Input) is the version of this info structure, which should be set to gk_info_version_0. descrip (Input/Output) is the record locator portion of the specified index entry. If flags.input_desc="1"b, this is an input argument. Descriptors may also be input to the control orders add_key, delete_key, reassign_key, and record_status. key_len (Input/Output) is the length of the key for the specified index entry. key (Input/Output) if flags.input_key="1"b, this is an input argument that contains the desired key head. The value that is returned is the key of the specified index entry. mbz (Input) must be set to zero by the user. Command Level: io_call control switch_name gk {args} Arguments: -brief, -bf suppresses printing of the key, its descriptor, and any error messages except for the errors no_operation and bad_arg. key_specification is either of the form: (-head) key_string ({-rel_type} n) or: -cur_pos where: -head indicates that the following argument is to be taken as the key giving the head that must bear the specified relationship to the key of the desired index entry. key_string defines the keyportion of the index entry of interest. -rel_type, -rel applies only when a key_string is specified. This argument must be followed by a number that defines a valid relationship between the given key_string and the head of a key in the index. If not specified, -rel 0 is assumed, when applicable. n has the same meaning and set of permissible values as the corresponding argument in the seek_head order. -cur_pos indicates that the index entry of interest is at the current record position. This control argument conflicts with a key_string specification. record_specification is either: -current or: -desc descriptor where: -current, -cur specifies that the desired index entry belongs to the current record. -desc, -ds specifies that the desired index entry has a given descriptor, which must be the next argument. descriptor is an octal record descriptor, like those returned by this order. -reset, -rs causes the final position to be left unchanged. -substr_spec suppresses printing of the record's descriptor, and is of the form: -substr offset{,length} where: -substr specifies a substring of the key to be returned. offset is the starting character position of the key to be returned. length is the length of the part of the key to be returned. Possible error codes: error_table_$no_record error_table_$no_key error_table_$no_operation error_table_$bad_arg Control order: max_rec_len: returns the maximum record length (bytes) of the file. A new maximum length can be set by specifying a nonzero value for the second argument. The info_ptr argument must point to a structure of the following form: dcl 1 info based (info_ptr), 2 old_max_recl fixed bin(21), /*output*/ 2 new_max_recl fixed bin(21); /*input*/ Command Level: io_call control switch_name mx {arg} Possible_error_codes: error_table_$no_operation Control order: min_block_size: determines the minimum size for blocks of record space that are subsequently allocated by write_record or rewrite_record operations (documented in the iox_ subroutine). The specification remains in effect for the duration of the current opening or until another call to this order is issued. The I/O switch must be attached to an indexed file open for output or update. The info_ptr argument must point to a structure of the following form: dcl 1 min_blksz_info based (info_ptr), 2 min_residue fixed bin(21), 2 min_capacity fixed bin(21); Info structure: min_residue (Input) specifies the minimum unused capacity of a record block (bytes); i.e., the difference between the record's length and the maximum length it can attain without requiring reallocation. min_capacity (Input) specifies the minimum total record capacity (bytes); i.e., the maximum length that the record can attain without requiring reallocation. Command Level: io_call control switch_name mb {args} Arguments: min_res is an integer. The default is 0. min_cap is an integer. The default is 0. Control order: read_position: returns the ordinal position (0, 1, 2, ...) of the next record and that of the end of file, relative to the file base. The info_ptr argument must point to a structure of the following form: dcl 1 info based (info_ptr), 2 next_position fixed bin(34), /*output*/ 2 last_position fixed bin(34); /*output*/ Command Level: io_call control switch_name rp Control order: reassign_key: causes the descriptor portion of a specified index entry to be replaced with a given value. When the -stationary control argument is used, the reference counts of any stationary records involved are adjusted accordingly, as described for add_key and delete_key. The info_ptr argument must point to a structure of the following form: dcl 1 rk_info based (info_ptr), 2 flags aligned, 3 input_key bit(1) unal, 3 input_old_desc bit(1) unal, 3 input_new_desc bit(1) unal, 3 mbz bit(33) unal, 2 old_descrip fixed bin(35), 2 new_descrip fixed bin(35), 2 key_len fixed bin, 2 key char(256 refer(rk_info.key_len)); Info structure: input_key (Input) indicates whether the key is given in the info structure. input_old_desc (Input) indicates whether the old descriptor is given in the info structure. input_new_desc (Input) indicates whether the new descriptor is given in the info structure. old_descrip (Input) is used only if rk_info.input_old_desc equals "1"b. The entry that is reassigned is the first whose descriptor matches this value, among those index entries with the specified key. new_descrip (Input) is used only if rk_info.input_new_desc equals "1"b. This value replaces the old descriptor of the specified index entry. key_len (Input) same as in the add_key_info structure above. key (Input) if rk_info.input_key equals "1"b, this argument defines the key for which the index entry with the specified descriptor is to be reassigned. Command Level: io_call control switch_name rk flags {args} Arguments: flags is a string of three bits corresponding to the switch settings input_key, input_old_desc, input_new_desc. key is a character string that must be given if flags.input_key is set. old_descrip is an octal number required if flags.input_old_desc is set. new_descrip is an octal number required if flags.input_new_desc is set. Possible error codes: error_table_$last_reference error_table_$too_many_refs error_table_$no_key error_table_$no_record Control order: record_status: returns information about a specified record in an indexed, sequential, or blocked file, and optionally permits the user to manipulate the lock of the record or to allocate an empty record or both. The I/O switch must be open and attached to a structured file. The info_ptr argument must point to a structure of the following form: dcl 1 rs_info based (info_ptr) aligned, 2 version fixed bin, 2 flags aligned, 3 lock_sw bit(1) unal, 3 unlock_sw bit(1) unal, 3 create_sw bit(1) unal, 3 locate_sw bit(1) unal, 3 inc_ref_count bit(1) unal, 3 dec_ref_count bit(1) unal, 3 locate_pos_sw bit(1) unal, 3 mbz1 bit(29) unal, 2 record_length fixed bin(21), 2 max_rec_len fixed bin(21), 2 record_ptr ptr, 2 descriptor fixed bin(35), 2 ref_count fixed bin(17), 2 time_last_modified fixed bin(71), 2 modifier fixed bin(34), 2 block_ptr ptr unal, 2 last_image_modifier fixed bin(35), 2 mbz2(1) fixed bin; dcl rs_info_version_2 static internal fixed bin init(2); Info structure: version (Input) is provided for compatibility with possible future versions of this info structure. The user should set this argument to rs_info_version_2. lock_sw (Input) indicates whether an attempt is made to lock the specified record within the wait time limit given at attachment or subsequently set via the set_wait_time order (documented in the MPM Subroutines). Possible error codes: error_table_$invalid_lock_reset error_table_$locked_by_this_process error_table_$record_busy error_table_$no_room_for_lock error_table_$higher_inconsistency unlock_sw (Input) indicates whether an attempt is made to unlock the record. Possible error codes: error_table_$lock_not_locked error_table_$locked_by_other_process error_table_$no_room_for_lock create_sw (Input) indicates whether a new record is allocated using the record_len and max_rec_len arguments as input parameters. locate_sw (Input) indicates how the record of interest is located. Possible error codes: error_table_$no_record error_table_$no_key inc_ref_count (Input) increments the reference count of the record. Possible error codes: error_table_$no_room_for_lock error_table_$too_many_refs dec_ref_count (Input) if set to "1"b and the record is of the stationary type, this causes its reference count to be decremented. Possible error codes: error_table_$last_reference locate_pos_sw (Input) if set to "1"b, the current and next record positions are first set to the record whose ordinal position is given in rs_info.record_length. The file must be either blocked or sequential. If the file is sequential, then the descriptor of the record must also be supplied as an input argument. record_length (Input/Output) gives the record's length in bytes. If create_sw equals "1"b, this argument is input. max_rec_len (Input/Output) gives the maximum length that the record can attain (bytes) without requiring reallocation. record_ptr (Output) is a pointer to the first byte of the allocated record, or is set to null if no allocated record exists. descriptor (Input/Output) is a process-independent locator for the specified record. This value is used as an input argument when locate_sw equals "1"b and create_sw equals "0"b. The actual structure of each descriptor is as follows: dcl 1 descrip_struct based (addr(descriptor)) aligned, 2 comp_num fixed bin(17) unal, 2 word_offset bit(18) unal; Info structure: comp_num is the multisegment file component number of the segment containing the record. word_offset is the word offset of the block of storage containing the allocated record, relative to the base of its file component. A zero descriptor designates an unallocated (zero-length) record. Descriptors may also be arguments to the add_key, delete_key, reassign_key, and get_key orders. Note that at any given time within a single file each record is uniquely located by its descriptor, which remains valid only for the life of a single allocation. ref_count (Output) is returned only if the record is of the stationary type, in which case this is the reference count of the record. When the -stationary control argument is used, vfile_ automatically maintains the reference counts of stationary records to reflect the number of keys on each record. time_last_modified (Output) contains a standard system clock time for the most recent modification made to the current record. Applies only for stationary records. modifier (Input/Output) is the identifying number of a transaction on whose behalf the record was locked. block_ptr (Output) points to the start of the allocated block for the record. last_image_modifier (Output) is the transaction number for the most recent modification of this record. If zero, then the most recent modification was not made under the -transaction option. mbz1, mbz2 (Input) must be set to zero by the user. Notes: Extreme caution must be exercised when using the orders that take a descriptor as an input argument, especially in a shared environment. The user is responsible for ensuring that previously obtained descriptors and pointers are still valid when they are used. Command Level: io_call control switch_name rs {args} Arguments: -brief, -bf suppresses the printing of status information. flags, -pos is a string of seven bits, corresponding to the switch settings for lock_sw, unlock_sw, create_sw, locate_sw, inc_ref_count, dec_ref_count, and locate_pos_sw. This argument defaults to "0000000"b if not given. The setting of locate_pos_sw may also be expressed by the use of the -pos control argument as an abbreviation for the corresponding specification of flags. recl is an integer that must be given when flags.create_sw is set. This determines the new record length. maxl is an optionally supplied integer that may be given with recl to specify a maximum record length. This defaults to recl if not given. descrip is an octal record descriptor required when flags.locate_sw is set and flags.create_sw is not set. pos_spec is a number or pair of numbers specifying the record's ordinal position. This specification is required and applies only when flags.locate_pos_sw is set. Control order: seek_head: locates the first record with a key whose head has the specified relation with the given search_key. The next record position and the current record position are set to the record. The info_ptr argument must point to a structure of the following form: dcl 1 info based (info_ptr), 2 relation_type fixed bin, 2 n fixed bin, 2 search_key char (256 refer (info.n)); Command Level: io_call control switch_name sh {args} search_key Arguments: -brief, -bf suppresses any error message except the no_operation and bad_arg errors. rel_type is a single digit, 0, 1, or 2. If omitted, the last argument is interpreted as a search_key, with a default rel_type of 0. search_key is any character string. Possible error codes: error_table_$no_record Control order: select: causes subsequent vfile_ operations to behave as if a subset of all the records and their keys were present in an file. Use is the same as that described for the exclude order, except that status_only may be requested via select. Command Level: io_call control switch_name sl {args} Arguments: are the same as those described for the exclude order. Possible error codes: error_table_$no_record Control order: set_file_lock: causes the file to be locked (if possible within the wait_time limit) or unlocked, depending on whether the user has set the first bit of info_ptr->set_lock_flag to "1"b or "0"b, respectively. It is accepted when the I/O switch is open for output or update and attached to an indexed file with the -share control argument. The info_ptr argument must point to a variable of the following form: dcl set_lock_flag bit(2) aligned based (info_ptr); Command Level: io_call control switch_name sf set_lock_flag Arguments: set_lock_flag is a string of two bits. Possible error codes: error_table_$locked_by_this_process error_table_$lock_not_locked error_table_$file_busy Control order: set_wait_time: specifies a limit on the time that the user's process waits to perform an order when the file is locked by another process. The interpretation of new_wait_time is the same as that described earlier for the argument N used with the -share control argument. The info_ptr argument must point to one of the following structures: dcl new_wait_time float based (info_ptr); or: dcl 1 wt_info based (info_ptr), 2 version float, /*Input*/ 2 collection_delay_time float; /*Input*/ If wt_info.version equals -2 (-2.0e0), the second argument is taken as a new collection_delay_time, in seconds. Initially, in any opening, a default value of 0 applies. Command Level: io_call control switch_name sw {arg} new_wait_time Arguments: -collection_delay_time, -cdtm specifies the amount of time that must elapse after deleting a stationary record before its storage can be completely recovered. new_wait_time is a floating point number. If -cdtm is specified, new_wait_time is taken as the new collection delay time. Control order: truncate: truncates the file at the next record (byte for unstructured files). Command Level: io_call control switch_name tc Possible error codes: error_table_$no_record ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved