COMPILATION LISTING OF SEGMENT cm_delete_buffered Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0951.0 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /* DESCRIPTION 9* 10* This routine frees an element specified by p_element_id. If using 11* the Basic Element Storage Method the return value of p_element_id is 12* either id of the next non-free, non-continuation datum (if there is one in 13* this control interval), the control interval id of the next control 14* interval and a slot index of 0 (if there is another control interval), 15* or "0"b. The caller can assume that a value of "0"b means that the freed 16* element was the last element of the collection. 17* 18* Using Basic ESM if the element to be freed is stored in a datum 19* slot other than the last slot of the slot table (datum_position_table) 20* that slot is marked free by zeroing it and bci_header.free_slot_is_present 21* is turned on to note the existence of the free slot. If the last slot 22* is being freed, the table is truncated. If there exists a contiguous 23* block of free slots adjacent to the last slot, these slots are truncated 24* also, and the whole slot table is searched to see if all of the free slots 25* have been truncated. If so, turn bci_header.free_slot_is_present off; 26* otherwise leave it on. 27* 28* The zero-on-free option (indicated by p_zero_on_free) is not yet 29* implemented. 30**/ 31 32 /* HISTORY: 33* 34*Written by Matthew Pierret 01/10/83. 35*Modified: 36*02/04/83 by Matthew Pierret: Upgraded to CM_INFO_VERSION_2. Changed to 37* check control interval layout type. 38*05/21/84 by Matthew Pierret: Renamed include file dm_cm_cism_info to 39* dm_cism_info. Added ERROR_RETURN procedure. Changed to not get 40* opening info unless a multi-datum element is to be deleted. 41*09/28/84 by Matthew Pierret: Fixed HISTORY section. Changed comments to be 42* indented properly. Corrected mis-statement in DESCRIPTION 43* which claimed that element_id.index could be 0 on inpput. 44* Improved expression for converting bits to bytes. 45*12/03/84 by Matthew Pierret: Fixed HISTORY section and removed indcomtxt 46* from the main format statement as that mode causes the HISTORY 47* section to be formatted in a non-standard fashion. Removed the 48* un-used sys_info$max_seg_size, BYTES_PER_WORD, next_element_id 49* dm_esm_info.incl.pl1. 50**/ 51 52 /* format: style2,ind3 */ 53 /* format: indcomtxt */ 54 55 cm_delete_buffered: 56 proc (p_ci_buffer_ptr, p_file_opening_id, p_collection_id, p_element_id, p_zero_on_free, p_code); 57 58 59 /* START OF DECLARATIONS */ 60 /* Parameter */ 61 62 dcl p_cm_info_ptr ptr; 63 dcl p_ci_buffer_ptr ptr; 64 dcl p_file_opening_id bit (36) aligned; 65 dcl p_collection_id bit (36) aligned; 66 dcl p_element_id bit (36) aligned; 67 dcl p_zero_on_free bit (1) aligned; 68 dcl p_code fixed bin (35); 69 70 /* Automatic */ 71 72 dcl code fixed bin (35); 73 dcl (file_opening_id, collection_id) 74 bit (36) aligned; 75 dcl continuation_datum_id_string 76 bit (36) aligned init ("0"b); 77 dcl 1 local_datum_slot aligned like datum_slot; 78 dcl next_element_id_string bit (36) aligned init ("0"b); 79 dcl (new_number_of_datums, new_start_of_used_space, new_scattered_free_space) 80 fixed bin (17); 81 dcl slot_idx fixed bin; 82 83 dcl slot_not_specified bit (1) aligned init ("0"b); 84 dcl found bit (1) aligned init ("0"b); 85 86 87 /* Based */ 88 89 dcl 1 continuation_datum_id 90 aligned like datum_id based (addr (continuation_datum_id_string)); 91 92 /* Builtin */ 93 94 dcl (addcharno, addr, divide, null, unspec) 95 builtin; 96 97 /* Controlled */ 98 /* Constant */ 99 100 dcl myname init ("cm_delete_buffered") char (32) varying int static options (constant); 101 dcl BITS_PER_BYTE init (9) fixed bin int static options (constant); 102 dcl ZEROED_DATUM_SLOT init (0) fixed bin (35) int static options (constant); 103 104 /* Entry */ 105 106 dcl sub_err_ entry () options (variable); 107 108 /* External */ 109 110 dcl ( 111 dm_error_$no_element, 112 dm_error_$ci_not_in_collection, 113 dm_error_$unimplemented_ci_version, 114 error_table_$unimplemented_version 115 ) ext fixed bin (35); 116 117 /* END OF DECLARATIONS */ 118 119 cm_info_ptr = null; 120 file_opening_id = p_file_opening_id; 121 collection_id = p_collection_id; 122 123 go to JOIN; 124 125 126 info: 127 entry (p_cm_info_ptr, p_ci_buffer_ptr, p_element_id, p_zero_on_free, p_code); 128 129 cm_info_ptr = p_cm_info_ptr; 130 131 call CHECK_VERSION ("cm_info", cm_info.version, CM_INFO_VERSION_2); 132 133 file_opening_id = cm_info.file_oid; 134 collection_id = cm_info.collection_id; 135 136 go to JOIN; 137 138 JOIN: 139 p_code, code = 0; 140 141 element_id_string = p_element_id; 142 143 basic_control_interval_ptr, bci_header_ptr = p_ci_buffer_ptr; 144 145 call CHECK_CI_VERSION (bci_header.layout_type); 146 147 if bci_header.collection_id ^= collection_id 148 then call ERROR_RETURN (dm_error_$ci_not_in_collection); 149 150 /* Verify supplied element id. */ 151 152 if element_id.index > bci_header.number_of_datums | element_id.index <= 0 153 then call ERROR_RETURN (dm_error_$no_element); 154 155 /* Verify the datum slot. The slot must correspond with an allocated, non-continuation datum. */ 156 157 local_datum_slot = basic_control_interval.datum_position_table (element_id.index); 158 159 if local_datum_slot.offset_in_bytes = FREE_SLOT | local_datum_slot.flags.is_continuation 160 then call ERROR_RETURN (dm_error_$no_element); 161 162 163 /**** Calculate new values for scattered free space and start of used space 164* and the number of datums for the control interval. */ 165 166 new_number_of_datums = bci_header.number_of_datums - 1; 167 new_start_of_used_space = bci_header.start_of_used_space; 168 new_scattered_free_space = bci_header.scattered_free_space; 169 170 if local_datum_slot.offset_in_bytes = bci_header.start_of_used_space 171 then new_start_of_used_space = 172 new_start_of_used_space 173 + divide (local_datum_slot.length_in_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 174 else new_scattered_free_space = 175 new_scattered_free_space 176 + divide (local_datum_slot.length_in_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 177 178 if local_datum_slot.is_continued 179 then 180 do; 181 182 /*** The element is a multi-datum element. Free the trailing datums first. 183* It is necessary to get the id of the first continuation datum out of 184* this initial datum. The routine cm_delete_cn_datum will return subsequent 185* continuation ids. It may also be necessary to get the opening info for the 186* collection (cm_info) it it has not geen goten already (cm_info_ptr=null). */ 187 188 if cm_info_ptr = null 189 then 190 do; 191 call cm_opening_info$get (file_opening_id, collection_id, cm_info_ptr, code); 192 if code ^= 0 193 then call ERROR_RETURN (code); 194 call CHECK_VERSION ("cm_info", cm_info.version, CM_INFO_VERSION_2); 195 end; 196 197 datum_ptr = addcharno (bci_header_ptr, local_datum_slot.offset_in_bytes); 198 /* continued_datum is based on datum_ptr */ 199 continuation_datum_id = continued_datum.continuation; 200 /* This sets continuation_datum_id_string */ 201 202 do while (continuation_datum_id_string ^= "0"b & code = 0); 203 204 call cm_delete_cn_datum (cm_info_ptr, p_zero_on_free, continuation_datum_id_string, code); 205 206 end; 207 208 if code ^= 0 209 then call ERROR_RETURN (code); 210 211 end; 212 213 /**** Shift trailing slots one slot to the left to recover the recently 214* freed slot, zero-ing out the rightmost slot. */ 215 216 do slot_idx = element_id.index to new_number_of_datums; 217 basic_control_interval.datum_position_table (slot_idx) = 218 basic_control_interval.datum_position_table (slot_idx + 1); 219 end; 220 221 unspec (basic_control_interval.datum_position_table (new_number_of_datums + 1)) = unspec (ZEROED_DATUM_SLOT); 222 223 bci_header.scattered_free_space = new_scattered_free_space; 224 bci_header.start_of_used_space = new_start_of_used_space; 225 bci_header.number_of_datums = new_number_of_datums; 226 227 MAIN_RETURN: 228 return; 229 230 ERROR_RETURN: 231 proc (er_p_code); 232 233 dcl er_p_code fixed bin (35); 234 235 p_code = er_p_code; 236 go to MAIN_RETURN; 237 238 end ERROR_RETURN; 239 240 CHECK_VERSION: 241 proc (cv_p_structure_name, cv_p_given_version, cv_p_correct_version); 242 243 dcl cv_p_structure_name char (*); 244 dcl cv_p_given_version char (8) aligned; 245 dcl cv_p_correct_version char (8) aligned; 246 247 if cv_p_given_version ^= cv_p_correct_version 248 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 249 "^/Expected version ^8a of ^a structure; received ^8a.", cv_p_correct_version, cv_p_structure_name, 250 cv_p_given_version); 251 252 return; 253 254 end CHECK_VERSION; 255 256 257 CHECK_CI_VERSION: 258 proc (ccv_p_given_version); 259 260 dcl ccv_p_given_version char (4) aligned; 261 262 if ccv_p_given_version ^= BASIC_CI_LAYOUT_1 263 then call sub_err_ (dm_error_$unimplemented_ci_version, myname, ACTION_CANT_RESTART, null, 0, 264 "^/Expected version ^4a control interval; received ^4a.", BASIC_CI_LAYOUT_1, ccv_p_given_version); 265 266 return; 267 268 end CHECK_CI_VERSION; 269 1 1 /* BEGIN INCLUDE FILE - dm_cm_info.incl.pl1 */ 1 2 1 3 /* DESCRIPTION: 1 4* The cm_info structure is used to hold per-process opening information 1 5* about a collection. It is generally allocated in the process' DM free 1 6* area, as returned by the function get_dm_free_area_. The opening_manager_ 1 7* is used to provide access the cm_info structure, keeping it in a hash 1 8* table keyed on file opening id and collection id combined. 1 9* Currently cm_info is never freed until the process terminates. Each 1 10* time a new transaction is started, detected when the current transaction 1 11* id of a process differs from cm_info.current_transaction_id, the information 1 12* in cm_info is refreshed. Storage record information is only refreshed on 1 13* demand, as most modules do not need the information in the storage record. 1 14* Instead, cm_info.storage_record_ptr is set to null (), but 1 15* cm_info.storage_record_buffer_ptr remains set to the previous value of 1 16* cm_info.storage_record_ptr. When a refreshed copy of the storage record is 1 17* requested, it is placed at the location pointed to by 1 18* cm_info.storage_record_buffer_ptr, saving the expense of re-allocation. 1 19**/ 1 20 1 21 /* HISTORY: 1 22*Written by Matthew Pierret, 10/27/82. 1 23*Modified: 1 24*01/25/83 by Matthew Pierret: Changed to version 2. Added 1 25* storage_record_buffer_ptr. This points to the storage_record. 1 26* When cm_info is refreshed, storage_record_ptr is set to null, 1 27* but storage_record_buffer_ptr continues to point at where the 1 28* storage_record was. When the storge_record is again requested, 1 29* it is put back in the same place rather than allocating a new 1 30* storage_record. 1 31*09/24/84 by Matthew Pierret: Re-wrote DESCRIPTION section. Removed the 1 32* init clause from the version component. 1 33**/ 1 34 1 35 /* format: style2,ind3,ll79 */ 1 36 1 37 dcl 1 cm_info aligned based (cm_info_ptr), 1 38 2 version char (8), 1 39 2 current_txn_id bit (36) aligned init ("0"b), 1 40 2 file_oid bit (36) aligned init ("0"b), 1 41 2 collection_id bit (36) aligned init ("0"b), 1 42 2 header_ptr ptr init (null), 1 43 2 storage_record_ptr ptr init (null), 1 44 2 storage_record_buffer_ptr 1 45 ptr init (null); 1 46 1 47 dcl cm_info_ptr ptr init (null); 1 48 dcl CM_INFO_VERSION_2 init ("cm_info2") char (8) aligned 1 49 internal static options (constant); 1 50 1 51 /* END INCLUDE FILE - dm_cm_info.incl.pl1 */ 270 271 2 1 /* BEGIN INCLUDE FILE dm_cm_basic_ci.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* 2 5* The collection_manager_ manages the structure of the addressable 2 6* portion of a control interval. The addressable portion is that portion of 2 7* a control interval which the file_manager_ will allow the 2 8* collection_manager_ to address. In this description control interval will 2 9* be used to mean the addressable portion of a control interval. 2 10* 2 11* A control interval is divided into four parts: the header, the datum 2 12* position table (also known as the slot table or slots), un-used space and 2 13* used space. The beginning of the header is at offset 0, and the end of the 2 14* used space is at the end of the control interval (curently offset 4072). 2 15* Pictoriarly, a control interval is structured as follows: 2 16* 2 17* ---------------------------------------------------------------------- 2 18* | || | | | | | || || | / / | |/| | | 2 19* | Header || | slot | || un-used space || |/ / /| |/| | | 2 20* | || | table | || || | / / | |/| | | 2 21* | || | | | | | || || |/ / /| |/| | | 2 22* ---------------------------------------------------------------------- 2 23* ^ ^ ^ ^ ^ ^ ^ 2 24* | | | | | | | 2 25* | |...........|.......|...| 2 26* start of used space| | | | 2 27* | | each| 2 28* scattered free space| is a used 2 29* datum 2 30* 2 31* The basic_control_interval structure describes the header 2 32* (basic_control_interval.header, bci_header) and the slots 2 33* (basic_control_interval.datum_position_table, datum_slot for one only). 2 34* Each datum_slot contains the offset (in bytes) and the length (in bits) of 2 35* a datum in the used space. If the offset is equal to FREE_SLOT (declared 2 36* in dm_cm_basic_ci_const.incl.pl1), the slot is un-used. The slot also 2 37* contains flags describing the type of datum (see dm_cm_datum.incl.pl1). 2 38**/ 2 39 2 40 /* HISTORY: 2 41*Written by Matthew Pierret, 02/07/82. 2 42*Modified: 2 43*03/25/82 by Matthew Pierret: Fixed alignment differences basic_control_interval 2 44* and its sub-structures. 2 45*06/14/82 by Matthew Pierret: Removed common header and buffers. Changed 2 46* basic_ci_header to bci_header. Added previous_control_interval. 2 47*07/12/82 by Matthew Pierret: Changed collection_id to be bit (36) aligned. 2 48*10/29/82 by Matthew Pierret: Added flags to datum slots. 2 49*11/10/82 by Matthew Pierret: Removed continued_datum_is_present flag, as it 2 50* is not used. 2 51*03/28/84 by Matthew Pierret: Added the constants BCI_HEADER_LENGTH_IN_BYTES 2 52* and DATUM_POSITION_TABLE_OFFSET_IN_BYTES. 2 53**/ 2 54 2 55 /* format: style2 */ 2 56 dcl 1 basic_control_interval 2 57 aligned based (basic_control_interval_ptr), 2 58 2 header like bci_header, 2 59 2 datum_position_table 2 60 (0 refer (basic_control_interval.number_of_datums)) like datum_slot; 2 61 2 62 2 63 dcl 1 bci_header aligned based (bci_header_ptr), 2 64 2 layout_type char (4) aligned, 2 65 2 collection_id bit (36) aligned, 2 66 2 next_control_interval 2 67 fixed bin (24) uns unal, 2 68 2 previous_control_interval 2 69 fixed bin (24) uns unal, 2 70 2 flags unal, 2 71 3 continuation_datum_is_present 2 72 bit (1) unal, 2 73 3 free_slot_is_present 2 74 bit (1) unal, 2 75 3 must_be_zero bit (4) unal, /* reserved */ 2 76 2 scattered_free_space 2 77 fixed bin (17) unal, 2 78 2 start_of_used_space 2 79 fixed bin (17) unal, 2 80 2 number_of_datums fixed bin (17) unal; 2 81 2 82 dcl 1 datum_slot aligned based (datum_slot_ptr), 2 83 2 flags unal, 2 84 3 special_format_datum 2 85 bit (1) unal, /* reserved */ 2 86 3 is_continued bit (1) unal, 2 87 3 is_continuation bit (1) unal, 2 88 3 mbz bit (1) unal, /* reserved */ 2 89 2 offset_in_bytes fixed bin (15) uns unal, 2 90 2 length_in_bits fixed bin (17) uns unal; 2 91 2 92 dcl basic_control_interval_ptr 2 93 ptr; 2 94 dcl bci_header_ptr ptr; 2 95 dcl datum_slot_ptr ptr; 2 96 2 97 dcl BASIC_CI_LAYOUT_1 char (4) aligned init ("bci1") internal static options (constant); 2 98 2 99 /* END INCLUDE FILE dm_cm_basic_ci.incl.pl1 */ 272 273 3 1 /* BEGIN INCLUDE FILE dm_cm_basic_ci_const.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* 3 5* Contains constants useful in describing parts of a basic control interval. 3 6**/ 3 7 3 8 /* HISTORY: 3 9*Written by Matthew Pierret, 09/20/84. 3 10*Modified: 3 11**/ 3 12 3 13 dcl FREE_SLOT init (0) fixed bin (15) uns internal static options (constant); 3 14 dcl BCI_HEADER_LENGTH_IN_BYTES 3 15 init (20) fixed bin internal static options (constant); 3 16 dcl DATUM_POSITION_TABLE_OFFSET_IN_BYTES 3 17 init (20) fixed bin internal static options (constant); 3 18 3 19 3 20 /* END INCLUDE FILE dm_cm_basic_ci_const.incl.pl1 */ 274 275 4 1 /* BEGIN INCLUDE FILE dm_cm_datum.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4* This include file contains the declarations of datum structures. 4 5* There are four tyes of datums: your ordinary, run-of-the-mill datum 4 6* (Datum); a continuation datum (CN Datum), which is a continuation of 4 7* another datum; a continued datum (CD Datum), which is continued (has a 4 8* continuation datum) but is not a continuation itself; and a continued 4 9* continuation datum (CDCN Datum), which is both continued and is a 4 10* continuation. To illustrate, datums can be pieced combined in the 4 11* following ways: 4 12* 4 13* 1) Datum alone. 4 14* 4 15* 2) CD Datum -> CN Datum. 4 16* 4 17* 3) CD Datum -> CDCN Datum {-> CDCN Datum -> ...-> CDCN Datum} -> CN Datum. 4 18* 4 19* continued_datum and continued_continuation_datum each contains a header 4 20* which includes the identifier of the datum which is its continuation. 4 21* continued_datum.header.full_length is the length in bits of the entire 4 22* element, i.e., the addition of the length of contents structure component 4 23* of all of the datums from CD Datum to CN Datum. 4 24**/ 4 25 4 26 /* HISTORY: 4 27*Written by Matthew Pierret, 02/07/82. 4 28*Modified: 4 29*03/25/82 by Matthew Pierret: Changed all datum structures to be unaligned. 4 30*06/14/82 by Matthew Pierret: Added DATUM_HEADER_LENGTH_IN_BYTES. 4 31*08/04/82 by Matthew Pierret: Added DATUM_HEADER_LENGTH_IN_BITS. 4 32*10/20/82 by Matthew Pierret: Split into two include files, this one and 4 33* dm_cm_datum_constants. The latter holds only and all constants 4 34* formerly in this include file. 4 35*10/29/82 by Matthew Pierret: Removed datum headers. 4 36*09/18/84 by Matthew Pierret: Added DESCRIPTION section. Added datum and 4 37* continuation_datum (mainly for illustration). 4 38*12/03/84 by Matthew Pierret: Removed the non-based structures 4 39* (cd cdcn)_datum_headers. 4 40**/ 4 41 4 42 /* format: style2,ll79,ind3 */ 4 43 4 44 dcl 1 datum unaligned based (datum_ptr), 4 45 2 contents bit (datum_contents_length_in_bits); 4 46 4 47 dcl 1 continuation_datum unaligned based (datum_ptr), 4 48 2 contents bit (datum_contents_length_in_bits); 4 49 4 50 dcl 1 continued_datum unaligned based (datum_ptr), 4 51 2 header, 4 52 3 full_length fixed bin (35), 4 53 3 continuation like datum_id, 4 54 2 contents bit (datum_contents_length_in_bits); 4 55 4 56 dcl 1 continued_continuation_datum 4 57 unaligned based (datum_ptr), 4 58 2 header, 4 59 3 continuation like datum_id, 4 60 2 contents bit (datum_contents_length_in_bits); 4 61 4 62 dcl 1 datum_id aligned based (datum_id_ptr), 4 63 2 control_interval_id 4 64 fixed bin (24) unal uns, 4 65 2 index fixed bin (12) unal uns; 4 66 4 67 dcl datum_ptr ptr init (null ()); 4 68 dcl datum_id_ptr ptr init (null ()); 4 69 dcl datum_contents_length_in_bits 4 70 fixed bin (35) init (-1); 4 71 4 72 4 73 4 74 /* END INCLUDE FILE dm_cm_datum.incl.pl1 */ 276 277 5 1 /* BEGIN INCLUDE FILE dm_element_id.incl.pl1 */ 5 2 5 3 /* DESCRIPTION: 5 4* 5 5* Contains the declaration of an element identifier. Element 5 6* identifiers consist of two parts, the id (number) of the control interval 5 7* in which the element resides, and the index into the slot table of 5 8* the element in the control interval. The declaration of the element_id 5 9* structure reflects this division of the element identifier. The structure 5 10* is based on the automatic bit string element_id_string because programs 5 11* generally pass bit strings (element_id_string) to each other, then 5 12* interpret the bit string by overlaying the element_id structure ony if 5 13* it is necessary to access the parts of the id. Basing element_id on 5 14* addr(element_id_string) instead of on a pointer removes the necessity 5 15* for always setting that pointer explicitly and guarantees that changes 5 16* made to the string or structure do not get inconsistent. 5 17* 5 18* Changes made to element_id must also be made to datum_id, declared in 5 19* dm_cm_datum.incl.pl1. 5 20**/ 5 21 5 22 /* HISTORY: 5 23*Written by Matthew Pierret, 04/01/82. 5 24*Modified: 5 25*09/24/84 by Matthew Pierret: Added DESCRIPTION section. 5 26**/ 5 27 5 28 /* format: style2,ind3,ll79 */ 5 29 5 30 dcl element_id_string bit (36) aligned; 5 31 5 32 dcl 1 element_id aligned based (addr (element_id_string)), 5 33 2 control_interval_id 5 34 fixed bin (24) unal unsigned, 5 35 2 index fixed bin (12) unal unsigned; 5 36 5 37 5 38 /* END INCLUDE FILE dm_element_id.incl.pl1 */ 278 279 6 1 /* BEGIN INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 6 2 6 3 /* DESCRIPTION: 6 4* 6 5* Contains entry declarations of internally available collection_manager_ 6 6* entries. Entries which are only available via the collection_manager_ 6 7* transfer vector are not included here, but are declared instead in 6 8* dm_collmgr_entry_dcls.incl.pl1. 6 9**/ 6 10 6 11 /* HISTORY: 6 12*Written by Mathew Pierret, 04/01/82. 6 13*Modified: 6 14*09/21/82 by Lindsey Spratt: Added the cm_compact$replacement entry. 6 15*10/29/82 by Matthew Pierret: Added cm_find_free_slot, cm_determine_free_space, 6 16* cm_find_ci_to_alloc_datum, cm_recursive_put. 6 17* Added cm_get_element$info*, $header*. The former is used when 6 18* the caller has a cm_info structure already; the latter is used to 6 19* get collection headers. 6 20* Added cm_opening_info$get. Removed cm_add_ci_(part thread). 6 21* Added cm_allocate_element$info. 6 22*11/09/82 by Matthew Pierret: Added argument to cm_allocate_ordered_element 6 23* calling sequence for returning free space. 6 24* Added cm_free_cn_datum("" $header). 6 25*01/07/83 by Matthew Pierret: Added: 6 26* cm_allocate_element$buffered("" _info); 6 27* cm_put_element$buffered("" _info); 6 28* cm_put_datum_in_place$buffered("" _continued); 6 29* cm_put_datum_in_pool$buffered("" _continued); 6 30* cm_compact$buffered. 6 31*01/26/83 by Matthew Pierret: Replaced cm_get_header_and_slot with 6 32* cm_get_bci_header$slot and added cm_get_bci_header$slot_exclusive. 6 33* Added cm_opening_info$get_storage_record. 6 34* Added a bit(36)aligned argument to cm_recursive_put to hold the 6 35* id of the previous datum. 6 36*02/02/83 by Matthew Pierret: Added fixed bin (17) argument to cm_find_free_slot 6 37* which is for the number of slots after allocation. 6 38*02/07/83 by Matthew Pierret: Added cm_get_id$(id info info_return_slot 6 39* header header_return_slot). 6 40* Added cm_get_element_portion$(exclusive info info_exclusive). 6 41* Added cm_get_element$bypass_info. 6 42*03/25/83 by Matthew Pierret: Added cm_free_element$info and 6 43* cm_free_opening_info. 6 44*04/29/83 by Matthew Pierret: Added cm_put_element$unprotected_info 6 45*08/04/83 by Matthew Pierret: Added the entries $does_new_datum_fit and 6 46* $does_replacement_fit to cm_determine_free_space. These entries 6 47* return flags indicating if a datum fits in the ci and the pool. 6 48* Added a bit(1)aligned parameter to cm_find_free_slot in which is 6 49* returned the new value of bci_header.free_slot_is_present. 6 50*02/07/84 by Matthew Pierret: Added cm_get_id$ptr. Removed all cm_get_id 6 51* modules except cm_get_id$id. Removed all cm_get_element$info* 6 52* entries. Changed cm_get_element_$bypass_info to have the same 6 53* calling sequence as other cm_get_element entries. 6 54*06/12/84 by Matthew Pierret: Changed cm_put_element to cm_modify 6 55* and cm_allocate_element to cm_put. 6 56* Switched the element_length/element_ptr parameter pair to be 6 57* element_ptr/element_length in cm_modify and cm_put. 6 58*07/24/84 by Matthew Pierret: Added cm_free_ci$raw_return_prev_next. 6 59*09/24/84 by Matthew Pierret: Added trace_thread_modifications_(on off) 6 60* entries to cm_free_ci and cm_replace_buffered_ci, 6 61* cm_allocate_ci$info_header, cm_opening_info$opening_table_ptr. 6 62* Removed cm_find_free_space. Commented out un-used entries. 6 63* Re-named allocate entries to put entries, except for allocate_ci. 6 64* Re-named free element and free datum entries to use delete instead 6 65* of free, and cm_recursive_put to cm_recursive_modify. 6 66* Removed cm_get_element$bypass_info. 6 67*02/27/85 by Matthew C. Pierret: Re-added cm_compact$buffered_replacement now 6 68* that cm_modify$buffered uses it. 6 69*03/07/85 by R. Michael Tague: Added cm_postcommit_increment. 6 70**/ 6 71 6 72 /* format: style2,ind3 */ 6 73 6 74 6 75 dcl cm_allocate_ci entry (bit (36) aligned, bit (36) aligned, fixed bin (24) unsigned, fixed bin (35)); 6 76 dcl cm_allocate_ci$info entry (ptr, fixed bin (24) unsigned, fixed bin (35)); 6 77 dcl cm_allocate_ci$info_header 6 78 entry (ptr, fixed bin (24) unsigned, ptr, fixed bin (35)); 6 79 6 80 6 81 dcl cm_compact entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 6 82 dcl cm_compact$buffered entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 6 83 dcl cm_compact$replacement entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 6 84 dcl cm_compact$buffered_replacement 6 85 entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 6 86 6 87 dcl cm_delete_cn_datum entry (ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 6 88 6 89 dcl cm_delete_cn_datum$header 6 90 entry (ptr, ptr, ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 6 91 6 92 dcl cm_delete entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, bit (1) aligned, 6 93 fixed bin (35)); 6 94 dcl cm_delete$info entry (ptr, bit (36) aligned, bit (1) aligned, fixed bin (35)); 6 95 6 96 dcl cm_determine_free_space$all 6 97 entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35)); 6 98 dcl cm_determine_free_space$effective 6 99 entry (ptr, fixed bin (35), bit (1) aligned, bit (1) aligned, fixed bin (35), 6 100 fixed bin (35)); 6 101 dcl cm_determine_free_space$does_new_datum_fit 6 102 entry (ptr, fixed bin (35), fixed bin (35), bit (1) aligned, bit (1) aligned, 6 103 bit (1) aligned, bit (1) aligned, fixed bin (35)); 6 104 6 105 /**** Not yet used ********************************************************* 6 106* dcl cm_determine_free_space$does_replacement_fit 6 107* entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35), bit (1) aligned, 6 108* bit (1) aligned, bit (1) aligned, bit (1) aligned, fixed bin (35)); 6 109*************************************************************************** */ 6 110 6 111 dcl cm_find_ci_to_alloc_datum 6 112 entry (ptr, fixed bin (35), fixed bin (24) uns, bit (1) aligned, bit (1) aligned, ptr, 6 113 fixed bin (24) uns, fixed bin (35)); 6 114 6 115 dcl cm_find_free_slot entry (bit (36) aligned, fixed bin (24) uns, ptr, fixed bin (17), fixed bin (17), 6 116 bit (1) aligned, fixed bin (35)); 6 117 6 118 dcl cm_free_ci$info entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (35)); 6 119 dcl cm_free_ci$raw_return_prev_next 6 120 entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (24) uns, 6 121 fixed bin (24) uns, fixed bin (35)); 6 122 dcl cm_free_ci$trace_thread_modifications_on 6 123 entry (); 6 124 dcl cm_free_ci$trace_thread_modifications_off 6 125 entry (); 6 126 6 127 6 128 dcl cm_free_opening_info entry (bit (36) aligned, bit (36) aligned, fixed bin (35)); 6 129 6 130 dcl cm_get_bci_header entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 6 131 dcl cm_get_bci_header$exclusive 6 132 entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 6 133 dcl cm_get_bci_header$slot entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 6 134 6 135 /**** Not yet used ******************************************************** 6 136* dcl cm_get_bci_header$slot_exclusive 6 137* entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 6 138*************************************************************************** */ 6 139 6 140 dcl cm_get_element entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 6 141 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 6 142 dcl cm_get_element$exclusive 6 143 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, ptr, 6 144 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 6 145 6 146 dcl cm_get_element_portion entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 6 147 fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 6 148 fixed bin (35), fixed bin (35)); 6 149 6 150 /**** Not yet used ******************************************************** 6 151* dcl cm_get_element_portion$exclusive 6 152* entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 6 153* fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 6 154* fixed bin (35), fixed bin (35)); 6 155*************************************************************************** */ 6 156 6 157 dcl cm_get_id$id entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 6 158 bit (1) aligned, bit (36) aligned, fixed bin (35)); 6 159 dcl cm_get_id$ptr entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 6 160 bit (1) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 6 161 6 162 dcl cm_modify entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 6 163 fixed bin (35), fixed bin (35)); 6 164 dcl cm_modify$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 6 165 fixed bin (35), fixed bin (35)); 6 166 6 167 /******* Not yet used ***************************************************** 6 168* dcl cm_modify$buffered_info 6 169* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 6 170* fixed bin (35)); 6 171*****************************************************************************/ 6 172 6 173 dcl cm_modify$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 6 174 dcl cm_modify$unprotected_info 6 175 entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 6 176 6 177 6 178 /******* Not yet used ***************************************************** 6 179* dcl cm_modify_portion entry (bit (36) aligned, bit (36) aligned, fixed bin (35), fixed bin (35), 6 180* fixed bin (35), ptr, bit (36) aligned, fixed bin (35), fixed bin (35)); 6 181*****************************************************************************/ 6 182 6 183 6 184 dcl cm_opening_info$get entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 6 185 dcl cm_opening_info$get_storage_record 6 186 entry (ptr, fixed bin (35)); 6 187 dcl cm_opening_info$full_get 6 188 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 6 189 dcl cm_opening_info$opening_table_ptr 6 190 entry () returns (ptr); 6 191 6 192 dcl cm_postcommit_increment 6 193 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 6 194 6 195 dcl cm_put entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 6 196 fixed bin (35), fixed bin (35)); 6 197 dcl cm_put$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 6 198 fixed bin (35), fixed bin (35)); 6 199 6 200 /******* Not yet used ***************************************************** 6 201* dcl cm_put$buffered_info 6 202* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 6 203* fixed bin (35)); 6 204*****************************************************************************/ 6 205 6 206 dcl cm_put$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 6 207 6 208 dcl cm_put_basic_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 6 209 fixed bin (35)); 6 210 6 211 dcl cm_put_cn_datum entry (ptr, ptr, fixed bin (35), bit (36) aligned, bit (36) aligned, fixed bin (35)); 6 212 6 213 dcl cm_put_datum_in_place entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 6 214 fixed bin (35)); 6 215 dcl cm_put_datum_in_place$buffered 6 216 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 6 217 dcl cm_put_datum_in_place$buffered_continued 6 218 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 6 219 fixed bin (35)); 6 220 dcl cm_put_datum_in_place$continued 6 221 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 6 222 fixed bin (35), bit (36) aligned, fixed bin (35)); 6 223 6 224 dcl cm_put_datum_in_pool entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 6 225 fixed bin (35)); 6 226 dcl cm_put_datum_in_pool$buffered 6 227 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 6 228 dcl cm_put_datum_in_pool$buffered_continued 6 229 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 6 230 fixed bin (35)); 6 231 dcl cm_put_datum_in_pool$continued 6 232 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 6 233 fixed bin (35), bit (36) aligned, fixed bin (35)); 6 234 6 235 dcl cm_put_ordered_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 6 236 fixed bin (35)); 6 237 dcl cm_put_ordered_element$buffered 6 238 entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 6 239 fixed bin (35)); 6 240 6 241 dcl cm_put_overlength_tail entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35)); 6 242 6 243 dcl cm_recursive_modify entry (ptr, bit (36) aligned, ptr, fixed bin (35), fixed bin (35), bit (36) aligned, 6 244 fixed bin (35)); 6 245 6 246 6 247 dcl cm_replace_buffered_ci$trace_thread_modifications_on 6 248 entry (); 6 249 dcl cm_replace_buffered_ci$trace_thread_modifications_off 6 250 entry (); 6 251 6 252 /* END INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 280 281 7 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 7 2 /* format: style3 */ 7 3 7 4 /* These constants are to be used for the flags argument of sub_err_ */ 7 5 /* They are just "string (condition_info_header.action_flags)" */ 7 6 7 7 declare ( 7 8 ACTION_CAN_RESTART init (""b), 7 9 ACTION_CANT_RESTART init ("1"b), 7 10 ACTION_DEFAULT_RESTART 7 11 init ("01"b), 7 12 ACTION_QUIET_RESTART 7 13 init ("001"b), 7 14 ACTION_SUPPORT_SIGNAL 7 15 init ("0001"b) 7 16 ) bit (36) aligned internal static options (constant); 7 17 7 18 /* End include file */ 282 283 284 end cm_delete_buffered; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0912.5 cm_delete_buffered.pl1 >spec>on>7192.pbf-04/04/85>cm_delete_buffered.pl1 270 1 01/07/85 0858.4 dm_cm_info.incl.pl1 >ldd>include>dm_cm_info.incl.pl1 272 2 01/07/85 0858.0 dm_cm_basic_ci.incl.pl1 >ldd>include>dm_cm_basic_ci.incl.pl1 274 3 01/07/85 0858.1 dm_cm_basic_ci_const.incl.pl1 >ldd>include>dm_cm_basic_ci_const.incl.pl1 276 4 01/07/85 0901.2 dm_cm_datum.incl.pl1 >ldd>include>dm_cm_datum.incl.pl1 278 5 01/07/85 0858.5 dm_element_id.incl.pl1 >ldd>include>dm_element_id.incl.pl1 280 6 04/04/85 0819.0 dm_cm_entry_dcls.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_cm_entry_dcls.incl.pl1 282 7 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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. ACTION_CANT_RESTART 000000 constant bit(36) initial dcl 7-7 set ref 247* 262* BASIC_CI_LAYOUT_1 000001 constant char(4) initial dcl 2-97 set ref 262 262* BITS_PER_BYTE constant fixed bin(17,0) initial dcl 101 ref 170 170 174 174 CM_INFO_VERSION_2 000002 constant char(8) initial dcl 1-48 set ref 131* 194* FREE_SLOT constant fixed bin(15,0) initial unsigned dcl 3-13 ref 159 ZEROED_DATUM_SLOT constant fixed bin(35,0) initial dcl 102 ref 221 addcharno builtin function dcl 94 ref 197 addr builtin function dcl 94 ref 152 152 157 199 216 basic_control_interval based structure level 1 dcl 2-56 basic_control_interval_ptr 000116 automatic pointer dcl 2-92 set ref 143* 157 217 217 221 bci_header based structure level 1 dcl 2-63 bci_header_ptr 000120 automatic pointer dcl 2-94 set ref 143* 145 147 152 166 167 168 170 197 223 224 225 ccv_p_given_version parameter char(4) dcl 260 set ref 257 262 262* cm_delete_cn_datum 000022 constant entry external dcl 6-87 ref 204 cm_info based structure level 1 dcl 1-37 cm_info_ptr 000114 automatic pointer initial dcl 1-47 set ref 119* 129* 131 133 134 188 191* 194 204* 1-47* cm_opening_info$get 000024 constant entry external dcl 6-184 ref 191 code 000100 automatic fixed bin(35,0) dcl 72 set ref 138* 191* 192 192* 202 204* 208 208* collection_id 4 based bit(36) initial level 2 in structure "cm_info" dcl 1-37 in procedure "cm_delete_buffered" ref 134 collection_id 1 based bit(36) level 2 in structure "bci_header" dcl 2-63 in procedure "cm_delete_buffered" ref 147 collection_id 000102 automatic bit(36) dcl 73 in procedure "cm_delete_buffered" set ref 121* 134* 147 191* continuation 1 based structure level 3 packed unaligned dcl 4-50 ref 199 continuation_datum_id based structure level 1 dcl 89 set ref 199* continuation_datum_id_string 000103 automatic bit(36) initial dcl 75 set ref 75* 199 202 204* continued_datum based structure level 1 packed unaligned dcl 4-50 cv_p_correct_version parameter char(8) dcl 245 set ref 240 247 247* cv_p_given_version parameter char(8) dcl 244 set ref 240 247 247* cv_p_structure_name parameter char unaligned dcl 243 set ref 240 247* datum_contents_length_in_bits 000126 automatic fixed bin(35,0) initial dcl 4-69 set ref 4-69* datum_id based structure level 1 dcl 4-62 datum_id_ptr 000124 automatic pointer initial dcl 4-68 set ref 4-68* datum_position_table 5 based structure array level 2 dcl 2-56 set ref 157 217* 217 221* datum_ptr 000122 automatic pointer initial dcl 4-67 set ref 197* 199 4-67* datum_slot based structure level 1 dcl 2-82 divide builtin function dcl 94 ref 170 174 dm_error_$ci_not_in_collection 000014 external static fixed bin(35,0) dcl 110 set ref 147* dm_error_$no_element 000012 external static fixed bin(35,0) dcl 110 set ref 152* 159* dm_error_$unimplemented_ci_version 000016 external static fixed bin(35,0) dcl 110 set ref 262* element_id based structure level 1 dcl 5-32 element_id_string 000127 automatic bit(36) dcl 5-30 set ref 141* 152 152 157 216 er_p_code parameter fixed bin(35,0) dcl 233 ref 230 235 error_table_$unimplemented_version 000020 external static fixed bin(35,0) dcl 110 set ref 247* file_oid 3 based bit(36) initial level 2 dcl 1-37 ref 133 file_opening_id 000101 automatic bit(36) dcl 73 set ref 120* 133* 191* flags 000104 automatic structure level 2 packed unaligned dcl 77 found 000113 automatic bit(1) initial dcl 84 set ref 84* header based structure level 2 packed unaligned dcl 4-50 index 0(24) based fixed bin(12,0) level 2 packed unsigned unaligned dcl 5-32 ref 152 152 157 216 is_continuation 0(02) 000104 automatic bit(1) level 3 packed unaligned dcl 77 set ref 159 is_continued 0(01) 000104 automatic bit(1) level 3 packed unaligned dcl 77 set ref 178 layout_type based char(4) level 2 dcl 2-63 set ref 145* length_in_bits 0(19) 000104 automatic fixed bin(17,0) level 2 packed unsigned unaligned dcl 77 set ref 170 174 local_datum_slot 000104 automatic structure level 1 dcl 77 set ref 157* myname 000004 constant varying char(32) initial dcl 100 set ref 247* 262* new_number_of_datums 000106 automatic fixed bin(17,0) dcl 79 set ref 166* 216 221 225 new_scattered_free_space 000110 automatic fixed bin(17,0) dcl 79 set ref 168* 174* 174 223 new_start_of_used_space 000107 automatic fixed bin(17,0) dcl 79 set ref 167* 170* 170 224 next_element_id_string 000105 automatic bit(36) initial dcl 78 set ref 78* null builtin function dcl 94 ref 119 188 1-47 4-67 4-68 247 247 262 262 number_of_datums 4(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-63 set ref 152 166 225* offset_in_bytes 0(04) 000104 automatic fixed bin(15,0) level 2 packed unsigned unaligned dcl 77 set ref 159 170 197 p_ci_buffer_ptr parameter pointer dcl 63 ref 55 126 143 p_cm_info_ptr parameter pointer dcl 62 ref 126 129 p_code parameter fixed bin(35,0) dcl 68 set ref 55 126 138* 235* p_collection_id parameter bit(36) dcl 65 ref 55 121 p_element_id parameter bit(36) dcl 66 ref 55 126 141 p_file_opening_id parameter bit(36) dcl 64 ref 55 120 p_zero_on_free parameter bit(1) dcl 67 set ref 55 126 204* scattered_free_space 3(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-63 set ref 168 223* slot_idx 000111 automatic fixed bin(17,0) dcl 81 set ref 216* 217 217* slot_not_specified 000112 automatic bit(1) initial dcl 83 set ref 83* start_of_used_space 4 based fixed bin(17,0) level 2 packed unaligned dcl 2-63 set ref 167 170 224* sub_err_ 000010 constant entry external dcl 106 ref 247 262 unspec builtin function dcl 94 set ref 221* 221 version based char(8) level 2 dcl 1-37 set ref 131* 194* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 7-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 7-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 7-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 7-7 BCI_HEADER_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 3-14 DATUM_POSITION_TABLE_OFFSET_IN_BYTES internal static fixed bin(17,0) initial dcl 3-16 cm_allocate_ci 000000 constant entry external dcl 6-75 cm_allocate_ci$info 000000 constant entry external dcl 6-76 cm_allocate_ci$info_header 000000 constant entry external dcl 6-77 cm_compact 000000 constant entry external dcl 6-81 cm_compact$buffered 000000 constant entry external dcl 6-82 cm_compact$buffered_replacement 000000 constant entry external dcl 6-84 cm_compact$replacement 000000 constant entry external dcl 6-83 cm_delete 000000 constant entry external dcl 6-92 cm_delete$info 000000 constant entry external dcl 6-94 cm_delete_cn_datum$header 000000 constant entry external dcl 6-89 cm_determine_free_space$all 000000 constant entry external dcl 6-96 cm_determine_free_space$does_new_datum_fit 000000 constant entry external dcl 6-101 cm_determine_free_space$effective 000000 constant entry external dcl 6-98 cm_find_ci_to_alloc_datum 000000 constant entry external dcl 6-111 cm_find_free_slot 000000 constant entry external dcl 6-115 cm_free_ci$info 000000 constant entry external dcl 6-118 cm_free_ci$raw_return_prev_next 000000 constant entry external dcl 6-119 cm_free_ci$trace_thread_modifications_off 000000 constant entry external dcl 6-124 cm_free_ci$trace_thread_modifications_on 000000 constant entry external dcl 6-122 cm_free_opening_info 000000 constant entry external dcl 6-128 cm_get_bci_header 000000 constant entry external dcl 6-130 cm_get_bci_header$exclusive 000000 constant entry external dcl 6-131 cm_get_bci_header$slot 000000 constant entry external dcl 6-133 cm_get_element 000000 constant entry external dcl 6-140 cm_get_element$exclusive 000000 constant entry external dcl 6-142 cm_get_element_portion 000000 constant entry external dcl 6-146 cm_get_id$id 000000 constant entry external dcl 6-157 cm_get_id$ptr 000000 constant entry external dcl 6-159 cm_modify 000000 constant entry external dcl 6-162 cm_modify$buffered 000000 constant entry external dcl 6-164 cm_modify$info 000000 constant entry external dcl 6-173 cm_modify$unprotected_info 000000 constant entry external dcl 6-174 cm_opening_info$full_get 000000 constant entry external dcl 6-187 cm_opening_info$get_storage_record 000000 constant entry external dcl 6-185 cm_opening_info$opening_table_ptr 000000 constant entry external dcl 6-189 cm_postcommit_increment 000000 constant entry external dcl 6-192 cm_put 000000 constant entry external dcl 6-195 cm_put$buffered 000000 constant entry external dcl 6-197 cm_put$info 000000 constant entry external dcl 6-206 cm_put_basic_element 000000 constant entry external dcl 6-208 cm_put_cn_datum 000000 constant entry external dcl 6-211 cm_put_datum_in_place 000000 constant entry external dcl 6-213 cm_put_datum_in_place$buffered 000000 constant entry external dcl 6-215 cm_put_datum_in_place$buffered_continued 000000 constant entry external dcl 6-217 cm_put_datum_in_place$continued 000000 constant entry external dcl 6-220 cm_put_datum_in_pool 000000 constant entry external dcl 6-224 cm_put_datum_in_pool$buffered 000000 constant entry external dcl 6-226 cm_put_datum_in_pool$buffered_continued 000000 constant entry external dcl 6-228 cm_put_datum_in_pool$continued 000000 constant entry external dcl 6-231 cm_put_ordered_element 000000 constant entry external dcl 6-235 cm_put_ordered_element$buffered 000000 constant entry external dcl 6-237 cm_put_overlength_tail 000000 constant entry external dcl 6-241 cm_recursive_modify 000000 constant entry external dcl 6-243 cm_replace_buffered_ci$trace_thread_modifications_off 000000 constant entry external dcl 6-249 cm_replace_buffered_ci$trace_thread_modifications_on 000000 constant entry external dcl 6-247 continuation_datum based structure level 1 packed unaligned dcl 4-47 continued_continuation_datum based structure level 1 packed unaligned dcl 4-56 datum based structure level 1 packed unaligned dcl 4-44 datum_slot_ptr automatic pointer dcl 2-95 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_CI_VERSION 000632 constant entry internal dcl 257 ref 145 CHECK_VERSION 000530 constant entry internal dcl 240 ref 131 194 ERROR_RETURN 000523 constant entry internal dcl 230 ref 147 152 159 192 208 JOIN 000221 constant label dcl 138 set ref 123 136 MAIN_RETURN 000522 constant label dcl 227 ref 236 cm_delete_buffered 000115 constant entry external dcl 55 info 000147 constant entry external dcl 126 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1052 1100 720 1062 Length 1426 720 26 311 132 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cm_delete_buffered 244 external procedure is an external procedure. ERROR_RETURN internal procedure shares stack frame of external procedure cm_delete_buffered. CHECK_VERSION internal procedure shares stack frame of external procedure cm_delete_buffered. CHECK_CI_VERSION internal procedure shares stack frame of external procedure cm_delete_buffered. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cm_delete_buffered 000100 code cm_delete_buffered 000101 file_opening_id cm_delete_buffered 000102 collection_id cm_delete_buffered 000103 continuation_datum_id_string cm_delete_buffered 000104 local_datum_slot cm_delete_buffered 000105 next_element_id_string cm_delete_buffered 000106 new_number_of_datums cm_delete_buffered 000107 new_start_of_used_space cm_delete_buffered 000110 new_scattered_free_space cm_delete_buffered 000111 slot_idx cm_delete_buffered 000112 slot_not_specified cm_delete_buffered 000113 found cm_delete_buffered 000114 cm_info_ptr cm_delete_buffered 000116 basic_control_interval_ptr cm_delete_buffered 000120 bci_header_ptr cm_delete_buffered 000122 datum_ptr cm_delete_buffered 000124 datum_id_ptr cm_delete_buffered 000126 datum_contents_length_in_bits cm_delete_buffered 000127 element_id_string cm_delete_buffered THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cm_delete_cn_datum cm_opening_info$get sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$ci_not_in_collection dm_error_$no_element dm_error_$unimplemented_ci_version error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 75 000073 78 000074 83 000075 84 000076 1 47 000077 4 67 000101 4 68 000102 4 69 000103 55 000107 120 000134 121 000137 123 000141 126 000142 129 000166 131 000172 133 000213 134 000216 136 000220 138 000221 141 000223 143 000225 145 000231 147 000237 152 000252 157 000274 159 000301 166 000317 167 000325 168 000330 170 000335 174 000350 178 000355 188 000360 191 000364 192 000401 194 000405 197 000426 199 000434 202 000442 204 000446 206 000463 208 000464 216 000470 217 000501 219 000504 221 000506 223 000512 224 000515 225 000520 227 000522 230 000523 235 000525 236 000527 240 000530 247 000541 252 000631 257 000632 262 000634 266 000712 ----------------------------------------------------------- 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