COMPILATION LISTING OF SEGMENT ms_table_mgr_v2_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/05/84 1102.4 mst Wed Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 /* format: style2 */ 11 12 ms_table_mgr_v2_: 13 procedure; 14 15 /* Multi-segment table manager for large system tables. */ 16 /* Written by C. Hornig, June 1979. */ 17 /* Modified by C. Hornig, January 1980, for salvager */ 18 /* Modified by B. Margolin, July 1983, for case-insensitive searching */ 19 20 declare ( 21 (Dirname, Ename) character (*), /* MSF pathname */ 22 Create_info pointer, /* to ms_table_info */ 23 Type character (*) aligned, 24 /* type of table (for checking) */ 25 Tp pointer, /* my data pointer */ 26 Hp pointer, /* header pointer */ 27 Ne fixed bin (35), /* number of used entries */ 28 Key character (*), 29 Ep pointer, /* pointer to entry */ 30 Record fixed bin (35), 31 Code fixed (35) 32 ) parameter; 33 34 35 /**** The following declarations are for the old (obsolete) 36* version 2 MSTBs. They exist here solely for conversion 37* purposes. */ 38 39 declare 1 mt_header_v2 aligned based, 40 2 comp_hdr aligned like comp_header_v2, 41 2 mti aligned like ms_table_info_v2, 42 2 (number_components, entries_per_component, entry_offset) 43 unsigned fixed binary (18), 44 2 (total_entries, deleted_entries, used_entries) 45 fixed binary (35), 46 2 meters, 47 3 searches fixed binary (35), 48 3 entries_examined fixed binary (35); 49 50 declare 1 comp_header_v2 aligned based, 51 2 type character (32), 52 2 (dt_created, dt_updated) 53 fixed binary (71), 54 2 component unsigned fixed binary (18); 55 56 declare 1 entry_v2 aligned based, 57 2 (used, deleted, inconsistent) 58 bit unaligned, 59 2 lock bit (36) aligned, /* unused */ 60 2 key character (32) unaligned; 61 62 declare ms_table_info_version_2 63 fixed init (2) internal static options (constant); 64 65 declare 1 ms_table_info_v2 aligned based, 66 2 version fixed, /* Should be 2 */ 67 2 type character (32), /* what table is this? */ 68 2 ( 69 header_size, /* length of table header in words */ 70 entry_size 71 ) unsigned fixed (18), 72 /* same for table entries */ 73 2 max_entries unsigned fixed bin (18), 74 /* how many entries */ 75 2 max_size fixed bin (19); /* max segment length */ 76 77 dcl 1 mt_header aligned like mt_header_v2 based (hdrp); 78 dcl 1 comp_header aligned like comp_header_v2 based (segp); 79 dcl 1 entry aligned like entry_v2 based (ep); 80 81 declare ( 82 error_table_$namedup, 83 error_table_$bad_index, 84 error_table_$no_record, 85 error_table_$unimplemented_version, 86 error_table_$inconsistent, 87 error_table_$noalloc, 88 error_table_$noentry, 89 error_table_$request_id_ambiguous, 90 error_table_$id_already_exists, 91 error_table_$id_not_found 92 ) fixed bin (35) external; 93 94 declare hash_index_ entry (pointer, fixed bin (21), fixed bin (35), fixed bin (35)) 95 returns (fixed bin (35)), 96 hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)), 97 hcs_$set_max_length_seg 98 entry (pointer, fixed bin (19), fixed bin (35)), 99 msf_manager_$open entry (character (*), character (*), pointer, fixed bin (35)), 100 msf_manager_$get_ptr entry (pointer, unsigned fixed bin (18), bit aligned, pointer, fixed bin (24), 101 fixed bin (35)), 102 msf_manager_$close entry (pointer); 103 104 declare code fixed bin (35), 105 i unsigned fixed bin (18), 106 bc fixed bin (24), 107 component unsigned fixed bin (18), 108 (enum, record) fixed bin (35), 109 now fixed bin (71), 110 case_ins bit (1), 111 ep pointer, 112 hdrp pointer, 113 segp pointer, 114 tp pointer; 115 116 declare (addr, addrel, clock, divide, max, mod, null, pointer, size) 117 builtin; 118 119 /* * * * * * * * * * CREATE * * * * * * * * * */ 120 121 create: 122 entry (Dirname, Ename, Create_info, Code); 123 124 /* Create MSF "Path" with characteristics described in ms_table_info. */ 125 126 Code = 0; 127 128 if Create_info -> ms_table_info_v2.version ^= ms_table_info_version_2 129 & Create_info -> ms_table_info_v2.version ^= 1 130 /* We still support version 1 */ 131 then do; 132 Code = error_table_$unimplemented_version; 133 return; 134 end; 135 136 call msf_manager_$open (Dirname, Ename, tp, code); 137 if code ^= error_table_$noentry 138 then do; 139 if code = 0 140 then do; 141 Code = error_table_$namedup; 142 call msf_manager_$close (tp); 143 end; 144 else Code = code; 145 return; 146 end; 147 148 call msf_manager_$get_ptr (tp, 1, "1"b, segp, bc, code); 149 /* create the second component to force an MSF */ 150 call msf_manager_$get_ptr (tp, 0, "1"b, hdrp, bc, code); 151 /* create the header */ 152 if hdrp = null () 153 then do; 154 Code = code; 155 return; 156 end; 157 mt_header.mti = Create_info -> ms_table_info_v2; 158 mt_header.used_entries, mt_header.deleted_entries = 0; 159 mt_header.entries_per_component = 160 divide (mt_header.max_size - size (comp_header), size (entry) + mt_header.entry_size, 18); 161 mt_header.entry_offset = 162 1 163 + 164 divide (size (mt_header_v2) - size (comp_header) + mt_header.header_size - 1, 165 size (entry) + mt_header.entry_size, 18); 166 mt_header.number_components = 167 max (1, divide (mt_header.max_entries + mt_header.entry_offset - 1, mt_header.entries_per_component, 18)); 168 mt_header.total_entries = 169 (1 + mt_header.number_components) * mt_header.entries_per_component - mt_header.entry_offset; 170 171 now = clock (); 172 do i = 0 to mt_header.number_components; 173 call msf_manager_$get_ptr (tp, i, "1"b, segp, bc, code); 174 if code ^= 0 175 then do; 176 Code = code; 177 return; 178 end; 179 comp_header.type = mt_header.mti.type; 180 comp_header.dt_created, comp_header.dt_updated = now; 181 comp_header.component = i; 182 call hcs_$set_max_length_seg (segp, (mt_header.max_size), code); 183 call hcs_$set_bc_seg (segp, 36 * mt_header.max_size, code); 184 end; 185 186 call msf_manager_$close (tp); 187 return: 188 return; 189 190 /* * * * * * * * * * OPEN * * * * * * * * * * */ 191 192 open: 193 entry (Dirname, Ename, Type, Tp, Hp, Code); 194 195 Code = 0; 196 Tp, Hp = null (); 197 198 call msf_manager_$open (Dirname, Ename, tp, code); 199 if tp = null () 200 then do; 201 Code = code; 202 return; 203 end; 204 call get_header; 205 if mt_header.version ^= ms_table_info_version_2 & mt_header.version ^= 1 206 /* Upward compatible */ 207 then do; 208 Code = error_table_$unimplemented_version; 209 return; 210 end; 211 if (mt_header.mti.type ^= Type) & (Type ^= "") 212 then do; 213 Code = error_table_$inconsistent; 214 return; 215 end; 216 Hp = pointer (hdrp, size (mt_header_v2)); 217 Tp = tp; 218 return; 219 220 /* * * * * * * * * * VERIFY * * * * * * * * * */ 221 222 verify: 223 entry (Tp, Code); 224 225 Code = 0; 226 tp = Tp; 227 228 call get_header; 229 do i = 0 to mt_header.number_components; 230 call get_component (i); 231 if comp_header.type ^= mt_header.mti.type | comp_header.component ^= i 232 | comp_header.dt_updated ^= mt_header.comp_hdr.dt_updated 233 then do; 234 Code = error_table_$inconsistent; 235 return; 236 end; 237 end; 238 return; 239 240 /* * * * * * * * * * TABLE_INFO * * * * * * * * * * */ 241 242 table_data: 243 entry (Tp, Create_info, Hp, Ne, Code); 244 245 Code, Ne = 0; 246 Hp = null (); 247 tp = Tp; 248 249 call get_header; 250 Create_info -> ms_table_info_v2 = mt_header.mti; 251 Hp = pointer (hdrp, size (mt_header)); 252 Ne = mt_header.used_entries - mt_header.deleted_entries; 253 return; 254 255 /* * * * * * * * * * CLOSE * * * * * * * * * */ 256 257 close: 258 entry (Tp, Code); 259 260 Code = 0; 261 tp = Tp; 262 263 call msf_manager_$close (tp); 264 return; 265 266 /* * * * * * * * * * NEW_ENTRY * * * * * * * * * */ 267 268 new_entry: 269 entry (Tp, Key, Ep, Code); 270 271 Code = 0; 272 Ep = null (); 273 tp = Tp; 274 275 call get_header; 276 if hash_search (Key, "0"b) 277 then do; 278 Code = error_table_$id_already_exists; 279 return; 280 end; 281 282 if ep = null () 283 then do; 284 Code = error_table_$noalloc; 285 return; 286 end; 287 288 entry.key = Key; 289 entry.used = "1"b; 290 mt_header.used_entries = mt_header.used_entries + 1; 291 call set_checkpoint; 292 Ep = addrel (ep, size (entry)); 293 return; 294 295 /* * * * * * * * * * FIND_ENTRY * * * * * * * * * */ 296 297 find_entry: 298 entry (Tp, Key, Ep, Code); 299 300 case_ins = "0"b; 301 go to find_entry_common; 302 303 find_entry_case_ins: 304 entry (Tp, Key, Ep, Code); 305 306 case_ins = "1"b; 307 308 find_entry_common: 309 Code = 0; 310 Ep = null (); 311 tp = Tp; 312 313 call get_header; 314 if case_ins & mt_header.version = 1 315 then do; /* No case-insensitive searching in v1 */ 316 Code = error_table_$unimplemented_version; 317 return; 318 end; 319 if ^hash_search (Key, case_ins) 320 then do; 321 Code = error_table_$id_not_found; 322 return; 323 end; 324 if ep = null () 325 then do; /* Ambiguous */ 326 Code = error_table_$request_id_ambiguous; 327 return; 328 end; 329 330 Ep = addrel (ep, size (entry)); /* return pointer to HIS part of entry */ 331 return; 332 333 /* * * * * * * * * * DELETE_ENTRY * * * * * * * * * */ 334 335 delete_entry: 336 entry (Tp, Key, Code); 337 338 Code = 0; 339 tp = Tp; 340 341 call get_header; 342 if ^hash_search (Key, "0"b) 343 then do; 344 Code = error_table_$id_not_found; 345 return; 346 end; 347 348 entry.deleted = "1"b; 349 mt_header.deleted_entries = mt_header.deleted_entries + 1; 350 call set_checkpoint; 351 return; 352 353 /* * * * * * * * * * ABS_ENTRY * * * * * * * ** * */ 354 355 abs_entry: 356 entry (Tp, Record, Key, Ep, Code); 357 358 Code = 0; 359 Ep = null (); 360 Key = ""; 361 tp = Tp; 362 363 call get_header; 364 record = Record - 1; 365 if record + mt_header.entry_offset >= mt_header.total_entries 366 then do; 367 Code = error_table_$bad_index; 368 return; 369 end; 370 call get_entry (record); 371 if entry.deleted | ^entry.used 372 then Code = error_table_$no_record; 373 else do; 374 Ep = addrel (ep, size (entry)); 375 Key = entry.key; 376 end; 377 return; 378 379 /* * * * * * * * * * NUMBER_ENTRIES * * * * * * * * * */ 380 381 number_entries: 382 entry (Tp) returns (unsigned fixed (18)); 383 384 tp = Tp; 385 386 call get_header; 387 return (mt_header.used_entries - mt_header.deleted_entries); 388 389 /* * * * * * * * * * GET_HEADER * * * * * * * * * */ 390 391 get_header: 392 procedure; 393 394 call msf_manager_$get_ptr (tp, 0, "0"b, hdrp, bc, code); 395 if hdrp = null () 396 then do; 397 Code = code; 398 goto return; 399 end; 400 segp = hdrp; 401 component = 0; 402 end; 403 404 /* * * * * * * * * * GET_COMPONENT * * * * * * * * * * */ 405 406 get_component: 407 procedure (Component); 408 409 declare Component unsigned fixed bin (18) parameter; 410 411 component = Component; 412 call msf_manager_$get_ptr (tp, component, "0"b, segp, bc, code); 413 if segp = null () 414 then do; 415 Code = code; 416 goto return; 417 end; 418 return; 419 end; 420 421 /* * * * * * * * * * SET_CHECKPOINT * * * * * * * * * */ 422 423 set_checkpoint: 424 procedure; 425 426 declare now fixed bin (71); 427 428 now = clock (); 429 do i = 0 to mt_header.number_components; 430 call get_component (i); 431 comp_header.dt_updated = now; 432 end; 433 end; 434 435 /* * * * * * * * * * HASH_SEARCH * * * * * * * * * */ 436 437 hash_search: 438 procedure (Key, Case_ins) returns (bit aligned); 439 440 declare ( 441 Key character (*), 442 Case_ins bit (1) 443 ) parameter; 444 declare (hash_key, match_key) character (32) aligned, 445 (found_one, case_ins) bit (1), 446 save_ep ptr, 447 hash fixed bin (35); 448 449 if mt_header.version = 1 450 then do; 451 hash_key, match_key = Key; 452 case_ins = "0"b; 453 end; 454 else do; /* Version 2, different hash */ 455 hash_key = lowercase (Key); 456 case_ins = Case_ins; 457 if case_ins 458 then match_key = hash_key; /* Lowercase */ 459 else match_key = Key; /* Normal */ 460 end; 461 hash = hash_index_ (addr (hash_key), 32, 1, mt_header.total_entries); 462 /* mt_header.meters.searches = mt_header.meters.searches + 1; */ 463 found_one = "0"b; 464 save_ep = null (); 465 do enum = hash to mt_header.total_entries - mt_header.entry_offset - 1, 0 to hash - 1; 466 call get_entry (enum); /* mt_header.meters.entries_examined = mt_header.meters.entries_examined + 1; */ 467 if ^entry.used 468 then do; /* End of hash bucket */ 469 if case_ins & found_one 470 then do; 471 ep = save_ep; 472 return ("1"b); 473 end; 474 return ("0"b); /* Don't null pointer to unused entry */ 475 end; 476 if ^entry.deleted 477 then do; 478 if case_ins 479 then do; /* Case-insensitive match */ 480 if lowercase (entry.key) = match_key 481 then if found_one 482 then do; 483 ep = null (); 484 /* This nonsense combination */ 485 return ("1"b); 486 /* indicates ambiguous match */ 487 end; 488 else do; 489 found_one = "1"b; 490 save_ep = ep; 491 /* Save for later */ 492 end; 493 end; /* Case-sensitive match */ 494 else if entry.key = match_key 495 then return ("1"b); 496 end; 497 end; 498 if found_one 499 then do; 500 ep = save_ep; 501 return ("1"b); 502 end; 503 else do; 504 ep = null (); 505 return ("0"b); 506 end; 507 508 lowercase: 509 proc (String) returns (char (32)) reducible; 510 511 dcl String char (*) parameter; 512 dcl ( 513 LOWER init ("abcdefghijklmnopqrstuvwxyz"), 514 UPPER init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ") 515 ) char (26) int static options (constant); 516 dcl translate builtin; 517 518 return (translate (String, LOWER, UPPER)); 519 520 end lowercase; 521 522 523 end hash_search; 524 525 /* * * * * * * * * * GET_ENTRY * * * * * * * * * */ 526 527 get_entry: 528 procedure (Enum); 529 530 declare Enum fixed bin (35) parameter, 531 enum fixed bin (35), 532 ecomp unsigned fixed bin (18); 533 534 enum = Enum + mt_header.entry_offset; 535 ecomp = divide (enum, mt_header.entries_per_component, 18); 536 if ecomp ^= component 537 then call get_component (ecomp); 538 ep = pointer (segp, 539 size (comp_header) + (size (entry) + mt_header.entry_size) * mod (enum, mt_header.entries_per_component)); 540 end get_entry; 541 542 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/05/84 0851.1 ms_table_mgr_v2_.pl1 >special_ldd>temp>as>ms_table_mgr_v2_.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. Case_ins parameter bit(1) unaligned dcl 440 ref 437 456 Code parameter fixed bin(35,0) dcl 20 set ref 121 126* 132* 141* 144* 154* 176* 192 195* 201* 208* 213* 222 225* 234* 242 245* 257 260* 268 271* 278* 284* 297 303 308* 316* 321* 326* 335 338* 344* 355 358* 367* 371* 397* 415* Component parameter fixed bin(18,0) unsigned dcl 409 ref 406 411 Create_info parameter pointer dcl 20 ref 121 128 128 157 242 250 Dirname parameter char unaligned dcl 20 set ref 121 136* 192 198* Ename parameter char unaligned dcl 20 set ref 121 136* 192 198* Enum parameter fixed bin(35,0) dcl 530 ref 527 534 Ep parameter pointer dcl 20 set ref 268 272* 292* 297 303 310* 330* 355 359* 374* Hp parameter pointer dcl 20 set ref 192 196* 216* 242 246* 251* Key parameter char unaligned dcl 440 in procedure "hash_search" set ref 437 451 455* 459 Key parameter char unaligned dcl 20 in procedure "ms_table_mgr_v2_" set ref 268 276* 288 297 303 319* 335 342* 355 360* 375* LOWER 000007 constant char(26) initial unaligned dcl 512 ref 518 Ne parameter fixed bin(35,0) dcl 20 set ref 242 245* 252* Record parameter fixed bin(35,0) dcl 20 ref 355 364 String parameter char unaligned dcl 511 ref 508 518 Tp parameter pointer dcl 20 set ref 192 196* 217* 222 226 242 247 257 261 268 273 297 303 311 335 339 355 361 381 384 Type parameter char dcl 20 ref 192 211 211 UPPER 000000 constant char(26) initial unaligned dcl 512 ref 518 addr builtin function dcl 116 ref 461 461 addrel builtin function dcl 116 ref 292 330 374 bc 000102 automatic fixed bin(24,0) dcl 104 set ref 148* 150* 173* 394* 412* case_ins 000221 automatic bit(1) unaligned dcl 444 in procedure "hash_search" set ref 452* 456* 457 469 478 case_ins 000110 automatic bit(1) unaligned dcl 104 in procedure "ms_table_mgr_v2_" set ref 300* 306* 314 319* clock builtin function dcl 116 ref 171 428 code 000100 automatic fixed bin(35,0) dcl 104 set ref 136* 137 139 144 148* 150* 154 173* 174 176 182* 183* 198* 201 394* 397 412* 415 comp_hdr based structure level 2 dcl 77 comp_header based structure level 1 dcl 78 set ref 159 161 538 comp_header_v2 based structure level 1 dcl 50 component 000103 automatic fixed bin(18,0) unsigned dcl 104 in procedure "ms_table_mgr_v2_" set ref 401* 411* 412* 536 component 14 based fixed bin(18,0) level 2 in structure "comp_header" unsigned dcl 78 in procedure "ms_table_mgr_v2_" set ref 181* 231 deleted 0(01) based bit(1) level 2 packed unaligned dcl 79 set ref 348* 371 476 deleted_entries 36 based fixed bin(35,0) level 2 dcl 77 set ref 158* 252 349* 349 387 divide builtin function dcl 116 ref 159 161 166 535 dt_created 10 based fixed bin(71,0) level 2 dcl 78 set ref 180* dt_updated 12 based fixed bin(71,0) level 2 in structure "comp_header" dcl 78 in procedure "ms_table_mgr_v2_" set ref 180* 231 431* dt_updated 12 based fixed bin(71,0) level 3 in structure "mt_header" dcl 77 in procedure "ms_table_mgr_v2_" ref 231 ecomp 000251 automatic fixed bin(18,0) unsigned dcl 530 set ref 535* 536 536* entries_per_component 33 based fixed bin(18,0) level 2 unsigned dcl 77 set ref 159* 166 168 535 538 entry based structure level 1 dcl 79 set ref 159 161 292 330 374 538 entry_offset 34 based fixed bin(18,0) level 2 unsigned dcl 77 set ref 161* 166 168 365 465 534 entry_size 27 based fixed bin(18,0) level 3 unsigned dcl 77 set ref 159 161 538 entry_v2 based structure level 1 dcl 56 enum 000104 automatic fixed bin(35,0) dcl 104 in procedure "ms_table_mgr_v2_" set ref 465* 466* enum 000250 automatic fixed bin(35,0) dcl 530 in procedure "get_entry" set ref 534* 535 538 ep 000112 automatic pointer dcl 104 set ref 159 161 282 288 289 292 292 324 330 330 348 371 371 374 374 375 467 471* 476 480 483* 490 494 500* 504* 538* 538 error_table_$bad_index 000012 external static fixed bin(35,0) dcl 81 ref 367 error_table_$id_already_exists 000030 external static fixed bin(35,0) dcl 81 ref 278 error_table_$id_not_found 000032 external static fixed bin(35,0) dcl 81 ref 321 344 error_table_$inconsistent 000020 external static fixed bin(35,0) dcl 81 ref 213 234 error_table_$namedup 000010 external static fixed bin(35,0) dcl 81 ref 141 error_table_$no_record 000014 external static fixed bin(35,0) dcl 81 ref 371 error_table_$noalloc 000022 external static fixed bin(35,0) dcl 81 ref 284 error_table_$noentry 000024 external static fixed bin(35,0) dcl 81 ref 137 error_table_$request_id_ambiguous 000026 external static fixed bin(35,0) dcl 81 ref 326 error_table_$unimplemented_version 000016 external static fixed bin(35,0) dcl 81 ref 132 208 316 found_one 000220 automatic bit(1) unaligned dcl 444 set ref 463* 469 480 489* 498 hash 000224 automatic fixed bin(35,0) dcl 444 set ref 461* 465 465 hash_index_ 000034 constant entry external dcl 94 ref 461 hash_key 000200 automatic char(32) dcl 444 set ref 451* 455* 457 461 461 hcs_$set_bc_seg 000036 constant entry external dcl 94 ref 183 hcs_$set_max_length_seg 000040 constant entry external dcl 94 ref 182 hdrp 000114 automatic pointer dcl 104 set ref 150* 152 157 158 158 159 159 159 161 161 161 166 166 166 166 168 168 168 168 172 179 182 183 205 205 211 216 229 231 231 250 251 251 252 252 290 290 314 349 349 365 365 387 387 394* 395 400 429 449 461 465 465 534 535 538 538 header_size 26 based fixed bin(18,0) level 3 unsigned dcl 77 set ref 161 i 000101 automatic fixed bin(18,0) unsigned dcl 104 set ref 172* 173* 181* 229* 230* 231* 429* 430* key 2 based char(32) level 2 packed unaligned dcl 79 set ref 288* 375 480* 494 match_key 000210 automatic char(32) dcl 444 set ref 451* 457* 459* 480 494 max builtin function dcl 116 ref 166 max_entries 30 based fixed bin(18,0) level 3 unsigned dcl 77 set ref 166 max_size 31 based fixed bin(19,0) level 3 dcl 77 set ref 159 182 183 mod builtin function dcl 116 ref 538 ms_table_info_v2 based structure level 1 dcl 65 set ref 157 250* ms_table_info_version_2 constant fixed bin(17,0) initial dcl 62 ref 128 205 msf_manager_$close 000046 constant entry external dcl 94 ref 142 186 263 msf_manager_$get_ptr 000044 constant entry external dcl 94 ref 148 150 173 394 412 msf_manager_$open 000042 constant entry external dcl 94 ref 136 198 mt_header based structure level 1 dcl 77 set ref 251 mt_header_v2 based structure level 1 dcl 39 ref 161 216 mti 15 based structure level 2 dcl 77 set ref 157* 250 now 000166 automatic fixed bin(71,0) dcl 426 in procedure "set_checkpoint" set ref 428* 431 now 000106 automatic fixed bin(71,0) dcl 104 in procedure "ms_table_mgr_v2_" set ref 171* 180 null builtin function dcl 116 ref 152 196 199 246 272 282 310 324 359 395 413 464 483 504 number_components 32 based fixed bin(18,0) level 2 unsigned dcl 77 set ref 166* 168 172 229 429 pointer builtin function dcl 116 ref 216 251 538 record 000105 automatic fixed bin(35,0) dcl 104 set ref 364* 365 370* save_ep 000222 automatic pointer dcl 444 set ref 464* 471 490* 500 segp 000116 automatic pointer dcl 104 set ref 148* 159 161 173* 179 180 180 181 182* 183* 231 231 231 400* 412* 413 431 538 538 size builtin function dcl 116 ref 159 159 161 161 161 216 251 292 330 374 538 538 total_entries 35 based fixed bin(35,0) level 2 dcl 77 set ref 168* 365 461* 465 tp 000120 automatic pointer dcl 104 set ref 136* 142* 148* 150* 173* 186* 198* 199 217 226* 247* 261* 263* 273* 311* 339* 361* 384* 394* 412* translate builtin function dcl 516 ref 518 type 16 based char(32) level 3 in structure "mt_header" dcl 77 in procedure "ms_table_mgr_v2_" set ref 179 211 231 type based char(32) level 2 in structure "comp_header" dcl 78 in procedure "ms_table_mgr_v2_" set ref 179* 231 used based bit(1) level 2 packed unaligned dcl 79 set ref 289* 371 467 used_entries 37 based fixed bin(35,0) level 2 dcl 77 set ref 158* 252 290* 290 387 version 15 based fixed bin(17,0) level 3 in structure "mt_header" dcl 77 in procedure "ms_table_mgr_v2_" set ref 205 205 314 449 version based fixed bin(17,0) level 2 in structure "ms_table_info_v2" dcl 65 in procedure "ms_table_mgr_v2_" set ref 128 128 NAMES DECLARED BY EXPLICIT CONTEXT. abs_entry 001564 constant entry external dcl 355 close 001051 constant entry external dcl 257 create 000054 constant entry external dcl 121 delete_entry 001454 constant entry external dcl 335 find_entry 001257 constant entry external dcl 297 find_entry_case_ins 001306 constant entry external dcl 303 find_entry_common 001333 constant label dcl 308 ref 301 get_component 002021 constant entry internal dcl 406 ref 230 430 536 get_entry 002447 constant entry internal dcl 527 ref 370 466 get_header 001761 constant entry internal dcl 391 ref 204 228 249 275 313 341 363 386 hash_search 002103 constant entry internal dcl 437 ref 276 319 342 lowercase 002421 constant entry internal dcl 508 ref 455 480 ms_table_mgr_v2_ 000037 constant entry external dcl 12 new_entry 001114 constant entry external dcl 268 number_entries 001723 constant entry external dcl 381 open 000474 constant entry external dcl 192 return 000457 constant label dcl 187 ref 398 416 set_checkpoint 002060 constant entry internal dcl 423 ref 291 350 table_data 000767 constant entry external dcl 242 verify 000670 constant entry external dcl 222 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3226 3276 2722 3236 Length 3530 2722 50 215 304 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ms_table_mgr_v2_ 255 external procedure is an external procedure. get_header internal procedure shares stack frame of external procedure ms_table_mgr_v2_. get_component internal procedure shares stack frame of external procedure ms_table_mgr_v2_. set_checkpoint internal procedure shares stack frame of external procedure ms_table_mgr_v2_. hash_search internal procedure shares stack frame of external procedure ms_table_mgr_v2_. lowercase internal procedure shares stack frame of external procedure ms_table_mgr_v2_. get_entry internal procedure shares stack frame of external procedure ms_table_mgr_v2_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ms_table_mgr_v2_ 000100 code ms_table_mgr_v2_ 000101 i ms_table_mgr_v2_ 000102 bc ms_table_mgr_v2_ 000103 component ms_table_mgr_v2_ 000104 enum ms_table_mgr_v2_ 000105 record ms_table_mgr_v2_ 000106 now ms_table_mgr_v2_ 000110 case_ins ms_table_mgr_v2_ 000112 ep ms_table_mgr_v2_ 000114 hdrp ms_table_mgr_v2_ 000116 segp ms_table_mgr_v2_ 000120 tp ms_table_mgr_v2_ 000166 now set_checkpoint 000200 hash_key hash_search 000210 match_key hash_search 000220 found_one hash_search 000221 case_ins hash_search 000222 save_ep hash_search 000224 hash hash_search 000250 enum get_entry 000251 ecomp get_entry THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return mod_fx1 signal shorten_stack ext_entry ext_entry_desc clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. hash_index_ hcs_$set_bc_seg hcs_$set_max_length_seg msf_manager_$close msf_manager_$get_ptr msf_manager_$open THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_index error_table_$id_already_exists error_table_$id_not_found error_table_$inconsistent error_table_$namedup error_table_$no_record error_table_$noalloc error_table_$noentry error_table_$request_id_ambiguous error_table_$unimplemented_version CONSTANTS 002502 aa 000002000000 002503 aa 000000000000 002504 aa 600000000041 002505 aa 000251000000 002506 aa 000 001 002 003  002507 aa 004 005 006 007  002510 aa 010 011 012 013  002511 aa 014 015 016 017  002512 aa 020 021 022 023  002513 aa 024 025 026 027  002514 aa 030 031 032 033  002515 aa 034 035 036 037  002516 aa 040 041 042 043 !"# 002517 aa 044 045 046 047 $%&' 002520 aa 050 051 052 053 ()*+ 002521 aa 054 055 056 057 ,-./ 002522 aa 060 061 062 063 0123 002523 aa 064 065 066 067 4567 002524 aa 070 071 072 073 89:; 002525 aa 074 075 076 077 <=>? 002526 aa 100 141 142 143 @abc 002527 aa 144 145 146 147 defg 002530 aa 150 151 152 153 hijk 002531 aa 154 155 156 157 lmno 002532 aa 160 161 162 163 pqrs 002533 aa 164 165 166 167 tuvw 002534 aa 170 171 172 133 xyz[ 002535 aa 134 135 136 137 \]^_ 002536 aa 140 141 142 143 `abc 002537 aa 144 145 146 147 defg 002540 aa 150 151 152 153 hijk 002541 aa 154 155 156 157 lmno 002542 aa 160 161 162 163 pqrs 002543 aa 164 165 166 167 tuvw 002544 aa 170 171 172 173 xyz{ 002545 aa 174 175 176 177 |}~ 002546 aa 200 201 202 203 002547 aa 204 205 206 207 002550 aa 210 211 212 213 002551 aa 214 215 216 217 002552 aa 220 221 222 223 002553 aa 224 225 226 227 002554 aa 230 231 232 233 002555 aa 234 235 236 237 002556 aa 240 241 242 243 002557 aa 244 245 246 247 002560 aa 250 251 252 253 002561 aa 254 255 256 257 002562 aa 260 261 262 263 002563 aa 264 265 266 267 002564 aa 270 271 272 273 002565 aa 274 275 276 277 002566 aa 300 301 302 303 002567 aa 304 305 306 307 002570 aa 310 311 312 313 002571 aa 314 315 316 317 002572 aa 320 321 322 323 002573 aa 324 325 326 327 002574 aa 330 331 332 333 002575 aa 334 335 336 337 002576 aa 340 341 342 343 002577 aa 344 345 346 347 002600 aa 350 351 352 353 002601 aa 354 355 356 357 002602 aa 360 361 362 363 002603 aa 364 365 366 367 002604 aa 370 371 372 373 002605 aa 374 375 376 377 002606 aa 400 401 402 403  002607 aa 404 405 406 407  002610 aa 410 411 412 413  002611 aa 414 415 416 417  002612 aa 420 421 422 423  002613 aa 424 425 426 427  002614 aa 430 431 432 433  002615 aa 434 435 436 437  002616 aa 440 441 442 443 !"# 002617 aa 444 445 446 447 $%&' 002620 aa 450 451 452 453 ()*+ 002621 aa 454 455 456 457 ,-./ 002622 aa 460 461 462 463 0123 002623 aa 464 465 466 467 4567 002624 aa 470 471 472 473 89:; 002625 aa 474 475 476 477 <=>? 002626 aa 500 501 502 503 @ABC 002627 aa 504 505 506 507 DEFG 002630 aa 510 511 512 513 HIJK 002631 aa 514 515 516 517 LMNO 002632 aa 520 521 522 523 PQRS 002633 aa 524 525 526 527 TUVW 002634 aa 530 531 532 533 XYZ[ 002635 aa 534 535 536 537 \]^_ 002636 aa 540 541 542 543 `abc 002637 aa 544 545 546 547 defg 002640 aa 550 551 552 553 hijk 002641 aa 554 555 556 557 lmno 002642 aa 560 561 562 563 pqrs 002643 aa 564 565 566 567 tuvw 002644 aa 570 571 572 573 xyz{ 002645 aa 574 575 576 577 |}~ 002646 aa 600 601 602 603 002647 aa 604 605 606 607 002650 aa 610 611 612 613 002651 aa 614 615 616 617 002652 aa 620 621 622 623 002653 aa 624 625 626 627 002654 aa 630 631 632 633 002655 aa 634 635 636 637 002656 aa 640 641 642 643 002657 aa 644 645 646 647 002660 aa 650 651 652 653 002661 aa 654 655 656 657 002662 aa 660 661 662 663 002663 aa 664 665 666 667 002664 aa 670 671 672 673 002665 aa 674 675 676 677 002666 aa 700 701 702 703 002667 aa 704 705 706 707 002670 aa 710 711 712 713 002671 aa 714 715 716 717 002672 aa 720 721 722 723 002673 aa 724 725 726 727 002674 aa 730 731 732 733 002675 aa 734 735 736 737 002676 aa 740 741 742 743 002677 aa 744 745 746 747 002700 aa 750 751 752 753 002701 aa 754 755 756 757 002702 aa 760 761 762 763 002703 aa 764 765 766 767 002704 aa 770 771 772 773 002705 aa 774 775 776 777 002706 aa 000002000000 002707 aa 000000000000 002710 aa 600000000041 002711 aa 000104000000 002712 aa 000002000000 002713 aa 000000000000 002714 aa 600000000041 002715 aa 000105000000 002716 aa 000002000000 002717 aa 000000000000 002720 aa 600000000041 002721 aa 000101000000 000000 aa 101 102 103 104 ABCD 000001 aa 105 106 107 110 EFGH 000002 aa 111 112 113 114 IJKL 000003 aa 115 116 117 120 MNOP 000004 aa 121 122 123 124 QRST 000005 aa 125 126 127 130 UVWX 000006 aa 131 132 000 000 YZ 000007 aa 141 142 143 144 abcd 000010 aa 145 146 147 150 efgh 000011 aa 151 152 153 154 ijkl 000012 aa 155 156 157 160 mnop 000013 aa 161 162 163 164 qrst 000014 aa 165 166 167 170 uvwx 000015 aa 171 172 000 000 yz 000016 aa 526000000040 000017 aa 516000000001 000020 aa 514000000001 000021 aa 404000000043 000022 aa 524077777777 000023 aa 464000000000 000024 aa 526077777777 000025 aa 604000000022 000026 aa 077777000043 000027 aa 000001000000 000030 aa 162 145 164 165 retu 000031 aa 162 156 137 143 rn_c 000032 aa 157 156 166 145 onve 000033 aa 162 163 151 157 rsio 000034 aa 156 137 145 162 n_er 000035 aa 162 157 162 000 ror BEGIN PROCEDURE ms_table_mgr_v2_ ENTRY TO ms_table_mgr_v2_ STATEMENT 1 ON LINE 12 ms_table_mgr_v2_: procedure; 000036 da 000202200000 000037 aa 000400 6270 00 eax7 256 000040 aa 7 00034 3521 20 epp2 pr7|28,* 000041 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000042 aa 000000000000 000043 aa 000000000000 000044 aa 000001 2360 07 ldq 1,dl 000045 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 121 create: entry (Dirname, Ename, Create_info, Code); 000046 aa 000035 7100 04 tra 29,ic 000103 ENTRY TO create STATEMENT 1 ON LINE 121 create: entry (Dirname, Ename, Create_info, Code); 000047 at 000004000024 000050 tt 000024000023 000051 ta 000021000000 000052 ta 000047000000 000053 da 000207300000 000054 aa 000400 6270 00 eax7 256 000055 aa 7 00034 3521 20 epp2 pr7|28,* 000056 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000057 aa 000010000000 000060 aa 000000000000 000061 aa 6 00042 3735 20 epp7 pr6|34,* 000062 aa 7 00000 2361 20 ldq pr7|0,* 000063 aa 000002 6040 04 tmi 2,ic 000065 000064 aa 777777 3760 07 anq 262143,dl 000065 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000066 aa 6 00252 7561 00 stq pr6|170 000067 aa 7 00002 2361 20 ldq pr7|2,* 000070 aa 000002 6040 04 tmi 2,ic 000072 000071 aa 777777 3760 07 anq 262143,dl 000072 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000073 aa 6 00253 7561 00 stq pr6|171 000074 aa 6 00032 3715 20 epp5 pr6|26,* 000075 aa 5 00006 3535 20 epp3 pr5|6,* 000076 aa 6 00124 2535 00 spri3 pr6|84 000077 aa 5 00010 3515 20 epp1 pr5|8,* 000100 aa 6 00140 2515 00 spri1 pr6|96 000101 aa 000001 2360 07 ldq 1,dl 000102 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 126 Code = 0; 000103 aa 6 00140 4501 20 stz pr6|96,* Code STATEMENT 1 ON LINE 128 if Create_info -> ms_table_info_v2.version ^= ms_table_info_version_2 & Create_info -> ms_table_info_v2.version ^= 1 /* We still support version 1 */ then do; 000104 aa 6 00124 3735 20 epp7 pr6|84,* Create_info 000105 aa 7 00000 2361 20 ldq pr7|0,* ms_table_info_v2.version 000106 aa 000002 1160 07 cmpq 2,dl 000107 aa 000014 6000 04 tze 12,ic 000123 000110 aa 000001 1160 07 cmpq 1,dl 000111 aa 000012 6000 04 tze 10,ic 000123 STATEMENT 1 ON LINE 132 Code = error_table_$unimplemented_version; 000112 la 4 00016 2361 20 ldq pr4|14,* error_table_$unimplemented_version 000113 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 133 return; 000114 aa 6 00122 2361 00 ldq pr6|82 000115 aa 000005 6010 04 tnz 5,ic 000122 000116 aa 000027 7260 07 lxl6 23,dl 000117 aa 777711 3520 04 epp2 -55,ic 000030 = 162145164165 000120 aa 0 00716 7001 00 tsx0 pr0|462 signal 000121 aa 0 00631 7101 00 tra pr0|409 return 000122 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 134 end; STATEMENT 1 ON LINE 136 call msf_manager_$open (Dirname, Ename, tp, code); 000123 aa 6 00032 3715 20 epp5 pr6|26,* 000124 aa 5 00002 3521 20 epp2 pr5|2,* Dirname 000125 aa 6 00256 2521 00 spri2 pr6|174 000126 aa 5 00004 3521 20 epp2 pr5|4,* Ename 000127 aa 6 00260 2521 00 spri2 pr6|176 000130 aa 6 00120 3521 00 epp2 pr6|80 tp 000131 aa 6 00262 2521 00 spri2 pr6|178 000132 aa 6 00100 3521 00 epp2 pr6|64 code 000133 aa 6 00264 2521 00 spri2 pr6|180 000134 aa 6 00042 3535 20 epp3 pr6|34,* 000135 aa 3 00000 3521 20 epp2 pr3|0,* 000136 aa 6 00266 2521 00 spri2 pr6|182 000137 aa 3 00002 3521 20 epp2 pr3|2,* 000140 aa 6 00270 2521 00 spri2 pr6|184 000141 aa 777662 3520 04 epp2 -78,ic 000023 = 464000000000 000142 aa 6 00272 2521 00 spri2 pr6|186 000143 aa 777656 3520 04 epp2 -82,ic 000021 = 404000000043 000144 aa 6 00274 2521 00 spri2 pr6|188 000145 aa 6 00254 6211 00 eax1 pr6|172 000146 aa 020000 4310 07 fld 8192,dl 000147 la 4 00042 3521 20 epp2 pr4|34,* msf_manager_$open 000150 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 137 if code ^= error_table_$noentry then do; 000151 aa 6 00100 2361 00 ldq pr6|64 code 000152 aa 6 00044 3701 20 epp4 pr6|36,* 000153 la 4 00024 1161 20 cmpq pr4|20,* error_table_$noentry 000154 aa 000024 6000 04 tze 20,ic 000200 STATEMENT 1 ON LINE 139 if code = 0 then do; 000155 aa 6 00100 2361 00 ldq pr6|64 code 000156 aa 000012 6010 04 tnz 10,ic 000170 STATEMENT 1 ON LINE 141 Code = error_table_$namedup; 000157 la 4 00010 2361 20 ldq pr4|8,* error_table_$namedup 000160 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 142 call msf_manager_$close (tp); 000161 aa 6 00120 3521 00 epp2 pr6|80 tp 000162 aa 6 00256 2521 00 spri2 pr6|174 000163 aa 6 00254 6211 00 eax1 pr6|172 000164 aa 004000 4310 07 fld 2048,dl 000165 la 4 00046 3521 20 epp2 pr4|38,* msf_manager_$close 000166 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 143 end; 000167 aa 000002 7100 04 tra 2,ic 000171 STATEMENT 1 ON LINE 144 else Code = code; 000170 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 145 return; 000171 aa 6 00122 2361 00 ldq pr6|82 000172 aa 000005 6010 04 tnz 5,ic 000177 000173 aa 000027 7260 07 lxl6 23,dl 000174 aa 777634 3520 04 epp2 -100,ic 000030 = 162145164165 000175 aa 0 00716 7001 00 tsx0 pr0|462 signal 000176 aa 0 00631 7101 00 tra pr0|409 return 000177 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 146 end; STATEMENT 1 ON LINE 148 call msf_manager_$get_ptr (tp, 1, "1"b, segp, bc, code); 000200 aa 000001 2360 07 ldq 1,dl 000201 aa 6 00276 7561 00 stq pr6|190 000202 aa 400000 2350 03 lda 131072,du 000203 aa 6 00277 7551 00 sta pr6|191 000204 aa 6 00120 3521 00 epp2 pr6|80 tp 000205 aa 6 00256 2521 00 spri2 pr6|174 000206 aa 6 00276 3521 00 epp2 pr6|190 000207 aa 6 00260 2521 00 spri2 pr6|176 000210 aa 6 00277 3521 00 epp2 pr6|191 000211 aa 6 00262 2521 00 spri2 pr6|178 000212 aa 6 00116 3521 00 epp2 pr6|78 segp 000213 aa 6 00264 2521 00 spri2 pr6|180 000214 aa 6 00102 3521 00 epp2 pr6|66 bc 000215 aa 6 00266 2521 00 spri2 pr6|182 000216 aa 6 00100 3521 00 epp2 pr6|64 code 000217 aa 6 00270 2521 00 spri2 pr6|184 000220 aa 6 00254 6211 00 eax1 pr6|172 000221 aa 030000 4310 07 fld 12288,dl 000222 la 4 00044 3521 20 epp2 pr4|36,* msf_manager_$get_ptr 000223 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 150 call msf_manager_$get_ptr (tp, 0, "1"b, hdrp, bc, code); 000224 aa 6 00277 4501 00 stz pr6|191 000225 aa 400000 2350 03 lda 131072,du 000226 aa 6 00276 7551 00 sta pr6|190 000227 aa 6 00120 3521 00 epp2 pr6|80 tp 000230 aa 6 00256 2521 00 spri2 pr6|174 000231 aa 6 00277 3521 00 epp2 pr6|191 000232 aa 6 00260 2521 00 spri2 pr6|176 000233 aa 6 00276 3521 00 epp2 pr6|190 000234 aa 6 00262 2521 00 spri2 pr6|178 000235 aa 6 00114 3521 00 epp2 pr6|76 hdrp 000236 aa 6 00264 2521 00 spri2 pr6|180 000237 aa 6 00102 3521 00 epp2 pr6|66 bc 000240 aa 6 00266 2521 00 spri2 pr6|182 000241 aa 6 00100 3521 00 epp2 pr6|64 code 000242 aa 6 00270 2521 00 spri2 pr6|184 000243 aa 6 00254 6211 00 eax1 pr6|172 000244 aa 030000 4310 07 fld 12288,dl 000245 aa 6 00044 3701 20 epp4 pr6|36,* 000246 la 4 00044 3521 20 epp2 pr4|36,* msf_manager_$get_ptr 000247 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 152 if hdrp = null () then do; 000250 aa 6 00114 2371 00 ldaq pr6|76 hdrp 000251 aa 777555 6770 04 eraq -147,ic 000026 = 077777000043 000001000000 000252 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000253 aa 000012 6010 04 tnz 10,ic 000265 STATEMENT 1 ON LINE 154 Code = code; 000254 aa 6 00100 2361 00 ldq pr6|64 code 000255 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 155 return; 000256 aa 6 00122 2361 00 ldq pr6|82 000257 aa 000005 6010 04 tnz 5,ic 000264 000260 aa 000027 7260 07 lxl6 23,dl 000261 aa 777547 3520 04 epp2 -153,ic 000030 = 162145164165 000262 aa 0 00716 7001 00 tsx0 pr0|462 signal 000263 aa 0 00631 7101 00 tra pr0|409 return 000264 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 156 end; STATEMENT 1 ON LINE 157 mt_header.mti = Create_info -> ms_table_info_v2; 000265 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 000266 aa 6 00124 3715 20 epp5 pr6|84,* Create_info 000267 aa 5 00000 3715 20 epp5 pr5|0,* Create_info 000270 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000271 aa 5 00000 00 0064 desc9a pr5|0,52 ms_table_info_v2 000272 aa 7 00015 00 0064 desc9a pr7|13,52 mt_header.mti STATEMENT 1 ON LINE 158 mt_header.used_entries, mt_header.deleted_entries = 0; 000273 aa 7 00037 4501 00 stz pr7|31 mt_header.used_entries 000274 aa 7 00036 4501 00 stz pr7|30 mt_header.deleted_entries STATEMENT 1 ON LINE 159 mt_header.entries_per_component = divide (mt_header.max_size - size (comp_header), size (entry) + mt_header.entry_size, 18); 000275 aa 000012 2360 07 ldq 10,dl 000276 aa 7 00027 0761 00 adq pr7|23 mt_header.entry_size 000277 aa 6 00276 7561 00 stq pr6|190 000300 aa 7 00031 2361 00 ldq pr7|25 mt_header.max_size 000301 aa 000015 1760 07 sbq 13,dl 000302 aa 6 00276 5061 00 div pr6|190 000303 aa 7 00033 7561 00 stq pr7|27 mt_header.entries_per_component STATEMENT 1 ON LINE 161 mt_header.entry_offset = 1 + divide (size (mt_header_v2) - size (comp_header) + mt_header.header_size - 1, size (entry) + mt_header.entry_size, 18); 000304 aa 000012 2360 07 ldq 10,dl 000305 aa 7 00027 0761 00 adq pr7|23 mt_header.entry_size 000306 aa 6 00276 7561 00 stq pr6|190 000307 aa 000025 2360 07 ldq 21,dl 000310 aa 7 00026 0761 00 adq pr7|22 mt_header.header_size 000311 aa 000001 1760 07 sbq 1,dl 000312 aa 6 00276 5061 00 div pr6|190 000313 aa 000001 0760 07 adq 1,dl 000314 aa 7 00034 7561 00 stq pr7|28 mt_header.entry_offset STATEMENT 1 ON LINE 166 mt_header.number_components = max (1, divide (mt_header.max_entries + mt_header.entry_offset - 1, mt_header.entries_per_component, 18)); 000315 aa 7 00030 0761 00 adq pr7|24 mt_header.max_entries 000316 aa 000001 1760 07 sbq 1,dl 000317 aa 7 00033 5061 00 div pr7|27 mt_header.entries_per_component 000320 aa 000001 1160 07 cmpq 1,dl 000321 aa 000002 6050 04 tpl 2,ic 000323 000322 aa 000001 2360 07 ldq 1,dl 000323 aa 7 00032 7561 00 stq pr7|26 mt_header.number_components STATEMENT 1 ON LINE 168 mt_header.total_entries = (1 + mt_header.number_components) * mt_header.entries_per_component - mt_header.entry_offset; 000324 aa 000001 0760 07 adq 1,dl 000325 aa 7 00033 4021 00 mpy pr7|27 mt_header.entries_per_component 000326 aa 000000 5330 00 negl 0 000327 aa 7 00034 0331 00 adl pr7|28 mt_header.entry_offset 000330 aa 000000 5330 00 negl 0 000331 aa 7 00035 7561 00 stq pr7|29 mt_header.total_entries STATEMENT 1 ON LINE 171 now = clock (); 000332 aa 0 01435 7001 00 tsx0 pr0|797 clock 000333 aa 6 00106 7571 00 staq pr6|70 now STATEMENT 1 ON LINE 172 do i = 0 to mt_header.number_components; 000334 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 000335 aa 7 00032 2361 00 ldq pr7|26 mt_header.number_components 000336 aa 6 00142 7561 00 stq pr6|98 000337 aa 6 00101 4501 00 stz pr6|65 i 000340 aa 6 00101 2361 00 ldq pr6|65 i 000341 aa 6 00142 1161 00 cmpq pr6|98 000342 aa 000106 6054 04 tpnz 70,ic 000450 STATEMENT 1 ON LINE 173 call msf_manager_$get_ptr (tp, i, "1"b, segp, bc, code); 000343 aa 400000 2350 03 lda 131072,du 000344 aa 6 00276 7551 00 sta pr6|190 000345 aa 6 00120 3521 00 epp2 pr6|80 tp 000346 aa 6 00256 2521 00 spri2 pr6|174 000347 aa 6 00101 3521 00 epp2 pr6|65 i 000350 aa 6 00260 2521 00 spri2 pr6|176 000351 aa 6 00276 3521 00 epp2 pr6|190 000352 aa 6 00262 2521 00 spri2 pr6|178 000353 aa 6 00116 3521 00 epp2 pr6|78 segp 000354 aa 6 00264 2521 00 spri2 pr6|180 000355 aa 6 00102 3521 00 epp2 pr6|66 bc 000356 aa 6 00266 2521 00 spri2 pr6|182 000357 aa 6 00100 3521 00 epp2 pr6|64 code 000360 aa 6 00270 2521 00 spri2 pr6|184 000361 aa 6 00254 6211 00 eax1 pr6|172 000362 aa 030000 4310 07 fld 12288,dl 000363 aa 6 00044 3701 20 epp4 pr6|36,* 000364 la 4 00044 3521 20 epp2 pr4|36,* msf_manager_$get_ptr 000365 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 174 if code ^= 0 then do; 000366 aa 6 00100 2361 00 ldq pr6|64 code 000367 aa 000011 6000 04 tze 9,ic 000400 STATEMENT 1 ON LINE 176 Code = code; 000370 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 177 return; 000371 aa 6 00122 2361 00 ldq pr6|82 000372 aa 000005 6010 04 tnz 5,ic 000377 000373 aa 000027 7260 07 lxl6 23,dl 000374 aa 777434 3520 04 epp2 -228,ic 000030 = 162145164165 000375 aa 0 00716 7001 00 tsx0 pr0|462 signal 000376 aa 0 00631 7101 00 tra pr0|409 return 000377 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 178 end; STATEMENT 1 ON LINE 179 comp_header.type = mt_header.mti.type; 000400 aa 6 00116 3735 20 epp7 pr6|78,* segp 000401 aa 6 00114 3715 20 epp5 pr6|76,* hdrp 000402 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000403 aa 5 00016 00 0040 desc9a pr5|14,32 mt_header.type 000404 aa 7 00000 00 0040 desc9a pr7|0,32 comp_header.type STATEMENT 1 ON LINE 180 comp_header.dt_created, comp_header.dt_updated = now; 000405 aa 6 00106 2371 00 ldaq pr6|70 now 000406 aa 7 00010 7571 00 staq pr7|8 comp_header.dt_created 000407 aa 7 00012 7571 00 staq pr7|10 comp_header.dt_updated STATEMENT 1 ON LINE 181 comp_header.component = i; 000410 aa 6 00101 2361 00 ldq pr6|65 i 000411 aa 7 00014 7561 00 stq pr7|12 comp_header.component STATEMENT 1 ON LINE 182 call hcs_$set_max_length_seg (segp, (mt_header.max_size), code); 000412 aa 5 00031 2361 00 ldq pr5|25 mt_header.max_size 000413 aa 6 00276 7561 00 stq pr6|190 000414 aa 6 00116 3521 00 epp2 pr6|78 segp 000415 aa 6 00256 2521 00 spri2 pr6|174 000416 aa 6 00276 3521 00 epp2 pr6|190 000417 aa 6 00260 2521 00 spri2 pr6|176 000420 aa 6 00100 3521 00 epp2 pr6|64 code 000421 aa 6 00262 2521 00 spri2 pr6|178 000422 aa 6 00254 6211 00 eax1 pr6|172 000423 aa 014000 4310 07 fld 6144,dl 000424 aa 6 00044 3701 20 epp4 pr6|36,* 000425 la 4 00040 3521 20 epp2 pr4|32,* hcs_$set_max_length_seg 000426 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 183 call hcs_$set_bc_seg (segp, 36 * mt_header.max_size, code); 000427 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 000430 aa 7 00031 2361 00 ldq pr7|25 mt_header.max_size 000431 aa 000044 4020 07 mpy 36,dl 000432 aa 6 00276 7561 00 stq pr6|190 000433 aa 6 00116 3521 00 epp2 pr6|78 segp 000434 aa 6 00256 2521 00 spri2 pr6|174 000435 aa 6 00276 3521 00 epp2 pr6|190 000436 aa 6 00260 2521 00 spri2 pr6|176 000437 aa 6 00100 3521 00 epp2 pr6|64 code 000440 aa 6 00262 2521 00 spri2 pr6|178 000441 aa 6 00254 6211 00 eax1 pr6|172 000442 aa 014000 4310 07 fld 6144,dl 000443 aa 6 00044 3701 20 epp4 pr6|36,* 000444 la 4 00036 3521 20 epp2 pr4|30,* hcs_$set_bc_seg 000445 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 184 end; 000446 aa 6 00101 0541 00 aos pr6|65 i 000447 aa 777671 7100 04 tra -71,ic 000340 STATEMENT 1 ON LINE 186 call msf_manager_$close (tp); 000450 aa 6 00120 3521 00 epp2 pr6|80 tp 000451 aa 6 00256 2521 00 spri2 pr6|174 000452 aa 6 00254 6211 00 eax1 pr6|172 000453 aa 004000 4310 07 fld 2048,dl 000454 aa 6 00044 3701 20 epp4 pr6|36,* 000455 la 4 00046 3521 20 epp2 pr4|38,* msf_manager_$close 000456 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 187 return: return; 000457 aa 6 00122 2361 00 ldq pr6|82 000460 aa 000005 6010 04 tnz 5,ic 000465 000461 aa 000027 7260 07 lxl6 23,dl 000462 aa 777346 3520 04 epp2 -282,ic 000030 = 162145164165 000463 aa 0 00716 7001 00 tsx0 pr0|462 signal 000464 aa 0 00631 7101 00 tra pr0|409 return 000465 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO open STATEMENT 1 ON LINE 192 open: entry (Dirname, Ename, Type, Tp, Hp, Code); 000466 at 000006000024 000467 tt 000024000022 000470 tt 000023000023 000471 ta 000021000000 000472 ta 000466000000 000473 da 000212300000 000474 aa 000400 6270 00 eax7 256 000475 aa 7 00034 3521 20 epp2 pr7|28,* 000476 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000477 aa 000014000000 000500 aa 000000000000 000501 aa 6 00042 3735 20 epp7 pr6|34,* 000502 aa 7 00000 2361 20 ldq pr7|0,* 000503 aa 000002 6040 04 tmi 2,ic 000505 000504 aa 777777 3760 07 anq 262143,dl 000505 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000506 aa 6 00252 7561 00 stq pr6|170 000507 aa 7 00002 2361 20 ldq pr7|2,* 000510 aa 000002 6040 04 tmi 2,ic 000512 000511 aa 777777 3760 07 anq 262143,dl 000512 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000513 aa 6 00253 7561 00 stq pr6|171 000514 aa 7 00004 2361 20 ldq pr7|4,* 000515 aa 000002 6040 04 tmi 2,ic 000517 000516 aa 777777 3760 07 anq 262143,dl 000517 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000520 aa 6 00302 7561 00 stq pr6|194 000521 aa 6 00032 3715 20 epp5 pr6|26,* 000522 aa 5 00010 3535 20 epp3 pr5|8,* 000523 aa 6 00126 2535 00 spri3 pr6|86 000524 aa 5 00012 3515 20 epp1 pr5|10,* 000525 aa 6 00130 2515 00 spri1 pr6|88 000526 aa 5 00014 3735 20 epp7 pr5|12,* 000527 aa 6 00140 6535 00 spri7 pr6|96 000530 aa 000001 2360 07 ldq 1,dl 000531 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 195 Code = 0; 000532 aa 6 00140 4501 20 stz pr6|96,* Code STATEMENT 1 ON LINE 196 Tp, Hp = null (); 000533 aa 777273 3734 24 epp7 -325,ic* 000534 aa 6 00126 6535 20 spri7 pr6|86,* Tp 000535 aa 6 00130 6535 20 spri7 pr6|88,* Hp STATEMENT 1 ON LINE 198 call msf_manager_$open (Dirname, Ename, tp, code); 000536 aa 6 00032 3715 20 epp5 pr6|26,* 000537 aa 5 00002 3521 20 epp2 pr5|2,* Dirname 000540 aa 6 00256 2521 00 spri2 pr6|174 000541 aa 5 00004 3521 20 epp2 pr5|4,* Ename 000542 aa 6 00260 2521 00 spri2 pr6|176 000543 aa 6 00120 3521 00 epp2 pr6|80 tp 000544 aa 6 00262 2521 00 spri2 pr6|178 000545 aa 6 00100 3521 00 epp2 pr6|64 code 000546 aa 6 00264 2521 00 spri2 pr6|180 000547 aa 6 00042 3535 20 epp3 pr6|34,* 000550 aa 3 00000 3521 20 epp2 pr3|0,* 000551 aa 6 00266 2521 00 spri2 pr6|182 000552 aa 3 00002 3521 20 epp2 pr3|2,* 000553 aa 6 00270 2521 00 spri2 pr6|184 000554 aa 777247 3520 04 epp2 -345,ic 000023 = 464000000000 000555 aa 6 00272 2521 00 spri2 pr6|186 000556 aa 777243 3520 04 epp2 -349,ic 000021 = 404000000043 000557 aa 6 00274 2521 00 spri2 pr6|188 000560 aa 6 00254 6211 00 eax1 pr6|172 000561 aa 020000 4310 07 fld 8192,dl 000562 aa 6 00044 3701 20 epp4 pr6|36,* 000563 la 4 00042 3521 20 epp2 pr4|34,* msf_manager_$open 000564 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 199 if tp = null () then do; 000565 aa 6 00120 2371 00 ldaq pr6|80 tp 000566 aa 777240 6770 04 eraq -352,ic 000026 = 077777000043 000001000000 000567 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000570 aa 000012 6010 04 tnz 10,ic 000602 STATEMENT 1 ON LINE 201 Code = code; 000571 aa 6 00100 2361 00 ldq pr6|64 code 000572 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 202 return; 000573 aa 6 00122 2361 00 ldq pr6|82 000574 aa 000005 6010 04 tnz 5,ic 000601 000575 aa 000027 7260 07 lxl6 23,dl 000576 aa 777232 3520 04 epp2 -358,ic 000030 = 162145164165 000577 aa 0 00716 7001 00 tsx0 pr0|462 signal 000600 aa 0 00631 7101 00 tra pr0|409 return 000601 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 203 end; STATEMENT 1 ON LINE 204 call get_header; 000602 aa 001157 6700 04 tsp4 623,ic 001761 STATEMENT 1 ON LINE 205 if mt_header.version ^= ms_table_info_version_2 & mt_header.version ^= 1 /* Upward compatible */ then do; 000603 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 000604 aa 7 00015 2361 00 ldq pr7|13 mt_header.version 000605 aa 000002 1160 07 cmpq 2,dl 000606 aa 000015 6000 04 tze 13,ic 000623 000607 aa 000001 1160 07 cmpq 1,dl 000610 aa 000013 6000 04 tze 11,ic 000623 STATEMENT 1 ON LINE 208 Code = error_table_$unimplemented_version; 000611 aa 6 00044 3701 20 epp4 pr6|36,* 000612 la 4 00016 2361 20 ldq pr4|14,* error_table_$unimplemented_version 000613 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 209 return; 000614 aa 6 00122 2361 00 ldq pr6|82 000615 aa 000005 6010 04 tnz 5,ic 000622 000616 aa 000027 7260 07 lxl6 23,dl 000617 aa 777211 3520 04 epp2 -375,ic 000030 = 162145164165 000620 aa 0 00716 7001 00 tsx0 pr0|462 signal 000621 aa 0 00631 7101 00 tra pr0|409 return 000622 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 210 end; STATEMENT 1 ON LINE 211 if (mt_header.mti.type ^= Type) & (Type ^= "") then do; 000623 aa 6 00032 3715 20 epp5 pr6|26,* 000624 aa 5 00006 3535 20 epp3 pr5|6,* 000625 aa 6 00302 2351 00 lda pr6|194 000626 aa 040 140 106 500 cmpc (pr),(pr,rl),fill(040) 000627 aa 7 00016 00 0040 desc9a pr7|14,32 mt_header.type 000630 aa 3 00000 00 0005 desc9a pr3|0,al Type 000631 aa 000017 6000 04 tze 15,ic 000650 000632 aa 040 004 106 540 cmpc (pr,rl),(ic),fill(040) 000633 aa 3 00000 00 0005 desc9a pr3|0,al Type 000634 aa 002070 00 0000 desc9a 1080,0 002722 = 000010000000 000635 aa 000013 6000 04 tze 11,ic 000650 STATEMENT 1 ON LINE 213 Code = error_table_$inconsistent; 000636 aa 6 00044 3701 20 epp4 pr6|36,* 000637 la 4 00020 2361 20 ldq pr4|16,* error_table_$inconsistent 000640 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 214 return; 000641 aa 6 00122 2361 00 ldq pr6|82 000642 aa 000005 6010 04 tnz 5,ic 000647 000643 aa 000027 7260 07 lxl6 23,dl 000644 aa 777164 3520 04 epp2 -396,ic 000030 = 162145164165 000645 aa 0 00716 7001 00 tsx0 pr0|462 signal 000646 aa 0 00631 7101 00 tra pr0|409 return 000647 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 215 end; STATEMENT 1 ON LINE 216 Hp = pointer (hdrp, size (mt_header_v2)); 000650 aa 7 00000 3521 00 epp2 pr7|0 000651 aa 000042 3120 00 eawp2 34 000652 aa 6 00130 2521 20 spri2 pr6|88,* Hp STATEMENT 1 ON LINE 217 Tp = tp; 000653 aa 6 00120 3515 20 epp1 pr6|80,* tp 000654 aa 6 00126 2515 20 spri1 pr6|86,* Tp STATEMENT 1 ON LINE 218 return; 000655 aa 6 00122 2361 00 ldq pr6|82 000656 aa 000005 6010 04 tnz 5,ic 000663 000657 aa 000027 7260 07 lxl6 23,dl 000660 aa 777150 3520 04 epp2 -408,ic 000030 = 162145164165 000661 aa 0 00716 7001 00 tsx0 pr0|462 signal 000662 aa 0 00631 7101 00 tra pr0|409 return 000663 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO verify STATEMENT 1 ON LINE 222 verify: entry (Tp, Code); 000664 at 000002000023 000665 ta 000021000000 000666 ta 000664000000 000667 da 000217300000 000670 aa 000400 6270 00 eax7 256 000671 aa 7 00034 3521 20 epp2 pr7|28,* 000672 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000673 aa 000004000000 000674 aa 000000000000 000675 aa 6 00032 3735 20 epp7 pr6|26,* 000676 aa 7 00002 3715 20 epp5 pr7|2,* 000677 aa 6 00126 6515 00 spri5 pr6|86 000700 aa 7 00004 3535 20 epp3 pr7|4,* 000701 aa 6 00140 2535 00 spri3 pr6|96 000702 aa 000001 2360 07 ldq 1,dl 000703 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 225 Code = 0; 000704 aa 6 00140 4501 20 stz pr6|96,* Code STATEMENT 1 ON LINE 226 tp = Tp; 000705 aa 6 00126 3735 20 epp7 pr6|86,* Tp 000706 aa 7 00000 3735 20 epp7 pr7|0,* Tp 000707 aa 6 00120 6535 00 spri7 pr6|80 tp STATEMENT 1 ON LINE 228 call get_header; 000710 aa 001051 6700 04 tsp4 553,ic 001761 STATEMENT 1 ON LINE 229 do i = 0 to mt_header.number_components; 000711 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 000712 aa 7 00032 2361 00 ldq pr7|26 mt_header.number_components 000713 aa 6 00143 7561 00 stq pr6|99 000714 aa 6 00101 4501 00 stz pr6|65 i 000715 aa 000000 0110 03 nop 0,du 000716 aa 6 00101 2361 00 ldq pr6|65 i 000717 aa 6 00143 1161 00 cmpq pr6|99 000720 aa 000033 6054 04 tpnz 27,ic 000753 STATEMENT 1 ON LINE 230 call get_component (i); 000721 aa 001775 3520 04 epp2 1021,ic 002716 = 000002000000 000722 aa 001077 6700 04 tsp4 575,ic 002021 STATEMENT 1 ON LINE 231 if comp_header.type ^= mt_header.mti.type | comp_header.component ^= i | comp_header.dt_updated ^= mt_header.comp_hdr.dt_updated then do; 000723 aa 6 00116 3735 20 epp7 pr6|78,* segp 000724 aa 6 00114 3715 20 epp5 pr6|76,* hdrp 000725 aa 040 100 106 500 cmpc (pr),(pr),fill(040) 000726 aa 7 00000 00 0040 desc9a pr7|0,32 comp_header.type 000727 aa 5 00016 00 0040 desc9a pr5|14,32 mt_header.type 000730 aa 000007 6010 04 tnz 7,ic 000737 000731 aa 7 00014 2361 00 ldq pr7|12 comp_header.component 000732 aa 6 00101 1161 00 cmpq pr6|65 i 000733 aa 000004 6010 04 tnz 4,ic 000737 000734 aa 7 00012 2371 00 ldaq pr7|10 comp_header.dt_updated 000735 aa 5 00012 1171 00 cmpaq pr5|10 mt_header.dt_updated 000736 aa 000013 6000 04 tze 11,ic 000751 STATEMENT 1 ON LINE 234 Code = error_table_$inconsistent; 000737 aa 6 00044 3701 20 epp4 pr6|36,* 000740 la 4 00020 2361 20 ldq pr4|16,* error_table_$inconsistent 000741 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 235 return; 000742 aa 6 00122 2361 00 ldq pr6|82 000743 aa 000005 6010 04 tnz 5,ic 000750 000744 aa 000027 7260 07 lxl6 23,dl 000745 aa 777063 3520 04 epp2 -461,ic 000030 = 162145164165 000746 aa 0 00716 7001 00 tsx0 pr0|462 signal 000747 aa 0 00631 7101 00 tra pr0|409 return 000750 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 236 end; STATEMENT 1 ON LINE 237 end; 000751 aa 6 00101 0541 00 aos pr6|65 i 000752 aa 777744 7100 04 tra -28,ic 000716 STATEMENT 1 ON LINE 238 return; 000753 aa 6 00122 2361 00 ldq pr6|82 000754 aa 000005 6010 04 tnz 5,ic 000761 000755 aa 000027 7260 07 lxl6 23,dl 000756 aa 777052 3520 04 epp2 -470,ic 000030 = 162145164165 000757 aa 0 00716 7001 00 tsx0 pr0|462 signal 000760 aa 0 00631 7101 00 tra pr0|409 return 000761 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO table_data STATEMENT 1 ON LINE 242 table_data: entry (Tp, Create_info, Hp, Ne, Code); 000762 at 000005000023 000763 tt 000023000023 000764 tt 000021000021 000765 ta 000762000000 000766 da 000225300000 000767 aa 000400 6270 00 eax7 256 000770 aa 7 00034 3521 20 epp2 pr7|28,* 000771 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000772 aa 000012000000 000773 aa 000000000000 000774 aa 6 00032 3735 20 epp7 pr6|26,* 000775 aa 7 00002 3715 20 epp5 pr7|2,* 000776 aa 6 00126 6515 00 spri5 pr6|86 000777 aa 7 00004 3535 20 epp3 pr7|4,* 001000 aa 6 00124 2535 00 spri3 pr6|84 001001 aa 7 00006 3515 20 epp1 pr7|6,* 001002 aa 6 00130 2515 00 spri1 pr6|88 001003 aa 7 00012 3715 20 epp5 pr7|10,* 001004 aa 6 00140 6515 00 spri5 pr6|96 001005 aa 000001 2360 07 ldq 1,dl 001006 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 245 Code, Ne = 0; 001007 aa 6 00140 4501 20 stz pr6|96,* Code 001010 aa 6 00032 3735 20 epp7 pr6|26,* 001011 aa 7 00010 4501 20 stz pr7|8,* Ne STATEMENT 1 ON LINE 246 Hp = null (); 001012 aa 777014 2370 04 ldaq -500,ic 000026 = 077777000043 000001000000 001013 aa 6 00130 7571 20 staq pr6|88,* Hp STATEMENT 1 ON LINE 247 tp = Tp; 001014 aa 6 00126 3715 20 epp5 pr6|86,* Tp 001015 aa 5 00000 3715 20 epp5 pr5|0,* Tp 001016 aa 6 00120 6515 00 spri5 pr6|80 tp STATEMENT 1 ON LINE 249 call get_header; 001017 aa 000742 6700 04 tsp4 482,ic 001761 STATEMENT 1 ON LINE 250 Create_info -> ms_table_info_v2 = mt_header.mti; 001020 aa 6 00124 3735 20 epp7 pr6|84,* Create_info 001021 aa 7 00000 3735 20 epp7 pr7|0,* Create_info 001022 aa 6 00114 3715 20 epp5 pr6|76,* hdrp 001023 aa 000 100 100 500 mlr (pr),(pr),fill(000) 001024 aa 5 00015 00 0064 desc9a pr5|13,52 mt_header.mti 001025 aa 7 00000 00 0064 desc9a pr7|0,52 ms_table_info_v2 STATEMENT 1 ON LINE 251 Hp = pointer (hdrp, size (mt_header)); 001026 aa 5 00000 3521 00 epp2 pr5|0 001027 aa 000042 3120 00 eawp2 34 001030 aa 6 00130 2521 20 spri2 pr6|88,* Hp STATEMENT 1 ON LINE 252 Ne = mt_header.used_entries - mt_header.deleted_entries; 001031 aa 5 00037 3361 00 lcq pr5|31 mt_header.used_entries 001032 aa 000044 7770 00 llr 36 001033 aa 000044 7330 00 lrs 36 001034 aa 5 00036 0331 00 adl pr5|30 mt_header.deleted_entries 001035 aa 000000 5330 00 negl 0 001036 aa 6 00032 3535 20 epp3 pr6|26,* 001037 aa 3 00010 7561 20 stq pr3|8,* Ne STATEMENT 1 ON LINE 253 return; 001040 aa 6 00122 2361 00 ldq pr6|82 001041 aa 000005 6010 04 tnz 5,ic 001046 001042 aa 000027 7260 07 lxl6 23,dl 001043 aa 776765 3520 04 epp2 -523,ic 000030 = 162145164165 001044 aa 0 00716 7001 00 tsx0 pr0|462 signal 001045 aa 0 00631 7101 00 tra pr0|409 return 001046 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO close STATEMENT 1 ON LINE 257 close: entry (Tp, Code); 001047 ta 000664000000 001050 da 000230300000 001051 aa 000400 6270 00 eax7 256 001052 aa 7 00034 3521 20 epp2 pr7|28,* 001053 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001054 aa 000004000000 001055 aa 000000000000 001056 aa 6 00032 3735 20 epp7 pr6|26,* 001057 aa 7 00002 3715 20 epp5 pr7|2,* 001060 aa 6 00126 6515 00 spri5 pr6|86 001061 aa 7 00004 3535 20 epp3 pr7|4,* 001062 aa 6 00140 2535 00 spri3 pr6|96 001063 aa 000001 2360 07 ldq 1,dl 001064 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 260 Code = 0; 001065 aa 6 00140 4501 20 stz pr6|96,* Code STATEMENT 1 ON LINE 261 tp = Tp; 001066 aa 6 00126 3735 20 epp7 pr6|86,* Tp 001067 aa 7 00000 3735 20 epp7 pr7|0,* Tp 001070 aa 6 00120 6535 00 spri7 pr6|80 tp STATEMENT 1 ON LINE 263 call msf_manager_$close (tp); 001071 aa 6 00120 3521 00 epp2 pr6|80 tp 001072 aa 6 00256 2521 00 spri2 pr6|174 001073 aa 6 00254 6211 00 eax1 pr6|172 001074 aa 004000 4310 07 fld 2048,dl 001075 aa 6 00044 3701 20 epp4 pr6|36,* 001076 la 4 00046 3521 20 epp2 pr4|38,* msf_manager_$close 001077 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 264 return; 001100 aa 6 00122 2361 00 ldq pr6|82 001101 aa 000005 6010 04 tnz 5,ic 001106 001102 aa 000027 7260 07 lxl6 23,dl 001103 aa 776725 3520 04 epp2 -555,ic 000030 = 162145164165 001104 aa 0 00716 7001 00 tsx0 pr0|462 signal 001105 aa 0 00631 7101 00 tra pr0|409 return 001106 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO new_entry STATEMENT 1 ON LINE 268 new_entry: entry (Tp, Key, Ep, Code); 001107 at 000004000023 001110 tt 000024000023 001111 ta 000021000000 001112 ta 001107000000 001113 da 000236300000 001114 aa 000400 6270 00 eax7 256 001115 aa 7 00034 3521 20 epp2 pr7|28,* 001116 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 001117 aa 000010000000 001120 aa 000000000000 001121 aa 6 00032 3735 20 epp7 pr6|26,* 001122 aa 7 00002 3715 20 epp5 pr7|2,* 001123 aa 6 00126 6515 00 spri5 pr6|86 001124 aa 7 00004 3535 20 epp3 pr7|4,* 001125 aa 6 00134 2535 00 spri3 pr6|92 001126 aa 6 00042 3515 20 epp1 pr6|34,* 001127 aa 1 00002 3715 20 epp5 pr1|2,* 001130 aa 6 00132 6515 00 spri5 pr6|90 001131 aa 7 00006 3535 20 epp3 pr7|6,* 001132 aa 6 00136 2535 00 spri3 pr6|94 001133 aa 7 00010 3515 20 epp1 pr7|8,* 001134 aa 6 00140 2515 00 spri1 pr6|96 001135 aa 000001 2360 07 ldq 1,dl 001136 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 271 Code = 0; 001137 aa 6 00140 4501 20 stz pr6|96,* Code STATEMENT 1 ON LINE 272 Ep = null (); 001140 aa 776666 2370 04 ldaq -586,ic 000026 = 077777000043 000001000000 001141 aa 6 00136 7571 20 staq pr6|94,* Ep STATEMENT 1 ON LINE 273 tp = Tp; 001142 aa 6 00126 3735 20 epp7 pr6|86,* Tp 001143 aa 7 00000 3735 20 epp7 pr7|0,* Tp 001144 aa 6 00120 6535 00 spri7 pr6|80 tp STATEMENT 1 ON LINE 275 call get_header; 001145 aa 000614 6700 04 tsp4 396,ic 001761 STATEMENT 1 ON LINE 276 if hash_search (Key, "0"b) then do; 001146 aa 000000 2350 07 lda 0,dl 001147 aa 6 00276 7551 00 sta pr6|190 001150 aa 6 00134 3521 20 epp2 pr6|92,* Key 001151 aa 6 00256 2521 00 spri2 pr6|174 001152 aa 6 00276 3521 00 epp2 pr6|190 001153 aa 6 00260 2521 00 spri2 pr6|176 001154 aa 6 00277 3521 00 epp2 pr6|191 001155 aa 6 00262 2521 00 spri2 pr6|178 001156 aa 6 00132 3521 20 epp2 pr6|90,* 001157 aa 6 00264 2521 00 spri2 pr6|180 001160 aa 776640 3520 04 epp2 -608,ic 000020 = 514000000001 001161 aa 6 00266 2521 00 spri2 pr6|182 001162 aa 6 00270 2521 00 spri2 pr6|184 001163 aa 6 00254 3521 00 epp2 pr6|172 001164 aa 014000 4310 07 fld 6144,dl 001165 aa 2 00000 7571 00 staq pr2|0 001166 aa 000715 6700 04 tsp4 461,ic 002103 001167 aa 6 00277 2351 00 lda pr6|191 001170 aa 400000 3150 03 cana 131072,du 001171 aa 000013 6000 04 tze 11,ic 001204 STATEMENT 1 ON LINE 278 Code = error_table_$id_already_exists; 001172 aa 6 00044 3701 20 epp4 pr6|36,* 001173 la 4 00030 2361 20 ldq pr4|24,* error_table_$id_already_exists 001174 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 279 return; 001175 aa 6 00122 2361 00 ldq pr6|82 001176 aa 000005 6010 04 tnz 5,ic 001203 001177 aa 000027 7260 07 lxl6 23,dl 001200 aa 776630 3520 04 epp2 -616,ic 000030 = 162145164165 001201 aa 0 00716 7001 00 tsx0 pr0|462 signal 001202 aa 0 00631 7101 00 tra pr0|409 return 001203 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 280 end; STATEMENT 1 ON LINE 282 if ep = null () then do; 001204 aa 6 00112 2371 00 ldaq pr6|74 ep 001205 aa 776621 6770 04 eraq -623,ic 000026 = 077777000043 000001000000 001206 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001207 aa 000013 6010 04 tnz 11,ic 001222 STATEMENT 1 ON LINE 284 Code = error_table_$noalloc; 001210 aa 6 00044 3701 20 epp4 pr6|36,* 001211 la 4 00022 2361 20 ldq pr4|18,* error_table_$noalloc 001212 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 285 return; 001213 aa 6 00122 2361 00 ldq pr6|82 001214 aa 000005 6010 04 tnz 5,ic 001221 001215 aa 000027 7260 07 lxl6 23,dl 001216 aa 776612 3520 04 epp2 -630,ic 000030 = 162145164165 001217 aa 0 00716 7001 00 tsx0 pr0|462 signal 001220 aa 0 00631 7101 00 tra pr0|409 return 001221 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 286 end; STATEMENT 1 ON LINE 288 entry.key = Key; 001222 aa 6 00132 2361 20 ldq pr6|90,* 001223 aa 000002 6040 04 tmi 2,ic 001225 001224 aa 777777 3760 07 anq 262143,dl 001225 aa 0 00250 3761 00 anq pr0|168 = 000077777777 001226 aa 6 00112 3735 20 epp7 pr6|74,* ep 001227 aa 6 00134 3715 20 epp5 pr6|92,* 001230 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 001231 aa 5 00000 00 0006 desc9a pr5|0,ql Key 001232 aa 7 00002 00 0040 desc9a pr7|2,32 entry.key STATEMENT 1 ON LINE 289 entry.used = "1"b; 001233 aa 400000 2350 03 lda 131072,du 001234 aa 7 00000 2551 00 orsa pr7|0 entry.used STATEMENT 1 ON LINE 290 mt_header.used_entries = mt_header.used_entries + 1; 001235 aa 6 00114 3535 20 epp3 pr6|76,* hdrp 001236 aa 3 00037 2351 00 lda pr3|31 mt_header.used_entries 001237 aa 000044 7330 00 lrs 36 001240 aa 000001 0330 07 adl 1,dl 001241 aa 3 00037 7561 00 stq pr3|31 mt_header.used_entries STATEMENT 1 ON LINE 291 call set_checkpoint; 001242 aa 000616 6700 04 tsp4 398,ic 002060 STATEMENT 1 ON LINE 292 Ep = addrel (ep, size (entry)); 001243 aa 6 00112 3521 20 epp2 pr6|74,* ep 001244 aa 000012 0520 03 adwp2 10,du 001245 aa 6 00136 2521 20 spri2 pr6|94,* Ep STATEMENT 1 ON LINE 293 return; 001246 aa 6 00122 2361 00 ldq pr6|82 001247 aa 000005 6010 04 tnz 5,ic 001254 001250 aa 000027 7260 07 lxl6 23,dl 001251 aa 776557 3520 04 epp2 -657,ic 000030 = 162145164165 001252 aa 0 00716 7001 00 tsx0 pr0|462 signal 001253 aa 0 00631 7101 00 tra pr0|409 return 001254 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO find_entry STATEMENT 1 ON LINE 297 find_entry: entry (Tp, Key, Ep, Code); 001255 ta 001107000000 001256 da 000244300000 001257 aa 000400 6270 00 eax7 256 001260 aa 7 00034 3521 20 epp2 pr7|28,* 001261 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 001262 aa 000010000000 001263 aa 000000000000 001264 aa 6 00032 3735 20 epp7 pr6|26,* 001265 aa 7 00002 3715 20 epp5 pr7|2,* 001266 aa 6 00126 6515 00 spri5 pr6|86 001267 aa 7 00004 3535 20 epp3 pr7|4,* 001270 aa 6 00134 2535 00 spri3 pr6|92 001271 aa 6 00042 3515 20 epp1 pr6|34,* 001272 aa 1 00002 3715 20 epp5 pr1|2,* 001273 aa 6 00132 6515 00 spri5 pr6|90 001274 aa 7 00006 3535 20 epp3 pr7|6,* 001275 aa 6 00136 2535 00 spri3 pr6|94 001276 aa 7 00010 3515 20 epp1 pr7|8,* 001277 aa 6 00140 2515 00 spri1 pr6|96 001300 aa 000001 2360 07 ldq 1,dl 001301 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 300 case_ins = "0"b; 001302 aa 6 00110 4501 00 stz pr6|72 case_ins STATEMENT 1 ON LINE 301 go to find_entry_common; 001303 aa 000030 7100 04 tra 24,ic 001333 ENTRY TO find_entry_case_ins STATEMENT 1 ON LINE 303 find_entry_case_ins: entry (Tp, Key, Ep, Code); 001304 ta 001107000000 001305 da 000254300000 001306 aa 000400 6270 00 eax7 256 001307 aa 7 00034 3521 20 epp2 pr7|28,* 001310 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 001311 aa 000010000000 001312 aa 000000000000 001313 aa 6 00032 3735 20 epp7 pr6|26,* 001314 aa 7 00002 3715 20 epp5 pr7|2,* 001315 aa 6 00126 6515 00 spri5 pr6|86 001316 aa 7 00004 3535 20 epp3 pr7|4,* 001317 aa 6 00134 2535 00 spri3 pr6|92 001320 aa 6 00042 3515 20 epp1 pr6|34,* 001321 aa 1 00002 3715 20 epp5 pr1|2,* 001322 aa 6 00132 6515 00 spri5 pr6|90 001323 aa 7 00006 3535 20 epp3 pr7|6,* 001324 aa 6 00136 2535 00 spri3 pr6|94 001325 aa 7 00010 3515 20 epp1 pr7|8,* 001326 aa 6 00140 2515 00 spri1 pr6|96 001327 aa 000001 2360 07 ldq 1,dl 001330 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 306 case_ins = "1"b; 001331 aa 400000 2350 03 lda 131072,du 001332 aa 6 00110 2551 00 orsa pr6|72 case_ins STATEMENT 1 ON LINE 308 find_entry_common: Code = 0; 001333 aa 6 00140 4501 20 stz pr6|96,* Code STATEMENT 1 ON LINE 310 Ep = null (); 001334 aa 776472 2370 04 ldaq -710,ic 000026 = 077777000043 000001000000 001335 aa 6 00136 7571 20 staq pr6|94,* Ep STATEMENT 1 ON LINE 311 tp = Tp; 001336 aa 6 00126 3735 20 epp7 pr6|86,* Tp 001337 aa 7 00000 3735 20 epp7 pr7|0,* Tp 001340 aa 6 00120 6535 00 spri7 pr6|80 tp STATEMENT 1 ON LINE 313 call get_header; 001341 aa 000420 6700 04 tsp4 272,ic 001761 STATEMENT 1 ON LINE 314 if case_ins & mt_header.version = 1 then do; 001342 aa 6 00110 2351 00 lda pr6|72 case_ins 001343 aa 400000 3150 03 cana 131072,du 001344 aa 000017 6000 04 tze 15,ic 001363 001345 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 001346 aa 7 00015 2361 00 ldq pr7|13 mt_header.version 001347 aa 000001 1160 07 cmpq 1,dl 001350 aa 000013 6010 04 tnz 11,ic 001363 STATEMENT 1 ON LINE 316 Code = error_table_$unimplemented_version; 001351 aa 6 00044 3701 20 epp4 pr6|36,* 001352 la 4 00016 2361 20 ldq pr4|14,* error_table_$unimplemented_version 001353 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 317 return; 001354 aa 6 00122 2361 00 ldq pr6|82 001355 aa 000005 6010 04 tnz 5,ic 001362 001356 aa 000027 7260 07 lxl6 23,dl 001357 aa 776451 3520 04 epp2 -727,ic 000030 = 162145164165 001360 aa 0 00716 7001 00 tsx0 pr0|462 signal 001361 aa 0 00631 7101 00 tra pr0|409 return 001362 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 318 end; STATEMENT 1 ON LINE 319 if ^hash_search (Key, case_ins) then do; 001363 aa 6 00134 3521 20 epp2 pr6|92,* Key 001364 aa 6 00256 2521 00 spri2 pr6|174 001365 aa 6 00110 3521 00 epp2 pr6|72 case_ins 001366 aa 6 00260 2521 00 spri2 pr6|176 001367 aa 6 00277 3521 00 epp2 pr6|191 001370 aa 6 00262 2521 00 spri2 pr6|178 001371 aa 6 00132 3521 20 epp2 pr6|90,* 001372 aa 6 00264 2521 00 spri2 pr6|180 001373 aa 776424 3520 04 epp2 -748,ic 000017 = 516000000001 001374 aa 6 00266 2521 00 spri2 pr6|182 001375 aa 776423 3520 04 epp2 -749,ic 000020 = 514000000001 001376 aa 6 00270 2521 00 spri2 pr6|184 001377 aa 6 00254 3521 00 epp2 pr6|172 001400 aa 014000 4310 07 fld 6144,dl 001401 aa 2 00000 7571 00 staq pr2|0 001402 aa 000501 6700 04 tsp4 321,ic 002103 001403 aa 6 00277 2351 00 lda pr6|191 001404 aa 400000 3150 03 cana 131072,du 001405 aa 000013 6010 04 tnz 11,ic 001420 STATEMENT 1 ON LINE 321 Code = error_table_$id_not_found; 001406 aa 6 00044 3701 20 epp4 pr6|36,* 001407 la 4 00032 2361 20 ldq pr4|26,* error_table_$id_not_found 001410 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 322 return; 001411 aa 6 00122 2361 00 ldq pr6|82 001412 aa 000005 6010 04 tnz 5,ic 001417 001413 aa 000027 7260 07 lxl6 23,dl 001414 aa 776414 3520 04 epp2 -756,ic 000030 = 162145164165 001415 aa 0 00716 7001 00 tsx0 pr0|462 signal 001416 aa 0 00631 7101 00 tra pr0|409 return 001417 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 323 end; STATEMENT 1 ON LINE 324 if ep = null () then do; 001420 aa 6 00112 2371 00 ldaq pr6|74 ep 001421 aa 776405 6770 04 eraq -763,ic 000026 = 077777000043 000001000000 001422 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001423 aa 000013 6010 04 tnz 11,ic 001436 STATEMENT 1 ON LINE 326 Code = error_table_$request_id_ambiguous; 001424 aa 6 00044 3701 20 epp4 pr6|36,* 001425 la 4 00026 2361 20 ldq pr4|22,* error_table_$request_id_ambiguous 001426 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 327 return; 001427 aa 6 00122 2361 00 ldq pr6|82 001430 aa 000005 6010 04 tnz 5,ic 001435 001431 aa 000027 7260 07 lxl6 23,dl 001432 aa 776376 3520 04 epp2 -770,ic 000030 = 162145164165 001433 aa 0 00716 7001 00 tsx0 pr0|462 signal 001434 aa 0 00631 7101 00 tra pr0|409 return 001435 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 328 end; STATEMENT 1 ON LINE 330 Ep = addrel (ep, size (entry)); 001436 aa 6 00112 3521 20 epp2 pr6|74,* ep 001437 aa 000012 0520 03 adwp2 10,du 001440 aa 6 00136 2521 20 spri2 pr6|94,* Ep STATEMENT 1 ON LINE 331 return; 001441 aa 6 00122 2361 00 ldq pr6|82 001442 aa 000005 6010 04 tnz 5,ic 001447 001443 aa 000027 7260 07 lxl6 23,dl 001444 aa 776364 3520 04 epp2 -780,ic 000030 = 162145164165 001445 aa 0 00716 7001 00 tsx0 pr0|462 signal 001446 aa 0 00631 7101 00 tra pr0|409 return 001447 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO delete_entry STATEMENT 1 ON LINE 335 delete_entry: entry (Tp, Key, Code); 001450 at 000003000023 001451 tt 000024000021 001452 ta 001450000000 001453 da 000263300000 001454 aa 000400 6270 00 eax7 256 001455 aa 7 00034 3521 20 epp2 pr7|28,* 001456 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 001457 aa 000006000000 001460 aa 000000000000 001461 aa 6 00032 3735 20 epp7 pr6|26,* 001462 aa 7 00002 3715 20 epp5 pr7|2,* 001463 aa 6 00126 6515 00 spri5 pr6|86 001464 aa 7 00004 3535 20 epp3 pr7|4,* 001465 aa 6 00134 2535 00 spri3 pr6|92 001466 aa 6 00042 3515 20 epp1 pr6|34,* 001467 aa 1 00002 3715 20 epp5 pr1|2,* 001470 aa 6 00132 6515 00 spri5 pr6|90 001471 aa 7 00006 3535 20 epp3 pr7|6,* 001472 aa 6 00140 2535 00 spri3 pr6|96 001473 aa 000001 2360 07 ldq 1,dl 001474 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 338 Code = 0; 001475 aa 6 00140 4501 20 stz pr6|96,* Code STATEMENT 1 ON LINE 339 tp = Tp; 001476 aa 6 00126 3735 20 epp7 pr6|86,* Tp 001477 aa 7 00000 3735 20 epp7 pr7|0,* Tp 001500 aa 6 00120 6535 00 spri7 pr6|80 tp STATEMENT 1 ON LINE 341 call get_header; 001501 aa 000260 6700 04 tsp4 176,ic 001761 STATEMENT 1 ON LINE 342 if ^hash_search (Key, "0"b) then do; 001502 aa 000000 2350 07 lda 0,dl 001503 aa 6 00277 7551 00 sta pr6|191 001504 aa 6 00134 3521 20 epp2 pr6|92,* Key 001505 aa 6 00256 2521 00 spri2 pr6|174 001506 aa 6 00277 3521 00 epp2 pr6|191 001507 aa 6 00260 2521 00 spri2 pr6|176 001510 aa 6 00276 3521 00 epp2 pr6|190 001511 aa 6 00262 2521 00 spri2 pr6|178 001512 aa 6 00132 3521 20 epp2 pr6|90,* 001513 aa 6 00264 2521 00 spri2 pr6|180 001514 aa 776304 3520 04 epp2 -828,ic 000020 = 514000000001 001515 aa 6 00266 2521 00 spri2 pr6|182 001516 aa 6 00270 2521 00 spri2 pr6|184 001517 aa 6 00254 3521 00 epp2 pr6|172 001520 aa 014000 4310 07 fld 6144,dl 001521 aa 2 00000 7571 00 staq pr2|0 001522 aa 000361 6700 04 tsp4 241,ic 002103 001523 aa 6 00276 2351 00 lda pr6|190 001524 aa 400000 3150 03 cana 131072,du 001525 aa 000013 6010 04 tnz 11,ic 001540 STATEMENT 1 ON LINE 344 Code = error_table_$id_not_found; 001526 aa 6 00044 3701 20 epp4 pr6|36,* 001527 la 4 00032 2361 20 ldq pr4|26,* error_table_$id_not_found 001530 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 345 return; 001531 aa 6 00122 2361 00 ldq pr6|82 001532 aa 000005 6010 04 tnz 5,ic 001537 001533 aa 000027 7260 07 lxl6 23,dl 001534 aa 776274 3520 04 epp2 -836,ic 000030 = 162145164165 001535 aa 0 00716 7001 00 tsx0 pr0|462 signal 001536 aa 0 00631 7101 00 tra pr0|409 return 001537 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 346 end; STATEMENT 1 ON LINE 348 entry.deleted = "1"b; 001540 aa 200000 2350 03 lda 65536,du 001541 aa 6 00112 2551 20 orsa pr6|74,* entry.deleted STATEMENT 1 ON LINE 349 mt_header.deleted_entries = mt_header.deleted_entries + 1; 001542 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 001543 aa 7 00036 2351 00 lda pr7|30 mt_header.deleted_entries 001544 aa 000044 7330 00 lrs 36 001545 aa 000001 0330 07 adl 1,dl 001546 aa 7 00036 7561 00 stq pr7|30 mt_header.deleted_entries STATEMENT 1 ON LINE 350 call set_checkpoint; 001547 aa 000311 6700 04 tsp4 201,ic 002060 STATEMENT 1 ON LINE 351 return; 001550 aa 6 00122 2361 00 ldq pr6|82 001551 aa 000005 6010 04 tnz 5,ic 001556 001552 aa 000027 7260 07 lxl6 23,dl 001553 aa 776255 3520 04 epp2 -851,ic 000030 = 162145164165 001554 aa 0 00716 7001 00 tsx0 pr0|462 signal 001555 aa 0 00631 7101 00 tra pr0|409 return 001556 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO abs_entry STATEMENT 1 ON LINE 355 abs_entry: entry (Tp, Record, Key, Ep, Code); 001557 at 000005000023 001560 tt 000021000024 001561 tt 000023000021 001562 ta 001557000000 001563 da 000271300000 001564 aa 000400 6270 00 eax7 256 001565 aa 7 00034 3521 20 epp2 pr7|28,* 001566 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 001567 aa 000012000000 001570 aa 000000000000 001571 aa 6 00032 3735 20 epp7 pr6|26,* 001572 aa 7 00002 3715 20 epp5 pr7|2,* 001573 aa 6 00126 6515 00 spri5 pr6|86 001574 aa 7 00006 3535 20 epp3 pr7|6,* 001575 aa 6 00134 2535 00 spri3 pr6|92 001576 aa 6 00042 3515 20 epp1 pr6|34,* 001577 aa 1 00004 3715 20 epp5 pr1|4,* 001600 aa 6 00132 6515 00 spri5 pr6|90 001601 aa 7 00010 3535 20 epp3 pr7|8,* 001602 aa 6 00136 2535 00 spri3 pr6|94 001603 aa 7 00012 3515 20 epp1 pr7|10,* 001604 aa 6 00140 2515 00 spri1 pr6|96 001605 aa 000001 2360 07 ldq 1,dl 001606 aa 6 00122 7561 00 stq pr6|82 STATEMENT 1 ON LINE 358 Code = 0; 001607 aa 6 00140 4501 20 stz pr6|96,* Code STATEMENT 1 ON LINE 359 Ep = null (); 001610 aa 776216 2370 04 ldaq -882,ic 000026 = 077777000043 000001000000 001611 aa 6 00136 7571 20 staq pr6|94,* Ep STATEMENT 1 ON LINE 360 Key = ""; 001612 aa 6 00132 2361 20 ldq pr6|90,* 001613 aa 000002 6040 04 tmi 2,ic 001615 001614 aa 777777 3760 07 anq 262143,dl 001615 aa 0 00250 3761 00 anq pr0|168 = 000077777777 001616 aa 6 00134 3735 20 epp7 pr6|92,* 001617 aa 040 140 100 400 mlr (),(pr,rl),fill(040) 001620 aa 000000 00 0000 desc9a 0,0 001621 aa 7 00000 00 0006 desc9a pr7|0,ql Key STATEMENT 1 ON LINE 361 tp = Tp; 001622 aa 6 00126 3715 20 epp5 pr6|86,* Tp 001623 aa 5 00000 3715 20 epp5 pr5|0,* Tp 001624 aa 6 00120 6515 00 spri5 pr6|80 tp STATEMENT 1 ON LINE 363 call get_header; 001625 aa 000134 6700 04 tsp4 92,ic 001761 STATEMENT 1 ON LINE 364 record = Record - 1; 001626 aa 6 00032 3735 20 epp7 pr6|26,* 001627 aa 7 00004 3361 20 lcq pr7|4,* Record 001630 aa 000044 7770 00 llr 36 001631 aa 000044 7330 00 lrs 36 001632 aa 000001 0330 07 adl 1,dl 001633 aa 000000 5330 00 negl 0 001634 aa 6 00105 7561 00 stq pr6|69 record STATEMENT 1 ON LINE 365 if record + mt_header.entry_offset >= mt_header.total_entries then do; 001635 aa 000044 7770 00 llr 36 001636 aa 000044 7330 00 lrs 36 001637 aa 6 00114 3715 20 epp5 pr6|76,* hdrp 001640 aa 5 00034 0331 00 adl pr5|28 mt_header.entry_offset 001641 aa 6 00300 7571 00 staq pr6|192 001642 aa 5 00035 2351 00 lda pr5|29 mt_header.total_entries 001643 aa 000044 7330 00 lrs 36 001644 aa 6 00300 1171 00 cmpaq pr6|192 001645 aa 000013 6054 04 tpnz 11,ic 001660 STATEMENT 1 ON LINE 367 Code = error_table_$bad_index; 001646 aa 6 00044 3701 20 epp4 pr6|36,* 001647 la 4 00012 2361 20 ldq pr4|10,* error_table_$bad_index 001650 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 368 return; 001651 aa 6 00122 2361 00 ldq pr6|82 001652 aa 000005 6010 04 tnz 5,ic 001657 001653 aa 000027 7260 07 lxl6 23,dl 001654 aa 776154 3520 04 epp2 -916,ic 000030 = 162145164165 001655 aa 0 00716 7001 00 tsx0 pr0|462 signal 001656 aa 0 00631 7101 00 tra pr0|409 return 001657 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 369 end; STATEMENT 1 ON LINE 370 call get_entry (record); 001660 aa 001032 3520 04 epp2 538,ic 002712 = 000002000000 001661 aa 000566 6700 04 tsp4 374,ic 002447 STATEMENT 1 ON LINE 371 if entry.deleted | ^entry.used then Code = error_table_$no_record; 001662 aa 6 00112 2351 20 lda pr6|74,* entry.deleted 001663 aa 200000 3150 03 cana 65536,du 001664 aa 000004 6010 04 tnz 4,ic 001670 001665 aa 6 00112 2351 20 lda pr6|74,* entry.used 001666 aa 400000 3150 03 cana 131072,du 001667 aa 000005 6010 04 tnz 5,ic 001674 001670 aa 6 00044 3701 20 epp4 pr6|36,* 001671 la 4 00014 2361 20 ldq pr4|12,* error_table_$no_record 001672 aa 6 00140 7561 20 stq pr6|96,* Code 001673 aa 000015 7100 04 tra 13,ic 001710 STATEMENT 1 ON LINE 373 else do; STATEMENT 1 ON LINE 374 Ep = addrel (ep, size (entry)); 001674 aa 6 00112 3521 20 epp2 pr6|74,* ep 001675 aa 000012 0520 03 adwp2 10,du 001676 aa 6 00136 2521 20 spri2 pr6|94,* Ep STATEMENT 1 ON LINE 375 Key = entry.key; 001677 aa 6 00132 2361 20 ldq pr6|90,* 001700 aa 000002 6040 04 tmi 2,ic 001702 001701 aa 777777 3760 07 anq 262143,dl 001702 aa 0 00250 3761 00 anq pr0|168 = 000077777777 001703 aa 6 00134 3735 20 epp7 pr6|92,* 001704 aa 6 00112 3715 20 epp5 pr6|74,* ep 001705 aa 040 140 100 500 mlr (pr),(pr,rl),fill(040) 001706 aa 5 00002 00 0040 desc9a pr5|2,32 entry.key 001707 aa 7 00000 00 0006 desc9a pr7|0,ql Key STATEMENT 1 ON LINE 376 end; STATEMENT 1 ON LINE 377 return; 001710 aa 6 00122 2361 00 ldq pr6|82 001711 aa 000005 6010 04 tnz 5,ic 001716 001712 aa 000027 7260 07 lxl6 23,dl 001713 aa 776115 3520 04 epp2 -947,ic 000030 = 162145164165 001714 aa 0 00716 7001 00 tsx0 pr0|462 signal 001715 aa 0 00631 7101 00 tra pr0|409 return 001716 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO number_entries STATEMENT 1 ON LINE 381 number_entries: entry (Tp) returns (unsigned fixed (18)); 001717 at 000002000023 001720 ta 000025000000 001721 ta 001717000000 001722 da 000300320000 001723 aa 000400 6270 00 eax7 256 001724 aa 7 00034 3521 20 epp2 pr7|28,* 001725 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001726 aa 000004000000 001727 aa 000000000000 001730 aa 6 00032 3735 20 epp7 pr6|26,* 001731 aa 7 00002 3715 20 epp5 pr7|2,* 001732 aa 6 00126 6515 00 spri5 pr6|86 001733 aa 6 00122 4501 00 stz pr6|82 STATEMENT 1 ON LINE 384 tp = Tp; 001734 aa 6 00126 3735 20 epp7 pr6|86,* Tp 001735 aa 7 00000 3735 20 epp7 pr7|0,* Tp 001736 aa 6 00120 6535 00 spri7 pr6|80 tp STATEMENT 1 ON LINE 386 call get_header; 001737 aa 000022 6700 04 tsp4 18,ic 001761 STATEMENT 1 ON LINE 387 return (mt_header.used_entries - mt_header.deleted_entries); 001740 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 001741 aa 7 00037 3361 00 lcq pr7|31 mt_header.used_entries 001742 aa 000044 7770 00 llr 36 001743 aa 000044 7330 00 lrs 36 001744 aa 7 00036 0331 00 adl pr7|30 mt_header.deleted_entries 001745 aa 000000 5330 00 negl 0 001746 aa 6 00300 7571 00 staq pr6|192 001747 aa 6 00122 2361 00 ldq pr6|82 001750 aa 000005 6010 04 tnz 5,ic 001755 001751 aa 6 00300 2371 00 ldaq pr6|192 001752 aa 6 00032 3715 20 epp5 pr6|26,* 001753 aa 5 00004 7561 20 stq pr5|4,* 001754 aa 0 00631 7101 00 tra pr0|409 return 001755 aa 000027 7260 07 lxl6 23,dl 001756 aa 776052 3520 04 epp2 -982,ic 000030 = 162145164165 001757 aa 0 00716 7001 00 tsx0 pr0|462 signal 001760 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 542 end; BEGIN PROCEDURE get_header ENTRY TO get_header STATEMENT 1 ON LINE 391 get_header: procedure; 001761 aa 6 00144 6501 00 spri4 pr6|100 STATEMENT 1 ON LINE 394 call msf_manager_$get_ptr (tp, 0, "0"b, hdrp, bc, code); 001762 aa 6 00303 4501 00 stz pr6|195 001763 aa 000000 2350 07 lda 0,dl 001764 aa 6 00304 7551 00 sta pr6|196 001765 aa 6 00120 3521 00 epp2 pr6|80 tp 001766 aa 6 00310 2521 00 spri2 pr6|200 001767 aa 6 00303 3521 00 epp2 pr6|195 001770 aa 6 00312 2521 00 spri2 pr6|202 001771 aa 6 00304 3521 00 epp2 pr6|196 001772 aa 6 00314 2521 00 spri2 pr6|204 001773 aa 6 00114 3521 00 epp2 pr6|76 hdrp 001774 aa 6 00316 2521 00 spri2 pr6|206 001775 aa 6 00102 3521 00 epp2 pr6|66 bc 001776 aa 6 00320 2521 00 spri2 pr6|208 001777 aa 6 00100 3521 00 epp2 pr6|64 code 002000 aa 6 00322 2521 00 spri2 pr6|210 002001 aa 6 00306 6211 00 eax1 pr6|198 002002 aa 030000 4310 07 fld 12288,dl 002003 aa 6 00044 3701 20 epp4 pr6|36,* 002004 la 4 00044 3521 20 epp2 pr4|36,* msf_manager_$get_ptr 002005 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 395 if hdrp = null () then do; 002006 aa 6 00114 2371 00 ldaq pr6|76 hdrp 002007 aa 776017 6770 04 eraq -1009,ic 000026 = 077777000043 000001000000 002010 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002011 aa 000004 6010 04 tnz 4,ic 002015 STATEMENT 1 ON LINE 397 Code = code; 002012 aa 6 00100 2361 00 ldq pr6|64 code 002013 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 398 goto return; 002014 aa 776443 7100 04 tra -733,ic 000457 STATEMENT 1 ON LINE 399 end; STATEMENT 1 ON LINE 400 segp = hdrp; 002015 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 002016 aa 6 00116 6535 00 spri7 pr6|78 segp STATEMENT 1 ON LINE 401 component = 0; 002017 aa 6 00103 4501 00 stz pr6|67 component STATEMENT 1 ON LINE 402 end; 002020 aa 6 00144 6101 00 rtcd pr6|100 END PROCEDURE get_header BEGIN PROCEDURE get_component ENTRY TO get_component STATEMENT 1 ON LINE 406 get_component: procedure (Component); 002021 aa 6 00152 6501 00 spri4 pr6|106 002022 aa 6 00154 2521 00 spri2 pr6|108 STATEMENT 1 ON LINE 411 component = Component; 002023 aa 2 00002 2361 20 ldq pr2|2,* Component 002024 aa 6 00103 7561 00 stq pr6|67 component STATEMENT 1 ON LINE 412 call msf_manager_$get_ptr (tp, component, "0"b, segp, bc, code); 002025 aa 000000 2350 07 lda 0,dl 002026 aa 6 00324 7551 00 sta pr6|212 002027 aa 6 00120 3521 00 epp2 pr6|80 tp 002030 aa 6 00330 2521 00 spri2 pr6|216 002031 aa 6 00103 3521 00 epp2 pr6|67 component 002032 aa 6 00332 2521 00 spri2 pr6|218 002033 aa 6 00324 3521 00 epp2 pr6|212 002034 aa 6 00334 2521 00 spri2 pr6|220 002035 aa 6 00116 3521 00 epp2 pr6|78 segp 002036 aa 6 00336 2521 00 spri2 pr6|222 002037 aa 6 00102 3521 00 epp2 pr6|66 bc 002040 aa 6 00340 2521 00 spri2 pr6|224 002041 aa 6 00100 3521 00 epp2 pr6|64 code 002042 aa 6 00342 2521 00 spri2 pr6|226 002043 aa 6 00326 6211 00 eax1 pr6|214 002044 aa 030000 4310 07 fld 12288,dl 002045 aa 6 00044 3701 20 epp4 pr6|36,* 002046 la 4 00044 3521 20 epp2 pr4|36,* msf_manager_$get_ptr 002047 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 413 if segp = null () then do; 002050 aa 6 00116 2371 00 ldaq pr6|78 segp 002051 aa 775755 6770 04 eraq -1043,ic 000026 = 077777000043 000001000000 002052 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002053 aa 000004 6010 04 tnz 4,ic 002057 STATEMENT 1 ON LINE 415 Code = code; 002054 aa 6 00100 2361 00 ldq pr6|64 code 002055 aa 6 00140 7561 20 stq pr6|96,* Code STATEMENT 1 ON LINE 416 goto return; 002056 aa 776401 7100 04 tra -767,ic 000457 STATEMENT 1 ON LINE 417 end; STATEMENT 1 ON LINE 418 return; 002057 aa 6 00152 6101 00 rtcd pr6|106 STATEMENT 1 ON LINE 419 end; END PROCEDURE get_component BEGIN PROCEDURE set_checkpoint ENTRY TO set_checkpoint STATEMENT 1 ON LINE 423 set_checkpoint: procedure; 002060 aa 6 00160 6501 00 spri4 pr6|112 STATEMENT 1 ON LINE 428 now = clock (); 002061 aa 0 01435 7001 00 tsx0 pr0|797 clock 002062 aa 6 00166 7571 00 staq pr6|118 now STATEMENT 1 ON LINE 429 do i = 0 to mt_header.number_components; 002063 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 002064 aa 7 00032 2361 00 ldq pr7|26 mt_header.number_components 002065 aa 6 00170 7561 00 stq pr6|120 002066 aa 6 00101 4501 00 stz pr6|65 i 002067 aa 000000 0110 03 nop 0,du 002070 aa 6 00101 2361 00 ldq pr6|65 i 002071 aa 6 00170 1161 00 cmpq pr6|120 002072 aa 000010 6054 04 tpnz 8,ic 002102 STATEMENT 1 ON LINE 430 call get_component (i); 002073 aa 000623 3520 04 epp2 403,ic 002716 = 000002000000 002074 aa 777725 6700 04 tsp4 -43,ic 002021 STATEMENT 1 ON LINE 431 comp_header.dt_updated = now; 002075 aa 6 00166 2371 00 ldaq pr6|118 now 002076 aa 6 00116 3735 20 epp7 pr6|78,* segp 002077 aa 7 00012 7571 00 staq pr7|10 comp_header.dt_updated STATEMENT 1 ON LINE 432 end; 002100 aa 6 00101 0541 00 aos pr6|65 i 002101 aa 777767 7100 04 tra -9,ic 002070 STATEMENT 1 ON LINE 433 end; 002102 aa 6 00160 6101 00 rtcd pr6|112 END PROCEDURE set_checkpoint BEGIN PROCEDURE hash_search ENTRY TO hash_search STATEMENT 1 ON LINE 437 hash_search: procedure (Key, Case_ins) returns (bit aligned); 002103 aa 6 00172 6501 00 spri4 pr6|122 002104 aa 6 00174 2521 00 spri2 pr6|124 002105 aa 2 00002 3521 01 epp2 pr2|2,au 002106 aa 6 00176 2521 00 spri2 pr6|126 002107 aa 2 00000 2361 20 ldq pr2|0,* 002110 aa 000002 6040 04 tmi 2,ic 002112 002111 aa 777777 3760 07 anq 262143,dl 002112 aa 0 00250 3761 00 anq pr0|168 = 000077777777 002113 aa 6 00344 7561 00 stq pr6|228 STATEMENT 1 ON LINE 449 if mt_header.version = 1 then do; 002114 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 002115 aa 7 00015 2361 00 ldq pr7|13 mt_header.version 002116 aa 000001 1160 07 cmpq 1,dl 002117 aa 000021 6010 04 tnz 17,ic 002140 STATEMENT 1 ON LINE 451 hash_key, match_key = Key; 002120 aa 6 00344 2361 00 ldq pr6|228 002121 aa 0 00551 7001 00 tsx0 pr0|361 alloc_cs 002122 aa 6 00174 3715 20 epp5 pr6|124,* 002123 aa 5 00002 3535 20 epp3 pr5|2,* 002124 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 002125 aa 3 00000 00 0006 desc9a pr3|0,ql Key 002126 aa 2 00000 00 0006 desc9a pr2|0,ql 002127 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 002130 aa 2 00000 00 0006 desc9a pr2|0,ql 002131 aa 6 00200 00 0040 desc9a pr6|128,32 hash_key 002132 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 002133 aa 2 00000 00 0006 desc9a pr2|0,ql 002134 aa 6 00210 00 0040 desc9a pr6|136,32 match_key STATEMENT 1 ON LINE 452 case_ins = "0"b; 002135 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 002136 aa 6 00221 4501 00 stz pr6|145 case_ins STATEMENT 1 ON LINE 453 end; 002137 aa 000043 7100 04 tra 35,ic 002202 STATEMENT 1 ON LINE 454 else do; STATEMENT 1 ON LINE 455 hash_key = lowercase (Key); 002140 aa 6 00174 3715 20 epp5 pr6|124,* 002141 aa 5 00002 3521 20 epp2 pr5|2,* Key 002142 aa 6 00360 2521 00 spri2 pr6|240 002143 aa 6 00346 3521 00 epp2 pr6|230 002144 aa 6 00362 2521 00 spri2 pr6|242 002145 aa 6 00176 3535 20 epp3 pr6|126,* 002146 aa 3 00000 3521 20 epp2 pr3|0,* 002147 aa 6 00364 2521 00 spri2 pr6|244 002150 aa 775646 3520 04 epp2 -1114,ic 000016 = 526000000040 002151 aa 6 00366 2521 00 spri2 pr6|246 002152 aa 6 00356 3521 00 epp2 pr6|238 002153 aa 010000 4310 07 fld 4096,dl 002154 aa 2 00000 7571 00 staq pr2|0 002155 aa 000244 6700 04 tsp4 164,ic 002421 002156 aa 000 100 100 500 mlr (pr),(pr),fill(000) 002157 aa 6 00346 00 0040 desc9a pr6|230,32 002160 aa 6 00200 00 0040 desc9a pr6|128,32 hash_key STATEMENT 1 ON LINE 456 case_ins = Case_ins; 002161 aa 6 00221 4501 00 stz pr6|145 case_ins 002162 aa 6 00174 3735 20 epp7 pr6|124,* 002163 aa 7 00004 3715 20 epp5 pr7|4,* 002164 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 002165 aa 5 00000 00 0001 descb pr5|0,1 Case_ins 002166 aa 6 00221 00 0001 descb pr6|145,1 case_ins STATEMENT 1 ON LINE 457 if case_ins then match_key = hash_key; 002167 aa 6 00221 2351 00 lda pr6|145 case_ins 002170 aa 000005 6000 04 tze 5,ic 002175 002171 aa 000 100 100 500 mlr (pr),(pr),fill(000) 002172 aa 6 00200 00 0040 desc9a pr6|128,32 hash_key 002173 aa 6 00210 00 0040 desc9a pr6|136,32 match_key 002174 aa 000006 7100 04 tra 6,ic 002202 STATEMENT 1 ON LINE 459 else match_key = Key; 002175 aa 7 00002 3535 20 epp3 pr7|2,* 002176 aa 6 00344 2361 00 ldq pr6|228 002177 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 002200 aa 3 00000 00 0006 desc9a pr3|0,ql Key 002201 aa 6 00210 00 0040 desc9a pr6|136,32 match_key STATEMENT 1 ON LINE 460 end; STATEMENT 1 ON LINE 461 hash = hash_index_ (addr (hash_key), 32, 1, mt_header.total_entries); 002202 aa 6 00200 3735 00 epp7 pr6|128 hash_key 002203 aa 6 00372 6535 00 spri7 pr6|250 002204 aa 000040 2360 07 ldq 32,dl 002205 aa 6 00345 7561 00 stq pr6|229 002206 aa 000001 2360 07 ldq 1,dl 002207 aa 6 00374 7561 00 stq pr6|252 002210 aa 6 00372 3521 00 epp2 pr6|250 002211 aa 6 00360 2521 00 spri2 pr6|240 002212 aa 6 00345 3521 00 epp2 pr6|229 002213 aa 6 00362 2521 00 spri2 pr6|242 002214 aa 6 00374 3521 00 epp2 pr6|252 002215 aa 6 00364 2521 00 spri2 pr6|244 002216 aa 6 00114 3715 20 epp5 pr6|76,* hdrp 002217 aa 5 00035 3521 00 epp2 pr5|29 mt_header.total_entries 002220 aa 6 00366 2521 00 spri2 pr6|246 002221 aa 6 00224 3521 00 epp2 pr6|148 hash 002222 aa 6 00370 2521 00 spri2 pr6|248 002223 aa 6 00356 6211 00 eax1 pr6|238 002224 aa 024000 4310 07 fld 10240,dl 002225 aa 6 00044 3701 20 epp4 pr6|36,* 002226 la 4 00034 3521 20 epp2 pr4|28,* hash_index_ 002227 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 463 found_one = "0"b; 002230 aa 6 00220 4501 00 stz pr6|144 found_one STATEMENT 1 ON LINE 464 save_ep = null (); 002231 aa 775575 2370 04 ldaq -1155,ic 000026 = 077777000043 000001000000 002232 aa 6 00222 7571 00 staq pr6|146 save_ep STATEMENT 1 ON LINE 465 do enum = hash to mt_header.total_entries - mt_header.entry_offset - 1, 0 to hash - 1; 002233 aa 000121 3520 04 epp2 81,ic 002354 = 600104235100 002234 aa 6 00226 2521 00 spri2 pr6|150 002235 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 002236 aa 7 00035 3361 00 lcq pr7|29 mt_header.total_entries 002237 aa 000044 7770 00 llr 36 002240 aa 000044 7330 00 lrs 36 002241 aa 7 00034 0331 00 adl pr7|28 mt_header.entry_offset 002242 aa 000000 5330 00 negl 0 002243 aa 000000 5330 00 negl 0 002244 aa 000001 0330 07 adl 1,dl 002245 aa 000000 5330 00 negl 0 002246 aa 6 00230 7571 00 staq pr6|152 002247 aa 6 00224 2361 00 ldq pr6|148 hash 002250 aa 6 00104 7561 00 stq pr6|68 enum 002251 aa 000000 0110 03 nop 0,du 002252 aa 6 00104 2351 00 lda pr6|68 enum 002253 aa 000044 7330 00 lrs 36 002254 aa 6 00230 1171 00 cmpaq pr6|152 002255 aa 000104 6054 04 tpnz 68,ic 002361 STATEMENT 1 ON LINE 466 call get_entry (enum); 002256 aa 000430 3520 04 epp2 280,ic 002706 = 000002000000 002257 aa 000170 6700 04 tsp4 120,ic 002447 STATEMENT 1 ON LINE 467 if ^entry.used then do; 002260 aa 6 00112 2351 20 lda pr6|74,* entry.used 002261 aa 400000 3150 03 cana 131072,du 002262 aa 000016 6010 04 tnz 14,ic 002300 STATEMENT 1 ON LINE 469 if case_ins & found_one then do; 002263 aa 6 00221 2351 00 lda pr6|145 case_ins 002264 aa 000011 6000 04 tze 9,ic 002275 002265 aa 6 00220 2351 00 lda pr6|144 found_one 002266 aa 000007 6000 04 tze 7,ic 002275 STATEMENT 1 ON LINE 471 ep = save_ep; 002267 aa 6 00222 3735 20 epp7 pr6|146,* save_ep 002270 aa 6 00112 6535 00 spri7 pr6|74 ep STATEMENT 1 ON LINE 472 return ("1"b); 002271 aa 400000 2350 03 lda 131072,du 002272 aa 6 00174 3715 20 epp5 pr6|124,* 002273 aa 5 00006 7551 20 sta pr5|6,* 002274 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 473 end; STATEMENT 1 ON LINE 474 return ("0"b); 002275 aa 6 00174 3735 20 epp7 pr6|124,* 002276 aa 7 00006 4501 20 stz pr7|6,* 002277 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 475 end; STATEMENT 1 ON LINE 476 if ^entry.deleted then do; 002300 aa 6 00112 2351 20 lda pr6|74,* entry.deleted 002301 aa 200000 3150 03 cana 65536,du 002302 aa 000051 6010 04 tnz 41,ic 002353 STATEMENT 1 ON LINE 478 if case_ins then do; 002303 aa 6 00221 2351 00 lda pr6|145 case_ins 002304 aa 000036 6000 04 tze 30,ic 002342 STATEMENT 1 ON LINE 480 if lowercase (entry.key) = match_key then if found_one then do; 002305 aa 6 00112 3735 20 epp7 pr6|74,* ep 002306 aa 7 00002 3521 00 epp2 pr7|2 entry.key 002307 aa 6 00360 2521 00 spri2 pr6|240 002310 aa 6 00346 3521 00 epp2 pr6|230 002311 aa 6 00362 2521 00 spri2 pr6|242 002312 aa 775504 3520 04 epp2 -1212,ic 000016 = 526000000040 002313 aa 6 00364 2521 00 spri2 pr6|244 002314 aa 6 00366 2521 00 spri2 pr6|246 002315 aa 6 00356 3521 00 epp2 pr6|238 002316 aa 010000 4310 07 fld 4096,dl 002317 aa 2 00000 7571 00 staq pr2|0 002320 aa 000101 6700 04 tsp4 65,ic 002421 002321 aa 040 100 106 500 cmpc (pr),(pr),fill(040) 002322 aa 6 00346 00 0040 desc9a pr6|230,32 002323 aa 6 00210 00 0040 desc9a pr6|136,32 match_key 002324 aa 000027 6010 04 tnz 23,ic 002353 002325 aa 6 00220 2351 00 lda pr6|144 found_one 002326 aa 000007 6000 04 tze 7,ic 002335 STATEMENT 1 ON LINE 483 ep = null (); 002327 aa 775477 2370 04 ldaq -1217,ic 000026 = 077777000043 000001000000 002330 aa 6 00112 7571 00 staq pr6|74 ep STATEMENT 1 ON LINE 485 return ("1"b); 002331 aa 400000 2350 03 lda 131072,du 002332 aa 6 00174 3735 20 epp7 pr6|124,* 002333 aa 7 00006 7551 20 sta pr7|6,* 002334 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 487 end; STATEMENT 1 ON LINE 488 else do; STATEMENT 1 ON LINE 489 found_one = "1"b; 002335 aa 400000 2350 03 lda 131072,du 002336 aa 6 00220 7551 00 sta pr6|144 found_one STATEMENT 1 ON LINE 490 save_ep = ep; 002337 aa 6 00112 3735 20 epp7 pr6|74,* ep 002340 aa 6 00222 6535 00 spri7 pr6|146 save_ep STATEMENT 1 ON LINE 492 end; STATEMENT 1 ON LINE 493 end; 002341 aa 000012 7100 04 tra 10,ic 002353 STATEMENT 1 ON LINE 494 else if entry.key = match_key then return ("1"b); 002342 aa 6 00112 3735 20 epp7 pr6|74,* ep 002343 aa 040 100 106 500 cmpc (pr),(pr),fill(040) 002344 aa 7 00002 00 0040 desc9a pr7|2,32 entry.key 002345 aa 6 00210 00 0040 desc9a pr6|136,32 match_key 002346 aa 000005 6010 04 tnz 5,ic 002353 002347 aa 400000 2350 03 lda 131072,du 002350 aa 6 00174 3715 20 epp5 pr6|124,* 002351 aa 5 00006 7551 20 sta pr5|6,* 002352 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 496 end; STATEMENT 1 ON LINE 497 end; 002353 aa 6 00226 7101 20 tra pr6|150,* 002354 aa 6 00104 2351 00 lda pr6|68 enum 002355 aa 000044 7330 00 lrs 36 002356 aa 000001 0330 07 adl 1,dl 002357 aa 6 00104 7561 00 stq pr6|68 enum 002360 aa 777672 7100 04 tra -70,ic 002252 002361 aa 000016 3520 04 epp2 14,ic 002377 = 600104235100 002362 aa 6 00226 2521 00 spri2 pr6|150 002363 aa 6 00224 3361 00 lcq pr6|148 hash 002364 aa 000044 7770 00 llr 36 002365 aa 000044 7330 00 lrs 36 002366 aa 000001 0330 07 adl 1,dl 002367 aa 000000 5330 00 negl 0 002370 aa 6 00232 7571 00 staq pr6|154 002371 aa 6 00104 4501 00 stz pr6|68 enum 002372 aa 6 00104 2351 00 lda pr6|68 enum 002373 aa 000044 7330 00 lrs 36 002374 aa 6 00232 1171 00 cmpaq pr6|154 002375 aa 000007 6054 04 tpnz 7,ic 002404 002376 aa 777660 7100 04 tra -80,ic 002256 002377 aa 6 00104 2351 00 lda pr6|68 enum 002400 aa 000044 7330 00 lrs 36 002401 aa 000001 0330 07 adl 1,dl 002402 aa 6 00104 7561 00 stq pr6|68 enum 002403 aa 777767 7100 04 tra -9,ic 002372 STATEMENT 1 ON LINE 498 if found_one then do; 002404 aa 6 00220 2351 00 lda pr6|144 found_one 002405 aa 000007 6000 04 tze 7,ic 002414 STATEMENT 1 ON LINE 500 ep = save_ep; 002406 aa 6 00222 3735 20 epp7 pr6|146,* save_ep 002407 aa 6 00112 6535 00 spri7 pr6|74 ep STATEMENT 1 ON LINE 501 return ("1"b); 002410 aa 400000 2350 03 lda 131072,du 002411 aa 6 00174 3715 20 epp5 pr6|124,* 002412 aa 5 00006 7551 20 sta pr5|6,* 002413 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 502 end; STATEMENT 1 ON LINE 503 else do; STATEMENT 1 ON LINE 504 ep = null (); 002414 aa 775412 2370 04 ldaq -1270,ic 000026 = 077777000043 000001000000 002415 aa 6 00112 7571 00 staq pr6|74 ep STATEMENT 1 ON LINE 505 return ("0"b); 002416 aa 6 00174 3735 20 epp7 pr6|124,* 002417 aa 7 00006 4501 20 stz pr7|6,* 002420 aa 6 00172 6101 00 rtcd pr6|122 STATEMENT 1 ON LINE 506 end; BEGIN PROCEDURE lowercase ENTRY TO lowercase STATEMENT 1 ON LINE 508 lowercase: proc (String) returns (char (32)) reducible; 002421 aa 6 00234 6501 00 spri4 pr6|156 002422 aa 6 00236 2521 00 spri2 pr6|158 002423 aa 2 00002 3521 01 epp2 pr2|2,au 002424 aa 6 00240 2521 00 spri2 pr6|160 002425 aa 2 00000 2361 20 ldq pr2|0,* 002426 aa 000002 6040 04 tmi 2,ic 002430 002427 aa 777777 3760 07 anq 262143,dl 002430 aa 0 00250 3761 00 anq pr0|168 = 000077777777 002431 aa 6 00375 7561 00 stq pr6|253 STATEMENT 1 ON LINE 518 return (translate (String, LOWER, UPPER)); 002432 aa 0 00551 7001 00 tsx0 pr0|361 alloc_cs 002433 aa 6 00236 3735 20 epp7 pr6|158,* 002434 aa 7 00002 3715 20 epp5 pr7|2,* 002435 aa 040 140 160 540 mvt (pr,rl),(pr,rl),fill(040) 002436 aa 5 00000 00 0006 desc9a pr5|0,ql String 002437 aa 2 00000 00 0006 desc9a pr2|0,ql 002440 aa 000051 0000 04 arg 41,ic 002506 = 000001002003 002441 aa 7 00004 3535 20 epp3 pr7|4,* 002442 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 002443 aa 2 00000 00 0006 desc9a pr2|0,ql 002444 aa 3 00000 00 0040 desc9a pr3|0,32 002445 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 002446 aa 6 00234 6101 00 rtcd pr6|156 STATEMENT 1 ON LINE 520 end lowercase; END PROCEDURE lowercase END PROCEDURE hash_search BEGIN PROCEDURE get_entry ENTRY TO get_entry STATEMENT 1 ON LINE 527 get_entry: procedure (Enum); 002447 aa 6 00242 6501 00 spri4 pr6|162 002450 aa 6 00244 2521 00 spri2 pr6|164 STATEMENT 1 ON LINE 534 enum = Enum + mt_header.entry_offset; 002451 aa 2 00002 2351 20 lda pr2|2,* Enum 002452 aa 000044 7330 00 lrs 36 002453 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 002454 aa 7 00034 0331 00 adl pr7|28 mt_header.entry_offset 002455 aa 6 00250 7561 00 stq pr6|168 enum STATEMENT 1 ON LINE 535 ecomp = divide (enum, mt_header.entries_per_component, 18); 002456 aa 7 00033 5061 00 div pr7|27 mt_header.entries_per_component 002457 aa 6 00251 7561 00 stq pr6|169 ecomp STATEMENT 1 ON LINE 536 if ecomp ^= component then call get_component (ecomp); 002460 aa 6 00103 1161 00 cmpq pr6|67 component 002461 aa 000003 6000 04 tze 3,ic 002464 002462 aa 000020 3520 04 epp2 16,ic 002502 = 000002000000 002463 aa 777336 6700 04 tsp4 -290,ic 002021 STATEMENT 1 ON LINE 538 ep = pointer (segp, size (comp_header) + (size (entry) + mt_header.entry_size) * mod (enum, mt_header.entries_per_component)); 002464 aa 6 00250 2361 00 ldq pr6|168 enum 002465 aa 6 00114 3735 20 epp7 pr6|76,* hdrp 002466 aa 7 00033 3521 00 epp2 pr7|27 mt_header.entries_per_component 002467 aa 0 00704 7001 00 tsx0 pr0|452 mod_fx1 002470 aa 6 00376 7561 00 stq pr6|254 002471 aa 000012 2360 07 ldq 10,dl 002472 aa 7 00027 0761 00 adq pr7|23 mt_header.entry_size 002473 aa 6 00376 4021 00 mpy pr6|254 002474 aa 000015 0330 07 adl 13,dl 002475 aa 6 00116 3521 20 epp2 pr6|78,* segp 002476 aa 000000 3120 06 eawp2 0,ql 002477 aa 6 00112 2521 00 spri2 pr6|74 ep STATEMENT 1 ON LINE 540 end get_entry; 002500 aa 6 00242 6101 00 rtcd pr6|162 END PROCEDURE get_entry END PROCEDURE ms_table_mgr_v2_ ----------------------------------------------------------- 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