COMPILATION LISTING OF SEGMENT cm_postcommit_increment Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 04/02/87 1310.7 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* This routine increments each word of a contiguous string of words by 10* the respective values in a caller-supplied array of words. Given the 11* identifier of an element (p_element_id) in which the words to be 12* incremented reside, and the bit-offset from the beginning of the element 13* to the beginning of the string of words, this routine calls 14* file_manager_$postcommit_increment to do the actual increment. If the 15* element is a multi-datum element, a separate call for each datum is made. 16* 17* The reason for this special entry to increment words instead of having 18* the caller increment the words and call collection_manager_$modify with 19* the updated element is because it is intended that the words not be 20* updated until the current transaction commits. Currently 21* the only user of this routine is index_manager_ for updating its 22* key_count_array. 23* 24* This routine implements the entry 25* collection_manager_$postcommit_increment. 26**/ 27 28 /* HISTORY: 29* 30*Written by Matthew C. Pierret, 02/15/85. 31*Modified: 32*03/06/85 by R. Michael Tague: Finished implementation. 33*04/22/85 by R. Michael Tauge: Converted one ERROR_RETURN to use ERROR_SIGNAL, 34* Removed es_arg_count and es_code dcl, declared addbitno, divide, 35* and unspec builtins, made version check for CI use CHECK_VERSION 36* instead of a special CHECK_CI_VERSION, and changed ERROR_SIGNAL to 37* use a different mechanism of constructing error strings. 38**/ 39 40 /****^ HISTORY COMMENTS: 41* 1) change(86-02-27,Pierret), approve(86-02-27,MCR7340), 42* audit(86-04-28,Newcomb), install(86-05-06,MR12.0-1054): 43* Converted one ERROR_RETURN to use ERROR_SIGNAL, 44* Removed es_arg_count and es_code dcl, declared addbitno, divide, 45* and unspec builtins, made version check for CI use CHECK_VERSION 46* instead of a special CHECK_CI_VERSION, and changed ERROR_SIGNAL to 47* use a different mechanism of constructing error strings. 48* 2) change(86-04-22,Pierret), approve(86-04-22,MCR7340), 49* audit(86-04-28,Newcomb), install(86-05-06,MR12.0-1054): 50* Removed local_cm_postcommit_info structure and es_message_overlay, using 51* instead cm_postcommit_info and substr (es_message, 1, es_message_length), 52* respectively. 53* 3) change(87-01-15,Hergert), approve(87-04-01,MCR7632), 54* audit(87-02-02,Dupuis), install(87-04-02,MR12.1-1020): 55* For TR phx20754, arranged to keep the element id of the key_count_array so 56* that we can use it at postcommit time if necessary. We save it in 57* local_fm_increment_info and pass it on to fm_put_. 58* END HISTORY COMMENTS */ 59 60 61 62 /* format: style5,^indcomtxt */ 63 cm_postcommit_increment: 64 proc (p_file_opening_id, p_collection_id, p_element_id, 65 p_cm_increment_info_ptr, p_code); 66 67 /* START OF DECLARATIONS */ 68 /* Parameter */ 69 70 dcl p_file_opening_id bit (36) aligned; 71 /* opening identifier of file */ 72 dcl p_collection_id bit (36) aligned; 73 /* identifier of collection */ 74 dcl p_element_id bit (36) aligned; 75 /* identifier of element */ 76 dcl p_cm_increment_info_ptr ptr; /* points to cm_ioncrement_info structure */ 77 dcl p_code fixed bin (35); /* status code */ 78 79 /* Automatic */ 80 81 dcl code fixed bin (35); 82 dcl collection_id bit (36) aligned; 83 dcl file_opening_id bit (36) aligned; 84 dcl 1 local_bci_header aligned like bci_header; 85 dcl 1 local_datum_slot aligned like datum_slot; 86 dcl 1 local_fm_increment_info 87 aligned like fm_increment_info; 88 89 /* Builtin */ 90 91 dcl (addbitno, addr, divide, null, substr, unspec) 92 builtin; 93 94 /* Constant */ 95 96 dcl myname init ("cm_postcommit_increment") 97 char (32) varying internal 98 static options (constant); 99 100 dcl BITS_PER_BYTE fixed bin init (9) internal 101 static options (constant); 102 dcl BITS_PER_WORD fixed bin init (36) internal 103 static options (constant); 104 dcl (NO_PAD, NO_NL) init ("0"b) bit (1) aligned 105 internal static options (constant); 106 dcl NOT_CONTINUED bit (1) init ("0"b) internal 107 static options (constant); 108 109 /* Entry */ 110 111 dcl cu_$arg_list_ptr entry (ptr); 112 dcl file_manager_$postcommit_increment 113 entry (bit (36) aligned, fixed bin (27), 114 ptr, fixed bin (35)); 115 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, 116 char (*), fixed bin (21), 117 bit (1) aligned, bit (1) aligned); 118 dcl sub_err_ entry () options (variable); 119 120 /* External */ 121 122 dcl dm_error_$ci_not_in_collection 123 fixed bin (35) ext; 124 dcl dm_error_$invalid_increment_offset 125 fixed bin (35) ext; 126 dcl dm_error_$invalid_increment_words 127 fixed bin (35) ext; 128 dcl dm_error_$long_increment_length 129 fixed bin (35) ext; 130 dcl dm_error_$programming_error 131 fixed bin (35) ext; 132 dcl dm_error_$unimplemented_entry 133 fixed bin (35) ext; 134 dcl error_table_$unimplemented_version 135 fixed bin (35) ext; 136 137 /* END OF DECLARATIONS */ 138 139 file_opening_id = p_file_opening_id; 140 collection_id = p_collection_id; 141 element_id_string = p_element_id; 142 cm_increment_info_ptr = p_cm_increment_info_ptr; 143 call CHECK_VERSION (cm_increment_info.version, 144 CM_INCREMENT_INFO_VERSION_1, "cm_increment_info"); 145 unspec (local_fm_increment_info) = ""b; 146 local_fm_increment_info.version = FM_INCREMENT_INFO_VERSION_1; 147 148 p_code = 0; 149 code = 0; 150 151 unspec (local_bci_header) = ""b; 152 unspec (local_datum_slot) = ""b; 153 154 if cm_increment_info.offset_in_bits < 0 then 155 call ERROR_SIGNAL (dm_error_$invalid_increment_offset); 156 if cm_increment_info.number_of_words < 1 then 157 call ERROR_SIGNAL (dm_error_$invalid_increment_words); 158 call cm_get_bci_header$slot (file_opening_id, addr (local_bci_header), 159 addr (local_datum_slot), element_id_string, code); 160 if code ^= 0 then 161 call ERROR_SIGNAL (code); 162 else 163 call CHECK_VERSION (local_bci_header.layout_type, 164 BASIC_CI_LAYOUT_1, "basic_control_interval"); 165 if local_bci_header.collection_id ^= collection_id then 166 call ERROR_SIGNAL (dm_error_$ci_not_in_collection); 167 168 if local_datum_slot.flags.is_continued = NOT_CONTINUED then 169 call SINGLE_DATUM (code); 170 else 171 call MULTI_DATUM (code); 172 call FINISH (code); 173 174 MAIN_RETURN: 175 return; 176 177 178 /* ************************************************************************* 179* * CHECK_VERSION - standard structure version check routine. * 180* ************************************************************************* */ 181 182 CHECK_VERSION: 183 proc (cv_p_received_version, cv_p_expected_version, cv_p_structure_name) 184 ; 185 dcl cv_p_received_version char (*) aligned; 186 dcl cv_p_expected_version char (*) aligned; 187 dcl cv_p_structure_name char (*); 188 189 if cv_p_received_version ^= cv_p_expected_version then 190 call ERROR_SIGNAL (error_table_$unimplemented_version, 191 "^/Expected version ^a of the ^a structure. Received version ^d instead.", 192 cv_p_expected_version, cv_p_structure_name, 193 cv_p_received_version); 194 195 end CHECK_VERSION; 196 197 /* ************************************************************************* 198* * ERROR_SIGNAL - This routine calls sub_err_ instead of returning. * 199* ************************************************************************* */ 200 201 ERROR_SIGNAL: 202 proc () options (variable); 203 dcl es_arg_list_ptr ptr; 204 dcl es_message char (1024); 205 dcl es_message_length fixed bin (21); 206 dcl es_based_error_code fixed bin (35) based; 207 208 call cu_$arg_list_ptr (es_arg_list_ptr); 209 if es_arg_list_ptr -> arg_list.arg_count > 0 then 210 do; 211 if es_arg_list_ptr -> arg_list.arg_count > 1 then 212 call ioa_$general_rs (es_arg_list_ptr, 2, 3, es_message, 213 es_message_length, NO_PAD, NO_NL); 214 else 215 es_message_length = 0; 216 call sub_err_ (es_arg_list_ptr -> arg_list.arg_ptrs (1) 217 -> es_based_error_code, myname, ACTION_CANT_RESTART, null, 218 0, substr (es_message, 1, es_message_length)); 219 end; 220 else 221 call sub_err_ (dm_error_$programming_error, myname, 222 ACTION_CANT_RESTART, null, 0, 223 "The ERROR_SIGNAL routine was called without any arguments.") 224 ; 225 end ERROR_SIGNAL; 226 227 /* ************************************************************************* 228* * FINISH - all exits pass through here. * 229* ************************************************************************* */ 230 231 FINISH: 232 proc (f_p_code); 233 dcl f_p_code fixed bin (35); 234 235 p_code = f_p_code; 236 end FINISH; 237 238 /* ************************************************************************* 239* * MULTI_DATUM - This procedure handler the case where an element is * 240* * spread across several datums. This is not currently implemented. * 241* ************************************************************************* */ 242 243 MULTI_DATUM: 244 proc (md_code); 245 dcl md_code fixed bin (35); 246 247 md_code = 0; 248 call ERROR_SIGNAL (dm_error_$unimplemented_entry, 249 "^/Multi-datum postincrement handlers have not been implemented."); 250 end MULTI_DATUM; 251 252 /* ************************************************************************* 253* * SINGLE_DATUM - This procedure is called when the entire element is * 254* * contained is one datum. Only one postcommit handler need be set up. * 255* ************************************************************************* */ 256 257 SINGLE_DATUM: 258 proc (sd_code); 259 dcl sd_code fixed bin (35); 260 dcl sd_ci_num fixed bin (27); 261 262 sd_code = 0; 263 if local_datum_slot.length_in_bits 264 < cm_increment_info.offset_in_bits 265 + cm_increment_info.number_of_words * BITS_PER_WORD then 266 call ERROR_SIGNAL (dm_error_$long_increment_length); 267 268 sd_ci_num = element_id.control_interval_id; 269 local_fm_increment_info.offset_in_bytes = 270 local_datum_slot.offset_in_bytes 271 + divide (cm_increment_info.offset_in_bits, BITS_PER_BYTE, 24, 0); 272 local_fm_increment_info.increments_ptr = 273 addbitno (cm_increment_info.increments_ptr, 274 cm_increment_info.offset_in_bits); 275 local_fm_increment_info.number_of_words = 276 cm_increment_info.number_of_words; 277 local_fm_increment_info.element_id = element_id_string; 278 279 call file_manager_$postcommit_increment (file_opening_id, sd_ci_num, 280 addr (local_fm_increment_info), sd_code); 281 end SINGLE_DATUM; 282 1 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 1 2* 1 3* James R. Davis 10 May 79 */ 1 4 1 5 1 6 1 7 /****^ HISTORY COMMENTS: 1 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 1 9* audit(86-07-15,Schroth): 1 10* added command_name_arglist declaration to allow the storage of the 1 11* command name given to the command processor 1 12* END HISTORY COMMENTS */ 1 13 1 14 dcl 1 arg_list aligned based, 1 15 2 header, 1 16 3 arg_count fixed bin (17) unsigned unal, 1 17 3 pad1 bit (1) unal, 1 18 3 call_type fixed bin (18) unsigned unal, 1 19 3 desc_count fixed bin (17) unsigned unal, 1 20 3 pad2 bit (19) unal, 1 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 1 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 1 23 1 24 1 25 dcl 1 command_name_arglist aligned based, 1 26 2 header, 1 27 3 arg_count fixed bin (17) unsigned unal, 1 28 3 pad1 bit (1) unal, 1 29 3 call_type fixed bin (18) unsigned unal, 1 30 3 desc_count fixed bin (17) unsigned unal, 1 31 3 mbz bit(1) unal, 1 32 3 has_command_name bit(1) unal, 1 33 3 pad2 bit (17) unal, 1 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 1 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 1 36 2 name, 1 37 3 command_name_ptr pointer, 1 38 3 command_name_length fixed bin (21); 1 39 1 40 1 41 1 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 1 43 2 header, 1 44 3 arg_count fixed bin (17) unsigned unal, 1 45 3 pad1 bit (1) unal, 1 46 3 call_type fixed bin (18) unsigned unal, 1 47 3 desc_count fixed bin (17) unsigned unal, 1 48 3 pad2 bit (19) unal, 1 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 1 50 2 envptr ptr, 1 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 1 52 1 53 1 54 dcl ( 1 55 Quick_call_type init (0), 1 56 Interseg_call_type init (4), 1 57 Envptr_supplied_call_type 1 58 init (8) 1 59 ) fixed bin (18) unsigned unal int static options (constant); 1 60 1 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 1 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 1 63* an argument list of the proper size in the user's stack 1 64* 1 65**/ 1 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 283 284 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 */ 285 286 3 1 /* BEGIN INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* 3 5* Contains entry declarations of internally available collection_manager_ 3 6* entries. Entries which are only available via the collection_manager_ 3 7* transfer vector are not included here, but are declared instead in 3 8* dm_collmgr_entry_dcls.incl.pl1. 3 9**/ 3 10 3 11 /* HISTORY: 3 12*Written by Mathew Pierret, 04/01/82. 3 13*Modified: 3 14*09/21/82 by Lindsey Spratt: Added the cm_compact$replacement entry. 3 15*10/29/82 by Matthew Pierret: Added cm_find_free_slot, cm_determine_free_space, 3 16* cm_find_ci_to_alloc_datum, cm_recursive_put. 3 17* Added cm_get_element$info*, $header*. The former is used when 3 18* the caller has a cm_info structure already; the latter is used to 3 19* get collection headers. 3 20* Added cm_opening_info$get. Removed cm_add_ci_(part thread). 3 21* Added cm_allocate_element$info. 3 22*11/09/82 by Matthew Pierret: Added argument to cm_allocate_ordered_element 3 23* calling sequence for returning free space. 3 24* Added cm_free_cn_datum("" $header). 3 25*01/07/83 by Matthew Pierret: Added: 3 26* cm_allocate_element$buffered("" _info); 3 27* cm_put_element$buffered("" _info); 3 28* cm_put_datum_in_place$buffered("" _continued); 3 29* cm_put_datum_in_pool$buffered("" _continued); 3 30* cm_compact$buffered. 3 31*01/26/83 by Matthew Pierret: Replaced cm_get_header_and_slot with 3 32* cm_get_bci_header$slot and added cm_get_bci_header$slot_exclusive. 3 33* Added cm_opening_info$get_storage_record. 3 34* Added a bit(36)aligned argument to cm_recursive_put to hold the 3 35* id of the previous datum. 3 36*02/02/83 by Matthew Pierret: Added fixed bin (17) argument to cm_find_free_slot 3 37* which is for the number of slots after allocation. 3 38*02/07/83 by Matthew Pierret: Added cm_get_id$(id info info_return_slot 3 39* header header_return_slot). 3 40* Added cm_get_element_portion$(exclusive info info_exclusive). 3 41* Added cm_get_element$bypass_info. 3 42*03/25/83 by Matthew Pierret: Added cm_free_element$info and 3 43* cm_free_opening_info. 3 44*04/29/83 by Matthew Pierret: Added cm_put_element$unprotected_info 3 45*08/04/83 by Matthew Pierret: Added the entries $does_new_datum_fit and 3 46* $does_replacement_fit to cm_determine_free_space. These entries 3 47* return flags indicating if a datum fits in the ci and the pool. 3 48* Added a bit(1)aligned parameter to cm_find_free_slot in which is 3 49* returned the new value of bci_header.free_slot_is_present. 3 50*02/07/84 by Matthew Pierret: Added cm_get_id$ptr. Removed all cm_get_id 3 51* modules except cm_get_id$id. Removed all cm_get_element$info* 3 52* entries. Changed cm_get_element_$bypass_info to have the same 3 53* calling sequence as other cm_get_element entries. 3 54*06/12/84 by Matthew Pierret: Changed cm_put_element to cm_modify 3 55* and cm_allocate_element to cm_put. 3 56* Switched the element_length/element_ptr parameter pair to be 3 57* element_ptr/element_length in cm_modify and cm_put. 3 58*07/24/84 by Matthew Pierret: Added cm_free_ci$raw_return_prev_next. 3 59*09/24/84 by Matthew Pierret: Added trace_thread_modifications_(on off) 3 60* entries to cm_free_ci and cm_replace_buffered_ci, 3 61* cm_allocate_ci$info_header, cm_opening_info$opening_table_ptr. 3 62* Removed cm_find_free_space. Commented out un-used entries. 3 63* Re-named allocate entries to put entries, except for allocate_ci. 3 64* Re-named free element and free datum entries to use delete instead 3 65* of free, and cm_recursive_put to cm_recursive_modify. 3 66* Removed cm_get_element$bypass_info. 3 67*02/27/85 by Matthew C. Pierret: Re-added cm_compact$buffered_replacement now 3 68* that cm_modify$buffered uses it. 3 69*03/07/85 by R. Michael Tague: Added cm_postcommit_increment. 3 70**/ 3 71 3 72 /* format: style2,ind3 */ 3 73 3 74 3 75 dcl cm_allocate_ci entry (bit (36) aligned, bit (36) aligned, fixed bin (24) unsigned, fixed bin (35)); 3 76 dcl cm_allocate_ci$info entry (ptr, fixed bin (24) unsigned, fixed bin (35)); 3 77 dcl cm_allocate_ci$info_header 3 78 entry (ptr, fixed bin (24) unsigned, ptr, fixed bin (35)); 3 79 3 80 3 81 dcl cm_compact entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 3 82 dcl cm_compact$buffered entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 3 83 dcl cm_compact$replacement entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 3 84 dcl cm_compact$buffered_replacement 3 85 entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 3 86 3 87 dcl cm_delete_cn_datum entry (ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 3 88 3 89 dcl cm_delete_cn_datum$header 3 90 entry (ptr, ptr, ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 3 91 3 92 dcl cm_delete entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, bit (1) aligned, 3 93 fixed bin (35)); 3 94 dcl cm_delete$info entry (ptr, bit (36) aligned, bit (1) aligned, fixed bin (35)); 3 95 3 96 dcl cm_determine_free_space$all 3 97 entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35)); 3 98 dcl cm_determine_free_space$effective 3 99 entry (ptr, fixed bin (35), bit (1) aligned, bit (1) aligned, fixed bin (35), 3 100 fixed bin (35)); 3 101 dcl cm_determine_free_space$does_new_datum_fit 3 102 entry (ptr, fixed bin (35), fixed bin (35), bit (1) aligned, bit (1) aligned, 3 103 bit (1) aligned, bit (1) aligned, fixed bin (35)); 3 104 3 105 /**** Not yet used ********************************************************* 3 106* dcl cm_determine_free_space$does_replacement_fit 3 107* entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35), bit (1) aligned, 3 108* bit (1) aligned, bit (1) aligned, bit (1) aligned, fixed bin (35)); 3 109*************************************************************************** */ 3 110 3 111 dcl cm_find_ci_to_alloc_datum 3 112 entry (ptr, fixed bin (35), fixed bin (24) uns, bit (1) aligned, bit (1) aligned, ptr, 3 113 fixed bin (24) uns, fixed bin (35)); 3 114 3 115 dcl cm_find_free_slot entry (bit (36) aligned, fixed bin (24) uns, ptr, fixed bin (17), fixed bin (17), 3 116 bit (1) aligned, fixed bin (35)); 3 117 3 118 dcl cm_free_ci$info entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (35)); 3 119 dcl cm_free_ci$raw_return_prev_next 3 120 entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (24) uns, 3 121 fixed bin (24) uns, fixed bin (35)); 3 122 dcl cm_free_ci$trace_thread_modifications_on 3 123 entry (); 3 124 dcl cm_free_ci$trace_thread_modifications_off 3 125 entry (); 3 126 3 127 3 128 dcl cm_free_opening_info entry (bit (36) aligned, bit (36) aligned, fixed bin (35)); 3 129 3 130 dcl cm_get_bci_header entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 3 131 dcl cm_get_bci_header$exclusive 3 132 entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 3 133 dcl cm_get_bci_header$slot entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 3 134 3 135 /**** Not yet used ******************************************************** 3 136* dcl cm_get_bci_header$slot_exclusive 3 137* entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 3 138*************************************************************************** */ 3 139 3 140 dcl cm_get_element entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 3 141 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 3 142 dcl cm_get_element$exclusive 3 143 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, ptr, 3 144 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 3 145 3 146 dcl cm_get_element_portion entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 3 147 fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 3 148 fixed bin (35), fixed bin (35)); 3 149 3 150 /**** Not yet used ******************************************************** 3 151* dcl cm_get_element_portion$exclusive 3 152* entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 3 153* fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 3 154* fixed bin (35), fixed bin (35)); 3 155*************************************************************************** */ 3 156 3 157 dcl cm_get_id$id entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 3 158 bit (1) aligned, bit (36) aligned, fixed bin (35)); 3 159 dcl cm_get_id$ptr entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 3 160 bit (1) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 3 161 3 162 dcl cm_modify entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 3 163 fixed bin (35), fixed bin (35)); 3 164 dcl cm_modify$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 3 165 fixed bin (35), fixed bin (35)); 3 166 3 167 /******* Not yet used ***************************************************** 3 168* dcl cm_modify$buffered_info 3 169* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 3 170* fixed bin (35)); 3 171*****************************************************************************/ 3 172 3 173 dcl cm_modify$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 3 174 dcl cm_modify$unprotected_info 3 175 entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 3 176 3 177 3 178 /******* Not yet used ***************************************************** 3 179* dcl cm_modify_portion entry (bit (36) aligned, bit (36) aligned, fixed bin (35), fixed bin (35), 3 180* fixed bin (35), ptr, bit (36) aligned, fixed bin (35), fixed bin (35)); 3 181*****************************************************************************/ 3 182 3 183 3 184 dcl cm_opening_info$get entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 3 185 dcl cm_opening_info$get_storage_record 3 186 entry (ptr, fixed bin (35)); 3 187 dcl cm_opening_info$full_get 3 188 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 3 189 dcl cm_opening_info$opening_table_ptr 3 190 entry () returns (ptr); 3 191 3 192 dcl cm_postcommit_increment 3 193 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 3 194 3 195 dcl cm_put entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 3 196 fixed bin (35), fixed bin (35)); 3 197 dcl cm_put$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 3 198 fixed bin (35), fixed bin (35)); 3 199 3 200 /******* Not yet used ***************************************************** 3 201* dcl cm_put$buffered_info 3 202* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 3 203* fixed bin (35)); 3 204*****************************************************************************/ 3 205 3 206 dcl cm_put$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 3 207 3 208 dcl cm_put_basic_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 3 209 fixed bin (35)); 3 210 3 211 dcl cm_put_cn_datum entry (ptr, ptr, fixed bin (35), bit (36) aligned, bit (36) aligned, fixed bin (35)); 3 212 3 213 dcl cm_put_datum_in_place entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 3 214 fixed bin (35)); 3 215 dcl cm_put_datum_in_place$buffered 3 216 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 3 217 dcl cm_put_datum_in_place$buffered_continued 3 218 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 3 219 fixed bin (35)); 3 220 dcl cm_put_datum_in_place$continued 3 221 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 3 222 fixed bin (35), bit (36) aligned, fixed bin (35)); 3 223 3 224 dcl cm_put_datum_in_pool entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 3 225 fixed bin (35)); 3 226 dcl cm_put_datum_in_pool$buffered 3 227 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 3 228 dcl cm_put_datum_in_pool$buffered_continued 3 229 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 3 230 fixed bin (35)); 3 231 dcl cm_put_datum_in_pool$continued 3 232 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 3 233 fixed bin (35), bit (36) aligned, fixed bin (35)); 3 234 3 235 dcl cm_put_ordered_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 3 236 fixed bin (35)); 3 237 dcl cm_put_ordered_element$buffered 3 238 entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 3 239 fixed bin (35)); 3 240 3 241 dcl cm_put_overlength_tail entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35)); 3 242 3 243 dcl cm_recursive_modify entry (ptr, bit (36) aligned, ptr, fixed bin (35), fixed bin (35), bit (36) aligned, 3 244 fixed bin (35)); 3 245 3 246 3 247 dcl cm_replace_buffered_ci$trace_thread_modifications_on 3 248 entry (); 3 249 dcl cm_replace_buffered_ci$trace_thread_modifications_off 3 250 entry (); 3 251 3 252 /* END INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 287 288 4 1 /* BEGIN INCLUDE FILE dm_cm_increment_info.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4*This structure is used to locate an array of increment words to be used 4 5*in one or more postcommit handlers. The structure elements have the following 4 6*meaning: 4 7*increments_ptr - pointer to the structure containing the array of word 4 8* increment values in the users address space. 4 9*offset_in_bits - is the offset from the begining of the structure to the 4 10* first word increment. This value is also used to locate 4 11* the first word increment within the collection manager 4 12* element, that is, it is assumed that the structure 4 13* containing the increment words is stored in begining of 4 14* a collection manager element. 4 15*number_of_words - number of word increment values. 4 16**/ 4 17 4 18 /* HISTORY: 4 19*Written by R. Michael Tague, 03/06/85. 4 20*Modified: 4 21**/ 4 22 4 23 /* format: style5,^indcomtxt */ 4 24 4 25 dcl cm_increment_info_ptr ptr; 4 26 dcl 1 cm_increment_info aligned based (cm_increment_info_ptr), 4 27 2 version char (8), 4 28 2 increments_ptr ptr, 4 29 2 offset_in_bits fixed bin (35), 4 30 2 number_of_words fixed bin (35); 4 31 4 32 dcl CM_INCREMENT_INFO_VERSION_1 4 33 char (8) aligned internal static 4 34 options (constant) init ("cmword01"); 4 35 4 36 /* END INCLUDE FILE dm_cm_increment_info.incl.pl1 */ 289 290 5 1 /* BEGIN INCLUDE FILE dm_element_id.incl.pl1 */ 5 2 5 3 /* DESCRIPTION: 5 4* 5 5* Contains the declaration of an element identifier. Element 5 6* identifiers consist of two parts, the id (number) of the control interval 5 7* in which the element resides, and the index into the slot table of 5 8* the element in the control interval. The declaration of the element_id 5 9* structure reflects this division of the element identifier. The structure 5 10* is based on the automatic bit string element_id_string because programs 5 11* generally pass bit strings (element_id_string) to each other, then 5 12* interpret the bit string by overlaying the element_id structure ony if 5 13* it is necessary to access the parts of the id. Basing element_id on 5 14* addr(element_id_string) instead of on a pointer removes the necessity 5 15* for always setting that pointer explicitly and guarantees that changes 5 16* made to the string or structure do not get inconsistent. 5 17* 5 18* Changes made to element_id must also be made to datum_id, declared in 5 19* dm_cm_datum.incl.pl1. 5 20**/ 5 21 5 22 /* HISTORY: 5 23*Written by Matthew Pierret, 04/01/82. 5 24*Modified: 5 25*09/24/84 by Matthew Pierret: Added DESCRIPTION section. 5 26**/ 5 27 5 28 /* format: style2,ind3,ll79 */ 5 29 5 30 dcl element_id_string bit (36) aligned; 5 31 5 32 dcl 1 element_id aligned based (addr (element_id_string)), 5 33 2 control_interval_id 5 34 fixed bin (24) unal unsigned, 5 35 2 index fixed bin (12) unal unsigned; 5 36 5 37 5 38 /* END INCLUDE FILE dm_element_id.incl.pl1 */ 291 292 6 1 /* BEGIN INCLUDE FILE dm_fm_increment_info.incl.pl1 */ 6 2 6 3 /* DESCRIPTION: 6 4*This structure is passed to the file_manager to describe increment words 6 5*to be used in a postcommit handler. The structure elements have the 6 6*following meaning: 6 7*increments_ptr - pointer to the first word of one or more words in the 6 8* caller's address space that is to be used by a postcommit 6 9* handler to increment values in a DM file. 6 10*number_of_words - The number of increment words pointed to by increments_ptr. 6 11*offset_in_bytes - offset from the begining of the control interval to the 6 12* location in the control interval of the first word to be 6 13* incremented at postcommit time. 6 14**/ 6 15 6 16 /* HISTORY: 6 17*Written by R. Michael Tague, 03/06/85. 6 18*Modified: 6 19**/ 6 20 6 21 /****^ HISTORY COMMENTS: 6 22* 1) change(87-01-15,Hergert), approve(87-04-01,MCR7632), 6 23* audit(87-01-30,Dupuis), install(87-04-02,MR12.1-1020): 6 24* For TR phx20754. Added element_id so that we can save the id of the 6 25* key_count_array and use it at post commit time, if necessary. 6 26* END HISTORY COMMENTS */ 6 27 6 28 6 29 /* format: style5,^indcomtxt */ 6 30 6 31 dcl fm_increment_info_ptr ptr; 6 32 dcl 1 fm_increment_info aligned based (fm_increment_info_ptr), 6 33 2 version char (8), 6 34 2 increments_ptr ptr, 6 35 2 element_id bit (36), 6 36 2 number_of_words fixed bin (35), 6 37 2 offset_in_bytes fixed bin (35); 6 38 6 39 dcl FM_INCREMENT_INFO_VERSION_1 6 40 char (8) aligned internal static 6 41 options (constant) init ("fmword01"); 6 42 6 43 /* END INCLUDE FILE dm_fm_increment_info.incl.pl1 */ 293 294 7 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 7 2 /* format: style3 */ 7 3 7 4 /* These constants are to be used for the flags argument of sub_err_ */ 7 5 /* They are just "string (condition_info_header.action_flags)" */ 7 6 7 7 declare ( 7 8 ACTION_CAN_RESTART init (""b), 7 9 ACTION_CANT_RESTART init ("1"b), 7 10 ACTION_DEFAULT_RESTART 7 11 init ("01"b), 7 12 ACTION_QUIET_RESTART 7 13 init ("001"b), 7 14 ACTION_SUPPORT_SIGNAL 7 15 init ("0001"b) 7 16 ) bit (36) aligned internal static options (constant); 7 17 7 18 /* End include file */ 295 296 297 end cm_postcommit_increment; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/02/87 1258.7 cm_postcommit_increment.pl1 >spec>install>MR12.1-1020>cm_postcommit_increment.pl1 283 1 08/05/86 0856.8 arg_list.incl.pl1 >ldd>include>arg_list.incl.pl1 285 2 01/07/85 0858.0 dm_cm_basic_ci.incl.pl1 >ldd>include>dm_cm_basic_ci.incl.pl1 287 3 04/05/85 0924.3 dm_cm_entry_dcls.incl.pl1 >ldd>include>dm_cm_entry_dcls.incl.pl1 289 4 04/05/85 0924.3 dm_cm_increment_info.incl.pl1 >ldd>include>dm_cm_increment_info.incl.pl1 291 5 01/07/85 0858.5 dm_element_id.incl.pl1 >ldd>include>dm_element_id.incl.pl1 293 6 04/02/87 1300.6 dm_fm_increment_info.incl.pl1 >spec>install>MR12.1-1020>dm_fm_increment_info.incl.pl1 295 7 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ACTION_CANT_RESTART 000000 constant bit(36) initial dcl 7-7 set ref 216* 220* BASIC_CI_LAYOUT_1 000006 constant char(4) initial dcl 2-97 set ref 162* BITS_PER_BYTE constant fixed bin(17,0) initial dcl 100 ref 269 BITS_PER_WORD constant fixed bin(17,0) initial dcl 102 ref 263 CM_INCREMENT_INFO_VERSION_1 000004 constant char(8) initial dcl 4-32 set ref 143* FM_INCREMENT_INFO_VERSION_1 000002 constant char(8) initial dcl 6-39 ref 146 NOT_CONTINUED constant bit(1) initial unaligned dcl 106 ref 168 NO_NL 000036 constant bit(1) initial dcl 104 set ref 211* NO_PAD 000036 constant bit(1) initial dcl 104 set ref 211* addbitno builtin function dcl 91 ref 272 addr builtin function dcl 91 ref 158 158 158 158 268 279 279 arg_count based fixed bin(17,0) level 3 packed unsigned unaligned dcl 1-14 ref 209 211 arg_list based structure level 1 dcl 1-14 arg_ptrs 2 based pointer array level 2 dcl 1-14 ref 216 bci_header based structure level 1 dcl 2-63 cm_get_bci_header$slot 000036 constant entry external dcl 3-133 ref 158 cm_increment_info based structure level 1 dcl 4-26 cm_increment_info_ptr 000122 automatic pointer dcl 4-25 set ref 142* 143 154 156 263 263 269 272 272 275 code 000100 automatic fixed bin(35,0) dcl 81 set ref 149* 158* 160 160* 168* 170* 172* collection_id 1 000103 automatic bit(36) level 2 in structure "local_bci_header" dcl 84 in procedure "cm_postcommit_increment" set ref 165 collection_id 000101 automatic bit(36) dcl 82 in procedure "cm_postcommit_increment" set ref 140* 165 control_interval_id based fixed bin(24,0) level 2 packed unsigned unaligned dcl 5-32 ref 268 cu_$arg_list_ptr 000010 constant entry external dcl 111 ref 208 cv_p_expected_version parameter char dcl 186 set ref 182 189 189* cv_p_received_version parameter char dcl 185 set ref 182 189 189* cv_p_structure_name parameter char unaligned dcl 187 set ref 182 189* datum_slot based structure level 1 dcl 2-82 divide builtin function dcl 91 ref 269 dm_error_$ci_not_in_collection 000020 external static fixed bin(35,0) dcl 122 set ref 165* dm_error_$invalid_increment_offset 000022 external static fixed bin(35,0) dcl 124 set ref 154* dm_error_$invalid_increment_words 000024 external static fixed bin(35,0) dcl 126 set ref 156* dm_error_$long_increment_length 000026 external static fixed bin(35,0) dcl 128 set ref 263* dm_error_$programming_error 000030 external static fixed bin(35,0) dcl 130 set ref 220* dm_error_$unimplemented_entry 000032 external static fixed bin(35,0) dcl 132 set ref 248* element_id 4 000112 automatic bit(36) level 2 in structure "local_fm_increment_info" dcl 86 in procedure "cm_postcommit_increment" set ref 277* element_id based structure level 1 dcl 5-32 in procedure "cm_postcommit_increment" element_id_string 000124 automatic bit(36) dcl 5-30 set ref 141* 158* 268 277 error_table_$unimplemented_version 000034 external static fixed bin(35,0) dcl 134 set ref 189* es_arg_list_ptr 000100 automatic pointer dcl 203 set ref 208* 209 211 211* 216 es_based_error_code based fixed bin(35,0) dcl 206 set ref 216* es_message 000102 automatic char(1024) unaligned dcl 204 set ref 211* 216 216 es_message_length 000502 automatic fixed bin(21,0) dcl 205 set ref 211* 214* 216 216 f_p_code parameter fixed bin(35,0) dcl 233 ref 231 235 file_manager_$postcommit_increment 000012 constant entry external dcl 112 ref 279 file_opening_id 000102 automatic bit(36) dcl 83 set ref 139* 158* 279* flags 000110 automatic structure level 2 packed unaligned dcl 85 fm_increment_info based structure level 1 dcl 6-32 header based structure level 2 dcl 1-14 increments_ptr 2 based pointer level 2 in structure "cm_increment_info" dcl 4-26 in procedure "cm_postcommit_increment" ref 272 increments_ptr 2 000112 automatic pointer level 2 in structure "local_fm_increment_info" dcl 86 in procedure "cm_postcommit_increment" set ref 272* ioa_$general_rs 000014 constant entry external dcl 115 ref 211 is_continued 0(01) 000110 automatic bit(1) level 3 packed unaligned dcl 85 set ref 168 layout_type 000103 automatic char(4) level 2 dcl 84 set ref 162* length_in_bits 0(19) 000110 automatic fixed bin(17,0) level 2 packed unsigned unaligned dcl 85 set ref 263 local_bci_header 000103 automatic structure level 1 dcl 84 set ref 151* 158 158 local_datum_slot 000110 automatic structure level 1 dcl 85 set ref 152* 158 158 local_fm_increment_info 000112 automatic structure level 1 dcl 86 set ref 145* 279 279 md_code parameter fixed bin(35,0) dcl 245 set ref 243 247* myname 000007 constant varying char(32) initial dcl 96 set ref 216* 220* null builtin function dcl 91 ref 216 216 220 220 number_of_words 5 000112 automatic fixed bin(35,0) level 2 in structure "local_fm_increment_info" dcl 86 in procedure "cm_postcommit_increment" set ref 275* number_of_words 5 based fixed bin(35,0) level 2 in structure "cm_increment_info" dcl 4-26 in procedure "cm_postcommit_increment" ref 156 263 275 offset_in_bits 4 based fixed bin(35,0) level 2 dcl 4-26 ref 154 263 269 272 offset_in_bytes 0(04) 000110 automatic fixed bin(15,0) level 2 in structure "local_datum_slot" packed unsigned unaligned dcl 85 in procedure "cm_postcommit_increment" set ref 269 offset_in_bytes 6 000112 automatic fixed bin(35,0) level 2 in structure "local_fm_increment_info" dcl 86 in procedure "cm_postcommit_increment" set ref 269* p_cm_increment_info_ptr parameter pointer dcl 76 ref 63 142 p_code parameter fixed bin(35,0) dcl 77 set ref 63 148* 235* p_collection_id parameter bit(36) dcl 72 ref 63 140 p_element_id parameter bit(36) dcl 74 ref 63 141 p_file_opening_id parameter bit(36) dcl 70 ref 63 139 sd_ci_num 000156 automatic fixed bin(27,0) dcl 260 set ref 268* 279* sd_code parameter fixed bin(35,0) dcl 259 set ref 257 262* 279* sub_err_ 000016 constant entry external dcl 118 ref 216 220 substr builtin function dcl 91 ref 216 216 unspec builtin function dcl 91 set ref 145* 151* 152* version 000112 automatic char(8) level 2 in structure "local_fm_increment_info" dcl 86 in procedure "cm_postcommit_increment" set ref 146* version based char(8) level 2 in structure "cm_increment_info" dcl 4-26 in procedure "cm_postcommit_increment" set ref 143* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 7-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 7-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 7-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 7-7 Envptr_supplied_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 1-54 Interseg_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 1-54 Quick_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 1-54 arg_list_with_envptr based structure level 1 dcl 1-42 basic_control_interval based structure level 1 dcl 2-56 basic_control_interval_ptr automatic pointer dcl 2-92 bci_header_ptr automatic pointer dcl 2-94 cm_allocate_ci 000000 constant entry external dcl 3-75 cm_allocate_ci$info 000000 constant entry external dcl 3-76 cm_allocate_ci$info_header 000000 constant entry external dcl 3-77 cm_compact 000000 constant entry external dcl 3-81 cm_compact$buffered 000000 constant entry external dcl 3-82 cm_compact$buffered_replacement 000000 constant entry external dcl 3-84 cm_compact$replacement 000000 constant entry external dcl 3-83 cm_delete 000000 constant entry external dcl 3-92 cm_delete$info 000000 constant entry external dcl 3-94 cm_delete_cn_datum 000000 constant entry external dcl 3-87 cm_delete_cn_datum$header 000000 constant entry external dcl 3-89 cm_determine_free_space$all 000000 constant entry external dcl 3-96 cm_determine_free_space$does_new_datum_fit 000000 constant entry external dcl 3-101 cm_determine_free_space$effective 000000 constant entry external dcl 3-98 cm_find_ci_to_alloc_datum 000000 constant entry external dcl 3-111 cm_find_free_slot 000000 constant entry external dcl 3-115 cm_free_ci$info 000000 constant entry external dcl 3-118 cm_free_ci$raw_return_prev_next 000000 constant entry external dcl 3-119 cm_free_ci$trace_thread_modifications_off 000000 constant entry external dcl 3-124 cm_free_ci$trace_thread_modifications_on 000000 constant entry external dcl 3-122 cm_free_opening_info 000000 constant entry external dcl 3-128 cm_get_bci_header 000000 constant entry external dcl 3-130 cm_get_bci_header$exclusive 000000 constant entry external dcl 3-131 cm_get_element 000000 constant entry external dcl 3-140 cm_get_element$exclusive 000000 constant entry external dcl 3-142 cm_get_element_portion 000000 constant entry external dcl 3-146 cm_get_id$id 000000 constant entry external dcl 3-157 cm_get_id$ptr 000000 constant entry external dcl 3-159 cm_modify 000000 constant entry external dcl 3-162 cm_modify$buffered 000000 constant entry external dcl 3-164 cm_modify$info 000000 constant entry external dcl 3-173 cm_modify$unprotected_info 000000 constant entry external dcl 3-174 cm_opening_info$full_get 000000 constant entry external dcl 3-187 cm_opening_info$get 000000 constant entry external dcl 3-184 cm_opening_info$get_storage_record 000000 constant entry external dcl 3-185 cm_opening_info$opening_table_ptr 000000 constant entry external dcl 3-189 cm_postcommit_increment 000000 constant entry external dcl 3-192 cm_put 000000 constant entry external dcl 3-195 cm_put$buffered 000000 constant entry external dcl 3-197 cm_put$info 000000 constant entry external dcl 3-206 cm_put_basic_element 000000 constant entry external dcl 3-208 cm_put_cn_datum 000000 constant entry external dcl 3-211 cm_put_datum_in_place 000000 constant entry external dcl 3-213 cm_put_datum_in_place$buffered 000000 constant entry external dcl 3-215 cm_put_datum_in_place$buffered_continued 000000 constant entry external dcl 3-217 cm_put_datum_in_place$continued 000000 constant entry external dcl 3-220 cm_put_datum_in_pool 000000 constant entry external dcl 3-224 cm_put_datum_in_pool$buffered 000000 constant entry external dcl 3-226 cm_put_datum_in_pool$buffered_continued 000000 constant entry external dcl 3-228 cm_put_datum_in_pool$continued 000000 constant entry external dcl 3-231 cm_put_ordered_element 000000 constant entry external dcl 3-235 cm_put_ordered_element$buffered 000000 constant entry external dcl 3-237 cm_put_overlength_tail 000000 constant entry external dcl 3-241 cm_recursive_modify 000000 constant entry external dcl 3-243 cm_replace_buffered_ci$trace_thread_modifications_off 000000 constant entry external dcl 3-249 cm_replace_buffered_ci$trace_thread_modifications_on 000000 constant entry external dcl 3-247 command_name_arglist based structure level 1 dcl 1-25 datum_slot_ptr automatic pointer dcl 2-95 fm_increment_info_ptr automatic pointer dcl 6-31 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 000353 constant entry internal dcl 182 ref 143 162 ERROR_SIGNAL 000446 constant entry internal dcl 201 ref 154 156 160 165 189 248 263 FINISH 000652 constant entry internal dcl 231 ref 172 MAIN_RETURN 000352 constant label dcl 174 MULTI_DATUM 000660 constant entry internal dcl 243 ref 170 SINGLE_DATUM 000704 constant entry internal dcl 257 ref 168 cm_postcommit_increment 000147 constant entry external dcl 63 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1242 1302 1022 1252 Length 1644 1022 40 325 220 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cm_postcommit_increment 234 external procedure is an external procedure. CHECK_VERSION internal procedure shares stack frame of external procedure cm_postcommit_increment. ERROR_SIGNAL 390 internal procedure is declared options(variable). FINISH internal procedure shares stack frame of external procedure cm_postcommit_increment. MULTI_DATUM internal procedure shares stack frame of external procedure cm_postcommit_increment. SINGLE_DATUM internal procedure shares stack frame of external procedure cm_postcommit_increment. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ERROR_SIGNAL 000100 es_arg_list_ptr ERROR_SIGNAL 000102 es_message ERROR_SIGNAL 000502 es_message_length ERROR_SIGNAL cm_postcommit_increment 000100 code cm_postcommit_increment 000101 collection_id cm_postcommit_increment 000102 file_opening_id cm_postcommit_increment 000103 local_bci_header cm_postcommit_increment 000110 local_datum_slot cm_postcommit_increment 000112 local_fm_increment_info cm_postcommit_increment 000122 cm_increment_info_ptr cm_postcommit_increment 000124 element_id_string cm_postcommit_increment 000156 sd_ci_num SINGLE_DATUM THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc return_mac shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cm_get_bci_header$slot cu_$arg_list_ptr file_manager_$postcommit_increment ioa_$general_rs sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$ci_not_in_collection dm_error_$invalid_increment_offset dm_error_$invalid_increment_words dm_error_$long_increment_length dm_error_$programming_error dm_error_$unimplemented_entry error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 63 000142 139 000154 140 000157 141 000161 142 000163 143 000166 145 000213 146 000216 148 000220 149 000222 151 000223 152 000226 154 000227 156 000243 158 000260 160 000303 162 000316 165 000324 168 000340 170 000346 172 000350 174 000352 182 000353 189 000376 195 000444 201 000445 208 000453 209 000461 211 000465 214 000533 216 000534 219 000604 220 000606 225 000651 231 000652 235 000654 236 000657 243 000660 247 000662 248 000663 250 000703 257 000704 262 000706 263 000707 268 000733 269 000736 272 000747 275 000753 277 000755 279 000757 281 000777 ----------------------------------------------------------- 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