COMPILATION LISTING OF SEGMENT vfile_copy_opening_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/04/82 1738.4 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* format: style2,ind3 */ 7 vfile_copy_opening_: 8 proc (p_source_iocb_ptr, p_target_sw_name, p_target_iocb_ptr, p_code); 9 10 /* This module makes an iocb (at p_target_iocb_ptr) with the same attributes 11*as the source iocb. The target iocb is positioned "outside" of the index and 12*has the pos_incorrect bit set. This iocb, then, has basically the same 13*appearance as (and is indistinguishable from) an iocb which has just been 14*attached and opened in the normal fashion. 15* 16*As much as possible, the copied opening is made by actually copying the data 17*structures. For the seg_ptr_array and the position_stack, the vfile_ 18*utilities are used to do the copying, as various protocols must be followed 19*in filling in these structures and some data must be unique to each iocb 20*(hence cant just be copied). In the case of the seg_ptr_array, there must 21*be one initiation per opening per segment and create_seg_ptrs takes care of 22*setting this up. In the case of the position_stack, various pointers in the 23*stack must be set to point elsewhere in the same stack and some pointers in 24*the indx_cb have to be set to point to the position_stack. This is done by 25*create_position_stack. 26* 27*Written 03/01/81 by Lindsey Spratt. 28*Modified: 29*06/22/81 by Lindsey Spratt: Replace call to msf_manager_$open with direct copy 30* of the fcb. The initiated_components portion of the structure 31* must be set to 0 to indicate that this new fcb opening has no 32* initiated segments associated with it. The following 33* msf_get_ptr adds the first one, 34* and successive calls by create_seg_ptrs finishes this processes. 35*06/30/81 by Lindsey Spratt: Changed to use vfile_attach_block.incl.pl1, 36* iocb.incl.pl1 instead of iocbv.incl.pl1, deleted position_stack 37* declaration. 38**/ 39 40 /* START OF DECLARATIONS */ 41 /* Parameter */ 42 43 dcl p_source_iocb_ptr ptr; 44 dcl p_target_sw_name char (*); 45 dcl p_target_iocb_ptr ptr; 46 dcl p_code fixed bin (35); 47 48 /* Automatic */ 49 50 dcl iocb_ptr ptr; 51 dcl pos_ptr ptr; 52 dcl fcbp ptr; /* The msf_manager_ File Control Block, fcb, is based on this variable. */ 53 dcl bead_idx fixed bin; 54 dcl source_fcb_ptr ptr; 55 dcl old_target_ibp ptr; 56 dcl target_ibp ptr; 57 dcl source_ibp ptr; 58 59 /* Based */ 60 61 dcl free_area area (sys_info$max_seg_size - 1) based (system_areap); 62 63 dcl 1 fcb based (fcbp) aligned, /* the multi-segment file control block */ 64 2 version fixed bin, /* version of this structure - 0 now */ 65 2 type fixed bin, /* form of msf - ssf, msf, or not_exists */ 66 2 max_components fixed bin, /* maximum number of components (same as bitcount) */ 67 2 max_len fixed bin (19), /* Max number of words in each component. */ 68 2 pad (1) fixed bin, 69 2 pathnames, /* dirnname, ename, and combined of the file */ 70 3 dname char (168), 71 3 ename char (32), 72 3 path char (168), 73 2 initiated_components, /* information about the initiated components in the file */ 74 3 number fixed bin, /* how many are initiated */ 75 3 highest_value fixed bin, /* the highest component value of those inited */ 76 3 listp ptr, /* ptr to head of the list of inited segs */ 77 2 rbs (3) fixed bin (3), /* save ring bracks */ 78 2 upgrade_sw bit (1) aligned, /* if components are multiclass segments */ 79 2 access_class bit (72) aligned; /* acc if upgrade_sw ON */ 80 /* DRV - add volume backup switch to FCB here */ 81 82 83 dcl 1 initiation_bead based aligned, /* one for each initiated component of the msf */ 84 2 component fixed bin, /* which component it is */ 85 2 bitcount fixed bin (24), /* its bitcount */ 86 2 segptr ptr, /* a ptr to it */ 87 2 next ptr; /* next bead in list or null */ 88 89 90 /* Builtin */ 91 /* Controlled */ 92 /* Constant */ 93 /* Entry */ 94 95 dcl msf_manager_$get_ptr entry (ptr, fixed bin, bit (1), ptr, fixed bin (24), fixed bin (35)); 96 dcl msf_manager_$open entry (char (*), char (*), ptr, fixed bin (35)); 97 dcl get_system_free_area_ entry () returns (ptr); 98 99 /* External */ 100 101 dcl error_table_$badcall fixed bin (35) ext; 102 dcl sys_info$max_seg_size fixed bin (35) ext; 103 104 /* Static */ 105 106 dcl system_areap ptr internal static init (null); 107 108 /* END OF DECLARATIONS */ 109 110 111 /* Validate the source opening for being copied. It must be an index 112*sequential opening, must not be opened for exclusive operations. 113*It must be opened in shared mode, and it must be an msf. 114**/ 115 iocb_ptr = null; 116 attach_block_ptr = p_source_iocb_ptr -> iocb.attach_data_ptr; 117 if attach_block.mode ^= Keyed_sequential_update & attach_block.mode ^= Keyed_sequential_output 118 & attach_block.mode ^= Keyed_sequential_input 119 then 120 do; 121 p_code = error_table_$badcall; 122 return; 123 end; 124 125 if attach_block.exclu_sw | ^attach_block.shared | ^attach_block.is_msf 126 then 127 do; 128 p_code = error_table_$badcall; 129 return; 130 end; 131 132 /* Find and/or create the target iocb. */ 133 134 call iox_$find_iocb (p_target_sw_name, p_target_iocb_ptr, p_code); 135 if p_code ^= 0 136 then return; 137 138 p_target_iocb_ptr -> iocb = p_source_iocb_ptr -> iocb; 139 p_target_iocb_ptr -> iocb.actual_iocb_ptr = p_target_iocb_ptr; 140 p_target_iocb_ptr -> iocb.name = p_target_sw_name; 141 142 call alloc_cb_file (size (attach_block), attach_block_ptr); 143 144 attach_block = p_source_iocb_ptr -> iocb.attach_data_ptr -> attach_block; 145 p_target_iocb_ptr -> iocb.attach_data_ptr = attach_block_ptr; 146 p_target_iocb_ptr -> iocb.attach_descrip_ptr = addr (attach_block.attach_descrip); 147 p_target_iocb_ptr -> iocb.open_descrip_ptr = addr (attach_block.open_descrip); 148 149 call alloc_cb_file (size (indx_cb), indx_cb_ptr); 150 151 indx_cb = p_source_iocb_ptr -> iocb.open_data_ptr -> indx_cb; 152 p_target_iocb_ptr -> iocb.open_data_ptr = indx_cb_ptr; 153 indx_cb.pos_incorrect = "1"b; 154 indx_cb.next_record_position = 0; 155 indx_cb.current_record_is_valid = "0"b; 156 indx_cb.ready_to_write = "0"b; 157 indx_cb.repeating = "0"b; 158 indx_cb.error.type = 0; 159 indx_cb.at_bof = "0"b; 160 indx_cb.at_eof = "0"b; 161 indx_cb.min_res = 0; 162 indx_cb.min_cap = 0; 163 indx_cb.leave_locked = "0"b; 164 indx_cb.outside_index = "0"b; 165 indx_cb.new_key = ""; 166 indx_cb.skip_state = 0; 167 indx_cb.transaction_code = 0; 168 indx_cb.reflp = null; 169 indx_cb.collection_delay_time = 0; 170 171 /* The subsetting information must be set to indicate that no subsetting has been 172*done yet on this opening. 173**/ 174 175 indx_cb.current_subset = 0; 176 indx_cb.last_subset = 0; 177 indx_cb.subset_count = 0; 178 indx_cb.temp_iocbp = null; 179 180 /* It is necessary for each opening to have its own MSF fcb to point at. 181**/ 182 183 if system_areap = null 184 then system_areap = get_system_free_area_ (); 185 186 alloc fcb in (free_area) set (fcbp); 187 188 fcb = p_source_iocb_ptr -> iocb.attach_data_ptr -> attach_block.fcb_ptr -> fcb; 189 indx_cb.fcb_ptr = fcbp; 190 fcb.initiated_components.number = 0; 191 fcb.initiated_components.highest_value = 0; 192 fcb.initiated_components.listp = null; 193 194 attach_block.fcb_ptr = indx_cb.fcb_ptr; /* The attach_block fcb_ptr is used when closing. */ 195 196 call msf_manager_$get_ptr (indx_cb.fcb_ptr, 0, "0"b, indx_cb.file_base_ptr, 0, p_code); 197 if p_code ^= 0 198 then return; 199 200 /* create_seg_ptrs is called to set up the seg_ptr_array and initiate all of 201*the segments in the msf. It does this by doing msf_manager_$get_ptr. The end 202*result of this is to have an fcb identical to the fcb of the opening being 203*copied. The reason it is necessary to go through all of the mechanism of 204*create_seg_ptrs and msf_manager_$get_ptr is to have the hcs_$initiate calls 205*made on all of the segments, since (at close time) hcs_$terminate_noname is 206*called. 207* The other approach, to allocate and copy data explicitly to build the fcb 208*and seg_ptr_array structures without 209*invoking other routines, works fine except that the segments are terminated out 210*from under the iocbs which are copies of the iocb being closed and detached. 211**/ 212 213 call create_seg_ptrs (p_target_iocb_ptr); 214 215 /* The position stack and 216*some data in the indx_cb must be initialized. For this it is necessary to call 217*create_position_stack. 218**/ 219 220 call create_position_stack (indx_cb_ptr); 221 attach_block.was_msf = (indx_cb.file_base_ptr -> file_base.max_comp_num > 1); 222 223 return; 224 1 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 1 2 /* format: style2 */ 1 3 1 4 dcl 1 iocb aligned based, /* I/O control block. */ 1 5 2 version character (4) aligned, 1 6 2 name char (32), /* I/O name of this block. */ 1 7 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 8 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 9 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 10 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 11 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 12 2 reserved bit (72), /* Reserved for future use. */ 1 13 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 14 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 15 /* open(p,mode,not_used,s) */ 1 16 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 17 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 18 /* get_line(p,bufptr,buflen,actlen,s) */ 1 19 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 20 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 21 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 22 /* put_chars(p,bufptr,buflen,s) */ 1 23 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 24 /* modes(p,newmode,oldmode,s) */ 1 25 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 26 /* position(p,u1,u2,s) */ 1 27 2 control entry (ptr, char (*), ptr, fixed (35)), 1 28 /* control(p,order,infptr,s) */ 1 29 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 30 /* read_record(p,bufptr,buflen,actlen,s) */ 1 31 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 32 /* write_record(p,bufptr,buflen,s) */ 1 33 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 34 /* rewrite_record(p,bufptr,buflen,s) */ 1 35 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 36 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 37 /* seek_key(p,key,len,s) */ 1 38 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 39 /* read_key(p,key,len,s) */ 1 40 2 read_length entry (ptr, fixed (21), fixed (35)); 1 41 /* read_length(p,len,s) */ 1 42 1 43 declare iox_$iocb_version_sentinel 1 44 character (4) aligned external static; 1 45 1 46 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 225 2 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 2 2 2 3 /* Written 05/04/78 by C. D. Tavares */ 2 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 2 5 2 6 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 2 7 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 2 8 iox_$close entry (pointer, fixed bin (35)), 2 9 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 2 10 iox_$delete_record entry (pointer, fixed bin (35)), 2 11 iox_$destroy_iocb entry (pointer, fixed bin (35)), 2 12 iox_$detach_iocb entry (pointer, fixed bin (35)), 2 13 iox_$err_not_attached entry options (variable), 2 14 iox_$err_not_closed entry options (variable), 2 15 iox_$err_no_operation entry options (variable), 2 16 iox_$err_not_open entry options (variable), 2 17 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 2 18 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 2 19 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 20 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 21 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 2 22 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 2 23 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 2 24 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 2 25 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 2 26 iox_$propagate entry (pointer), 2 27 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 28 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 29 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 2 30 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 31 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 32 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 33 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)) ; 2 34 2 35 dcl (iox_$user_output, 2 36 iox_$user_input, 2 37 iox_$user_io, 2 38 iox_$error_output) external static pointer; 2 39 2 40 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 226 3 1 /* the control block */ 3 2 dcl indx_cb_ptr ptr; 3 3 dcl 1 indx_cb based (indx_cb_ptr), /* except as noted, init by create cb */ 3 4 2 fcb_ptr ptr, 3 5 2 file_base_ptr ptr, 3 6 2 node_length fixed, /* number of bytes in node, init by create_seg_ptrs */ 3 7 2 half_node_length fixed, /* init by create_seg_ptrs */ 3 8 2 max_record_size fixed (21), /* init by create_seg_ptrs */ 3 9 2 seg_ptr_array_ptr ptr, /* init by create seg_ptrs */ 3 10 2 seg_ptr_array_limit 3 11 fixed, /* init by create seg_ptrs */ 3 12 2 mode fixed, 3 13 2 is_sequential_open bit (1) aligned, 3 14 2 is_read_only bit (1) aligned, 3 15 2 is_ks_out bit (1) aligned, /* position info */ 3 16 2 position_stack_ptr ptr, /* init by create_position stack */ 3 17 2 position_stack_height 3 18 fixed, /* init by create position stack */ 3 19 2 root_position_ptr ptr, /* init by create_position_stack */ 3 20 2 file_position_ptr ptr, /* not init */ 3 21 2 change_position_ptr 3 22 ptr, /* not init */ 3 23 /* auxiliary variables */ 3 24 2 rover_seg_ptr ptr, /* init by create_seg_ptrs */ 3 25 2 index_state_ptr ptr, /* init by create_seg_ptrs */ 3 26 2 old_index_height fixed, 3 27 2 old_last_comp_num fixed, 3 28 2 last_change_count fixed (35), 3 29 2 wait_time fixed (35), 3 30 2 old_rover_comp_num fixed, 3 31 2 file_state_ptr ptr, 3 32 2 o_s_ptr ptr, 3 33 2 repeating bit (1) aligned, 3 34 2 next_substate fixed, 3 35 2 file_program_version 3 36 fixed, /* used for record_lock compatibility */ 3 37 2 leave_locked bit (1) aligned, /* indicates use of set_file_lock order */ 3 38 2 dup_ok bit (1) aligned, /* if set, duplicate keys may occur */ 3 39 2 read_exclu bit (1) aligned, /* set when lock excludes readers */ 3 40 2 pos_incorrect bit (1) aligned, /* indicates index position is not current */ 3 41 2 saved_lock_copy bit (36) aligned, /* copy of process lock_id */ 3 42 2 min_key_len fixed, /* non-zero only in old programs */ 3 43 2 stat bit (1) aligned, /* causes write_record to create stationary records */ 3 44 2 current_subset fixed (34), /* used with select order */ 3 45 2 last_subset fixed (34), 3 46 2 subset_count fixed (34), /* count of descriptors in current subset */ 3 47 2 temp_iocbp ptr, /* temporary file used to implement select order */ 3 48 2 trans bit (1) aligned, /* set if -transaction attachment */ 3 49 2 transaction_code fixed (35), /* set for control switch only */ 3 50 2 tcfp ptr, /* ptr to iocb for transaction control switch--if applicable */ 3 51 2 reflp ptr, /* ptr to ref list file, set only in transaction control file */ 3 52 2 uid bit (36) aligned, /* used under -transaction */ 3 53 2 collection_delay_time 3 54 fixed (35), /* microseconds to wait before garbage removal */ 3 55 2 min_res fixed (21), /* for min_block_size order */ 3 56 2 min_cap fixed (21), /* also for min_block_size order */ 3 57 2 subset_selected bit (2) aligned, /* first bit for select, second 3 58* bit is for exclude */ 3 59 2 error, /* for error_status order */ 3 60 3 type fixed, /* only one error type supported now */ 3 61 3 requested fixed (34), /* skip arg given to position entry */ 3 62 3 received fixed (34), /* actual successful skips */ 3 63 2 state_vars, 3 64 3 fixed_state_part, 3 65 4 shared bit (1) aligned, 3 66 4 next_record_position 3 67 fixed, /* 0, 1, or 2 */ 3 68 4 current_record_is_valid 3 69 bit (1) aligned, 3 70 4 ready_to_write bit (1) aligned, 3 71 4 at_eof_or_bof, 3 72 5 at_bof bit (1) unal, 3 73 5 at_eof bit (1) unal, 3 74 5 pad bit (36) unal, 3 75 4 outside_index bit (1) aligned, /* set after deleting current key or after use of record_status with locate switch */ 3 76 4 current_descrip 3 77 fixed (35), /* needed when outside index */ 3 78 4 saved_descrip fixed (35), /* for restoring index position */ 3 79 4 skip_state fixed, /* controls scanning of deleted entries */ 3 80 3 new_key char (256) var; 3 81 3 82 dcl current_t_code fixed (35) based (addr (indx_cb.tcfp -> iocb.open_data_ptr -> indx_cb.transaction_code)); 3 83 3 84 /* component locator structures */ 3 85 dcl seg_ptr_array (0:seg_ptr_array_limit) ptr based (seg_ptr_array_ptr); 3 86 dcl seg_ptr ptr; 3 87 dcl seg_array (0:262143) fixed (19) based (seg_ptr) aligned; 3 88 dcl designator fixed (35); 3 89 dcl 1 ind_des_structure based, 3 90 2 comp fixed (17) unal, 3 91 2 offset bit (18) unal; 3 92 dcl 1 stat_structure based, 3 93 2 pad bit (26) unal, 3 94 2 ref_count_after fixed (16) unsigned unal, 3 95 2 ind_comp fixed (13) unal, 3 96 2 ref_count fixed (16) unsigned unal, 3 97 2 record_lock bit (36) aligned, 3 98 2 modifier fixed (35), 3 99 2 time_stamp_words fixed (71) aligned, 3 100 2 prev_mod fixed (35), 3 101 2 record char (1000000) var; 3 102 dcl 1 ind_structure based, 3 103 2 pad bit (26) unal, 3 104 2 ref_count_after fixed (16) unsigned unal, 3 105 2 ind_comp fixed (13) unal, 3 106 2 ref_count fixed (16) unsigned unal, 3 107 2 record_lock bit (36) aligned, 3 108 2 modifier fixed (35), 3 109 2 time_stamp_words fixed (71) aligned, 3 110 2 prev_mod fixed (35), 3 111 2 prev_desc fixed (35); 3 112 dcl 1 time_stamp_structure based, 3 113 2 ind_offset bit (18) unal, 3 114 2 time_last_modified fixed (54) unsigned unal; 3 115 dcl 1 record_block_structure 3 116 based, 3 117 2 reserved aligned, /* data used by change_record_list */ 3 118 3 pad bit (2) unal, 3 119 3 block_size fixed (19) unal, 3 120 3 lock_flag bit (1) unal, /* record lock flag */ 3 121 3 stationary bit (1) unal, 3 122 3 indirect bit (1) unal, 3 123 3 after_applies bit (1) unal, 3 124 3 mbz bit (10) unal, 3 125 2 block_tail, /* structure varies with record type */ 3 126 3 record char (1000000) var; /* non-stat record location */ 3 127 dcl 1 designator_struct aligned based (addr (designator)), 3 128 2 comp_num fixed (17) unal, 3 129 2 offset bit (18) unal; 3 130 3 131 /* position and node templates */ 3 132 dcl 1 position_frame based (pos_ptr), /* ref8 */ 3 133 2 parent_position_ptr 3 134 ptr, 3 135 2 son_position_ptr ptr, 3 136 2 node_ptr ptr, 3 137 2 node fixed (35), 3 138 2 branch_num fixed; 3 139 dcl 1 node_block based (node_ptr), /* ref9) */ 3 140 2 last_branch_num fixed, 3 141 2 low_key_pos fixed, 3 142 2 scat_space fixed, 3 143 2 branch_and_descrip (1 refer (node_block.last_branch_num)), 3 144 /* in last element only branch is used */ 3 145 3 branch fixed (35), 3 146 3 descrip, 3 147 4 key_descrip, 3 148 5 key_pos fixed (17) unal, 3 149 5 key_length fixed (17) unal, 3 150 4 record_descrip, 3 151 5 record_designator 3 152 fixed (35); 3 153 dcl keys char (4096 /* 4*node_size */) based (node_ptr); 3 154 3 155 /* file base and states */ 3 156 dcl f_b_ptr ptr; 3 157 dcl 1 file_base based (f_b_ptr), /* ref10 */ 3 158 2 common_header, 3 159 3 file_code fixed (35), 3 160 3 lock_word bit (36) aligned, 3 161 3 words (2) fixed, 3 162 2 file_version fixed, 3 163 2 program_version fixed, 3 164 2 node_size fixed (19), 3 165 2 minimum_key_length fixed, 3 166 2 minimum_block_size fixed (19), 3 167 2 max_seg_limit fixed (19), 3 168 2 root_node_block, 3 169 3 last_branch_num_root 3 170 fixed, /* =1 */ 3 171 3 word fixed, 3 172 3 reserved fixed, 3 173 3 only_branch_in_root 3 174 fixed (35), 3 175 2 file_state fixed, 3 176 2 change_count fixed (34), /* record state info, ref12 */ 3 177 2 old_number_of_free_blocks 3 178 fixed (34), 3 179 2 prior_block_size fixed (19), 3 180 2 old_record_length fixed (21), 3 181 2 need_new_seg bit (1) aligned, 3 182 2 old_residue fixed, 3 183 2 new_last_comp_num fixed, 3 184 2 old_prev_free_block 3 185 fixed (18), 3 186 2 old_next_free_block 3 187 fixed (18), 3 188 2 new_record_length fixed (21), 3 189 2 old_record_designator 3 190 fixed (35), 3 191 2 prec_block_was_free 3 192 bit (1) aligned, 3 193 2 next_block_was_free 3 194 bit (1) aligned, 3 195 2 former_block_size fixed (19), 3 196 2 old_init_offset fixed (18), 3 197 2 old_block_size fixed (19), 3 198 2 prev_block_size fixed (19), 3 199 2 former_rover_comp_num 3 200 fixed, 3 201 2 former_rover_offset 3 202 fixed (18), 3 203 2 next_block_size fixed (19), 3 204 2 next_prev_free_block 3 205 fixed (18), 3 206 2 next_next_free_block 3 207 fixed (18), 3 208 2 saved_ks_out bit (1) aligned, 3 209 2 new_descriptor fixed (35), 3 210 2 old_last_branch_num 3 211 fixed, 3 212 2 old_low_key_pos fixed, 3 213 2 old_scat_space fixed, 3 214 2 old_key_pos fixed, 3 215 2 rover_comp_num fixed, 3 216 2 rover_offset fixed (18), 3 217 2 old_key_length fixed, 3 218 2 b_space fixed, 3 219 2 last_b_num fixed, 3 220 2 count fixed, 3 221 2 first_count fixed, 3 222 2 second_count fixed, 3 223 2 split_num fixed, 3 224 2 must_compact_dest bit (1) aligned, 3 225 2 first_branch fixed (35), 3 226 2 min_source_key_pos fixed, 3 227 2 min_dest_key_pos fixed, 3 228 2 new_low_key_pos fixed, 3 229 2 new_scat_space fixed, 3 230 2 old_seg_lim fixed (19), 3 231 2 old_number_of_free_nodes 3 232 fixed, 3 233 2 old_next_node_designator 3 234 fixed (35), 3 235 2 new_index_comp_num fixed, 3 236 2 out_of_index bit (1) aligned, 3 237 2 saved_min_res fixed (21), 3 238 2 saved_min_cap fixed (21), 3 239 2 was_stat bit (1) aligned, 3 240 2 was_ind bit (1) aligned, 3 241 2 old_ind_desc fixed (35), 3 242 2 after_desc fixed (35), 3 243 2 old_ref_count fixed (34), 3 244 2 new_ref_count fixed (34), 3 245 2 old_num_free fixed (34), 3 246 2 old_file_ch_count fixed (35), 3 247 2 y_count, /* for conversion of pre-MR6.9 files */ 3 248 2 old_modifier fixed (35), 3 249 2 was_transaction bit (1) aligned, /* state blocks */ 3 250 2 index_state fixed, 3 251 2 index_state_blocks (0:1), 3 252 3 words (104), 3 253 2 reserved (30), /* this free space might come in handy */ 3 254 2 old_prev_mod fixed (35), 3 255 2 needed_blksz fixed (35), 3 256 2 new_desc_val fixed (35), 3 257 2 is_partial_deletion 3 258 bit (1) aligned, 3 259 2 reserved2 (42), 3 260 2 file_state_blocks (0:1), 3 261 3 words (size (file_state_block)) fixed, 3 262 /* component info */ 3 263 2 max_comp_num fixed, 3 264 2 last_comp_num fixed, 3 265 2 first_free_comp_num, /* not yet supported */ 3 266 2 comp_table_start (size (comp_table)); /* start of comp_array */ 3 267 3 268 dcl 1 comp_table (0:true_max_comp_num) based (addr (file_base.comp_table_start)) aligned, 3 269 2 seg_limit fixed (19), /* abs value is offset of first free word in seg, max val=max 3 270* seg_limit and this indicates full seg */ 3 271 2 comp_link fixed (17) unal, 3 272 2 init_offset fixed (18) unsigned unal; 3 273 3 274 dcl 1 file_header based (f_b_ptr), 3 275 2 first_three_pages (3, 1024) fixed, 3 276 2 spare_node char (4096) aligned; 3 277 3 278 /* The File State */ 3 279 dcl fs_ptr ptr; 3 280 dcl 1 file_state_block based (fs_ptr), 3 281 2 file_action fixed, 3 282 2 file_substate fixed, 3 283 2 number_of_keys fixed (34), 3 284 2 duplicate_keys fixed (34), /* 0 if no duplications */ 3 285 2 dup_key_bytes fixed (34), 3 286 2 total_key_length fixed (34), 3 287 2 number_of_records fixed (34), 3 288 2 total_record_length 3 289 fixed (34), 3 290 2 number_of_allocated_records 3 291 fixed (34), 3 292 2 number_of_free_blocks 3 293 fixed (34), 3 294 2 words (2) fixed; 3 295 3 296 /* The Index State */ 3 297 dcl is_ptr ptr; 3 298 dcl 1 index_state_block based (is_ptr), /* if this declaration is changed, 3 299* index_state_blocks must be adjusted */ 3 300 2 number_of_nodes fixed (34), 3 301 2 free_node_designator 3 302 fixed (35), 3 303 2 index_tail_comp_num 3 304 fixed, 3 305 2 index_height fixed, 3 306 2 index_action fixed, 3 307 2 index_substate fixed, 3 308 2 current_node fixed (35), 3 309 2 change_node fixed (35), 3 310 2 fake_node, /* equivalent to a short node because of storage map. It holds 3 311* the new key, new record descrip, and new branch in a fashion 3 312* convenient for overflow-underflow in change_index. */ 3 313 3 fake_head_and_descrip, 3 314 4 word1 fixed, /* last_branch_num in real node */ 3 315 4 word2 fixed, /* low_key_pos in real node */ 3 316 4 word3 fixed, /* normally scat_space */ 3 317 4 word4 fixed, /* first branch in real node */ 3 318 4 new_key_pos fixed (17) unal, /* set by initializefile to denote first char 3 319* in new_key_string, never changed */ 3 320 4 new_key_length fixed (17) unal, 3 321 4 new_record_descrip, 3 322 5 new_record_designator 3 323 fixed (35), 3 324 4 new_branch fixed (35), 3 325 3 new_key_string char (256), 3 326 2 branch_num_adjust fixed, 3 327 2 pos_array (10), 3 328 3 saved_node fixed (35), 3 329 3 saved_branch_num fixed; 3 330 3 331 dcl 1 old_file_base based (f_b_ptr), 3 332 2 words1 (15) fixed, /* same in both file versions */ 3 333 2 old_file_state_blocks 3 334 (0:1), 3 335 3 words (5) fixed, 3 336 2 words2 (7) fixed, 3 337 2 record_state fixed, 3 338 2 record_state_blocks 3 339 (0:1), 3 340 3 words (4) fixed, 3 341 2 words3 (14) fixed, /* rover info same in both versions */ 3 342 2 old_version_index_height 3 343 fixed, 3 344 2 old_version_number_of_nodes 3 345 fixed (34), 3 346 2 words4 (157) fixed, 3 347 2 old_version_index_tail_comp_num 3 348 fixed, 3 349 2 old_version_free_node_designator 3 350 fixed (35), 3 351 2 words5 (10) fixed, 3 352 2 old_version_comp_info 3 353 fixed, 3 354 2 word, 3 355 2 x_count fixed; /* always zero in old version files */ 3 356 3 357 /* External Procedures */ 3 358 dcl clock_ entry returns (fixed (71)); 3 359 dcl alloc_cb_file entry (fixed, /* size of block in words */ 3 360 ptr); /* ptr to block */ 3 361 dcl free_cb_file entry (fixed, ptr); 3 362 dcl get_seg_ptr entry (ptr, fixed) returns (ptr); 3 363 dcl make_designator entry (fixed, fixed (18), fixed (35)); 3 364 dcl create_seg_ptrs entry (ptr); 3 365 dcl free_seg_ptrs entry (ptr); 3 366 dcl get_new_seg entry (ptr, fixed, ptr, fixed, label); 3 367 dcl free_seg entry (ptr, fixed, ptr); 3 368 dcl set_bitcounts entry (ptr); 3 369 dcl create_position_stack entry (ptr); 3 370 dcl extend_position_stack entry (ptr); 3 371 dcl free_position_stack entry (ptr); 3 372 dcl change_index entry (ptr, label); 3 373 dcl change_record_list entry (ptr, fixed, ptr, label); 3 374 3 375 /* State Constants */ 4 1 dcl bumping_count static internal options (constant) init (-14); 4 2 dcl rollback_action static options (constant) init (-13); 4 3 dcl adjust_action static options (constant) init (-12); 4 4 dcl unshared_opening static internal fixed options (constant) init (-11); 4 5 dcl non_eof_delete static internal fixed options (constant) init (-10); 4 6 dcl free_action static options (constant) init (-10); 4 7 dcl write_trunc static internal fixed options (constant) init (-9); 4 8 dcl allocate_action static options (constant) init (-9); 4 9 dcl reassigning_key static options (constant) init (-8); 4 10 dcl read_exclude static options (constant) init (-7); 4 11 dcl adding_record static options (constant) init (-6); 4 12 dcl deleting_key static options (constant) init (-5); 4 13 dcl adding_key static options (constant) init (-4); 4 14 dcl delete_action static options (constant) init (-3); 4 15 dcl eof_delete static internal fixed options (constant) init (-3); 4 16 dcl replace_action static options (constant) init (-2); 4 17 dcl rewrite_action static internal fixed options (constant) init (-2); 4 18 dcl insert_action static options (constant) init (-1); 4 19 dcl append_action static internal fixed options (constant) init (-1); 4 20 dcl truncate_action static internal fixed options (constant) init (1); 4 21 dcl must_adjust static internal fixed options (constant) init (2); 4 22 dcl must_rollback static internal fixed options (constant) init (3); 3 376 3 377 3 378 /* Other constants */ 3 379 dcl true_max_comp_num static options (constant) init (1250); 3 380 dcl stat_header_size static internal fixed options (constant) init (8); 3 381 3 382 /* builtins */ 3 383 dcl (verify, reverse) builtin; 3 384 dcl addr builtin; 3 385 dcl divide builtin; 3 386 dcl length builtin; 3 387 dcl null builtin; 3 388 dcl substr builtin; 3 389 dcl size builtin; 3 390 dcl abs builtin; 3 391 dcl unspec builtin; 3 392 dcl fixed builtin; 3 393 dcl bit builtin; 3 394 dcl max builtin; 3 395 dcl min builtin; 3 396 dcl rel builtin; 3 397 227 5 1 /* BEGIN INCLUDE FILE - vfile_attach_block.incl.pl1 */ 5 2 5 3 /* Written 06/18/81 by Lindsey Spratt. 5 4**/ 5 5 5 6 /* format: style2 */ 5 7 dcl 1 attach_block based (attach_block_ptr), 5 8 /* the following are set by attach_file */ 5 9 2 flags aligned, 5 10 3 (extend_attach, appending, no_trunc, old, ssf, header_present, blocked, shared, was_msf, is_msf, 5 11 inv_lock_reset, dup_ok_sw, trans_sw, noend_sw, exclu_sw, stat_sw, checkpoint_sw) 5 12 bit (1) unal, 5 13 3 pad bit (19) unal, 5 14 2 wait_time fixed (35), 5 15 2 interp fixed, 5 16 2 max_rec_len fixed (35), 5 17 2 header_id fixed (35), 5 18 2 attach_descrip, 5 19 3 attach_descrip_len 5 20 fixed bin (35), /* < = 256 */ 5 21 3 attach_descrip_string 5 22 char (256), /* "vfile_ " (7 chars), the directory 5 23* pathname (dname_len chars), ">", the entry 5 24* name (ename_len chars), " -extend" (optional 8 chars), 5 25* and " -raw" or " -extend"(optional 8 chars) */ 5 26 2 dname_len fixed bin, /* < = l68 */ 5 27 2 ename_len fixed bin, /* < = 32 */ 5 28 /* The following are set by open_file */ 5 29 2 open_descrip, 5 30 3 open_descrip_len fixed bin (35), /* < = 31 */ 5 31 3 open_descrip_string 5 32 char (32), /* The string 5 33* contains the opening mode, e.g., "stream output", 5 34* (< = 23 chars) and " -extend" (8chars optional) */ 5 35 2 mode fixed bin, /* opening mode 1 <= 13 */ 5 36 2 file_type fixed bin, /* 0 = uns, 1 = seq, 2 = indx, 3 = blk */ 5 37 2 fcb_ptr ptr, /* pointer to msf_manager control block */ 5 38 2 first_seg_ptr ptr, /* pointer to first component 5 39* of the file. Thie pointer is valid throughout the 5 40* file opening */ 5 41 2 close_x entry (ptr), /* routine to perform operations required 5 42* for closing specific type of file obtained from open_x see 5 43* open_file */ 5 44 2 last_comp fixed, /* msf component number at open */ 5 45 2 tcf_iocbp ptr; /* iocb ptr for transaction control switch */ 5 46 5 47 dcl attach_block_ptr ptr; 5 48 5 49 /* END INCLUDE FILE - vfile_attach_block.incl.pl1 */ 228 6 1 /* Begin include file ..... iox_modes.incl.pl1 */ 6 2 6 3 /* Written by C. D. Tavares, 03/17/75 */ 6 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 6 5 6 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 6 7 ("stream_input", "stream_output", "stream_input_output", 6 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 6 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 6 10 "direct_input", "direct_output", "direct_update"); 6 11 6 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 6 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 6 14 6 15 dcl (Stream_input initial (1), 6 16 Stream_output initial (2), 6 17 Stream_input_output initial (3), 6 18 Sequential_input initial (4), 6 19 Sequential_output initial (5), 6 20 Sequential_input_output initial (6), 6 21 Sequential_update initial (7), 6 22 Keyed_sequential_input initial (8), 6 23 Keyed_sequential_output initial (9), 6 24 Keyed_sequential_update initial (10), 6 25 Direct_input initial (11), 6 26 Direct_output initial (12), 6 27 Direct_update initial (13)) fixed bin int static options (constant); 6 28 6 29 /* End include file ..... iox_modes.incl.pl1 */ 229 230 end vfile_copy_opening_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/82 1607.2 vfile_copy_opening_.pl1 >dumps>old>recomp>vfile_copy_opening_.pl1 225 1 07/28/81 1333.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 226 2 07/22/80 1335.1 iox_entries.incl.pl1 >ldd>include>iox_dcls.incl.pl1 227 3 07/19/79 1547.0 vfile_indx.incl.pl1 >ldd>include>vfile_indx.incl.pl1 3-376 4 07/19/79 1547.0 vfile_action_codes.incl.pl1 >ldd>include>vfile_action_codes.incl.pl1 228 5 07/31/81 1818.2 vfile_attach_block.incl.pl1 >ldd>include>vfile_attach_block.incl.pl1 229 6 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.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. Keyed_sequential_input constant fixed bin(17,0) initial dcl 6-15 ref 117 Keyed_sequential_output constant fixed bin(17,0) initial dcl 6-15 ref 117 Keyed_sequential_update constant fixed bin(17,0) initial dcl 6-15 ref 117 actual_iocb_ptr 12 based pointer level 2 dcl 1-4 set ref 139* addr builtin function dcl 3-384 ref 146 147 alloc_cb_file 000022 constant entry external dcl 3-359 ref 142 149 at_bof 112 based bit(1) level 5 packed unaligned dcl 3-3 set ref 159* at_eof 112(01) based bit(1) level 5 packed unaligned dcl 3-3 set ref 160* at_eof_or_bof 112 based structure level 4 packed unaligned dcl 3-3 attach_block based structure level 1 unaligned dcl 5-7 set ref 142 142 144* 144 attach_block_ptr 000106 automatic pointer dcl 5-47 set ref 116* 117 117 117 125 125 125 142 142 142* 144 145 146 147 194 221 attach_data_ptr 16 based pointer level 2 dcl 1-4 set ref 116 144 145* 188 attach_descrip 5 based structure level 2 unaligned dcl 5-7 set ref 146 attach_descrip_ptr 14 based pointer level 2 dcl 1-4 set ref 146* collection_delay_time 77 based fixed bin(35,0) level 2 dcl 3-3 set ref 169* create_position_stack 000026 constant entry external dcl 3-369 ref 220 create_seg_ptrs 000024 constant entry external dcl 3-364 ref 213 current_record_is_valid 110 based bit(1) level 4 dcl 3-3 set ref 155* current_subset 62 based fixed bin(34,0) level 2 dcl 3-3 set ref 175* error 103 based structure level 2 unaligned dcl 3-3 error_table_$badcall 000016 external static fixed bin(35,0) dcl 101 ref 121 128 exclu_sw 0(14) based bit(1) level 3 packed unaligned dcl 5-7 set ref 125 fcb based structure level 1 dcl 63 set ref 186 188* 188 fcb_ptr 124 based pointer level 2 in structure "attach_block" dcl 5-7 in procedure "vfile_copy_opening_" set ref 188 194* fcb_ptr based pointer level 2 in structure "indx_cb" dcl 3-3 in procedure "vfile_copy_opening_" set ref 189* 194 196* fcbp 000102 automatic pointer dcl 52 set ref 186* 188 189 190 191 192 file_base based structure level 1 unaligned dcl 3-157 file_base_ptr 2 based pointer level 2 dcl 3-3 set ref 196* 221 file_state_block based structure level 1 unaligned dcl 3-280 ref 221 fixed_state_part 106 based structure level 3 unaligned dcl 3-3 flags based structure level 2 dcl 5-7 free_area based area dcl 61 ref 186 fs_ptr automatic pointer dcl 3-279 ref 221 get_system_free_area_ 000014 constant entry external dcl 97 ref 183 highest_value 143 based fixed bin(17,0) level 3 dcl 63 set ref 191* indx_cb based structure level 1 unaligned dcl 3-3 set ref 149 149 151* 151 indx_cb_ptr 000104 automatic pointer dcl 3-2 set ref 149 149 149* 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 175 176 177 178 189 194 196 196 220* 221 initiated_components 142 based structure level 2 dcl 63 iocb based structure level 1 dcl 1-4 set ref 138* 138 iocb_ptr 000100 automatic pointer dcl 50 set ref 115* iox_$find_iocb 000020 constant entry external dcl 2-6 ref 134 is_msf 0(09) based bit(1) level 3 packed unaligned dcl 5-7 set ref 125 last_subset 63 based fixed bin(34,0) level 2 dcl 3-3 set ref 176* leave_locked 53 based bit(1) level 2 dcl 3-3 set ref 163* listp 144 based pointer level 3 dcl 63 set ref 192* max_comp_num based fixed bin(17,0) level 2 dcl 3-157 ref 221 min_cap 101 based fixed bin(21,0) level 2 dcl 3-3 set ref 162* min_res 100 based fixed bin(21,0) level 2 dcl 3-3 set ref 161* mode 121 based fixed bin(17,0) level 2 dcl 5-7 set ref 117 117 117 msf_manager_$get_ptr 000012 constant entry external dcl 95 ref 196 name 1 based char(32) level 2 dcl 1-4 set ref 140* new_key 120 based varying char(256) level 3 dcl 3-3 set ref 165* next_record_position 107 based fixed bin(17,0) level 4 dcl 3-3 set ref 154* null builtin function dcl 3-387 ref 115 168 178 183 192 number 142 based fixed bin(17,0) level 3 dcl 63 set ref 190* open_data_ptr 22 based pointer level 2 dcl 1-4 set ref 151 152* open_descrip 110 based structure level 2 unaligned dcl 5-7 set ref 147 open_descrip_ptr 20 based pointer level 2 dcl 1-4 set ref 147* outside_index 114 based bit(1) level 4 dcl 3-3 set ref 164* p_code parameter fixed bin(35,0) dcl 46 set ref 7 121* 128* 134* 135 196* 197 p_source_iocb_ptr parameter pointer dcl 43 ref 7 116 138 144 151 188 p_target_iocb_ptr parameter pointer dcl 45 set ref 7 134* 138 139 139 140 145 146 147 152 213* p_target_sw_name parameter char unaligned dcl 44 set ref 7 134* 140 pos_incorrect 56 based bit(1) level 2 dcl 3-3 set ref 153* ready_to_write 111 based bit(1) level 4 dcl 3-3 set ref 156* reflp 74 based pointer level 2 dcl 3-3 set ref 168* repeating 50 based bit(1) level 2 dcl 3-3 set ref 157* shared 0(07) based bit(1) level 3 packed unaligned dcl 5-7 set ref 125 size builtin function dcl 3-389 ref 142 142 149 149 221 skip_state 117 based fixed bin(17,0) level 4 dcl 3-3 set ref 166* state_vars 106 based structure level 2 unaligned dcl 3-3 subset_count 64 based fixed bin(34,0) level 2 dcl 3-3 set ref 177* system_areap 000010 internal static pointer initial dcl 106 set ref 183 183* 186 temp_iocbp 66 based pointer level 2 dcl 3-3 set ref 178* transaction_code 71 based fixed bin(35,0) level 2 dcl 3-3 set ref 167* type 103 based fixed bin(17,0) level 3 dcl 3-3 set ref 158* was_msf 0(08) based bit(1) level 3 packed unaligned dcl 5-7 set ref 221* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input internal static fixed bin(17,0) initial dcl 6-15 Direct_output internal static fixed bin(17,0) initial dcl 6-15 Direct_update internal static fixed bin(17,0) initial dcl 6-15 Sequential_input internal static fixed bin(17,0) initial dcl 6-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 6-15 Sequential_output internal static fixed bin(17,0) initial dcl 6-15 Sequential_update internal static fixed bin(17,0) initial dcl 6-15 Stream_input internal static fixed bin(17,0) initial dcl 6-15 Stream_input_output internal static fixed bin(17,0) initial dcl 6-15 Stream_output internal static fixed bin(17,0) initial dcl 6-15 abs builtin function dcl 3-390 adding_key internal static fixed bin(17,0) initial dcl 4-13 adding_record internal static fixed bin(17,0) initial dcl 4-11 adjust_action internal static fixed bin(17,0) initial dcl 4-3 allocate_action internal static fixed bin(17,0) initial dcl 4-8 append_action internal static fixed bin(17,0) initial dcl 4-19 bead_idx automatic fixed bin(17,0) dcl 53 bit builtin function dcl 3-393 bumping_count internal static fixed bin(17,0) initial dcl 4-1 change_index 000000 constant entry external dcl 3-372 change_record_list 000000 constant entry external dcl 3-373 clock_ 000000 constant entry external dcl 3-358 comp_table based structure array level 1 dcl 3-268 current_t_code based fixed bin(35,0) dcl 3-82 delete_action internal static fixed bin(17,0) initial dcl 4-14 deleting_key internal static fixed bin(17,0) initial dcl 4-12 designator automatic fixed bin(35,0) dcl 3-88 designator_struct based structure level 1 dcl 3-127 divide builtin function dcl 3-385 eof_delete internal static fixed bin(17,0) initial dcl 4-15 extend_position_stack 000000 constant entry external dcl 3-370 f_b_ptr automatic pointer dcl 3-156 file_header based structure level 1 unaligned dcl 3-274 fixed builtin function dcl 3-392 free_action internal static fixed bin(17,0) initial dcl 4-6 free_cb_file 000000 constant entry external dcl 3-361 free_position_stack 000000 constant entry external dcl 3-371 free_seg 000000 constant entry external dcl 3-367 free_seg_ptrs 000000 constant entry external dcl 3-365 get_new_seg 000000 constant entry external dcl 3-366 get_seg_ptr 000000 constant entry external dcl 3-362 ind_des_structure based structure level 1 packed unaligned dcl 3-89 ind_structure based structure level 1 unaligned dcl 3-102 index_state_block based structure level 1 unaligned dcl 3-298 initiation_bead based structure level 1 dcl 83 insert_action internal static fixed bin(17,0) initial dcl 4-18 iox_$attach_name 000000 constant entry external dcl 2-6 iox_$attach_ptr 000000 constant entry external dcl 2-6 iox_$close 000000 constant entry external dcl 2-6 iox_$control 000000 constant entry external dcl 2-6 iox_$delete_record 000000 constant entry external dcl 2-6 iox_$destroy_iocb 000000 constant entry external dcl 2-6 iox_$detach_iocb 000000 constant entry external dcl 2-6 iox_$err_no_operation 000000 constant entry external dcl 2-6 iox_$err_not_attached 000000 constant entry external dcl 2-6 iox_$err_not_closed 000000 constant entry external dcl 2-6 iox_$err_not_open 000000 constant entry external dcl 2-6 iox_$error_output external static pointer dcl 2-35 iox_$find_iocb_n 000000 constant entry external dcl 2-6 iox_$get_chars 000000 constant entry external dcl 2-6 iox_$get_line 000000 constant entry external dcl 2-6 iox_$iocb_version_sentinel external static char(4) dcl 1-43 iox_$look_iocb 000000 constant entry external dcl 2-6 iox_$modes 000000 constant entry external dcl 2-6 iox_$move_attach 000000 constant entry external dcl 2-6 iox_$open 000000 constant entry external dcl 2-6 iox_$position 000000 constant entry external dcl 2-6 iox_$propagate 000000 constant entry external dcl 2-6 iox_$put_chars 000000 constant entry external dcl 2-6 iox_$read_key 000000 constant entry external dcl 2-6 iox_$read_length 000000 constant entry external dcl 2-6 iox_$read_record 000000 constant entry external dcl 2-6 iox_$rewrite_record 000000 constant entry external dcl 2-6 iox_$seek_key 000000 constant entry external dcl 2-6 iox_$user_input external static pointer dcl 2-35 iox_$user_io external static pointer dcl 2-35 iox_$user_output external static pointer dcl 2-35 iox_$write_record 000000 constant entry external dcl 2-6 iox_modes internal static char(24) initial array dcl 6-6 is_ptr automatic pointer dcl 3-297 keys based char(4096) unaligned dcl 3-153 length builtin function dcl 3-386 make_designator 000000 constant entry external dcl 3-363 max builtin function dcl 3-394 min builtin function dcl 3-395 msf_manager_$open 000000 constant entry external dcl 96 must_adjust internal static fixed bin(17,0) initial dcl 4-21 must_rollback internal static fixed bin(17,0) initial dcl 4-22 node_block based structure level 1 unaligned dcl 3-139 non_eof_delete internal static fixed bin(17,0) initial dcl 4-5 old_file_base based structure level 1 unaligned dcl 3-331 old_target_ibp automatic pointer dcl 55 pos_ptr automatic pointer dcl 51 position_frame based structure level 1 unaligned dcl 3-132 read_exclude internal static fixed bin(17,0) initial dcl 4-10 reassigning_key internal static fixed bin(17,0) initial dcl 4-9 record_block_structure based structure level 1 unaligned dcl 3-115 rel builtin function dcl 3-396 replace_action internal static fixed bin(17,0) initial dcl 4-16 reverse builtin function dcl 3-383 rewrite_action internal static fixed bin(17,0) initial dcl 4-17 rollback_action internal static fixed bin(17,0) initial dcl 4-2 seg_array based fixed bin(19,0) array dcl 3-87 seg_ptr automatic pointer dcl 3-86 seg_ptr_array based pointer array dcl 3-85 set_bitcounts 000000 constant entry external dcl 3-368 short_iox_modes internal static char(4) initial array dcl 6-12 source_fcb_ptr automatic pointer dcl 54 source_ibp automatic pointer dcl 57 stat_header_size internal static fixed bin(17,0) initial dcl 3-380 stat_structure based structure level 1 unaligned dcl 3-92 substr builtin function dcl 3-388 sys_info$max_seg_size external static fixed bin(35,0) dcl 102 target_ibp automatic pointer dcl 56 time_stamp_structure based structure level 1 packed unaligned dcl 3-112 true_max_comp_num internal static fixed bin(17,0) initial dcl 3-379 truncate_action internal static fixed bin(17,0) initial dcl 4-20 unshared_opening internal static fixed bin(17,0) initial dcl 4-4 unspec builtin function dcl 3-391 verify builtin function dcl 3-383 write_trunc internal static fixed bin(17,0) initial dcl 4-7 NAME DECLARED BY EXPLICIT CONTEXT. vfile_copy_opening_ 000013 constant entry external dcl 7 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 504 534 364 514 Length 1030 364 30 260 120 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vfile_copy_opening_ 90 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_areap vfile_copy_opening_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME vfile_copy_opening_ 000100 iocb_ptr vfile_copy_opening_ 000102 fcbp vfile_copy_opening_ 000104 indx_cb_ptr vfile_copy_opening_ 000106 attach_block_ptr vfile_copy_opening_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a call_ext_out_desc call_ext_out return ext_entry_desc alloc_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. alloc_cb_file create_position_stack create_seg_ptrs get_system_free_area_ iox_$find_iocb msf_manager_$get_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badcall LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 000006 115 000026 116 000030 117 000035 121 000044 122 000046 125 000047 128 000056 129 000060 134 000061 135 000101 138 000104 139 000113 140 000114 142 000123 144 000136 145 000146 146 000151 147 000155 149 000161 151 000174 152 000204 153 000207 154 000211 155 000212 156 000213 157 000214 158 000215 159 000216 160 000220 161 000222 162 000223 163 000224 164 000225 165 000226 166 000227 167 000230 168 000231 169 000233 175 000234 176 000235 177 000236 178 000237 183 000240 186 000252 188 000260 189 000270 190 000271 191 000272 192 000273 194 000275 196 000301 197 000327 213 000332 220 000341 221 000350 223 000361 ----------------------------------------------------------- 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