COMPILATION LISTING OF SEGMENT cm_delete_cn_datum 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.2 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 a datum specified by p_datum_id. The datum 11* must be a continuation datum or a continued continuation datum. 12* If the latter, the datum id of this datum's continuation is returned 13* in p_datum_id. Otherwise the return value of p_datum_id is "0"b; 14* The Ordered Element Storage Method requires that CdCn and Cn datums 15* be maximum-sized datums stored alone in a control interval. For this 16* reason, if the OESM is in effect, the entire control interval in which 17* this datum resides is freed. If the Basic ESM is in effect, the 18* control interval is freed if this datum is sole remaining datum in the 19* control interval. If the datum slot is anywhere but at the rightmost 20* end of the slot table, the slot is simply marked free. Otherwise the 21* last datum slot and any adjacent free slots are truncated. 22* 23* The zero-on-free option (dictated by p_zero_on_free) is not 24* implemented yet. Datum contents are not zeroed unless the entire 25* control interval is freed. 26**/ 27 28 /* HISTORY: 29* 30*Written by Matthew Pierret 11/10/82. 31*Modified: 32*02/04/83 by Matthew Pierret: Upgraded to CM_INFO_VERSION_2. Changed to use 33* cm_get_bci_header$slot instead of cm_get_header_and_slot. 34*04/05/83 by Lindsey L. Spratt: Changed to not test the datum_slot 35* is_continued flag until the datum_slot has been gottn in the 36* must_get_header case. 37*04/06/83 by Lindsey L. Spratt: Moved the getting of the header and the 38* getting of the continuation id out of the BASIC_ESM block, so that 39* the continuation id is alos gotten in the ORDERED_ESM case. 40*05/21/84 by Matthew Pierret: Renamed include file dm_cm_cism_info to 41* dm_cism_info. Removed un-used error codes. 42*09/28/84 by Matthew Pierret: Re-named CHECK_VERSION_CHAR_4 to CHEK_CI_VERSION. 43* Added subroutine prefix to variables local to subroutines and 44* explicit pointer reference to structures in subroutines. Added 45* BITS_TO_BYTES function to replace the old ceil(divide(...)). 46*12/03/84 by Matthew Pierret: Fixed HISTORY section to conform to standards. 47* Made to pass on p_zero_on_free to cm_free_ci. Removed 48* automatic_collection_header (not used) and changed 49* automatic_ci_parts_buffer to my_ci_parts, which has a component 50* which is liked to ci_parts.part. Upgraded to modern sub_err_ 51* calling sequence. 52**/ 53 54 /* format: style2,ind3 */ 55 /* format: indcomtxt */ 56 57 cm_delete_cn_datum: 58 proc (p_cm_info_ptr, p_zero_on_free, p_datum_id, p_code); 59 60 61 /* START OF DECLARATIONS */ 62 /* Parameter */ 63 64 dcl p_cm_info_ptr ptr; 65 dcl p_bci_header_ptr ptr; 66 dcl p_datum_slot_ptr ptr; 67 dcl p_datum_id bit (36) aligned; 68 dcl p_zero_on_free bit (1) aligned; 69 dcl p_code fixed bin (35); 70 71 /* Automatic */ 72 73 dcl code fixed bin (35); 74 dcl 1 my_bci_header aligned like bci_header; 75 dcl 1 my_datum_slot aligned like datum_slot; 76 dcl 1 my_ci_parts aligned, 77 2 number_of_parts fixed bin (17) init (0), 78 2 mbz fixed bin (17) init (0), 79 2 part (2) like ci_parts.part; 80 81 dcl continuation bit (36) aligned init ("0"b); 82 dcl datum_id_string bit (36) aligned init ("0"b); 83 dcl number_of_slots fixed bin (17); 84 dcl rightmost_non_free_slot 85 fixed bin (17); 86 dcl slot_idx fixed bin (17); 87 dcl datum_slot_table_ptr ptr; 88 dcl found bit (1) aligned init ("0"b); 89 dcl must_get_header bit (1) aligned init ("0"b); 90 91 /* Based */ 92 93 dcl 1 datum_slot_table (number_of_slots) aligned based (datum_slot_table_ptr) like datum_slot; 94 95 /* Builtin */ 96 97 dcl (addr, divide, null, size) 98 builtin; 99 100 /* Controlled */ 101 /* Constant */ 102 103 dcl myname init ("cm_delete_cn_datum") char (32) varying int static options (constant); 104 dcl BITS_PER_BYTE init (9) fixed bin int static options (constant); 105 dcl BYTES_PER_WORD init (4) fixed bin int static options (constant); 106 dcl ZEROED_DATUM_SLOT init (0) fixed bin (35) int static options (constant); 107 108 /* Entry */ 109 110 dcl file_manager_$get entry (bit (36) aligned, fixed bin (27), ptr, fixed bin (35)); 111 dcl file_manager_$put entry (bit (36) aligned, fixed bin (27), ptr, fixed bin (35)); 112 dcl file_manager_$simple_get 113 entry (bit (36) aligned, fixed bin (27), fixed bin (21), ptr, fixed bin (21), 114 fixed bin (35)); 115 dcl sub_err_ entry () options (variable); 116 117 /* External */ 118 119 dcl dm_error_$no_datum ext fixed bin (35); 120 dcl dm_error_$unimplemented_ci_version 121 ext fixed bin (35); 122 dcl error_table_$unimplemented_version 123 ext fixed bin (35); 124 125 /* END OF DECLARATIONS */ 126 127 must_get_header = "1"b; 128 129 goto JOIN; 130 131 132 header: 133 entry (p_cm_info_ptr, p_bci_header_ptr, p_datum_slot_ptr, p_zero_on_free, p_datum_id, p_code); 134 135 must_get_header = "0"b; 136 datum_slot_ptr = p_datum_slot_ptr; 137 bci_header_ptr = p_bci_header_ptr; 138 call CHECK_CI_VERSION (bci_header.layout_type); 139 140 goto JOIN; 141 142 JOIN: 143 p_code, code = 0; 144 cm_info_ptr = p_cm_info_ptr; 145 call CHECK_VERSION ("cm_info", cm_info.version, CM_INFO_VERSION_2); 146 147 collection_header_ptr = cm_info.header_ptr; 148 call CHECK_VERSION ("collection_header", collection_header.version, COLLECTION_HEADER_VERSION_2); 149 150 datum_id_string = p_datum_id; 151 datum_id_ptr = addr (datum_id_string); 152 153 if datum_id.index = 0 154 then call ERROR_RETURN (dm_error_$no_datum); 155 156 if must_get_header 157 then 158 do; 159 160 bci_header_ptr = addr (my_bci_header); 161 datum_slot_ptr = addr (my_datum_slot); 162 163 call cm_get_bci_header$slot (cm_info.file_oid, bci_header_ptr, datum_slot_ptr, p_datum_id, code); 164 if code ^= 0 165 then call ERROR_RETURN (code); 166 else call CHECK_CI_VERSION (bci_header.layout_type); 167 end; 168 169 if ^datum_slot.flags.is_continuation 170 then call ERROR_RETURN (dm_error_$no_datum); 171 172 if datum_slot.is_continued 173 then 174 do; 175 176 /*** The datum is a continued continuation datum. Before freeing this datum 177* get the id of its continuation to be passed back to the caller. */ 178 179 continuation = GET_CONTINUATION ((datum_id.control_interval_id), (datum_slot.offset_in_bytes)); 180 end; 181 182 ci_parts_ptr = addr (my_ci_parts); 183 ci_parts.number_of_parts = 1; 184 185 if collection_header.element_storage_method = ORDERED_ELEMENT_STORAGE_METHOD 186 then 187 ORDERED_ESM: 188 do; 189 190 /*** The Ordered Element Storage Method requires continuation datums be 191* maximum-sized datums residing alone in a control interval. To free 192* such a datum, simply free the entire control interval. */ 193 194 call cm_free_ci$info (cm_info_ptr, (datum_id.control_interval_id), p_zero_on_free, code); 195 if code ^= 0 196 then call ERROR_RETURN (code); 197 end ORDERED_ESM; 198 else 199 BASIC_ESM: 200 do; 201 202 /*** Delete the basic datum. The following cases are possible: 203* (1) The datum is the only one in the control interval: free the control interval; 204* (2) The datum uses the last slot: truncate the slot 205* (3) The datum uses the last slot and the adjacent slot to the left is 206* a free slot: truncate all trailing free slots. 207* (4) The datum uses a slot other than the last slot: zero that slot 208* and note that there exists a free slot in the bci_header. 209* */ 210 211 if datum_id.index = bci_header.number_of_datums 212 then if bci_header.number_of_datums = 1 213 then 214 BESM_1_FREE_CI: 215 do; 216 call cm_free_ci$info (cm_info_ptr, (datum_id.control_interval_id), p_zero_on_free, code); 217 if code ^= 0 218 then call ERROR_RETURN (code); 219 end BESM_1_FREE_CI; 220 else 221 do; 222 223 if ^bci_header.flags.free_slot_is_present 224 then 225 BESM_2_TRUNCATE_LAST_SLOT: 226 do; 227 228 ci_parts.part (1).offset_in_bytes = 229 (size (bci_header) + datum_id.index - 1) * BYTES_PER_WORD; 230 ci_parts.part (1).length_in_bytes = BYTES_PER_WORD; 231 ci_parts.part (1).local_ptr = addr (ZEROED_DATUM_SLOT); 232 233 bci_header.number_of_datums = bci_header.number_of_datums - 1; 234 call PUT_HEADER_AND_SLOTS (cm_info.file_oid, bci_header_ptr, datum_slot_ptr, 235 (datum_id.control_interval_id), ci_parts_ptr); 236 237 end BESM_2_TRUNCATE_LAST_SLOT; 238 else 239 BESM_3_TRUNCATE_TRAILING_FREE_SLOTS: 240 do; 241 242 number_of_slots = bci_header.number_of_datums; 243 B3_BEGIN_BLOCK: 244 begin; 245 246 /*** Since there is at least one free slot in this control interval, check 247* to see if it and any others are adjacent to the last slot (which is being 248* freed). A begin block is used to allocate a datum slot array of the 249* proper size. */ 250 251 dcl datum_slots_buffer (number_of_slots) fixed bin (35); 252 253 datum_slots_buffer = 0; 254 datum_slot_table_ptr = addr (datum_slots_buffer); 255 256 ci_parts.part (1).offset_in_bytes = size (bci_header) * BYTES_PER_WORD; 257 ci_parts.part (1).length_in_bytes = number_of_slots * BYTES_PER_WORD; 258 ci_parts.part (1).local_ptr = datum_slot_table_ptr; 259 260 call file_manager_$get (cm_info.file_oid, (datum_id.control_interval_id), ci_parts_ptr, 261 code); 262 if code ^= 0 263 then call ERROR_RETURN (code); 264 265 datum_slots_buffer (number_of_slots) = 0; 266 267 do rightmost_non_free_slot = number_of_slots - 1 to 1 by -1 268 while (datum_slot_table (rightmost_non_free_slot).offset_in_bytes = FREE_SLOT); 269 datum_slots_buffer (rightmost_non_free_slot) = 0; 270 end; 271 272 do slot_idx = 1 to rightmost_non_free_slot - 1 273 while (datum_slot_table (slot_idx).offset_in_bytes ^= FREE_SLOT); 274 end; 275 276 if slot_idx >= rightmost_non_free_slot 277 then bci_header.flags.free_slot_is_present = "0"b; 278 279 bci_header.number_of_datums = rightmost_non_free_slot; 280 281 if bci_header.number_of_datums = 0 282 then 283 do; 284 call cm_free_ci$info (cm_info_ptr, (datum_id.control_interval_id), p_zero_on_free, 285 code); 286 if code ^= 0 287 then call ERROR_RETURN (code); 288 end; 289 290 else call PUT_HEADER_AND_SLOTS (cm_info.file_oid, bci_header_ptr, datum_slot_ptr, 291 (datum_id.control_interval_id), ci_parts_ptr); 292 293 end B3_BEGIN_BLOCK; 294 end BESM_3_TRUNCATE_TRAILING_FREE_SLOTS; 295 end; 296 else 297 BESM_4_DELETE_SLOT_IN_THE_MIDDLE_OF_TABLE: 298 do; 299 300 /*** The slot is in the middle of the slot table. Zero out that slot and note 301* that there now exists a free slot in the table. */ 302 303 ci_parts.part (1).offset_in_bytes = (size (bci_header) + datum_id.index - 1) * BYTES_PER_WORD; 304 ci_parts.part (1).length_in_bytes = BYTES_PER_WORD; 305 ci_parts.part (1).local_ptr = addr (ZEROED_DATUM_SLOT); 306 307 bci_header.flags.free_slot_is_present = "1"b; 308 309 call PUT_HEADER_AND_SLOTS (cm_info.file_oid, bci_header_ptr, datum_slot_ptr, 310 (datum_id.control_interval_id), ci_parts_ptr); 311 312 end BESM_4_DELETE_SLOT_IN_THE_MIDDLE_OF_TABLE; 313 314 p_datum_id = continuation; 315 316 end BASIC_ESM; 317 318 MAIN_RETURN: 319 return; 320 321 322 ERROR_RETURN: 323 proc (er_p_code); 324 325 dcl er_p_code fixed bin (35); 326 327 p_code = er_p_code; 328 go to MAIN_RETURN; 329 330 end ERROR_RETURN; 331 332 CHECK_VERSION: 333 proc (cv_p_structure_name, cv_p_given_version, cv_p_correct_version); 334 335 dcl cv_p_structure_name char (*); 336 dcl cv_p_given_version char (8) aligned; 337 dcl cv_p_correct_version char (8) aligned; 338 339 if cv_p_given_version ^= cv_p_correct_version 340 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 341 "^/Expected version ""^8a"" of ^a structure; received ""^8a"".", cv_p_correct_version, 342 cv_p_structure_name, cv_p_given_version); 343 344 return; 345 346 end CHECK_VERSION; 347 348 349 CHECK_CI_VERSION: 350 proc (ccv_p_given_version); 351 352 dcl ccv_p_given_version char (4) aligned; 353 354 if ccv_p_given_version ^= BASIC_CI_LAYOUT_1 355 then call sub_err_ (dm_error_$unimplemented_ci_version, myname, ACTION_CANT_RESTART, null, 0, 356 "^/Expected version ^a control interval; received ^a.", BASIC_CI_LAYOUT_1, ccv_p_given_version); 357 else return; 358 359 end CHECK_CI_VERSION; 360 361 PUT_HEADER_AND_SLOTS: 362 proc (phas_p_file_opening_id, phas_p_bci_header_ptr, phas_p_datum_slot_ptr, phas_p_control_interval_id, 363 phas_p_ci_parts_ptr); 364 365 dcl phas_p_file_opening_id bit (36) aligned; 366 dcl phas_p_bci_header_ptr ptr; 367 dcl phas_p_datum_slot_ptr ptr; 368 dcl phas_p_control_interval_id 369 fixed bin (27); 370 dcl phas_p_ci_parts_ptr ptr; 371 dcl phas_code fixed bin (35); 372 373 phas_code = 0; 374 375 if phas_p_datum_slot_ptr -> datum_slot.offset_in_bytes = phas_p_bci_header_ptr -> bci_header.start_of_used_space 376 then phas_p_bci_header_ptr -> bci_header.start_of_used_space = 377 phas_p_bci_header_ptr -> bci_header.start_of_used_space + BITS_TO_BYTES ((datum_slot.length_in_bits)); 378 else phas_p_bci_header_ptr -> bci_header.scattered_free_space = 379 phas_p_bci_header_ptr -> bci_header.scattered_free_space + BITS_TO_BYTES ((datum_slot.length_in_bits)); 380 381 382 phas_p_ci_parts_ptr -> ci_parts.number_of_parts = 2; 383 phas_p_ci_parts_ptr -> ci_parts.part (2).offset_in_bytes = 0; 384 phas_p_ci_parts_ptr -> ci_parts.part (2).length_in_bytes = size (bci_header) * BYTES_PER_WORD; 385 phas_p_ci_parts_ptr -> ci_parts.part (2).local_ptr = phas_p_bci_header_ptr; 386 387 call file_manager_$put (phas_p_file_opening_id, phas_p_control_interval_id, phas_p_ci_parts_ptr, phas_code); 388 if phas_code ^= 0 389 then call ERROR_RETURN (phas_code); 390 else return; 391 392 end PUT_HEADER_AND_SLOTS; 393 394 BITS_TO_BYTES: 395 proc (btb_p_bits) returns (fixed bin (17)); 396 397 dcl btb_p_bits fixed bin (35); 398 399 return (divide (btb_p_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0)); 400 401 end BITS_TO_BYTES; 402 403 GET_CONTINUATION: 404 proc (gc_p_ci, gc_p_offset) returns (bit (36) aligned); 405 406 dcl gc_p_ci fixed bin (27); 407 dcl gc_p_offset fixed bin (21); 408 dcl gc_continuation_datum_id 409 bit (36) aligned; 410 dcl gc_code fixed bin (35); 411 412 call file_manager_$simple_get (cm_info.file_oid, gc_p_ci, gc_p_offset, addr (gc_continuation_datum_id), 413 (CDCN_DATUM_HEADER_LENGTH_IN_BYTES), gc_code); 414 if gc_code ^= 0 415 then call ERROR_RETURN (gc_code); 416 else return (gc_continuation_datum_id); 417 418 419 end GET_CONTINUATION; 420 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 */ 421 422 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 */ 423 424 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 */ 425 426 4 1 /* BEGIN INCLUDE FILE - dm_cm_collection_header.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4* Associated with each collection is the following collection_header 4 5* structure stored as an element in the Header Collection of the file. 4 6* The identifier of this element is also the idenfifier of the collection. 4 7* Even the Header Collection has a collection_header stored in the Header 4 8* Collection itself in the element identified by the constant 4 9* HEADER_COLLECTION_HEADER_ELEMENT_ID declared in dm_cm_hdr_col_ids.incl.pl1. 4 10* The information in collection_header is expected to be stable information. 4 11* The structure elements are described as follows: 4 12* 4 13* version is a character string version equal to COLLECTION_HEADER_VERSION_2. 4 14* 4 15* flags.fixed_size_elements indicates, if on that all elements in the 4 16* collection are of a fixed length. 4 17* 4 18* flags.thread_elements indicates that elements in a collection are to be 4 19* threaded in a linked list. This is currrently unupported. 4 20* 4 21* flags.thread_control_intervals indicates, if on, that control intervals in 4 22* a collection are to be threaded in a linked list. This is only useful if 4 23* the control interval storage method is blocked. 4 24* 4 25* flags.must_be_zero1 is reserved for future use and must be "0"b. 4 26* 4 27* control_interval_storage_method is the method of storage management of 4 28* control intervals for this collection, either 4 29* BLOCKED_CONTROL_INTERVAL_STORAGE_METHOD (not yet supported) or 4 30* UNBLOCKED_CONTROL_INTERVAL_STORAGE_METHOD, declared in 4 31* dm_cism_info.incl.pl1. 4 32* 4 33* element_storage_method is the method of storage management of elements in 4 34* this collection, either BASIC_ELEMENT_STORAGE_METHOD or 4 35* ORDERED_ELEMENT_STORAGE_METHOD, declared in dm_esm_info.incl.pl1. 4 36* 4 37* maximum_element_size is the maximum size of an element in bits in this 4 38* collection. 4 39* 4 40* header_record_element_id is the identifier of an element containing a 4 41* caller-defined header for this collection. If equal to "0"b, no 4 42* caller-defined header yet exists. The put_header collection_manager_ 4 43* operation stores such a header. 4 44* 4 45* storage_record_element_id is the identifier of the element containing the 4 46* storage_record for this collection. The storage_record contains 4 47* information expected to be dynamic, such as the identifier of the last 4 48* control interval of the collection. Its format is also dependent upon the 4 49* storage methods in effect for this collection. storage_record structures 4 50* are declared in dm_cm_storage_record.incl.pl1. 4 51* 4 52**/ 4 53 4 54 /* HISTORY: 4 55*Written by Matthew Pierret, 04/01/82. 4 56*Modified: 4 57*07/01/82 by Matthew Pierret: Changed to version A, added storage_record_area. 4 58*10/29/82 by Matthew Pierret: Changed to version 2 ("col_hdr2"), separated 4 59* storage_record_area out, leaving storage_record_element_id behind. 4 60*09/18/84 by Matthew Pierret: Added DESCRIPTION section. 4 61**/ 4 62 4 63 /* format: style2,ind3,ll79 */ 4 64 4 65 dcl 1 collection_header aligned based (collection_header_ptr), 4 66 2 version char (8), 4 67 2 flags unaligned, 4 68 3 fixed_size_elements 4 69 bit (1), 4 70 3 thread_elements bit (1), 4 71 3 thread_control_intervals 4 72 bit (1), 4 73 3 must_be_zero1 bit (15), 4 74 2 control_interval_storage_method 4 75 fixed bin (17) unal, 4 76 2 element_storage_method 4 77 fixed bin (17), 4 78 2 maximum_element_size 4 79 fixed bin (35), 4 80 2 header_record_element_id 4 81 bit (36) aligned, 4 82 2 storage_record_element_id 4 83 bit (36) aligned; 4 84 4 85 dcl collection_header_ptr ptr; 4 86 dcl COLLECTION_HEADER_VERSION_2 4 87 init ("col_hdr2") char (8) aligned 4 88 int static options (constant); 4 89 4 90 /* END INCLUDE FILE - dm_cm_collection_header.incl.pl1 */ 427 428 5 1 /* BEGIN INCLUDE FILE dm_cm_datum.incl.pl1 */ 5 2 5 3 /* DESCRIPTION: 5 4* This include file contains the declarations of datum structures. 5 5* There are four tyes of datums: your ordinary, run-of-the-mill datum 5 6* (Datum); a continuation datum (CN Datum), which is a continuation of 5 7* another datum; a continued datum (CD Datum), which is continued (has a 5 8* continuation datum) but is not a continuation itself; and a continued 5 9* continuation datum (CDCN Datum), which is both continued and is a 5 10* continuation. To illustrate, datums can be pieced combined in the 5 11* following ways: 5 12* 5 13* 1) Datum alone. 5 14* 5 15* 2) CD Datum -> CN Datum. 5 16* 5 17* 3) CD Datum -> CDCN Datum {-> CDCN Datum -> ...-> CDCN Datum} -> CN Datum. 5 18* 5 19* continued_datum and continued_continuation_datum each contains a header 5 20* which includes the identifier of the datum which is its continuation. 5 21* continued_datum.header.full_length is the length in bits of the entire 5 22* element, i.e., the addition of the length of contents structure component 5 23* of all of the datums from CD Datum to CN Datum. 5 24**/ 5 25 5 26 /* HISTORY: 5 27*Written by Matthew Pierret, 02/07/82. 5 28*Modified: 5 29*03/25/82 by Matthew Pierret: Changed all datum structures to be unaligned. 5 30*06/14/82 by Matthew Pierret: Added DATUM_HEADER_LENGTH_IN_BYTES. 5 31*08/04/82 by Matthew Pierret: Added DATUM_HEADER_LENGTH_IN_BITS. 5 32*10/20/82 by Matthew Pierret: Split into two include files, this one and 5 33* dm_cm_datum_constants. The latter holds only and all constants 5 34* formerly in this include file. 5 35*10/29/82 by Matthew Pierret: Removed datum headers. 5 36*09/18/84 by Matthew Pierret: Added DESCRIPTION section. Added datum and 5 37* continuation_datum (mainly for illustration). 5 38*12/03/84 by Matthew Pierret: Removed the non-based structures 5 39* (cd cdcn)_datum_headers. 5 40**/ 5 41 5 42 /* format: style2,ll79,ind3 */ 5 43 5 44 dcl 1 datum unaligned based (datum_ptr), 5 45 2 contents bit (datum_contents_length_in_bits); 5 46 5 47 dcl 1 continuation_datum unaligned based (datum_ptr), 5 48 2 contents bit (datum_contents_length_in_bits); 5 49 5 50 dcl 1 continued_datum unaligned based (datum_ptr), 5 51 2 header, 5 52 3 full_length fixed bin (35), 5 53 3 continuation like datum_id, 5 54 2 contents bit (datum_contents_length_in_bits); 5 55 5 56 dcl 1 continued_continuation_datum 5 57 unaligned based (datum_ptr), 5 58 2 header, 5 59 3 continuation like datum_id, 5 60 2 contents bit (datum_contents_length_in_bits); 5 61 5 62 dcl 1 datum_id aligned based (datum_id_ptr), 5 63 2 control_interval_id 5 64 fixed bin (24) unal uns, 5 65 2 index fixed bin (12) unal uns; 5 66 5 67 dcl datum_ptr ptr init (null ()); 5 68 dcl datum_id_ptr ptr init (null ()); 5 69 dcl datum_contents_length_in_bits 5 70 fixed bin (35) init (-1); 5 71 5 72 5 73 5 74 /* END INCLUDE FILE dm_cm_datum.incl.pl1 */ 429 430 6 1 /* BEGIN INCLUDE FILE dm_cm_datum_constants.incl.pl1 */ 6 2 6 3 /* DESCRIPTION: 6 4* Contains constants describing the extents of datums and datum 6 5* headers. The datum headers are described in dm_cm_datum.incl.pl1. 6 6* MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES is the byte length of the largest 6 7* datum that can be stored in a control interval, allowing for the largest 6 8* possibledatum header. MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS is the same 6 9* in bits instead of bytes. MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 6 10* is the smallest length in bits which requires 6 11* MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES bytes to store. 6 12**/ 6 13 6 14 /* 6 15*HISTORY: 6 16*Written by Matthew Pierret, 02/07/82. 6 17*Modified: 6 18*10/29/82 by Matthew Pierret: Removed DATUM_HEADER*. 6 19*11/02/82 by Matthew Pierret: Added maximum datum contents lengths. 6 20*12/01/82 by Lindsey Spratt: Corrected values for datum header lengths. 6 21*09/18/84 by Matthew Pierret: Corrected values for maximum lengths. Added 6 22* MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS. Added 6 23* DESCRIPTION section. 6 24**/ 6 25 6 26 /* format: style2,ind3,ll79 */ 6 27 dcl CD_DATUM_HEADER_LENGTH_IN_BYTES 6 28 fixed bin init (8) internal static 6 29 options (constant); 6 30 6 31 dcl CD_DATUM_HEADER_LENGTH_IN_BITS 6 32 fixed bin init (72) internal static 6 33 options (constant); 6 34 6 35 dcl CDCN_DATUM_HEADER_LENGTH_IN_BYTES 6 36 init (4) fixed bin int static 6 37 options (constant); 6 38 6 39 dcl CDCN_DATUM_HEADER_LENGTH_IN_BITS 6 40 init (36) fixed bin int static 6 41 options (constant); 6 42 6 43 dcl MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 6 44 init (36360) fixed bin (35) internal 6 45 static options (constant); 6 46 6 47 dcl MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES 6 48 init (4040) fixed bin (35) internal 6 49 static options (constant); 6 50 6 51 dcl MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 6 52 init (36352) fixed bin (35) internal 6 53 static options (constant); 6 54 6 55 /* END INCLUDE FILE dm_cm_datum.incl.pl1 */ 431 432 7 1 /* BEGIN INCLUDE FILE dm_esm_info.incl.pl1 */ 7 2 7 3 /* DESCRIPTION: 7 4* 7 5* This include file contains the basic_esm_info and ordered_esm_info 7 6* structures, as well as constants used to distinguish element storage 7 7* methods. They are used by several managers to describe the type of 7 8* element storage management to be used in a collection. 7 9**/ 7 10 7 11 /* HISTORY: 7 12*Written 02/07/82 by Matthew Pierret. 7 13*Modified: 7 14*05/17/84 by Matthew Pierret: Changed name from dm_cm_esm_info (the cm_ 7 15* dropped because the include file is used by multiple managers), 7 16* to align structure elements and to add a version string. 7 17**/ 7 18 7 19 /* format: style2 */ 7 20 7 21 dcl 1 basic_esm_info based (basic_esm_info_ptr) aligned, 7 22 2 version char (8) aligned init (ESM_INFO_VERSION_1), 7 23 2 type fixed bin (17) init (BASIC_ELEMENT_STORAGE_METHOD), 7 24 2 flags aligned, 7 25 3 threaded bit (1) unal, 7 26 3 fixed_length bit (1) unal, 7 27 3 pad bit (34) unal, 7 28 2 maximum_element_length 7 29 fixed bin (35); 7 30 7 31 dcl 1 ordered_esm_info based (ordered_esm_info_ptr) aligned, 7 32 2 version char (8) aligned init (ESM_INFO_VERSION_1), 7 33 2 type fixed bin (17) init (ORDERED_ELEMENT_STORAGE_METHOD), 7 34 2 flags aligned, 7 35 3 fixed_length bit (1) unal, 7 36 3 pad bit (35) unal, 7 37 2 maximum_element_length 7 38 fixed bin (35); 7 39 7 40 dcl basic_esm_info_ptr ptr; 7 41 dcl ordered_esm_info_ptr ptr; 7 42 7 43 dcl ESM_INFO_VERSION_1 init ("ESMinfo1") char (8) aligned internal static options (constant); 7 44 dcl BASIC_ELEMENT_STORAGE_METHOD 7 45 fixed bin init (1) internal static options (constant); 7 46 dcl ORDERED_ELEMENT_STORAGE_METHOD 7 47 fixed bin init (2) internal static options (constant); 7 48 7 49 7 50 /* END INCLUDE FILE dm_esm_info.incl.pl1 */ 433 434 8 1 /* BEGIN INCLUDE FILE: dm_ci_parts.incl.pl1 */ 8 2 8 3 /* DESCRIPTION: 8 4* 8 5* This include file contains the ci_parts structure. This structure 8 6* is used across the file_manager_ interface to specify the parts of a 8 7* control interval to get or put. If the number_of parts is equal to 0, 8 8* modules which take ci_parts interpret this case to mean to do everything 8 9* except the actual requested operation, i.e., lock the control interval 8 10* but don't get anything. offset_in_bytes is the 0-originned offset in 8 11* bytes from the beginning of the addressable portion of the control interval. 8 12* An offset_in_bytes which is in the addressable portion is in error. 8 13* Likewise, if offset_in_bytes + length_in_bytes is outside of the addressable 8 14* portion, it is in error. 8 15**/ 8 16 8 17 /* HISTORY: 8 18*Written by Matthew Pierret, 01/28/82. 8 19* (01/28/82 Andre Bensoussan, Design.) 8 20*Modified: 8 21*11/07/84 by Matthew Pierret: To add must_be_zero, initial attributes on 8 22* automatic storge. 8 23**/ 8 24 8 25 /* format: style2,ind3 */ 8 26 8 27 dcl 1 ci_parts aligned based (ci_parts_ptr), 8 28 2 number_of_parts fixed bin (17), 8 29 2 must_be_zero fixed bin, 8 30 2 part (cip_number_of_parts refer (ci_parts.number_of_parts)), 8 31 3 offset_in_bytes fixed bin (17), 8 32 3 length_in_bytes fixed bin (17), 8 33 3 local_ptr ptr; 8 34 8 35 dcl ci_parts_ptr ptr init (null ()); 8 36 dcl cip_number_of_parts fixed bin (17) init (0); 8 37 8 38 8 39 /* BEGIN INCLUDE FILE: dm_ci_parts.incl.pl1 */ 435 436 9 1 /* BEGIN INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 9 2 9 3 /* DESCRIPTION: 9 4* 9 5* Contains entry declarations of internally available collection_manager_ 9 6* entries. Entries which are only available via the collection_manager_ 9 7* transfer vector are not included here, but are declared instead in 9 8* dm_collmgr_entry_dcls.incl.pl1. 9 9**/ 9 10 9 11 /* HISTORY: 9 12*Written by Mathew Pierret, 04/01/82. 9 13*Modified: 9 14*09/21/82 by Lindsey Spratt: Added the cm_compact$replacement entry. 9 15*10/29/82 by Matthew Pierret: Added cm_find_free_slot, cm_determine_free_space, 9 16* cm_find_ci_to_alloc_datum, cm_recursive_put. 9 17* Added cm_get_element$info*, $header*. The former is used when 9 18* the caller has a cm_info structure already; the latter is used to 9 19* get collection headers. 9 20* Added cm_opening_info$get. Removed cm_add_ci_(part thread). 9 21* Added cm_allocate_element$info. 9 22*11/09/82 by Matthew Pierret: Added argument to cm_allocate_ordered_element 9 23* calling sequence for returning free space. 9 24* Added cm_free_cn_datum("" $header). 9 25*01/07/83 by Matthew Pierret: Added: 9 26* cm_allocate_element$buffered("" _info); 9 27* cm_put_element$buffered("" _info); 9 28* cm_put_datum_in_place$buffered("" _continued); 9 29* cm_put_datum_in_pool$buffered("" _continued); 9 30* cm_compact$buffered. 9 31*01/26/83 by Matthew Pierret: Replaced cm_get_header_and_slot with 9 32* cm_get_bci_header$slot and added cm_get_bci_header$slot_exclusive. 9 33* Added cm_opening_info$get_storage_record. 9 34* Added a bit(36)aligned argument to cm_recursive_put to hold the 9 35* id of the previous datum. 9 36*02/02/83 by Matthew Pierret: Added fixed bin (17) argument to cm_find_free_slot 9 37* which is for the number of slots after allocation. 9 38*02/07/83 by Matthew Pierret: Added cm_get_id$(id info info_return_slot 9 39* header header_return_slot). 9 40* Added cm_get_element_portion$(exclusive info info_exclusive). 9 41* Added cm_get_element$bypass_info. 9 42*03/25/83 by Matthew Pierret: Added cm_free_element$info and 9 43* cm_free_opening_info. 9 44*04/29/83 by Matthew Pierret: Added cm_put_element$unprotected_info 9 45*08/04/83 by Matthew Pierret: Added the entries $does_new_datum_fit and 9 46* $does_replacement_fit to cm_determine_free_space. These entries 9 47* return flags indicating if a datum fits in the ci and the pool. 9 48* Added a bit(1)aligned parameter to cm_find_free_slot in which is 9 49* returned the new value of bci_header.free_slot_is_present. 9 50*02/07/84 by Matthew Pierret: Added cm_get_id$ptr. Removed all cm_get_id 9 51* modules except cm_get_id$id. Removed all cm_get_element$info* 9 52* entries. Changed cm_get_element_$bypass_info to have the same 9 53* calling sequence as other cm_get_element entries. 9 54*06/12/84 by Matthew Pierret: Changed cm_put_element to cm_modify 9 55* and cm_allocate_element to cm_put. 9 56* Switched the element_length/element_ptr parameter pair to be 9 57* element_ptr/element_length in cm_modify and cm_put. 9 58*07/24/84 by Matthew Pierret: Added cm_free_ci$raw_return_prev_next. 9 59*09/24/84 by Matthew Pierret: Added trace_thread_modifications_(on off) 9 60* entries to cm_free_ci and cm_replace_buffered_ci, 9 61* cm_allocate_ci$info_header, cm_opening_info$opening_table_ptr. 9 62* Removed cm_find_free_space. Commented out un-used entries. 9 63* Re-named allocate entries to put entries, except for allocate_ci. 9 64* Re-named free element and free datum entries to use delete instead 9 65* of free, and cm_recursive_put to cm_recursive_modify. 9 66* Removed cm_get_element$bypass_info. 9 67*02/27/85 by Matthew C. Pierret: Re-added cm_compact$buffered_replacement now 9 68* that cm_modify$buffered uses it. 9 69*03/07/85 by R. Michael Tague: Added cm_postcommit_increment. 9 70**/ 9 71 9 72 /* format: style2,ind3 */ 9 73 9 74 9 75 dcl cm_allocate_ci entry (bit (36) aligned, bit (36) aligned, fixed bin (24) unsigned, fixed bin (35)); 9 76 dcl cm_allocate_ci$info entry (ptr, fixed bin (24) unsigned, fixed bin (35)); 9 77 dcl cm_allocate_ci$info_header 9 78 entry (ptr, fixed bin (24) unsigned, ptr, fixed bin (35)); 9 79 9 80 9 81 dcl cm_compact entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 9 82 dcl cm_compact$buffered entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 9 83 dcl cm_compact$replacement entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 9 84 dcl cm_compact$buffered_replacement 9 85 entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 9 86 9 87 dcl cm_delete_cn_datum entry (ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 9 88 9 89 dcl cm_delete_cn_datum$header 9 90 entry (ptr, ptr, ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 9 91 9 92 dcl cm_delete entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, bit (1) aligned, 9 93 fixed bin (35)); 9 94 dcl cm_delete$info entry (ptr, bit (36) aligned, bit (1) aligned, fixed bin (35)); 9 95 9 96 dcl cm_determine_free_space$all 9 97 entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35)); 9 98 dcl cm_determine_free_space$effective 9 99 entry (ptr, fixed bin (35), bit (1) aligned, bit (1) aligned, fixed bin (35), 9 100 fixed bin (35)); 9 101 dcl cm_determine_free_space$does_new_datum_fit 9 102 entry (ptr, fixed bin (35), fixed bin (35), bit (1) aligned, bit (1) aligned, 9 103 bit (1) aligned, bit (1) aligned, fixed bin (35)); 9 104 9 105 /**** Not yet used ********************************************************* 9 106* dcl cm_determine_free_space$does_replacement_fit 9 107* entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35), bit (1) aligned, 9 108* bit (1) aligned, bit (1) aligned, bit (1) aligned, fixed bin (35)); 9 109*************************************************************************** */ 9 110 9 111 dcl cm_find_ci_to_alloc_datum 9 112 entry (ptr, fixed bin (35), fixed bin (24) uns, bit (1) aligned, bit (1) aligned, ptr, 9 113 fixed bin (24) uns, fixed bin (35)); 9 114 9 115 dcl cm_find_free_slot entry (bit (36) aligned, fixed bin (24) uns, ptr, fixed bin (17), fixed bin (17), 9 116 bit (1) aligned, fixed bin (35)); 9 117 9 118 dcl cm_free_ci$info entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (35)); 9 119 dcl cm_free_ci$raw_return_prev_next 9 120 entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (24) uns, 9 121 fixed bin (24) uns, fixed bin (35)); 9 122 dcl cm_free_ci$trace_thread_modifications_on 9 123 entry (); 9 124 dcl cm_free_ci$trace_thread_modifications_off 9 125 entry (); 9 126 9 127 9 128 dcl cm_free_opening_info entry (bit (36) aligned, bit (36) aligned, fixed bin (35)); 9 129 9 130 dcl cm_get_bci_header entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 9 131 dcl cm_get_bci_header$exclusive 9 132 entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 9 133 dcl cm_get_bci_header$slot entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 9 134 9 135 /**** Not yet used ******************************************************** 9 136* dcl cm_get_bci_header$slot_exclusive 9 137* entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 9 138*************************************************************************** */ 9 139 9 140 dcl cm_get_element entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 9 141 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 9 142 dcl cm_get_element$exclusive 9 143 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, ptr, 9 144 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 9 145 9 146 dcl cm_get_element_portion entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 9 147 fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 9 148 fixed bin (35), fixed bin (35)); 9 149 9 150 /**** Not yet used ******************************************************** 9 151* dcl cm_get_element_portion$exclusive 9 152* entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 9 153* fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 9 154* fixed bin (35), fixed bin (35)); 9 155*************************************************************************** */ 9 156 9 157 dcl cm_get_id$id entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 9 158 bit (1) aligned, bit (36) aligned, fixed bin (35)); 9 159 dcl cm_get_id$ptr entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 9 160 bit (1) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 9 161 9 162 dcl cm_modify entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 9 163 fixed bin (35), fixed bin (35)); 9 164 dcl cm_modify$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 9 165 fixed bin (35), fixed bin (35)); 9 166 9 167 /******* Not yet used ***************************************************** 9 168* dcl cm_modify$buffered_info 9 169* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 9 170* fixed bin (35)); 9 171*****************************************************************************/ 9 172 9 173 dcl cm_modify$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 9 174 dcl cm_modify$unprotected_info 9 175 entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 9 176 9 177 9 178 /******* Not yet used ***************************************************** 9 179* dcl cm_modify_portion entry (bit (36) aligned, bit (36) aligned, fixed bin (35), fixed bin (35), 9 180* fixed bin (35), ptr, bit (36) aligned, fixed bin (35), fixed bin (35)); 9 181*****************************************************************************/ 9 182 9 183 9 184 dcl cm_opening_info$get entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 9 185 dcl cm_opening_info$get_storage_record 9 186 entry (ptr, fixed bin (35)); 9 187 dcl cm_opening_info$full_get 9 188 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 9 189 dcl cm_opening_info$opening_table_ptr 9 190 entry () returns (ptr); 9 191 9 192 dcl cm_postcommit_increment 9 193 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 9 194 9 195 dcl cm_put entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 9 196 fixed bin (35), fixed bin (35)); 9 197 dcl cm_put$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 9 198 fixed bin (35), fixed bin (35)); 9 199 9 200 /******* Not yet used ***************************************************** 9 201* dcl cm_put$buffered_info 9 202* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 9 203* fixed bin (35)); 9 204*****************************************************************************/ 9 205 9 206 dcl cm_put$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 9 207 9 208 dcl cm_put_basic_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 9 209 fixed bin (35)); 9 210 9 211 dcl cm_put_cn_datum entry (ptr, ptr, fixed bin (35), bit (36) aligned, bit (36) aligned, fixed bin (35)); 9 212 9 213 dcl cm_put_datum_in_place entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 9 214 fixed bin (35)); 9 215 dcl cm_put_datum_in_place$buffered 9 216 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 9 217 dcl cm_put_datum_in_place$buffered_continued 9 218 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 9 219 fixed bin (35)); 9 220 dcl cm_put_datum_in_place$continued 9 221 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 9 222 fixed bin (35), bit (36) aligned, fixed bin (35)); 9 223 9 224 dcl cm_put_datum_in_pool entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 9 225 fixed bin (35)); 9 226 dcl cm_put_datum_in_pool$buffered 9 227 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 9 228 dcl cm_put_datum_in_pool$buffered_continued 9 229 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 9 230 fixed bin (35)); 9 231 dcl cm_put_datum_in_pool$continued 9 232 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 9 233 fixed bin (35), bit (36) aligned, fixed bin (35)); 9 234 9 235 dcl cm_put_ordered_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 9 236 fixed bin (35)); 9 237 dcl cm_put_ordered_element$buffered 9 238 entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 9 239 fixed bin (35)); 9 240 9 241 dcl cm_put_overlength_tail entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35)); 9 242 9 243 dcl cm_recursive_modify entry (ptr, bit (36) aligned, ptr, fixed bin (35), fixed bin (35), bit (36) aligned, 9 244 fixed bin (35)); 9 245 9 246 9 247 dcl cm_replace_buffered_ci$trace_thread_modifications_on 9 248 entry (); 9 249 dcl cm_replace_buffered_ci$trace_thread_modifications_off 9 250 entry (); 9 251 9 252 /* END INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 437 438 10 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 10 2 /* format: style3 */ 10 3 10 4 /* These constants are to be used for the flags argument of sub_err_ */ 10 5 /* They are just "string (condition_info_header.action_flags)" */ 10 6 10 7 declare ( 10 8 ACTION_CAN_RESTART init (""b), 10 9 ACTION_CANT_RESTART init ("1"b), 10 10 ACTION_DEFAULT_RESTART 10 11 init ("01"b), 10 12 ACTION_QUIET_RESTART 10 13 init ("001"b), 10 14 ACTION_SUPPORT_SIGNAL 10 15 init ("0001"b) 10 16 ) bit (36) aligned internal static options (constant); 10 17 10 18 /* End include file */ 439 440 441 end cm_delete_cn_datum; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0912.5 cm_delete_cn_datum.pl1 >spec>on>7192.pbf-04/04/85>cm_delete_cn_datum.pl1 421 1 01/07/85 0858.4 dm_cm_info.incl.pl1 >ldd>include>dm_cm_info.incl.pl1 423 2 01/07/85 0858.0 dm_cm_basic_ci.incl.pl1 >ldd>include>dm_cm_basic_ci.incl.pl1 425 3 01/07/85 0858.1 dm_cm_basic_ci_const.incl.pl1 >ldd>include>dm_cm_basic_ci_const.incl.pl1 427 4 01/07/85 0858.2 dm_cm_collection_header.incl.pl1 >ldd>include>dm_cm_collection_header.incl.pl1 429 5 01/07/85 0901.2 dm_cm_datum.incl.pl1 >ldd>include>dm_cm_datum.incl.pl1 431 6 01/07/85 0858.2 dm_cm_datum_constants.incl.pl1 >ldd>include>dm_cm_datum_constants.incl.pl1 433 7 01/07/85 0858.5 dm_esm_info.incl.pl1 >ldd>include>dm_esm_info.incl.pl1 435 8 01/07/85 0900.8 dm_ci_parts.incl.pl1 >ldd>include>dm_ci_parts.incl.pl1 437 9 04/04/85 0819.0 dm_cm_entry_dcls.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_cm_entry_dcls.incl.pl1 439 10 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 000033 constant bit(36) initial dcl 10-7 set ref 339* 354* BASIC_CI_LAYOUT_1 000002 constant char(4) initial dcl 2-97 set ref 354 354* BITS_PER_BYTE 001526 constant fixed bin(17,0) initial dcl 104 ref 399 399 BYTES_PER_WORD constant fixed bin(17,0) initial dcl 105 ref 228 230 256 257 303 304 384 CDCN_DATUM_HEADER_LENGTH_IN_BYTES constant fixed bin(17,0) initial dcl 6-35 ref 412 CM_INFO_VERSION_2 000004 constant char(8) initial dcl 1-48 set ref 145* COLLECTION_HEADER_VERSION_2 000000 constant char(8) initial dcl 4-86 set ref 148* FREE_SLOT constant fixed bin(15,0) initial unsigned dcl 3-13 ref 267 272 ORDERED_ELEMENT_STORAGE_METHOD constant fixed bin(17,0) initial dcl 7-46 ref 185 ZEROED_DATUM_SLOT 000032 constant fixed bin(35,0) initial dcl 106 set ref 231 305 addr builtin function dcl 97 ref 151 160 161 182 231 254 305 412 412 bci_header based structure level 1 dcl 2-63 set ref 228 256 303 384 bci_header_ptr 000136 automatic pointer dcl 2-94 set ref 137* 138 160* 163* 166 211 211 223 228 233 233 234* 242 256 276 279 281 290* 303 307 309* 384 btb_p_bits parameter fixed bin(35,0) dcl 397 ref 394 399 ccv_p_given_version parameter char(4) dcl 352 set ref 349 354 354* ci_parts based structure level 1 dcl 8-27 ci_parts_ptr 000152 automatic pointer initial dcl 8-35 set ref 182* 183 228 230 231 234* 303 304 305 309* 8-35* 256 257 258 260* 290* cip_number_of_parts 000154 automatic fixed bin(17,0) initial dcl 8-36 set ref 8-36* cm_free_ci$info 000026 constant entry external dcl 9-118 ref 194 216 284 cm_get_bci_header$slot 000030 constant entry external dcl 9-133 ref 163 cm_info based structure level 1 dcl 1-37 cm_info_ptr 000134 automatic pointer initial dcl 1-47 set ref 144* 145 147 163 194* 216* 234 309 1-47* 260 284* 290 412 code 000100 automatic fixed bin(35,0) dcl 73 set ref 142* 163* 164 164* 194* 195 195* 216* 217 217* 260* 262 262* 284* 286 286* collection_header based structure level 1 dcl 4-65 collection_header_ptr 000142 automatic pointer dcl 4-85 set ref 147* 148 185 continuation 000122 automatic bit(36) initial dcl 81 set ref 81* 179* 314 control_interval_id based fixed bin(24,0) level 2 packed unsigned unaligned dcl 5-62 ref 179 194 216 234 260 284 290 309 cv_p_correct_version parameter char(8) dcl 337 set ref 332 339 339* cv_p_given_version parameter char(8) dcl 336 set ref 332 339 339* cv_p_structure_name parameter char unaligned dcl 335 set ref 332 339* datum_contents_length_in_bits 000150 automatic fixed bin(35,0) initial dcl 5-69 set ref 5-69* datum_id based structure level 1 dcl 5-62 datum_id_ptr 000146 automatic pointer initial dcl 5-68 set ref 151* 153 179 194 211 216 228 234 303 309 5-68* 260 284 290 datum_id_string 000123 automatic bit(36) initial dcl 82 set ref 82* 150* 151 datum_ptr 000144 automatic pointer initial dcl 5-67 set ref 5-67* datum_slot based structure level 1 dcl 2-82 datum_slot_ptr 000140 automatic pointer dcl 2-95 set ref 136* 161* 163* 169 172 179 234* 290* 309* 375 378 datum_slot_table based structure array level 1 dcl 93 datum_slot_table_ptr 000130 automatic pointer dcl 87 set ref 254* 258 267 272 datum_slots_buffer 000100 automatic fixed bin(35,0) array dcl 251 set ref 253* 254 265* 269* divide builtin function dcl 97 ref 399 dm_error_$no_datum 000020 external static fixed bin(35,0) dcl 119 set ref 153* 169* dm_error_$unimplemented_ci_version 000022 external static fixed bin(35,0) dcl 120 set ref 354* element_storage_method 3 based fixed bin(17,0) level 2 dcl 4-65 ref 185 er_p_code parameter fixed bin(35,0) dcl 325 ref 322 327 error_table_$unimplemented_version 000024 external static fixed bin(35,0) dcl 122 set ref 339* file_manager_$get 000010 constant entry external dcl 110 ref 260 file_manager_$put 000012 constant entry external dcl 111 ref 387 file_manager_$simple_get 000014 constant entry external dcl 112 ref 412 file_oid 3 based bit(36) initial level 2 dcl 1-37 set ref 163* 234* 260* 290* 309* 412* flags 3(12) based structure level 2 in structure "bci_header" packed unaligned dcl 2-63 in procedure "cm_delete_cn_datum" flags based structure level 2 in structure "datum_slot" packed unaligned dcl 2-82 in procedure "cm_delete_cn_datum" found 000132 automatic bit(1) initial dcl 88 set ref 88* free_slot_is_present 3(13) based bit(1) level 3 packed unaligned dcl 2-63 set ref 223 276* 307* gc_code 000207 automatic fixed bin(35,0) dcl 410 set ref 412* 414 414* gc_continuation_datum_id 000206 automatic bit(36) dcl 408 set ref 412 412 416 gc_p_ci parameter fixed bin(27,0) dcl 406 set ref 403 412* gc_p_offset parameter fixed bin(21,0) dcl 407 set ref 403 412* header_ptr 6 based pointer initial level 2 dcl 1-37 ref 147 index 0(24) based fixed bin(12,0) level 2 packed unsigned unaligned dcl 5-62 ref 153 211 228 303 is_continuation 0(02) based bit(1) level 3 packed unaligned dcl 2-82 ref 169 is_continued 0(01) based bit(1) level 3 packed unaligned dcl 2-82 ref 172 layout_type based char(4) level 2 dcl 2-63 set ref 138* 166* length_in_bits 0(19) based fixed bin(17,0) level 2 packed unsigned unaligned dcl 2-82 ref 375 378 length_in_bytes 3 based fixed bin(17,0) array level 3 dcl 8-27 set ref 230* 257* 304* 384* local_ptr 4 based pointer array level 3 dcl 8-27 set ref 231* 258* 305* 385* mbz 1 000110 automatic fixed bin(17,0) initial level 2 dcl 76 set ref 76* must_get_header 000133 automatic bit(1) initial dcl 89 set ref 89* 127* 135* 156 my_bci_header 000101 automatic structure level 1 dcl 74 set ref 160 my_ci_parts 000110 automatic structure level 1 dcl 76 set ref 182 my_datum_slot 000106 automatic structure level 1 dcl 75 set ref 161 myname 000006 constant varying char(32) initial dcl 103 set ref 339* 354* null builtin function dcl 97 ref 1-47 5-67 5-68 8-35 339 339 354 354 number_of_datums 4(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-63 set ref 211 211 233* 233 242 279* 281 number_of_parts 000110 automatic fixed bin(17,0) initial level 2 in structure "my_ci_parts" dcl 76 in procedure "cm_delete_cn_datum" set ref 76* number_of_parts based fixed bin(17,0) level 2 in structure "ci_parts" dcl 8-27 in procedure "cm_delete_cn_datum" set ref 183* 382* number_of_slots 000124 automatic fixed bin(17,0) dcl 83 set ref 242* 251 257 265 267 offset_in_bytes 0(04) based fixed bin(15,0) level 2 in structure "datum_slot" packed unsigned unaligned dcl 2-82 in procedure "cm_delete_cn_datum" ref 179 375 offset_in_bytes 0(04) based fixed bin(15,0) array level 2 in structure "datum_slot_table" packed unsigned unaligned dcl 93 in procedure "cm_delete_cn_datum" ref 267 272 offset_in_bytes 2 based fixed bin(17,0) array level 3 in structure "ci_parts" dcl 8-27 in procedure "cm_delete_cn_datum" set ref 228* 256* 303* 383* p_bci_header_ptr parameter pointer dcl 65 ref 132 137 p_cm_info_ptr parameter pointer dcl 64 ref 57 132 144 p_code parameter fixed bin(35,0) dcl 69 set ref 57 132 142* 327* p_datum_id parameter bit(36) dcl 67 set ref 57 132 150 163* 314* p_datum_slot_ptr parameter pointer dcl 66 ref 132 136 p_zero_on_free parameter bit(1) dcl 68 set ref 57 132 194* 216* 284* part 2 based structure array level 2 dcl 8-27 phas_code 000100 automatic fixed bin(35,0) dcl 371 set ref 373* 387* 388 388* phas_p_bci_header_ptr parameter pointer dcl 366 ref 361 375 375 375 378 378 385 phas_p_ci_parts_ptr parameter pointer dcl 370 set ref 361 382 383 384 385 387* phas_p_control_interval_id parameter fixed bin(27,0) dcl 368 set ref 361 387* phas_p_datum_slot_ptr parameter pointer dcl 367 ref 361 375 phas_p_file_opening_id parameter bit(36) dcl 365 set ref 361 387* rightmost_non_free_slot 000125 automatic fixed bin(17,0) dcl 84 set ref 267* 267* 269* 272 276 279 scattered_free_space 3(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-63 set ref 378* 378 size builtin function dcl 97 ref 228 256 303 384 slot_idx 000126 automatic fixed bin(17,0) dcl 86 set ref 272* 272* 276 start_of_used_space 4 based fixed bin(17,0) level 2 packed unaligned dcl 2-63 set ref 375 375* 375 sub_err_ 000016 constant entry external dcl 115 ref 339 354 version based char(8) level 2 in structure "cm_info" dcl 1-37 in procedure "cm_delete_cn_datum" set ref 145* version based char(8) level 2 in structure "collection_header" dcl 4-65 in procedure "cm_delete_cn_datum" set ref 148* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 10-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 10-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 10-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 10-7 BASIC_ELEMENT_STORAGE_METHOD internal static fixed bin(17,0) initial dcl 7-44 BCI_HEADER_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 3-14 CDCN_DATUM_HEADER_LENGTH_IN_BITS internal static fixed bin(17,0) initial dcl 6-39 CD_DATUM_HEADER_LENGTH_IN_BITS internal static fixed bin(17,0) initial dcl 6-31 CD_DATUM_HEADER_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 6-27 DATUM_POSITION_TABLE_OFFSET_IN_BYTES internal static fixed bin(17,0) initial dcl 3-16 ESM_INFO_VERSION_1 internal static char(8) initial dcl 7-43 MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS internal static fixed bin(35,0) initial dcl 6-43 MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES internal static fixed bin(35,0) initial dcl 6-47 MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS internal static fixed bin(35,0) initial dcl 6-51 basic_control_interval based structure level 1 dcl 2-56 basic_control_interval_ptr automatic pointer dcl 2-92 basic_esm_info based structure level 1 dcl 7-21 basic_esm_info_ptr automatic pointer dcl 7-40 cm_allocate_ci 000000 constant entry external dcl 9-75 cm_allocate_ci$info 000000 constant entry external dcl 9-76 cm_allocate_ci$info_header 000000 constant entry external dcl 9-77 cm_compact 000000 constant entry external dcl 9-81 cm_compact$buffered 000000 constant entry external dcl 9-82 cm_compact$buffered_replacement 000000 constant entry external dcl 9-84 cm_compact$replacement 000000 constant entry external dcl 9-83 cm_delete 000000 constant entry external dcl 9-92 cm_delete$info 000000 constant entry external dcl 9-94 cm_delete_cn_datum 000000 constant entry external dcl 9-87 cm_delete_cn_datum$header 000000 constant entry external dcl 9-89 cm_determine_free_space$all 000000 constant entry external dcl 9-96 cm_determine_free_space$does_new_datum_fit 000000 constant entry external dcl 9-101 cm_determine_free_space$effective 000000 constant entry external dcl 9-98 cm_find_ci_to_alloc_datum 000000 constant entry external dcl 9-111 cm_find_free_slot 000000 constant entry external dcl 9-115 cm_free_ci$raw_return_prev_next 000000 constant entry external dcl 9-119 cm_free_ci$trace_thread_modifications_off 000000 constant entry external dcl 9-124 cm_free_ci$trace_thread_modifications_on 000000 constant entry external dcl 9-122 cm_free_opening_info 000000 constant entry external dcl 9-128 cm_get_bci_header 000000 constant entry external dcl 9-130 cm_get_bci_header$exclusive 000000 constant entry external dcl 9-131 cm_get_element 000000 constant entry external dcl 9-140 cm_get_element$exclusive 000000 constant entry external dcl 9-142 cm_get_element_portion 000000 constant entry external dcl 9-146 cm_get_id$id 000000 constant entry external dcl 9-157 cm_get_id$ptr 000000 constant entry external dcl 9-159 cm_modify 000000 constant entry external dcl 9-162 cm_modify$buffered 000000 constant entry external dcl 9-164 cm_modify$info 000000 constant entry external dcl 9-173 cm_modify$unprotected_info 000000 constant entry external dcl 9-174 cm_opening_info$full_get 000000 constant entry external dcl 9-187 cm_opening_info$get 000000 constant entry external dcl 9-184 cm_opening_info$get_storage_record 000000 constant entry external dcl 9-185 cm_opening_info$opening_table_ptr 000000 constant entry external dcl 9-189 cm_postcommit_increment 000000 constant entry external dcl 9-192 cm_put 000000 constant entry external dcl 9-195 cm_put$buffered 000000 constant entry external dcl 9-197 cm_put$info 000000 constant entry external dcl 9-206 cm_put_basic_element 000000 constant entry external dcl 9-208 cm_put_cn_datum 000000 constant entry external dcl 9-211 cm_put_datum_in_place 000000 constant entry external dcl 9-213 cm_put_datum_in_place$buffered 000000 constant entry external dcl 9-215 cm_put_datum_in_place$buffered_continued 000000 constant entry external dcl 9-217 cm_put_datum_in_place$continued 000000 constant entry external dcl 9-220 cm_put_datum_in_pool 000000 constant entry external dcl 9-224 cm_put_datum_in_pool$buffered 000000 constant entry external dcl 9-226 cm_put_datum_in_pool$buffered_continued 000000 constant entry external dcl 9-228 cm_put_datum_in_pool$continued 000000 constant entry external dcl 9-231 cm_put_ordered_element 000000 constant entry external dcl 9-235 cm_put_ordered_element$buffered 000000 constant entry external dcl 9-237 cm_put_overlength_tail 000000 constant entry external dcl 9-241 cm_recursive_modify 000000 constant entry external dcl 9-243 cm_replace_buffered_ci$trace_thread_modifications_off 000000 constant entry external dcl 9-249 cm_replace_buffered_ci$trace_thread_modifications_on 000000 constant entry external dcl 9-247 continuation_datum based structure level 1 packed unaligned dcl 5-47 continued_continuation_datum based structure level 1 packed unaligned dcl 5-56 continued_datum based structure level 1 packed unaligned dcl 5-50 datum based structure level 1 packed unaligned dcl 5-44 ordered_esm_info based structure level 1 dcl 7-31 ordered_esm_info_ptr automatic pointer dcl 7-41 NAMES DECLARED BY EXPLICIT CONTEXT. B3_BEGIN_BLOCK 000567 constant label dcl 243 BASIC_ESM 000457 constant label dcl 198 BESM_1_FREE_CI 000473 constant label dcl 211 BESM_2_TRUNCATE_LAST_SLOT 000527 constant label dcl 223 BESM_3_TRUNCATE_TRAILING_FREE_SLOTS 000566 constant label dcl 238 BESM_4_DELETE_SLOT_IN_THE_MIDDLE_OF_TABLE 001017 constant label dcl 296 BITS_TO_BYTES 001407 constant entry internal dcl 394 ref 375 378 CHECK_CI_VERSION 001177 constant entry internal dcl 349 ref 138 166 CHECK_VERSION 001075 constant entry internal dcl 332 ref 145 148 ERROR_RETURN 001061 constant entry internal dcl 322 ref 153 164 169 195 217 262 286 388 414 GET_CONTINUATION 001425 constant entry internal dcl 403 ref 179 JOIN 000226 constant label dcl 142 ref 129 140 MAIN_RETURN 001057 constant label dcl 318 ref 328 ORDERED_ESM 000426 constant label dcl 185 PUT_HEADER_AND_SLOTS 001263 constant entry internal dcl 361 ref 234 290 309 cm_delete_cn_datum 000144 constant entry external dcl 57 header 000172 constant entry external dcl 132 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1714 1746 1527 1724 Length 2356 1527 32 374 165 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cm_delete_cn_datum 292 external procedure is an external procedure. begin block on line 243 96 begin block uses auto adjustable storage. ERROR_RETURN 64 internal procedure is called by several nonquick procedures. CHECK_VERSION internal procedure shares stack frame of external procedure cm_delete_cn_datum. CHECK_CI_VERSION internal procedure shares stack frame of external procedure cm_delete_cn_datum. PUT_HEADER_AND_SLOTS 86 internal procedure is called by several nonquick procedures. BITS_TO_BYTES internal procedure shares stack frame of internal procedure PUT_HEADER_AND_SLOTS. GET_CONTINUATION internal procedure shares stack frame of external procedure cm_delete_cn_datum. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME PUT_HEADER_AND_SLOTS 000100 phas_code PUT_HEADER_AND_SLOTS begin block on line 243 000100 datum_slots_buffer begin block on line 243 cm_delete_cn_datum 000100 code cm_delete_cn_datum 000101 my_bci_header cm_delete_cn_datum 000106 my_datum_slot cm_delete_cn_datum 000110 my_ci_parts cm_delete_cn_datum 000122 continuation cm_delete_cn_datum 000123 datum_id_string cm_delete_cn_datum 000124 number_of_slots cm_delete_cn_datum 000125 rightmost_non_free_slot cm_delete_cn_datum 000126 slot_idx cm_delete_cn_datum 000130 datum_slot_table_ptr cm_delete_cn_datum 000132 found cm_delete_cn_datum 000133 must_get_header cm_delete_cn_datum 000134 cm_info_ptr cm_delete_cn_datum 000136 bci_header_ptr cm_delete_cn_datum 000140 datum_slot_ptr cm_delete_cn_datum 000142 collection_header_ptr cm_delete_cn_datum 000144 datum_ptr cm_delete_cn_datum 000146 datum_id_ptr cm_delete_cn_datum 000150 datum_contents_length_in_bits cm_delete_cn_datum 000152 ci_parts_ptr cm_delete_cn_datum 000154 cip_number_of_parts cm_delete_cn_datum 000206 gc_continuation_datum_id GET_CONTINUATION 000207 gc_code GET_CONTINUATION THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. enter_begin leave_begin call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext alloc_auto_adj signal ext_entry int_entry divide_fx3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cm_free_ci$info cm_get_bci_header$slot file_manager_$get file_manager_$put file_manager_$simple_get sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$no_datum dm_error_$unimplemented_ci_version error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 76 000116 81 000120 82 000121 88 000122 89 000123 1 47 000124 5 67 000126 5 68 000127 5 69 000130 8 35 000132 8 36 000134 57 000137 127 000161 129 000163 132 000164 135 000207 136 000210 137 000214 138 000217 140 000225 142 000226 144 000230 145 000234 147 000255 148 000260 150 000305 151 000307 153 000311 156 000323 160 000325 161 000327 163 000331 164 000351 166 000362 169 000370 172 000402 179 000405 182 000416 183 000420 185 000422 194 000426 195 000446 197 000456 211 000457 216 000473 217 000513 219 000523 223 000524 228 000527 230 000534 231 000536 233 000540 234 000543 237 000565 242 000566 243 000567 251 000572 253 000577 254 000611 256 000614 257 000620 258 000623 260 000624 262 000645 265 000657 267 000663 269 000677 270 000702 272 000705 274 000723 276 000725 279 000733 281 000736 284 000737 286 000757 288 000771 290 000772 293 001015 295 001016 303 001017 304 001024 305 001026 307 001030 309 001033 314 001055 318 001057 322 001060 327 001066 328 001072 332 001075 339 001106 344 001176 349 001177 354 001201 357 001260 359 001261 361 001262 373 001270 375 001271 378 001323 382 001343 383 001346 384 001350 385 001353 387 001356 388 001373 390 001405 392 001406 394 001407 399 001411 403 001425 412 001427 414 001456 416 001467 419 001473 ----------------------------------------------------------- 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