THIS FILE IS DAMAGED COMPILATION LISTING OF SEGMENT cm_modify Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0929.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 module implements collection_manager_$modify (cm_modify$cm_modify), 11* collection_manager_$modify_in_ci_buffer (cm_modify$buffered) and 12* collection_manager_$modify_unprotected (cm_modify$unprotected), and 13* implements entries internal to collection_manager_. 14* 15* This module takes the element value pointed to by p_element_ptr and puts it in 16* the location described by p_element_id. An element must already be 17* allocated at that location. In the simple case where both the old value is 18* stored as a single datum and the new value can be stored as a single datum, 19* the following attempts are made to store the new value in the old element's 20* control interval: (1) exactly replace the contents if there is no change in 21* length - do not change any other information; (2) store the new value in the 22* same place as the old if no more bytes are required to do so; (3) store the 23* new value in the free pool and remove the old; (4) compact the control 24* interval if there is enough overall free space to store the new value, and 25* store the new value in the newly-enlarged free pool; (5) if Ordered ESM, 26* return dm_error_$long_element; else store value in another control interval 27* and store in this control interval a continued_datum pointing to where the 28* value is actually stored. 29* 30* The following entry points exist: 31* $cm_modify: Called externally (via collection_manager_ transfer 32* vector). This is the main entry. 33* 34* $unprotected: Called externally. This entry requires the new value be 35* identical in length to the old value. The file_manager_$raw_put entry is 36* used to put the new value, thereby not obtaining an exclusive lock on the 37* control interval. The new and old values must also be single datum elements. 38* 39* $buffered: Called externally. This entry operates on a control interval 40* buffer (set up by collection_manager_$setup_buffered_ci) and copies data 41* info the buffer directly rather than use file_manager_. 42* 43* $info, $unprotected_info, $buffered_info: Called internally by another 44* collection_manager_ module which must have set up opening information on 45* which this entry relies. In all other respects, identical to their 46* corresponding entry. 47* 48* Internal subroutines which detect an error situation return to the 49* external caller via the ERROR_RETURN subroutine. This subroutine sets the 50* output error code (p_code), cleans up (via FINISH) and transfers to the 51* RETURN label preceding the return statement in the main procedure. For 52* this reason, there are no error code checks following calls to internal 53* subroutines. 54**/ 55 56 /* HISTORY: 57*Written by Matthew Pierret. 58*Modified: 59*03/26/82 by Matthew Pierret: Fixed bug that tested for beginning of element 60* incorrectly. Also added check for the collection id to which 61* the control interval belongs. 62*04/07/82 by Matthew Pierret: Added calculation of maximum space available. 63*04/27/82 by Matthew Pierret: Changed calling sequence of cm_compact_and_add. 64*05/10/82 by Lindsey Spratt: Changed division to calculate length_in_bytes to 65* use precision and scale of (35,18) instead of (17, 2). The 66* length_in_bytes was one short when the length_in_bits was not a 67* multiple of the number of bits per byte. Changed the test which 68* decides whether to use put_datum_in_place or put_datum_in_pool to 69* take into account the datum_header length. 70*05/11/82 by Lindsey Spratt: Changed the calculation of 71* p_maximum_space_available to adjust for the datum header length 72* when adding in the length of the element attempting to be "put", 73* but for which there was insufficient room. 74*06/15/82 by Matthew Pierret: Changed to deal with only complete elements. 75* cm_put_element_portion has been written to handle element portions. 76* Changed to bci_header, dm_cm_basic_ci.incl.pl1. 77*06/21/82 by Matthew Pierret: Changed to use cm_compact. 78*08/04/82 by Matthew Pierret: Changed to use bit(36)aligned collection id. 79*09/10/82 by Matthew Pierret: Changed to call cm_compact with element_id.index 80* equal to 0, meaning do not leave room for a new slot. 81*09/21/82 by Lindsey Spratt: Changed to call cm_compact$replacement, which 82* frees the storage associated with the datum at p_element_id. This 83* storage was not being freed. This is done instead of the previous 84* technique of using a 0 index. 85*10/03/82 by Matthew Pierret: Added opening info, $info entry. 86* Added support for multi-datum elements. 87* Changed calculation of p_maximum_space_available to include 88* scatterred free space. Previously ony the free pool was being 89* considered. 90*11/18/82 by Lindsey Spratt: Changed to set element_id_string to p_element_id, 91* and changed all of the uses of p_element_id to element_id_string. 92*12/01/82 by Lindsey Spratt: Changed to always get the cd_datum_header if the 93* is_continued flag is on, and set the continuation variable. 94*12/02/82 by Lindsey Spratt: Fixed to add the old storage for the datum to the 95* pool_free_space only if the old storage starts at the 96* start_of_used_space, as recorded in the bci_header. 97*01/06/83 by Matthew Pierret: Added $buffered and $buffered_info entries. These 98* entries accept a pointer to a control interval buffer, and access 99* the control interval buffer rather than have file_manager_ access 100* the control interval in the file. 101*01/12/83 by Lindsey Spratt: Added declarations of put_into_ci_buffer and 102* sys_info$max_seg_size. Fixed declaration of dm_error_$no_element, 103* also fixed dcl of p_continuation in an internal proc (was bit(1), 104* is now bit(36)). Corrected to use BASIC_CI_LAYOUT_1. 105*01/27/83 by Matthew Pierret: Upgraded to CM_INFO_VERSION_2. Changed to use 106* cm_bet_bci_header$slot instead of cm_get_header_and_slot. 107* Changed to use dm_error_$ci_not_in_collection instead of 108* $ci_in_wrong_collection. Changed to use addcharno. 109* Removed put_element label. Changed calling sequence to 110* cm_recursive_put, adding element_id_string. This is so that 111* cm_recursive_put knows the orignin of the element. 112*04/27/83 by Matthew Pierret: Added $unprotected("" _info) entries which do 113* not obtain an exclusive lock to update the datum contents. This 114* is used for heavily updated and non-critical elements. The old 115* and new elements must be identical in size, so that only the 116* contents themselves are changed, avoiding messing up a reader of 117* the control interval header. Also, only single datum elements are 118* supported. 119* Also changed to call ERROR_RETURN whenever an error is 120* detected, even if in an interal subroutine. Callers of internal 121* subroutines can assume that if the caller is returned to, no error 122* has occurred. 123*04/28/83 by Matthew Pierret: Fixed bug in cm_put_element introduced in last 124* collection_manager_ installation. A wrong variable was being set, 125* leaving the correct one uninitialized. 126*05/02/83 by Matthew Pierret: Changed to not allow buffered puts to use 127* SIMPLE_REPLACE_DATUM_CONTENTS, since that routine updates the file 128* directly. The previous action caused buffered elements to become 129* inconsistent, particularly the branch_ci_header in index 130* collections. 131*05/04/83 by Matthew Pierret: Fixed use of addcharno (was adding one char too 132* many). 133*04/13/84 by Matthew Pierret: Changed declaration of p_element_length to 134* correctly be fixed bin (35) instead of (17). 135*05/21/84 by Matthew Pierret: Renamed include file dm_cm_esm_info to 136* dm_esm_info. 137*06/01/84 by Matthew Pierret: Changed to reset datum_slot.offset_in_bytes 138* after calling cm_compact$replacement. The value is used in the 139* call to cm_put_datum_in_pool to determine if the existing datum is 140* the first datum past the pool and can therefore be partially 141* re-used. A compaction removes the existing datum's storage, so 142* is invalid to try to re-use it. 143*06/12/84 by Matthew Pierret: Changed name of module from cm_put_element to 144* cm_modify. Switched length/ptr parameter pairs to ptr/length. 145*10/02/84 by Matthew Pierret: Changed byte length calculations to use the 146* function bytes<-divide(bits+BITS_PER_BYTE-1,BITS_PER_BYTE,17,0) 147* instead of ceil(divide(bits,BITS_PER_BYTE,35,18)), the former being 148* more efficient. Changed SETUP_HEADER_AND_SLOT into the pair 149* GET_SLOT_FROM_BUFFER and GET_HEADER_AND_SLOT_FROM_FILE. Changed 150* subroutines to follow the variable name prefixing convention. 151* Changed the continuation variable to continuation_datum_id. 152* Fixed to set the element_length_in_bits to the full length of the 153* element (current_element_length_in_bits) isntead of the length of 154* the first datum (datum_slot.length_in_bits). Removed the declared 155* but un-used variables BYTES_PER_WORD and sys_info$max_seg_size. 156* Changed to only check the ci version once and to use the 157* standard sub_err_ calling sequence. 158*02/27/85 by Matthew C. Pierret: Changed to use 159* cm_compact$buffered_replacement instead of cm_compact$replacement 160* if entered through the buffered entry (is_buffered equals "1"b). 161**/ 162 163 /* format: style2,ind3 */ 164 165 cm_modify: 166 proc (p_file_opening_id, p_collection_id, p_element_ptr, p_element_length, p_element_id, p_maximum_space_available, 167 p_code); 168 169 170 /* START OF DECLARATIONS */ 171 /* Parameter */ 172 173 dcl p_ci_buffer_ptr ptr parameter; 174 dcl p_cm_info_ptr ptr parameter; 175 dcl p_file_opening_id bit (36) aligned parameter; 176 dcl p_collection_id bit (36) aligned parameter; 177 dcl p_element_length fixed bin (35) parameter; 178 dcl p_element_ptr ptr parameter; 179 dcl p_element_id bit (36) aligned parameter; 180 dcl p_maximum_space_available 181 fixed bin (35) parameter; 182 dcl p_code fixed bin (35) parameter; 183 184 /* Automatic */ 185 186 dcl 1 automatic_bci_header aligned like bci_header; 187 dcl 1 automatic_datum_slot aligned like datum_slot; 188 dcl continuation_datum_id bit (36) aligned init ("0"b); 189 dcl (current_element_length_in_bits, element_length_in_bits, header_space_required, old_datum_length_in_bytes, 190 pool_free_bytes, remaining_length_in_bits, total_free_bytes, code) 191 fixed bin (35) init (0); 192 dcl (element_length_in_bytes, remaining_length_in_bytes) 193 fixed bin (17) init (0); 194 195 dcl (using_ordered_esm, is_buffered, is_unprotected) 196 bit (1) aligned init ("0"b); 197 198 /* Based */ 199 /* Builtin */ 200 201 dcl (addcharno, addr, unspec, divide, null) 202 builtin; 203 204 /* Controlled */ 205 /* Constant */ 206 207 dcl myname init ("cm_modify") char (32) varying internal static options (constant); 208 dcl BITS_PER_BYTE fixed bin init (9) int static options (constant); 209 dcl END_OF_ELEMENT fixed bin init (-1) int static options (constant); 210 211 /* Entry */ 212 213 dcl file_manager_$get entry (bit (36) aligned, fixed bin (27), ptr, fixed bin (35)); 214 dcl file_manager_$put entry (bit (36) aligned, fixed bin (27), ptr, fixed bin (35)); 215 dcl file_manager_$raw_put entry (bit (36) aligned, fixed bin (27), ptr, fixed bin (35)); 216 dcl file_manager_$simple_get 217 entry (bit (36) aligned, fixed bin (27), fixed bin (21), ptr, fixed bin (21), 218 fixed bin (35)); 219 dcl sub_err_ entry options (variable); 220 221 /* External */ 222 223 dcl ( 224 dm_error_$bad_element_length, 225 dm_error_$ci_not_in_collection, 226 dm_error_$long_element, 227 dm_error_$no_element, 228 dm_error_$unimplemented_ci_version, 229 error_table_$unimplemented_version 230 ) fixed bin (35) ext; 231 232 /* END OF DECLARATIONS */ 233 234 /* format: ^indblkcom,indcomtxt */ 235 236 is_unprotected = "0"b; 237 is_buffered = "0"b; 238 unspec (automatic_bci_header) = ""b; 239 unspec (automatic_datum_slot) = ""b; 240 bci_header_ptr = addr (automatic_bci_header); 241 datum_slot_ptr = addr (automatic_datum_slot); 242 go to NO_INFO_JOIN; 243 244 buffered: 245 entry (p_ci_buffer_ptr, p_file_opening_id, p_collection_id, p_element_ptr, p_element_length, p_element_id, 246 p_maximum_space_available, p_code); 247 248 is_buffered = "1"b; 249 bci_header_ptr = p_ci_buffer_ptr; 250 call CHECK_CI_VERSION ((bci_header.layout_type)); 251 goto NO_INFO_JOIN; 252 253 unprotected: 254 entry (p_file_opening_id, p_collection_id, p_element_ptr, p_element_length, p_element_id, p_maximum_space_available, 255 p_code); 256 257 is_unprotected = "1"b; 258 is_buffered = "0"b; 259 unspec (automatic_bci_header) = ""b; 260 unspec (automatic_datum_slot) = ""b; 261 bci_header_ptr = addr (automatic_bci_header); 262 datum_slot_ptr = addr (automatic_datum_slot); 263 go to NO_INFO_JOIN; 264 265 266 NO_INFO_JOIN: 267 code = 0; 268 call cm_opening_info$get (p_file_opening_id, p_collection_id, cm_info_ptr, code); 269 if code ^= 0 270 then call ERROR_RETURN (code); 271 272 go to JOIN; 273 274 275 info: 276 entry (p_cm_info_ptr, p_element_ptr, p_element_length, p_element_id, p_maximum_space_available, p_code); 277 278 is_unprotected = "0"b; 279 is_buffered = "0"b; 280 unspec (automatic_bci_header) = ""b; 281 unspec (automatic_datum_slot) = ""b; 282 bci_header_ptr = addr (automatic_bci_header); 283 datum_slot_ptr = addr (automatic_datum_slot); 284 cm_info_ptr = p_cm_info_ptr; 285 go to JOIN; 286 287 /* ******************** Not currently used ******************** 288* 289* buffered_info: 290* entry (p_cm_info_ptr, p_ci_buffer_ptr, p_element_ptr, p_element_length, p_element_id, p_maximum_space_available, 291* p_code); 292* 293* is_unprotected = "0"b; 294* is_buffered = "1"b; 295* cm_info_ptr = p_cm_info_ptr; 296* bci_header_ptr = p_ci_buffer_ptr; 297* call CHECK_CI_VERSION (bci_header.layout_type); 298* 299* go to JOIN; 300* 301* ** ************************************************************ */ 302 303 unprotected_info: 304 entry (p_cm_info_ptr, p_element_ptr, p_element_length, p_element_id, p_maximum_space_available, p_code); 305 306 is_unprotected = "1"b; 307 is_buffered = "0"b; 308 unspec (automatic_bci_header) = ""b; 309 unspec (automatic_datum_slot) = ""b; 310 bci_header_ptr = addr (automatic_bci_header); 311 datum_slot_ptr = addr (automatic_datum_slot); 312 cm_info_ptr = p_cm_info_ptr; 313 goto JOIN; 314 315 JOIN: 316 call CHECK_VERSION (cm_info.version, CM_INFO_VERSION_2, "cm_info"); 317 collection_header_ptr = cm_info.header_ptr; 318 call CHECK_VERSION (collection_header.version, COLLECTION_HEADER_VERSION_2, "collection_header"); 319 320 p_code, code = 0; 321 p_maximum_space_available = -1; 322 323 element_id_string = p_element_id; 324 325 if collection_header.element_storage_method = ORDERED_ELEMENT_STORAGE_METHOD 326 then using_ordered_esm = "1"b; 327 else using_ordered_esm = "0"b; 328 329 if is_buffered 330 then call GET_SLOT_FROM_BUFFER (element_id.index, bci_header_ptr, datum_slot_ptr); 331 else call GET_HEADER_AND_SLOT_FROM_FILE (cm_info.file_oid, element_id_string, bci_header_ptr, datum_slot_ptr); 332 if bci_header.collection_id ^= cm_info.collection_id 333 then call ERROR_RETURN (dm_error_$ci_not_in_collection); 334 335 /**** Get the length of the existing element (current_element_length_in_bits). */ 336 337 if datum_slot.flags.is_continued 338 then if is_buffered 339 then call GET_DATUM_HEADER_VALUES_FROM_BUFFER (bci_header_ptr, datum_slot.offset_in_bytes, 340 current_element_length_in_bits, continuation_datum_id); 341 else call GET_DATUM_HEADER_VALUES_FROM_FILE (cm_info.file_oid, (element_id.control_interval_id), 342 (datum_slot.offset_in_bytes), current_element_length_in_bits, continuation_datum_id); 343 else current_element_length_in_bits = datum_slot.length_in_bits; 344 345 /**** Get the length of the new element (element_length_in_bits). */ 346 347 if p_element_length ^= END_OF_ELEMENT 348 then element_length_in_bits = p_element_length; 349 else element_length_in_bits = current_element_length_in_bits; 350 351 if element_length_in_bits < 1 352 then call ERROR_RETURN (dm_error_$bad_element_length); 353 354 if ^datum_slot.flags.is_continued & element_length_in_bits = current_element_length_in_bits & ^is_buffered 355 then 356 SIMPLE_REPLACE: 357 do; 358 359 /*** The length of the old and new elements are the same. This means that only the 360* datum contents need to be changed, and the contents can be changed in place. 361* This special-case replacement can be done quickly. */ 362 363 call SIMPLE_REPLACE_DATUM_CONTENTS (cm_info.file_oid, (element_id.control_interval_id), p_element_ptr, 364 element_length_in_bits, (datum_slot.offset_in_bytes), is_unprotected); 365 366 end SIMPLE_REPLACE; 367 else if is_unprotected & (element_length_in_bits ^= current_element_length_in_bits | datum_slot.flags.is_continued) 368 then 369 GENERAL_REPLACE_UNPROTECTED: 370 call ERROR_RETURN (dm_error_$bad_element_length); 371 else 372 GENERAL_REPLACE: 373 do; 374 375 /*** More work may be necessary than simply changing the contents of 376* the datum which holds the element. */ 377 378 remaining_length_in_bits = element_length_in_bits; 379 /* Length of portion of element not yet re-written. */ 380 /*** Determine the amount of free space in bytes in this control 381* interval. */ 382 383 call cm_determine_free_space$all (bci_header_ptr, 0, total_free_bytes, pool_free_bytes); 384 385 /*** Record the length of the existing datum. This is needed to accurately determine 386* the effective free space (total_free_bytes + old_datum_length_in_bytes) 387* and to determine the change in free space caused by replacing the datum. */ 388 389 old_datum_length_in_bytes = divide (datum_slot.length_in_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 390 391 total_free_bytes = total_free_bytes + old_datum_length_in_bytes; 392 393 /*** If the old datum was allocated at the beginning of the used space, then its 394* old storage space is available as part of the free pool (cm_put_datum_in_pool 395* is capable of recovering this space). Otherwise, the only way to recover the 396* old storage for the datum is to compact the control interval. */ 397 398 if datum_slot.offset_in_bytes = bci_header.start_of_used_space 399 then pool_free_bytes = pool_free_bytes + old_datum_length_in_bytes; 400 401 if datum_slot.flags.is_continued 402 then 403 do; 404 405 /*** The existing element is a multi-datum element. Put the new value from 406* rightmost datum of the element to the leftmost. */ 407 408 call cm_recursive_modify (cm_info_ptr, element_id_string, p_element_ptr, remaining_length_in_bits, 409 total_free_bytes, continuation_datum_id, code); 410 if code ^= 0 411 then call ERROR_RETURN (code); 412 413 end; 414 415 if remaining_length_in_bits >= MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 416 then 417 do; 418 419 /*** As it is not possible, by convention, for the first datum of an element 420* to be maximum-sized, maximum-sized datums must be allocated to hold the 421* tail of the element. If part of the tail has already been put by 422* cm_recursive_modify, that part is ignored because remaining_length_in_bits 423* was decremented. */ 424 425 call cm_put_overlength_tail (cm_info_ptr, p_element_ptr, remaining_length_in_bits, 426 continuation_datum_id, code); 427 if code ^= 0 428 then call ERROR_RETURN (code); 429 end; 430 431 /*** Now all of the element except for a less-than maximum-sized datum has 432* been stored. If the remainder is too big to fit in this control interval, 433* store it in another control interval and leave an indirect in this 434* control interval. */ 435 436 if continuation_datum_id ^= "0"b 437 then header_space_required = CD_DATUM_HEADER_LENGTH_IN_BYTES; 438 439 remaining_length_in_bytes = divide (remaining_length_in_bits + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 440 441 if remaining_length_in_bytes + header_space_required <= old_datum_length_in_bytes 442 then 443 PUT_IN_PLACE: 444 do; 445 446 /*** The remainder can be placed where the old datum is. */ 447 448 if is_buffered 449 then if continuation_datum_id = "0"b 450 then call cm_put_datum_in_place$buffered (bci_header_ptr, p_element_ptr, remaining_length_in_bits, 451 datum_slot_ptr, code); 452 else call cm_put_datum_in_place$buffered_continued (bci_header_ptr, p_element_ptr, 453 remaining_length_in_bits, datum_slot_ptr, element_length_in_bits, continuation_datum_id, 454 code); 455 456 else if continuation_datum_id = "0"b 457 then call cm_put_datum_in_place (cm_info.file_oid, element_id_string, p_element_ptr, 458 remaining_length_in_bits, datum_slot_ptr, bci_header_ptr, code); 459 else call cm_put_datum_in_place$continued (cm_info.file_oid, element_id_string, p_element_ptr, 460 remaining_length_in_bits, datum_slot_ptr, bci_header_ptr, element_length_in_bits, 461 continuation_datum_id, code); 462 463 end PUT_IN_PLACE; 464 else 465 PUT_IN_POOL: 466 do; 467 468 /*** The remainder is too large to be stored in the space which the old value 469* currently occupies. Find another place in the control interval to put the 470* new value. */ 471 472 if remaining_length_in_bits > (total_free_bytes - header_space_required) * BITS_PER_BYTE 473 then 474 do; 475 476 /*** The remainder won't fit in this control interval. Allocate another 477* datum in which to store the remainder. */ 478 479 if using_ordered_esm 480 then call ERROR_RETURN (dm_error_$long_element); 481 482 call cm_put_cn_datum (cm_info_ptr, p_element_ptr, remaining_length_in_bits, 483 (continuation_datum_id), continuation_datum_id, code); 484 if code ^= 0 485 then call ERROR_RETURN (code); 486 487 remaining_length_in_bits = 0; 488 header_space_required = CD_DATUM_HEADER_LENGTH_IN_BYTES; 489 490 end; 491 492 /*** The remainder can be placed in this control interval. Try to put it 493* in the place it previously occupied. Otherwise, compact the control 494* interval and place it in the pool. */ 495 496 if remaining_length_in_bits > (pool_free_bytes - header_space_required) * BITS_PER_BYTE 497 then 498 do; 499 500 if is_buffered 501 then call cm_compact$buffered_replacement (bci_header_ptr, (bci_header.number_of_datums), 502 element_id_string, code); 503 else call cm_compact$replacement (cm_info.file_oid, (bci_header.number_of_datums), 504 element_id_string, bci_header_ptr, code); 505 if code ^= 0 506 then call ERROR_RETURN (code); 507 datum_slot.offset_in_bytes = 0; /* The compaction removed the storage taken up by the element. */ 508 end; 509 510 if continuation_datum_id = "0"b 511 then 512 do; 513 514 datum_slot.flags.is_continued = "0"b; ‰¿u ‰¿u¤‰¿uy‰¿u»‰¿u©‰¿up‰¿u²‰¿uÁ‰¿uÀ‰¿ulj¿uʉ¿uЉ¿uÔ‰¿u䉿uÕ‰¿uò‰¿u‰¿u‰¿u ‰¿u‰¿uቿu‰¿uu9‰¿u:‰¿u‰¿u8‰¿u>‰¿uK‰¿uF‰¿u^‰¿uv‰¿uz‰¿uƒ‰¿u›‰¿u°‰¿u»‰¿u¥‰¿u¿‰¿u‰¿u¹‰¿uÚ‰¿uቿuuÿ‰¿uꉿv‰¿uü‰¿v ‰¿v ‰¿v‰¿v‰¿v‰¿v,‰¿v4‰¿vE‰¿vI‰¿vO‰¿v<‰¿vP‰¿vX‰¿va‰¿vj‰¿vx‰¿v‚‰¿v‰¿vs‰¿v€‰¿v™‰¿v¢‰¿v”‰¿v¬‰¿v°‰¿v´‰¿v­‰¿v±‰¿v̉¿vɉ¿vÚ‰¿vʉ¿vlj¿vÙ‰¿v뉿vꉿvv‰¿v,‰¿v;‰¿v<‰¿v=‰¿v0‰¿v+‰¿v[‰¿v'‰¿vC‰¿vv‰¿vf‰¿vp‰¿vx‰¿vt‰¿v¡‰¿v‹‰¿v¶‰¿vµ‰¿v‘‰¿v¿‰¿vƉ¿vʼn¿vω¿vÖ‰¿v鉿vꉿvù‰¿w‰¿vû‰¿w‰¿w‰¿w:‰¿w;‰¿w0‰¿w=‰¿w>‰¿ww‰¿w9‰¿w{‰¿w~‰¿w‰¿w“‰¿w¤‰¿w¦‰¿w¸‰¿w¶‰¿wÀ‰¿wω¿w²‰¿wˉ¿w݉¿ww©‰¿w÷‰¿wü‰¿wð‰¿w߉¿w&‰¿w(‰¿w‰¿w ‰¿wL‰¿wQ‰¿w+‰¿wZ‰¿w[‰¿w`‰¿ws‰¿wz‰¿w‚‰¿wq‰¿w}‰¿w‹‰¿wŽ‰¿w|‰¿w™‰¿w ‰¿w¦‰¿w³‰¿w¹‰¿w²‰¿wº‰¿w߉¿wÕ‰¿w承wÛ‰¿wó‰¿wȉ¿w퉿w÷‰¿x‰¿x‰¿xF‰¿xT‰¿xX‰¿xY‰¿x‰¿xC‰¿xM‰¿xj‰¿xH‰¿x`‰¿xi‰¿xQ‰¿x|‰¿xw‰¿xl‰¿x3‰¿x¶‰¿x®‰¿xÁ‰¿xÒ‰¿xù‰¿x ‰¿x:‰¿xA‰¿x<‰¿xL‰¿xo‰¿xk‰¿xQ‰¿xp‰¿xB‰¿x‡‰¿xm‰¿x„‰¿x“‰¿x›‰¿xˆ‰¿x ‰¿x?‰¿x«‰¿x¡‰¿xÖ‰¿x¢‰¿xxÞ‰¿xó‰¿xô‰¿x쉿y‰¿y‰¿y‰¿y‰¿y‰¿y+‰¿y9‰¿y0‰¿yN‰¿y!‰¿y^‰¿y_‰¿y‰¿y‰¿y‰‰¿y…‰¿y}‰¿y™‰¿y ‰¿y¨‰¿yŠ‰¿y¦‰¿y±‰¿yÁ‰¿yĉ¿y承yž‰¿yቿy≿y5) init (0); 619 dcl 1 srdc_ci_part aligned, 620 2 number_of_parts fixed bin (17) init (1), 621 2 part (1) like ci_parts.part; 622 623 srdc_ci_part.part (1).offset_in_bytes = srdc_p_datum_contents_offset; 624 srdc_ci_part.part (1).length_in_bytes = 625 divide (srdc_p_datum_contents_length + BITS_PER_BYTE - 1, BITS_PER_BYTE, 17, 0); 626 srdc_ci_part.part (1).local_ptr = srdc_p_datum_contents_ptr; 627 628 if srdc_p_is_unprotected 629 then call file_manager_$raw_put (srdc_p_file_opening_id, srdc_p_control_interval_id, addr (srdc_ci_part), srdc_code) 630 ; 631 else call file_manager_$put (srdc_p_file_opening_id, srdc_p_control_interval_id, addr (srdc_ci_part), srdc_code); 632 633 if srdc_code ^= 0 634 then call ERROR_RETURN (srdc_code); 635 636 return; 637 638 end SIMPLE_REPLACE_DATUM_CONTENTS; 639 640 GET_SLOT_FROM_BUFFER: 641 proc (gs_p_slot_index, gs_p_bci_ptr, gs_p_slot_ptr); 642 643 dcl gs_p_slot_index fixed bin (12) uns unal parameter; 644 dcl gs_p_bci_ptr ptr parameter; 645 dcl gs_p_slot_ptr ptr parameter; 646 647 if gs_p_slot_index > gs_p_bci_ptr -> basic_control_interval.header.number_of_datums | gs_p_slot_index <= 0 648 then call ERROR_RETURN (dm_error_$no_element); 649 else gs_p_slot_ptr = addr (gs_p_bci_ptr -> basic_control_interval.datum_position_table (gs_p_slot_index)); 650 651 end GET_SLOT_FROM_BUFFER; 652 653 654 GET_HEADER_AND_SLOT_FROM_FILE: 655 proc (ghs_p_file_oid, ghs_p_element_id, ghs_p_bci_header_ptr, ghs_p_slot_ptr); 656 657 dcl ghs_p_file_oid bit (36) aligned parameter; 658 dcl ghs_p_element_id bit (36) aligned parameter; 659 dcl ghs_p_bci_header_ptr ptr parameter; 660 dcl ghs_p_slot_ptr ptr parameter; 661 662 dcl ghs_code fixed bin (35) init (0); 663 664 call cm_get_bci_header$slot (ghs_p_file_oid, ghs_p_bci_header_ptr, ghs_p_slot_ptr, ghs_p_element_id, ghs_code); 665 if ghs_code ^= 0 666 then call ERROR_RETURN (ghs_code); 667 else call CHECK_CI_VERSION (ghs_p_bci_header_ptr -> bci_header.layout_type); 668 669 return; 670 671 end GET_HEADER_AND_SLOT_FROM_FILE; 672 673 GET_DATUM_HEADER_VALUES_FROM_FILE: 674 proc (gdf_p_file_oid, gdf_p_ci_number, gdf_p_datum_offset, gdf_p_full_length, gdf_p_continuation_datum_id); 675 676 dcl gdf_p_file_oid bit (36) aligned parameter; 677 dcl gdf_p_ci_number fixed bin (27) parameter; 678 dcl gdf_p_datum_offset fixed bin (21) parameter; 679 dcl gdf_p_full_length fixed bin (35) parameter; 680 dcl gdf_p_continuation_datum_id 681 bit (36) aligned parameter; 682 683 dcl gdf_code fixed bin (35) init (0); 684 dcl 1 gdf_continued_datum_header 685 aligned like continued_datum.header; 686 687 call file_manager_$simple_get (gdf_p_file_oid, gdf_p_ci_number, gdf_p_datum_offset, 688 addr (gdf_continued_datum_header), (CD_DATUM_HEADER_LENGTH_IN_BYTES), gdf_code); 689 if gdf_code ^= 0 690 then call ERROR_RETURN (gdf_code); 691 692 gdf_p_full_length = gdf_continued_datum_header.full_length; 693 gdf_p_continuation_datum_id = unspec (gdf_continued_datum_header.continuation); 694 695 return; 696 697 end GET_DATUM_HEADER_VALUES_FROM_FILE; 698 699 GET_DATUM_HEADER_VALUES_FROM_BUFFER: 700 proc (gdb_p_ci_ptr, gdb_p_datum_offse‰¿y‰¿y‰¿y‰¿yù‰¿y‰¿y+‰¿y‰¿yU‰¿yF‰¿yR‰¿y_‰¿ye‰¿y^‰¿yn‰¿yM‰¿yr‰¿y|‰¿y‰¿y…‰¿y”‰¿y‰¿y±‰¿y¿‰¿y¯‰¿yĉ¿yy߉¿y÷‰¿yÿ‰¿z ‰¿z‰¿z(‰¿zO‰¿z_‰¿zR‰¿zb‰¿ze‰¿zG‰¿zh‰¿z^‰¿zr‰¿zf‰¿z†‰¿z‰¿z§‰¿z«‰¿z¡‰¿z·‰¿z²‰¿zu‰¿zÖ‰¿zω¿z‰¿zü‰¿zõ‰¿z‰¿z‰¿z‰¿zð‰¿z>‰¿z8‰¿zF‰¿zA‰¿zM‰¿zN‰¿zZ‰¿zn‰¿zl‰¿zo‰¿zp‰¿z˜‰¿zŸ‰¿z©‰¿z¥‰¿zj‰¿z—‰¿zÁ‰¿zÛ‰¿zƉ¿z承zÖ‰¿zð‰¿{‰¿{‰¿{‰¿zö‰¿{#‰¿{?‰¿{C‰¿{D‰¿{A‰¿{O‰¿{]‰¿{[‰¿{n‰¿{Š‰¿{‘‰¿{‡‰¿{‹‰¿{•‰¿{’‰¿{š‰¿{¶‰¿{Ɖ¿{ȉ¿{÷‰¿{‰¿{㉿{ý‰¿{‰¿{‰¿{"‰¿{+‰¿{‰¿{3‰¿{‰¿{9‰¿{ ‰¿{S‰¿{X‰¿{n‰¿{a‰¿{j‰¿{}‰¿{{‰¿{‚‰¿{Š‰¿{’‰¿{•‰¿{~‰¿{ ‰¿{¬‰¿{¾‰¿{§‰¿{ȉ¿{̉¿{À‰¿{Ô‰¿{Ó‰¿{牿{艿{—‰¿{õ‰¿{ÿ‰¿| ‰¿|‰¿{뉿{ý‰¿{ü‰¿|+‰¿|$‰¿|‰¿|7‰¿|3‰¿|B‰¿|A‰¿|9‰¿|K‰¿|I‰¿|U‰¿|\‰¿|k‰¿|x‰¿|~‰¿|{‰¿|‰‰¿|‘‰¿|¡‰¿|«‰¿|¹‰¿|³‰¿|ʼn¿|Ɖ¿|¾‰¿|™‰¿|Ò‰¿|ቿ|‰¿|Ή¿|퉿|Þ‰¿|ü‰¿|ñ‰¿|ó‰¿|‰¿|‰¿| ‰¿|>‰¿|J‰¿|a‰¿|d‰¿|R‰¿|P‰¿|s‰¿|u‰¿|‰¿||‰¿|“‰¿|˜‰¿|œ‰¿|±‰¿|¡‰¿|«‰¿|¹‰¿|Œ‰¿|Á‰¿|Ž‰¿|̉¿|Љ¿|Ή¿|ω¿|Õ‰¿}‰¿}‰¿} ‰¿}‰¿}*‰¿}‰¿}&‰¿}"‰¿};‰¿}P‰¿}N‰¿}O‰¿}a‰¿}c‰¿}d‰¿}€‰¿}f‰¿}„‰¿}‰¿}§‰¿}–‰¿}ª‰¿}²‰¿}ˉ¿}艿}ó‰¿}}'‰¿}O‰¿}Y‰¿}‚‰¿}j‰¿}|‰¿}‰‰¿}—‰¿}©‰¿}¯‰¿}Ɖ¿}·‰¿}Õ‰¿}ʉ¿}}þ‰¿~‰¿~‰¿}ú‰¿~%‰¿~1‰¿~{‰¿~|‰¿~t‰¿~’‰¿~°‰¿~¨‰¿~ɉ¿~Ɖ¿~®‰¿~Љ¿~承~牿~Ö‰¿~ù‰¿~ý‰¿~‰¿~‰¿~,‰¿~8‰¿~;‰¿~M‰¿~S‰¿~J‰¿~E‰¿~d‰¿~k‰¿~n‰¿~\‰¿~Œ‰¿~‰¿~„‰¿~˜‰¿~”‰¿~Ÿ‰¿~—‰¿~‰‰¿~¬‰¿~¾‰¿~ĉ¿~½‰¿~»‰¿~Õ‰¿~Љ¿~Û‰¿~鉿~ô‰¿~ø‰¿~ý‰¿*‰¿4‰¿ ‰¿(‰¿J‰¿F‰¿M‰¿g‰¿Z‰¿]‰¿¢‰¿®‰¿œ‰¿ʉ¿͉¿÷‰¿ü‰¿ý‰¿J‰¿D‰¿_‰¿k‰¿V‰¿e‰¿g‰¿‰¿£‰¿µ‰¿·‰¿͉¿lj¿̉¿艿Þ‰¿ô‰¿ü‰¿Ú‰¿€‰¿€‰¿€$‰¿€*‰¿€E‰¿€L‰¿€=‰¿€R‰¿€S‰¿€a‰¿€Š‰¿€‹‰¿€‰¿€d‰¿€–‰¿€š‰¿€§‰¿€°‰¿€½‰¿€Ÿ‰¿€¨‰¿€Ï‰¿€Ö‰¿€Ü‰¿€Ò‰¿€þ‰¿€Þ‰¿€ÿ‰¿€ë‰¿€‰¿€&‰¿€8‰¿€A‰¿€3‰¿€?‰¿€L‰¿€T‰¿€[‰¿€t‰¿€€‰¿€{‰¿€‡‰¿€‰¿€‘‰¿€¬‰¿€·‰¿€Ç‰¿€¼‰¿€Ì‰¿€Ü‰¿€È‰¿€Þ‰¿‰¿€ü‰¿‰¿‰¿'‰¿1‰¿7‰¿M‰¿P‰¿W‰¿\‰¿‰¿e‰¿r‰¿†‰¿‰¿Š‰¿µ‰¿·‰¿Ø‰¿Ô‰¿Þ‰¿á‰¿ñ‰¿‰¿+‰¿;‰¿M‰¿<‰¿Q‰¿R‰¿U‰¿–‰¿Ê‰¿Ä‰¿ƒ‰¿Ì‰¿å‰¿æ‰¿ì‰¿ü‰¿õ‰¿Ü‰¿‚‰¿‚‰¿‚‰¿‚P‰¿‚‰¿‚>‰¿‚E‰¿‚M‰¿‚O‰¿‚=‰¿‚W‰¿‚_‰¿‚`‰¿‚[‰¿‚n‰¿‚y‰¿‚‰¿‚ƒ‰¿‚V‰¿‚£‰¿‚ž‰¿‚·‰¿‚Ô‰¿‚䉿‚õ‰¿‚Ò‰¿‚ ‰¿‚û‰¿‚‰¿‚:‰¿‚1‰¿‚+‰¿‚y‰¿‚Œ‰¿‚ω¿‚¬‰¿‚㉿‚퉿‚ÿ‰¿‚쉿ƒ‰¿ƒ‰¿ƒ‰¿ƒ ‰¿ƒ/‰¿ƒ‰¿ƒ9‰¿ƒG‰¿ƒ‰¿ƒF‰¿ƒQ‰¿ƒm‰¿ƒf‰¿ƒw‰¿ƒo‰¿ƒ´‰¿ƒÏ‰¿ƒÞ‰¿ƒã‰¿ƒæ‰¿ƒá‰¿ƒÜ‰¿ƒé‰¿ƒó‰¿ƒò‰¿ƒü‰¿ƒ ‰¿ƒ#‰¿ƒ(‰¿ƒR‰¿ƒk‰¿ƒf 2 85 dcl collection_header_ptr ptr; 2 86 dcl COLLECTION_HEADER_VERSION_2 2 87 init ("col_hdr2") char (8) aligned 2 88 int static options (constant); 2 89 2 90 /* END INCLUDE FILE - dm_cm_collection_header.incl.pl1 */ 721 722 3 1 /* BEGIN INCLUDE FILE dm_cm_basic_ci.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* 3 5* The collection_manager_ manages the structure of the addressable 3 6* portion of a control interval. The addressable portion is that portion of 3 7* a control interval which the file_manager_ will allow the 3 8* collection_manager_ to address. In this description control interval will 3 9* be used to mean the addressable portion of a control interval. 3 10* 3 11* A control interval is divided into four parts: the header, the datum 3 12* position table (also known as the slot table or slots), un-used space and 3 13* used space. The beginning of the header is at offset 0, and the end of the 3 14* used space is at the end of the control interval (curently offset 4072). 3 15* Pictoriarly, a control interval is structured as follows: 3 16* 3 17* ---------------------------------------------------------------------- 3 18* | || | | | | | || || | / / | |/| | | 3 19* | Header || | slot | || un-used space || |/ / /| |/| | | 3 20* | || | table | || || | / / | |/| | | 3 21* | || | | | | | || || |/ / /| |/| | | 3 22* ---------------------------------------------------------------------- 3 23* ^ ^ ^ ^ ^ ^ ^ 3 24* | | | | | | | 3 25* | |...........|.......|...| 3 26* start of used space| | | | 3 27* | | each| 3 28* scattered free space| is a used 3 29* datum 3 30* 3 31* The basic_control_interval structure describes the header 3 32* (basic_control_interval.header, bci_header) and the slots 3 33* (basic_control_interval.datum_position_table, datum_slot for one only). 3 34* Each datum_slot contains the offset (in bytes) and the length (in bits) of 3 35* a datum in the used space. If the offset is equal to FREE_SLOT (declared 3 36* in dm_cm_basic_ci_const.incl.pl1), the slot is un-used. The slot also 3 37* contains flags describing the type of datum (see dm_cm_datum.incl.pl1). 3 38**/ 3 39 3 40 /* HISTORY: 3 41*Written by Matthew Pierret, 02/07/82. 3 42*Modified: 3 43*03/25/82 by Matthew Pierret: Fixed alignment differences basic_control_interval 3 44* and its sub-structures. 3 45*06/14/82 by Matthew Pierret: Removed common header and buffers. Changed 3 46* basic_ci_header to bci_header. Added previous_control_interval. 3 47*07/12/82 by Matthew Pierret: Changed collection_id to be bit (36) aligned. 3 48*10/29/82 by Matthew Pierret: Added flags to datum slots. 3 49*11/10/82 by Matthew Pierret: Removed continued_datum_is_present flag, as it 3 50* is not used. 3 51*03/28/84 by Matthew Pierret: Added the constants BCI_HEADER_LENGTH_IN_BYTES 3 52* and DATUM_POSITION_TABLE_OFFSET_IN_BYTES. 3 53**/ 3 54 3 55 /* format: style2 */ 3 56 dcl 1 basic_control_interval 3 57 aligned based (basic_control_interval_ptr), 3 58 2 header like bci_header, 3 59 2 datum_position_table 3 60 (0 refer (basic_control_interval.number_of_datums)) like datum_slot; 3 61 3 62 3 63 dcl 1 bci_header aligned based (bci_header_ptr), 3 64 2 layout_type char (4) aligned, 3 65 2 collection_id bit (36) aligned, 3 66 2 next_control_interval 3 67 fixed bin (24) uns unal, 3 68 2 previous_control_interval 3 69 fixed bin (24) uns unal, 3 70 2 flags unal, 3 71 3 continuation_datum_is_present 3 72 bit (1) unal, 3 73 3 free_slot_is_present 3 74 bit (1) unal, 3 75 3 must_be_zero bit (4) unal, /* reserved */ 3 76 2 scattered_free_space 3 77 fixed bin (17) unal, 3 78 2 start_of_used_space 3 79 fixed bin (17) unal, 3 80 2 number_of_datums fixed bin (17) unal; 3 81 3 82 dcl 1 datum_slot aligned based (datum_slot_ptr), 3 83 2 flags unal, 3 84 3 special_format_datum 3 85 bit (1) unal, /* reserved */ 3 86 3 is_continued bit (1) unal, 3 87 3 is_continuation bit (1) unal, 3 88 3 mbz bit (1) unal, /* reserved */ 3 89 2 offset_in_bytes fixed bin (15) uns unal, 3 90 2 length_in_bits fixed bin (17) uns unal; 3 91 3 92 dcl basic_control_interval_ptr 3 93 ptr; 3 94 dcl bci_header_ptr ptr; 3 95 dcl datum_slot_ptr ptr; 3 96 3 97 dcl BASIC_CI_LAYOUT_1 char (4) aligned init ("bci1") internal static options (constant); 3 98 3 99 /* END INCLUDE FILE dm_cm_basic_ci.incl.pl1 */ 723 724 4 1 /* BEGIN INCLUDE FILE dm_cm_basic_ci_const.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4* 4 5* Contains constants useful in describing parts of a basic control interval. 4 6**/ 4 7 4 8 /* HISTORY: 4 9*Written by Matthew Pierret, 09/20/84. 4 10*Modified: 4 11**/ 4 12 4 13 dcl FREE_SLOT init (0) fixed bin (15) uns internal static options (constant); 4 14 dcl BCI_HEADER_LENGTH_IN_BYTES 4 15 init (20) fixed bin internal static options (constant); 4 16 dcl DATUM_POSITION_TABLE_OFFSET_IN_BYTES 4 17 init (20) fixed bin internal static options (constant); 4 18 4 19 4 20 /* END INCLUDE FILE dm_cm_basic_ci_const.incl.pl1 */ 725 726 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 */ 727 728 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 */ 729 730 7 1 /* BEGIN INCLUDE FILE: dm_ci_parts.incl.pl1 */ 7 2 7 3 /* DESCRIPTION: 7 4* 7 5* This include file contains the ci_parts structure. This structure 7 6* is used across the file_manager_ interface to specify the parts of a 7 7* control interval to get or put. If the number_of parts is equal to 0, 7 8* modules which take ci_parts interpret this case to mean to do everything 7 9* except the actual requested operation, i.e., lock the control interval 7 10* but don't get anything. offset_in_bytes is the 0-originned offset in 7 11* bytes from the beginning of the addressable portion of the control interval. 7 12* An offset_in_bytes which is in the addressable portion is in error. 7 13* Likewise, if offset_in_bytes + length_in_bytes is outside of the addressable 7 14* portion, it is in error. 7 15**/ 7 16 7 17 /* HISTORY: 7 18*Written by Matthew Pierret, 01/28/82. 7 19* (01/28/82 Andre Bensoussan, Design.) 7 20*Modified: 7 21*11/07/84 by Matthew Pierret: To add must_be_zero, initial attributes on 7 22* automatic storge. 7 23**/ 7 24 7 25 /* format: style2,ind3 */ 7 26 7 27 dcl 1 ci_parts aligned based (ci_parts_ptr), 7 28 2 number_of_parts fixed bin (17), 7 29 2 must_be_zero fixed bin, 7 30 2 part (cip_number_of_parts refer (ci_parts.number_of_parts)), 7 31 3 offset_in_bytes fixed bin (17), 7 32 3 length_in_bytes fixed bin (17), 7 33 3 local_ptr ptr; 7 34 7 35 dcl ci_parts_ptr ptr init (null ()); 7 36 dcl cip_number_of_parts fixed bin (17) init (0); 7 37 7 38 7 39 /* BEGIN INCLUDE FILE: dm_ci_parts.incl.pl1 */ 731 732 8 1 /* BEGIN INCLUDE FILE dm_element_id.incl.pl1 */ 8 2 8 3 /* DESCRIPTION: 8 4* 8 5* Contains the declaration of an element identifier. Element 8 6* identifiers consist of two parts, the id (number) of the control interval 8 7* in which the element resides, and the index into the slot table of 8 8* the element in the control interval. The declaration of the element_id 8 9* structure reflects this division of the element identifier. The structure 8 10* is based on the automatic bit string element_id_string because programs 8 11* generally pass bit strings (element_id_string) to each other, then 8 12* interpret the bit string by overlaying the element_id structure ony if 8 13* it is necessary to access the parts of the id. Basing element_id on 8 14* addr(element_id_string) instead of on a pointer removes the necessity 8 15* for always setting that pointer explicitly and guarantees that changes 8 16* made to the string or structure do not get inconsistent. 8 17* 8 18* Changes made to element_id must also be made to datum_id, declared in 8 19* dm_cm_datum.incl.pl1. 8 20**/ 8 21 8 22 /* HISTORY: 8 23*Written by Matthew Pierret, 04/01/82. 8 24*Modified: 8 25*09/24/84 by Matthew Pierret: Added DESCRIPTION section. 8 26**/ 8 27 8 28 /* format: style2,ind3,ll79 */ 8 29 8 30 dcl element_id_string bit (36) aligned; 8 31‰¿ˆ‰¿ˆ"‰¿ˆ#‰¿ˆ£Dý½‰¿ˆ8‰¿ˆ2‰¿ˆL‰¿ˆN‰¿ˆu‰¿ˆw‰¿ˆ‡‰¿ˆg‰¿ˆm‰¿ˆ‰¿ˆÃ‰¿ˆÖ‰¿ˆä‰¿ˆó‰¿ˆø‰¿ˆ‰¿ˆ ‰¿ˆò‰¿ˆû‰¿ˆþ‰¿ˆè‰¿ˆ ‰¿ˆ7‰¿ˆ2‰¿ˆ1‰¿ˆ6‰¿ˆ;‰¿ˆd‰¿ˆe‰¿ˆg‰¿ˆf‰¿ˆT‰¿ˆ‰¿ˆž‰¿ˆ£‰¿ˆ«‰¿ˆË‰¿ˆê‰¿ˆû‰¿‰‰¿‰‰¿‰‰¿‰‰¿‰(‰¿‰&‰¿‰'‰¿‰*‰¿‰#‰¿‰C‰¿‰E‰¿‰_‰¿‰d‰¿‰p‰¿‰z‰¿‰y‰¿‰~‰¿‰‰¿‰¼‰¿‰Ë‰¿‰Ï‰¿‰·‰¿‰ä‰¿‰³‰¿‰ã‰¿‰ú‰¿‰‰¿‰ ‰¿‰&‰¿‰‰¿‰8‰¿‰L‰¿‰O‰¿‰5‰¿‰=‰¿‰\‰¿‰l‰¿‰A‰¿‰y‰¿‰Ÿ‰¿‰Ž‰¿‰}‰¿‰¡‰¿‰š‰¿‰¥‰¿‰®‰¿‰ƒ‰¿‰Ç‰¿‰Ö‰¿‰Ô‰¿‰À‰¿‰Ò‰¿‰â‰¿‰ä‰¿‰Õ‰¿‰õ‰¿Š ‰¿Š ‰¿Š‰¿Š‰¿Š,‰¿Š#‰¿Š?‰¿Š>‰¿ŠL‰¿ŠJ‰¿Š7‰¿ŠA‰¿Šc‰¿Šm‰¿Ši‰¿Š1‰¿Šp‰¿Š‰‰¿Š€‰¿Šˆ‰¿Š³‰¿Š´‰¿Š‘‰¿ŠÅ‰¿Ší‰¿Šà‰¿Šò‰¿Šå‰¿Š÷‰¿Šö‰¿Šý‰¿Š‰¿Š"‰¿Š*‰¿Š7‰¿ŠB‰¿Š6‰¿Šf‰¿Šv‰¿Šz‰¿Š€‰¿Ša‰¿Š‰¿Šh‰¿Š™‰¿Š¨‰¿Š”‰¿Š²‰¿Š‰¿Š­‰¿Š¢‰¿ŠÖ‰¿ŠØ‰¿Š½‰¿ŠÞ‰¿Šò‰¿Šà‰¿‹‰¿‹‰¿‹‰¿‹‰¿‹4‰¿‹G‰¿‹9‰¿‹(‰¿‹<‰¿‹*‰¿‹N‰¿‹P‰¿‹a‰¿‹\‰¿‹X‰¿‹‰¿‹…‰¿‹µ‰¿‹Ã‰¿‹Ç‰¿‹³‰¿‹Õ‰¿‹î‰¿‹ø‰¿‹ ‰¿‹‰¿‹ï‰¿‹,‰¿‹0‰¿‹)‰¿‹5‰¿‹*‰¿‹3‰¿‹L‰¿‹A‰¿‹]‰¿‹_‰¿‹i‰¿‹v‰¿‹ˆ‰¿‹„‰¿‹†‰¿‹q‰¿‹“‰¿‹z‰¿‹¢‰¿‹ª‰¿‹«‰¿‹¬‰¿‹®‰¿‹Â‰¿‹É‰¿‹°‰¿‹¼‰¿‹á‰¿‹Ú‰¿‹é‰¿‹Õ‰¿‹ð‰¿Œ‰¿Œ‰¿Œ‰¿‹â‰¿Œ.‰¿Œ ‰¿Œ:‰¿Œ7‰¿ŒB‰¿Œf‰¿Œƒ‰¿Œ‘‰¿Œy‰¿Œ¦‰¿Œ©‰¿Œ€‰¿ŒÁ‰¿Œ¤‰¿Œ¾‰¿ŒÊ‰¿ŒÞ‰¿Œì‰¿Œ‰¿Œ ‰¿Œ‰¿Œí‰¿Œ‰¿Œ‰¿Œ"‰¿Œ+‰¿Œ ‰¿Œ>‰¿Œ/‰¿Œ:‰¿ŒL‰¿ŒI‰¿ŒW‰¿Œˆ‰¿Œ•‰¿Œ” 10 26* cm_allocate_element$buffered("" _info); 10 27* cm_put_element$buffered("" _info); 10 28* cm_put_datum_in_place$buffered("" _continued); 10 29* cm_put_datum_in_pool$buffered("" _continued); 10 30* cm_compact$buffered. 10 31*01/26/83 by Matthew Pierret: Replaced cm_get_header_and_slot with 10 32* cm_get_bci_header$slot and added cm_get_bci_header$slot_exclusive. 10 33* Added cm_opening_info$get_storage_record. 10 34* Added a bit(36)aligned argument to cm_recursive_put to hold the 10 35* id of the previous datum. 10 36*02/02/83 by Matthew Pierret: Added fixed bin (17) argument to cm_find_free_slot 10 37* which is for the number of slots after allocation. 10 38*02/07/83 by Matthew Pierret: Added cm_get_id$(id info info_return_slot 10 39* header header_return_slot). 10 40* Added cm_get_element_portion$(exclusive info info_exclusive). 10 41* Added cm_get_element$bypass_info. 10 42*03/25/83 by Matthew Pierret: Added cm_free_element$info and 10 43* cm_free_opening_info. 10 44*04/29/83 by Matthew Pierret: Added cm_put_element$unprotected_info 10 45*08/04/83 by Matthew Pierret: Added the entries $does_new_datum_fit and 10 46* $does_replacement_fit to cm_determine_free_space. These entries 10 47* return flags indicating if a datum fits in the ci and the pool. 10 48* Added a bit(1)aligned parameter to cm_find_free_slot in which is 10 49* returned the new value of bci_header.free_slot_is_present. 10 50*02/07/84 by Matthew Pierret: Added cm_get_id$ptr. Removed all cm_get_id 10 51* modules except cm_get_id$id. Removed all cm_get_element$info* 10 52* entries. Changed cm_get_element_$bypass_info to have the same 10 53* calling sequence as other cm_get_element entries. 10 54*06/12/84 by Matthew Pierret: Changed cm_put_element to cm_modify 10 55* and cm_allocate_element to cm_put. 10 56* Switched the element_length/element_ptr parameter pair to be 10 57* element_ptr/element_length in cm_modify and cm_put. 10 58*07/24/84 by Matthew Pierret: Added cm_free_ci$raw_return_prev_next. 10 59*09/24/84 by Matthew Pierret: Added trace_thread_modifications_(on off) 10 60* entries to cm_free_ci and cm_replace_buffered_ci, 10 61* cm_allocate_ci$info_header, cm_opening_info$opening_table_ptr. 10 62* Removed cm_find_free_space. Commented out un-used entries. 10 63* Re-named allocate entries to put entries, except for allocate_ci. 10 64* Re-named free element and free datum entries to use delete instead 10 65* of free, and cm_recursive_put to cm_recursive_modify. 10 66* Removed cm_get_element$bypass_info. 10 67*02/27/85 by Matthew C. Pierret: Re-added cm_compact$buffered_replacement now 10 68* that cm_modify$buffered uses it. 10 69*03/07/85 by R. Michael Tague: Added cm_postcommit_increment. 10 70**/ 10 71 10 72 /* format: style2,ind3 */ 10 73 10 74 10 75 dcl cm_allocate_ci entry (bit (36) aligned, bit (36) aligned, fixed bin (24) unsigned, fixed bin (35)); 10 76 dcl cm_allocate_ci$info entry (ptr, fixed bin (24) unsigned, fixed bin (35)); 10 77 dcl cm_allocate_ci$info_header 10 78 entry (ptr, fixed bin (24) unsigned, ptr, fixed bin (35)); 10 79 10 80 10 81 dcl cm_compact entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 10 82 dcl cm_compact$buffered entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 10 83 dcl cm_compact$replacement entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 10 84 dcl cm_compact$buffered_replacement 10 85 entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 10 86 10 87 dcl cm_delete_cn_datum entry (ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 10 88 10 89 dcl cm_delete_cn_datum$header 10 90 entry (ptr, ptr, ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 10 91 10 92 dcl cm_delete entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, bit (1) aligned, 10 93 fixed bin (35)); 10 94 dcl cm_delete$info entry (ptr, bit (36) aligned, bit (1) aligned, fixed bin (35)); 10 95 10 96 dcl cm_determine_free_space$all 10 97 entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35)); 10 98 dcl cm_determine_free_space$effective 10 99 entry (ptr, fixed bin (35), bit (1) aligned, bit (1) aligned, fixed bin (35), 10 100 fixed bin (35)); 10 101 dcl cm_determine_free_space$does_new_datum_fit 10 102 entry (ptr, fixed bin (35), fixed bin (35), bit (1) aligned, bit (1) aligned, 10 103 bit (1) aligned, bit (1) aligned, fixed bin (35)); 10 104 10 105 /**** Not yet used ********************************************************* 10 106* dcl cm_determine_free_space$does_replacement_fit 10 107* entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35), bit (1) aligned, 10 108* bit (1) aligned, bit (1) aligned, bit (1) aligned, fixed bin (35)); 10 109*************************************************************************** */ 10 110 10 111 dcl cm_find_ci_to_alloc_datum 10 112 entry (ptr, fixed bin (35), fixed bin (24) uns, bit (1) aligned, bit (1) aligned, ptr, 10 113 fixed bin (24) uns, fixed bin (35)); 10 114 10 115 dcl cm_find_free_slot entry (bit (36) aligned, fixed bin (24) uns, ptr, fixed bin (17), fixed bin (17), 10 116 bit (1) aligned, fixed bin (35)); 10 117 10 118 dcl cm_free_ci$info entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (35)); 10 119 dcl cm_free_ci$raw_return_prev_next 10 120 entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (24) uns, 10 121 fixed bin (24) uns, fixed bin (35)); 10 122 dcl cm_free_ci$trace_thread_modifications_on 10 123 entry (); 10 124 dcl cm_free_ci$trace_thread_modifications_off 10 125 entry (); 10 126 10 127 10 128 dcl cm_free_opening_info entry (bit (36) aligned, bit (36) aligned, fixed bin (35)); 10 129 10 130 dcl cm_get_bci_header entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 10 131 dcl cm_get_bci_header$exclusive 10 132 entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 10 133 dcl cm_get_bci_header$slot entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 10 134 10 135 /**** Not yet used ******************************************************** 10 136* dcl cm_get_bci_header$slot_exclusive 10 137* entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 10 138*************************************************************************** */ 10 139 10 140 dcl cm_get_element entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 10 141 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 10 142 dcl cm_get_element$exclusive 10 143 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, ptr, 10 144 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 10 145 10 146 dcl cm_get_element_portion entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 10 147 fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 10 148 fixed bin (35), fixed bin (35)); 10 149 10 150 /**** Not yet used ******************************************************** 10 151* dcl cm_get_element_portion$exclusive 10 152* entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 10 153* fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 10 154* fixed bin (35), fixed bin (35)); 10 155*************************************************************************** */ 10 156 10 157 dcl cm_get_id$id entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 10 158 bit (1) aligned, bit (36) aligned, fixed bin (35)); 10 159 dcl cm_get_id$ptr entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 10 160 bit (1) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 10 161 10 162 dcl cm_modify entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 10 163 fixed bin (35), fixed bin (35)); 10 164 dcl cm_modify$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 10 165 fixed bin (35), fixed bin (35)); 10 166 10 167 /******* Not yet used ***************************************************** 10 168* dcl cm_modify$buffered_info 10 169* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 10 170* fixed bin (35)); 10 171*****************************************************************************/ 10 172 10 173 dcl cm_modify$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 10 174 dcl cm_modify$unprotected_info 10 175 entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 10 176 10 177 10 178 /******* Not yet used ***************************************************** 10 179* dcl cm_modify_portion entry (bit (36) aligned, bit (36) aligned, fixed bin (35), fixed bin (35), 10 180* fixed bin (35), ptr, bit (36) aligned, fixed bin (35), fixed bin (35)); 10 181*****************************************************************************/ 10 182 10 183 10 184 dcl cm_opening_info$get entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 10 185 dcl cm_opening_info$get_storage_record 10 186 entry (ptr, fixed bin (35)); 10 187 dcl cm_opening_info$full_get 10 188 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 10 189 dcl cm_opening_info$opening_table_ptr 10 190 entry () returns (ptr); 10 191 10 192 dcl cm_postcommit_increment 10 193 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 10 194 10 195 dcl cm_put entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 10 196 fixed bin (35), fixed bin (35)); 10 197 dcl cm_put$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 10 198 fixed bin (35), fixed bin (35)); 10 199 10 200 /******* Not yet used ***************************************************** 10 201* dcl cm_put$buffered_info 10 202* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 10 203* fixed bin (35)); 10 204*****************************************************************************/ 10 205 10 206 dcl cm_put$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 10 207 10 208 dcl cm_put_basic_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 10 209 fixed bin (35)); 10 210 10 211 dcl cm_put_cn_datum entry (ptr, ptr, fixed bin (35), bit (36) aligned, bit (36) aligned, fixed bin (35)); 10 212 10 213 dcl cm_put_datum_in_place entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 10 214 fixed bin (35)); 10 215 dcl cm_put_datum_in_place$buffered 10 216 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 10 217 dcl cm_put_datum_in_place$buffered_continued 10 218 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 10 219 fixed bin (35)); 10 220 dcl cm_put_datum_in_place$continued 10 221 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 10 222 fixed bin (35), bit (36) aligned, fixed bin (35)); 10 223 10 224 dcl cm_put_datum_in_pool entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 10 225 fixed bin (35)); 10 226 dcl cm_put_datum_in_pool$buffered 10 227 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 10 228 dcl cm_put_datum_in_pool$buffered_continued 10 229 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 10 230 fixed bin (35)); 10 231 dcl cm_put_datum_in_pool$continued 10 232 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 10 233 fixed bin (35), bit (36) aligned, fixed bin (35)); 10 234 10 235 dcl cm_put_ordered_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 10 236 fixed bin (35)); 10 237 dcl cm_put_ordered_element$buffered 10 238 entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 10 239 fixed bin (35)); 10 240 10 241 dcl cm_put_overlength_tail entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35)); 10 242 10 243 dcl cm_recursive_modify entry (ptr, bit (36) aligned, ptr, fixed bin (35), fixed bin (35), bit (36) aligned, 10 244 fixed bin (35)); 10 245 10 246 10 247 dcl cm_replace_buffered_ci$trace_thread_modifications_on 10 248 entry (); 10 249 dcl cm_replace_buffered_ci$trace_thread_modifications_off 10 250 entry (); 10 251 10 252 /* END INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 737 738 11 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 11 2 /* format: style3 */ 11 3 11 4 /* These constants are to be used for the flags argument of sub_err_ */ 11 5 /* They are just "string (condition_info_header.action_flags)" */ 11 6 11 7 declare ( 11 8 ACTION_CAN_RESTART init (""b), 11 9 ACTION_CANT_RESTART init ("1"b), 11 10 ACTION_DEFAULT_RESTART 11 11 init ("01"b), 11 12 ACTION_QUIET_RESTART 11 13 init ("001"b), 11 14 ACTION_SUPPORT_SIGNAL 11 15 init ("0001"b) 11 16 ) bit (36) aligned internal static options (constant); 11 17 11 18 /* End include file */ 739 740 741 end cm_modify; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0824.1 cm_modify.pl1 >spec>on>7192.pbf-04/04/85>cm_modify.pl1 719 1 01/07/85 0858.4 dm_cm_info.incl.pl1 >ldd>include>dm_cm_info.incl.pl1 721 2 01/07/85 0858.2 dm_cm_collection_header.incl.pl1 >ldd>include>dm_cm_collection_header.incl.pl1 723 3 01/07/85 0858.0 dm_cm_basic_ci.incl.pl1 >ldd>include>dm_cm_basic_ci.incl.pl1 725 4 01/07/85 0858.1 dm_cm_basic_ci_const.incl.pl1 >ldd>include>dm_cm_basic_ci_const.incl.pl1 727 5 01/07/85 0901.2 dm_cm_datum.incl.pl1 >ldd>include>dm_cm_datum.incl.pl1 729 6 01/07/85 0858.2 dm_cm_datum_constants.incl.pl1 >ldd>include>dm_cm_datum_constants.incl.pl1 731 7 01/07/85 0900.8 dm_ci_parts.incl.pl1 >ldd>include>dm_ci_parts.incl.pl1 733 8 01/07/85 0858.5 dm_element_id.incl.pl1 >ldd>include>dm_element_id.incl.pl1 735 9 01/07/85 0858.5 dm_esm_info.incl.pl1 >ldd>include>dm_esm_info.incl.pl1 737 10 04/04/85 0819.0 dm_cm_entry_dcls.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_cm_entry_dcls.incl.pl1 739 11 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 000036 constant bit(36) initial dcl 11-7 set ref 558* 571* BASIC_CI_LAYOUT_1 000000 constant char(4) initial dcl 3-97 set ref 571 571* BITS_PER_BYTE 000006 constant fixed bin(17,0) initial dcl 208 ref 389 389 439 439 472 496 583 624 624 CD_DATUM_HEADER_LENGTH_IN_BYTES constant fixed bin(17,0) initial dcl 6-27 ref 436 488 687 CM_INFO_VERSION_2 000004 constant char(8) initial dcl 1-48 set ref 315* COLLECTION_HEADER_VERSION_2 000002 constant char(8) initial dcl 2-86 set ref 318* END_OF_ELEMENT 002360 constant fixed bin(17,0) initial dcl 209 ref 347 MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS constant fixed bin(35,0) initial dcl 6-51 ref 415 ORDERED_ELEMENT_STORAGE_METHOD constant fixed bin(17,0) initial dcl 9-46 ref 325 addcharno builtin function dcl 201 ref 710 addr builtin function dcl 201 ref 240 241 261 262 282 283 310 311 329 341 363 628 628 631 631 649 687 687 automatic_bci_header 000100 automatic structure level 1 dcl 186 set ref 238* 240 259* 261 280* 282 308* 310 automatic_datum_slot 000105 automatic structure level 1 dcl 187 set ref 239* 241 260* 262 281* 283 309* 311 basic_control_interval based structure level 1 dcl 3-56 bci_header based structure level 1 dcl 3-63 bci_header_ptr 000130 automatic pointer dcl 3-94 set ref 240* 249* 250 261* 282* 310* 329* 331* 332 337* 383* 398 448* 452* 456* 459* 500* 500 503 503* 516* 519* 528* 532* ci_parts based structure level 1 dcl 7-27 ci_parts_ptr 000142 automatic pointer initial dcl 7-35 set ref 7-35* cip_number_of_parts 000144 automatic fixed bin(17,0) initial dcl 7-36 set ref 7-36* cm_compact$buffered_replacement 000036 constant entry external dcl 10-84 ref 500 cm_compact$replacement 000034 constant entry external dcl 10-83 ref 503 cm_determine_free_space$all 000040 constant entry external dcl 10-96 ref 383 cm_get_bci_header$slot 000042 constant entry external dcl 10-133 ref 664 cm_info based structure level 1 dcl 1-37 cm_info_ptr 000124 automatic pointer initial dcl 1-47 set ref 268* 284* 312* 315 317 331 332 341 363 408* 425* 456 459 482* 503 519 532 1-47* cm_opening_info$get 000044 constant entry external dcl 10-184 ref 268 cm_put_cn_datum 000046 constant entry external dcl 10-211 ref 482 cm_put_datum_in_place 000050 constant entry external dcl 10-213 ref 456 cm_put_datum_in_place$buffered 000052 constant entry external dcl 10-215 ref 448 cm_put_datum_in_place$buffered_continued 000054 constant entry external dcl 10-217 ref 452 cm_put_datum_in_place$continued 000056 constant entry external dcl 10-220 ref 459 cm_put_datum_in_pool 000060 constant entry external dcl 10-224 ref 519 cm_put_datum_in_pool$buffered 000062 constant entry external dcl 10-226 ref 516 cm_put_datum_in_pool$buffered_continued 000064 constant entry external dcl 10-228 ref 528 cm_put_datum_in_pool$continued 000066 constant entry external dcl 10-231 ref 532 cm_put_overlength_tail 000070 constant entry external dcl 10-241 ref 425 cm_recursive_modify 000072 constant entry external dcl 10-243 ref 408 code 000116 automatic fixed bin(35,0) initial dcl 189 set ref 189* 266* 268* 269 269* 320* 408* 410 410* 425* 427 427* 448* 452* 456* 459* 482* 484 484* 500* 503* 505 505* 516* 519* 528* 532* 540 540* collection_header based structure level 1 dcl 2-65 collection_header_ptr 000126 automatic pointer dcl 2-85 set ref 317* 318 325 collection_id 1 based bit(36) level 2 in structure "bci_header" dcl 3-63 in procedure "cm_modify" ref 332 collection_id 4 based bit(36) initial level 2 in structure "cm_info" dcl 1-37 in procedure "cm_modify" ref 332 continuation 1 000260 automatic structure level 2 in structure "gdf_continued_datum_header" dcl 684 in procedure "GET_DATUM_HEADER_VALUES_FROM_FILE" set ref 693 continuation 1 based structure level 3 in structure "continued_datum" packed unaligned dcl 5-50 in procedure "cm_modify" ref 713 continuation_datum_id 000106 automatic bit(36) initial dcl 188 set ref 188* 337* 341* 408* 425* 436 448 452* 456 459* 482 482* 510 528* 532* continued_datum based structure level 1 packed unaligned dcl 5-50 control_interval_id based fixed bin(24,0) level 2 packed unsigned unaligned dcl 8-32 ref 341 363 current_element_length_in_bits 000107 automatic fixed bin(35,0) initial dcl 189 set ref 189* 337* 341* 343* 349 354 367 datum_contents_length_in_bits 000140 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 000136 automatic pointer initial dcl 5-68 set ref 5-68* datum_position_table 5 based structure array level 2 dcl 3-56 set ref 649 datum_ptr 000134 automatic pointer initial dcl 5-67 set ref 5-67* datum_slot based structure level 1 dcl 3-82 datum_slot_ptr 000132 automatic pointer dcl 3-95 set ref 241* 262* 283* 311* 329* 331* 337 337 341 343 354 363 367 389 398 401 448* 452* 456* 459* 507 514 516* 519* 526 528* 532* divide builtin function dcl 201 ref 389 439 624 dm_error_$bad_element_length 000020 external static fixed bin(35,0) dcl 223 set ref 351* 367* dm_error_$ci_not_in_collection 000022 external static fixed bin(35,0) dcl 223 set ref 332* dm_error_$long_element 000024 external static fixed bin(35,0) dcl 223 set ref 479* 583 dm_error_$no_element 000026 external static fixed bin(35,0) dcl 223 set ref 647* dm_error_$unimplemented_ci_version 000030 external static fixed bin(35,0) dcl 223 set ref 571* element_id based structure level 1 dcl 8-32 element_id_string 000145 automatic bit(36) dcl 8-30 set ref 323* 329 331* 341 363 408* 456* 459* 500* 503* 519* 532* element_length_in_bits 000110 automatic fixed bin(35,0) initial dcl 189 set ref 189* 347* 349* 351 354 363* 367 378 452* 459* 528* 532* element_length_in_bytes 000117 automatic fixed bin(17,0) initial dcl 192 set ref 192* element_storage_method 3 based fixed bin(17,0) level 2 dcl 2-65 ref 325 er_p_code parameter fixed bin(35,0) dcl 594 ref 591 596 error_table_$unimplemented_version 000032 external static fixed bin(35,0) dcl 223 set ref 558* file_manager_$put 000010 constant entry external dcl 214 ref 631 file_manager_$raw_put 000012 constant entry external dcl 215 ref 628 file_manager_$simple_get 000014 constant entry external dcl 216 ref 687 file_oid 3 based bit(36) initial level 2 dcl 1-37 set ref 331* 341* 363* 456* 459* 503* 519* 532* flags based structure level 2 packed unaligned dcl 3-82 full_length based fixed bin(35,0) level 3 in structure "continued_datum" packed unaligned dcl 5-50 in procedure "cm_modify" ref 712 full_length 000260 automatic fixed bin(35,0) level 2 in structure "gdf_continued_datum_header" dcl 684 in procedure "GET_DATUM_HEADER_VALUES_FROM_FILE" set ref 692 gdb_datum_ptr 000270 automatic pointer dcl 708 set ref 710* 712 713 gdb_p_ci_ptr parameter pointer dcl 702 ref 699 710 gdb_p_continuation_datum_id parameter bit(36) dcl 705 set ref 699 713* gdb_p_datum_offset parameter fixed bin(15,0) unsigned unaligned dcl 703 ref 699 710 gdb_p_full_length parameter fixed bin(35,0) dcl 704 set ref 699 712* gdf_code 000256 automatic fixed bin(35,0) initial dcl 683 set ref 683* 687* 689 689* gdf_continued_datum_header 000260 automatic structure level 1 dcl 684 set ref 687 687 gdf_p_ci_number parameter fixed bin(27,0) dcl 677 set ref 673 687* gdf_p_continuation_datum_id parameter bit(36) dcl 680 set ref 673 693* gdf_p_datum_offset parameter fixed bin(21,0) dcl 678 set ref 673 687* gdf_p_file_oid parameter bit(36) dcl 676 set ref 673 687* gdf_p_full_length parameter fixed bin(35,0) dcl 679 set ref 673 692* ghs_code 000246 automatic fixed bin(35,0) initial dcl 662 set ref 662* 664* 665 665* ghs_p_bci_header_ptr parameter pointer dcl 659 set ref 654 664* 667 ghs_p_element_id parameter bit(36) dcl 658 set ref 654 664* ghs_p_file_oid parameter bit(36) dcl 657 set ref 654 664* ghs_p_slot_ptr parameter pointer dcl 660 set ref 654 664* gs_p_bci_ptr parameter pointer dcl 644 ref 640 647 649 gs_p_slot_index parameter fixed bin(12,0) unsigned unaligned dcl 643 ref 640 647 647 649 gs_p_slot_ptr parameter pointer dcl 645 set ref 640 649* header based structure level 2 in structure "basic_control_interval" dcl 3-56 in procedure "cm_modify" header based structure level 2 in structure "continued_datum" packed unaligned dcl 5-50 in procedure "cm_modify" header_ptr 6 based pointer initial level 2 dcl 1-37 ref 317 header_space_required 000111 automatic fixed bin(35,0) initial dcl 189 set ref 189* 436* 441 472 488* 496 583 index 0(24) based fixed bin(12,0) level 2 packed unsigned unaligned dcl 8-32 set ref 329* is_buffered 000122 automatic bit(1) initial dcl 195 set ref 195* 237* 248* 258* 279* 307* 329 337 354 448 500 516 528 is_continued 0(01) based bit(1) level 3 packed unaligned dcl 3-82 set ref 337 354 367 401 514* 526* is_unprotected 000123 automatic bit(1) initial dcl 195 set ref 195* 236* 257* 278* 306* 363* 367 layout_type based char(4) level 2 dcl 3-63 set ref 250 667* length_in_bits 0(19) based fixed bin(17,0) level 2 packed unsigned unaligned dcl 3-82 ref 343 389 length_in_bytes 3 000224 automatic fixed bin(17,0) array level 3 dcl 619 set ref 624* local_ptr 4 000224 automatic pointer array level 3 dcl 619 set ref 626* myname 000006 constant varying char(32) initial dcl 207 set ref 558* 571* null builtin function dcl 201 ref 1-47 5-67 5-68 7-35 558 558 571 571 number_of_datums 4(18) based fixed bin(17,0) level 2 in structure "bci_header" packed unaligned dcl 3-63 in procedure "cm_modify" ref 500 503 number_of_datums 4(18) based fixed bin(17,0) level 3 in structure "basic_control_interval" packed unaligned dcl 3-56 in procedure "cm_modify" ref 647 number_of_parts 000224 automatic fixed bin(17,0) initial level 2 dcl 619 set ref 619* offset_in_bytes 0(04) based fixed bin(15,0) level 2 in structure "datum_slot" packed unsigned unaligned dcl 3-82 in procedure "cm_modify" set ref 337* 341 363 398 507* offset_in_bytes 2 000224 automatic fixed bin(17,0) array level 3 in structure "srdc_ci_part" dcl 619 in procedure "SIMPLE_REPLACE_DATUM_CONTENTS" set ref 623* old_datum_length_in_bytes 000112 automatic fixed bin(35,0) initial dcl 189 set ref 189* 389* 391 398 441 p_ci_buffer_ptr parameter pointer dcl 173 ref 244 249 p_cm_info_ptr parameter pointer dcl 174 ref 275 284 303 312 p_code parameter fixed bin(35,0) dcl 182 set ref 165 244 253 275 303 320* 583 583 596* p_collection_id parameter bit(36) dcl 176 set ref 165 244 253 268* p_element_id parameter bit(36) dcl 179 ref 165 244 253 275 303 323 p_element_length parameter fixed bin(35,0) dcl 177 ref 165 244 253 275 303 347 347 p_element_ptr parameter pointer dcl 178 set ref 165 244 253 275 303 363* 408* 425* 448* 452* 456* 459* 482* 516* 519* 528* 532* p_expected_version parameter char(8) dcl 555 set ref 552 558 558* p_file_opening_id parameter bit(36) dcl 175 set ref 165 244 253 268* p_given_version parameter char(4) dcl 569 set ref 566 571 571* p_maximum_space_available parameter fixed bin(35,0) dcl 180 set ref 165 244 253 275 303 321* 583* p_received_version parameter char(8) dcl 554 set ref 552 558 558* p_structure_name parameter char unaligned dcl 556 set ref 552 558* part 2 based structure array level 2 in structure "ci_parts" dcl 7-27 in procedure "cm_modify" part 2 000224 automatic structure array level 2 in structure "srdc_ci_part" dcl 619 in procedure "SIMPLE_REPLACE_DATUM_CONTENTS" pool_free_bytes 000113 automatic fixed bin(35,0) initial dcl 189 set ref 189* 383* 398* 398 496 remaining_length_in_bits 000114 automatic fixed bin(35,0) initial dcl 189 set ref 189* 378* 408* 415 425* 439 448* 452* 456* 459* 472 482* 487* 496 516* 519* 528* 532* 583 remaining_length_in_bytes 000120 automatic fixed bin(17,0) initial dcl 192 set ref 192* 439* 441 srdc_ci_part 000224 automatic structure level 1 dcl 619 set ref 628 628 631 631 srdc_code 000222 automatic fixed bin(35,0) initial dcl 618 set ref 618* 628* 631* 633 633* srdc_p_control_interval_id parameter fixed bin(27,0) dcl 606 set ref 602 628* 631* srdc_p_datum_contents_length parameter fixed bin(35,0) dcl 606 ref 602 624 srdc_p_datum_contents_offset parameter fixed bin(17,0) dcl 606 ref 602 623 srdc_p_datum_contents_ptr parameter pointer dcl 606 ref 602 626 srdc_p_file_opening_id parameter bit(36) dcl 606 set ref 602 628* 631* srdc_p_is_unprotected parameter bit(1) dcl 606 ref 602 628 start_of_used_space 4 based fixed bin(17,0) level 2 packed unaligned dcl 3-63 ref 398 sub_err_ 000016 constant entry external dcl 219 ref 558 571 total_free_bytes 000115 automatic fixed bin(35,0) initial dcl 189 set ref 189* 383* 391* 391 408* 472 583 unspec builtin function dcl 201 set ref 238* 239* 259* 260* 280* 281* 308* 309* 693 713 using_ordered_esm 000121 automatic bit(1) initial dcl 195 set ref 195* 325* 327* 479 version based char(8) level 2 in structure "cm_info" dcl 1-37 in procedure "cm_modify" set ref 315* version based char(8) level 2 in structure "collection_header" dcl 2-65 in procedure "cm_modify" set ref 318* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 11-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 11-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 11-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 11-7 BASIC_ELEMENT_STORAGE_METHOD internal static fixed bin(17,0) initial dcl 9-44 BCI_HEADER_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 4-14 CDCN_DATUM_HEADER_LENGTH_IN_BITS internal static fixed bin(17,0) initial dcl 6-39 CDCN_DATUM_HEADER_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 6-35 CD_DATUM_HEADER_LENGTH_IN_BITS internal static fixed bin(17,0) initial dcl 6-31 DATUM_POSITION_TABLE_OFFSET_IN_BYTES internal static fixed bin(17,0) initial dcl 4-16 ESM_INFO_VERSION_1 internal static char(8) initial dcl 9-43 FREE_SLOT internal static fixed bin(15,0) initial unsigned dcl 4-13 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 basic_control_interval_ptr automatic pointer dcl 3-92 basic_esm_info based structure level 1 dcl 9-21 basic_esm_info_ptr automatic pointer dcl 9-40 cm_allocate_ci 000000 constant entry external dcl 10-75 cm_allocate_ci$info 000000 constant entry external dcl 10-76 cm_allocate_ci$info_header 000000 constant entry external dcl 10-77 cm_compact 000000 constant entry external dcl 10-81 cm_compact$buffered 000000 constant entry external dcl 10-82 cm_delete 000000 constant entry external dcl 10-92 cm_delete$info 000000 constant entry external dcl 10-94 cm_delete_cn_datum 000000 constant entry external dcl 10-87 cm_delete_cn_datum$header 000000 constant entry external dcl 10-89 cm_determine_free_space$does_new_datum_fit 000000 constant entry external dcl 10-101 cm_determine_free_space$effective 000000 constant entry external dcl 10-98 cm_find_ci_to_alloc_datum 000000 constant entry external dcl 10-111 cm_find_free_slot 000000 constant entry external dcl 10-115 cm_free_ci$info 000000 constant entry external dcl 10-118 cm_free_ci$raw_return_prev_next 000000 constant entry external dcl 10-119 cm_free_ci$trace_thread_modifications_off 000000 constant entry external dcl 10-124 cm_free_ci$trace_thread_modifications_on 000000 constant entry external dcl 10-122 cm_free_opening_info 000000 constant entry external dcl 10-128 cm_get_bci_header 000000 constant entry external dcl 10-130 cm_get_bci_header$exclusive 000000 constant entry external dcl 10-131 cm_get_element 000000 constant entry external dcl 10-140 cm_get_element$exclusive 000000 constant entry external dcl 10-142 cm_get_element_portion 000000 constant entry external dcl 10-146 cm_get_id$id 000000 constant entry external dcl 10-157 cm_get_id$ptr 000000 constant entry external dcl 10-159 cm_modify 000000 constant entry external dcl 10-162 cm_modify$buffered 000000 constant entry external dcl 10-164 cm_modify$info 000000 constant entry external dcl 10-173 cm_modify$unprotected_info 000000 constant entry external dcl 10-174 cm_opening_info$full_get 000000 constant entry external dcl 10-187 cm_opening_info$get_storage_record 000000 constant entry external dcl 10-185 cm_opening_info$opening_table_ptr 000000 constant entry external dcl 10-189 cm_postcommit_increment 000000 constant entry external dcl 10-192 cm_put 000000 constant entry external dcl 10-195 cm_put$buffered 000000 constant entry external dcl 10-197 cm_put$info 000000 constant entry external dcl 10-206 cm_put_basic_element 000000 constant entry external dcl 10-208 cm_put_ordered_element 000000 constant entry external dcl 10-235 cm_put_ordered_element$buffered 000000 constant entry external dcl 10-237 cm_replace_buffered_ci$trace_thread_modifications_off 000000 constant entry external dcl 10-249 cm_replace_buffered_ci$trace_thread_modifications_on 000000 constant entry external dcl 10-247 continuation_datum based structure level 1 packed unaligned dcl 5-47 continued_continuation_datum based structure level 1 packed unaligned dcl 5-56 datum based structure level 1 packed unaligned dcl 5-44 file_manager_$get 000000 constant entry external dcl 213 ordered_esm_info based structure level 1 dcl 9-31 ordered_esm_info_ptr automatic pointer dcl 9-41 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_CI_VERSION 001732 constant entry internal dcl 566 ref 250 667 CHECK_VERSION 001630 constant entry internal dcl 552 ref 315 318 ERROR_RETURN 002037 constant entry internal dcl 591 ref 269 332 351 367 410 427 479 484 505 540 633 647 665 689 FINISH 002013 constant entry internal dcl 579 ref 547 597 GENERAL_REPLACE 001002 constant label dcl 371 GENERAL_REPLACE_UNPROTECTED 000772 constant label dcl 367 GET_DATUM_HEADER_VALUES_FROM_BUFFER 002303 constant entry internal dcl 699 ref 337 GET_DATUM_HEADER_VALUES_FROM_FILE 002240 constant entry internal dcl 673 ref 341 GET_HEADER_AND_SLOT_FROM_FILE 002177 constant entry internal dcl 654 ref 331 GET_SLOT_FROM_BUFFER 002141 constant entry internal dcl 640 ref 329 JOIN 000462 constant label dcl 315 ref 272 285 313 NO_INFO_JOIN 000326 constant label dcl 266 ref 242 251 263 PUT_IN_PLACE 001156 constant label dcl 441 PUT_IN_POOL 001306 constant label dcl 464 RETURN 001627 constant label dcl 548 set ref 598 SIMPLE_REPLACE 000731 constant label dcl 354 SIMPLE_REPLACE_DATUM_CONTENTS 002045 constant entry internal dcl 602 ref 363 buffered 000223 constant entry external dcl 244 cm_modify 000154 constant entry external dcl 165 info 000357 constant entry external dcl 275 unprotected 000265 constant entry external dcl 253 unprotected_info 000421 constant entry external dcl 303 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2742 3036 2361 2752 Length 3516 2361 74 443 360 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cm_modify 404 external procedure is an external procedure. CHECK_VERSION internal procedure shares stack frame of external procedure cm_modify. CHECK_CI_VERSION internal procedure shares stack frame of external procedure cm_modify. FINISH internal procedure shares stack frame of external procedure cm_modify. ERROR_RETURN internal procedure shares stack frame of external procedure cm_modify. SIMPLE_REPLACE_DATUM_CONTENTS internal procedure shares stack frame of external procedure cm_modify. GET_SLOT_FROM_BUFFER internal procedure shares stack frame of external procedure cm_modify. GET_HEADER_AND_SLOT_FROM_FILE internal procedure shares stack frame of external procedure cm_modify. GET_DATUM_HEADER_VALUES_FROM_FILE internal procedure shares stack frame of external procedure cm_modify. GET_DATUM_HEADER_VALUES_FROM_BUFFER internal procedure shares stack frame of external procedure cm_modify. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cm_modify 000100 automatic_bci_header cm_modify 000105 automatic_datum_slot cm_modify 000106 continuation_datum_id cm_modify 000107 current_element_length_in_bits cm_modify 000110 element_length_in_bits cm_modify 000111 header_space_required cm_modify 000112 old_datum_length_in_bytes cm_modify 000113 pool_free_bytes cm_modify 000114 remaining_length_in_bits cm_modify 000115 total_free_bytes cm_modify 000116 code cm_modify 000117 element_length_in_bytes cm_modify 000120 remaining_length_in_bytes cm_modify 000121 using_ordered_esm cm_modify 000122 is_buffered cm_modify 000123 is_unprotected cm_modify 000124 cm_info_ptr cm_modify 000126 collection_header_ptr cm_modify 000130 bci_header_ptr cm_modify 000132 datum_slot_ptr cm_modify 000134 datum_ptr cm_modify 000136 datum_id_ptr cm_modify 000140 datum_contents_length_in_bits cm_modify 000142 ci_parts_ptr cm_modify 000144 cip_number_of_parts cm_modify 000145 element_id_string cm_modify 000222 srdc_code SIMPLE_REPLACE_DATUM_CONTENTS 000224 srdc_ci_part SIMPLE_REPLACE_DATUM_CONTENTS 000246 ghs_code GET_HEADER_AND_SLOT_FROM_FILE 000256 gdf_code GET_DATUM_HEADER_VALUES_FROM_FILE 000260 gdf_continued_datum_header GET_DATUM_HEADER_VALUES_FROM_FILE 000270 gdb_datum_ptr GET_DATUM_HEADER_VALUES_FROM_BUFFER THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return mpfx2 ext_entry divide_fx3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cm_compact$buffered_replacement cm_compact$replacement cm_determine_free_space$all cm_get_bci_header$slot cm_opening_info$get cm_put_cn_datum cm_put_datum_in_place cm_put_datum_in_place$buffered cm_put_datum_in_place$buffered_continued cm_put_datum_in_place$continued cm_put_datum_in_pool cm_put_datum_in_pool$buffered cm_put_datum_in_pool$buffered_continued cm_put_datum_in_pool$continued cm_put_overlength_tail cm_recursive_modify file_manager_$put file_manager_$raw_put file_manager_$simple_get sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$bad_element_length dm_error_$ci_not_in_collection dm_error_$long_element 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 188 000115 189 000116 192 000126 195 000130 1 47 000133 5 67 000135 5 68 000136 5 69 000137 7 35 000141 7 36 000143 165 000146 236 000201 237 000202 238 000203 239 000206 240 000207 241 000211 242 000213 244 000214 248 000250 249 000252 250 000256 251 000262 253 000263 257 000312 258 000314 259 000315 260 000320 261 000321 262 000323 263 000325 266 000326 268 000327 269 000344 272 000350 275 000351 278 000400 279 000401 280 000402 281 000405 282 000406 283 000410 284 000412 285 000416 303 000417 306 000442 307 000444 308 000445 309 000450 310 000451 311 000453 312 000455 313 000461 315 000462 317 000503 318 000506 320 000533 321 000535 323 000537 325 000541 327 000550 329 000551 331 000570 332 000605 337 000621 341 000645 343 000674 347 000677 349 000704 351 000706 354 000717 363 000731 366 000761 367 000762 378 001002 383 001004 389 001022 391 001027 398 001033 401 001050 408 001053 410 001076 415 001102 425 001105 427 001124 436 001130 439 001134 441 001146 448 001156 452 001202 456 001226 459 001255 463 001305 472 001306 479 001324 482 001335 484 001360 487 001364 488 001365 496 001367 500 001405 503 001432 505 001457 507 001463 510 001467 514 001471 516 001473 519 001515 522 001541 526 001542 528 001544 532 001572 540 001622 547 001626 548 001627 552 001630 558 001641 563 001731 566 001732 571 001734 575 002012 579 002013 583 002014 587 002036 591 002037 596 002041 597 002043 598 002044 602 002045 618 002047 619 002050 623 002052 624 002054 626 002066 628 002072 631 002115 633 002134 636 002140 640 002141 647 002143 649 002173 651 002176 654 002177 662 002201 664 002202 665 002222 667 002227 669 002237 673 002240 683 002242 687 002243 689 002271 692 002275 693 002300 695 002‰¿‘À‰¿‘lj¿‘щ¿‘̉¿‘݉¿‘ñ ----------------------------------------------------------- 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