COMPILATION LISTING OF SEGMENT check_file_version Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/16/90 1518.0 mdt Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 16 17 /****^ HISTORY COMMENTS: 18* 1) change(90-10-15,Zimmerman), approve(90-10-15,MCR8216), 19* audit(90-10-15,Zwick), install(90-10-16,MR12.4-1043): 20* Increase maximum number of components in MSF to 1250. 21* END HISTORY COMMENTS */ 22 23 24 25 26 check_file_version: 27 proc (indx_cb_ptr, code); 28 f_b_ptr = file_base_ptr; 29 fs_ptr = file_state_ptr; 30 code = 0; 31 if file_version = file_version_MR2 /* original version */ 32 then do; 33 old_file_state_ptr = addr (old_file_state_blocks (file_state)); 34 if old_f_s_block.file_action ^= 0 /* too bad--no crashproofing */ 35 then do; 36 code = error_table_$bad_file; /* nothing can be done */ 37 call sub_err_ (code, "vfile_", "c", null, code, 38 "Old file is inconsistent because of interrupted update--this version does not support recovery from interruptions." 39 ); 40 end; 41 end; 42 else if file_version = file_version_MR3 /* MR3.0 version */ 43 then do; 44 old_file_state_ptr = addr (v20_fs_blocks (file_state)); 45 if v20_fsb.file_action ^= 0 /* operation in progress */ 46 then do; 47 code = error_table_$unimplemented_version; 48 /* user must adjust with 49* version 20 vfile_ before transformation can occur */ 50 call sub_err_ (code, "vfile_", "c", null, code, 51 "Operation in progress--this file must be adjusted with the MR3 version of vfile_."); 52 end; 53 end; 54 else if file_version = file_version_MR6 55 then if (file_state_block.file_action = 0) | (file_state_block.file_action = read_exclude) 56 then ; /* no operations in progress */ 57 else do; /* complain--must adjust with old version vfile_ first */ 58 code = error_table_$unimplemented_version; 59 call sub_err_ (code, "vfile_", "c", null, code, 60 "Operation in progress--this file must be adjusted with the MR6 version of vfile_."); 61 end; 62 else do; 63 code = error_table_$bad_file; /* unrecognizable version */ 64 call sub_err_ (code, "vfile_", "c", null, code, "Unrecognizable indexed file version number."); 65 end; 66 if (code = 0) & ^is_read_only 67 then do; /* make the version transformation */ 68 if (program_version > 11) & (program_version < 23) 69 then do; 70 code = error_table_$unimplemented_version; 71 call sub_err_ (code, "vfile_", "c", null, code, 72 "Old version file must be adjusted with MR6 version of vfile_ in order to fix bad header statistics caused by old bugs." 73 ); 74 return; 75 end; 76 if file_version = file_version_MR2 77 then do; 78 call move_comp_info; 79 call move_file_statis; 80 call move_index_statis; 81 end; 82 else if file_version = file_version_MR3 83 then call move_v20_statis; 84 file_version = file_version_MR6; 85 call rebuild_comp_array; 86 file_version = current_file_version; 87 end; 88 return; /* end of file version update routine */ 89 90 rebuild_comp_array: 91 proc; /* repacks items in comp_array */ 92 comp_info_ptr = addr (file_base.max_comp_num); 93 94 do while (y_count <= 2 * true_max_comp_num); /* loop through array */ 95 i = divide (y_count, 2, 17, 0); /* current element number */ 96 if 2 * i = y_count /* first copy old values into safe location */ 97 then do; 98 file_base.old_init_offset = comp_info.init_offset (i); 99 file_base.former_rover_comp_num = comp_info.comp_link (i); 100 /* these are just convenient header slots for temporary use */ 101 end; 102 else do; /* now copy from temp back into comp_array in new format */ 103 comp_table.init_offset (i) = file_base.old_init_offset; 104 comp_table.comp_link (i) = file_base.former_rover_comp_num; 105 end; 106 y_count = y_count + 1; 107 end; /* note each cycle is repeatable */ 108 109 dcl i fixed; 110 end rebuild_comp_array; 111 112 move_comp_info: 113 proc; 114 comp_info_ptr = addr (old_version_comp_info); 115 116 do while (x_count <= true_max_comp_num); /* if this loop is interrupted, x_count will keep track of progress */ 117 n = true_max_comp_num - x_count; 118 addr (file_base.max_comp_num) -> comp_info.comp_table (n) = comp_info.comp_table (n); 119 x_count = x_count + 1; 120 end; 121 122 file_base.first_free_comp_num = 0; 123 file_base.last_comp_num = comp_info.last_comp_num; 124 file_base.max_comp_num = true_max_comp_num; 125 end move_comp_info; 126 127 move_file_statis: 128 proc; 129 file_state_block.file_action = 0; 130 file_state_block.number_of_records = old_f_s_block.number_of_records; 131 file_state_block.total_key_length = old_f_s_block.total_key_length; 132 file_state_block.total_record_length = old_f_s_block.total_record_length; 133 record_state_ptr = addr (record_state_blocks (record_state)); 134 file_state_block.number_of_allocated_records = record_state_block.number_of_allocated_records; 135 file_state_block.number_of_free_blocks = record_state_block.number_of_free_blocks; 136 call set_default_stats; 137 end move_file_statis; 138 139 move_index_statis: 140 proc; 141 index_state = 0; 142 index_state_ptr = addr (index_state_blocks (0)); 143 is_ptr = index_state_ptr; 144 number_of_nodes = old_version_number_of_nodes; 145 free_node_designator = old_version_free_node_designator; 146 index_tail_comp_num = old_version_index_tail_comp_num; 147 index_height = old_version_index_height; 148 n = node_head_length + branch_and_descrip_length + 1; 149 new_key_pos = n; /* usually set at file creation */ 150 addr (index_state_blocks (1)) -> new_key_pos = n; 151 end move_index_statis; 152 153 move_v20_statis: 154 proc; 155 file_state_block.file_action = 0; 156 file_state_block.number_of_records = v20_fsb.number_of_records; 157 file_state_block.total_key_length = v20_fsb.total_key_length; 158 file_state_block.total_record_length = v20_fsb.total_record_length; 159 file_state_block.number_of_allocated_records = v20_fsb.number_of_allocated_records; 160 file_state_block.number_of_free_blocks = v20_fsb.number_of_free_blocks; 161 call set_default_stats; 162 end move_v20_statis; 163 164 set_default_stats: 165 proc; /* used with old version indexed files */ 166 file_state_block.number_of_keys = file_state_block.number_of_records; 167 file_state_block.duplicate_keys = 0; 168 file_state_block.dup_key_bytes = 0; 169 end set_default_stats; 170 171 dcl pos_ptr ptr; /* not used by this proc */ 172 dcl code fixed (35); 1 1 /* Include File of error codes used by vfile_ and related programs */ 1 2 /* Created by M. Asherman 5/20/78 */ 1 3 dcl (error_table_$no_key, error_table_$file_busy, error_table_$segknown, error_table_$not_open, error_table_$noentry, 1 4 error_table_$no_file, error_table_$no_record, error_table_$not_detached, error_table_$not_closed, 1 5 error_table_$noarg, error_table_$too_many_args, error_table_$bad_file, error_table_$end_of_info, 1 6 error_table_$invalid_lock_reset, error_table_$lock_wait_time_exceeded, error_table_$last_reference, 1 7 error_table_$higher_inconsistency, error_table_$record_busy, error_table_$no_room_for_lock, 1 8 error_table_$lock_is_invalid, error_table_$unimplemented_version, error_table_$lock_not_locked, 1 9 error_table_$key_duplication, error_table_$bad_processid, error_table_$bad_arg, 1 10 error_table_$locked_by_this_process, error_table_$no_operation, error_table_$asynch_insertion, 1 11 error_table_$asynch_change, error_table_$too_many_refs, error_table_$asynch_deletion, error_table_$long_record, 1 12 error_table_$file_is_full, error_table_$key_order) 1 13 external fixed (35); 1 14 /* end of vfile_ error code include file */ 173 174 dcl current_file_version static fixed init (40); 175 dcl file_version_MR2 static internal options (constant) init (10); 176 dcl file_version_MR3 static internal options (constant) init (20); 177 dcl file_version_MR6 static internal options (constant) init (30); 178 dcl node_head_length static fixed init (16); 179 dcl branch_and_descrip_length 180 static fixed init (12); 181 dcl n fixed; 182 dcl 1 v20_file_header based (f_b_ptr), /* MR3.0 version header */ 183 2 words (62) fixed, 184 2 v20_fs_blocks (0:1), /* file state blocks */ 185 3 words (7) fixed; 186 dcl 1 v20_fsb based (old_file_state_ptr), 187 /* MR3.0 file state block */ 188 2 file_action fixed, 189 2 file_substate fixed, 190 2 number_of_records fixed (34), 191 2 total_key_length fixed (34), 192 2 total_record_length 193 fixed (34), 194 2 number_of_allocated_records 195 fixed (34), 196 2 number_of_free_blocks 197 fixed (34); 198 dcl record_state_ptr ptr; 199 dcl 1 record_state_block based (record_state_ptr), 200 2 words (2) fixed, 201 2 number_of_free_blocks 202 fixed (34), 203 2 number_of_allocated_records 204 fixed (34); 205 206 dcl old_file_state_ptr ptr; 207 dcl 1 old_f_s_block based (old_file_state_ptr), 208 2 file_action fixed, 209 2 word fixed, 210 2 number_of_records fixed (34), 211 2 total_key_length fixed (34), 212 2 total_record_length 213 fixed (34); 214 215 dcl comp_info_ptr ptr; 216 dcl 1 comp_info based (comp_info_ptr), 217 2 max_comp_num fixed, 218 2 last_comp_num fixed, 219 2 first_free_comp_num /* not supported--used for converting versions */, 220 2 comp_table (0:true_max_comp_num) aligned, 221 3 seg_limit fixed (19), 222 3 comp_link fixed (15) unal, 223 3 init_offset fixed (18) unal; 224 2 1 /* the control block */ 2 2 dcl indx_cb_ptr ptr; 2 3 dcl 1 indx_cb based (indx_cb_ptr), /* except as noted, init by create cb */ 2 4 2 fcb_ptr ptr, 2 5 2 file_base_ptr ptr, 2 6 2 node_length fixed, /* number of bytes in node, init by create_seg_ptrs */ 2 7 2 half_node_length fixed, /* init by create_seg_ptrs */ 2 8 2 max_record_size fixed (21), /* init by create_seg_ptrs */ 2 9 2 seg_ptr_array_ptr ptr, /* init by create seg_ptrs */ 2 10 2 seg_ptr_array_limit 2 11 fixed, /* init by create seg_ptrs */ 2 12 2 mode fixed, 2 13 2 is_sequential_open bit (1) aligned, 2 14 2 is_read_only bit (1) aligned, 2 15 2 is_ks_out bit (1) aligned, /* position info */ 2 16 2 position_stack_ptr ptr, /* init by create_position stack */ 2 17 2 position_stack_height 2 18 fixed, /* init by create position stack */ 2 19 2 root_position_ptr ptr, /* init by create_position_stack */ 2 20 2 file_position_ptr ptr, /* not init */ 2 21 2 change_position_ptr 2 22 ptr, /* not init */ 2 23 /* auxiliary variables */ 2 24 2 rover_seg_ptr ptr, /* init by create_seg_ptrs */ 2 25 2 index_state_ptr ptr, /* init by create_seg_ptrs */ 2 26 2 old_index_height fixed, 2 27 2 old_last_comp_num fixed, 2 28 2 last_change_count fixed (35), 2 29 2 wait_time fixed (35), 2 30 2 old_rover_comp_num fixed, 2 31 2 file_state_ptr ptr, 2 32 2 o_s_ptr ptr, 2 33 2 repeating bit (1) aligned, 2 34 2 next_substate fixed, 2 35 2 file_program_version 2 36 fixed, /* used for record_lock compatibility */ 2 37 2 leave_locked bit (1) aligned, /* indicates use of set_file_lock order */ 2 38 2 dup_ok bit (1) aligned, /* if set, duplicate keys may occur */ 2 39 2 read_exclu bit (1) aligned, /* set when lock excludes readers */ 2 40 2 pos_incorrect bit (1) aligned, /* indicates index position is not current */ 2 41 2 saved_lock_copy bit (36) aligned, /* copy of process lock_id */ 2 42 2 min_key_len fixed, /* non-zero only in old programs */ 2 43 2 stat bit (1) aligned, /* causes write_record to create stationary records */ 2 44 2 current_subset fixed (34), /* used with select order */ 2 45 2 last_subset fixed (34), 2 46 2 subset_count fixed (34), /* count of descriptors in current subset */ 2 47 2 temp_iocbp ptr, /* temporary file used to implement select order */ 2 48 2 trans bit (1) aligned, /* set if -transaction attachment */ 2 49 2 transaction_code fixed (35), /* set for control switch only */ 2 50 2 tcfp ptr, /* ptr to iocb for transaction control switch--if applicable */ 2 51 2 reflp ptr, /* ptr to ref list file, set only in transaction control file */ 2 52 2 uid bit (36) aligned, /* used under -transaction */ 2 53 2 collection_delay_time 2 54 fixed (35), /* microseconds to wait before garbage removal */ 2 55 2 min_res fixed (21), /* for min_block_size order */ 2 56 2 min_cap fixed (21), /* also for min_block_size order */ 2 57 2 subset_selected bit (2) aligned, /* first bit for select, second 2 58* bit is for exclude */ 2 59 2 error, /* for error_status order */ 2 60 3 type fixed, /* only one error type supported now */ 2 61 3 requested fixed (34), /* skip arg given to position entry */ 2 62 3 received fixed (34), /* actual successful skips */ 2 63 2 state_vars, 2 64 3 fixed_state_part, 2 65 4 shared bit (1) aligned, 2 66 4 next_record_position 2 67 fixed, /* 0, 1, or 2 */ 2 68 4 current_record_is_valid 2 69 bit (1) aligned, 2 70 4 ready_to_write bit (1) aligned, 2 71 4 at_eof_or_bof, 2 72 5 at_bof bit (1) unal, 2 73 5 at_eof bit (1) unal, 2 74 5 pad bit (36) unal, 2 75 4 outside_index bit (1) aligned, /* set after deleting current key or after use of record_status with locate switch */ 2 76 4 current_descrip 2 77 fixed (35), /* needed when outside index */ 2 78 4 saved_descrip fixed (35), /* for restoring index position */ 2 79 4 skip_state fixed, /* controls scanning of deleted entries */ 2 80 3 new_key char (256) var; 2 81 2 82 dcl current_t_code fixed (35) based (addr (indx_cb.tcfp -> iocb.open_data_ptr -> indx_cb.transaction_code)); 2 83 2 84 /* component locator structures */ 2 85 dcl seg_ptr_array (0:seg_ptr_array_limit) ptr based (seg_ptr_array_ptr); 2 86 dcl seg_ptr ptr; 2 87 dcl seg_array (0:262143) fixed (19) based (seg_ptr) aligned; 2 88 dcl designator fixed (35); 2 89 dcl 1 ind_des_structure based, 2 90 2 comp fixed (17) unal, 2 91 2 offset bit (18) unal; 2 92 dcl 1 stat_structure based, 2 93 2 pad bit (26) unal, 2 94 2 ref_count_after fixed (16) unsigned unal, 2 95 2 ind_comp fixed (13) unal, 2 96 2 ref_count fixed (16) unsigned unal, 2 97 2 record_lock bit (36) aligned, 2 98 2 modifier fixed (35), 2 99 2 time_stamp_words fixed (71) aligned, 2 100 2 prev_mod fixed (35), 2 101 2 record char (1000000) var; 2 102 dcl 1 ind_structure based, 2 103 2 pad bit (26) unal, 2 104 2 ref_count_after fixed (16) unsigned unal, 2 105 2 ind_comp fixed (13) unal, 2 106 2 ref_count fixed (16) unsigned unal, 2 107 2 record_lock bit (36) aligned, 2 108 2 modifier fixed (35), 2 109 2 time_stamp_words fixed (71) aligned, 2 110 2 prev_mod fixed (35), 2 111 2 prev_desc fixed (35); 2 112 dcl 1 time_stamp_structure based, 2 113 2 ind_offset bit (18) unal, 2 114 2 time_last_modified fixed (54) unsigned unal; 2 115 dcl 1 record_block_structure 2 116 based, 2 117 2 reserved aligned, /* data used by change_record_list */ 2 118 3 pad bit (2) unal, 2 119 3 block_size fixed (19) unal, 2 120 3 lock_flag bit (1) unal, /* record lock flag */ 2 121 3 stationary bit (1) unal, 2 122 3 indirect bit (1) unal, 2 123 3 after_applies bit (1) unal, 2 124 3 mbz bit (10) unal, 2 125 2 block_tail, /* structure varies with record type */ 2 126 3 record char (1000000) var; /* non-stat record location */ 2 127 dcl 1 designator_struct aligned based (addr (designator)), 2 128 2 comp_num fixed (17) unal, 2 129 2 offset bit (18) unal; 2 130 2 131 /* position and node templates */ 2 132 dcl 1 position_frame based (pos_ptr), /* ref8 */ 2 133 2 parent_position_ptr 2 134 ptr, 2 135 2 son_position_ptr ptr, 2 136 2 node_ptr ptr, 2 137 2 node fixed (35), 2 138 2 branch_num fixed; 2 139 dcl 1 node_block based (node_ptr), /* ref9) */ 2 140 2 last_branch_num fixed, 2 141 2 low_key_pos fixed, 2 142 2 scat_space fixed, 2 143 2 branch_and_descrip (1 refer (node_block.last_branch_num)), 2 144 /* in last element only branch is used */ 2 145 3 branch fixed (35), 2 146 3 descrip, 2 147 4 key_descrip, 2 148 5 key_pos fixed (17) unal, 2 149 5 key_length fixed (17) unal, 2 150 4 record_descrip, 2 151 5 record_designator 2 152 fixed (35); 2 153 dcl keys char (4096 /* 4*node_size */) based (node_ptr); 2 154 2 155 /* file base and states */ 2 156 dcl f_b_ptr ptr; 2 157 dcl 1 file_base based (f_b_ptr), /* ref10 */ 2 158 2 common_header, 2 159 3 file_code fixed (35), 2 160 3 lock_word bit (36) aligned, 2 161 3 words (2) fixed, 2 162 2 file_version fixed, 2 163 2 program_version fixed, 2 164 2 node_size fixed (19), 2 165 2 minimum_key_length fixed, 2 166 2 minimum_block_size fixed (19), 2 167 2 max_seg_limit fixed (19), 2 168 2 root_node_block, 2 169 3 last_branch_num_root 2 170 fixed, /* =1 */ 2 171 3 word fixed, 2 172 3 reserved fixed, 2 173 3 only_branch_in_root 2 174 fixed (35), 2 175 2 file_state fixed, 2 176 2 change_count fixed (34), /* record state info, ref12 */ 2 177 2 old_number_of_free_blocks 2 178 fixed (34), 2 179 2 prior_block_size fixed (19), 2 180 2 old_record_length fixed (21), 2 181 2 need_new_seg bit (1) aligned, 2 182 2 old_residue fixed, 2 183 2 new_last_comp_num fixed, 2 184 2 old_prev_free_block 2 185 fixed (18), 2 186 2 old_next_free_block 2 187 fixed (18), 2 188 2 new_record_length fixed (21), 2 189 2 old_record_designator 2 190 fixed (35), 2 191 2 prec_block_was_free 2 192 bit (1) aligned, 2 193 2 next_block_was_free 2 194 bit (1) aligned, 2 195 2 former_block_size fixed (19), 2 196 2 old_init_offset fixed (18), 2 197 2 old_block_size fixed (19), 2 198 2 prev_block_size fixed (19), 2 199 2 former_rover_comp_num 2 200 fixed, 2 201 2 former_rover_offset 2 202 fixed (18), 2 203 2 next_block_size fixed (19), 2 204 2 next_prev_free_block 2 205 fixed (18), 2 206 2 next_next_free_block 2 207 fixed (18), 2 208 2 saved_ks_out bit (1) aligned, 2 209 2 new_descriptor fixed (35), 2 210 2 old_last_branch_num 2 211 fixed, 2 212 2 old_low_key_pos fixed, 2 213 2 old_scat_space fixed, 2 214 2 old_key_pos fixed, 2 215 2 rover_comp_num fixed, 2 216 2 rover_offset fixed (18), 2 217 2 old_key_length fixed, 2 218 2 b_space fixed, 2 219 2 last_b_num fixed, 2 220 2 count fixed, 2 221 2 first_count fixed, 2 222 2 second_count fixed, 2 223 2 split_num fixed, 2 224 2 must_compact_dest bit (1) aligned, 2 225 2 first_branch fixed (35), 2 226 2 min_source_key_pos fixed, 2 227 2 min_dest_key_pos fixed, 2 228 2 new_low_key_pos fixed, 2 229 2 new_scat_space fixed, 2 230 2 old_seg_lim fixed (19), 2 231 2 old_number_of_free_nodes 2 232 fixed, 2 233 2 old_next_node_designator 2 234 fixed (35), 2 235 2 new_index_comp_num fixed, 2 236 2 out_of_index bit (1) aligned, 2 237 2 saved_min_res fixed (21), 2 238 2 saved_min_cap fixed (21), 2 239 2 was_stat bit (1) aligned, 2 240 2 was_ind bit (1) aligned, 2 241 2 old_ind_desc fixed (35), 2 242 2 after_desc fixed (35), 2 243 2 old_ref_count fixed (34), 2 244 2 new_ref_count fixed (34), 2 245 2 old_num_free fixed (34), 2 246 2 old_file_ch_count fixed (35), 2 247 2 y_count, /* for conversion of pre-MR6.9 files */ 2 248 2 old_modifier fixed (35), 2 249 2 was_transaction bit (1) aligned, /* state blocks */ 2 250 2 index_state fixed, 2 251 2 index_state_blocks (0:1), 2 252 3 words (104), 2 253 2 reserved (30), /* this free space might come in handy */ 2 254 2 old_prev_mod fixed (35), 2 255 2 needed_blksz fixed (35), 2 256 2 new_desc_val fixed (35), 2 257 2 is_partial_deletion 2 258 bit (1) aligned, 2 259 2 reserved2 (42), 2 260 2 file_state_blocks (0:1), 2 261 3 words (size (file_state_block)) fixed, 2 262 /* component info */ 2 263 2 max_comp_num fixed, 2 264 2 last_comp_num fixed, 2 265 2 first_free_comp_num, /* not yet supported */ 2 266 2 comp_table_start (size (comp_table)); /* start of comp_array */ 2 267 2 268 dcl 1 comp_table (0:true_max_comp_num) based (addr (file_base.comp_table_start)) aligned, 2 269 2 seg_limit fixed (19), /* abs value is offset of first free word in seg, max val=max 2 270* seg_limit and this indicates full seg */ 2 271 2 comp_link fixed (17) unal, 2 272 2 init_offset fixed (18) unsigned unal; 2 273 2 274 dcl 1 file_header based (f_b_ptr), 2 275 2 first_three_pages (3, 1024) fixed, 2 276 2 spare_node char (4096) aligned; 2 277 2 278 /* The File State */ 2 279 dcl fs_ptr ptr; 2 280 dcl 1 file_state_block based (fs_ptr), 2 281 2 file_action fixed, 2 282 2 file_substate fixed, 2 283 2 number_of_keys fixed (34), 2 284 2 duplicate_keys fixed (34), /* 0 if no duplications */ 2 285 2 dup_key_bytes fixed (34), 2 286 2 total_key_length fixed (34), 2 287 2 number_of_records fixed (34), 2 288 2 total_record_length 2 289 fixed (34), 2 290 2 number_of_allocated_records 2 291 fixed (34), 2 292 2 number_of_free_blocks 2 293 fixed (34), 2 294 2 words (2) fixed; 2 295 2 296 /* The Index State */ 2 297 dcl is_ptr ptr; 2 298 dcl 1 index_state_block based (is_ptr), /* if this declaration is changed, 2 299* index_state_blocks must be adjusted */ 2 300 2 number_of_nodes fixed (34), 2 301 2 free_node_designator 2 302 fixed (35), 2 303 2 index_tail_comp_num 2 304 fixed, 2 305 2 index_height fixed, 2 306 2 index_action fixed, 2 307 2 index_substate fixed, 2 308 2 current_node fixed (35), 2 309 2 change_node fixed (35), 2 310 2 fake_node, /* equivalent to a short node because of storage map. It holds 2 311* the new key, new record descrip, and new branch in a fashion 2 312* convenient for overflow-underflow in change_index. */ 2 313 3 fake_head_and_descrip, 2 314 4 word1 fixed, /* last_branch_num in real node */ 2 315 4 word2 fixed, /* low_key_pos in real node */ 2 316 4 word3 fixed, /* normally scat_space */ 2 317 4 word4 fixed, /* first branch in real node */ 2 318 4 new_key_pos fixed (17) unal, /* set by initializefile to denote first char 2 319* in new_key_string, never changed */ 2 320 4 new_key_length fixed (17) unal, 2 321 4 new_record_descrip, 2 322 5 new_record_designator 2 323 fixed (35), 2 324 4 new_branch fixed (35), 2 325 3 new_key_string char (256), 2 326 2 branch_num_adjust fixed, 2 327 2 pos_array (10), 2 328 3 saved_node fixed (35), 2 329 3 saved_branch_num fixed; 2 330 2 331 dcl 1 old_file_base based (f_b_ptr), 2 332 2 words1 (15) fixed, /* same in both file versions */ 2 333 2 old_file_state_blocks 2 334 (0:1), 2 335 3 words (5) fixed, 2 336 2 words2 (7) fixed, 2 337 2 record_state fixed, 2 338 2 record_state_blocks 2 339 (0:1), 2 340 3 words (4) fixed, 2 341 2 words3 (14) fixed, /* rover info same in both versions */ 2 342 2 old_version_index_height 2 343 fixed, 2 344 2 old_version_number_of_nodes 2 345 fixed (34), 2 346 2 words4 (157) fixed, 2 347 2 old_version_index_tail_comp_num 2 348 fixed, 2 349 2 old_version_free_node_designator 2 350 fixed (35), 2 351 2 words5 (10) fixed, 2 352 2 old_version_comp_info 2 353 fixed, 2 354 2 word, 2 355 2 x_count fixed; /* always zero in old version files */ 2 356 2 357 /* External Procedures */ 2 358 dcl clock_ entry returns (fixed (71)); 2 359 dcl alloc_cb_file entry (fixed, /* size of block in words */ 2 360 ptr); /* ptr to block */ 2 361 dcl free_cb_file entry (fixed, ptr); 2 362 dcl get_seg_ptr entry (ptr, fixed) returns (ptr); 2 363 dcl make_designator entry (fixed, fixed (18), fixed (35)); 2 364 dcl create_seg_ptrs entry (ptr); 2 365 dcl free_seg_ptrs entry (ptr); 2 366 dcl get_new_seg entry (ptr, fixed, ptr, fixed, label); 2 367 dcl free_seg entry (ptr, fixed, ptr); 2 368 dcl set_bitcounts entry (ptr); 2 369 dcl create_position_stack entry (ptr); 2 370 dcl extend_position_stack entry (ptr); 2 371 dcl free_position_stack entry (ptr); 2 372 dcl change_index entry (ptr, label); 2 373 dcl change_record_list entry (ptr, fixed, ptr, label); 2 374 2 375 /* State Constants */ 3 1 dcl bumping_count static internal options (constant) init (-14); 3 2 dcl rollback_action static options (constant) init (-13); 3 3 dcl adjust_action static options (constant) init (-12); 3 4 dcl unshared_opening static internal fixed options (constant) init (-11); 3 5 dcl non_eof_delete static internal fixed options (constant) init (-10); 3 6 dcl free_action static options (constant) init (-10); 3 7 dcl write_trunc static internal fixed options (constant) init (-9); 3 8 dcl allocate_action static options (constant) init (-9); 3 9 dcl reassigning_key static options (constant) init (-8); 3 10 dcl read_exclude static options (constant) init (-7); 3 11 dcl adding_record static options (constant) init (-6); 3 12 dcl deleting_key static options (constant) init (-5); 3 13 dcl adding_key static options (constant) init (-4); 3 14 dcl delete_action static options (constant) init (-3); 3 15 dcl eof_delete static internal fixed options (constant) init (-3); 3 16 dcl replace_action static options (constant) init (-2); 3 17 dcl rewrite_action static internal fixed options (constant) init (-2); 3 18 dcl insert_action static options (constant) init (-1); 3 19 dcl append_action static internal fixed options (constant) init (-1); 3 20 dcl truncate_action static internal fixed options (constant) init (1); 3 21 dcl must_adjust static internal fixed options (constant) init (2); 3 22 dcl must_rollback static internal fixed options (constant) init (3); 2 376 2 377 2 378 /* Other constants */ 2 379 dcl true_max_comp_num static options (constant) init (1250); 2 380 dcl stat_header_size static internal fixed options (constant) init (8); 2 381 2 382 /* builtins */ 2 383 dcl (verify, reverse) builtin; 2 384 dcl addr builtin; 2 385 dcl divide builtin; 2 386 dcl length builtin; 2 387 dcl null builtin; 2 388 dcl substr builtin; 2 389 dcl size builtin; 2 390 dcl abs builtin; 2 391 dcl unspec builtin; 2 392 dcl fixed builtin; 2 393 dcl bit builtin; 2 394 dcl max builtin; 2 395 dcl min builtin; 2 396 dcl rel builtin; 2 397 225 226 dcl sub_err_ entry options (variable); 227 end check_file_version; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/16/90 1518.0 check_file_version.pl1 >spec>install>1043>check_file_version.pl1 173 1 07/19/79 1647.0 vfile_error_codes.incl.pl1 >ldd>include>vfile_error_codes.incl.pl1 225 2 07/19/79 1647.0 vfile_indx.incl.pl1 >ldd>include>vfile_indx.incl.pl1 2-376 3 07/19/79 1647.0 vfile_action_codes.incl.pl1 >ldd>include>vfile_action_codes.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. addr builtin function dcl 2-384 ref 33 44 92 103 104 114 118 133 142 150 branch_and_descrip_length constant fixed bin(17,0) initial dcl 179 ref 148 code parameter fixed bin(35,0) dcl 172 set ref 26 30* 36* 37* 37* 47* 50* 50* 58* 59* 59* 63* 64* 64* 66 70* 71* 71* comp_info based structure level 1 unaligned dcl 216 comp_info_ptr 000106 automatic pointer dcl 215 set ref 92* 98 99 114* 118 123 comp_link 4 based fixed bin(15,0) array level 3 in structure "comp_info" packed packed unaligned dcl 216 in procedure "check_file_version" set ref 99 comp_link 1 based fixed bin(17,0) array level 2 in structure "comp_table" packed packed unaligned dcl 2-268 in procedure "check_file_version" set ref 104* comp_table 3 based structure array level 2 in structure "comp_info" dcl 216 in procedure "check_file_version" set ref 118* 118 comp_table based structure array level 1 dcl 2-268 in procedure "check_file_version" comp_table_start based fixed bin(17,0) array level 2 dcl 2-157 set ref 103 104 current_file_version constant fixed bin(17,0) initial dcl 174 ref 86 divide builtin function dcl 2-385 ref 95 dup_key_bytes 4 based fixed bin(34,0) level 2 dcl 2-280 set ref 168* duplicate_keys 3 based fixed bin(34,0) level 2 dcl 2-280 set ref 167* error_table_$bad_file 000010 external static fixed bin(35,0) dcl 1-3 ref 36 63 error_table_$unimplemented_version 000012 external static fixed bin(35,0) dcl 1-3 ref 47 58 70 f_b_ptr 000110 automatic pointer dcl 2-156 set ref 28* 31 33 33 42 44 44 54 68 68 76 82 84 86 92 94 95 96 98 99 103 103 104 104 106 106 114 116 117 118 119 119 122 123 124 133 133 141 142 144 145 146 147 150 fake_head_and_descrip 10 based structure level 3 unaligned dcl 2-298 fake_node 10 based structure level 2 unaligned dcl 2-298 file_action based fixed bin(17,0) level 2 in structure "v20_fsb" dcl 186 in procedure "check_file_version" ref 45 file_action based fixed bin(17,0) level 2 in structure "old_f_s_block" dcl 207 in procedure "check_file_version" ref 34 file_action based fixed bin(17,0) level 2 in structure "file_state_block" dcl 2-280 in procedure "check_file_version" set ref 54 54 129* 155* file_base based structure level 1 unaligned dcl 2-157 file_base_ptr 2 based pointer level 2 dcl 2-3 ref 28 file_state 16 based fixed bin(17,0) level 2 dcl 2-157 ref 33 44 file_state_block based structure level 1 unaligned dcl 2-280 set ref 92 103 104 118 122 123 124 file_state_ptr 44 based pointer level 2 dcl 2-3 ref 29 file_version 4 based fixed bin(17,0) level 2 dcl 2-157 set ref 31 42 54 76 82 84* 86* file_version_MR2 constant fixed bin(17,0) initial dcl 175 ref 31 76 file_version_MR3 constant fixed bin(17,0) initial dcl 176 ref 42 82 file_version_MR6 constant fixed bin(17,0) initial dcl 177 ref 54 84 first_free_comp_num based fixed bin(17,0) level 2 dcl 2-157 set ref 122* former_rover_comp_num 40 based fixed bin(17,0) level 2 dcl 2-157 set ref 99* 104 free_node_designator 1 based fixed bin(35,0) level 2 dcl 2-298 set ref 145* fs_ptr 000112 automatic pointer dcl 2-279 set ref 29* 54 54 92 103 104 118 122 123 124 129 130 131 132 134 135 155 156 157 158 159 160 166 166 167 168 i 000124 automatic fixed bin(17,0) dcl 109 set ref 95* 96 98 99 103 104 index_height 3 based fixed bin(17,0) level 2 dcl 2-298 set ref 147* index_state 114 based fixed bin(17,0) level 2 dcl 2-157 set ref 141* index_state_block based structure level 1 unaligned dcl 2-298 index_state_blocks 115 based structure array level 2 unaligned dcl 2-157 set ref 142 150 index_state_ptr 34 based pointer level 2 dcl 2-3 set ref 142* 143 index_tail_comp_num 2 based fixed bin(17,0) level 2 dcl 2-298 set ref 146* indx_cb based structure level 1 unaligned dcl 2-3 indx_cb_ptr parameter pointer dcl 2-2 ref 26 28 29 66 142 143 init_offset 1(18) based fixed bin(18,0) array level 2 in structure "comp_table" packed packed unsigned unaligned dcl 2-268 in procedure "check_file_version" set ref 103* init_offset 4(16) based fixed bin(18,0) array level 3 in structure "comp_info" packed packed unaligned dcl 216 in procedure "check_file_version" set ref 98 is_ptr 000114 automatic pointer dcl 2-297 set ref 143* 144 145 146 147 149 is_read_only 15 based bit(1) level 2 dcl 2-3 ref 66 last_comp_num based fixed bin(17,0) level 2 in structure "file_base" dcl 2-157 in procedure "check_file_version" set ref 123* last_comp_num 1 based fixed bin(17,0) level 2 in structure "comp_info" dcl 216 in procedure "check_file_version" ref 123 max_comp_num based fixed bin(17,0) level 2 dcl 2-157 set ref 92 118 124* n 000100 automatic fixed bin(17,0) dcl 181 set ref 117* 118 118 148* 149 150 new_key_pos 14 based fixed bin(17,0) level 4 packed packed unaligned dcl 2-298 set ref 149* 150* node_head_length constant fixed bin(17,0) initial dcl 178 ref 148 null builtin function dcl 2-387 ref 37 37 50 50 59 59 64 64 71 71 number_of_allocated_records 5 based fixed bin(34,0) level 2 in structure "v20_fsb" dcl 186 in procedure "check_file_version" ref 159 number_of_allocated_records 3 based fixed bin(34,0) level 2 in structure "record_state_block" dcl 199 in procedure "check_file_version" ref 134 number_of_allocated_records 10 based fixed bin(34,0) level 2 in structure "file_state_block" dcl 2-280 in procedure "check_file_version" set ref 134* 159* number_of_free_blocks 2 based fixed bin(34,0) level 2 in structure "record_state_block" dcl 199 in procedure "check_file_version" ref 135 number_of_free_blocks 6 based fixed bin(34,0) level 2 in structure "v20_fsb" dcl 186 in procedure "check_file_version" ref 160 number_of_free_blocks 11 based fixed bin(34,0) level 2 in structure "file_state_block" dcl 2-280 in procedure "check_file_version" set ref 135* 160* number_of_keys 2 based fixed bin(34,0) level 2 dcl 2-280 set ref 166* number_of_nodes based fixed bin(34,0) level 2 dcl 2-298 set ref 144* number_of_records 2 based fixed bin(34,0) level 2 in structure "old_f_s_block" dcl 207 in procedure "check_file_version" ref 130 number_of_records 6 based fixed bin(34,0) level 2 in structure "file_state_block" dcl 2-280 in procedure "check_file_version" set ref 130* 156* 166 number_of_records 2 based fixed bin(34,0) level 2 in structure "v20_fsb" dcl 186 in procedure "check_file_version" ref 156 old_f_s_block based structure level 1 unaligned dcl 207 old_file_base based structure level 1 unaligned dcl 2-331 old_file_state_blocks 17 based structure array level 2 unaligned dcl 2-331 set ref 33 old_file_state_ptr 000104 automatic pointer dcl 206 set ref 33* 34 44* 45 130 131 132 156 157 158 159 160 old_init_offset 35 based fixed bin(18,0) level 2 dcl 2-157 set ref 98* 103 old_version_comp_info 342 based fixed bin(17,0) level 2 dcl 2-331 set ref 114 old_version_free_node_designator 327 based fixed bin(35,0) level 2 dcl 2-331 ref 145 old_version_index_height 67 based fixed bin(17,0) level 2 dcl 2-331 ref 147 old_version_index_tail_comp_num 326 based fixed bin(17,0) level 2 dcl 2-331 ref 146 old_version_number_of_nodes 70 based fixed bin(34,0) level 2 dcl 2-331 ref 144 program_version 5 based fixed bin(17,0) level 2 dcl 2-157 ref 68 68 read_exclude 001025 constant fixed bin(17,0) initial dcl 3-10 ref 54 record_state 40 based fixed bin(17,0) level 2 dcl 2-331 ref 133 record_state_block based structure level 1 unaligned dcl 199 record_state_blocks 41 based structure array level 2 unaligned dcl 2-331 set ref 133 record_state_ptr 000102 automatic pointer dcl 198 set ref 133* 134 135 size builtin function dcl 2-389 ref 92 103 104 118 122 123 124 sub_err_ 000014 constant entry external dcl 226 ref 37 50 59 64 71 total_key_length 3 based fixed bin(34,0) level 2 in structure "v20_fsb" dcl 186 in procedure "check_file_version" ref 157 total_key_length 5 based fixed bin(34,0) level 2 in structure "file_state_block" dcl 2-280 in procedure "check_file_version" set ref 131* 157* total_key_length 3 based fixed bin(34,0) level 2 in structure "old_f_s_block" dcl 207 in procedure "check_file_version" ref 131 total_record_length 4 based fixed bin(34,0) level 2 in structure "v20_fsb" dcl 186 in procedure "check_file_version" ref 158 total_record_length 7 based fixed bin(34,0) level 2 in structure "file_state_block" dcl 2-280 in procedure "check_file_version" set ref 132* 158* total_record_length 4 based fixed bin(34,0) level 2 in structure "old_f_s_block" dcl 207 in procedure "check_file_version" ref 132 true_max_comp_num constant fixed bin(17,0) initial dcl 2-379 ref 94 116 117 124 v20_file_header based structure level 1 unaligned dcl 182 v20_fs_blocks 76 based structure array level 2 unaligned dcl 182 set ref 44 v20_fsb based structure level 1 unaligned dcl 186 x_count 344 based fixed bin(17,0) level 2 dcl 2-331 set ref 116 117 119* 119 y_count 111 based fixed bin(17,0) level 2 dcl 2-157 set ref 94 95 96 106* 106 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. abs builtin function dcl 2-390 adding_key internal static fixed bin(17,0) initial dcl 3-13 adding_record internal static fixed bin(17,0) initial dcl 3-11 adjust_action internal static fixed bin(17,0) initial dcl 3-3 alloc_cb_file 000000 constant entry external dcl 2-359 allocate_action internal static fixed bin(17,0) initial dcl 3-8 append_action internal static fixed bin(17,0) initial dcl 3-19 bit builtin function dcl 2-393 bumping_count internal static fixed bin(17,0) initial dcl 3-1 change_index 000000 constant entry external dcl 2-372 change_record_list 000000 constant entry external dcl 2-373 clock_ 000000 constant entry external dcl 2-358 create_position_stack 000000 constant entry external dcl 2-369 create_seg_ptrs 000000 constant entry external dcl 2-364 current_t_code based fixed bin(35,0) dcl 2-82 delete_action internal static fixed bin(17,0) initial dcl 3-14 deleting_key internal static fixed bin(17,0) initial dcl 3-12 designator automatic fixed bin(35,0) dcl 2-88 designator_struct based structure level 1 dcl 2-127 eof_delete internal static fixed bin(17,0) initial dcl 3-15 error_table_$asynch_change external static fixed bin(35,0) dcl 1-3 error_table_$asynch_deletion external static fixed bin(35,0) dcl 1-3 error_table_$asynch_insertion external static fixed bin(35,0) dcl 1-3 error_table_$bad_arg external static fixed bin(35,0) dcl 1-3 error_table_$bad_processid external static fixed bin(35,0) dcl 1-3 error_table_$end_of_info external static fixed bin(35,0) dcl 1-3 error_table_$file_busy external static fixed bin(35,0) dcl 1-3 error_table_$file_is_full external static fixed bin(35,0) dcl 1-3 error_table_$higher_inconsistency external static fixed bin(35,0) dcl 1-3 error_table_$invalid_lock_reset external static fixed bin(35,0) dcl 1-3 error_table_$key_duplication external static fixed bin(35,0) dcl 1-3 error_table_$key_order external static fixed bin(35,0) dcl 1-3 error_table_$last_reference external static fixed bin(35,0) dcl 1-3 error_table_$lock_is_invalid external static fixed bin(35,0) dcl 1-3 error_table_$lock_not_locked external static fixed bin(35,0) dcl 1-3 error_table_$lock_wait_time_exceeded external static fixed bin(35,0) dcl 1-3 error_table_$locked_by_this_process external static fixed bin(35,0) dcl 1-3 error_table_$long_record external static fixed bin(35,0) dcl 1-3 error_table_$no_file external static fixed bin(35,0) dcl 1-3 error_table_$no_key external static fixed bin(35,0) dcl 1-3 error_table_$no_operation external static fixed bin(35,0) dcl 1-3 error_table_$no_record external static fixed bin(35,0) dcl 1-3 error_table_$no_room_for_lock external static fixed bin(35,0) dcl 1-3 error_table_$noarg external static fixed bin(35,0) dcl 1-3 error_table_$noentry external static fixed bin(35,0) dcl 1-3 error_table_$not_closed external static fixed bin(35,0) dcl 1-3 error_table_$not_detached external static fixed bin(35,0) dcl 1-3 error_table_$not_open external static fixed bin(35,0) dcl 1-3 error_table_$record_busy external static fixed bin(35,0) dcl 1-3 error_table_$segknown external static fixed bin(35,0) dcl 1-3 error_table_$too_many_args external static fixed bin(35,0) dcl 1-3 error_table_$too_many_refs external static fixed bin(35,0) dcl 1-3 extend_position_stack 000000 constant entry external dcl 2-370 file_header based structure level 1 unaligned dcl 2-274 fixed builtin function dcl 2-392 free_action internal static fixed bin(17,0) initial dcl 3-6 free_cb_file 000000 constant entry external dcl 2-361 free_position_stack 000000 constant entry external dcl 2-371 free_seg 000000 constant entry external dcl 2-367 free_seg_ptrs 000000 constant entry external dcl 2-365 get_new_seg 000000 constant entry external dcl 2-366 get_seg_ptr 000000 constant entry external dcl 2-362 ind_des_structure based structure level 1 packed packed unaligned dcl 2-89 ind_structure based structure level 1 unaligned dcl 2-102 insert_action internal static fixed bin(17,0) initial dcl 3-18 keys based char(4096) packed unaligned dcl 2-153 length builtin function dcl 2-386 make_designator 000000 constant entry external dcl 2-363 max builtin function dcl 2-394 min builtin function dcl 2-395 must_adjust internal static fixed bin(17,0) initial dcl 3-21 must_rollback internal static fixed bin(17,0) initial dcl 3-22 node_block based structure level 1 unaligned dcl 2-139 non_eof_delete internal static fixed bin(17,0) initial dcl 3-5 pos_ptr automatic pointer dcl 171 position_frame based structure level 1 unaligned dcl 2-132 reassigning_key internal static fixed bin(17,0) initial dcl 3-9 record_block_structure based structure level 1 unaligned dcl 2-115 rel builtin function dcl 2-396 replace_action internal static fixed bin(17,0) initial dcl 3-16 reverse builtin function dcl 2-383 rewrite_action internal static fixed bin(17,0) initial dcl 3-17 rollback_action internal static fixed bin(17,0) initial dcl 3-2 seg_array based fixed bin(19,0) array dcl 2-87 seg_ptr automatic pointer dcl 2-86 seg_ptr_array based pointer array dcl 2-85 set_bitcounts 000000 constant entry external dcl 2-368 stat_header_size internal static fixed bin(17,0) initial dcl 2-380 stat_structure based structure level 1 unaligned dcl 2-92 substr builtin function dcl 2-388 time_stamp_structure based structure level 1 packed packed unaligned dcl 2-112 truncate_action internal static fixed bin(17,0) initial dcl 3-20 unshared_opening internal static fixed bin(17,0) initial dcl 3-4 unspec builtin function dcl 2-391 verify builtin function dcl 2-383 write_trunc internal static fixed bin(17,0) initial dcl 3-7 NAMES DECLARED BY EXPLICIT CONTEXT. check_file_version 000202 constant entry external dcl 26 move_comp_info 000661 constant entry internal dcl 112 ref 78 move_file_statis 000715 constant entry internal dcl 127 ref 79 move_index_statis 000742 constant entry internal dcl 139 ref 80 move_v20_statis 000776 constant entry internal dcl 153 ref 82 rebuild_comp_array 000611 constant entry internal dcl 90 ref 85 set_default_stats 001016 constant entry internal dcl 164 ref 136 161 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1106 1124 1026 1116 Length 1346 1026 16 206 57 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME check_file_version 210 external procedure is an external procedure. rebuild_comp_array internal procedure shares stack frame of external procedure check_file_version. move_comp_info internal procedure shares stack frame of external procedure check_file_version. move_file_statis internal procedure shares stack frame of external procedure check_file_version. move_index_statis internal procedure shares stack frame of external procedure check_file_version. move_v20_statis internal procedure shares stack frame of external procedure check_file_version. set_default_stats internal procedure shares stack frame of external procedure check_file_version. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME check_file_version 000100 n check_file_version 000102 record_state_ptr check_file_version 000104 old_file_state_ptr check_file_version 000106 comp_info_ptr check_file_version 000110 f_b_ptr check_file_version 000112 fs_ptr check_file_version 000114 is_ptr check_file_version 000124 i rebuild_comp_array THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_file error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 26 000176 28 000207 29 000214 30 000216 31 000217 33 000222 34 000226 36 000230 37 000232 41 000276 42 000277 44 000301 45 000305 47 000307 50 000311 53 000355 54 000356 58 000365 59 000367 61 000433 63 000434 64 000436 66 000502 68 000511 70 000517 71 000522 74 000566 76 000567 78 000572 79 000573 80 000574 81 000575 82 000576 84 000601 85 000604 86 000605 88 000610 90 000611 92 000612 94 000615 95 000622 96 000625 98 000630 99 000640 101 000643 103 000644 104 000652 106 000656 107 000657 110 000660 112 000661 114 000662 116 000665 117 000672 118 000675 119 000704 120 000705 122 000706 123 000707 124 000712 125 000714 127 000715 129 000716 130 000717 131 000723 132 000725 133 000727 134 000734 135 000736 136 000740 137 000741 139 000742 141 000743 142 000745 143 000752 144 000756 145 000760 146 000762 147 000764 148 000766 149 000770 150 000772 151 000775 153 000776 155 000777 156 001000 157 001004 158 001006 159 001010 160 001012 161 001014 162 001015 164 001016 166 001017 167 001022 168 001023 169 001024 ----------------------------------------------------------- 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