COMPILATION LISTING OF SEGMENT restart Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/16/90 1518.1 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-12,Zimmerman), approve(90-10-12,MCR8216), 19* audit(90-10-15,Zwick), install(90-10-16,MR12.4-1043): 20* Data_Mgt 63 (phx21194): Raise the max number of components in an MSF to 21* 1250. 22* END HISTORY COMMENTS */ 23 24 25 26 27 restart: 28 proc (iocb_ptr, code); /* tries to complete interrupted operation */ 29 indx_cb_ptr = open_data_ptr; 30 f_b_ptr = file_base_ptr; 31 fs_ptr = file_state_ptr; 32 call save_restart_proc_info; 33 on cleanup 34 call restore_restart_proc_info; 35 indx_cb.mode = 10; /* ksu */ 36 indx_cb.min_res = saved_min_res; 37 indx_cb.min_cap = saved_min_cap; 38 indx_cb.outside_index = file_base.out_of_index; 39 indx_cb.current_descrip = file_base.old_record_designator; 40 indx_cb.stat = file_base.was_stat; 41 indx_cb.trans = "0"b; 42 repeating = "1"b; 43 indx_cb.shared = "0"b; 44 indx_cb.subset_selected = "00"b; 45 indx_cb.current_record_is_valid = "1"b; 46 pos_incorrect = "0"b; 47 indx_cb.dup_ok = "1"b; 48 indx_cb.next_record_position = 1; 49 if (file_action = adjust_action) | (file_action = rollback_action) 50 then do; 51 if ^((file_action = rollback_action) & (file_base.old_prev_mod = -3) & (file_base.old_ref_count <= 0)) 52 /* not total collection of storage */ 53 then call lock_record (file_base.old_record_designator); 54 call open_indx_file$adjust_record (iocb_ptr, file_base.old_record_designator, 0, code); 55 end; 56 else if file_action = replace_action 57 then call restart_replacement; 58 else if file_action = reassigning_key 59 then call restart_reassignment; 60 else do; 61 call restore_old_proc_info; 62 if file_action = insert_action 63 then call restart_insertion; 64 else if file_action = delete_action 65 then do; 66 if file_base.was_stat 67 & (file_base.is_partial_deletion | (file_base.old_modifier > 0) 68 | (file_base.old_ref_count > fixed (^file_base.out_of_index))) 69 /* 70* not case of total collection, including stationary header */ 71 then call lock_record (file_base.old_record_designator); 72 /* else protect this storage--don't clobber free list */ 73 call open_indx_file$delete_indx_file (iocb_ptr, code); 74 end; 75 else if file_action = adding_key 76 then call restart_add_key; 77 else if file_action = deleting_key 78 then do; 79 indx_cb.outside_index = "0"b; 80 if file_base.was_stat /* watch out for low level synch */ 81 then call lock_record (file_base.old_record_designator); 82 call open_indx_file$control_indx_file (iocb_ptr, "delete_key", null, code); 83 end; 84 else if file_action = adding_record 85 then call restart_rs_create; 86 else if file_action = bumping_count 87 then do; 88 file_base.change_count = file_base.old_file_ch_count + 1; 89 file_action = 0; 90 end; 91 else code = error_table_$bad_file; 92 end; 93 call restore_restart_proc_info; 94 if indx_cb.file_state_ptr -> file_action = 0 95 then code = 0; 96 else if code = 0 97 then code = error_table_$bad_file; 98 return; /* end of restart routine */ 99 100 save_restart_proc_info: 101 proc; 102 saved_state = indx_cb.state_vars; 103 saved_subset_selected = indx_cb.subset_selected; 104 was_ks_out = is_ks_out; 105 my_min_res = indx_cb.min_res; 106 my_min_cap = indx_cb.min_cap; 107 was_stat = indx_cb.stat; 108 was_dup_ok = indx_cb.dup_ok; 109 was_trans = indx_cb.trans; 110 old_mode = indx_cb.mode; 111 return; 112 113 restore_restart_proc_info: 114 entry; 115 indx_cb.state_vars = saved_state; 116 indx_cb.subset_selected = saved_subset_selected; 117 repeating = "0"b; 118 is_ks_out = was_ks_out; 119 indx_cb.min_res = my_min_res; 120 indx_cb.min_cap = my_min_cap; 121 file_base.max_comp_num = true_max_comp_num; 122 indx_cb.pos_incorrect = "1"b; 123 indx_cb.stat = was_stat; 124 indx_cb.dup_ok = was_dup_ok; 125 indx_cb.trans = was_trans; 126 indx_cb.mode = old_mode; 127 end save_restart_proc_info; 128 129 restore_old_proc_info: 130 proc; 131 if ^(indx_cb.outside_index & ((file_action = delete_action) | (file_action = adding_record))) 132 then do; /* restore position stack */ 133 is_ptr = index_state_ptr; 134 p = root_position_ptr; 135 file_position_ptr = p; 136 change_position_ptr = p; 137 138 do i = 1 to index_height; 139 p = p -> son_position_ptr; 140 p -> node = saved_node (i); 141 p -> branch_num = saved_branch_num (i); 142 p -> node_ptr = get_ptr (p -> node); 143 if p -> node = current_node 144 then file_position_ptr = p; 145 if p -> node = change_node 146 then change_position_ptr = p; 147 end; 148 149 end; 150 is_ks_out = saved_ks_out; 151 indx_cb.ready_to_write = "1"b; 152 dcl p ptr; 153 dcl i fixed; 154 end restore_old_proc_info; 155 156 restart_add_key: 157 proc; /* recovers from interrupted add_key operation */ 158 indx_cb.current_descrip = file_base.new_descriptor; 159 if file_base.was_stat 160 then call lock_record (indx_cb.current_descrip); 161 indx_cb.outside_index = "0"b; 162 string (ak_inf.flags) = "00"b; 163 call open_indx_file$control_indx_file (iocb_ptr, "add_key", addr (ak_inf), code); 164 end restart_add_key; 165 166 restart_rs_create: 167 proc; /* finish allocation, then delete */ 168 if file_base.out_of_index /* no key with the record--always delete since user can't find this record */ 169 then do; 170 if file_substate = 0 171 then indx_cb.repeating = "0"b; 172 else indx_cb.next_substate = 0; 173 call change_record_list (iocb_ptr, allocate_action, null, abort_exit); 174 file_base.old_record_designator = file_base.new_descriptor; 175 file_base.old_ref_count = 0; 176 file_base.change_count = file_base.old_file_ch_count + 1; 177 call change_record_list (iocb_ptr, delete_action, null, abort_exit); 178 file_action = 0; 179 return; 180 end; 181 if file_base.was_stat 182 then call lock_record (file_base.new_descriptor); 183 rs_inf.record_length = new_record_length; 184 rs_inf.max_rec_len = saved_min_cap; 185 unspec (rs_inf.flags) = "0"b; 186 rs_inf.inc_ref_count = (file_base.was_stat & (file_base.old_ref_count = 2)); 187 rs_inf.create_sw = "1"b; 188 rs_inf.locate_sw = out_of_index; 189 rs_inf.version = rs_info_version_2; 190 call open_indx_file$control_indx_file (iocb_ptr, "record_status", addr (rs_inf), code); 191 end restart_rs_create; 192 193 restart_replacement: 194 proc; /* finish interrupted replace operation */ 195 call reinit_rewrite_proc; 196 if ^file_base.was_stat /* non-stationary type record rewritten */ 197 then do; /* see if contents may be invalid */ 198 old_rec_ptr = get_rec_ptr (old_record_designator); 199 if (fixed (old_rec_des.offset) + 2 + divide (new_record_length + 3, 4, 21, 0)) > max_seg_limit 200 then new_rec_ptr = file_base_ptr; /* avoids seg_fault */ 201 else new_rec_ptr = old_rec_ptr; 202 if ((old_record_length ^= new_record_length) | (file_substate > 1) 203 | (old_record_designator ^= new_descriptor)) & (new_record_length > 0) 204 then if ^indx_cb.outside_index 205 then call sub_err_ (0, "vfile_", "c", null, code, "Record contents may be incorrect for key: ^a", 206 substr (keys, key_pos (branch_num), key_length (branch_num))); 207 else call sub_err_ (0, "vfile_", "c", null, code, 208 "Record contents may be incorrect for record with descriptor: ^o", old_record_designator); 209 end; 210 else do; 211 call lock_record (file_base.old_record_designator); 212 if file_base.change_count = file_base.old_file_ch_count 213 /* op will be undone */ 214 then do; /* undo the rewrite--old stuff still is intact */ 215 if file_base.new_record_length + indx_cb.min_res + indx_cb.min_cap > 0 216 then do; 217 if file_substate = 1 218 then indx_cb.repeating = "0"b; 219 else indx_cb.next_substate = 1; 220 call change_record_list (iocb_ptr, allocate_action, f_b_ptr, abort_exit); 221 call change_record_list (iocb_ptr, free_action, null, abort_exit); 222 end; 223 block_ptr -> stat_block.lock_flag = "0"b; 224 block_ptr -> stat_structure.modifier = -1; 225 file_action = bumping_count; 226 file_base.change_count = file_base.old_file_ch_count + 1; 227 file_action = 0; 228 /* now just unlock the record */ 229 block_ptr = get_pointer (file_base.old_record_designator); 230 block_ptr -> stat_block.modifier = 0; 231 if stacq (block_ptr -> stat_block.record_lock, "0"b, indx_cb.saved_lock_copy) 232 /* clear record lock */ 233 then ; 234 return; 235 end; 236 else if file_base.new_descriptor > 0 237 then new_rec_ptr = get_rec_ptr (file_base.new_descriptor); 238 else new_rec_ptr = null; 239 end; 240 call open_indx_file$rewrite_indx_file (iocb_ptr, new_rec_ptr, new_record_length, code); 241 end restart_replacement; 242 243 reinit_rewrite_proc: 244 proc; /* set up position info */ 245 file_position_ptr = root_position_ptr -> son_position_ptr; 246 node = first_branch; 247 branch_num = count; 248 node_ptr = get_ptr (node); 249 end reinit_rewrite_proc; 250 251 restart_reassignment: 252 proc; 253 if file_base.was_stat 254 then do; 255 block_ptr = get_pointer (file_base.old_record_designator); 256 if block_ptr ^= null 257 then if block_ptr -> record_block_structure.stationary 258 then call lock_record (file_base.old_record_designator); 259 new_block_ptr = get_pointer (file_base.new_descriptor); 260 if new_block_ptr ^= null 261 then if new_block_ptr -> record_block_structure.stationary 262 then call lock_record (file_base.new_descriptor); 263 end; 264 indx_cb.outside_index = "0"b; 265 string (rk_inf.flags) = "001"b; /* input new descrip */ 266 rk_inf.new_descrip = file_base.new_descriptor; 267 call reinit_rewrite_proc; /* finds index position */ 268 call open_indx_file$control_indx_file (iocb_ptr, "reassign_key", addr (rk_inf), code); 269 end restart_reassignment; 270 271 restart_insertion: 272 proc; /* finish interrupted write operation */ 273 if file_base.change_count = file_base.old_file_ch_count 274 /* buffer may not be saved yet */ 275 then do; /* undo any allocation */ 276 if file_base.was_stat 277 | (file_base.new_record_length + file_base.saved_min_cap + file_base.saved_min_res > 0) 278 /* allocation was required */ 279 then do; /* restart, then reverse */ 280 if file_substate = 1 281 then indx_cb.repeating = "0"b; 282 else indx_cb.next_substate = 1; 283 /* tracking variable--set_add_ent_info routine must have been used */ 284 call change_record_list (iocb_ptr, insert_action, null, abort_exit); 285 file_base.old_record_designator = file_base.new_descriptor; 286 file_base.out_of_index = "0"b; 287 file_base.is_partial_deletion = "0"b; 288 call change_record_list (iocb_ptr, delete_action, null, abort_exit); 289 end; 290 file_action = bumping_count; 291 file_base.change_count = file_base.old_file_ch_count + 1; 292 file_action = 0; 293 return; 294 end; 295 if file_base.new_descriptor <= 0 296 then new_rec_ptr = null; 297 else do; 298 new_rec_ptr = get_rec_ptr (file_base.new_descriptor); 299 if file_base.was_stat 300 then new_rec_ptr = addrel (new_rec_ptr, 6); 301 /* larger header */ 302 end; 303 call open_indx_file$write_indx_file (iocb_ptr, new_rec_ptr, new_record_length, code); 304 end restart_insertion; 305 306 get_ptr: 307 proc (designator_arg) returns (ptr); 308 return (addr (seg_ptr_array (des_arg.comp_num) -> seg_array (fixed (des_arg.offset)))); 309 dcl designator_arg fixed (35); 310 dcl 1 des_arg like designator_struct aligned based (addr (designator_arg)); 311 end; 312 313 get_rec_ptr: 314 proc (designator_arg) returns (ptr); 315 return (addrel (get_pointer (designator_arg), 2)); 316 dcl designator_arg fixed (35); 317 end get_rec_ptr; 318 319 get_pointer: 320 proc (designator_arg) returns (ptr); 321 return (addr (get_seg_ptr (iocb_ptr, (des_arg.comp_num)) -> seg_array (fixed (des_arg.offset)))); 322 dcl designator_arg fixed (35); 323 dcl 1 des_arg like designator_struct aligned based (addr (designator_arg)); 324 end get_pointer; 325 326 lock_record: 327 proc (designator_arg); 328 if designator_arg <= 0 329 then return; 330 blockp = get_pointer (designator_arg); 331 if blockp = null 332 then return; 333 call set_lock_$lock (blockp -> stat_structure.record_lock, 0, code); 334 if (code = 0) | (code = error_table_$invalid_lock_reset) | (code = error_table_$locked_by_this_process) 335 then do; 336 code = 0; 337 return; 338 end; 339 if file_action = reassigning_key 340 then if block_ptr ^= null 341 then if block_ptr -> record_block_structure.stationary 342 then if stacq (block_ptr -> stat_structure.record_lock, (36)"1"b, indx_cb.saved_lock_copy) 343 then ; /* invalidate other lock, if I set it */ 344 code = error_table_$file_busy; 345 call restore_restart_proc_info; 346 go to exit; 347 dcl designator_arg fixed (35); 348 dcl blockp ptr; 349 end lock_record; 350 351 abort_exit: 352 code = error_table_$file_is_full; 353 call restore_restart_proc_info; 354 if (file_action ^= replace_action) 355 then return; 356 block_ptr = get_pointer (file_base.old_record_designator); 357 if stacq (block_ptr -> stat_block.record_lock, (36)"1"b, indx_cb.saved_lock_copy) 358 then ; /* invalidate record lock */ 359 exit: 360 return; /* abort with error code set */ 361 362 dcl current_program_version 363 static options (constant) internal fixed init (31); 364 dcl block_ptr ptr; 365 dcl new_block_ptr ptr; 366 dcl 1 stat_block based (block_ptr), 367 2 pad bit (22) unal, 368 2 lock_flag bit (1) unal, 369 2 pad2 bit (13) unal, 370 2 word, 371 2 record_lock bit (36) aligned, 372 2 modifier fixed (35); 1 1 /* include file for info structure used with record_status control order 1 2* created by M. Asherman 1/6/76 */ 1 3 /* modified 6/15/77 to support stationary type records */ 1 4 1 5 dcl rs_info_ptr ptr; 1 6 dcl 1 rs_info based (rs_info_ptr) aligned, 1 7 2 version fixed, /* must be set to 1 or 2 (Input) */ 1 8 2 flags aligned, 1 9 3 lock_sw bit (1) unal, /* Input -- if ="1"b try to lock record */ 1 10 3 unlock_sw bit (1) unal, /* Input -- if ="1"b try to unlock record */ 1 11 3 create_sw bit (1) unal, /* Input--if set creat new record */ 1 12 3 locate_sw bit (1) unal, /* Input--if set causes current rec to be 1 13* located outside the index by descrip, or created without key */ 1 14 3 inc_ref_count bit (1) unal, /* Input--bump reference count of record, if stationary */ 1 15 3 dec_ref_count bit (1) unal, /* Input--decrement ref count if this flag set and record stationary */ 1 16 3 locate_pos_sw bit (1) unal, /* Input--if set the record_length is taken 1 17* as an input argument specifying the absolute logical record positioni to which both the current and next positions will be set */ 1 18 3 mbz1 bit (29) unal, /* must be set to "0"b, reserved for future use */ 1 19 2 record_length fixed (21), /* length in bytes, Input if create_sw set */ 1 20 2 max_rec_len fixed (21), /* max length of contained record 1 21* Input if create_sw is set--overrides min_block_size in effect */ 1 22 2 record_ptr ptr, /* points to first byte of record--will be word aligned */ 1 23 2 descriptor fixed (35), /* Input if locate_sw set and create_sw="0"b */ 1 24 2 ref_count fixed (34), /* Output--should match number of keys on this record-- = -1 if non-stationary record */ 1 25 2 time_last_modified fixed (71), /* Output */ 1 26 2 modifier fixed (35), /* Output--also Input when locking */ 1 27 2 block_ptr ptr unal, /* Output */ 1 28 2 last_image_modifier 1 29 fixed (35), 1 30 2 mbz2 fixed; 1 31 1 32 dcl 1 rs_desc based (addr (rs_info.descriptor)), 1 33 /* record block descriptor structure */ 1 34 2 comp_num fixed (17) unal, /* msf component number */ 1 35 2 offset bit (18) unal; /* word offset of record block */ 1 36 1 37 dcl 1 seq_desc based (addr (rs_info.descriptor)), 1 38 /* for sequential files */ 1 39 2 bitno bit (6) unal, 1 40 2 comp_num fixed (11) unal, /* msf component number */ 1 41 2 wordno bit (18) unal; /* word offset */ 1 42 1 43 dcl rs_info_version_1 static internal fixed init (1); 1 44 dcl rs_info_version_2 static internal fixed init (2); 1 45 373 2 1 /* ak_info -- include file for info structures used by the following vfile_ 2 2* control orders: "add_key", "delete_key", "get_key", and "reassign_key". 2 3* Created by M. Asherman 3/23/76 2 4* Modified 5/13/77 to add separate gk_info structure */ 2 5 2 6 dcl 1 ak_info based (ak_info_ptr), 2 7 2 header like ak_header, 2 8 2 key char (ak_key_len refer (ak_info.header.key_len)); 2 9 2 10 dcl 1 ak_header based (ak_info_ptr), 2 11 2 flags aligned, 2 12 3 input_key bit (1) unal, /* set if key is input arg */ 2 13 3 input_desc bit (1) unal, /* set if descriptor is an input arg */ 2 14 3 mbz bit (34) unal, /* not used for the present */ 2 15 2 descrip fixed (35), /* record designator */ 2 16 2 key_len fixed; 2 17 2 18 dcl ak_info_ptr ptr; 2 19 dcl ak_key_len fixed; 2 20 2 21 2 22 dcl 1 rk_info based (rk_info_ptr), 2 23 2 header like rk_header, 2 24 2 key char (rk_key_len refer (rk_info.header.key_len)); 2 25 2 26 dcl 1 rk_header based (rk_info_ptr), 2 27 2 flags aligned, 2 28 3 input_key bit (1) unal, /* same as above */ 2 29 3 input_old_desc bit (1) unal, /* set if specified entry has initial descrip 2 30* given by old_descrip */ 2 31 3 input_new_desc bit (1) unal, /* set if new val for descrip is input in this struc */ 2 32 3 mbz bit (33) unal, 2 33 2 old_descrip fixed (35), /* used if first flag is set */ 2 34 2 new_descrip fixed (35), /* used only if second flag is set */ 2 35 2 key_len fixed; 2 36 2 37 dcl rk_info_ptr ptr; 2 38 dcl rk_key_len fixed; 2 39 2 40 2 41 dcl 1 gk_info based (gk_info_ptr), /* structure for get_key order */ 2 42 2 header like gk_header, 2 43 2 key char (gk_key_len refer (gk_info.header.key_len)); 2 44 /* may be Input as well as Output */ 2 45 2 46 dcl 1 gk_header based (gk_info_ptr), 2 47 2 flags aligned, 2 48 3 input_key bit (1) unal, /* if set, use key in this structure */ 2 49 3 input_desc bit (1) unal, /* if set, descriptor given in this structure */ 2 50 3 desc_code fixed (2) unal, /* 0=any, 1=current -- applies when input_desc="0"b */ 2 51 3 position_specification 2 52 unal, 2 53 4 current bit (1) unal, /* otherwise next */ 2 54 4 rel_type fixed (2) unal, /* as in seek_head, if input_key = "1"b */ 2 55 4 head_size fixed bin (9) unsigned unaligned, 2 56 /* size of head for initial seek */ 2 57 3 reset_pos bit (1) unal, /* if set, final position unchanged by this operation */ 2 58 3 pad bit (8) unal, 2 59 3 version fixed (8) unal, 2 60 2 descrip fixed (35), /* Output, except when input_desc="1"b */ 2 61 2 key_len fixed; /* Input when input_key="1"b, also Output in all cases */ 2 62 2 63 dcl gk_info_ptr ptr; 2 64 dcl gk_key_len fixed; 2 65 2 66 dcl gk_info_version_0 internal static fixed options (constant) init (0); 2 67 2 68 /* end ak_info.incl.pl1 */ 374 375 dcl 1 rk_inf, 376 2 header like rk_header; 377 dcl 1 ak_inf based (addr (rk_inf)), 378 2 header like ak_header; 379 dcl 1 rs_inf like rs_info; 380 dcl sub_err_ entry options (variable); 3 1 /* Include File of error codes used by vfile_ and related programs */ 3 2 /* Created by M. Asherman 5/20/78 */ 3 3 dcl (error_table_$no_key, error_table_$file_busy, error_table_$segknown, error_table_$not_open, error_table_$noentry, 3 4 error_table_$no_file, error_table_$no_record, error_table_$not_detached, error_table_$not_closed, 3 5 error_table_$noarg, error_table_$too_many_args, error_table_$bad_file, error_table_$end_of_info, 3 6 error_table_$invalid_lock_reset, error_table_$lock_wait_time_exceeded, error_table_$last_reference, 3 7 error_table_$higher_inconsistency, error_table_$record_busy, error_table_$no_room_for_lock, 3 8 error_table_$lock_is_invalid, error_table_$unimplemented_version, error_table_$lock_not_locked, 3 9 error_table_$key_duplication, error_table_$bad_processid, error_table_$bad_arg, 3 10 error_table_$locked_by_this_process, error_table_$no_operation, error_table_$asynch_insertion, 3 11 error_table_$asynch_change, error_table_$too_many_refs, error_table_$asynch_deletion, error_table_$long_record, 3 12 error_table_$file_is_full, error_table_$key_order) 3 13 external fixed (35); 3 14 /* end of vfile_ error code include file */ 381 382 dcl pos_ptr ptr defined (file_position_ptr); 383 dcl code fixed (35); 384 dcl iocb_ptr ptr; 385 dcl open_indx_file$rewrite_indx_file 386 entry (ptr, ptr, fixed (21), fixed (35)); 387 dcl open_indx_file$adjust_record 388 entry (ptr, fixed (35), fixed (35), fixed (35)); 389 dcl open_indx_file$write_indx_file 390 entry (ptr, ptr, fixed (21), fixed (35)); 391 dcl open_indx_file$delete_indx_file 392 entry (ptr, fixed (35)); 393 dcl open_indx_file$control_indx_file 394 entry (ptr, char (*), ptr, fixed (35)); 395 dcl (old_rec_ptr, new_rec_ptr) 396 ptr; 397 dcl 1 old_rec_des like designator_struct aligned based (addr (old_record_designator)); 398 dcl was_ks_out bit (1) aligned; 399 dcl saved_subset_selected bit (2) aligned; 400 dcl my_min_res fixed (21); 401 dcl my_min_cap fixed (19); 402 dcl was_stat bit (1) aligned; 403 dcl was_dup_ok bit (1) aligned; 404 dcl was_trans bit (1) aligned; 405 dcl 1 saved_state like indx_cb.state_vars; 406 dcl old_mode fixed; 4 1 4 2 dcl 1 iocb aligned based (iocb_ptr), 4 3 /* I/O control block. */ 4 4 2 iocb_version fixed init (1), /* Version number of structure. */ 4 5 2 name char (32), /* I/O name of this block. */ 4 6 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 4 7 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 4 8 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 4 9 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 4 10 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 4 11 2 reserved bit (72), /* Reserved for future use. */ 4 12 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 4 13 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 4 14 /* open(p,mode,not_used,s) */ 4 15 2 close entry (ptr, fixed (35)),/* close(p,s) */ 4 16 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 17 /* get_line(p,bufptr,buflen,actlen,s) */ 4 18 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 19 /* get_chars(p,bufptr,buflen,actlen,s) */ 4 20 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 4 21 /* put_chars(p,bufptr,buflen,s) */ 4 22 2 modes entry (ptr, char (*), char (*), fixed (35)), 4 23 /* modes(p,newmode,oldmode,s) */ 4 24 2 position entry (ptr, fixed, fixed (21), fixed (35)), 4 25 /* position(p,u1,u2,s) */ 4 26 2 control entry (ptr, char (*), ptr, fixed (35)), 4 27 /* control(p,order,infptr,s) */ 4 28 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 4 29 /* read_record(p,bufptr,buflen,actlen,s) */ 4 30 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 4 31 /* write_record(p,bufptr,buflen,s) */ 4 32 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 4 33 /* rewrite_record(p,bufptr,buflen,s) */ 4 34 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 4 35 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 4 36 /* seek_key(p,key,len,s) */ 4 37 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 4 38 /* read_key(p,key,len,s) */ 4 39 2 read_length entry (ptr, fixed (21), fixed (35)); 4 40 /* read_length(p,len,s) */ 4 41 407 5 1 /* the control block */ 5 2 dcl indx_cb_ptr ptr; 5 3 dcl 1 indx_cb based (indx_cb_ptr), /* except as noted, init by create cb */ 5 4 2 fcb_ptr ptr, 5 5 2 file_base_ptr ptr, 5 6 2 node_length fixed, /* number of bytes in node, init by create_seg_ptrs */ 5 7 2 half_node_length fixed, /* init by create_seg_ptrs */ 5 8 2 max_record_size fixed (21), /* init by create_seg_ptrs */ 5 9 2 seg_ptr_array_ptr ptr, /* init by create seg_ptrs */ 5 10 2 seg_ptr_array_limit 5 11 fixed, /* init by create seg_ptrs */ 5 12 2 mode fixed, 5 13 2 is_sequential_open bit (1) aligned, 5 14 2 is_read_only bit (1) aligned, 5 15 2 is_ks_out bit (1) aligned, /* position info */ 5 16 2 position_stack_ptr ptr, /* init by create_position stack */ 5 17 2 position_stack_height 5 18 fixed, /* init by create position stack */ 5 19 2 root_position_ptr ptr, /* init by create_position_stack */ 5 20 2 file_position_ptr ptr, /* not init */ 5 21 2 change_position_ptr 5 22 ptr, /* not init */ 5 23 /* auxiliary variables */ 5 24 2 rover_seg_ptr ptr, /* init by create_seg_ptrs */ 5 25 2 index_state_ptr ptr, /* init by create_seg_ptrs */ 5 26 2 old_index_height fixed, 5 27 2 old_last_comp_num fixed, 5 28 2 last_change_count fixed (35), 5 29 2 wait_time fixed (35), 5 30 2 old_rover_comp_num fixed, 5 31 2 file_state_ptr ptr, 5 32 2 o_s_ptr ptr, 5 33 2 repeating bit (1) aligned, 5 34 2 next_substate fixed, 5 35 2 file_program_version 5 36 fixed, /* used for record_lock compatibility */ 5 37 2 leave_locked bit (1) aligned, /* indicates use of set_file_lock order */ 5 38 2 dup_ok bit (1) aligned, /* if set, duplicate keys may occur */ 5 39 2 read_exclu bit (1) aligned, /* set when lock excludes readers */ 5 40 2 pos_incorrect bit (1) aligned, /* indicates index position is not current */ 5 41 2 saved_lock_copy bit (36) aligned, /* copy of process lock_id */ 5 42 2 min_key_len fixed, /* non-zero only in old programs */ 5 43 2 stat bit (1) aligned, /* causes write_record to create stationary records */ 5 44 2 current_subset fixed (34), /* used with select order */ 5 45 2 last_subset fixed (34), 5 46 2 subset_count fixed (34), /* count of descriptors in current subset */ 5 47 2 temp_iocbp ptr, /* temporary file used to implement select order */ 5 48 2 trans bit (1) aligned, /* set if -transaction attachment */ 5 49 2 transaction_code fixed (35), /* set for control switch only */ 5 50 2 tcfp ptr, /* ptr to iocb for transaction control switch--if applicable */ 5 51 2 reflp ptr, /* ptr to ref list file, set only in transaction control file */ 5 52 2 uid bit (36) aligned, /* used under -transaction */ 5 53 2 collection_delay_time 5 54 fixed (35), /* microseconds to wait before garbage removal */ 5 55 2 min_res fixed (21), /* for min_block_size order */ 5 56 2 min_cap fixed (21), /* also for min_block_size order */ 5 57 2 subset_selected bit (2) aligned, /* first bit for select, second 5 58* bit is for exclude */ 5 59 2 error, /* for error_status order */ 5 60 3 type fixed, /* only one error type supported now */ 5 61 3 requested fixed (34), /* skip arg given to position entry */ 5 62 3 received fixed (34), /* actual successful skips */ 5 63 2 state_vars, 5 64 3 fixed_state_part, 5 65 4 shared bit (1) aligned, 5 66 4 next_record_position 5 67 fixed, /* 0, 1, or 2 */ 5 68 4 current_record_is_valid 5 69 bit (1) aligned, 5 70 4 ready_to_write bit (1) aligned, 5 71 4 at_eof_or_bof, 5 72 5 at_bof bit (1) unal, 5 73 5 at_eof bit (1) unal, 5 74 5 pad bit (36) unal, 5 75 4 outside_index bit (1) aligned, /* set after deleting current key or after use of record_status with locate switch */ 5 76 4 current_descrip 5 77 fixed (35), /* needed when outside index */ 5 78 4 saved_descrip fixed (35), /* for restoring index position */ 5 79 4 skip_state fixed, /* controls scanning of deleted entries */ 5 80 3 new_key char (256) var; 5 81 5 82 dcl current_t_code fixed (35) based (addr (indx_cb.tcfp -> iocb.open_data_ptr -> indx_cb.transaction_code)); 5 83 5 84 /* component locator structures */ 5 85 dcl seg_ptr_array (0:seg_ptr_array_limit) ptr based (seg_ptr_array_ptr); 5 86 dcl seg_ptr ptr; 5 87 dcl seg_array (0:262143) fixed (19) based (seg_ptr) aligned; 5 88 dcl designator fixed (35); 5 89 dcl 1 ind_des_structure based, 5 90 2 comp fixed (17) unal, 5 91 2 offset bit (18) unal; 5 92 dcl 1 stat_structure based, 5 93 2 pad bit (26) unal, 5 94 2 ref_count_after fixed (16) unsigned unal, 5 95 2 ind_comp fixed (13) unal, 5 96 2 ref_count fixed (16) unsigned unal, 5 97 2 record_lock bit (36) aligned, 5 98 2 modifier fixed (35), 5 99 2 time_stamp_words fixed (71) aligned, 5 100 2 prev_mod fixed (35), 5 101 2 record char (1000000) var; 5 102 dcl 1 ind_structure based, 5 103 2 pad bit (26) unal, 5 104 2 ref_count_after fixed (16) unsigned unal, 5 105 2 ind_comp fixed (13) unal, 5 106 2 ref_count fixed (16) unsigned unal, 5 107 2 record_lock bit (36) aligned, 5 108 2 modifier fixed (35), 5 109 2 time_stamp_words fixed (71) aligned, 5 110 2 prev_mod fixed (35), 5 111 2 prev_desc fixed (35); 5 112 dcl 1 time_stamp_structure based, 5 113 2 ind_offset bit (18) unal, 5 114 2 time_last_modified fixed (54) unsigned unal; 5 115 dcl 1 record_block_structure 5 116 based, 5 117 2 reserved aligned, /* data used by change_record_list */ 5 118 3 pad bit (2) unal, 5 119 3 block_size fixed (19) unal, 5 120 3 lock_flag bit (1) unal, /* record lock flag */ 5 121 3 stationary bit (1) unal, 5 122 3 indirect bit (1) unal, 5 123 3 after_applies bit (1) unal, 5 124 3 mbz bit (10) unal, 5 125 2 block_tail, /* structure varies with record type */ 5 126 3 record char (1000000) var; /* non-stat record location */ 5 127 dcl 1 designator_struct aligned based (addr (designator)), 5 128 2 comp_num fixed (17) unal, 5 129 2 offset bit (18) unal; 5 130 5 131 /* position and node templates */ 5 132 dcl 1 position_frame based (pos_ptr), /* ref8 */ 5 133 2 parent_position_ptr 5 134 ptr, 5 135 2 son_position_ptr ptr, 5 136 2 node_ptr ptr, 5 137 2 node fixed (35), 5 138 2 branch_num fixed; 5 139 dcl 1 node_block based (node_ptr), /* ref9) */ 5 140 2 last_branch_num fixed, 5 141 2 low_key_pos fixed, 5 142 2 scat_space fixed, 5 143 2 branch_and_descrip (1 refer (node_block.last_branch_num)), 5 144 /* in last element only branch is used */ 5 145 3 branch fixed (35), 5 146 3 descrip, 5 147 4 key_descrip, 5 148 5 key_pos fixed (17) unal, 5 149 5 key_length fixed (17) unal, 5 150 4 record_descrip, 5 151 5 record_designator 5 152 fixed (35); 5 153 dcl keys char (4096 /* 4*node_size */) based (node_ptr); 5 154 5 155 /* file base and states */ 5 156 dcl f_b_ptr ptr; 5 157 dcl 1 file_base based (f_b_ptr), /* ref10 */ 5 158 2 common_header, 5 159 3 file_code fixed (35), 5 160 3 lock_word bit (36) aligned, 5 161 3 words (2) fixed, 5 162 2 file_version fixed, 5 163 2 program_version fixed, 5 164 2 node_size fixed (19), 5 165 2 minimum_key_length fixed, 5 166 2 minimum_block_size fixed (19), 5 167 2 max_seg_limit fixed (19), 5 168 2 root_node_block, 5 169 3 last_branch_num_root 5 170 fixed, /* =1 */ 5 171 3 word fixed, 5 172 3 reserved fixed, 5 173 3 only_branch_in_root 5 174 fixed (35), 5 175 2 file_state fixed, 5 176 2 change_count fixed (34), /* record state info, ref12 */ 5 177 2 old_number_of_free_blocks 5 178 fixed (34), 5 179 2 prior_block_size fixed (19), 5 180 2 old_record_length fixed (21), 5 181 2 need_new_seg bit (1) aligned, 5 182 2 old_residue fixed, 5 183 2 new_last_comp_num fixed, 5 184 2 old_prev_free_block 5 185 fixed (18), 5 186 2 old_next_free_block 5 187 fixed (18), 5 188 2 new_record_length fixed (21), 5 189 2 old_record_designator 5 190 fixed (35), 5 191 2 prec_block_was_free 5 192 bit (1) aligned, 5 193 2 next_block_was_free 5 194 bit (1) aligned, 5 195 2 former_block_size fixed (19), 5 196 2 old_init_offset fixed (18), 5 197 2 old_block_size fixed (19), 5 198 2 prev_block_size fixed (19), 5 199 2 former_rover_comp_num 5 200 fixed, 5 201 2 former_rover_offset 5 202 fixed (18), 5 203 2 next_block_size fixed (19), 5 204 2 next_prev_free_block 5 205 fixed (18), 5 206 2 next_next_free_block 5 207 fixed (18), 5 208 2 saved_ks_out bit (1) aligned, 5 209 2 new_descriptor fixed (35), 5 210 2 old_last_branch_num 5 211 fixed, 5 212 2 old_low_key_pos fixed, 5 213 2 old_scat_space fixed, 5 214 2 old_key_pos fixed, 5 215 2 rover_comp_num fixed, 5 216 2 rover_offset fixed (18), 5 217 2 old_key_length fixed, 5 218 2 b_space fixed, 5 219 2 last_b_num fixed, 5 220 2 count fixed, 5 221 2 first_count fixed, 5 222 2 second_count fixed, 5 223 2 split_num fixed, 5 224 2 must_compact_dest bit (1) aligned, 5 225 2 first_branch fixed (35), 5 226 2 min_source_key_pos fixed, 5 227 2 min_dest_key_pos fixed, 5 228 2 new_low_key_pos fixed, 5 229 2 new_scat_space fixed, 5 230 2 old_seg_lim fixed (19), 5 231 2 old_number_of_free_nodes 5 232 fixed, 5 233 2 old_next_node_designator 5 234 fixed (35), 5 235 2 new_index_comp_num fixed, 5 236 2 out_of_index bit (1) aligned, 5 237 2 saved_min_res fixed (21), 5 238 2 saved_min_cap fixed (21), 5 239 2 was_stat bit (1) aligned, 5 240 2 was_ind bit (1) aligned, 5 241 2 old_ind_desc fixed (35), 5 242 2 after_desc fixed (35), 5 243 2 old_ref_count fixed (34), 5 244 2 new_ref_count fixed (34), 5 245 2 old_num_free fixed (34), 5 246 2 old_file_ch_count fixed (35), 5 247 2 y_count, /* for conversion of pre-MR6.9 files */ 5 248 2 old_modifier fixed (35), 5 249 2 was_transaction bit (1) aligned, /* state blocks */ 5 250 2 index_state fixed, 5 251 2 index_state_blocks (0:1), 5 252 3 words (104), 5 253 2 reserved (30), /* this free space might come in handy */ 5 254 2 old_prev_mod fixed (35), 5 255 2 needed_blksz fixed (35), 5 256 2 new_desc_val fixed (35), 5 257 2 is_partial_deletion 5 258 bit (1) aligned, 5 259 2 reserved2 (42), 5 260 2 file_state_blocks (0:1), 5 261 3 words (size (file_state_block)) fixed, 5 262 /* component info */ 5 263 2 max_comp_num fixed, 5 264 2 last_comp_num fixed, 5 265 2 first_free_comp_num, /* not yet supported */ 5 266 2 comp_table_start (size (comp_table)); /* start of comp_array */ 5 267 5 268 dcl 1 comp_table (0:true_max_comp_num) based (addr (file_base.comp_table_start)) aligned, 5 269 2 seg_limit fixed (19), /* abs value is offset of first free word in seg, max val=max 5 270* seg_limit and this indicates full seg */ 5 271 2 comp_link fixed (17) unal, 5 272 2 init_offset fixed (18) unsigned unal; 5 273 5 274 dcl 1 file_header based (f_b_ptr), 5 275 2 first_three_pages (3, 1024) fixed, 5 276 2 spare_node char (4096) aligned; 5 277 5 278 /* The File State */ 5 279 dcl fs_ptr ptr; 5 280 dcl 1 file_state_block based (fs_ptr), 5 281 2 file_action fixed, 5 282 2 file_substate fixed, 5 283 2 number_of_keys fixed (34), 5 284 2 duplicate_keys fixed (34), /* 0 if no duplications */ 5 285 2 dup_key_bytes fixed (34), 5 286 2 total_key_length fixed (34), 5 287 2 number_of_records fixed (34), 5 288 2 total_record_length 5 289 fixed (34), 5 290 2 number_of_allocated_records 5 291 fixed (34), 5 292 2 number_of_free_blocks 5 293 fixed (34), 5 294 2 words (2) fixed; 5 295 5 296 /* The Index State */ 5 297 dcl is_ptr ptr; 5 298 dcl 1 index_state_block based (is_ptr), /* if this declaration is changed, 5 299* index_state_blocks must be adjusted */ 5 300 2 number_of_nodes fixed (34), 5 301 2 free_node_designator 5 302 fixed (35), 5 303 2 index_tail_comp_num 5 304 fixed, 5 305 2 index_height fixed, 5 306 2 index_action fixed, 5 307 2 index_substate fixed, 5 308 2 current_node fixed (35), 5 309 2 change_node fixed (35), 5 310 2 fake_node, /* equivalent to a short node because of storage map. It holds 5 311* the new key, new record descrip, and new branch in a fashion 5 312* convenient for overflow-underflow in change_index. */ 5 313 3 fake_head_and_descrip, 5 314 4 word1 fixed, /* last_branch_num in real node */ 5 315 4 word2 fixed, /* low_key_pos in real node */ 5 316 4 word3 fixed, /* normally scat_space */ 5 317 4 word4 fixed, /* first branch in real node */ 5 318 4 new_key_pos fixed (17) unal, /* set by initializefile to denote first char 5 319* in new_key_string, never changed */ 5 320 4 new_key_length fixed (17) unal, 5 321 4 new_record_descrip, 5 322 5 new_record_designator 5 323 fixed (35), 5 324 4 new_branch fixed (35), 5 325 3 new_key_string char (256), 5 326 2 branch_num_adjust fixed, 5 327 2 pos_array (10), 5 328 3 saved_node fixed (35), 5 329 3 saved_branch_num fixed; 5 330 5 331 dcl 1 old_file_base based (f_b_ptr), 5 332 2 words1 (15) fixed, /* same in both file versions */ 5 333 2 old_file_state_blocks 5 334 (0:1), 5 335 3 words (5) fixed, 5 336 2 words2 (7) fixed, 5 337 2 record_state fixed, 5 338 2 record_state_blocks 5 339 (0:1), 5 340 3 words (4) fixed, 5 341 2 words3 (14) fixed, /* rover info same in both versions */ 5 342 2 old_version_index_height 5 343 fixed, 5 344 2 old_version_number_of_nodes 5 345 fixed (34), 5 346 2 words4 (157) fixed, 5 347 2 old_version_index_tail_comp_num 5 348 fixed, 5 349 2 old_version_free_node_designator 5 350 fixed (35), 5 351 2 words5 (10) fixed, 5 352 2 old_version_comp_info 5 353 fixed, 5 354 2 word, 5 355 2 x_count fixed; /* always zero in old version files */ 5 356 5 357 /* External Procedures */ 5 358 dcl clock_ entry returns (fixed (71)); 5 359 dcl alloc_cb_file entry (fixed, /* size of block in words */ 5 360 ptr); /* ptr to block */ 5 361 dcl free_cb_file entry (fixed, ptr); 5 362 dcl get_seg_ptr entry (ptr, fixed) returns (ptr); 5 363 dcl make_designator entry (fixed, fixed (18), fixed (35)); 5 364 dcl create_seg_ptrs entry (ptr); 5 365 dcl free_seg_ptrs entry (ptr); 5 366 dcl get_new_seg entry (ptr, fixed, ptr, fixed, label); 5 367 dcl free_seg entry (ptr, fixed, ptr); 5 368 dcl set_bitcounts entry (ptr); 5 369 dcl create_position_stack entry (ptr); 5 370 dcl extend_position_stack entry (ptr); 5 371 dcl free_position_stack entry (ptr); 5 372 dcl change_index entry (ptr, label); 5 373 dcl change_record_list entry (ptr, fixed, ptr, label); 5 374 5 375 /* State Constants */ 6 1 dcl bumping_count static internal options (constant) init (-14); 6 2 dcl rollback_action static options (constant) init (-13); 6 3 dcl adjust_action static options (constant) init (-12); 6 4 dcl unshared_opening static internal fixed options (constant) init (-11); 6 5 dcl non_eof_delete static internal fixed options (constant) init (-10); 6 6 dcl free_action static options (constant) init (-10); 6 7 dcl write_trunc static internal fixed options (constant) init (-9); 6 8 dcl allocate_action static options (constant) init (-9); 6 9 dcl reassigning_key static options (constant) init (-8); 6 10 dcl read_exclude static options (constant) init (-7); 6 11 dcl adding_record static options (constant) init (-6); 6 12 dcl deleting_key static options (constant) init (-5); 6 13 dcl adding_key static options (constant) init (-4); 6 14 dcl delete_action static options (constant) init (-3); 6 15 dcl eof_delete static internal fixed options (constant) init (-3); 6 16 dcl replace_action static options (constant) init (-2); 6 17 dcl rewrite_action static internal fixed options (constant) init (-2); 6 18 dcl insert_action static options (constant) init (-1); 6 19 dcl append_action static internal fixed options (constant) init (-1); 6 20 dcl truncate_action static internal fixed options (constant) init (1); 6 21 dcl must_adjust static internal fixed options (constant) init (2); 6 22 dcl must_rollback static internal fixed options (constant) init (3); 5 376 5 377 5 378 /* Other constants */ 5 379 dcl true_max_comp_num static options (constant) init (1250); 5 380 dcl stat_header_size static internal fixed options (constant) init (8); 5 381 5 382 /* builtins */ 5 383 dcl (verify, reverse) builtin; 5 384 dcl addr builtin; 5 385 dcl divide builtin; 5 386 dcl length builtin; 5 387 dcl null builtin; 5 388 dcl substr builtin; 5 389 dcl size builtin; 5 390 dcl abs builtin; 5 391 dcl unspec builtin; 5 392 dcl fixed builtin; 5 393 dcl bit builtin; 5 394 dcl max builtin; 5 395 dcl min builtin; 5 396 dcl rel builtin; 5 397 408 409 dcl cleanup condition; 410 dcl set_lock_$lock entry (bit (36) aligned, fixed, fixed (35)); 411 dcl (addrel, stacq, string) builtin; 412 413 end restart; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/16/90 1518.1 restart.pl1 >spec>install>1043>restart.pl1 373 1 07/19/79 1647.0 rs_info.incl.pl1 >ldd>include>rs_info.incl.pl1 374 2 07/19/79 1647.0 ak_info.incl.pl1 >ldd>include>ak_info.incl.pl1 381 3 07/19/79 1647.0 vfile_error_codes.incl.pl1 >ldd>include>vfile_error_codes.incl.pl1 407 4 07/02/81 2005.0 iocbv.incl.pl1 >ldd>include>iocbv.incl.pl1 408 5 07/19/79 1647.0 vfile_indx.incl.pl1 >ldd>include>vfile_indx.incl.pl1 5-376 6 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. adding_key 002274 constant fixed bin(17,0) initial dcl 6-13 ref 75 adding_record 002276 constant fixed bin(17,0) initial dcl 6-11 ref 84 131 addr builtin function dcl 5-384 ref 162 163 163 163 163 190 190 199 268 268 308 308 308 321 321 321 addrel builtin function dcl 411 ref 299 315 adjust_action 002300 constant fixed bin(17,0) initial dcl 6-3 ref 49 ak_header based structure level 1 unaligned dcl 2-10 ak_inf based structure level 1 unaligned dcl 377 set ref 163 163 allocate_action 000000 constant fixed bin(17,0) initial dcl 6-8 set ref 173* 220* block_ptr 000100 automatic pointer dcl 364 set ref 223 224 229* 230 231 255* 256 256 339 339 339 356* 357 blockp 000402 automatic pointer dcl 348 set ref 330* 331 333 branch_and_descrip 3 based structure array level 2 unaligned dcl 5-139 branch_num 7 based fixed bin(17,0) level 2 dcl 5-132 set ref 141* 202 202 202 202 247* bumping_count 002302 constant fixed bin(17,0) initial dcl 6-1 ref 86 225 290 change_count 17 based fixed bin(34,0) level 2 dcl 5-157 set ref 88* 176* 212 226* 273 291* change_node 7 based fixed bin(35,0) level 2 dcl 5-298 ref 145 change_position_ptr 30 based pointer level 2 dcl 5-3 set ref 136* 145* change_record_list 000040 constant entry external dcl 5-373 ref 173 177 220 221 284 288 cleanup 000266 stack reference condition dcl 409 ref 33 code parameter fixed bin(35,0) dcl 383 set ref 27 54* 73* 82* 91* 94* 96 96* 163* 190* 202* 207* 240* 268* 303* 333* 334 334 334 336* 344* 351* comp_num based fixed bin(17,0) level 2 in structure "des_arg" packed packed unaligned dcl 310 in procedure "get_ptr" ref 308 comp_num based fixed bin(17,0) level 2 in structure "des_arg" packed packed unaligned dcl 323 in procedure "get_pointer" ref 321 count 60 based fixed bin(17,0) level 2 dcl 5-157 ref 247 create_sw 1(02) 000110 automatic bit(1) level 3 packed packed unaligned dcl 379 set ref 187* current_descrip 115 based fixed bin(35,0) level 4 dcl 5-3 set ref 39* 158* 159* current_node 6 based fixed bin(35,0) level 2 dcl 5-298 ref 143 current_record_is_valid 110 based bit(1) level 4 dcl 5-3 set ref 45* delete_action 000014 constant fixed bin(17,0) initial dcl 6-14 set ref 64 131 177* 288* deleting_key 002275 constant fixed bin(17,0) initial dcl 6-12 ref 77 des_arg based structure level 1 dcl 310 in procedure "get_ptr" des_arg based structure level 1 dcl 323 in procedure "get_pointer" descrip 4 based structure array level 3 unaligned dcl 5-139 designator_arg parameter fixed bin(35,0) dcl 309 in procedure "get_ptr" set ref 306 308 308 designator_arg parameter fixed bin(35,0) dcl 347 in procedure "lock_record" set ref 326 328 330* designator_arg parameter fixed bin(35,0) dcl 322 in procedure "get_pointer" set ref 319 321 321 designator_arg parameter fixed bin(35,0) dcl 316 in procedure "get_rec_ptr" set ref 313 315* designator_struct based structure level 1 dcl 5-127 divide builtin function dcl 5-385 ref 199 dup_ok 54 based bit(1) level 2 dcl 5-3 set ref 47* 108 124* error_table_$bad_file 000014 external static fixed bin(35,0) dcl 3-3 ref 91 96 error_table_$file_busy 000012 external static fixed bin(35,0) dcl 3-3 ref 344 error_table_$file_is_full 000022 external static fixed bin(35,0) dcl 3-3 ref 351 error_table_$invalid_lock_reset 000016 external static fixed bin(35,0) dcl 3-3 ref 334 error_table_$locked_by_this_process 000020 external static fixed bin(35,0) dcl 3-3 ref 334 f_b_ptr 000260 automatic pointer dcl 5-156 set ref 30* 36 37 38 39 40 51 51 51 54 66 66 66 66 66 66 80 80 88 88 121 150 158 159 168 174 174 175 176 176 181 181 183 184 186 186 188 196 198 199 199 199 202 202 202 202 202 207 211 212 212 215 220* 226 226 229 236 236 240 246 247 253 255 256 259 260 266 273 273 276 276 276 276 285 285 286 287 291 291 295 298 299 303 356 file_action based fixed bin(17,0) level 2 dcl 5-280 set ref 49 49 51 56 58 62 64 75 77 84 86 89* 94 131 131 178* 225* 227* 290* 292* 339 354 file_base based structure level 1 unaligned dcl 5-157 file_base_ptr 2 based pointer level 2 dcl 5-3 ref 30 199 file_position_ptr 26 based pointer level 2 dcl 5-3 set ref 135* 143* 202 202 202 202 202 202 202 202 202 202 202 202 202 202 202 202 202 202 202 202 245* 246 246 247 247 248 248 248 248 file_state_block based structure level 1 unaligned dcl 5-280 set ref 121 file_state_ptr 44 based pointer level 2 dcl 5-3 ref 31 94 file_substate 1 based fixed bin(17,0) level 2 dcl 5-280 ref 170 202 217 280 first_branch 65 based fixed bin(35,0) level 2 dcl 5-157 ref 246 fixed builtin function dcl 5-392 ref 66 199 308 321 fixed_state_part 106 based structure level 3 unaligned dcl 5-3 flags 1 000110 automatic structure level 2 in structure "rs_inf" dcl 379 in procedure "restart" set ref 185* flags 000104 automatic structure level 3 in structure "rk_inf" dcl 375 in procedure "restart" set ref 265* flags based structure level 3 in structure "ak_inf" dcl 377 in procedure "restart" set ref 162* free_action 000001 constant fixed bin(17,0) initial dcl 6-6 set ref 221* fs_ptr 000262 automatic pointer dcl 5-279 set ref 31* 49 49 51 56 58 62 64 75 77 84 86 89 121 131 131 170 178 202 217 225 227 280 290 292 339 354 get_seg_ptr 000036 constant entry external dcl 5-362 ref 321 gk_header based structure level 1 unaligned dcl 2-46 header 000104 automatic structure level 2 in structure "rk_inf" unaligned dcl 375 in procedure "restart" header based structure level 2 in structure "ak_inf" unaligned dcl 377 in procedure "restart" i 000304 automatic fixed bin(17,0) dcl 153 set ref 138* 140 141* inc_ref_count 1(04) 000110 automatic bit(1) level 3 packed packed unaligned dcl 379 set ref 186* index_height 3 based fixed bin(17,0) level 2 dcl 5-298 ref 138 index_state_block based structure level 1 unaligned dcl 5-298 index_state_ptr 34 based pointer level 2 dcl 5-3 ref 133 indx_cb based structure level 1 unaligned dcl 5-3 indx_cb_ptr 000256 automatic pointer dcl 5-2 set ref 29* 30 31 35 36 37 38 39 40 41 42 43 44 45 46 47 48 79 94 102 103 104 105 106 107 108 109 110 115 116 117 118 119 120 122 123 124 125 126 131 133 134 135 136 143 145 150 151 158 159 161 170 172 199 202 202 202 202 202 202 202 202 202 202 202 215 215 217 219 231 245 245 246 247 248 248 264 280 282 308 339 357 insert_action 000016 constant fixed bin(17,0) initial dcl 6-18 set ref 62 284* iocb based structure level 1 dcl 4-2 iocb_ptr parameter pointer dcl 384 set ref 27 29 54* 73* 82* 163* 173* 177* 190* 220* 221* 240* 268* 284* 288* 303* 321* is_ks_out 16 based bit(1) level 2 dcl 5-3 set ref 104 118* 150* is_partial_deletion 476 based bit(1) level 2 dcl 5-157 set ref 66 287* is_ptr 000264 automatic pointer dcl 5-297 set ref 133* 138 140 141 143 145 key_descrip 4 based structure array level 4 packed packed unaligned dcl 5-139 key_length 4(18) based fixed bin(17,0) array level 5 packed packed unaligned dcl 5-139 ref 202 202 key_pos 4 based fixed bin(17,0) array level 5 packed packed unaligned dcl 5-139 ref 202 202 keys based char(4096) packed unaligned dcl 5-153 ref 202 202 locate_sw 1(03) 000110 automatic bit(1) level 3 packed packed unaligned dcl 379 set ref 188* lock_flag 0(22) based bit(1) level 2 packed packed unaligned dcl 366 set ref 223* max_comp_num based fixed bin(17,0) level 2 dcl 5-157 set ref 121* max_rec_len 3 000110 automatic fixed bin(21,0) level 2 dcl 379 set ref 184* max_seg_limit 11 based fixed bin(19,0) level 2 dcl 5-157 ref 199 min_cap 101 based fixed bin(21,0) level 2 dcl 5-3 set ref 37* 106 120* 215 min_res 100 based fixed bin(21,0) level 2 dcl 5-3 set ref 36* 105 119* 215 mode 13 based fixed bin(17,0) level 2 dcl 5-3 set ref 35* 110 126* modifier 3 based fixed bin(35,0) level 2 in structure "stat_structure" dcl 5-92 in procedure "restart" set ref 224* modifier 3 based fixed bin(35,0) level 2 in structure "stat_block" dcl 366 in procedure "restart" set ref 230* my_min_cap 000135 automatic fixed bin(19,0) dcl 401 set ref 106* 120 my_min_res 000134 automatic fixed bin(21,0) dcl 400 set ref 105* 119 new_block_ptr 000102 automatic pointer dcl 365 set ref 259* 260 260 new_descrip 2 000104 automatic fixed bin(35,0) level 3 dcl 375 set ref 266* new_descriptor 46 based fixed bin(35,0) level 2 dcl 5-157 set ref 158 174 181* 202 236 236* 259* 260* 266 285 295 298* new_rec_ptr 000130 automatic pointer dcl 395 set ref 199* 201* 236* 238* 240* 295* 298* 299* 299 303* new_record_length 30 based fixed bin(21,0) level 2 dcl 5-157 set ref 183 199 202 202 215 240* 276 303* next_record_position 107 based fixed bin(17,0) level 4 dcl 5-3 set ref 48* next_substate 51 based fixed bin(17,0) level 2 dcl 5-3 set ref 172* 219* 282* node 6 based fixed bin(35,0) level 2 dcl 5-132 set ref 140* 142* 143 145 246* 248* node_block based structure level 1 unaligned dcl 5-139 node_ptr 4 based pointer level 2 dcl 5-132 set ref 142* 202 202 202 202 202 202 248* null builtin function dcl 5-387 ref 82 82 173 173 177 177 202 202 207 207 221 221 238 256 260 284 284 288 288 295 331 339 offset 0(18) based bit(18) level 2 in structure "des_arg" packed packed unaligned dcl 310 in procedure "get_ptr" ref 308 offset 0(18) based bit(18) level 2 in structure "old_rec_des" packed packed unaligned dcl 397 in procedure "restart" ref 199 offset 0(18) based bit(18) level 2 in structure "des_arg" packed packed unaligned dcl 323 in procedure "get_pointer" ref 321 old_file_ch_count 110 based fixed bin(35,0) level 2 dcl 5-157 ref 88 176 212 226 273 291 old_mode 000254 automatic fixed bin(17,0) dcl 406 set ref 110* 126 old_modifier 112 based fixed bin(35,0) level 2 dcl 5-157 ref 66 old_prev_mod 473 based fixed bin(35,0) level 2 dcl 5-157 ref 51 old_rec_des based structure level 1 dcl 397 old_rec_ptr 000126 automatic pointer dcl 395 set ref 198* 201 old_record_designator 31 based fixed bin(35,0) level 2 dcl 5-157 set ref 39 51* 54* 66* 80* 174* 198* 199 202 207* 211* 229* 255* 256* 285* 356* old_record_length 22 based fixed bin(21,0) level 2 dcl 5-157 ref 202 old_ref_count 105 based fixed bin(34,0) level 2 dcl 5-157 set ref 51 66 175* 186 open_data_ptr 22 based pointer level 2 dcl 4-2 ref 29 open_indx_file$adjust_record 000026 constant entry external dcl 387 ref 54 open_indx_file$control_indx_file 000034 constant entry external dcl 393 ref 82 163 190 268 open_indx_file$delete_indx_file 000032 constant entry external dcl 391 ref 73 open_indx_file$rewrite_indx_file 000024 constant entry external dcl 385 ref 240 open_indx_file$write_indx_file 000030 constant entry external dcl 389 ref 303 out_of_index 76 based bit(1) level 2 dcl 5-157 set ref 38 66 168 188 286* outside_index 114 based bit(1) level 4 dcl 5-3 set ref 38* 79* 131 161* 202 264* p 000302 automatic pointer dcl 152 set ref 134* 135 136 139* 139 140 141 142 142 143 143 145 145 pos_array 120 based structure array level 2 unaligned dcl 5-298 pos_incorrect 56 based bit(1) level 2 dcl 5-3 set ref 46* 122* pos_ptr defined pointer dcl 382 ref 202 202 202 202 202 202 202 202 202 202 246 247 248 248 position_frame based structure level 1 unaligned dcl 5-132 ready_to_write 111 based bit(1) level 4 dcl 5-3 set ref 151* reassigning_key 002277 constant fixed bin(17,0) initial dcl 6-9 ref 58 339 record_block_structure based structure level 1 unaligned dcl 5-115 record_length 2 000110 automatic fixed bin(21,0) level 2 dcl 379 set ref 183* record_lock 2 based bit(36) level 2 in structure "stat_structure" dcl 5-92 in procedure "restart" set ref 333* 339 record_lock 2 based bit(36) level 2 in structure "stat_block" dcl 366 in procedure "restart" ref 231 357 repeating 50 based bit(1) level 2 dcl 5-3 set ref 42* 117* 170* 217* 280* replace_action 002273 constant fixed bin(17,0) initial dcl 6-16 ref 56 354 reserved based structure level 2 dcl 5-115 rk_header based structure level 1 unaligned dcl 2-26 rk_inf 000104 automatic structure level 1 unaligned dcl 375 set ref 162 163 163 268 268 rollback_action 002301 constant fixed bin(17,0) initial dcl 6-2 ref 49 51 root_position_ptr 24 based pointer level 2 dcl 5-3 ref 134 245 rs_inf 000110 automatic structure level 1 unaligned dcl 379 set ref 190 190 rs_info based structure level 1 dcl 1-6 rs_info_version_2 constant fixed bin(17,0) initial dcl 1-44 ref 189 saved_branch_num 121 based fixed bin(17,0) array level 3 dcl 5-298 ref 141 saved_ks_out 45 based bit(1) level 2 dcl 5-157 ref 150 saved_lock_copy 57 based bit(36) level 2 dcl 5-3 ref 231 339 357 saved_min_cap 100 based fixed bin(21,0) level 2 dcl 5-157 ref 37 184 276 saved_min_res 77 based fixed bin(21,0) level 2 dcl 5-157 ref 36 276 saved_node 120 based fixed bin(35,0) array level 3 dcl 5-298 ref 140 saved_state 000141 automatic structure level 1 unaligned dcl 405 set ref 102* 115 saved_subset_selected 000133 automatic bit(2) dcl 399 set ref 103* 116 seg_array based fixed bin(19,0) array dcl 5-87 set ref 308 321 seg_ptr_array based pointer array dcl 5-85 ref 308 seg_ptr_array_ptr 10 based pointer level 2 dcl 5-3 ref 308 set_lock_$lock 000042 constant entry external dcl 410 ref 333 shared 106 based bit(1) level 4 dcl 5-3 set ref 43* size builtin function dcl 5-389 ref 121 son_position_ptr 2 based pointer level 2 dcl 5-132 ref 139 245 stacq builtin function dcl 411 ref 231 339 357 stat 61 based bit(1) level 2 dcl 5-3 set ref 40* 107 123* stat_block based structure level 1 unaligned dcl 366 stat_structure based structure level 1 unaligned dcl 5-92 state_vars 106 based structure level 2 unaligned dcl 5-3 set ref 102 115* stationary 0(23) based bit(1) level 3 packed packed unaligned dcl 5-115 ref 256 260 339 string builtin function dcl 411 set ref 162* 265* sub_err_ 000010 constant entry external dcl 380 ref 202 207 subset_selected 102 based bit(2) level 2 dcl 5-3 set ref 44* 103 116* substr builtin function dcl 5-388 ref 202 202 trans 70 based bit(1) level 2 dcl 5-3 set ref 41* 109 125* true_max_comp_num constant fixed bin(17,0) initial dcl 5-379 ref 121 unspec builtin function dcl 5-391 set ref 185* version 000110 automatic fixed bin(17,0) level 2 dcl 379 set ref 189* was_dup_ok 000137 automatic bit(1) dcl 403 set ref 108* 124 was_ks_out 000132 automatic bit(1) dcl 398 set ref 104* 118 was_stat 101 based bit(1) level 2 in structure "file_base" dcl 5-157 in procedure "restart" ref 40 66 80 159 181 186 196 253 276 299 was_stat 000136 automatic bit(1) dcl 402 in procedure "restart" set ref 107* 123 was_trans 000140 automatic bit(1) dcl 404 set ref 109* 125 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. abs builtin function dcl 5-390 ak_info based structure level 1 unaligned dcl 2-6 ak_info_ptr automatic pointer dcl 2-18 ak_key_len automatic fixed bin(17,0) dcl 2-19 alloc_cb_file 000000 constant entry external dcl 5-359 append_action internal static fixed bin(17,0) initial dcl 6-19 bit builtin function dcl 5-393 change_index 000000 constant entry external dcl 5-372 clock_ 000000 constant entry external dcl 5-358 comp_table based structure array level 1 dcl 5-268 create_position_stack 000000 constant entry external dcl 5-369 create_seg_ptrs 000000 constant entry external dcl 5-364 current_program_version internal static fixed bin(17,0) initial dcl 362 current_t_code based fixed bin(35,0) dcl 5-82 designator automatic fixed bin(35,0) dcl 5-88 eof_delete internal static fixed bin(17,0) initial dcl 6-15 error_table_$asynch_change external static fixed bin(35,0) dcl 3-3 error_table_$asynch_deletion external static fixed bin(35,0) dcl 3-3 error_table_$asynch_insertion external static fixed bin(35,0) dcl 3-3 error_table_$bad_arg external static fixed bin(35,0) dcl 3-3 error_table_$bad_processid external static fixed bin(35,0) dcl 3-3 error_table_$end_of_info external static fixed bin(35,0) dcl 3-3 error_table_$higher_inconsistency external static fixed bin(35,0) dcl 3-3 error_table_$key_duplication external static fixed bin(35,0) dcl 3-3 error_table_$key_order external static fixed bin(35,0) dcl 3-3 error_table_$last_reference external static fixed bin(35,0) dcl 3-3 error_table_$lock_is_invalid external static fixed bin(35,0) dcl 3-3 error_table_$lock_not_locked external static fixed bin(35,0) dcl 3-3 error_table_$lock_wait_time_exceeded external static fixed bin(35,0) dcl 3-3 error_table_$long_record external static fixed bin(35,0) dcl 3-3 error_table_$no_file external static fixed bin(35,0) dcl 3-3 error_table_$no_key external static fixed bin(35,0) dcl 3-3 error_table_$no_operation external static fixed bin(35,0) dcl 3-3 error_table_$no_record external static fixed bin(35,0) dcl 3-3 error_table_$no_room_for_lock external static fixed bin(35,0) dcl 3-3 error_table_$noarg external static fixed bin(35,0) dcl 3-3 error_table_$noentry external static fixed bin(35,0) dcl 3-3 error_table_$not_closed external static fixed bin(35,0) dcl 3-3 error_table_$not_detached external static fixed bin(35,0) dcl 3-3 error_table_$not_open external static fixed bin(35,0) dcl 3-3 error_table_$record_busy external static fixed bin(35,0) dcl 3-3 error_table_$segknown external static fixed bin(35,0) dcl 3-3 error_table_$too_many_args external static fixed bin(35,0) dcl 3-3 error_table_$too_many_refs external static fixed bin(35,0) dcl 3-3 error_table_$unimplemented_version external static fixed bin(35,0) dcl 3-3 extend_position_stack 000000 constant entry external dcl 5-370 file_header based structure level 1 unaligned dcl 5-274 free_cb_file 000000 constant entry external dcl 5-361 free_position_stack 000000 constant entry external dcl 5-371 free_seg 000000 constant entry external dcl 5-367 free_seg_ptrs 000000 constant entry external dcl 5-365 get_new_seg 000000 constant entry external dcl 5-366 gk_info based structure level 1 unaligned dcl 2-41 gk_info_ptr automatic pointer dcl 2-63 gk_info_version_0 internal static fixed bin(17,0) initial dcl 2-66 gk_key_len automatic fixed bin(17,0) dcl 2-64 ind_des_structure based structure level 1 packed packed unaligned dcl 5-89 ind_structure based structure level 1 unaligned dcl 5-102 length builtin function dcl 5-386 make_designator 000000 constant entry external dcl 5-363 max builtin function dcl 5-394 min builtin function dcl 5-395 must_adjust internal static fixed bin(17,0) initial dcl 6-21 must_rollback internal static fixed bin(17,0) initial dcl 6-22 non_eof_delete internal static fixed bin(17,0) initial dcl 6-5 old_file_base based structure level 1 unaligned dcl 5-331 read_exclude internal static fixed bin(17,0) initial dcl 6-10 rel builtin function dcl 5-396 reverse builtin function dcl 5-383 rewrite_action internal static fixed bin(17,0) initial dcl 6-17 rk_info based structure level 1 unaligned dcl 2-22 rk_info_ptr automatic pointer dcl 2-37 rk_key_len automatic fixed bin(17,0) dcl 2-38 rs_desc based structure level 1 packed packed unaligned dcl 1-32 rs_info_ptr automatic pointer dcl 1-5 rs_info_version_1 internal static fixed bin(17,0) initial dcl 1-43 seg_ptr automatic pointer dcl 5-86 seq_desc based structure level 1 packed packed unaligned dcl 1-37 set_bitcounts 000000 constant entry external dcl 5-368 stat_header_size internal static fixed bin(17,0) initial dcl 5-380 time_stamp_structure based structure level 1 packed packed unaligned dcl 5-112 truncate_action internal static fixed bin(17,0) initial dcl 6-20 unshared_opening internal static fixed bin(17,0) initial dcl 6-4 verify builtin function dcl 5-383 write_trunc internal static fixed bin(17,0) initial dcl 6-7 NAMES DECLARED BY EXPLICIT CONTEXT. abort_exit 000444 constant label dcl 351 ref 173 173 177 177 220 220 221 221 284 284 288 288 exit 000477 constant label dcl 359 ref 346 get_pointer 002141 constant entry internal dcl 319 ref 229 255 259 315 330 356 get_ptr 002103 constant entry internal dcl 306 ref 142 248 get_rec_ptr 002122 constant entry internal dcl 313 ref 198 236 298 lock_record 002170 constant entry internal dcl 326 ref 51 66 80 159 181 211 256 260 reinit_rewrite_proc 001555 constant entry internal dcl 243 ref 195 267 restart 000103 constant entry external dcl 27 restart_add_key 000673 constant entry internal dcl 156 ref 75 restart_insertion 001727 constant entry internal dcl 271 ref 62 restart_reassignment 001602 constant entry internal dcl 251 ref 58 restart_replacement 001134 constant entry internal dcl 193 ref 56 restart_rs_create 000745 constant entry internal dcl 166 ref 84 restore_old_proc_info 000576 constant entry internal dcl 129 ref 61 restore_restart_proc_info 000535 constant entry internal dcl 113 ref 33 93 345 353 save_restart_proc_info 000501 constant entry internal dcl 100 ref 32 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2536 2602 2303 2546 Length 3112 2303 44 273 232 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME restart 551 external procedure is an external procedure. on unit on line 33 64 on unit save_restart_proc_info 64 internal procedure is called by several nonquick procedures. restore_old_proc_info internal procedure shares stack frame of external procedure restart. restart_add_key internal procedure shares stack frame of external procedure restart. restart_rs_create internal procedure shares stack frame of external procedure restart. restart_replacement internal procedure shares stack frame of external procedure restart. reinit_rewrite_proc internal procedure shares stack frame of external procedure restart. restart_reassignment internal procedure shares stack frame of external procedure restart. restart_insertion internal procedure shares stack frame of external procedure restart. get_ptr internal procedure shares stack frame of external procedure restart. get_rec_ptr internal procedure shares stack frame of external procedure restart. get_pointer internal procedure shares stack frame of external procedure restart. lock_record internal procedure shares stack frame of external procedure restart. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME restart 000100 block_ptr restart 000102 new_block_ptr restart 000104 rk_inf restart 000110 rs_inf restart 000126 old_rec_ptr restart 000130 new_rec_ptr restart 000132 was_ks_out restart 000133 saved_subset_selected restart 000134 my_min_res restart 000135 my_min_cap restart 000136 was_stat restart 000137 was_dup_ok restart 000140 was_trans restart 000141 saved_state restart 000254 old_mode restart 000256 indx_cb_ptr restart 000260 f_b_ptr restart 000262 fs_ptr restart 000264 is_ptr restart 000302 p restore_old_proc_info 000304 i restore_old_proc_info 000402 blockp lock_record THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry int_entry stacq_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. change_record_list get_seg_ptr open_indx_file$adjust_record open_indx_file$control_indx_file open_indx_file$delete_indx_file open_indx_file$rewrite_indx_file open_indx_file$write_indx_file set_lock_$lock sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_file error_table_$file_busy error_table_$file_is_full error_table_$invalid_lock_reset error_table_$locked_by_this_process LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000077 29 000110 30 000115 31 000117 32 000121 33 000125 35 000147 36 000152 37 000155 38 000157 39 000161 40 000163 41 000165 42 000166 43 000170 44 000171 45 000172 46 000173 47 000174 48 000175 49 000177 51 000206 54 000223 55 000243 56 000244 58 000250 61 000254 62 000255 64 000262 66 000264 73 000311 74 000323 75 000324 77 000330 79 000332 80 000334 82 000345 83 000401 84 000402 86 000406 88 000410 89 000415 90 000416 91 000417 93 000423 94 000427 96 000435 98 000443 351 000444 353 000450 354 000454 356 000457 357 000470 359 000477 100 000500 102 000506 103 000513 104 000515 105 000517 106 000521 107 000523 108 000525 109 000527 110 000531 111 000533 113 000534 115 000542 116 000547 117 000551 118 000552 119 000554 120 000556 121 000560 122 000563 123 000565 124 000567 125 000571 126 000573 127 000575 129 000576 131 000577 133 000607 134 000611 135 000613 136 000614 138 000615 139 000625 140 000630 141 000635 142 000637 143 000647 145 000656 147 000662 150 000664 151 000670 154 000672 156 000673 158 000674 159 000700 161 000710 162 000712 163 000713 164 000744 166 000745 168 000746 170 000751 172 000757 173 000761 174 001004 175 001007 176 001010 177 001014 178 001037 179 001040 181 001041 183 001051 184 001054 185 001056 186 001057 187 001067 188 001071 189 001076 190 001100 191 001133 193 001134 195 001135 196 001136 198 001141 199 001151 201 001173 202 001175 207 001312 209 001366 211 001367 212 001375 215 001401 217 001406 219 001414 220 001416 221 001437 223 001462 224 001464 225 001467 226 001471 227 001476 229 001477 230 001507 231 001511 234 001517 236 001520 238 001533 240 001535 241 001554 243 001555 245 001556 246 001563 247 001567 248 001571 249 001601 251 001602 253 001603 255 001606 256 001616 259 001634 260 001645 264 001663 265 001665 266 001667 267 001672 268 001673 269 001726 271 001727 273 001730 276 001734 280 001742 282 001751 284 001754 285 001777 286 002002 287 002003 288 002004 290 002027 291 002031 292 002036 293 002037 295 002040 298 002045 299 002055 303 002063 304 002102 306 002103 308 002105 313 002122 315 002124 319 002141 321 002143 326 002170 328 002172 330 002175 331 002205 333 002212 334 002230 336 002240 337 002241 339 002242 344 002263 345 002265 346 002271 ----------------------------------------------------------- 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