COMPILATION LISTING OF SEGMENT log_read_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1110.31_Tue_mdt Options: optimize list 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(85-06-11,Margulies), approve(86-02-21,MCR7344), 12* audit(86-02-21,EJSharpe), install(86-04-23,MR12.0-1044): 13* Update very_last_time on any time search, and very_last_sequence on any 14* sequence search. 15* END HISTORY COMMENTS */ 16 17 18 /* format: style4 */ 19 log_read_: 20 procedure (); 21 22 /* * LOG_READ_ 23* * 24* * This is the user-ring log reading procedure. More comments to come 25* * later. 26* * 27* * 84-06-05, W. Olin Sibert 28* * 84-10-09, E. Swenson to handle setting limits on an empty log. 29* * 84-11-26, BIM: added $update for use in monitoring. 30* * 84-11-28, Steve Herbst: Added $open_with_procedure, which sets 31* * entry variables in log_read_data. 32* * 84-12-06, Steve Herbst: Added $hold_message, $free_message, 33* * $get_log_uid, $register, and $deregister. 34* * 1984-12-15, BIM: various debugging changes to the above. 35* * 1985-01-25, BIM: no zero code on null log message ptr. 36* * 1985-02-18, EJ Sharpe: optimizations (binary search for message time 37* * or sequence numbers. Use suffix_time when searching for 38* * specific message time to avoid some initiates. 39* * 1985-03-15, Lindsey Spratt, Steve Herbst: Fixed to allocate held 40* * message nodes in system_area instead of caller_area. 41* * 1985-03-18, Steve Herbst: Fixed $open entries to abort if current 42* * log segment is null and previous not found. 43**/ 44 45 declare P_log_dname char (*) parameter; 46 declare P_log_ename char (*) parameter; 47 declare P_log_read_data_ptr pointer parameter; 48 declare P_log_message_ptr pointer parameter; 49 declare P_open_info_ptr pointer parameter; 50 declare P_message_sequence fixed bin (35) parameter; 51 declare P_message_time fixed bin (71) parameter; 52 declare P_event_channel fixed bin (71) parameter; 53 declare P_log_uid bit (36) aligned parameter; 54 declare P_process_id bit (36) aligned parameter; 55 declare P_search_direction bit (1) aligned parameter; 56 declare P_code fixed bin (35) parameter; 57 58 declare allocate_copies bit (1) aligned; 59 declare code fixed bin (35); 60 declare procedure_name char (32); 61 declare caller_area_ptr pointer; 62 declare good_log_read_data_ptr pointer; 63 declare system_area_ptr pointer; 64 declare log_in_service bit (1) aligned; 65 declare log_idx fixed bin; 66 declare message_sequence fixed bin (35); 67 declare new_log_read_data_ptr pointer; 68 69 declare system_area area based (system_area_ptr); 70 71 declare error_table_$badcall fixed bin (35) external static; 72 declare error_table_$fatal_error fixed bin (35) external static; 73 declare error_table_$log_segment_damaged fixed bin (35) external static; 74 declare error_table_$no_log_message fixed bin (35) external static; 75 declare error_table_$null_info_ptr fixed bin (35) ext static; 76 declare error_table_$unimplemented_version fixed bin (35) ext static; 77 78 declare cv_entry_ entry (char (*), ptr, fixed bin (35)) returns (entry); 79 /* DBG declare date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) var); /* DBG */ 80 declare get_system_free_area_ entry () returns (pointer); 81 declare hcs_$get_uid_seg entry (ptr, bit (36) aligned, fixed bin (35)); 82 declare hcs_$terminate_noname entry (pointer, fixed bin (35)); 83 /* DBG declare ioa_ entry options (variable); /* DBG */ 84 declare log_initiate_ entry (char (*), char (*), fixed bin, pointer, fixed bin (35)); 85 declare log_list_history_$all entry (pointer, char (*), fixed bin, pointer); 86 declare log_position_$find_sequence entry (pointer, fixed bin (35), bit (1) aligned, pointer, bit (1) aligned); 87 declare log_position_$find_time entry (pointer, fixed bin (71), bit (1) aligned, pointer, bit (1) aligned); 88 declare log_position_$next_message entry (pointer, pointer, bit (1) aligned); 89 declare log_position_$prev_message entry (pointer, pointer, bit (1) aligned); 90 declare log_segment_$get_service_bit entry (pointer, bit (1) aligned, fixed binary (35)); 91 declare log_wakeup_$register entry (pointer, bit (36) aligned, fixed bin (71), fixed bin (35)); 92 declare log_wakeup_$deregister entry (pointer, bit (36) aligned, fixed bin (71), fixed bin (35)); 93 declare sub_err_ entry options (variable); 94 95 declare cleanup condition; 96 97 declare (clock, codeptr, divide, hbound, max, min, null, segno, setwordno, unspec) builtin; 98 99 100 log_read_$open: 101 entry (P_log_dname, P_log_ename, P_log_read_data_ptr, P_code); 102 103 P_log_read_data_ptr = null (); 104 P_code = 0; 105 106 procedure_name = ""; 107 caller_area_ptr = get_system_free_area_ (); 108 allocate_copies = "0"b; 109 110 go to OPEN_COMMON; 111 112 log_read_$open_long: 113 entry (P_log_dname, P_log_ename, P_open_info_ptr, P_log_read_data_ptr, P_code); 114 115 116 P_log_read_data_ptr = null (); 117 P_code = 0; 118 119 log_read_open_info_ptr = P_open_info_ptr; 120 if log_read_open_info.version ^= LOG_READ_OPEN_INFO_VERSION_1 121 then call finished (error_table_$unimplemented_version); 122 123 procedure_name = log_read_open_info.reader_procedure; 124 caller_area_ptr = log_read_open_info.allocation_area_ptr; 125 allocate_copies = log_read_open_info.allocate_copies; 126 if procedure_name ^= "" & allocate_copies 127 then call finished (error_table_$badcall); /* too hard to implement, it gets VERY confusing in $update */ 128 129 OPEN_COMMON: 130 log_read_data_ptr, good_log_read_data_ptr = null (); 131 system_area_ptr = get_system_free_area_ (); 132 133 on condition (cleanup) begin; 134 call log_read_$close (good_log_read_data_ptr, (0)); 135 end; 136 137 log_read_data_n_segments = 1; 138 allocate log_read_data in (system_area) set (log_read_data_ptr); 139 unspec (log_read_data) = ""b; 140 log_read_data.sentinel = LOG_READ_DATA_VERSION_SENTINEL; 141 log_read_data.n_segments = log_read_data_n_segments; 142 log_read_data.reader_data_ptr = null (); 143 log_read_data.first_held_message_ptr = null (); 144 log_read_data.latest_message = null (); 145 log_read_data.earlier_message = null (); 146 log_read_data.last_held_message_ptr = null (); 147 log_read_data.ptr (*) = null (); 148 log_read_data.history_complete = "0"b; 149 log_read_data.call_procedures = (procedure_name ^= ""); 150 log_read_data.user_area_ptr = caller_area_ptr; 151 log_read_data.allocate_copies = allocate_copies; 152 153 begin; 154 declare 1 null_entry aligned, 155 2 code ptr, 156 2 env ptr; 157 declare nulle entry variable; 158 159 null_entry.code = null (); 160 null_entry.env = null (); 161 unspec (nulle) = unspec (null_entry); 162 log_read_data.ev = nulle; /* aggregate */ 163 end; 164 165 if log_read_data.call_procedures then do; 166 167 call set_entry_variable (log_read_data.ev.open, procedure_name, "open"); 168 call set_entry_variable (log_read_data.ev.close, procedure_name, "close"); 169 call set_entry_variable (log_read_data.ev.prev_message, procedure_name, "prev_message"); 170 call set_entry_variable (log_read_data.ev.next_message, procedure_name, "next_message"); 171 call set_entry_variable (log_read_data.ev.position_time, procedure_name, "position_time"); 172 call set_entry_variable (log_read_data.ev.position_sequence, procedure_name, "position_sequence"); 173 call set_entry_variable (log_read_data.ev.update, procedure_name, "update"); 174 call set_entry_variable (log_read_data.ev.hold_message, procedure_name, "hold_message"); 175 call set_entry_variable (log_read_data.ev.free_message, procedure_name, "free_message"); 176 call set_entry_variable (log_read_data.ev.get_log_uid, procedure_name, "get_log_uid"); 177 end; 178 179 good_log_read_data_ptr = log_read_data_ptr; /* can be used now by log_read_$close above */ 180 181 182 if log_read_data.call_procedures then do; 183 call log_read_data.ev.open (P_log_dname, P_log_ename, 184 caller_area_ptr, log_read_data.reader_data_ptr, code); 185 if code ^= 0 then call finished (code); 186 go to OPEN_GOOD_RETURN; /* The remainder is in the inner ring */ 187 end; 188 189 /* Try to initiate the beginning segment in the log family. Any 190* error at this stage, and we just give up. */ 191 192 log_idx = 1; 193 log_read_data.dname (1) = P_log_dname; 194 log_read_data.ename (1) = P_log_ename; 195 196 call initiate_log (1); 197 if (code ^= 0) then do; 198 call log_read_$close (log_read_data_ptr, (0)); 199 call finished (code); 200 end; 201 202 log_read_data.suffix_time (1) = clock (); /* A reasonable default-- logged messages will be earlier */ 203 204 call get_complete_history (); 205 206 call look_for_log_segment (log_read_data.n_segments, 1); /* Set up the limits in the header */ 207 if log_segment_ptr = null () then call finished (error_table_$fatal_error); 208 209 log_read_data.very_first_log_idx = log_idx; /* Start with oldest (first) message */ 210 log_read_data.very_first_sequence = log_segment.first_sequence; 211 log_read_data.very_first_time = log_segment.first_time; 212 213 call look_for_log_segment (1, log_read_data.n_segments); /* Find newest (last) message */ 214 if log_segment_ptr = null () then call finished (error_table_$fatal_error); 215 216 if log_segment.first_sequence = 0 & log_segment.last_sequence = 0 then do; /* Log is empty */ 217 call look_for_log_segment (2, log_read_data.n_segments); /* Find previous log */ 218 if log_segment_ptr = null then call finished (error_table_$fatal_error); 219 end; 220 221 log_read_data.very_last_log_idx = log_idx; 222 log_read_data.very_last_sequence = log_segment.last_sequence; 223 log_read_data.very_last_time = log_segment.last_time; 224 OPEN_GOOD_RETURN: 225 P_log_read_data_ptr = log_read_data_ptr; 226 227 call finished (0); 228 229 230 log_read_$close: 231 entry (P_log_read_data_ptr, P_code); 232 233 P_code = 0; 234 if P_log_read_data_ptr = null () then return; 235 call check_in_pointer; 236 237 if log_read_data.call_procedures then do; 238 P_log_read_data_ptr = null (); 239 call log_read_data.ev.close (log_read_data.reader_data_ptr, code); 240 call finished (code); 241 end; 242 243 if log_read_data.allocate_copies then 244 call free_held_messages (); 245 246 P_log_read_data_ptr = null (); 247 system_area_ptr = get_system_free_area_ (); 248 249 do log_idx = 1 to hbound (log_read_data.ptr, 1); 250 if (log_read_data.ptr (log_idx) ^= null ()) then 251 call hcs_$terminate_noname (log_read_data.ptr (log_idx), (0)); 252 end; 253 254 free log_read_data in (system_area); 255 call finished (0); 256 257 258 log_read_$next_message: 259 entry (P_log_read_data_ptr, P_log_message_ptr, P_code); 260 261 call check_in_pointer; 262 log_message_ptr = P_log_message_ptr; 263 264 if log_read_data.call_procedures then do; 265 call log_read_data.ev.next_message (log_read_data.reader_data_ptr, P_log_message_ptr, code); 266 call finished (code); 267 end; 268 269 if log_read_data.allocate_copies then 270 log_message_ptr = lookup_message (log_message_ptr); /* turn ptr to user's copy into real msg ptr */ 271 if (log_message_ptr = null ()) then do; 272 call look_for_log_segment (log_read_data.n_segments, 1); /* Look through them all, backwards */ 273 if (log_segment_ptr = null ()) then call finished (code); /* Couldn't find anything, punt */ 274 end; 275 276 else call find_log_idx_of_message (); 277 278 call log_position_$next_message (log_segment_ptr, log_message_ptr, log_read_data.damaged (log_idx)); 279 280 if (log_message_ptr = null ()) then do; /* Not in that segment, try the next one */ 281 call look_for_log_segment ((log_idx - 1), 1);/* Search remaining ones */ 282 if (log_segment_ptr = null ()) then call finished (error_table_$no_log_message); 283 284 call log_position_$next_message (log_segment_ptr, log_message_ptr, log_read_data.damaged (log_idx)); 285 if log_message_ptr = null () /* still no one home */ 286 then call finished (error_table_$no_log_message); /* So say so */ 287 end; 288 289 /**** Arrive here with a found message in our mouth */ 290 291 if log_read_data.allocate_copies 292 then call short_hold_message (log_message_ptr); /* input-output, replaces pointer with copy */ 293 294 P_log_message_ptr = log_message_ptr; 295 call finished (0); 296 297 298 log_read_$prev_message: 299 entry (P_log_read_data_ptr, P_log_message_ptr, P_code); 300 call check_in_pointer; 301 log_message_ptr = P_log_message_ptr; 302 303 if log_read_data.call_procedures then do; 304 call log_read_data.ev.prev_message (log_read_data.reader_data_ptr, P_log_message_ptr, code); 305 call finished (code); 306 end; 307 308 if log_read_data.allocate_copies then 309 log_message_ptr = lookup_message (log_message_ptr); /* turn ptr to user's copy into real msg ptr */ 310 if (log_message_ptr = null ()) then do; 311 call look_for_log_segment (1, log_read_data.n_segments); /* Look through them all, from the end */ 312 if (log_segment_ptr = null ()) then /* Couldn't find anything, punt */ 313 call finished (code); 314 end; 315 316 else call find_log_idx_of_message (); 317 318 call log_position_$prev_message (log_segment_ptr, log_message_ptr, log_read_data.damaged (log_idx)); 319 320 if (log_message_ptr = null ()) then do; /* Not in that segment, try the previous one */ 321 call look_for_log_segment ((log_idx + 1), log_read_data.n_segments); /* Search remaining ones */ 322 if (log_segment_ptr = null ()) then 323 call finished (error_table_$no_log_message); 324 325 call log_position_$prev_message (log_segment_ptr, log_message_ptr, log_read_data.damaged (log_idx)); 326 if log_message_ptr = null () /* Still no one home? Must be an emptr segment. */ 327 then call finished (error_table_$no_log_message); 328 end; 329 330 if log_read_data.allocate_copies 331 then call short_hold_message (log_message_ptr); /* input-output, replaces pointer with copy */ 332 333 P_log_message_ptr = log_message_ptr; 334 call finished (0); 335 336 337 log_read_$position_sequence: 338 entry (P_log_read_data_ptr, P_message_sequence, P_search_direction, P_log_message_ptr, P_code); 339 340 call check_in_pointer; 341 P_log_message_ptr = null (); 342 343 if log_read_data.call_procedures then do; 344 call log_read_data.ev.position_sequence (log_read_data.reader_data_ptr, P_message_sequence, 345 P_search_direction, P_log_message_ptr, code); 346 call finished (code); 347 end; 348 349 call sequence_search (P_search_direction); 350 351 if log_read_data.allocate_copies 352 then call short_hold_message (log_message_ptr); /* input-output, replaces pointer with copy */ 353 354 P_log_message_ptr = log_message_ptr; 355 if (log_message_ptr = null ()) then 356 call finished (error_table_$no_log_message); 357 else call finished (0); 358 359 360 log_read_$position_time: 361 entry (P_log_read_data_ptr, P_message_time, P_search_direction, P_log_message_ptr, P_code); 362 363 call check_in_pointer; 364 P_log_message_ptr = null (); 365 366 if log_read_data.call_procedures then do; 367 call log_read_data.ev.position_time (log_read_data.reader_data_ptr, P_message_time, 368 P_search_direction, P_log_message_ptr, code); 369 call finished (code); 370 end; 371 call time_search (P_search_direction); 372 373 if log_read_data.allocate_copies 374 then call short_hold_message (log_message_ptr); /* input-output, replaces pointer with copy */ 375 376 P_log_message_ptr = log_message_ptr; 377 if (log_message_ptr = null ()) then 378 call finished (error_table_$no_log_message); 379 else call finished (0); 380 381 382 /**** This entrypoint may close and reopen the log, resetting 383* the log_read_data_ptr. 384* 385* This entrypoint checks the in_service state of the log, 386* and closes and reopens if it is not in service. */ 387 388 389 log_read_$update: 390 entry (P_message_sequence, P_log_read_data_ptr, P_log_message_ptr, P_code); 391 392 call check_in_pointer; 393 394 call update_procedure (); 395 return; 396 397 398 log_read_$hold_message: 399 entry (P_log_read_data_ptr, P_log_message_ptr); 400 401 call check_in_pointer; 402 403 if log_read_data.call_procedures then do; 404 call log_read_data.ev.hold_message (log_read_data.reader_data_ptr, P_log_message_ptr); 405 return; /* DO NOT pass through finish, we have no output code */ 406 end; 407 408 if log_read_data.allocate_copies 409 then do; 410 log_message_ptr = lookup_message (P_log_message_ptr); /* demand that we have it someplace */ 411 call hold_message (log_message_ptr, P_log_message_ptr); /* actual, copy */ 412 if log_message_ptr = log_read_data.latest_message.actual_ptr 413 then log_read_data.latest_message = null (); /* To avoid having to make sure that the ref count is set to 2 */ 414 if log_message_ptr = log_read_data.earlier_message.actual_ptr 415 then log_read_data.earlier_message = null ();/* To avoid having to make sure that the ref count is set to 2 */ 416 end; 417 return; 418 419 420 log_read_$free_message: 421 entry (P_log_read_data_ptr, P_log_message_ptr); 422 423 call check_in_pointer; 424 425 if log_read_data.call_procedures then do; 426 call log_read_data.ev.free_message (log_read_data.reader_data_ptr, P_log_message_ptr); 427 return; 428 end; 429 430 if log_read_data.allocate_copies then do; 431 call free_message (P_log_message_ptr); /* search for the COPY */ 432 end; 433 return; 434 435 436 log_read_$get_log_uid: 437 entry (P_log_read_data_ptr, P_log_uid, P_code); 438 439 call check_in_pointer; 440 P_code = 0; 441 P_log_uid = "0"b; 442 443 if log_read_data.call_procedures then do; 444 call log_read_data.ev.get_log_uid (log_read_data.reader_data_ptr, P_log_uid, code); 445 call finished (code); 446 end; 447 448 call hcs_$get_uid_seg (log_read_data.segments (1).ptr, 449 P_log_uid, code); 450 call finished (code); 451 452 453 log_read_$register: 454 entry (P_log_read_data_ptr, P_process_id, P_event_channel, P_code); 455 456 call check_in_pointer; 457 458 if log_read_data.call_procedures then do; 459 call log_read_data.ev.register (log_read_data.reader_data_ptr, P_process_id, P_event_channel, code); 460 call finished (code); 461 end; 462 463 call log_wakeup_$register (log_read_data.segments (1).ptr, P_process_id, P_event_channel, code); 464 call finished (code); 465 466 467 log_read_$deregister: 468 entry (P_log_read_data_ptr, P_process_id, P_event_channel, P_code); 469 470 call check_in_pointer; 471 472 if log_read_data.call_procedures then do; 473 call log_read_data.ev.deregister (log_read_data.reader_data_ptr, P_process_id, P_event_channel, code); 474 call finished (code); 475 end; 476 477 call log_wakeup_$deregister (log_read_data.segments (1).ptr, P_process_id, P_event_channel, code); 478 call finished (code); 479 480 481 sequence_search: 482 procedure (P_after_sw); 483 484 declare P_after_sw bit (1) aligned parameter; 485 486 declare message_sequence fixed bin (35); 487 declare found bit (1); 488 489 490 message_sequence = P_message_sequence; 491 492 call set_current_log (log_read_data.very_last_log_idx); /* update the last sequence number, messages may have arrived */ 493 log_read_data.very_last_sequence = log_segment.last_sequence; 494 495 if P_after_sw then do; 496 if (message_sequence <= log_read_data.very_first_sequence) then do; 497 call set_current_log (log_read_data.very_first_log_idx); 498 log_message_ptr = null (); /* Force position to first message */ 499 call log_position_$next_message (log_segment_ptr, log_message_ptr, ("0"b)); 500 end; 501 502 else if (message_sequence > log_read_data.very_last_sequence) then 503 log_message_ptr = null (); 504 505 else call search_for_sequence (); 506 end; 507 508 else if ^P_after_sw then do; 509 if (message_sequence >= log_read_data.very_last_sequence) then do; 510 call set_current_log (log_read_data.very_last_log_idx); 511 log_message_ptr = null (); /* Force position to last message */ 512 call log_position_$prev_message (log_segment_ptr, log_message_ptr, ("0"b)); 513 end; 514 515 else if (message_sequence < log_read_data.very_first_sequence) then 516 log_message_ptr = null (); 517 518 else call search_for_sequence (); 519 end; 520 521 return; 522 523 /* This routine implements a binary search to find the particular message 524* sequence number we want. It may turn out that that sequence does not exist 525* (due to message or log segments lost). In that case we'll find an acceptable 526* substitute consistant sith P_after_sw. */ 527 528 search_for_sequence: procedure (); 529 530 declare found bit (1); 531 declare test_idx fixed bin; 532 declare low_idx fixed bin; 533 declare high_idx fixed bin; 534 535 536 log_message_ptr = null (); 537 538 /* We'll try the newest log segment. If the sequence we're 539* interested in is there, we can avoid the binary search. The 540* newest log is already initiated, so this isn't too expensive. */ 541 542 call look_for_log_segment (log_read_data.very_last_log_idx, log_read_data.very_first_log_idx); 543 if log_idx = 0 /* all the log segments damaged? */ 544 then return; 545 else if message_sequence >= log_segment.first_sequence & message_sequence <= log_segment.last_sequence 546 then goto call_log_position; /* found it, now position to message */ 547 548 /* set up for binary search */ 549 550 found = "0"b; 551 552 low_idx = log_idx + 1; /* skip one(s) we've already looked at */ 553 high_idx = log_read_data.very_first_log_idx; /* last log in list (oldest) */ 554 555 /* DBG call ioa_ ("Test sequence is ^d", message_sequence); /* DBG */ 556 do while ((low_idx <= high_idx) & ^found); 557 558 test_idx = divide ((high_idx - low_idx), 2, 17, 0) + low_idx; 559 560 /* Initiate the log segment whose index is test_idx. We'll compare the 561* first and last sequence number values against the sequence we're looking 562* for. 563* The internal proc "look_for_log_segment" is called to perform the 564* initiation. If the desired segment can't be initiated (i.e. it's damaged) 565* look_for_log_segment will try the next in sequence automatically. We 566* tell it in which direction to search based upon P_after_sw. 567* It may very well happen that look_for_log_segment will hit 568* the end of the partition we're working with. It that case, we'll adjust 569* the partition and try again. */ 570 571 call look_for_log_segment (test_idx, high_idx); 572 if log_idx = 0 /* unable to get any log segment? */ 573 then high_idx = test_idx; /* get damaged segs out of partition */ 574 575 /* See if what we're looking for is in this log segment. If not, we must 576* adjust the search partition to contain the range of log segments that are 577* still candidates. This will be the upper or lower half of the current 578* partition. Note the optimization in which we ignore those indicies between 579* test_idx and log_idx, these are damaged log segments and should not be 580* included in this partitioning. */ 581 582 else do; 583 /* DBG call ioa_ ("Partition= ^d to ^d; test= ^d^[ *Actually ^d*^;^s^] (^d to ^d)", 584* low_idx, high_idx, test_idx, (test_idx^=log_idx), log_idx, 585* log_segment.first_sequence, log_segment.last_sequence);/*DBG */ 586 587 if message_sequence >= log_segment.first_sequence & message_sequence <= log_segment.last_sequence 588 then found = "1"b; 589 else if message_sequence < log_segment.last_sequence 590 then low_idx = log_idx + 1; /* partition to older half */ 591 else high_idx = test_idx - 1; /* partition to younger half */ 592 end; 593 end; 594 595 596 /* If we were unable to find a log segment that contains the desired sequence 597* number, we must assume that number falls between a pair of existing log segments. 598* One of the pair is at the index we currently hold. Here we'll check to see 599* if we really shouldn't be looking at the other of the pair. The value of 600* P_after_sw will help us decide. */ 601 602 if ^found 603 then if P_after_sw 604 then if message_sequence > log_segment.last_sequence 605 then do; 606 test_idx = max (test_idx - 1, log_read_data.very_last_log_idx); 607 /* pick up next younger log segment, if there is one */ 608 call look_for_log_segment (test_idx, log_read_data.very_last_log_idx); 609 end; 610 else ; /* we've got the better choice already */ 611 612 else if message_sequence < log_segment.first_sequence 613 then do; 614 test_idx = min (test_idx + 1, log_read_data.very_first_log_idx); 615 /* pick up next older log segment, if there is one */ 616 call look_for_log_segment (test_idx, log_read_data.very_first_log_idx); 617 end; 618 else ; /* we've got the better choice already */ 619 else ; 620 621 if log_segment_ptr = null () 622 then return; /* couldn't find anything good */ 623 624 /* And finally we can have log_position_ get us to the specific message 625* within the log segment. */ 626 627 if message_sequence >= log_segment.first_sequence & message_sequence <= log_segment.last_sequence 628 then do; 629 call_log_position: 630 call log_position_$find_sequence (log_segment_ptr, message_sequence, P_after_sw, log_message_ptr, ("0"b)); 631 end; 632 else do; 633 /* We won't have an exact match, get the first message in the 634* next log or the last message in the previous log. */ 635 if P_after_sw 636 then call log_position_$next_message (log_segment_ptr, log_message_ptr, ("0"b)); 637 else call log_position_$prev_message (log_segment_ptr, log_message_ptr, ("0"b)); 638 end; 639 640 end search_for_sequence; 641 642 643 end sequence_search; 644 645 646 set_entry_variable: 647 procedure (P_entry_variable, P_procedure_name, P_entry_name); 648 649 declare P_entry_variable variable entry parameter; 650 declare P_entry_name char (*) parameter; 651 declare P_procedure_name char (*) parameter; 652 653 RETRY: 654 P_entry_variable = cv_entry_ (P_procedure_name || "$" || P_entry_name, codeptr (log_read_), code); 655 if (code = 0) then return; 656 657 call sub_err_ (code, "log_read_", ACTION_CAN_RESTART, null (), (0), "Failed to snap link to ^a$^a.", P_procedure_name, P_entry_name); 658 go to RETRY; 659 660 end set_entry_variable; 661 662 663 time_search: 664 procedure (P_after_sw); 665 666 declare P_after_sw bit (1) aligned parameter; 667 668 declare message_time fixed bin (71); 669 670 671 message_time = P_message_time; 672 673 674 call set_current_log (log_read_data.very_last_log_idx); /* update our notion of the last time in the family */ 675 log_read_data.very_last_time = log_segment.last_time; /* since messages may have arrived */ 676 677 if P_after_sw then do; 678 if (message_time <= log_read_data.very_first_time) then do; 679 call set_current_log (log_read_data.very_first_log_idx); 680 log_message_ptr = null (); /* Force position to first message */ 681 call log_position_$next_message (log_segment_ptr, log_message_ptr, ("0"b)); 682 end; 683 684 else if (message_time > log_read_data.very_last_time) then 685 log_message_ptr = null (); 686 687 else call search_for_time (); 688 end; 689 690 else if ^P_after_sw then do; 691 if (message_time >= log_read_data.very_last_time) then do; 692 call set_current_log (log_read_data.very_last_log_idx); 693 log_message_ptr = null (); /* Force position to last message */ 694 call log_position_$prev_message (log_segment_ptr, log_message_ptr, ("0"b)); 695 end; 696 697 else if (message_time < log_read_data.very_first_time) then 698 log_message_ptr = null (); 699 700 else call search_for_time (); 701 end; 702 703 return; 704 705 706 /* This routine implements a binary search to find 707* a message near the desired time. Here we attempt to initiate as few log 708* segments as possible. Rather than peek at log_segment.last_time and 709* log_segment.first_time we trust the segment time suffix. */ 710 711 search_for_time: procedure; 712 713 declare found bit (1); 714 declare test_idx fixed bin; 715 declare low_idx fixed bin; 716 declare high_idx fixed bin; 717 declare first_message_time fixed bin (71); 718 719 720 log_message_ptr = null (); 721 722 /* We'll first try the newest log segment. If the time we're 723* interested in is there, we can avoid the binary search. The 724* newest log is already initiated, so this isn't too expensive. */ 725 726 call look_for_log_segment (log_read_data.very_last_log_idx, log_read_data.very_first_log_idx); 727 if log_idx = 0 /* all log segments damaged? */ 728 then return; 729 else if message_time >= log_segment.first_time & message_time <= log_segment.last_time 730 then goto call_log_position; /* found it, now position to message */ 731 732 /* set up for binary search */ 733 734 found = "0"b; 735 736 low_idx = log_idx + 1; /* skip one(s) we've already looked at */ 737 high_idx = log_read_data.very_first_log_idx; /* last log in list (oldest) */ 738 739 /* DBG call ioa_ ("Test time is ^a.", 740* date_time_$format ("date_time", message_time, "", ""));/* DBG */ 741 742 do while ((low_idx <= high_idx) & ^found); 743 744 test_idx = divide ((high_idx - low_idx), 2, 17, 0) + low_idx; 745 746 /* Get the time of the first message in this log segment. We do this 747* by looking at the time of the last message in the previous log segment. 748* A side effect is that we'll always find a log segment in our search (since 749* all times between very_first_time and very_last_time will be included). 750* This happens regardless of missing log segments. There is a chance that 751* we'll get the wrong one this way, an extra check is made later - once the 752* segment we select is initiated. */ 753 754 if test_idx < log_read_data.very_first_log_idx 755 then first_message_time = log_read_data.segments (test_idx + 1).suffix_time + 1; /* this may be way off */ 756 else first_message_time = log_read_data.very_first_time; 757 758 /* DBG call ioa_ ("Partition= ^d to ^d; test= ^d (^a to ^a)", 759* low_idx, high_idx, test_idx, 760* date_time_$format ("date_time", first_message_time, "", ""), 761* date_time_$format ("date_time", 762* log_read_data.segments(test_idx).suffix_time, "", ""));/* DBG */ 763 764 /* See if what we're looking for is in this log segment. If not, adjust 765* the search partition to include only those segments which are still 766* possible candidates. */ 767 768 if message_time >= first_message_time & message_time <= log_read_data.segments (test_idx).suffix_time 769 then found = "1"b; 770 else if message_time < log_read_data.segments (test_idx).suffix_time 771 then low_idx = test_idx + 1; /* partition to older half */ 772 else high_idx = test_idx - 1; /* partition to younger half */ 773 end; 774 775 776 if ^found then return; /* must always find a log segment */ 777 778 779 /* Now get the log segment we've selected initiated. Note that 780* "look_for_log_segment" may give us something different. This happens if the 781* log we selected is damaged. The direction of search for an undamaged log 782* segment is determined by the value of P_after_sw. */ 783 784 if P_after_sw 785 then call look_for_log_segment (test_idx, log_read_data.very_last_log_idx); 786 else call look_for_log_segment (test_idx, log_read_data.very_first_log_idx); 787 788 789 /* Now that we've actually got a log segment initiated we can check to see 790* if our estimate re: log_segment.first_time (see first_message_time above) was 791* OK. We're only concerned if P_after_sw is false (implying backward searching). */ 792 793 if ^P_after_sw 794 then if log_segment.first_time > message_time 795 then if test_idx < log_read_data.very_first_log_idx 796 then do; 797 test_idx = test_idx + 1; /* go to previous log segment */ 798 call look_for_log_segment (test_idx, log_read_data.very_first_log_idx); 799 end; 800 else ; 801 else ; 802 else ; 803 804 if log_segment_ptr = null () 805 then return; /* couldn't find anything good */ 806 807 /* And finally we can have log_position_ get us to the specific message 808* within the log segment. */ 809 810 if message_time >= log_segment.first_time & message_time <= log_segment.last_time 811 then do; 812 call_log_position: 813 call log_position_$find_time (log_segment_ptr, message_time, P_after_sw, log_message_ptr, ("0"b)); 814 end; 815 else do; 816 /* We won't have an exact match, get the first message in the 817* next log or the last message in the previous log. */ 818 if P_after_sw 819 then call log_position_$next_message (log_segment_ptr, log_message_ptr, ("0"b)); 820 else call log_position_$prev_message (log_segment_ptr, log_message_ptr, ("0"b)); 821 end; 822 823 824 end search_for_time; 825 826 end time_search; 827 828 829 find_log_idx_of_message: 830 procedure (); 831 832 /* This procedure sets log_segment_ptr and log_idx to identify the log segment 833* containing the log message we were passed as an argument. If it's not 834* the most recently used segment, a linear search is performed. */ 835 836 837 if (log_read_data.current_idx > 0) then 838 if (log_read_data.current_ptr = log_read_data.ptr (log_read_data.current_idx)) then 839 if (segno (log_read_data.current_ptr) = segno (log_message_ptr)) then do; 840 log_idx = log_read_data.current_idx; 841 log_segment_ptr = log_read_data.current_ptr; 842 return; 843 end; 844 845 do log_idx = 1 to log_read_data.n_segments; 846 if (segno (log_read_data.ptr (log_idx)) = segno (log_message_ptr)) then do; 847 call set_current_log (log_idx); /* (re-)sets global log_idx, even though we have it here */ 848 return; 849 end; 850 end; /* of loop through segments */ 851 852 /* If it's not one of the segments we know about, then it's flat wrong. 853* Probably there is a better choice for status code, but this will do for now. */ 854 855 call finished (error_table_$fatal_error); 856 857 end find_log_idx_of_message; 858 859 860 look_for_log_segment: 861 procedure (P_start, P_finish); 862 863 /* This procedure sets log_segment_ptr and log_idx to identify the first segment 864* it can initiate in the range specified. If none can be found, log_segment_ptr 865* is set to null, log_idx to zero, and the caller gets to take appropriate action. */ 866 867 declare P_start fixed bin parameter; 868 declare P_finish fixed bin parameter; 869 870 declare increment fixed bin; 871 declare test_idx fixed bin; 872 873 874 if (P_start > P_finish) then /* Force loop to proceed in right direction */ 875 increment = -1; 876 else increment = 1; 877 878 code = 1; /* Simulate DO ... UNTIL */ 879 do test_idx = P_start to P_finish by increment while (code ^= 0); 880 call initiate_log (test_idx); 881 if (code = 0) then log_idx = test_idx; /* Remember the one that succeeded */ 882 end; 883 884 if (code ^= 0) then /* A zero invalidates the current log pointer */ 885 call set_current_log (0); 886 else call set_current_log (log_idx); /* (re-)sets global log_idx, which is OK */ 887 888 return; 889 end look_for_log_segment; 890 891 892 set_current_log: 893 procedure (P_log_idx); 894 895 /* This procedure sets the values identifying the current log in log_read_data; 896* these values are used solely as an optimization for find_log_idx_of_message. 897* It also sets the global log_idx (often used as input) and log_segment_ptr values. */ 898 899 declare P_log_idx fixed bin parameter; 900 901 902 if (P_log_idx = 0) then 903 log_segment_ptr = null (); 904 else log_segment_ptr = log_read_data.ptr (P_log_idx); 905 906 log_read_data.current_ptr = log_segment_ptr; 907 log_read_data.current_idx = P_log_idx; 908 909 log_idx = P_log_idx; 910 911 return; 912 end set_current_log; 913 914 915 initiate_log: 916 procedure (P_idx); 917 918 declare P_idx fixed bin parameter; 919 920 921 if (log_read_data.damaged (P_idx)) then do; 922 code = error_table_$log_segment_damaged; 923 return; 924 end; 925 926 if (log_read_data.ptr (P_idx) ^= null ()) then do; 927 code = 0; /* Indicate success */ 928 return; 929 end; 930 931 call log_initiate_ 932 (log_read_data.dname (P_idx), log_read_data.ename (P_idx), 10, log_read_data.ptr (P_idx), code); 933 934 if (code ^= 0) then log_read_data.damaged (P_idx) = "1"b; 935 936 return; 937 end initiate_log; 938 939 940 get_complete_history: 941 procedure (); 942 943 declare new_log_read_data_ptr pointer; 944 declare new_idx fixed bin; /* NL */ declare saved_n_segments fixed bin; 945 946 /* This procedure is responsible for listing any remaining history 947* for this log family-- it must be called every time we try to position 948* before the beginning of the current history. It may change the value 949* of log_read_data_ptr; however, because it only adds new entries at 950* the end, it will NOT invalidate the current index into the log_read_data 951* log array. It is the calling routine's responsibility to pass the 952* new version of log_read_data_ptr back to the caller, but since this 953* routine is now called only at open time, this is not a problem. It 954* will become a problem if the optimization to initiate only the first 955* segment (until others are needed) is implemented. */ 956 957 958 if log_read_data.history_complete then return; /* It's already happened */ 959 960 call log_list_history_$all 961 (log_read_data.ptr (1), log_read_data.ename (1), log_read_data.n_segments, new_log_read_data_ptr); 962 963 if (new_log_read_data_ptr ^= null ()) then do; /* There is some history, so replace our structure with it */ 964 do new_idx = 1 to log_read_data.n_segments; 965 new_log_read_data_ptr -> log_read_data.segments (new_idx) = log_read_data.segments (new_idx); 966 end; 967 968 /* Can't just copy the header, because that would copy log_read_data.n_segments, 969* which still has the old value */ 970 971 saved_n_segments = new_log_read_data_ptr -> log_read_data.n_segments; 972 new_log_read_data_ptr -> log_read_data.header = log_read_data.header; 973 new_log_read_data_ptr -> log_read_data.n_segments = saved_n_segments; /* NL */ 974 system_area_ptr = get_system_free_area_ (); 975 free log_read_data_ptr -> log_read_data in (system_area); 976 977 log_read_data_ptr = new_log_read_data_ptr; 978 new_log_read_data_ptr = null (); 979 end; 980 981 log_read_data.history_complete = "1"b; /* So we never have to go through this again */ 982 983 return; 984 end get_complete_history; 985 986 987 MAIN_RETURN: 988 return; 989 990 991 update_procedure: 992 procedure (); 993 994 log_message_ptr = P_log_message_ptr; 995 if log_read_data.allocate_copies then log_message_ptr = lookup_message (log_message_ptr); 996 997 if (log_message_ptr = null ()) then 998 call finished (error_table_$fatal_error); 999 1000 if log_read_data.call_procedures then do; 1001 call log_read_data.ev.update (P_message_sequence, log_read_data.reader_data_ptr, 1002 P_log_message_ptr, code); 1003 call finished (code); 1004 end; 1005 1006 message_sequence = P_message_sequence; 1007 log_segment_ptr = setwordno (log_message_ptr, 0); 1008 call log_segment_$get_service_bit (log_segment_ptr, log_in_service, code); 1009 if code ^= 0 then call finished (code); 1010 if message_sequence >= log_segment.limits.first_sequence 1011 & message_sequence <= log_segment.limits.last_sequence 1012 & log_in_service then call finished (0); 1013 1014 call log_read_$open (log_read_data.segments (1).dname, log_read_data.segments (1).ename, 1015 new_log_read_data_ptr, code); 1016 if code ^= 0 then call finished (0); /* leave well enough alone if this fails */ 1017 1018 call log_read_$position_sequence (new_log_read_data_ptr, message_sequence, "1"b /* here or later */, 1019 log_message_ptr, code); /* this recursive call will short-hold the one preserved message */ 1020 if code ^= 0 then do; 1021 call log_read_$close (new_log_read_data_ptr, (0)); 1022 call finished (0); 1023 end; 1024 1025 if log_read_data.allocate_copies then /* held messages cannot be held across an update */ 1026 /* because the copy pointers cannot be preserved */ 1027 call free_held_messages; 1028 1029 call log_read_$close (log_read_data_ptr, (0)); 1030 log_read_data_ptr = new_log_read_data_ptr; 1031 1032 P_log_read_data_ptr = log_read_data_ptr; 1033 P_log_message_ptr = log_message_ptr; 1034 call finished (0); 1035 return; 1036 1037 end update_procedure; 1038 1039 1040 short_hold_message: 1041 procedure (P_message_ptr); 1042 1043 declare P_message_ptr pointer; 1044 declare mp pointer; 1045 declare node_ptr pointer; 1046 declare prev_node_ptr pointer; 1047 1048 if P_message_ptr = null () then return; 1049 1050 if log_read_data.earlier_message.actual_ptr ^= null () 1051 then do; 1052 call lookup_node (log_read_data.earlier_message.actual_ptr, node_ptr, prev_node_ptr); 1053 if node_ptr ^= null () 1054 then call dereference_node (node_ptr, prev_node_ptr); 1055 else free log_read_data.earlier_message.copy_ptr -> log_message; 1056 log_read_data.earlier_message = null (); /* in aggregate */ 1057 end; 1058 1059 log_read_data.earlier_message = log_read_data.latest_message; /* roll over ! */ 1060 1061 mp = P_message_ptr; 1062 call lookup_node (mp, node_ptr, (null ())); 1063 if node_ptr ^= null () 1064 then do; 1065 node_ptr -> log_held_message_node.reference_count = node_ptr -> log_held_message_node.reference_count + 1; 1066 log_read_data.latest_message = node_ptr -> log_held_message_node.message; 1067 end; 1068 else do; 1069 log_read_data.latest_message.actual_ptr = mp; 1070 call allocate_copy (mp, log_read_data.latest_message.copy_ptr); 1071 end; 1072 P_message_ptr = log_read_data.latest_message.copy_ptr; 1073 return; 1074 end short_hold_message; 1075 1076 hold_message: 1077 procedure (P_message_ptr, P_message_copy_ptr); 1078 1079 declare P_message_ptr pointer; 1080 declare P_message_copy_ptr pointer; 1081 declare mp pointer; 1082 declare node_ptr pointer; 1083 1084 mp = P_message_ptr; 1085 1086 call lookup_node (mp, node_ptr, (null ())); 1087 if node_ptr = null () then do; 1088 node_ptr = new_node (); 1089 node_ptr -> log_held_message_node.actual_ptr = mp; 1090 node_ptr -> log_held_message_node.copy_ptr = P_message_copy_ptr; 1091 end; 1092 node_ptr -> log_held_message_node.reference_count = node_ptr -> log_held_message_node.reference_count + 1; 1093 return; 1094 end hold_message; 1095 1096 free_message: 1097 procedure (P_message_ptr); 1098 declare P_message_ptr pointer; 1099 1100 declare mp pointer; 1101 declare prev_node_ptr pointer; 1102 declare node_ptr pointer; 1103 declare next_node_ptr pointer; 1104 1105 mp = P_message_ptr; 1106 prev_node_ptr = null (); 1107 node_ptr = log_read_data.first_held_message_ptr; 1108 do while (node_ptr ^= null ()); 1109 if node_ptr -> log_held_message_node.copy_ptr = mp 1110 then go to FOUND_NODE; 1111 prev_node_ptr = node_ptr; 1112 node_ptr = node_ptr -> log_held_message_node.next_ptr; 1113 end; 1114 1115 call sub_err_ (0, "log_read_", ACTION_CAN_RESTART, null (), (0), "free_message failed to find message ^p on held list.", mp); 1116 return; 1117 1118 1119 FOUND_NODE: 1120 DEREFERENCE_COMMON: 1121 if node_ptr -> log_held_message_node.reference_count > 1 1122 then do; 1123 node_ptr -> log_held_message_node.reference_count = node_ptr -> log_held_message_node.reference_count - 1; 1124 return; 1125 end; 1126 1127 1128 free node_ptr -> log_held_message_node.copy_ptr -> log_message; 1129 next_node_ptr = node_ptr -> log_held_message_node.next_ptr; 1130 1131 if prev_node_ptr ^= null () then prev_node_ptr -> log_held_message_node.next_ptr = next_node_ptr; 1132 else log_read_data.first_held_message_ptr = prev_node_ptr; 1133 if log_read_data.last_held_message_ptr = node_ptr 1134 then log_read_data.last_held_message_ptr = prev_node_ptr; 1135 1136 free node_ptr -> log_held_message_node; 1137 return; 1138 1139 dereference_node: 1140 entry (P_node_ptr, P_prev_node_ptr); 1141 1142 declare P_node_ptr pointer; 1143 declare P_prev_node_ptr pointer; 1144 1145 prev_node_ptr = P_prev_node_ptr; 1146 node_ptr = P_node_ptr; 1147 go to DEREFERENCE_COMMON; 1148 1149 end free_message; 1150 1151 lookup_node: procedure (P_message_ptr, P_node_ptr, P_prev_node_ptr); 1152 1153 declare (P_message_ptr, P_node_ptr, P_prev_node_ptr) pointer; 1154 declare (mp, node_ptr, prev_node_ptr) pointer; 1155 1156 mp = P_message_ptr; 1157 node_ptr = log_read_data.first_held_message_ptr; 1158 prev_node_ptr = null (); 1159 do while (node_ptr ^= null ()); 1160 if node_ptr -> log_held_message_node.actual_ptr = mp 1161 then go to FOUND_NODE; 1162 prev_node_ptr = node_ptr; 1163 node_ptr = node_ptr -> log_held_message_node.next_ptr; 1164 end; 1165 P_node_ptr, P_prev_node_ptr = null (); 1166 return; 1167 1168 FOUND_NODE: 1169 P_node_ptr = node_ptr; 1170 P_prev_node_ptr = prev_node_ptr; 1171 return; 1172 end lookup_node; 1173 1174 new_node: 1175 procedure returns (pointer); 1176 1177 declare node_ptr pointer; 1178 1179 system_area_ptr = get_system_free_area_ (); 1180 allocate log_held_message_node in (system_area) set (node_ptr); 1181 node_ptr -> log_held_message_node.next_ptr = null (); 1182 node_ptr -> log_held_message_node.reference_count = 0; 1183 1184 if log_read_data.first_held_message_ptr = null () 1185 then do; 1186 log_read_data.first_held_message_ptr, 1187 log_read_data.last_held_message_ptr = node_ptr; 1188 return (node_ptr); 1189 end; 1190 1191 log_read_data.last_held_message_ptr -> log_held_message_node.next_ptr = node_ptr; 1192 log_read_data.last_held_message_ptr = node_ptr; 1193 return (node_ptr); 1194 end new_node; 1195 1196 lookup_message: 1197 procedure (P_copy_ptr) returns (pointer); 1198 1199 declare node_ptr pointer; 1200 declare P_copy_ptr pointer; 1201 declare mp pointer; 1202 1203 mp = P_copy_ptr; 1204 if mp = null () then return (null ()); 1205 if mp = log_read_data.latest_message.copy_ptr 1206 then return (log_read_data.latest_message.actual_ptr); 1207 if mp = log_read_data.earlier_message.copy_ptr 1208 then return (log_read_data.earlier_message.actual_ptr); 1209 1210 node_ptr = log_read_data.first_held_message_ptr; 1211 do while (node_ptr ^= null ()); 1212 if mp = node_ptr -> log_held_message_node.copy_ptr 1213 then return (node_ptr -> log_held_message_node.actual_ptr); 1214 node_ptr = node_ptr -> log_held_message_node.next_ptr; 1215 end; 1216 call sub_err_ (error_table_$no_log_message, "log_read_", ACTION_CANT_RESTART, null (), (0), "Invalid message pointer ^p.", mp); 1217 end lookup_message; 1218 1219 allocate_copy: 1220 procedure (P_message_ptr, P_copy_ptr); 1221 1222 declare (P_message_ptr, P_copy_ptr) pointer; 1223 declare caller_area area based (log_read_data.user_area_ptr); 1224 1225 log_message_text_lth = P_message_ptr -> log_message.text_lth; 1226 log_message_data_class_lth = P_message_ptr -> log_message.data_class_lth; 1227 log_message_data_lth = P_message_ptr -> log_message.data_lth; 1228 allocate log_message in (caller_area) set (P_copy_ptr); 1229 P_copy_ptr -> log_message = P_message_ptr -> log_message; 1230 return; 1231 end allocate_copy; 1232 1233 free_held_messages: 1234 procedure; 1235 1236 declare smp_this pointer; 1237 declare smp_next pointer; 1238 1239 if log_read_data.latest_message.actual_ptr ^= null () 1240 then do; 1241 call lookup_node (log_read_data.latest_message.actual_ptr, smp_this, (null ())); 1242 if smp_this = null () /* its NOT in the held chain */ 1243 then free log_read_data.latest_message.copy_ptr -> log_message; 1244 log_read_data.latest_message = null (); 1245 end; 1246 1247 if log_read_data.earlier_message.actual_ptr ^= null () 1248 then do; 1249 call lookup_node (log_read_data.earlier_message.actual_ptr, smp_this, (null ())); 1250 if smp_this = null () /* its NOT in the held chain */ 1251 then free log_read_data.earlier_message.copy_ptr -> log_message; 1252 log_read_data.earlier_message = null (); 1253 end; 1254 1255 smp_this = log_read_data.first_held_message_ptr; 1256 do while (smp_this ^= null ()); 1257 free smp_this -> log_held_message_node.message.copy_ptr -> log_message; 1258 smp_next = smp_this -> log_held_message_node.next_ptr; 1259 free smp_this -> log_held_message_node; 1260 smp_this = smp_next; 1261 end; 1262 return; 1263 end free_held_messages; 1264 1265 1266 check_in_pointer: 1267 procedure; 1268 1269 log_read_data_ptr = P_log_read_data_ptr; 1270 if log_read_data_ptr = null () 1271 then call sub_err_ (error_table_$null_info_ptr, "log_read_", ACTION_CANT_RESTART, null (), (0), "Null log_read_data_ptr supplied."); 1272 if log_read_data.sentinel ^= LOG_READ_DATA_VERSION_SENTINEL 1273 then call sub_err_ (error_table_$badcall, "log_read_", ACTION_CANT_RESTART, null (), (0), "Invalid log_read_data_ptr supplied in call to log_read_."); 1274 return; 1275 end check_in_pointer; 1276 1277 finished: 1278 procedure (P_return_code); 1279 1280 declare P_return_code fixed bin (35) parameter; 1281 1282 1283 P_code = P_return_code; 1284 goto MAIN_RETURN; 1285 1286 end finished; 1287 1288 /* format: off */ 1289 /* BEGIN INCLUDE FILE ... log_read_data.incl.pl1 ... 84-05-03 ... W. Olin Sibert */ 1 2 1 3 /* Added reader_procedure, area_ptr, reader_data_ptr, and entry variables 11/28/84 Steve Herbst */ 1 4 /* Added (latest earlier)_message_ptr, (first last)_held_message and get_log_uid 11/30/84 Steve Herbst */ 1 5 /* Put everything before the segments array into header 12/04/84 Steve Herbst */ 1 6 /* Added entry variables free_message, register & deregister 12/06/84 Steve Herbst */ 1 7 1 8 1 9 declare log_read_data_ptr pointer; 1 10 declare log_read_data_n_segments fixed bin; 1 11 1 12 declare 1 log_read_data aligned based (log_read_data_ptr), 1 13 2 header aligned, 1 14 3 sentinel char (8) aligned, 1 15 3 n_segments fixed bin, 1 16 3 history_complete bit (1) aligned, 1 17 3 call_procedures bit (1) aligned, 1 18 3 allocate_copies bit (1) aligned, 1 19 3 current_ptr pointer, /* Trivial optimization for positioning */ 1 20 3 current_idx fixed bin, 1 21 3 reader_data_ptr pointer, /* log_read_data_ptr returned by reader_proc$open */ 1 22 3 user_area_ptr pointer, /* Used in the inner ring to allocate outer ring copies. */ 1 23 3 latest_message aligned like saved_message, /* The last message returned */ 1 24 3 earlier_message aligned like saved_message, /* The one returned before latest */ 1 25 3 n_held_messages fixed bin, 1 26 3 first_held_message_ptr pointer, /* Used by $hold_message */ 1 27 3 last_held_message_ptr pointer, /* ditto */ 1 28 3 ev, /* Entry variable for each operation */ 1 29 4 open variable entry (char (*), char (*), pointer, pointer, fixed bin (35)), 1 30 4 close variable entry (pointer, fixed bin (35)), 1 31 4 next_message variable entry (pointer, pointer, fixed bin (35)), 1 32 4 prev_message variable entry (pointer, pointer, fixed bin (35)), 1 33 4 position_sequence variable entry (pointer, fixed bin (35), bit (1) aligned, pointer, fixed bin (35)), 1 34 4 position_time variable entry (pointer, fixed bin (71), bit (1) aligned, pointer, fixed bin (35)), 1 35 4 update variable entry (fixed bin (35), pointer, pointer, fixed bin (35)), 1 36 4 hold_message variable entry (pointer, pointer), 1 37 4 free_message variable entry (pointer, pointer), 1 38 4 get_log_uid variable entry (pointer, bit (36) aligned, fixed bin (35)), 1 39 4 register variable entry (pointer, bit (36) aligned, fixed bin (71), fixed bin (35)), 1 40 4 deregister variable entry (pointer, bit (36) aligned, fixed bin (71), fixed bin (35)), 1 41 3 limits aligned, /* Absolute limits of family contents */ 1 42 4 very_first_time fixed bin (71), /* Set up during initialization */ 1 43 4 very_last_time fixed bin (71), 1 44 4 very_first_sequence fixed bin (35), 1 45 4 very_last_sequence fixed bin (35), 1 46 4 very_first_log_idx fixed bin, 1 47 4 very_last_log_idx fixed bin, 1 48 1 49 2 segments (log_read_data_n_segments refer (log_read_data.n_segments)), 1 50 3 dname char (168) unaligned, 1 51 3 ename char (32) unaligned, 1 52 3 ptr pointer, 1 53 3 suffix_time fixed bin (71), /* Time from suffix-- all messages in log are earlier */ 1 54 3 dir_uid bit (36) aligned, /* UID of parent dir */ 1 55 3 prev_missing bit (1) aligned, 1 56 3 damaged bit (1) aligned, 1 57 1 58 2 pad fixed bin; 1 59 1 60 declare 1 saved_message aligned based, 1 61 2 actual_ptr pointer, /* Points to message in log. */ 1 62 2 copy_ptr pointer; /* Points to user-ring allocated copy. */ 1 63 1 64 dcl 1 log_held_message_node aligned based, 1 65 2 message aligned like saved_message, 1 66 2 reference_count fixed bin, 1 67 2 next_ptr ptr; 1 68 1 69 declare LOG_READ_DATA_VERSION_SENTINEL char (8) int static options (constant) 1 70 init ("logr0001") options (constant); 1 71 1 72 /* END INCLUDE FILE ... log_read_data.incl.pl1 */ 1289 1290 /* Begin include file log_read_open_data.incl.pl1 BIM 1984-12-15 */ 2 2 /* Use this with log_read_$open_long to specify special purpose options */ 2 3 2 4 declare log_read_open_info_ptr pointer; 2 5 declare 1 log_read_open_info aligned based (log_read_open_info_ptr), 2 6 2 version char (8) aligned, 2 7 2 reader_procedure char (32) varying, /* this is an outer ring opening, and this procedure retrieves from the inner ring */ 2 8 2 allocation_area_ptr pointer, /* if reader_procedure is not "", */ 2 9 /* this is passed to it to for allocation */ 2 10 2 allocate_copies bit (1) aligned; /* incompatable with reader_procedure ^= "" */ 2 11 /* indicates that this opening must allocate copies for use by an outer ring */ 2 12 2 13 declare LOG_READ_OPEN_INFO_VERSION_1 2 14 char (8) init ("logro001") int static options (constant); 2 15 2 16 /* End include file log_read_open_info.incl.pl1 */ 1290 1291 /* BEGIN INCLUDE FILE ... log_segment.incl.pl1 ... 84-05-03 ... W. Olin Sibert */ 3 2 3 3 declare log_segment_ptr pointer; 3 4 declare log_segment_max_size fixed bin (18); 3 5 declare LOG_SEGMENT_VERSION_1 char (8) internal static options (constant) init ("SysLog01"); 3 6 3 7 3 8 declare 1 log_segment aligned based (log_segment_ptr), 3 9 2 header aligned like log_segment_header, 3 10 2 data dim (log_segment_max_size refer (log_segment.max_size)) bit (36) aligned; 3 11 3 12 3 13 declare 1 log_segment_header aligned based, 3 14 2 version char (8) unaligned, /* LOG_SEGMENT_VERSION_1 */ 3 15 2 time_created fixed bin (71), /* When the segment header was initialized */ 3 16 2 previous_log_dir char (168) unaligned, /* Directory containing previous log segment */ 3 17 3 18 2 limits, 3 19 3 first_sequence fixed bin (35), /* First and last sequence numbers / time stamps */ 3 20 3 last_sequence fixed bin (35), /* of messages in the log. These may be slightly */ 3 21 3 first_time fixed bin (71), /* incorrect due to lockless updating strategy */ 3 22 3 last_time fixed bin (71), 3 23 3 24 2 alloc_info, /* Complex STACQ hack for allocating and assigning */ 3 25 3 word_1 fixed bin (18), /* sequence numbers locklessly. See log_segment_ */ 3 26 3 word_2 bit (36) aligned, /* for details of strategy */ 3 27 2 max_size fixed bin (18), /* Total words in data area */ 3 28 3 29 2 listeners_registered bit (1) aligned, /* Set if ANY processes were ever registered-- it's only */ 3 30 2 listener_bootload_time fixed bin (71), /* kept here for efficiency. The bootload time is used to */ 3 31 /* detect all the dead listeners after a reboot */ 3 32 2 listener (25), /* Processes waiting for messages in the log */ 3 33 3 process_id bit (36) aligned, 3 34 3 event_channel fixed bin (71) unaligned, /* Saves space-- allows 3-word entries */ 3 35 3 36 2 last_wakeup_time fixed bin (71), /* When last wakeup was sent */ 3 37 2 wakeup_delta fixed bin (71), /* Wakeups sent no more than once per this interval */ 3 38 3 39 2 pad (6) fixed bin (71); /* Pad header to 150 words */ 3 40 3 41 3 42 declare LOG_SEGMENT_NEW_MESSAGE init ("777111555333"b3) bit (36) aligned internal static options (constant); 3 43 declare LOG_SEGMENT_COMPLETE_MESSAGE init ("666000444222"b3) bit (36) aligned internal static options (constant); 3 44 3 45 /* END INCLUDE FILE ... log_segment.incl.pl1 */ 1291 1292 /* BEGIN INCLUDE FILE ... log_message.incl.pl1 ... 84-04-25 ... W. Olin Sibert */ 4 2 4 3 declare 1 log_message_header aligned based, /* Items marked "(SET)" are set by $create_message */ 4 4 2 sentinel bit (36) aligned, /* Proper value declared in log_segment.incl.pl1 */ 4 5 2 sequence fixed bin (35), /* Sequence number for this message (SET) */ 4 6 2 severity fixed bin (8) unaligned, /* Severity of message */ 4 7 2 data_class_lth fixed bin (9) unaligned unsigned, /* Length of data class-- 0 to 16 (SET) */ 4 8 2 time fixed bin (53) unaligned, /* Time message originated */ 4 9 2 text_lth fixed bin (17) unaligned, /* Length of message text. Must be nonzero (SET) */ 4 10 2 data_lth fixed bin (17) unaligned, /* Length of binary data. May be zero (SET) */ 4 11 2 process_id bit (36) aligned; /* Process id of process writing message */ 4 12 4 13 declare 1 log_message aligned based (log_message_ptr), 4 14 2 header aligned like log_message_header, 4 15 2 text char (log_message_text_lth refer (log_message.text_lth)) unaligned, 4 16 2 data_class char (log_message_data_class_lth refer (log_message.data_class_lth)) unaligned, 4 17 2 data dim (log_message_data_lth refer (log_message.data_lth)) bit (36) aligned; 4 18 4 19 declare log_message_ptr pointer; 4 20 declare log_message_text_lth fixed bin; 4 21 declare log_message_data_class_lth fixed bin; 4 22 declare log_message_data_lth fixed bin; 4 23 4 24 /* END INCLUDE FILE ... log_message.incl.pl1 */ 1292 1293 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 5 2 /* format: style3 */ 5 3 5 4 /* These constants are to be used for the flags argument of sub_err_ */ 5 5 /* They are just "string (condition_info_header.action_flags)" */ 5 6 5 7 declare ( 5 8 ACTION_CAN_RESTART init (""b), 5 9 ACTION_CANT_RESTART init ("1"b), 5 10 ACTION_DEFAULT_RESTART 5 11 init ("01"b), 5 12 ACTION_QUIET_RESTART 5 13 init ("001"b), 5 14 ACTION_SUPPORT_SIGNAL 5 15 init ("0001"b) 5 16 ) bit (36) aligned internal static options (constant); 5 17 5 18 /* End include file */ 1293 1294 1295 end log_read_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1110.3 log_read_.pl1 >udd>sm>ds>w>ml>log_read_.pl1 1289 1 01/21/85 1012.3 log_read_data.incl.pl1 >ldd>incl>log_read_data.incl.pl1 1290 2 01/21/85 1012.3 log_read_open_info.incl.pl1 >ldd>incl>log_read_open_info.incl.pl1 1291 3 12/04/84 2224.9 log_segment.incl.pl1 >ldd>incl>log_segment.incl.pl1 1292 4 01/21/85 1012.2 log_message.incl.pl1 >ldd>incl>log_message.incl.pl1 1293 5 04/16/82 1058.1 sub_err_flags.incl.pl1 >ldd>incl>sub_err_flags.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ACTION_CANT_RESTART 000016 constant bit(36) initial dcl 5-7 set ref 1216* 1270* 1272* ACTION_CAN_RESTART 000030 constant bit(36) initial dcl 5-7 set ref 657* 1115* LOG_READ_DATA_VERSION_SENTINEL 000002 constant char(8) initial packed unaligned dcl 1-69 ref 140 1272 LOG_READ_OPEN_INFO_VERSION_1 000000 constant char(8) initial packed unaligned dcl 2-13 ref 120 P_after_sw parameter bit(1) dcl 666 in procedure "time_search" set ref 663 677 690 784 793 812* 818 P_after_sw parameter bit(1) dcl 484 in procedure "sequence_search" set ref 481 495 508 602 629* 635 P_code parameter fixed bin(35,0) dcl 56 set ref 100 104* 112 117* 230 233* 258 298 337 360 389 436 440* 453 467 1283* P_copy_ptr parameter pointer dcl 1200 in procedure "lookup_message" ref 1196 1203 P_copy_ptr parameter pointer dcl 1222 in procedure "allocate_copy" set ref 1219 1228* 1229 P_entry_name parameter char packed unaligned dcl 650 set ref 646 653 657* P_entry_variable parameter entry variable dcl 649 set ref 646 653* P_event_channel parameter fixed bin(71,0) dcl 52 set ref 453 459* 463* 467 473* 477* P_finish parameter fixed bin(17,0) dcl 868 ref 860 874 879 P_idx parameter fixed bin(17,0) dcl 918 ref 915 921 926 931 931 931 934 P_log_dname parameter char packed unaligned dcl 45 set ref 100 112 183* 193 P_log_ename parameter char packed unaligned dcl 46 set ref 100 112 183* 194 P_log_idx parameter fixed bin(17,0) dcl 899 ref 892 902 904 907 909 P_log_message_ptr parameter pointer dcl 48 set ref 258 262 265* 294* 298 301 304* 333* 337 341* 344* 354* 360 364* 367* 376* 389 398 404* 410* 411* 420 426* 431* 994 1001* 1033* P_log_read_data_ptr parameter pointer dcl 47 set ref 100 103* 112 116* 224* 230 234 238* 246* 258 298 337 360 389 398 420 436 453 467 1032* 1269 P_log_uid parameter bit(36) dcl 53 set ref 436 441* 444* 448* P_message_copy_ptr parameter pointer dcl 1080 ref 1076 1090 P_message_ptr parameter pointer dcl 1153 in procedure "lookup_node" ref 1151 1156 P_message_ptr parameter pointer dcl 1079 in procedure "hold_message" ref 1076 1084 P_message_ptr parameter pointer dcl 1222 in procedure "allocate_copy" ref 1219 1225 1226 1227 1229 P_message_ptr parameter pointer dcl 1098 in procedure "free_message" ref 1096 1105 P_message_ptr parameter pointer dcl 1043 in procedure "short_hold_message" set ref 1040 1048 1061 1072* P_message_sequence parameter fixed bin(35,0) dcl 50 set ref 337 344* 389 490 1001* 1006 P_message_time parameter fixed bin(71,0) dcl 51 set ref 360 367* 671 P_node_ptr parameter pointer dcl 1153 in procedure "lookup_node" set ref 1151 1165* 1168* P_node_ptr parameter pointer dcl 1142 in procedure "free_message" ref 1139 1146 P_open_info_ptr parameter pointer dcl 49 ref 112 119 P_prev_node_ptr parameter pointer dcl 1153 in procedure "lookup_node" set ref 1151 1165* 1170* P_prev_node_ptr parameter pointer dcl 1143 in procedure "free_message" ref 1139 1145 P_procedure_name parameter char packed unaligned dcl 651 set ref 646 653 657* P_process_id parameter bit(36) dcl 54 set ref 453 459* 463* 467 473* 477* P_return_code parameter fixed bin(35,0) dcl 1280 ref 1277 1283 P_search_direction parameter bit(1) dcl 55 set ref 337 344* 349* 360 367* 371* P_start parameter fixed bin(17,0) dcl 867 ref 860 874 879 actual_ptr 22 based pointer level 4 in structure "log_read_data" dcl 1-12 in procedure "log_read_" set ref 414 1050 1052* 1207 1247 1249* actual_ptr based pointer level 3 in structure "log_held_message_node" dcl 1-64 in procedure "log_read_" set ref 1089* 1160 1212 actual_ptr 16 based pointer level 4 in structure "log_read_data" dcl 1-12 in procedure "log_read_" set ref 412 1069* 1205 1239 1241* allocate_copies 000100 automatic bit(1) dcl 58 in procedure "log_read_" set ref 108* 125* 126 151 allocate_copies 5 based bit(1) level 3 in structure "log_read_data" dcl 1-12 in procedure "log_read_" set ref 151* 243 269 291 308 330 351 373 408 430 995 1025 allocate_copies 16 based bit(1) level 2 in structure "log_read_open_info" dcl 2-5 in procedure "log_read_" ref 125 allocation_area_ptr 14 based pointer level 2 dcl 2-5 ref 124 call_procedures 4 based bit(1) level 3 dcl 1-12 set ref 149* 165 182 237 264 303 343 366 403 425 443 458 472 1000 caller_area based area(1024) dcl 1223 ref 1228 caller_area_ptr 000112 automatic pointer dcl 61 set ref 107* 124* 150 183* cleanup 000126 stack reference condition dcl 95 ref 133 clock builtin function dcl 97 ref 202 close 40 based entry variable level 4 dcl 1-12 set ref 168* 239 code 000164 automatic pointer level 2 in structure "null_entry" dcl 154 in begin block on line 153 set ref 159* code 000101 automatic fixed bin(35,0) dcl 59 in procedure "log_read_" set ref 183* 185 185* 197 199* 239* 240* 265* 266* 273* 304* 305* 312* 344* 346* 367* 369* 444* 445* 448* 450* 459* 460* 463* 464* 473* 474* 477* 478* 653* 655 657* 878* 879 881 884 922* 927* 931* 934 1001* 1003* 1008* 1009 1009* 1014* 1016 1018* 1020 codeptr builtin function dcl 97 ref 653 653 copy_ptr 24 based pointer level 4 in structure "log_read_data" dcl 1-12 in procedure "log_read_" set ref 1055 1207 1250 copy_ptr 2 based pointer level 3 in structure "log_held_message_node" dcl 1-64 in procedure "log_read_" set ref 1090* 1109 1128 1212 1257 copy_ptr 20 based pointer level 4 in structure "log_read_data" dcl 1-12 in procedure "log_read_" set ref 1070* 1072 1205 1242 current_idx 10 based fixed bin(17,0) level 3 dcl 1-12 set ref 837 837 840 907* current_ptr 6 based pointer level 3 dcl 1-12 set ref 837 837 841 906* cv_entry_ 000024 constant entry external dcl 78 ref 653 damaged 214 based bit(1) array level 3 dcl 1-12 set ref 278* 284* 318* 325* 921 934* data_class_lth 2(09) based fixed bin(9,0) level 3 packed packed unsigned unaligned dcl 4-13 set ref 1055 1128 1226 1228* 1229 1242 1250 1257 data_lth 4(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 4-13 set ref 1055 1128 1227 1228* 1229 1242 1250 1257 deregister 110 based entry variable level 4 dcl 1-12 set ref 473 divide builtin function dcl 97 ref 558 744 dname 124 based char(168) array level 3 packed packed unaligned dcl 1-12 set ref 193* 931* 1014* earlier_message 22 based structure level 3 dcl 1-12 set ref 145* 414* 1056* 1059* 1252* ename 176 based char(32) array level 3 packed packed unaligned dcl 1-12 set ref 194* 931* 960* 1014* env 2 000164 automatic pointer level 2 dcl 154 set ref 160* error_table_$badcall 000010 external static fixed bin(35,0) dcl 71 set ref 126* 1272* error_table_$fatal_error 000012 external static fixed bin(35,0) dcl 72 set ref 207* 214* 218* 855* 997* error_table_$log_segment_damaged 000014 external static fixed bin(35,0) dcl 73 ref 922 error_table_$no_log_message 000016 external static fixed bin(35,0) dcl 74 set ref 282* 285* 322* 326* 355* 377* 1216* error_table_$null_info_ptr 000020 external static fixed bin(35,0) dcl 75 set ref 1270* error_table_$unimplemented_version 000022 external static fixed bin(35,0) dcl 76 set ref 120* ev 34 based structure level 3 dcl 1-12 set ref 162* first_held_message_ptr 30 based pointer level 3 dcl 1-12 set ref 143* 1107 1132* 1157 1184 1186* 1210 1255 first_message_time 000246 automatic fixed bin(71,0) dcl 717 set ref 754* 756* 768 first_sequence 56 based fixed bin(35,0) level 4 dcl 3-8 ref 210 216 545 587 612 627 1010 first_time 60 based fixed bin(71,0) level 4 dcl 3-8 ref 211 729 793 810 found 000212 automatic bit(1) packed unaligned dcl 530 in procedure "search_for_sequence" set ref 550* 556 587* 602 found 000242 automatic bit(1) packed unaligned dcl 713 in procedure "search_for_time" set ref 734* 742 768* 776 free_message 74 based entry variable level 4 dcl 1-12 set ref 175* 426 get_log_uid 100 based entry variable level 4 dcl 1-12 set ref 176* 444 get_system_free_area_ 000026 constant entry external dcl 80 ref 107 131 247 974 1179 good_log_read_data_ptr 000114 automatic pointer dcl 62 set ref 129* 134* 179* hbound builtin function dcl 97 ref 249 hcs_$get_uid_seg 000030 constant entry external dcl 81 ref 448 hcs_$terminate_noname 000032 constant entry external dcl 82 ref 250 header based structure level 2 in structure "log_segment" dcl 3-8 in procedure "log_read_" header based structure level 2 in structure "log_message" dcl 4-13 in procedure "log_read_" header based structure level 2 in structure "log_read_data" dcl 1-12 in procedure "log_read_" set ref 972* 972 high_idx 000215 automatic fixed bin(17,0) dcl 533 in procedure "search_for_sequence" set ref 553* 556 558 571* 572* 591* high_idx 000245 automatic fixed bin(17,0) dcl 716 in procedure "search_for_time" set ref 737* 742 744 772* history_complete 3 based bit(1) level 3 dcl 1-12 set ref 148* 958 981* hold_message 70 based entry variable level 4 dcl 1-12 set ref 174* 404 increment 000266 automatic fixed bin(17,0) dcl 870 set ref 874* 876* 879 last_held_message_ptr 32 based pointer level 3 dcl 1-12 set ref 146* 1133 1133* 1186* 1191 1192* last_sequence 57 based fixed bin(35,0) level 4 dcl 3-8 ref 216 222 493 545 587 589 602 627 1010 last_time 62 based fixed bin(71,0) level 4 dcl 3-8 ref 223 675 729 810 latest_message 16 based structure level 3 dcl 1-12 set ref 144* 412* 1059 1066* 1244* limits 56 based structure level 3 in structure "log_segment" dcl 3-8 in procedure "log_read_" limits 114 based structure level 3 in structure "log_read_data" dcl 1-12 in procedure "log_read_" log_held_message_node based structure level 1 dcl 1-64 set ref 1136 1180 1259 log_idx 000121 automatic fixed bin(17,0) dcl 65 set ref 192* 209 221 249* 250 250* 278 281 284 318 321 325 543 552 572 589 727 736 840* 845* 846 847* 881* 886* 909* log_in_service 000120 automatic bit(1) dcl 64 set ref 1008* 1010 log_initiate_ 000034 constant entry external dcl 84 ref 931 log_list_history_$all 000036 constant entry external dcl 85 ref 960 log_message based structure level 1 dcl 4-13 set ref 1055 1128 1228 1229* 1229 1242 1250 1257 log_message_data_class_lth 000147 automatic fixed bin(17,0) dcl 4-21 set ref 1226* 1228 1228 log_message_data_lth 000150 automatic fixed bin(17,0) dcl 4-22 set ref 1227* 1228 1228 log_message_header based structure level 1 dcl 4-3 log_message_ptr 000144 automatic pointer dcl 4-19 set ref 262* 269* 269* 271 278* 280 284* 285 291* 294 301* 308* 308* 310 318* 320 325* 326 330* 333 351* 354 355 373* 376 377 410* 411* 412 414 498* 499* 502* 511* 512* 515* 536* 629* 635* 637* 680* 681* 684* 693* 694* 697* 720* 812* 818* 820* 837 846 994* 995* 995* 997 1007 1018* 1033 log_message_text_lth 000146 automatic fixed bin(17,0) dcl 4-20 set ref 1225* 1228 1228 log_position_$find_sequence 000040 constant entry external dcl 86 ref 629 log_position_$find_time 000042 constant entry external dcl 87 ref 812 log_position_$next_message 000044 constant entry external dcl 88 ref 278 284 499 635 681 818 log_position_$prev_message 000046 constant entry external dcl 89 ref 318 325 512 637 694 820 log_read_data based structure level 1 dcl 1-12 set ref 138 139* 254 975 log_read_data_n_segments 000136 automatic fixed bin(17,0) dcl 1-10 set ref 137* 138 138 141 log_read_data_ptr 000134 automatic pointer dcl 1-9 set ref 129* 138* 139 140 141 142 143 144 145 146 147 148 149 150 151 162 165 167 168 169 170 171 172 173 174 175 176 179 182 183 183 193 194 198* 202 206 209 210 211 213 217 221 222 223 224 237 239 239 243 249 250 250 254 264 265 265 269 272 278 284 291 303 304 304 308 311 318 321 325 330 343 344 344 351 366 367 367 373 403 404 404 408 412 412 414 414 425 426 426 430 443 444 444 448 458 459 459 463 472 473 473 477 492 493 496 497 502 509 510 515 542 542 553 606 608 614 616 674 675 678 679 684 691 692 697 726 726 737 754 754 756 768 770 784 786 793 798 837 837 837 837 837 840 841 845 846 904 906 907 921 926 931 931 931 934 958 960 960 960 964 965 972 975 977* 981 995 1000 1001 1001 1014 1014 1025 1029* 1030* 1032 1050 1052 1055 1056 1059 1059 1066 1069 1070 1072 1107 1132 1133 1133 1157 1184 1186 1186 1191 1192 1205 1205 1207 1207 1210 1228 1239 1241 1242 1244 1247 1249 1250 1252 1255 1269* 1270 1272 log_read_open_info based structure level 1 dcl 2-5 log_read_open_info_ptr 000140 automatic pointer dcl 2-4 set ref 119* 120 123 124 125 log_segment based structure level 1 dcl 3-8 log_segment_$get_service_bit 000050 constant entry external dcl 90 ref 1008 log_segment_header based structure level 1 dcl 3-13 log_segment_ptr 000142 automatic pointer dcl 3-3 set ref 207 210 211 214 216 216 218 222 223 273 278* 282 284* 312 318* 322 325* 493 499* 512* 545 545 587 587 589 602 612 621 627 627 629* 635* 637* 675 681* 694* 729 729 793 804 810 810 812* 818* 820* 841* 902* 904* 906 1007* 1008* 1010 1010 log_wakeup_$deregister 000054 constant entry external dcl 92 ref 477 log_wakeup_$register 000052 constant entry external dcl 91 ref 463 low_idx 000244 automatic fixed bin(17,0) dcl 715 in procedure "search_for_time" set ref 736* 742 744 744 770* low_idx 000214 automatic fixed bin(17,0) dcl 532 in procedure "search_for_sequence" set ref 552* 556 558 558 589* max builtin function dcl 97 ref 606 message based structure level 2 dcl 1-64 set ref 1066 message_sequence 000202 automatic fixed bin(35,0) dcl 486 in procedure "sequence_search" set ref 490* 496 502 509 515 545 545 587 587 589 602 612 627 627 629* message_sequence 000122 automatic fixed bin(35,0) dcl 66 in procedure "log_read_" set ref 1006* 1010 1010 1018* message_time 000232 automatic fixed bin(71,0) dcl 668 set ref 671* 678 684 691 697 729 729 768 768 770 793 810 810 812* min builtin function dcl 97 ref 614 mp 000364 automatic pointer dcl 1100 in procedure "free_message" set ref 1105* 1109 1115* mp 000336 automatic pointer dcl 1044 in procedure "short_hold_message" set ref 1061* 1062* 1069 1070* mp 000352 automatic pointer dcl 1081 in procedure "hold_message" set ref 1084* 1086* 1089 mp 000430 automatic pointer dcl 1201 in procedure "lookup_message" set ref 1203* 1204 1205 1207 1212 1216* mp 000402 automatic pointer dcl 1154 in procedure "lookup_node" set ref 1156* 1160 n_segments 2 based fixed bin(17,0) level 3 dcl 1-12 set ref 138* 139 141* 147 206* 213* 217* 249 254 272* 311* 321* 845 960* 964 971 973* 975 new_idx 000316 automatic fixed bin(17,0) dcl 944 set ref 964* 965 965* new_log_read_data_ptr 000314 automatic pointer dcl 943 in procedure "get_complete_history" set ref 960* 963 965 971 972 973 977 978* new_log_read_data_ptr 000124 automatic pointer dcl 67 in procedure "log_read_" set ref 1014* 1018* 1021* 1030 next_message 44 based entry variable level 4 dcl 1-12 set ref 170* 265 next_node_ptr 000372 automatic pointer dcl 1103 set ref 1129* 1131 next_ptr 6 based pointer level 2 dcl 1-64 set ref 1112 1129 1131* 1163 1181* 1191* 1214 1258 node_ptr 000354 automatic pointer dcl 1082 in procedure "hold_message" set ref 1086* 1087 1088* 1089 1090 1092 1092 node_ptr 000370 automatic pointer dcl 1102 in procedure "free_message" set ref 1107* 1108 1109 1111 1112* 1112 1119 1123 1123 1128 1129 1133 1136 1146* node_ptr 000340 automatic pointer dcl 1045 in procedure "short_hold_message" set ref 1052* 1053 1053* 1062* 1063 1065 1065 1066 node_ptr 000426 automatic pointer dcl 1199 in procedure "lookup_message" set ref 1210* 1211 1212 1212 1214* 1214 node_ptr 000404 automatic pointer dcl 1154 in procedure "lookup_node" set ref 1157* 1159 1160 1162 1163* 1163 1168 node_ptr 000416 automatic pointer dcl 1177 in procedure "new_node" set ref 1180* 1181 1182 1186 1188 1191 1192 1193 null builtin function dcl 97 ref 103 116 129 142 143 144 145 146 147 159 160 207 214 218 234 238 246 250 271 273 280 282 285 310 312 320 322 326 341 355 364 377 412 414 498 502 511 515 536 621 657 657 680 684 693 697 720 804 902 926 963 978 997 1048 1050 1053 1056 1062 1063 1086 1087 1106 1108 1115 1115 1131 1158 1159 1165 1181 1184 1204 1204 1211 1216 1216 1239 1241 1242 1244 1247 1249 1250 1252 1256 1270 1270 1270 1272 1272 null_entry 000164 automatic structure level 1 dcl 154 set ref 161 nulle 000170 automatic entry variable dcl 157 set ref 161* 162 open 34 based entry variable level 4 dcl 1-12 set ref 167* 183 position_sequence 54 based entry variable level 4 dcl 1-12 set ref 172* 344 position_time 60 based entry variable level 4 dcl 1-12 set ref 171* 367 prev_message 50 based entry variable level 4 dcl 1-12 set ref 169* 304 prev_node_ptr 000366 automatic pointer dcl 1101 in procedure "free_message" set ref 1106* 1111* 1131 1131 1132 1133 1145* prev_node_ptr 000406 automatic pointer dcl 1154 in procedure "lookup_node" set ref 1158* 1162* 1170 prev_node_ptr 000342 automatic pointer dcl 1046 in procedure "short_hold_message" set ref 1052* 1053* procedure_name 000102 automatic char(32) packed unaligned dcl 60 set ref 106* 123* 126 149 167* 168* 169* 170* 171* 172* 173* 174* 175* 176* ptr 206 based pointer array level 3 dcl 1-12 set ref 147* 249 250 250* 448* 463* 477* 837 846 904 926 931* 960* reader_data_ptr 12 based pointer level 3 dcl 1-12 set ref 142* 183* 239* 265* 304* 344* 367* 404* 426* 444* 459* 473* 1001* reader_procedure 2 based varying char(32) level 2 dcl 2-5 ref 123 reference_count 4 based fixed bin(17,0) level 2 dcl 1-64 set ref 1065* 1065 1092* 1092 1119 1123* 1123 1182* register 104 based entry variable level 4 dcl 1-12 set ref 459 saved_message based structure level 1 dcl 1-60 saved_n_segments 000317 automatic fixed bin(17,0) dcl 944 set ref 971* 973 segments 124 based structure array level 2 dcl 1-12 set ref 965* 965 segno builtin function dcl 97 ref 837 837 846 846 sentinel based char(8) level 3 dcl 1-12 set ref 140* 1272 setwordno builtin function dcl 97 ref 1007 smp_next 000450 automatic pointer dcl 1237 set ref 1258* 1260 smp_this 000446 automatic pointer dcl 1236 set ref 1241* 1242 1249* 1250 1255* 1256 1257 1258 1259 1260* sub_err_ 000056 constant entry external dcl 93 ref 657 1115 1216 1270 1272 suffix_time 210 based fixed bin(71,0) array level 3 dcl 1-12 set ref 202* 754 768 770 system_area based area(1024) dcl 69 ref 138 254 975 1180 system_area_ptr 000116 automatic pointer dcl 63 set ref 131* 138 247* 254 974* 975 1179* 1180 test_idx 000213 automatic fixed bin(17,0) dcl 531 in procedure "search_for_sequence" set ref 558* 571* 572 591 606* 606 608* 614* 614 616* test_idx 000267 automatic fixed bin(17,0) dcl 871 in procedure "look_for_log_segment" set ref 879* 880* 881* test_idx 000243 automatic fixed bin(17,0) dcl 714 in procedure "search_for_time" set ref 744* 754 754 768 770 770 772 784* 786* 793 797* 797 798* text_lth 4 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-13 set ref 1055 1128 1225 1228* 1229 1242 1250 1257 unspec builtin function dcl 97 set ref 139* 161* 161 update 64 based entry variable level 4 dcl 1-12 set ref 173* 1001 user_area_ptr 14 based pointer level 3 dcl 1-12 set ref 150* 1228 version based char(8) level 2 dcl 2-5 ref 120 very_first_log_idx 122 based fixed bin(17,0) level 4 dcl 1-12 set ref 209* 497* 542* 553 614 616* 679* 726* 737 754 786* 793 798* very_first_sequence 120 based fixed bin(35,0) level 4 dcl 1-12 set ref 210* 496 515 very_first_time 114 based fixed bin(71,0) level 4 dcl 1-12 set ref 211* 678 697 756 very_last_log_idx 123 based fixed bin(17,0) level 4 dcl 1-12 set ref 221* 492* 510* 542* 606 608* 674* 692* 726* 784* very_last_sequence 121 based fixed bin(35,0) level 4 dcl 1-12 set ref 222* 493* 502 509 very_last_time 116 based fixed bin(71,0) level 4 dcl 1-12 set ref 223* 675* 684 691 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 5-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 5-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 5-7 LOG_SEGMENT_COMPLETE_MESSAGE internal static bit(36) initial dcl 3-43 LOG_SEGMENT_NEW_MESSAGE internal static bit(36) initial dcl 3-42 LOG_SEGMENT_VERSION_1 internal static char(8) initial packed unaligned dcl 3-5 found automatic bit(1) packed unaligned dcl 487 log_segment_max_size automatic fixed bin(18,0) dcl 3-4 NAMES DECLARED BY EXPLICIT CONTEXT. DEREFERENCE_COMMON 005316 constant label dcl 1119 ref 1147 FOUND_NODE 005316 constant label dcl 1119 in procedure "free_message" ref 1109 FOUND_NODE 005444 constant label dcl 1168 in procedure "lookup_node" ref 1160 MAIN_RETURN 002754 constant label dcl 987 ref 1284 OPEN_COMMON 000353 constant label dcl 129 ref 110 OPEN_GOOD_RETURN 001346 constant label dcl 224 ref 186 RETRY 003375 constant label dcl 653 ref 658 allocate_copy 005650 constant entry internal dcl 1219 ref 1070 call_log_position 004075 constant label dcl 812 in procedure "search_for_time" ref 729 call_log_position 003274 constant label dcl 629 in procedure "search_for_sequence" ref 545 check_in_pointer 006140 constant entry internal dcl 1266 ref 235 261 300 340 363 392 401 423 439 456 470 dereference_node 005375 constant entry internal dcl 1139 ref 1053 find_log_idx_of_message 004160 constant entry internal dcl 829 ref 276 316 finished 006274 constant entry internal dcl 1277 ref 120 126 185 199 207 214 218 227 240 255 266 273 282 285 295 305 312 322 326 334 346 355 357 369 377 379 445 450 460 464 474 478 855 997 1003 1009 1010 1016 1022 1034 free_held_messages 005741 constant entry internal dcl 1233 ref 243 1025 free_message 005213 constant entry internal dcl 1096 ref 431 get_complete_history 004452 constant entry internal dcl 940 ref 204 hold_message 005162 constant entry internal dcl 1076 ref 411 initiate_log 004354 constant entry internal dcl 915 ref 196 880 log_read_ 000174 constant entry external dcl 19 ref 653 653 log_read_$close 001360 constant entry external dcl 230 ref 134 198 1021 1029 log_read_$deregister 002676 constant entry external dcl 467 log_read_$free_message 002467 constant entry external dcl 420 log_read_$get_log_uid 002533 constant entry external dcl 436 log_read_$hold_message 002374 constant entry external dcl 398 log_read_$next_message 001507 constant entry external dcl 258 log_read_$open 000207 constant entry external dcl 100 ref 1014 log_read_$open_long 000257 constant entry external dcl 112 log_read_$position_sequence 002131 constant entry external dcl 337 ref 1018 log_read_$position_time 002241 constant entry external dcl 360 log_read_$prev_message 001714 constant entry external dcl 298 log_read_$register 002615 constant entry external dcl 453 log_read_$update 002347 constant entry external dcl 389 look_for_log_segment 004250 constant entry internal dcl 860 ref 206 213 217 272 281 311 321 542 571 608 616 726 784 786 798 lookup_message 005515 constant entry internal dcl 1196 ref 269 308 410 995 lookup_node 005407 constant entry internal dcl 1151 ref 1052 1062 1086 1241 1249 new_node 005452 constant entry internal dcl 1174 ref 1088 search_for_sequence 003102 constant entry internal dcl 528 ref 505 518 search_for_time 003671 constant entry internal dcl 711 ref 687 700 sequence_search 002755 constant entry internal dcl 481 ref 349 set_current_log 004330 constant entry internal dcl 892 ref 492 497 510 674 679 692 847 884 886 set_entry_variable 003357 constant entry internal dcl 646 ref 167 168 169 170 171 172 173 174 175 176 short_hold_message 005023 constant entry internal dcl 1040 ref 291 330 351 373 time_search 003543 constant entry internal dcl 663 ref 371 update_procedure 004574 constant entry internal dcl 991 ref 394 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7170 7250 6417 7200 Length 7640 6417 60 353 551 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME log_read_ 808 external procedure is an external procedure. on unit on line 133 72 on unit begin block on line 153 begin block shares stack frame of external procedure log_read_. sequence_search internal procedure shares stack frame of external procedure log_read_. search_for_sequence internal procedure shares stack frame of external procedure log_read_. set_entry_variable internal procedure shares stack frame of external procedure log_read_. time_search internal procedure shares stack frame of external procedure log_read_. search_for_time internal procedure shares stack frame of external procedure log_read_. find_log_idx_of_message internal procedure shares stack frame of external procedure log_read_. look_for_log_segment internal procedure shares stack frame of external procedure log_read_. set_current_log internal procedure shares stack frame of external procedure log_read_. initiate_log internal procedure shares stack frame of external procedure log_read_. get_complete_history internal procedure shares stack frame of external procedure log_read_. update_procedure internal procedure shares stack frame of external procedure log_read_. short_hold_message internal procedure shares stack frame of external procedure log_read_. hold_message internal procedure shares stack frame of external procedure log_read_. free_message internal procedure shares stack frame of external procedure log_read_. lookup_node internal procedure shares stack frame of external procedure log_read_. new_node internal procedure shares stack frame of external procedure log_read_. lookup_message internal procedure shares stack frame of external procedure log_read_. allocate_copy internal procedure shares stack frame of external procedure log_read_. free_held_messages internal procedure shares stack frame of external procedure log_read_. check_in_pointer internal procedure shares stack frame of external procedure log_read_. finished internal procedure shares stack frame of external procedure log_read_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME log_read_ 000100 allocate_copies log_read_ 000101 code log_read_ 000102 procedure_name log_read_ 000112 caller_area_ptr log_read_ 000114 good_log_read_data_ptr log_read_ 000116 system_area_ptr log_read_ 000120 log_in_service log_read_ 000121 log_idx log_read_ 000122 message_sequence log_read_ 000124 new_log_read_data_ptr log_read_ 000134 log_read_data_ptr log_read_ 000136 log_read_data_n_segments log_read_ 000140 log_read_open_info_ptr log_read_ 000142 log_segment_ptr log_read_ 000144 log_message_ptr log_read_ 000146 log_message_text_lth log_read_ 000147 log_message_data_class_lth log_read_ 000150 log_message_data_lth log_read_ 000164 null_entry begin block on line 153 000170 nulle begin block on line 153 000202 message_sequence sequence_search 000212 found search_for_sequence 000213 test_idx search_for_sequence 000214 low_idx search_for_sequence 000215 high_idx search_for_sequence 000232 message_time time_search 000242 found search_for_time 000243 test_idx search_for_time 000244 low_idx search_for_time 000245 high_idx search_for_time 000246 first_message_time search_for_time 000266 increment look_for_log_segment 000267 test_idx look_for_log_segment 000314 new_log_read_data_ptr get_complete_history 000316 new_idx get_complete_history 000317 saved_n_segments get_complete_history 000336 mp short_hold_message 000340 node_ptr short_hold_message 000342 prev_node_ptr short_hold_message 000352 mp hold_message 000354 node_ptr hold_message 000364 mp free_message 000366 prev_node_ptr free_message 000370 node_ptr free_message 000372 next_node_ptr free_message 000402 mp lookup_node 000404 node_ptr lookup_node 000406 prev_node_ptr lookup_node 000416 node_ptr new_node 000426 node_ptr lookup_message 000430 mp lookup_message 000446 smp_this free_held_messages 000450 smp_next free_held_messages THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp cat_realloc_chars call_ent_var_desc call_ent_var call_ext_in_desc call_ext_in call_ext_out_desc call_ext_out return_mac signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_entry_ get_system_free_area_ hcs_$get_uid_seg hcs_$terminate_noname log_initiate_ log_list_history_$all log_position_$find_sequence log_position_$find_time log_position_$next_message log_position_$prev_message log_segment_$get_service_bit log_wakeup_$deregister log_wakeup_$register sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badcall error_table_$fatal_error error_table_$log_segment_damaged error_table_$no_log_message error_table_$null_info_ptr error_table_$unimplemented_version CONSTANTS 006302 aa 000002000000 006303 aa 000000000000 006304 aa 600000000041 006305 aa 000354000000 006306 aa 000006000000 006307 aa 000000000000 006310 aa 600000000041 006311 aa 000352000000 006312 aa 600000000041 006313 aa 000354000000 006314 aa 600000000041 006315 aa 001154000000 006316 aa 000006000000 006317 aa 000000000000 006320 aa 600000000041 006321 aa 000336000000 006322 aa 600000000041 006323 aa 000340000000 006324 aa 600000000041 006325 aa 001152000000 006326 aa 000004000000 006327 aa 000000000000 006330 aa 600000000041 006331 aa 000340000000 006332 aa 600000000041 006333 aa 000342000000 006334 aa 000002000000 006335 aa 000000000000 006336 aa 600000000041 006337 aa 001112000000 006340 aa 000002000000 006341 aa 000000000000 006342 aa 600000000041 006343 aa 001010000000 006344 aa 000002000000 006345 aa 000000000000 006346 aa 600000000041 006347 aa 000267000000 006350 aa 000002000000 006351 aa 000000000000 006352 aa 600000000041 006353 aa 000121000000 006354 aa 000004000000 006355 aa 000000000000 006356 aa 600000000041 006357 aa 000213000000 006360 aa 600000000041 006361 aa 000215000000 006362 aa 000002000000 006363 aa 000000000000 006364 aa 600000000041 006365 aa 000144000000 006366 aa 000004000000 006367 aa 000000000000 006370 aa 600000000041 006371 aa 000505000000 006372 aa 600000000041 006373 aa 000504000000 006374 aa 000004000000 006375 aa 000000000000 006376 aa 600000000041 006377 aa 000144000000 006400 aa 600000000041 006401 aa 000144000000 006402 aa 000002000000 006403 aa 000000000000 006404 aa 600000000041 006405 aa 000505000000 006406 aa 000002000000 006407 aa 000000000000 006410 aa 600000000041 006411 aa 000504000000 006412 aa 000002000000 006413 aa 000000000000 006414 aa 600000000041 006415 aa 000101000000 000000 aa 154 157 147 162 logr 000001 aa 157 060 060 061 o001 000002 aa 154 157 147 162 logr 000003 aa 060 060 060 061 0001 000004 aa 524000000070 000005 aa 524000000040 000006 aa 524000000033 000007 aa 524000000064 000010 aa 526000000250 000011 aa 404000000021 000012 aa 524000000035 000013 aa 404000000005 000014 aa 524000000011 000015 aa 524000000000 006416 aa 044 000 000 000 $ 000016 aa 400000000000 000017 aa 524000000013 000020 aa 524000000006 000021 aa 524000000021 000022 aa 524000000015 000023 aa 524000000014 000024 aa 524000000005 000025 aa 524000000004 000026 aa 157 160 145 156 open 000027 aa 526000000040 000030 aa 000000000000 000031 aa 500000000000 000032 aa 514000000001 000033 aa 514000000044 000034 aa 410000000107 000035 aa 404000000043 000036 aa 464000000000 000037 aa 526077777777 000040 aa 165 160 144 141 upda 000041 aa 164 145 000 000 te 000042 aa 143 154 157 163 clos 000043 aa 145 000 000 000 e 000044 aa 077777000043 000045 aa 000001000000 000046 aa 143 154 145 141 clea 000047 aa 156 165 160 000 nup 000050 aa 154 157 147 137 log_ 000051 aa 162 145 141 144 read 000052 aa 137 000 000 000 _ 000053 aa 147 145 164 137 get_ 000054 aa 154 157 147 137 log_ 000055 aa 165 151 144 000 uid 000056 aa 146 162 145 145 free 000057 aa 137 155 145 163 _mes 000060 aa 163 141 147 145 sage 000061 aa 150 157 154 144 hold 000062 aa 137 155 145 163 _mes 000063 aa 163 141 147 145 sage 000064 aa 156 145 170 164 next 000065 aa 137 155 145 163 _mes 000066 aa 163 141 147 145 sage 000067 aa 160 162 145 166 prev 000070 aa 137 155 145 163 _mes 000071 aa 163 141 147 145 sage 000072 aa 160 157 163 151 posi 000073 aa 164 151 157 156 tion 000074 aa 137 164 151 155 _tim 000075 aa 145 000 000 000 e 000076 aa 160 157 163 151 posi 000077 aa 164 151 157 156 tion 000100 aa 137 163 145 161 _seq 000101 aa 165 145 156 143 uenc 000102 aa 145 000 000 000 e 000103 aa 162 145 164 165 retu 000104 aa 162 156 137 143 rn_c 000105 aa 157 156 166 145 onve 000106 aa 162 163 151 157 rsio 000107 aa 156 137 145 162 n_er 000110 aa 162 157 162 000 ror 000111 aa 111 156 166 141 Inva 000112 aa 154 151 144 040 lid 000113 aa 155 145 163 163 mess 000114 aa 141 147 145 040 age 000115 aa 160 157 151 156 poin 000116 aa 164 145 162 040 ter 000117 aa 136 160 056 000 ^p. 000120 aa 116 165 154 154 Null 000121 aa 040 154 157 147 log 000122 aa 137 162 145 141 _rea 000123 aa 144 137 144 141 d_da 000124 aa 164 141 137 160 ta_p 000125 aa 164 162 040 163 tr s 000126 aa 165 160 160 154 uppl 000127 aa 151 145 144 056 ied. 000130 aa 106 141 151 154 Fail 000131 aa 145 144 040 164 ed t 000132 aa 157 040 163 156 o sn 000133 aa 141 160 040 154 ap l 000134 aa 151 156 153 040 ink 000135 aa 164 157 040 136 to ^ 000136 aa 141 044 136 141 a$^a 000137 aa 056 000 000 000 . 000140 aa 146 162 145 145 free 000141 aa 137 155 145 163 _mes 000142 aa 163 141 147 145 sage 000143 aa 040 146 141 151 fai 000144 aa 154 145 144 040 led 000145 aa 164 157 040 146 to f 000146 aa 151 156 144 040 ind 000147 aa 155 145 163 163 mess 000150 aa 141 147 145 040 age 000151 aa 136 160 040 157 ^p o 000152 aa 156 040 150 145 n he 000153 aa 154 144 040 154 ld l 000154 aa 151 163 164 056 ist. 000155 aa 111 156 166 141 Inva 000156 aa 154 151 144 040 lid 000157 aa 154 157 147 137 log_ 000160 aa 162 145 141 144 read 000161 aa 137 144 141 164 _dat 000162 aa 141 137 160 164 a_pt 000163 aa 162 040 163 165 r su 000164 aa 160 160 154 151 ppli 000165 aa 145 144 040 151 ed i 000166 aa 156 040 143 141 n ca 000167 aa 154 154 040 164 ll t 000170 aa 157 040 154 157 o lo 000171 aa 147 137 162 145 g_re 000172 aa 141 144 137 056 ad_. BEGIN PROCEDURE log_read_ ENTRY TO log_read_ STATEMENT 1 ON LINE 19 log_read_: procedure (); 000173 da 000254200000 000174 aa 001460 6270 00 eax7 816 000175 aa 7 00034 3521 20 epp2 pr7|28,* 000176 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000177 aa 000000000000 000200 aa 000000000000 STATEMENT 1 ON LINE 100 log_read_$open: entry (P_log_dname, P_log_ename, P_log_read_data_ptr, P_code); 000201 aa 000033 7100 04 tra 27,ic 000234 ENTRY TO log_read_$open STATEMENT 1 ON LINE 100 log_read_$open: entry (P_log_dname, P_log_ename, P_log_read_data_ptr, P_code); 000202 at 000004000037 000203 tt 000037000036 000204 ta 000035000000 000205 ta 000202000000 000206 da 000270300000 000207 aa 001460 6270 00 eax7 816 000210 aa 7 00034 3521 20 epp2 pr7|28,* 000211 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000212 aa 000010000000 000213 aa 000000000000 000214 aa 6 00042 3735 20 epp7 pr6|34,* 000215 aa 7 00000 2361 20 ldq pr7|0,* 000216 aa 000002 6040 04 tmi 2,ic 000220 000217 aa 777777 3760 07 anq 262143,dl 000220 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000221 aa 6 00466 7561 00 stq pr6|310 000222 aa 7 00002 2361 20 ldq pr7|2,* 000223 aa 000002 6040 04 tmi 2,ic 000225 000224 aa 777777 3760 07 anq 262143,dl 000225 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000226 aa 6 00467 7561 00 stq pr6|311 000227 aa 6 00032 3715 20 epp5 pr6|26,* 000230 aa 5 00006 3535 20 epp3 pr5|6,* 000231 aa 6 00152 2535 00 spri3 pr6|106 000232 aa 5 00010 3515 20 epp1 pr5|8,* 000233 aa 6 00160 2515 00 spri1 pr6|112 STATEMENT 1 ON LINE 103 P_log_read_data_ptr = null (); 000234 aa 777610 2370 04 ldaq -120,ic 000044 = 077777000043 000001000000 000235 aa 6 00152 7571 20 staq pr6|106,* P_log_read_data_ptr STATEMENT 1 ON LINE 104 P_code = 0; 000236 aa 6 00160 4501 20 stz pr6|112,* P_code STATEMENT 1 ON LINE 106 procedure_name = ""; 000237 aa 040 100 100 400 mlr (),(pr),fill(040) 000240 aa 000000 00 0000 desc9a 0,0 000241 aa 6 00102 00 0040 desc9a pr6|66,32 procedure_name STATEMENT 1 ON LINE 107 caller_area_ptr = get_system_free_area_ (); 000242 aa 6 00112 3521 00 epp2 pr6|74 caller_area_ptr 000243 aa 6 00472 2521 00 spri2 pr6|314 000244 aa 6 00470 6211 00 eax1 pr6|312 000245 aa 004000 4310 07 fld 2048,dl 000246 la 4 00026 3521 20 epp2 pr4|22,* get_system_free_area_ 000247 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 108 allocate_copies = "0"b; 000250 aa 6 00100 4501 00 stz pr6|64 allocate_copies STATEMENT 1 ON LINE 110 go to OPEN_COMMON; 000251 aa 000102 7100 04 tra 66,ic 000353 ENTRY TO log_read_$open_long STATEMENT 1 ON LINE 112 log_read_$open_long: entry (P_log_dname, P_log_ename, P_open_info_ptr, P_log_read_data_ptr, P_code); 000252 at 000005000037 000253 tt 000037000036 000254 tt 000036000035 000255 ta 000252000000 000256 da 000306300000 000257 aa 001460 6270 00 eax7 816 000260 aa 7 00034 3521 20 epp2 pr7|28,* 000261 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000262 aa 000012000000 000263 aa 000000000000 000264 aa 6 00042 3735 20 epp7 pr6|34,* 000265 aa 7 00000 2361 20 ldq pr7|0,* 000266 aa 000002 6040 04 tmi 2,ic 000270 000267 aa 777777 3760 07 anq 262143,dl 000270 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000271 aa 6 00466 7561 00 stq pr6|310 000272 aa 7 00002 2361 20 ldq pr7|2,* 000273 aa 000002 6040 04 tmi 2,ic 000275 000274 aa 777777 3760 07 anq 262143,dl 000275 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000276 aa 6 00467 7561 00 stq pr6|311 000277 aa 6 00032 3715 20 epp5 pr6|26,* 000300 aa 5 00010 3535 20 epp3 pr5|8,* 000301 aa 6 00152 2535 00 spri3 pr6|106 000302 aa 5 00012 3515 20 epp1 pr5|10,* 000303 aa 6 00160 2515 00 spri1 pr6|112 STATEMENT 1 ON LINE 116 P_log_read_data_ptr = null (); 000304 aa 777540 2370 04 ldaq -160,ic 000044 = 077777000043 000001000000 000305 aa 6 00152 7571 20 staq pr6|106,* P_log_read_data_ptr STATEMENT 1 ON LINE 117 P_code = 0; 000306 aa 6 00160 4501 20 stz pr6|112,* P_code STATEMENT 1 ON LINE 119 log_read_open_info_ptr = P_open_info_ptr; 000307 aa 6 00032 3735 20 epp7 pr6|26,* 000310 aa 7 00006 3715 20 epp5 pr7|6,* P_open_info_ptr 000311 aa 5 00000 3715 20 epp5 pr5|0,* P_open_info_ptr 000312 aa 6 00140 6515 00 spri5 pr6|96 log_read_open_info_ptr STATEMENT 1 ON LINE 120 if log_read_open_info.version ^= LOG_READ_OPEN_INFO_VERSION_1 then call finished (error_table_$unimplemented_version); 000313 aa 5 00000 2351 00 lda pr5|0 log_read_open_info.version 000314 aa 5 00001 2361 00 ldq pr5|1 log_read_open_info.version 000315 aa 777463 1170 04 cmpaq -205,ic 000000 = 154157147162 157060060061 000316 aa 000010 6000 04 tze 8,ic 000326 000317 aa 6 00044 3701 20 epp4 pr6|36,* 000320 la 4 00022 3521 20 epp2 pr4|18,* error_table_$unimplemented_version 000321 aa 6 00476 2521 00 spri2 pr6|318 000322 aa 6 00474 3521 00 epp2 pr6|316 000323 aa 004000 4310 07 fld 2048,dl 000324 aa 2 00000 7571 00 staq pr2|0 000325 aa 005747 6700 04 tsp4 3047,ic 006274 STATEMENT 1 ON LINE 123 procedure_name = log_read_open_info.reader_procedure; 000326 aa 6 00140 3735 20 epp7 pr6|96,* log_read_open_info_ptr 000327 aa 7 00002 7271 00 lxl7 pr7|2 log_read_open_info.reader_procedure 000330 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 000331 aa 7 00003 00 0017 desc9a pr7|3,x7 log_read_open_info.reader_procedure 000332 aa 6 00102 00 0040 desc9a pr6|66,32 procedure_name STATEMENT 1 ON LINE 124 caller_area_ptr = log_read_open_info.allocation_area_ptr; 000333 aa 7 00014 3715 20 epp5 pr7|12,* log_read_open_info.allocation_area_ptr 000334 aa 6 00112 6515 00 spri5 pr6|74 caller_area_ptr STATEMENT 1 ON LINE 125 allocate_copies = log_read_open_info.allocate_copies; 000335 aa 7 00016 2351 00 lda pr7|14 log_read_open_info.allocate_copies 000336 aa 6 00100 7551 00 sta pr6|64 allocate_copies STATEMENT 1 ON LINE 126 if procedure_name ^= "" & allocate_copies then call finished (error_table_$badcall); 000337 aa 000014 6000 04 tze 12,ic 000353 000340 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000341 aa 6 00102 00 0040 desc9a pr6|66,32 procedure_name 000342 aa 006056 00 0000 desc9a 3118,0 006416 = 044000000000 000343 aa 000010 6000 04 tze 8,ic 000353 000344 aa 6 00044 3701 20 epp4 pr6|36,* 000345 la 4 00010 3521 20 epp2 pr4|8,* error_table_$badcall 000346 aa 6 00476 2521 00 spri2 pr6|318 000347 aa 6 00474 3521 00 epp2 pr6|316 000350 aa 004000 4310 07 fld 2048,dl 000351 aa 2 00000 7571 00 staq pr2|0 000352 aa 005722 6700 04 tsp4 3026,ic 006274 STATEMENT 1 ON LINE 129 OPEN_COMMON: log_read_data_ptr, good_log_read_data_ptr = null (); 000353 aa 777471 3734 24 epp7 -199,ic* 000354 aa 6 00134 6535 00 spri7 pr6|92 log_read_data_ptr 000355 aa 6 00114 6535 00 spri7 pr6|76 good_log_read_data_ptr STATEMENT 1 ON LINE 131 system_area_ptr = get_system_free_area_ (); 000356 aa 6 00116 3521 00 epp2 pr6|78 system_area_ptr 000357 aa 6 00472 2521 00 spri2 pr6|314 000360 aa 6 00470 6211 00 eax1 pr6|312 000361 aa 004000 4310 07 fld 2048,dl 000362 aa 6 00044 3701 20 epp4 pr6|36,* 000363 la 4 00026 3521 20 epp2 pr4|22,* get_system_free_area_ 000364 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 133 on condition (cleanup) begin; 000365 aa 000007 7260 07 lxl6 7,dl 000366 aa 777460 3520 04 epp2 -208,ic 000046 = 143154145141 000367 aa 0 00717 7001 00 tsx0 pr0|463 enable_op 000370 aa 000004 7100 04 tra 4,ic 000374 000371 aa 000126000000 000372 aa 000022 7100 04 tra 18,ic 000414 BEGIN CONDITION cleanup.1 ENTRY TO cleanup.1 STATEMENT 1 ON LINE 133 on condition (cleanup) begin; 000373 da 000314200000 000374 aa 000120 6270 00 eax7 80 000375 aa 7 00034 3521 20 epp2 pr7|28,* 000376 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000377 aa 000000000000 000400 aa 000000000000 STATEMENT 1 ON LINE 134 call log_read_$close (good_log_read_data_ptr, (0)); 000401 aa 6 00100 4501 00 stz pr6|64 000402 aa 6 00040 3735 20 epp7 pr6|32,* 000403 aa 7 00114 3521 00 epp2 pr7|76 good_log_read_data_ptr 000404 aa 6 00104 2521 00 spri2 pr6|68 000405 aa 6 00100 3521 00 epp2 pr6|64 000406 aa 6 00106 2521 00 spri2 pr6|70 000407 aa 6 00102 6211 00 eax1 pr6|66 000410 aa 010000 4310 07 fld 4096,dl 000411 aa 000747 3520 04 epp2 487,ic 001360 = 001460627000 000412 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 135 end; 000413 aa 0 00631 7101 00 tra pr0|409 return_mac END CONDITION cleanup.1 STATEMENT 1 ON LINE 137 log_read_data_n_segments = 1; 000414 aa 000001 2360 07 ldq 1,dl 000415 aa 6 00136 7561 00 stq pr6|94 log_read_data_n_segments STATEMENT 1 ON LINE 138 allocate log_read_data in (system_area) set (log_read_data_ptr); 000416 aa 6 00136 2361 00 ldq pr6|94 log_read_data_n_segments 000417 aa 000072 4020 07 mpy 58,dl 000420 aa 000125 0760 07 adq 85,dl 000421 aa 6 00116 3521 20 epp2 pr6|78,* system_area 000422 aa 0 01402 7001 00 tsx0 pr0|770 op_alloc_ 000423 aa 777773 7100 04 tra -5,ic 000416 000424 aa 6 00134 2521 00 spri2 pr6|92 log_read_data_ptr 000425 aa 6 00136 2361 00 ldq pr6|94 log_read_data_n_segments 000426 aa 2 00002 7561 00 stq pr2|2 log_read_data.n_segments STATEMENT 1 ON LINE 139 unspec (log_read_data) = ""b; 000427 aa 000072 4020 07 mpy 58,dl 000430 aa 000125 0760 07 adq 85,dl 000431 aa 000044 4020 07 mpy 36,dl 000432 aa 000010 0760 07 adq 8,dl 000433 aa 000011 5060 07 div 9,dl 000434 aa 000 140 100 400 mlr (),(pr,rl),fill(000) 000435 aa 000000 00 0000 desc9a 0,0 000436 aa 2 00000 00 0006 desc9a pr2|0,ql STATEMENT 1 ON LINE 140 log_read_data.sentinel = LOG_READ_DATA_VERSION_SENTINEL; 000437 aa 777343 2370 04 ldaq -285,ic 000002 = 154157147162 060060060061 000440 aa 2 00000 7551 00 sta pr2|0 log_read_data.sentinel 000441 aa 2 00001 7561 00 stq pr2|1 log_read_data.sentinel STATEMENT 1 ON LINE 141 log_read_data.n_segments = log_read_data_n_segments; 000442 aa 6 00136 2361 00 ldq pr6|94 log_read_data_n_segments 000443 aa 2 00002 7561 00 stq pr2|2 log_read_data.n_segments STATEMENT 1 ON LINE 142 log_read_data.reader_data_ptr = null (); 000444 aa 777400 2370 04 ldaq -256,ic 000044 = 077777000043 000001000000 000445 aa 2 00012 7571 00 staq pr2|10 log_read_data.reader_data_ptr STATEMENT 1 ON LINE 143 log_read_data.first_held_message_ptr = null (); 000446 aa 2 00030 7571 00 staq pr2|24 log_read_data.first_held_message_ptr STATEMENT 1 ON LINE 144 log_read_data.latest_message = null (); 000447 aa 2 00016 7571 00 staq pr2|14 log_read_data.actual_ptr 000450 aa 2 00020 7571 00 staq pr2|16 log_read_data.copy_ptr STATEMENT 1 ON LINE 145 log_read_data.earlier_message = null (); 000451 aa 2 00022 7571 00 staq pr2|18 log_read_data.actual_ptr 000452 aa 2 00024 7571 00 staq pr2|20 log_read_data.copy_ptr STATEMENT 1 ON LINE 146 log_read_data.last_held_message_ptr = null (); 000453 aa 2 00032 7571 00 staq pr2|26 log_read_data.last_held_message_ptr STATEMENT 1 ON LINE 147 log_read_data.ptr (*) = null (); 000454 aa 000001 2360 07 ldq 1,dl 000455 aa 6 00162 7561 00 stq pr6|114 000456 aa 6 00162 2361 00 ldq pr6|114 000457 aa 000072 4020 07 mpy 58,dl 000460 aa 000000 6270 06 eax7 0,ql 000461 aa 777363 2370 04 ldaq -269,ic 000044 = 077777000043 000001000000 000462 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 000463 aa 7 00114 7571 17 staq pr7|76,7 log_read_data.ptr 000464 aa 6 00162 2361 00 ldq pr6|114 000465 aa 6 00162 0541 00 aos pr6|114 000466 aa 7 00002 1161 00 cmpq pr7|2 log_read_data.n_segments 000467 aa 777767 6040 04 tmi -9,ic 000456 STATEMENT 1 ON LINE 148 log_read_data.history_complete = "0"b; 000470 aa 7 00003 4501 00 stz pr7|3 log_read_data.history_complete STATEMENT 1 ON LINE 149 log_read_data.call_procedures = (procedure_name ^= ""); 000471 aa 040 004 106 500 cmpc (pr),(ic),fill(040) 000472 aa 6 00102 00 0040 desc9a pr6|66,32 procedure_name 000473 aa 005725 00 0000 desc9a 3029,0 006416 = 044000000000 000474 aa 0 00515 7001 00 tsx0 pr0|333 r_ne_as 000475 aa 7 00004 7551 00 sta pr7|4 log_read_data.call_procedures STATEMENT 1 ON LINE 150 log_read_data.user_area_ptr = caller_area_ptr; 000476 aa 6 00112 3715 20 epp5 pr6|74,* caller_area_ptr 000477 aa 7 00014 6515 00 spri5 pr7|12 log_read_data.user_area_ptr STATEMENT 1 ON LINE 151 log_read_data.allocate_copies = allocate_copies; 000500 aa 6 00100 2351 00 lda pr6|64 allocate_copies 000501 aa 7 00005 7551 00 sta pr7|5 log_read_data.allocate_copies STATEMENT 1 ON LINE 153 begin; BEGIN BLOCK 1 STATEMENT 1 ON LINE 159 null_entry.code = null (); 000502 aa 777342 2370 04 ldaq -286,ic 000044 = 077777000043 000001000000 000503 aa 6 00164 7571 00 staq pr6|116 null_entry.code STATEMENT 1 ON LINE 160 null_entry.env = null (); 000504 aa 6 00166 7571 00 staq pr6|118 null_entry.env STATEMENT 1 ON LINE 161 unspec (nulle) = unspec (null_entry); 000505 aa 6 00164 2371 00 ldaq pr6|116 000506 aa 6 00170 7571 00 staq pr6|120 000507 aa 6 00166 2371 00 ldaq pr6|118 000510 aa 6 00172 7571 00 staq pr6|122 STATEMENT 1 ON LINE 162 log_read_data.ev = nulle; 000511 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 000512 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000513 aa 7 00034 2521 00 spri2 pr7|28 log_read_data.open 000514 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000515 aa 7 00036 2521 00 spri2 pr7|30 log_read_data.open 000516 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000517 aa 7 00040 2521 00 spri2 pr7|32 log_read_data.close 000520 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000521 aa 7 00042 2521 00 spri2 pr7|34 log_read_data.close 000522 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000523 aa 7 00044 2521 00 spri2 pr7|36 log_read_data.next_message 000524 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000525 aa 7 00046 2521 00 spri2 pr7|38 log_read_data.next_message 000526 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000527 aa 7 00050 2521 00 spri2 pr7|40 log_read_data.prev_message 000530 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000531 aa 7 00052 2521 00 spri2 pr7|42 log_read_data.prev_message 000532 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000533 aa 7 00054 2521 00 spri2 pr7|44 log_read_data.position_sequence 000534 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000535 aa 7 00056 2521 00 spri2 pr7|46 log_read_data.position_sequence 000536 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000537 aa 7 00060 2521 00 spri2 pr7|48 log_read_data.position_time 000540 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000541 aa 7 00062 2521 00 spri2 pr7|50 log_read_data.position_time 000542 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000543 aa 7 00064 2521 00 spri2 pr7|52 log_read_data.update 000544 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000545 aa 7 00066 2521 00 spri2 pr7|54 log_read_data.update 000546 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000547 aa 7 00070 2521 00 spri2 pr7|56 log_read_data.hold_message 000550 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000551 aa 7 00072 2521 00 spri2 pr7|58 log_read_data.hold_message 000552 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000553 aa 7 00074 2521 00 spri2 pr7|60 log_read_data.free_message 000554 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000555 aa 7 00076 2521 00 spri2 pr7|62 log_read_data.free_message 000556 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000557 aa 7 00100 2521 00 spri2 pr7|64 log_read_data.get_log_uid 000560 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000561 aa 7 00102 2521 00 spri2 pr7|66 log_read_data.get_log_uid 000562 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000563 aa 7 00104 2521 00 spri2 pr7|68 log_read_data.register 000564 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000565 aa 7 00106 2521 00 spri2 pr7|70 log_read_data.register 000566 aa 6 00170 3521 20 epp2 pr6|120,* nulle 000567 aa 7 00110 2521 00 spri2 pr7|72 log_read_data.deregister 000570 aa 6 00172 3521 20 epp2 pr6|122,* nulle 000571 aa 7 00112 2521 00 spri2 pr7|74 log_read_data.deregister STATEMENT 1 ON LINE 163 end; END BLOCK 1 STATEMENT 1 ON LINE 165 if log_read_data.call_procedures then do; 000572 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 000573 aa 000321 6000 04 tze 209,ic 001114 STATEMENT 1 ON LINE 167 call set_entry_variable (log_read_data.ev.open, procedure_name, "open"); 000574 aa 777232 2350 04 lda -358,ic 000026 = 157160145156 000575 aa 6 00504 7551 00 sta pr6|324 000576 aa 7 00034 3521 00 epp2 pr7|28 log_read_data.open 000577 aa 6 00510 2521 00 spri2 pr6|328 000600 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 000601 aa 6 00512 2521 00 spri2 pr6|330 000602 aa 6 00504 3521 00 epp2 pr6|324 000603 aa 6 00514 2521 00 spri2 pr6|332 000604 aa 777225 3520 04 epp2 -363,ic 000031 = 500000000000 000605 aa 6 00516 2521 00 spri2 pr6|334 000606 aa 777221 3520 04 epp2 -367,ic 000027 = 526000000040 000607 aa 6 00520 2521 00 spri2 pr6|336 000610 aa 777215 3520 04 epp2 -371,ic 000025 = 524000000004 000611 aa 6 00522 2521 00 spri2 pr6|338 000612 aa 6 00506 3521 00 epp2 pr6|326 000613 aa 014000 4310 07 fld 6144,dl 000614 aa 2 00000 7571 00 staq pr2|0 000615 aa 002542 6700 04 tsp4 1378,ic 003357 STATEMENT 1 ON LINE 168 call set_entry_variable (log_read_data.ev.close, procedure_name, "close"); 000616 aa 777224 2370 04 ldaq -364,ic 000042 = 143154157163 145000000000 000617 aa 6 00502 7571 00 staq pr6|322 000620 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 000621 aa 7 00040 3521 00 epp2 pr7|32 log_read_data.close 000622 aa 6 00510 2521 00 spri2 pr6|328 000623 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 000624 aa 6 00512 2521 00 spri2 pr6|330 000625 aa 6 00502 3521 00 epp2 pr6|322 000626 aa 6 00514 2521 00 spri2 pr6|332 000627 aa 777202 3520 04 epp2 -382,ic 000031 = 500000000000 000630 aa 6 00516 2521 00 spri2 pr6|334 000631 aa 777176 3520 04 epp2 -386,ic 000027 = 526000000040 000632 aa 6 00520 2521 00 spri2 pr6|336 000633 aa 777171 3520 04 epp2 -391,ic 000024 = 524000000005 000634 aa 6 00522 2521 00 spri2 pr6|338 000635 aa 6 00506 3521 00 epp2 pr6|326 000636 aa 014000 4310 07 fld 6144,dl 000637 aa 2 00000 7571 00 staq pr2|0 000640 aa 002517 6700 04 tsp4 1359,ic 003357 STATEMENT 1 ON LINE 169 call set_entry_variable (log_read_data.ev.prev_message, procedure_name, "prev_message"); 000641 aa 777226 2350 04 lda -362,ic 000067 = 160162145166 000642 aa 777226 2360 04 ldq -362,ic 000070 = 137155145163 000643 aa 6 00470 7571 00 staq pr6|312 000644 aa 777225 2350 04 lda -363,ic 000071 = 163141147145 000645 aa 6 00472 7551 00 sta pr6|314 000646 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 000647 aa 7 00050 3521 00 epp2 pr7|40 log_read_data.prev_message 000650 aa 6 00510 2521 00 spri2 pr6|328 000651 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 000652 aa 6 00512 2521 00 spri2 pr6|330 000653 aa 6 00470 3521 00 epp2 pr6|312 000654 aa 6 00514 2521 00 spri2 pr6|332 000655 aa 777154 3520 04 epp2 -404,ic 000031 = 500000000000 000656 aa 6 00516 2521 00 spri2 pr6|334 000657 aa 777150 3520 04 epp2 -408,ic 000027 = 526000000040 000660 aa 6 00520 2521 00 spri2 pr6|336 000661 aa 777142 3520 04 epp2 -414,ic 000023 = 524000000014 000662 aa 6 00522 2521 00 spri2 pr6|338 000663 aa 6 00506 3521 00 epp2 pr6|326 000664 aa 014000 4310 07 fld 6144,dl 000665 aa 2 00000 7571 00 staq pr2|0 000666 aa 002471 6700 04 tsp4 1337,ic 003357 STATEMENT 1 ON LINE 170 call set_entry_variable (log_read_data.ev.next_message, procedure_name, "next_message"); 000667 aa 777175 2370 04 ldaq -387,ic 000064 = 156145170164 137155145163 000670 aa 6 00470 7571 00 staq pr6|312 000671 aa 777175 2350 04 lda -387,ic 000066 = 163141147145 000672 aa 6 00472 7551 00 sta pr6|314 000673 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 000674 aa 7 00044 3521 00 epp2 pr7|36 log_read_data.next_message 000675 aa 6 00510 2521 00 spri2 pr6|328 000676 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 000677 aa 6 00512 2521 00 spri2 pr6|330 000700 aa 6 00470 3521 00 epp2 pr6|312 000701 aa 6 00514 2521 00 spri2 pr6|332 000702 aa 777127 3520 04 epp2 -425,ic 000031 = 500000000000 000703 aa 6 00516 2521 00 spri2 pr6|334 000704 aa 777123 3520 04 epp2 -429,ic 000027 = 526000000040 000705 aa 6 00520 2521 00 spri2 pr6|336 000706 aa 777115 3520 04 epp2 -435,ic 000023 = 524000000014 000707 aa 6 00522 2521 00 spri2 pr6|338 000710 aa 6 00506 3521 00 epp2 pr6|326 000711 aa 014000 4310 07 fld 6144,dl 000712 aa 2 00000 7571 00 staq pr2|0 000713 aa 002444 6700 04 tsp4 1316,ic 003357 STATEMENT 1 ON LINE 171 call set_entry_variable (log_read_data.ev.position_time, procedure_name, "position_time"); 000714 aa 777156 2370 04 ldaq -402,ic 000072 = 160157163151 164151157156 000715 aa 6 00470 7571 00 staq pr6|312 000716 aa 777156 2370 04 ldaq -402,ic 000074 = 137164151155 145000000000 000717 aa 6 00472 7571 00 staq pr6|314 000720 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 000721 aa 7 00060 3521 00 epp2 pr7|48 log_read_data.position_time 000722 aa 6 00510 2521 00 spri2 pr6|328 000723 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 000724 aa 6 00512 2521 00 spri2 pr6|330 000725 aa 6 00470 3521 00 epp2 pr6|312 000726 aa 6 00514 2521 00 spri2 pr6|332 000727 aa 777102 3520 04 epp2 -446,ic 000031 = 500000000000 000730 aa 6 00516 2521 00 spri2 pr6|334 000731 aa 777076 3520 04 epp2 -450,ic 000027 = 526000000040 000732 aa 6 00520 2521 00 spri2 pr6|336 000733 aa 777067 3520 04 epp2 -457,ic 000022 = 524000000015 000734 aa 6 00522 2521 00 spri2 pr6|338 000735 aa 6 00506 3521 00 epp2 pr6|326 000736 aa 014000 4310 07 fld 6144,dl 000737 aa 2 00000 7571 00 staq pr2|0 000740 aa 002417 6700 04 tsp4 1295,ic 003357 STATEMENT 1 ON LINE 172 call set_entry_variable (log_read_data.ev.position_sequence, procedure_name, "position_sequence"); 000741 aa 777135 2370 04 ldaq -419,ic 000076 = 160157163151 164151157156 000742 aa 6 00474 7571 00 staq pr6|316 000743 aa 777135 2370 04 ldaq -419,ic 000100 = 137163145161 165145156143 000744 aa 6 00476 7571 00 staq pr6|318 000745 aa 145000 2350 03 lda 51712,du 000746 aa 6 00500 7551 00 sta pr6|320 000747 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 000750 aa 7 00054 3521 00 epp2 pr7|44 log_read_data.position_sequence 000751 aa 6 00510 2521 00 spri2 pr6|328 000752 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 000753 aa 6 00512 2521 00 spri2 pr6|330 000754 aa 6 00474 3521 00 epp2 pr6|316 000755 aa 6 00514 2521 00 spri2 pr6|332 000756 aa 777053 3520 04 epp2 -469,ic 000031 = 500000000000 000757 aa 6 00516 2521 00 spri2 pr6|334 000760 aa 777047 3520 04 epp2 -473,ic 000027 = 526000000040 000761 aa 6 00520 2521 00 spri2 pr6|336 000762 aa 777037 3520 04 epp2 -481,ic 000021 = 524000000021 000763 aa 6 00522 2521 00 spri2 pr6|338 000764 aa 6 00506 3521 00 epp2 pr6|326 000765 aa 014000 4310 07 fld 6144,dl 000766 aa 2 00000 7571 00 staq pr2|0 000767 aa 002370 6700 04 tsp4 1272,ic 003357 STATEMENT 1 ON LINE 173 call set_entry_variable (log_read_data.ev.update, procedure_name, "update"); 000770 aa 777050 2370 04 ldaq -472,ic 000040 = 165160144141 164145000000 000771 aa 6 00502 7571 00 staq pr6|322 000772 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 000773 aa 7 00064 3521 00 epp2 pr7|52 log_read_data.update 000774 aa 6 00510 2521 00 spri2 pr6|328 000775 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 000776 aa 6 00512 2521 00 spri2 pr6|330 000777 aa 6 00502 3521 00 epp2 pr6|322 001000 aa 6 00514 2521 00 spri2 pr6|332 001001 aa 777030 3520 04 epp2 -488,ic 000031 = 500000000000 001002 aa 6 00516 2521 00 spri2 pr6|334 001003 aa 777024 3520 04 epp2 -492,ic 000027 = 526000000040 001004 aa 6 00520 2521 00 spri2 pr6|336 001005 aa 777013 3520 04 epp2 -501,ic 000020 = 524000000006 001006 aa 6 00522 2521 00 spri2 pr6|338 001007 aa 6 00506 3521 00 epp2 pr6|326 001010 aa 014000 4310 07 fld 6144,dl 001011 aa 2 00000 7571 00 staq pr2|0 001012 aa 002345 6700 04 tsp4 1253,ic 003357 STATEMENT 1 ON LINE 174 call set_entry_variable (log_read_data.ev.hold_message, procedure_name, "hold_message"); 001013 aa 777046 2350 04 lda -474,ic 000061 = 150157154144 001014 aa 777046 2360 04 ldq -474,ic 000062 = 137155145163 001015 aa 6 00470 7571 00 staq pr6|312 001016 aa 777045 2350 04 lda -475,ic 000063 = 163141147145 001017 aa 6 00472 7551 00 sta pr6|314 001020 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001021 aa 7 00070 3521 00 epp2 pr7|56 log_read_data.hold_message 001022 aa 6 00510 2521 00 spri2 pr6|328 001023 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 001024 aa 6 00512 2521 00 spri2 pr6|330 001025 aa 6 00470 3521 00 epp2 pr6|312 001026 aa 6 00514 2521 00 spri2 pr6|332 001027 aa 777002 3520 04 epp2 -510,ic 000031 = 500000000000 001030 aa 6 00516 2521 00 spri2 pr6|334 001031 aa 776776 3520 04 epp2 -514,ic 000027 = 526000000040 001032 aa 6 00520 2521 00 spri2 pr6|336 001033 aa 776770 3520 04 epp2 -520,ic 000023 = 524000000014 001034 aa 6 00522 2521 00 spri2 pr6|338 001035 aa 6 00506 3521 00 epp2 pr6|326 001036 aa 014000 4310 07 fld 6144,dl 001037 aa 2 00000 7571 00 staq pr2|0 001040 aa 002317 6700 04 tsp4 1231,ic 003357 STATEMENT 1 ON LINE 175 call set_entry_variable (log_read_data.ev.free_message, procedure_name, "free_message"); 001041 aa 777015 2370 04 ldaq -499,ic 000056 = 146162145145 137155145163 001042 aa 6 00470 7571 00 staq pr6|312 001043 aa 777015 2350 04 lda -499,ic 000060 = 163141147145 001044 aa 6 00472 7551 00 sta pr6|314 001045 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001046 aa 7 00074 3521 00 epp2 pr7|60 log_read_data.free_message 001047 aa 6 00510 2521 00 spri2 pr6|328 001050 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 001051 aa 6 00512 2521 00 spri2 pr6|330 001052 aa 6 00470 3521 00 epp2 pr6|312 001053 aa 6 00514 2521 00 spri2 pr6|332 001054 aa 776755 3520 04 epp2 -531,ic 000031 = 500000000000 001055 aa 6 00516 2521 00 spri2 pr6|334 001056 aa 776751 3520 04 epp2 -535,ic 000027 = 526000000040 001057 aa 6 00520 2521 00 spri2 pr6|336 001060 aa 776743 3520 04 epp2 -541,ic 000023 = 524000000014 001061 aa 6 00522 2521 00 spri2 pr6|338 001062 aa 6 00506 3521 00 epp2 pr6|326 001063 aa 014000 4310 07 fld 6144,dl 001064 aa 2 00000 7571 00 staq pr2|0 001065 aa 002272 6700 04 tsp4 1210,ic 003357 STATEMENT 1 ON LINE 176 call set_entry_variable (log_read_data.ev.get_log_uid, procedure_name, "get_log_uid"); 001066 aa 776765 2350 04 lda -523,ic 000053 = 147145164137 001067 aa 776765 2360 04 ldq -523,ic 000054 = 154157147137 001070 aa 6 00470 7571 00 staq pr6|312 001071 aa 776764 2350 04 lda -524,ic 000055 = 165151144000 001072 aa 6 00472 7551 00 sta pr6|314 001073 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001074 aa 7 00100 3521 00 epp2 pr7|64 log_read_data.get_log_uid 001075 aa 6 00510 2521 00 spri2 pr6|328 001076 aa 6 00102 3521 00 epp2 pr6|66 procedure_name 001077 aa 6 00512 2521 00 spri2 pr6|330 001100 aa 6 00470 3521 00 epp2 pr6|312 001101 aa 6 00514 2521 00 spri2 pr6|332 001102 aa 776727 3520 04 epp2 -553,ic 000031 = 500000000000 001103 aa 6 00516 2521 00 spri2 pr6|334 001104 aa 776723 3520 04 epp2 -557,ic 000027 = 526000000040 001105 aa 6 00520 2521 00 spri2 pr6|336 001106 aa 776711 3520 04 epp2 -567,ic 000017 = 524000000013 001107 aa 6 00522 2521 00 spri2 pr6|338 001110 aa 6 00506 3521 00 epp2 pr6|326 001111 aa 014000 4310 07 fld 6144,dl 001112 aa 2 00000 7571 00 staq pr2|0 001113 aa 002244 6700 04 tsp4 1188,ic 003357 STATEMENT 1 ON LINE 177 end; STATEMENT 1 ON LINE 179 good_log_read_data_ptr = log_read_data_ptr; 001114 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001115 aa 6 00114 6535 00 spri7 pr6|76 good_log_read_data_ptr STATEMENT 1 ON LINE 182 if log_read_data.call_procedures then do; 001116 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 001117 aa 000037 6000 04 tze 31,ic 001156 STATEMENT 1 ON LINE 183 call log_read_data.ev.open (P_log_dname, P_log_ename, caller_area_ptr, log_read_data.reader_data_ptr, code); 001120 aa 6 00032 3715 20 epp5 pr6|26,* 001121 aa 5 00002 3521 20 epp2 pr5|2,* P_log_dname 001122 aa 6 00530 2521 00 spri2 pr6|344 001123 aa 5 00004 3521 20 epp2 pr5|4,* P_log_ename 001124 aa 6 00532 2521 00 spri2 pr6|346 001125 aa 6 00112 3521 00 epp2 pr6|74 caller_area_ptr 001126 aa 6 00534 2521 00 spri2 pr6|348 001127 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 001130 aa 6 00536 2521 00 spri2 pr6|350 001131 aa 6 00101 3521 00 epp2 pr6|65 code 001132 aa 6 00540 2521 00 spri2 pr6|352 001133 aa 6 00042 3535 20 epp3 pr6|34,* 001134 aa 3 00000 3521 20 epp2 pr3|0,* 001135 aa 6 00544 2521 00 spri2 pr6|356 001136 aa 3 00002 3521 20 epp2 pr3|2,* 001137 aa 6 00546 2521 00 spri2 pr6|358 001140 aa 776676 3520 04 epp2 -578,ic 000036 = 464000000000 001141 aa 6 00550 2521 00 spri2 pr6|360 001142 aa 6 00552 2521 00 spri2 pr6|362 001143 aa 776672 3520 04 epp2 -582,ic 000035 = 404000000043 001144 aa 6 00554 2521 00 spri2 pr6|364 001145 aa 6 00526 6211 00 eax1 pr6|342 001146 aa 024000 4310 07 fld 10240,dl 001147 aa 7 00034 3521 00 epp2 pr7|28 log_read_data.open 001150 aa 0 00616 7001 00 tsx0 pr0|398 call_ent_var_desc STATEMENT 1 ON LINE 185 if code ^= 0 then call finished (code); 001151 aa 6 00101 2361 00 ldq pr6|65 code 001152 aa 000174 6000 04 tze 124,ic 001346 001153 aa 005237 3520 04 epp2 2719,ic 006412 = 000002000000 001154 aa 005120 6700 04 tsp4 2640,ic 006274 STATEMENT 1 ON LINE 186 go to OPEN_GOOD_RETURN; 001155 aa 000171 7100 04 tra 121,ic 001346 STATEMENT 1 ON LINE 187 end; STATEMENT 1 ON LINE 192 log_idx = 1; 001156 aa 000001 2360 07 ldq 1,dl 001157 aa 6 00121 7561 00 stq pr6|81 log_idx STATEMENT 1 ON LINE 193 log_read_data.dname (1) = P_log_dname; 001160 aa 6 00032 3715 20 epp5 pr6|26,* 001161 aa 5 00002 3535 20 epp3 pr5|2,* 001162 aa 6 00466 2351 00 lda pr6|310 001163 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 001164 aa 3 00000 00 0005 desc9a pr3|0,al P_log_dname 001165 aa 7 00124 00 0250 desc9a pr7|84,168 log_read_data.dname STATEMENT 1 ON LINE 194 log_read_data.ename (1) = P_log_ename; 001166 aa 5 00004 3515 20 epp1 pr5|4,* 001167 aa 6 00467 2361 00 ldq pr6|311 001170 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 001171 aa 1 00000 00 0006 desc9a pr1|0,ql P_log_ename 001172 aa 7 00176 00 0040 desc9a pr7|126,32 log_read_data.ename STATEMENT 1 ON LINE 196 call initiate_log (1); 001173 aa 000001 2360 07 ldq 1,dl 001174 aa 6 00504 7561 00 stq pr6|324 001175 aa 005211 3520 04 epp2 2697,ic 006406 = 000002000000 001176 aa 003156 6700 04 tsp4 1646,ic 004354 STATEMENT 1 ON LINE 197 if (code ^= 0) then do; 001177 aa 6 00101 2361 00 ldq pr6|65 code 001200 aa 000014 6000 04 tze 12,ic 001214 STATEMENT 1 ON LINE 198 call log_read_$close (log_read_data_ptr, (0)); 001201 aa 6 00504 4501 00 stz pr6|324 001202 aa 6 00134 3521 00 epp2 pr6|92 log_read_data_ptr 001203 aa 6 00476 2521 00 spri2 pr6|318 001204 aa 6 00504 3521 00 epp2 pr6|324 001205 aa 6 00500 2521 00 spri2 pr6|320 001206 aa 6 00474 6211 00 eax1 pr6|316 001207 aa 010000 4310 07 fld 4096,dl 001210 aa 000150 3520 04 epp2 104,ic 001360 = 001460627000 001211 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 199 call finished (code); 001212 aa 005200 3520 04 epp2 2688,ic 006412 = 000002000000 001213 aa 005061 6700 04 tsp4 2609,ic 006274 STATEMENT 1 ON LINE 200 end; STATEMENT 1 ON LINE 202 log_read_data.suffix_time (1) = clock (); 001214 aa 0 01435 7001 00 tsx0 pr0|797 clock_mac 001215 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001216 aa 7 00210 7571 00 staq pr7|136 log_read_data.suffix_time STATEMENT 1 ON LINE 204 call get_complete_history (); 001217 aa 003233 6700 04 tsp4 1691,ic 004452 STATEMENT 1 ON LINE 206 call look_for_log_segment (log_read_data.n_segments, 1); 001220 aa 000001 2360 07 ldq 1,dl 001221 aa 6 00504 7561 00 stq pr6|324 001222 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001223 aa 7 00002 3521 00 epp2 pr7|2 log_read_data.n_segments 001224 aa 6 00510 2521 00 spri2 pr6|328 001225 aa 6 00504 3521 00 epp2 pr6|324 001226 aa 6 00512 2521 00 spri2 pr6|330 001227 aa 6 00506 3521 00 epp2 pr6|326 001230 aa 010000 4310 07 fld 4096,dl 001231 aa 2 00000 7571 00 staq pr2|0 001232 aa 003016 6700 04 tsp4 1550,ic 004250 STATEMENT 1 ON LINE 207 if log_segment_ptr = null () then call finished (error_table_$fatal_error); 001233 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 001234 aa 776610 6770 04 eraq -632,ic 000044 = 077777000043 000001000000 001235 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001236 aa 000010 6010 04 tnz 8,ic 001246 001237 aa 6 00044 3701 20 epp4 pr6|36,* 001240 la 4 00012 3521 20 epp2 pr4|10,* error_table_$fatal_error 001241 aa 6 00476 2521 00 spri2 pr6|318 001242 aa 6 00474 3521 00 epp2 pr6|316 001243 aa 004000 4310 07 fld 2048,dl 001244 aa 2 00000 7571 00 staq pr2|0 001245 aa 005027 6700 04 tsp4 2583,ic 006274 STATEMENT 1 ON LINE 209 log_read_data.very_first_log_idx = log_idx; 001246 aa 6 00121 2361 00 ldq pr6|81 log_idx 001247 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001250 aa 7 00122 7561 00 stq pr7|82 log_read_data.very_first_log_idx STATEMENT 1 ON LINE 210 log_read_data.very_first_sequence = log_segment.first_sequence; 001251 aa 6 00142 3715 20 epp5 pr6|98,* log_segment_ptr 001252 aa 5 00056 2361 00 ldq pr5|46 log_segment.first_sequence 001253 aa 7 00120 7561 00 stq pr7|80 log_read_data.very_first_sequence STATEMENT 1 ON LINE 211 log_read_data.very_first_time = log_segment.first_time; 001254 aa 5 00060 2371 00 ldaq pr5|48 log_segment.first_time 001255 aa 7 00114 7571 00 staq pr7|76 log_read_data.very_first_time STATEMENT 1 ON LINE 213 call look_for_log_segment (1, log_read_data.n_segments); 001256 aa 000001 2360 07 ldq 1,dl 001257 aa 6 00504 7561 00 stq pr6|324 001260 aa 6 00504 3521 00 epp2 pr6|324 001261 aa 6 00510 2521 00 spri2 pr6|328 001262 aa 7 00002 3521 00 epp2 pr7|2 log_read_data.n_segments 001263 aa 6 00512 2521 00 spri2 pr6|330 001264 aa 6 00506 3521 00 epp2 pr6|326 001265 aa 010000 4310 07 fld 4096,dl 001266 aa 2 00000 7571 00 staq pr2|0 001267 aa 002761 6700 04 tsp4 1521,ic 004250 STATEMENT 1 ON LINE 214 if log_segment_ptr = null () then call finished (error_table_$fatal_error); 001270 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 001271 aa 776553 6770 04 eraq -661,ic 000044 = 077777000043 000001000000 001272 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001273 aa 000010 6010 04 tnz 8,ic 001303 001274 aa 6 00044 3701 20 epp4 pr6|36,* 001275 la 4 00012 3521 20 epp2 pr4|10,* error_table_$fatal_error 001276 aa 6 00476 2521 00 spri2 pr6|318 001277 aa 6 00474 3521 00 epp2 pr6|316 001300 aa 004000 4310 07 fld 2048,dl 001301 aa 2 00000 7571 00 staq pr2|0 001302 aa 004772 6700 04 tsp4 2554,ic 006274 STATEMENT 1 ON LINE 216 if log_segment.first_sequence = 0 & log_segment.last_sequence = 0 then do; 001303 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 001304 aa 7 00056 2361 00 ldq pr7|46 log_segment.first_sequence 001305 aa 000031 6010 04 tnz 25,ic 001336 001306 aa 7 00057 2361 00 ldq pr7|47 log_segment.last_sequence 001307 aa 000027 6010 04 tnz 23,ic 001336 STATEMENT 1 ON LINE 217 call look_for_log_segment (2, log_read_data.n_segments); 001310 aa 000002 2360 07 ldq 2,dl 001311 aa 6 00504 7561 00 stq pr6|324 001312 aa 6 00504 3521 00 epp2 pr6|324 001313 aa 6 00510 2521 00 spri2 pr6|328 001314 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 001315 aa 5 00002 3521 00 epp2 pr5|2 log_read_data.n_segments 001316 aa 6 00512 2521 00 spri2 pr6|330 001317 aa 6 00506 3521 00 epp2 pr6|326 001320 aa 010000 4310 07 fld 4096,dl 001321 aa 2 00000 7571 00 staq pr2|0 001322 aa 002726 6700 04 tsp4 1494,ic 004250 STATEMENT 1 ON LINE 218 if log_segment_ptr = null then call finished (error_table_$fatal_error); 001323 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 001324 aa 776520 6770 04 eraq -688,ic 000044 = 077777000043 000001000000 001325 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001326 aa 000010 6010 04 tnz 8,ic 001336 001327 aa 6 00044 3701 20 epp4 pr6|36,* 001330 la 4 00012 3521 20 epp2 pr4|10,* error_table_$fatal_error 001331 aa 6 00476 2521 00 spri2 pr6|318 001332 aa 6 00474 3521 00 epp2 pr6|316 001333 aa 004000 4310 07 fld 2048,dl 001334 aa 2 00000 7571 00 staq pr2|0 001335 aa 004737 6700 04 tsp4 2527,ic 006274 STATEMENT 1 ON LINE 219 end; STATEMENT 1 ON LINE 221 log_read_data.very_last_log_idx = log_idx; 001336 aa 6 00121 2361 00 ldq pr6|81 log_idx 001337 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001340 aa 7 00123 7561 00 stq pr7|83 log_read_data.very_last_log_idx STATEMENT 1 ON LINE 222 log_read_data.very_last_sequence = log_segment.last_sequence; 001341 aa 6 00142 3715 20 epp5 pr6|98,* log_segment_ptr 001342 aa 5 00057 2361 00 ldq pr5|47 log_segment.last_sequence 001343 aa 7 00121 7561 00 stq pr7|81 log_read_data.very_last_sequence STATEMENT 1 ON LINE 223 log_read_data.very_last_time = log_segment.last_time; 001344 aa 5 00062 2371 00 ldaq pr5|50 log_segment.last_time 001345 aa 7 00116 7571 00 staq pr7|78 log_read_data.very_last_time STATEMENT 1 ON LINE 224 OPEN_GOOD_RETURN: P_log_read_data_ptr = log_read_data_ptr; 001346 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001347 aa 6 00152 6535 20 spri7 pr6|106,* P_log_read_data_ptr STATEMENT 1 ON LINE 227 call finished (0); 001350 aa 6 00504 4501 00 stz pr6|324 001351 aa 005035 3520 04 epp2 2589,ic 006406 = 000002000000 001352 aa 004722 6700 04 tsp4 2514,ic 006274 STATEMENT 1 ON LINE 230 log_read_$close: entry (P_log_read_data_ptr, P_code); 001353 aa 000017 7100 04 tra 15,ic 001372 ENTRY TO log_read_$close STATEMENT 1 ON LINE 230 log_read_$close: entry (P_log_read_data_ptr, P_code); 001354 at 000002000036 001355 ta 000035000000 001356 ta 001354000000 001357 da 000330300000 001360 aa 001460 6270 00 eax7 816 001361 aa 7 00034 3521 20 epp2 pr7|28,* 001362 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001363 aa 000004000000 001364 aa 000000000000 001365 aa 6 00032 3735 20 epp7 pr6|26,* 001366 aa 7 00002 3715 20 epp5 pr7|2,* 001367 aa 6 00152 6515 00 spri5 pr6|106 001370 aa 7 00004 3535 20 epp3 pr7|4,* 001371 aa 6 00160 2535 00 spri3 pr6|112 STATEMENT 1 ON LINE 233 P_code = 0; 001372 aa 6 00160 4501 20 stz pr6|112,* P_code STATEMENT 1 ON LINE 234 if P_log_read_data_ptr = null () then return; 001373 aa 6 00152 2371 20 ldaq pr6|106,* P_log_read_data_ptr 001374 aa 776450 6770 04 eraq -728,ic 000044 = 077777000043 000001000000 001375 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001376 aa 0 00631 6001 00 tze pr0|409 return_mac STATEMENT 1 ON LINE 235 call check_in_pointer; 001377 aa 004541 6700 04 tsp4 2401,ic 006140 STATEMENT 1 ON LINE 237 if log_read_data.call_procedures then do; 001400 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001401 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 001402 aa 000015 6000 04 tze 13,ic 001417 STATEMENT 1 ON LINE 238 P_log_read_data_ptr = null (); 001403 aa 776441 2370 04 ldaq -735,ic 000044 = 077777000043 000001000000 001404 aa 6 00152 7571 20 staq pr6|106,* P_log_read_data_ptr STATEMENT 1 ON LINE 239 call log_read_data.ev.close (log_read_data.reader_data_ptr, code); 001405 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 001406 aa 6 00510 2521 00 spri2 pr6|328 001407 aa 6 00101 3521 00 epp2 pr6|65 code 001410 aa 6 00512 2521 00 spri2 pr6|330 001411 aa 6 00506 6211 00 eax1 pr6|326 001412 aa 010000 4310 07 fld 4096,dl 001413 aa 7 00040 3521 00 epp2 pr7|32 log_read_data.close 001414 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 240 call finished (code); 001415 aa 004775 3520 04 epp2 2557,ic 006412 = 000002000000 001416 aa 004656 6700 04 tsp4 2478,ic 006274 STATEMENT 1 ON LINE 241 end; STATEMENT 1 ON LINE 243 if log_read_data.allocate_copies then call free_held_messages (); 001417 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001420 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 001421 aa 000002 6000 04 tze 2,ic 001423 001422 aa 004317 6700 04 tsp4 2255,ic 005741 STATEMENT 1 ON LINE 246 P_log_read_data_ptr = null (); 001423 aa 776421 2370 04 ldaq -751,ic 000044 = 077777000043 000001000000 001424 aa 6 00152 7571 20 staq pr6|106,* P_log_read_data_ptr STATEMENT 1 ON LINE 247 system_area_ptr = get_system_free_area_ (); 001425 aa 6 00116 3521 00 epp2 pr6|78 system_area_ptr 001426 aa 6 00472 2521 00 spri2 pr6|314 001427 aa 6 00470 6211 00 eax1 pr6|312 001430 aa 004000 4310 07 fld 2048,dl 001431 aa 6 00044 3701 20 epp4 pr6|36,* 001432 la 4 00026 3521 20 epp2 pr4|22,* get_system_free_area_ 001433 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 249 do log_idx = 1 to hbound (log_read_data.ptr, 1); 001434 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001435 aa 7 00002 2361 00 ldq pr7|2 log_read_data.n_segments 001436 aa 6 00163 7561 00 stq pr6|115 001437 aa 000001 2360 07 ldq 1,dl 001440 aa 6 00121 7561 00 stq pr6|81 log_idx 001441 aa 000000 0110 03 nop 0,du 001442 aa 6 00121 2361 00 ldq pr6|81 log_idx 001443 aa 6 00163 1161 00 cmpq pr6|115 001444 aa 000025 6054 04 tpnz 21,ic 001471 STATEMENT 1 ON LINE 250 if (log_read_data.ptr (log_idx) ^= null ()) then call hcs_$terminate_noname (log_read_data.ptr (log_idx), (0)); 001445 aa 000072 4020 07 mpy 58,dl 001446 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001447 aa 6 00504 7561 00 stq pr6|324 001450 aa 7 00114 2371 06 ldaq pr7|76,ql log_read_data.ptr 001451 aa 776373 6770 04 eraq -773,ic 000044 = 077777000043 000001000000 001452 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001453 aa 000014 6000 04 tze 12,ic 001467 001454 aa 6 00505 4501 00 stz pr6|325 001455 aa 6 00504 7271 00 lxl7 pr6|324 001456 aa 7 00114 3521 17 epp2 pr7|76,7 log_read_data.ptr 001457 aa 6 00476 2521 00 spri2 pr6|318 001460 aa 6 00505 3521 00 epp2 pr6|325 001461 aa 6 00500 2521 00 spri2 pr6|320 001462 aa 6 00474 6211 00 eax1 pr6|316 001463 aa 010000 4310 07 fld 4096,dl 001464 aa 6 00044 3701 20 epp4 pr6|36,* 001465 la 4 00032 3521 20 epp2 pr4|26,* hcs_$terminate_noname 001466 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 252 end; 001467 aa 6 00121 0541 00 aos pr6|81 log_idx 001470 aa 777752 7100 04 tra -22,ic 001442 STATEMENT 1 ON LINE 254 free log_read_data in (system_area); 001471 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001472 aa 7 00002 2361 00 ldq pr7|2 log_read_data.n_segments 001473 aa 000072 4020 07 mpy 58,dl 001474 aa 000125 0760 07 adq 85,dl 001475 aa 6 00134 3715 00 epp5 pr6|92 log_read_data_ptr 001476 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 255 call finished (0); 001477 aa 6 00505 4501 00 stz pr6|325 001500 aa 004702 3520 04 epp2 2498,ic 006402 = 000002000000 001501 aa 004573 6700 04 tsp4 2427,ic 006274 STATEMENT 1 ON LINE 258 log_read_$next_message: entry (P_log_read_data_ptr, P_log_message_ptr, P_code); 001502 aa 000021 7100 04 tra 17,ic 001523 ENTRY TO log_read_$next_message STATEMENT 1 ON LINE 258 log_read_$next_message: entry (P_log_read_data_ptr, P_log_message_ptr, P_code); 001503 at 000003000036 001504 tt 000036000035 001505 ta 001503000000 001506 da 000344300000 001507 aa 001460 6270 00 eax7 816 001510 aa 7 00034 3521 20 epp2 pr7|28,* 001511 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001512 aa 000006000000 001513 aa 000000000000 001514 aa 6 00032 3735 20 epp7 pr6|26,* 001515 aa 7 00002 3715 20 epp5 pr7|2,* 001516 aa 6 00152 6515 00 spri5 pr6|106 001517 aa 7 00004 3535 20 epp3 pr7|4,* 001520 aa 6 00154 2535 00 spri3 pr6|108 001521 aa 7 00006 3515 20 epp1 pr7|6,* 001522 aa 6 00160 2515 00 spri1 pr6|112 STATEMENT 1 ON LINE 261 call check_in_pointer; 001523 aa 004415 6700 04 tsp4 2317,ic 006140 STATEMENT 1 ON LINE 262 log_message_ptr = P_log_message_ptr; 001524 aa 6 00154 3735 20 epp7 pr6|108,* P_log_message_ptr 001525 aa 7 00000 3735 20 epp7 pr7|0,* P_log_message_ptr 001526 aa 6 00144 6535 00 spri7 pr6|100 log_message_ptr STATEMENT 1 ON LINE 264 if log_read_data.call_procedures then do; 001527 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 001530 aa 5 00004 2351 00 lda pr5|4 log_read_data.call_procedures 001531 aa 000015 6000 04 tze 13,ic 001546 STATEMENT 1 ON LINE 265 call log_read_data.ev.next_message (log_read_data.reader_data_ptr, P_log_message_ptr, code); 001532 aa 5 00012 3521 00 epp2 pr5|10 log_read_data.reader_data_ptr 001533 aa 6 00510 2521 00 spri2 pr6|328 001534 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 001535 aa 6 00512 2521 00 spri2 pr6|330 001536 aa 6 00101 3521 00 epp2 pr6|65 code 001537 aa 6 00514 2521 00 spri2 pr6|332 001540 aa 6 00506 6211 00 eax1 pr6|326 001541 aa 014000 4310 07 fld 6144,dl 001542 aa 5 00044 3521 00 epp2 pr5|36 log_read_data.next_message 001543 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 266 call finished (code); 001544 aa 004646 3520 04 epp2 2470,ic 006412 = 000002000000 001545 aa 004527 6700 04 tsp4 2391,ic 006274 STATEMENT 1 ON LINE 267 end; STATEMENT 1 ON LINE 269 if log_read_data.allocate_copies then log_message_ptr = lookup_message (log_message_ptr); 001546 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001547 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 001550 aa 000003 6000 04 tze 3,ic 001553 001551 aa 004623 3520 04 epp2 2451,ic 006374 = 000004000000 001552 aa 003743 6700 04 tsp4 2019,ic 005515 STATEMENT 1 ON LINE 271 if (log_message_ptr = null ()) then do; 001553 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 001554 aa 776270 6770 04 eraq -840,ic 000044 = 077777000043 000001000000 001555 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001556 aa 000023 6010 04 tnz 19,ic 001601 STATEMENT 1 ON LINE 272 call look_for_log_segment (log_read_data.n_segments, 1); 001557 aa 000001 2360 07 ldq 1,dl 001560 aa 6 00505 7561 00 stq pr6|325 001561 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001562 aa 7 00002 3521 00 epp2 pr7|2 log_read_data.n_segments 001563 aa 6 00510 2521 00 spri2 pr6|328 001564 aa 6 00505 3521 00 epp2 pr6|325 001565 aa 6 00512 2521 00 spri2 pr6|330 001566 aa 6 00506 3521 00 epp2 pr6|326 001567 aa 010000 4310 07 fld 4096,dl 001570 aa 2 00000 7571 00 staq pr2|0 001571 aa 002457 6700 04 tsp4 1327,ic 004250 STATEMENT 1 ON LINE 273 if (log_segment_ptr = null ()) then call finished (code); 001572 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 001573 aa 776251 6770 04 eraq -855,ic 000044 = 077777000043 000001000000 001574 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001575 aa 000005 6010 04 tnz 5,ic 001602 001576 aa 004614 3520 04 epp2 2444,ic 006412 = 000002000000 001577 aa 004475 6700 04 tsp4 2365,ic 006274 STATEMENT 1 ON LINE 274 end; 001600 aa 000002 7100 04 tra 2,ic 001602 STATEMENT 1 ON LINE 276 else call find_log_idx_of_message (); 001601 aa 002357 6700 04 tsp4 1263,ic 004160 STATEMENT 1 ON LINE 278 call log_position_$next_message (log_segment_ptr, log_message_ptr, log_read_data.damaged (log_idx)); 001602 aa 6 00121 2361 00 ldq pr6|81 log_idx 001603 aa 000072 4020 07 mpy 58,dl 001604 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 001605 aa 6 00510 2521 00 spri2 pr6|328 001606 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 001607 aa 6 00512 2521 00 spri2 pr6|330 001610 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001611 aa 7 00122 3521 06 epp2 pr7|82,ql log_read_data.damaged 001612 aa 6 00514 2521 00 spri2 pr6|332 001613 aa 6 00506 6211 00 eax1 pr6|326 001614 aa 014000 4310 07 fld 6144,dl 001615 aa 6 00044 3701 20 epp4 pr6|36,* 001616 la 4 00044 3521 20 epp2 pr4|36,* log_position_$next_message 001617 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 280 if (log_message_ptr = null ()) then do; 001620 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 001621 aa 776223 6770 04 eraq -877,ic 000044 = 077777000043 000001000000 001622 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001623 aa 000054 6010 04 tnz 44,ic 001677 STATEMENT 1 ON LINE 281 call look_for_log_segment ((log_idx - 1), 1); 001624 aa 6 00121 2361 00 ldq pr6|81 log_idx 001625 aa 000001 1760 07 sbq 1,dl 001626 aa 6 00505 7561 00 stq pr6|325 001627 aa 000001 2360 07 ldq 1,dl 001630 aa 6 00504 7561 00 stq pr6|324 001631 aa 004535 3520 04 epp2 2397,ic 006366 = 000004000000 001632 aa 002416 6700 04 tsp4 1294,ic 004250 STATEMENT 1 ON LINE 282 if (log_segment_ptr = null ()) then call finished (error_table_$no_log_message); 001633 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 001634 aa 776210 6770 04 eraq -888,ic 000044 = 077777000043 000001000000 001635 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001636 aa 000010 6010 04 tnz 8,ic 001646 001637 aa 6 00044 3701 20 epp4 pr6|36,* 001640 la 4 00016 3521 20 epp2 pr4|14,* error_table_$no_log_message 001641 aa 6 00476 2521 00 spri2 pr6|318 001642 aa 6 00474 3521 00 epp2 pr6|316 001643 aa 004000 4310 07 fld 2048,dl 001644 aa 2 00000 7571 00 staq pr2|0 001645 aa 004427 6700 04 tsp4 2327,ic 006274 STATEMENT 1 ON LINE 284 call log_position_$next_message (log_segment_ptr, log_message_ptr, log_read_data.damaged (log_idx)); 001646 aa 6 00121 2361 00 ldq pr6|81 log_idx 001647 aa 000072 4020 07 mpy 58,dl 001650 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 001651 aa 6 00510 2521 00 spri2 pr6|328 001652 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 001653 aa 6 00512 2521 00 spri2 pr6|330 001654 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001655 aa 7 00122 3521 06 epp2 pr7|82,ql log_read_data.damaged 001656 aa 6 00514 2521 00 spri2 pr6|332 001657 aa 6 00506 6211 00 eax1 pr6|326 001660 aa 014000 4310 07 fld 6144,dl 001661 aa 6 00044 3701 20 epp4 pr6|36,* 001662 la 4 00044 3521 20 epp2 pr4|36,* log_position_$next_message 001663 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 285 if log_message_ptr = null () /* still no one home */ then call finished (error_table_$no_log_message); 001664 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 001665 aa 776157 6770 04 eraq -913,ic 000044 = 077777000043 000001000000 001666 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001667 aa 000010 6010 04 tnz 8,ic 001677 001670 aa 6 00044 3701 20 epp4 pr6|36,* 001671 la 4 00016 3521 20 epp2 pr4|14,* error_table_$no_log_message 001672 aa 6 00476 2521 00 spri2 pr6|318 001673 aa 6 00474 3521 00 epp2 pr6|316 001674 aa 004000 4310 07 fld 2048,dl 001675 aa 2 00000 7571 00 staq pr2|0 001676 aa 004376 6700 04 tsp4 2302,ic 006274 STATEMENT 1 ON LINE 287 end; STATEMENT 1 ON LINE 291 if log_read_data.allocate_copies then call short_hold_message (log_message_ptr); 001677 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001700 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 001701 aa 000003 6000 04 tze 3,ic 001704 001702 aa 004460 3520 04 epp2 2352,ic 006362 = 000002000000 001703 aa 003120 6700 04 tsp4 1616,ic 005023 STATEMENT 1 ON LINE 294 P_log_message_ptr = log_message_ptr; 001704 aa 6 00144 3735 20 epp7 pr6|100,* log_message_ptr 001705 aa 6 00154 6535 20 spri7 pr6|108,* P_log_message_ptr STATEMENT 1 ON LINE 295 call finished (0); 001706 aa 6 00504 4501 00 stz pr6|324 001707 aa 004477 3520 04 epp2 2367,ic 006406 = 000002000000 001710 aa 004364 6700 04 tsp4 2292,ic 006274 STATEMENT 1 ON LINE 298 log_read_$prev_message: entry (P_log_read_data_ptr, P_log_message_ptr, P_code); 001711 aa 000017 7100 04 tra 15,ic 001730 ENTRY TO log_read_$prev_message STATEMENT 1 ON LINE 298 log_read_$prev_message: entry (P_log_read_data_ptr, P_log_message_ptr, P_code); 001712 ta 001503000000 001713 da 000360300000 001714 aa 001460 6270 00 eax7 816 001715 aa 7 00034 3521 20 epp2 pr7|28,* 001716 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 001717 aa 000006000000 001720 aa 000000000000 001721 aa 6 00032 3735 20 epp7 pr6|26,* 001722 aa 7 00002 3715 20 epp5 pr7|2,* 001723 aa 6 00152 6515 00 spri5 pr6|106 001724 aa 7 00004 3535 20 epp3 pr7|4,* 001725 aa 6 00154 2535 00 spri3 pr6|108 001726 aa 7 00006 3515 20 epp1 pr7|6,* 001727 aa 6 00160 2515 00 spri1 pr6|112 STATEMENT 1 ON LINE 300 call check_in_pointer; 001730 aa 004210 6700 04 tsp4 2184,ic 006140 STATEMENT 1 ON LINE 301 log_message_ptr = P_log_message_ptr; 001731 aa 6 00154 3735 20 epp7 pr6|108,* P_log_message_ptr 001732 aa 7 00000 3735 20 epp7 pr7|0,* P_log_message_ptr 001733 aa 6 00144 6535 00 spri7 pr6|100 log_message_ptr STATEMENT 1 ON LINE 303 if log_read_data.call_procedures then do; 001734 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 001735 aa 5 00004 2351 00 lda pr5|4 log_read_data.call_procedures 001736 aa 000015 6000 04 tze 13,ic 001753 STATEMENT 1 ON LINE 304 call log_read_data.ev.prev_message (log_read_data.reader_data_ptr, P_log_message_ptr, code); 001737 aa 5 00012 3521 00 epp2 pr5|10 log_read_data.reader_data_ptr 001740 aa 6 00510 2521 00 spri2 pr6|328 001741 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 001742 aa 6 00512 2521 00 spri2 pr6|330 001743 aa 6 00101 3521 00 epp2 pr6|65 code 001744 aa 6 00514 2521 00 spri2 pr6|332 001745 aa 6 00506 6211 00 eax1 pr6|326 001746 aa 014000 4310 07 fld 6144,dl 001747 aa 5 00050 3521 00 epp2 pr5|40 log_read_data.prev_message 001750 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 305 call finished (code); 001751 aa 004441 3520 04 epp2 2337,ic 006412 = 000002000000 001752 aa 004322 6700 04 tsp4 2258,ic 006274 STATEMENT 1 ON LINE 306 end; STATEMENT 1 ON LINE 308 if log_read_data.allocate_copies then log_message_ptr = lookup_message (log_message_ptr); 001753 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001754 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 001755 aa 000003 6000 04 tze 3,ic 001760 001756 aa 004416 3520 04 epp2 2318,ic 006374 = 000004000000 001757 aa 003536 6700 04 tsp4 1886,ic 005515 STATEMENT 1 ON LINE 310 if (log_message_ptr = null ()) then do; 001760 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 001761 aa 776063 6770 04 eraq -973,ic 000044 = 077777000043 000001000000 001762 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001763 aa 000023 6010 04 tnz 19,ic 002006 STATEMENT 1 ON LINE 311 call look_for_log_segment (1, log_read_data.n_segments); 001764 aa 000001 2360 07 ldq 1,dl 001765 aa 6 00504 7561 00 stq pr6|324 001766 aa 6 00504 3521 00 epp2 pr6|324 001767 aa 6 00510 2521 00 spri2 pr6|328 001770 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 001771 aa 7 00002 3521 00 epp2 pr7|2 log_read_data.n_segments 001772 aa 6 00512 2521 00 spri2 pr6|330 001773 aa 6 00506 3521 00 epp2 pr6|326 001774 aa 010000 4310 07 fld 4096,dl 001775 aa 2 00000 7571 00 staq pr2|0 001776 aa 002252 6700 04 tsp4 1194,ic 004250 STATEMENT 1 ON LINE 312 if (log_segment_ptr = null ()) then /* Couldn't find anything, punt */ call finished (code); 001777 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 002000 aa 776044 6770 04 eraq -988,ic 000044 = 077777000043 000001000000 002001 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002002 aa 000005 6010 04 tnz 5,ic 002007 002003 aa 004407 3520 04 epp2 2311,ic 006412 = 000002000000 002004 aa 004270 6700 04 tsp4 2232,ic 006274 STATEMENT 1 ON LINE 314 end; 002005 aa 000002 7100 04 tra 2,ic 002007 STATEMENT 1 ON LINE 316 else call find_log_idx_of_message (); 002006 aa 002152 6700 04 tsp4 1130,ic 004160 STATEMENT 1 ON LINE 318 call log_position_$prev_message (log_segment_ptr, log_message_ptr, log_read_data.damaged (log_idx)); 002007 aa 6 00121 2361 00 ldq pr6|81 log_idx 002010 aa 000072 4020 07 mpy 58,dl 002011 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 002012 aa 6 00510 2521 00 spri2 pr6|328 002013 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 002014 aa 6 00512 2521 00 spri2 pr6|330 002015 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002016 aa 7 00122 3521 06 epp2 pr7|82,ql log_read_data.damaged 002017 aa 6 00514 2521 00 spri2 pr6|332 002020 aa 6 00506 6211 00 eax1 pr6|326 002021 aa 014000 4310 07 fld 6144,dl 002022 aa 6 00044 3701 20 epp4 pr6|36,* 002023 la 4 00046 3521 20 epp2 pr4|38,* log_position_$prev_message 002024 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 320 if (log_message_ptr = null ()) then do; 002025 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 002026 aa 776016 6770 04 eraq -1010,ic 000044 = 077777000043 000001000000 002027 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002030 aa 000061 6010 04 tnz 49,ic 002111 STATEMENT 1 ON LINE 321 call look_for_log_segment ((log_idx + 1), log_read_data.n_segments); 002031 aa 6 00121 2361 00 ldq pr6|81 log_idx 002032 aa 000001 0760 07 adq 1,dl 002033 aa 6 00504 7561 00 stq pr6|324 002034 aa 6 00504 3521 00 epp2 pr6|324 002035 aa 6 00510 2521 00 spri2 pr6|328 002036 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002037 aa 7 00002 3521 00 epp2 pr7|2 log_read_data.n_segments 002040 aa 6 00512 2521 00 spri2 pr6|330 002041 aa 6 00506 3521 00 epp2 pr6|326 002042 aa 010000 4310 07 fld 4096,dl 002043 aa 2 00000 7571 00 staq pr2|0 002044 aa 002204 6700 04 tsp4 1156,ic 004250 STATEMENT 1 ON LINE 322 if (log_segment_ptr = null ()) then call finished (error_table_$no_log_message); 002045 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 002046 aa 775776 6770 04 eraq -1026,ic 000044 = 077777000043 000001000000 002047 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002050 aa 000010 6010 04 tnz 8,ic 002060 002051 aa 6 00044 3701 20 epp4 pr6|36,* 002052 la 4 00016 3521 20 epp2 pr4|14,* error_table_$no_log_message 002053 aa 6 00476 2521 00 spri2 pr6|318 002054 aa 6 00474 3521 00 epp2 pr6|316 002055 aa 004000 4310 07 fld 2048,dl 002056 aa 2 00000 7571 00 staq pr2|0 002057 aa 004215 6700 04 tsp4 2189,ic 006274 STATEMENT 1 ON LINE 325 call log_position_$prev_message (log_segment_ptr, log_message_ptr, log_read_data.damaged (log_idx)); 002060 aa 6 00121 2361 00 ldq pr6|81 log_idx 002061 aa 000072 4020 07 mpy 58,dl 002062 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 002063 aa 6 00510 2521 00 spri2 pr6|328 002064 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 002065 aa 6 00512 2521 00 spri2 pr6|330 002066 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002067 aa 7 00122 3521 06 epp2 pr7|82,ql log_read_data.damaged 002070 aa 6 00514 2521 00 spri2 pr6|332 002071 aa 6 00506 6211 00 eax1 pr6|326 002072 aa 014000 4310 07 fld 6144,dl 002073 aa 6 00044 3701 20 epp4 pr6|36,* 002074 la 4 00046 3521 20 epp2 pr4|38,* log_position_$prev_message 002075 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 326 if log_message_ptr = null () /* Still no one home? Must be an emptr segment. */ then call finished (error_table_$no_log_message); 002076 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 002077 aa 775745 6770 04 eraq -1051,ic 000044 = 077777000043 000001000000 002100 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002101 aa 000010 6010 04 tnz 8,ic 002111 002102 aa 6 00044 3701 20 epp4 pr6|36,* 002103 la 4 00016 3521 20 epp2 pr4|14,* error_table_$no_log_message 002104 aa 6 00476 2521 00 spri2 pr6|318 002105 aa 6 00474 3521 00 epp2 pr6|316 002106 aa 004000 4310 07 fld 2048,dl 002107 aa 2 00000 7571 00 staq pr2|0 002110 aa 004164 6700 04 tsp4 2164,ic 006274 STATEMENT 1 ON LINE 328 end; STATEMENT 1 ON LINE 330 if log_read_data.allocate_copies then call short_hold_message (log_message_ptr); 002111 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002112 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 002113 aa 000003 6000 04 tze 3,ic 002116 002114 aa 004246 3520 04 epp2 2214,ic 006362 = 000002000000 002115 aa 002706 6700 04 tsp4 1478,ic 005023 STATEMENT 1 ON LINE 333 P_log_message_ptr = log_message_ptr; 002116 aa 6 00144 3735 20 epp7 pr6|100,* log_message_ptr 002117 aa 6 00154 6535 20 spri7 pr6|108,* P_log_message_ptr STATEMENT 1 ON LINE 334 call finished (0); 002120 aa 6 00504 4501 00 stz pr6|324 002121 aa 004265 3520 04 epp2 2229,ic 006406 = 000002000000 002122 aa 004152 6700 04 tsp4 2154,ic 006274 STATEMENT 1 ON LINE 337 log_read_$position_sequence: entry (P_log_read_data_ptr, P_message_sequence, P_search_direction, P_log_message_ptr, P_code); 002123 aa 000024 7100 04 tra 20,ic 002147 ENTRY TO log_read_$position_sequence STATEMENT 1 ON LINE 337 log_read_$position_sequence: entry (P_log_read_data_ptr, P_message_sequence, P_search_direction, P_log_message_ptr, P_code); 002124 at 000005000036 002125 tt 000035000032 002126 tt 000036000035 002127 ta 002124000000 002130 da 000402300000 002131 aa 001460 6270 00 eax7 816 002132 aa 7 00034 3521 20 epp2 pr7|28,* 002133 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002134 aa 000012000000 002135 aa 000000000000 002136 aa 6 00032 3735 20 epp7 pr6|26,* 002137 aa 7 00002 3715 20 epp5 pr7|2,* 002140 aa 6 00152 6515 00 spri5 pr6|106 002141 aa 7 00004 3535 20 epp3 pr7|4,* 002142 aa 6 00156 2535 00 spri3 pr6|110 002143 aa 7 00010 3515 20 epp1 pr7|8,* 002144 aa 6 00154 2515 00 spri1 pr6|108 002145 aa 7 00012 3715 20 epp5 pr7|10,* 002146 aa 6 00160 6515 00 spri5 pr6|112 STATEMENT 1 ON LINE 340 call check_in_pointer; 002147 aa 003771 6700 04 tsp4 2041,ic 006140 STATEMENT 1 ON LINE 341 P_log_message_ptr = null (); 002150 aa 775674 2370 04 ldaq -1092,ic 000044 = 077777000043 000001000000 002151 aa 6 00154 7571 20 staq pr6|108,* P_log_message_ptr STATEMENT 1 ON LINE 343 if log_read_data.call_procedures then do; 002152 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002153 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 002154 aa 000022 6000 04 tze 18,ic 002176 STATEMENT 1 ON LINE 344 call log_read_data.ev.position_sequence (log_read_data.reader_data_ptr, P_message_sequence, P_search_direction, P_log_message_ptr, code); 002155 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 002156 aa 6 00510 2521 00 spri2 pr6|328 002157 aa 6 00156 3521 20 epp2 pr6|110,* P_message_sequence 002160 aa 6 00512 2521 00 spri2 pr6|330 002161 aa 6 00032 3715 20 epp5 pr6|26,* 002162 aa 5 00006 3521 20 epp2 pr5|6,* P_search_direction 002163 aa 6 00514 2521 00 spri2 pr6|332 002164 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 002165 aa 6 00516 2521 00 spri2 pr6|334 002166 aa 6 00101 3521 00 epp2 pr6|65 code 002167 aa 6 00520 2521 00 spri2 pr6|336 002170 aa 6 00506 6211 00 eax1 pr6|326 002171 aa 024000 4310 07 fld 10240,dl 002172 aa 7 00054 3521 00 epp2 pr7|44 log_read_data.position_sequence 002173 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 346 call finished (code); 002174 aa 004216 3520 04 epp2 2190,ic 006412 = 000002000000 002175 aa 004077 6700 04 tsp4 2111,ic 006274 STATEMENT 1 ON LINE 347 end; STATEMENT 1 ON LINE 349 call sequence_search (P_search_direction); 002176 aa 6 00032 3735 20 epp7 pr6|26,* 002177 aa 7 00006 3521 20 epp2 pr7|6,* P_search_direction 002200 aa 6 00476 2521 00 spri2 pr6|318 002201 aa 6 00474 3521 00 epp2 pr6|316 002202 aa 004000 4310 07 fld 2048,dl 002203 aa 2 00000 7571 00 staq pr2|0 002204 aa 000551 6700 04 tsp4 361,ic 002755 STATEMENT 1 ON LINE 351 if log_read_data.allocate_copies then call short_hold_message (log_message_ptr); 002205 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002206 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 002207 aa 000003 6000 04 tze 3,ic 002212 002210 aa 004152 3520 04 epp2 2154,ic 006362 = 000002000000 002211 aa 002612 6700 04 tsp4 1418,ic 005023 STATEMENT 1 ON LINE 354 P_log_message_ptr = log_message_ptr; 002212 aa 6 00144 3735 20 epp7 pr6|100,* log_message_ptr 002213 aa 6 00154 6535 20 spri7 pr6|108,* P_log_message_ptr STATEMENT 1 ON LINE 355 if (log_message_ptr = null ()) then call finished (error_table_$no_log_message); 002214 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 002215 aa 775627 6770 04 eraq -1129,ic 000044 = 077777000043 000001000000 002216 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002217 aa 000011 6010 04 tnz 9,ic 002230 002220 aa 6 00044 3701 20 epp4 pr6|36,* 002221 la 4 00016 3521 20 epp2 pr4|14,* error_table_$no_log_message 002222 aa 6 00476 2521 00 spri2 pr6|318 002223 aa 6 00474 3521 00 epp2 pr6|316 002224 aa 004000 4310 07 fld 2048,dl 002225 aa 2 00000 7571 00 staq pr2|0 002226 aa 004046 6700 04 tsp4 2086,ic 006274 002227 aa 000026 7100 04 tra 22,ic 002255 STATEMENT 1 ON LINE 357 else call finished (0); 002230 aa 6 00504 4501 00 stz pr6|324 002231 aa 004155 3520 04 epp2 2157,ic 006406 = 000002000000 002232 aa 004042 6700 04 tsp4 2082,ic 006274 STATEMENT 1 ON LINE 360 log_read_$position_time: entry (P_log_read_data_ptr, P_message_time, P_search_direction, P_log_message_ptr, P_code); 002233 aa 000022 7100 04 tra 18,ic 002255 ENTRY TO log_read_$position_time STATEMENT 1 ON LINE 360 log_read_$position_time: entry (P_log_read_data_ptr, P_message_time, P_search_direction, P_log_message_ptr, P_code); 002234 at 000005000036 002235 tt 000034000032 002236 tt 000036000035 002237 ta 002234000000 002240 da 000422300000 002241 aa 001460 6270 00 eax7 816 002242 aa 7 00034 3521 20 epp2 pr7|28,* 002243 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002244 aa 000012000000 002245 aa 000000000000 002246 aa 6 00032 3735 20 epp7 pr6|26,* 002247 aa 7 00002 3715 20 epp5 pr7|2,* 002250 aa 6 00152 6515 00 spri5 pr6|106 002251 aa 7 00010 3535 20 epp3 pr7|8,* 002252 aa 6 00154 2535 00 spri3 pr6|108 002253 aa 7 00012 3515 20 epp1 pr7|10,* 002254 aa 6 00160 2515 00 spri1 pr6|112 STATEMENT 1 ON LINE 363 call check_in_pointer; 002255 aa 003663 6700 04 tsp4 1971,ic 006140 STATEMENT 1 ON LINE 364 P_log_message_ptr = null (); 002256 aa 775566 2370 04 ldaq -1162,ic 000044 = 077777000043 000001000000 002257 aa 6 00154 7571 20 staq pr6|108,* P_log_message_ptr STATEMENT 1 ON LINE 366 if log_read_data.call_procedures then do; 002260 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002261 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 002262 aa 000022 6000 04 tze 18,ic 002304 STATEMENT 1 ON LINE 367 call log_read_data.ev.position_time (log_read_data.reader_data_ptr, P_message_time, P_search_direction, P_log_message_ptr, code); 002263 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 002264 aa 6 00510 2521 00 spri2 pr6|328 002265 aa 6 00032 3715 20 epp5 pr6|26,* 002266 aa 5 00004 3521 20 epp2 pr5|4,* P_message_time 002267 aa 6 00512 2521 00 spri2 pr6|330 002270 aa 5 00006 3521 20 epp2 pr5|6,* P_search_direction 002271 aa 6 00514 2521 00 spri2 pr6|332 002272 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 002273 aa 6 00516 2521 00 spri2 pr6|334 002274 aa 6 00101 3521 00 epp2 pr6|65 code 002275 aa 6 00520 2521 00 spri2 pr6|336 002276 aa 6 00506 6211 00 eax1 pr6|326 002277 aa 024000 4310 07 fld 10240,dl 002300 aa 7 00060 3521 00 epp2 pr7|48 log_read_data.position_time 002301 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 369 call finished (code); 002302 aa 004110 3520 04 epp2 2120,ic 006412 = 000002000000 002303 aa 003771 6700 04 tsp4 2041,ic 006274 STATEMENT 1 ON LINE 370 end; STATEMENT 1 ON LINE 371 call time_search (P_search_direction); 002304 aa 6 00032 3735 20 epp7 pr6|26,* 002305 aa 7 00006 3521 20 epp2 pr7|6,* P_search_direction 002306 aa 6 00476 2521 00 spri2 pr6|318 002307 aa 6 00474 3521 00 epp2 pr6|316 002310 aa 004000 4310 07 fld 2048,dl 002311 aa 2 00000 7571 00 staq pr2|0 002312 aa 001231 6700 04 tsp4 665,ic 003543 STATEMENT 1 ON LINE 373 if log_read_data.allocate_copies then call short_hold_message (log_message_ptr); 002313 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002314 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 002315 aa 000003 6000 04 tze 3,ic 002320 002316 aa 004044 3520 04 epp2 2084,ic 006362 = 000002000000 002317 aa 002504 6700 04 tsp4 1348,ic 005023 STATEMENT 1 ON LINE 376 P_log_message_ptr = log_message_ptr; 002320 aa 6 00144 3735 20 epp7 pr6|100,* log_message_ptr 002321 aa 6 00154 6535 20 spri7 pr6|108,* P_log_message_ptr STATEMENT 1 ON LINE 377 if (log_message_ptr = null ()) then call finished (error_table_$no_log_message); 002322 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 002323 aa 775521 6770 04 eraq -1199,ic 000044 = 077777000043 000001000000 002324 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002325 aa 000011 6010 04 tnz 9,ic 002336 002326 aa 6 00044 3701 20 epp4 pr6|36,* 002327 la 4 00016 3521 20 epp2 pr4|14,* error_table_$no_log_message 002330 aa 6 00476 2521 00 spri2 pr6|318 002331 aa 6 00474 3521 00 epp2 pr6|316 002332 aa 004000 4310 07 fld 2048,dl 002333 aa 2 00000 7571 00 staq pr2|0 002334 aa 003740 6700 04 tsp4 2016,ic 006274 002335 aa 000030 7100 04 tra 24,ic 002365 STATEMENT 1 ON LINE 379 else call finished (0); 002336 aa 6 00504 4501 00 stz pr6|324 002337 aa 004047 3520 04 epp2 2087,ic 006406 = 000002000000 002340 aa 003734 6700 04 tsp4 2012,ic 006274 STATEMENT 1 ON LINE 389 log_read_$update: entry (P_message_sequence, P_log_read_data_ptr, P_log_message_ptr, P_code); 002341 aa 000024 7100 04 tra 20,ic 002365 ENTRY TO log_read_$update STATEMENT 1 ON LINE 389 log_read_$update: entry (P_message_sequence, P_log_read_data_ptr, P_log_message_ptr, P_code); 002342 at 000004000035 002343 tt 000036000036 002344 ta 000035000000 002345 ta 002342000000 002346 da 000437300000 002347 aa 001460 6270 00 eax7 816 002350 aa 7 00034 3521 20 epp2 pr7|28,* 002351 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002352 aa 000010000000 002353 aa 000000000000 002354 aa 6 00032 3735 20 epp7 pr6|26,* 002355 aa 7 00002 3715 20 epp5 pr7|2,* 002356 aa 6 00156 6515 00 spri5 pr6|110 002357 aa 7 00004 3535 20 epp3 pr7|4,* 002360 aa 6 00152 2535 00 spri3 pr6|106 002361 aa 7 00006 3515 20 epp1 pr7|6,* 002362 aa 6 00154 2515 00 spri1 pr6|108 002363 aa 7 00010 3715 20 epp5 pr7|8,* 002364 aa 6 00160 6515 00 spri5 pr6|112 STATEMENT 1 ON LINE 392 call check_in_pointer; 002365 aa 003553 6700 04 tsp4 1899,ic 006140 STATEMENT 1 ON LINE 394 call update_procedure (); 002366 aa 002206 6700 04 tsp4 1158,ic 004574 STATEMENT 1 ON LINE 395 return; 002367 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO log_read_$hold_message STATEMENT 1 ON LINE 398 log_read_$hold_message: entry (P_log_read_data_ptr, P_log_message_ptr); 002370 at 000002000036 002371 ta 000036000000 002372 ta 002370000000 002373 da 000457300000 002374 aa 001460 6270 00 eax7 816 002375 aa 7 00034 3521 20 epp2 pr7|28,* 002376 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002377 aa 000004000000 002400 aa 000000000000 002401 aa 6 00032 3735 20 epp7 pr6|26,* 002402 aa 7 00002 3715 20 epp5 pr7|2,* 002403 aa 6 00152 6515 00 spri5 pr6|106 002404 aa 7 00004 3535 20 epp3 pr7|4,* 002405 aa 6 00154 2535 00 spri3 pr6|108 STATEMENT 1 ON LINE 401 call check_in_pointer; 002406 aa 003532 6700 04 tsp4 1882,ic 006140 STATEMENT 1 ON LINE 403 if log_read_data.call_procedures then do; 002407 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002410 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 002411 aa 000012 6000 04 tze 10,ic 002423 STATEMENT 1 ON LINE 404 call log_read_data.ev.hold_message (log_read_data.reader_data_ptr, P_log_message_ptr); 002412 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 002413 aa 6 00510 2521 00 spri2 pr6|328 002414 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 002415 aa 6 00512 2521 00 spri2 pr6|330 002416 aa 6 00506 6211 00 eax1 pr6|326 002417 aa 010000 4310 07 fld 4096,dl 002420 aa 7 00070 3521 00 epp2 pr7|56 log_read_data.hold_message 002421 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 405 return; 002422 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 406 end; STATEMENT 1 ON LINE 408 if log_read_data.allocate_copies then do; 002423 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 002424 aa 000040 6000 04 tze 32,ic 002464 STATEMENT 1 ON LINE 410 log_message_ptr = lookup_message (P_log_message_ptr); 002425 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 002426 aa 6 00510 2521 00 spri2 pr6|328 002427 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 002430 aa 6 00512 2521 00 spri2 pr6|330 002431 aa 6 00506 3521 00 epp2 pr6|326 002432 aa 010000 4310 07 fld 4096,dl 002433 aa 2 00000 7571 00 staq pr2|0 002434 aa 003061 6700 04 tsp4 1585,ic 005515 STATEMENT 1 ON LINE 411 call hold_message (log_message_ptr, P_log_message_ptr); 002435 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 002436 aa 6 00510 2521 00 spri2 pr6|328 002437 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 002440 aa 6 00512 2521 00 spri2 pr6|330 002441 aa 6 00506 3521 00 epp2 pr6|326 002442 aa 010000 4310 07 fld 4096,dl 002443 aa 2 00000 7571 00 staq pr2|0 002444 aa 002516 6700 04 tsp4 1358,ic 005162 STATEMENT 1 ON LINE 412 if log_message_ptr = log_read_data.latest_message.actual_ptr then log_read_data.latest_message = null (); 002445 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 002446 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002447 aa 7 00016 6771 00 eraq pr7|14 log_read_data.actual_ptr 002450 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002451 aa 000004 6010 04 tnz 4,ic 002455 002452 aa 775372 2370 04 ldaq -1286,ic 000044 = 077777000043 000001000000 002453 aa 7 00016 7571 00 staq pr7|14 log_read_data.actual_ptr 002454 aa 7 00020 7571 00 staq pr7|16 log_read_data.copy_ptr STATEMENT 1 ON LINE 414 if log_message_ptr = log_read_data.earlier_message.actual_ptr then log_read_data.earlier_message = null (); 002455 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 002456 aa 7 00022 6771 00 eraq pr7|18 log_read_data.actual_ptr 002457 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 002460 aa 000004 6010 04 tnz 4,ic 002464 002461 aa 775363 2370 04 ldaq -1293,ic 000044 = 077777000043 000001000000 002462 aa 7 00022 7571 00 staq pr7|18 log_read_data.actual_ptr 002463 aa 7 00024 7571 00 staq pr7|20 log_read_data.copy_ptr STATEMENT 1 ON LINE 416 end; STATEMENT 1 ON LINE 417 return; 002464 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO log_read_$free_message STATEMENT 1 ON LINE 420 log_read_$free_message: entry (P_log_read_data_ptr, P_log_message_ptr); 002465 ta 002370000000 002466 da 000477300000 002467 aa 001460 6270 00 eax7 816 002470 aa 7 00034 3521 20 epp2 pr7|28,* 002471 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002472 aa 000004000000 002473 aa 000000000000 002474 aa 6 00032 3735 20 epp7 pr6|26,* 002475 aa 7 00002 3715 20 epp5 pr7|2,* 002476 aa 6 00152 6515 00 spri5 pr6|106 002477 aa 7 00004 3535 20 epp3 pr7|4,* 002500 aa 6 00154 2535 00 spri3 pr6|108 STATEMENT 1 ON LINE 423 call check_in_pointer; 002501 aa 003437 6700 04 tsp4 1823,ic 006140 STATEMENT 1 ON LINE 425 if log_read_data.call_procedures then do; 002502 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002503 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 002504 aa 000012 6000 04 tze 10,ic 002516 STATEMENT 1 ON LINE 426 call log_read_data.ev.free_message (log_read_data.reader_data_ptr, P_log_message_ptr); 002505 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 002506 aa 6 00510 2521 00 spri2 pr6|328 002507 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 002510 aa 6 00512 2521 00 spri2 pr6|330 002511 aa 6 00506 6211 00 eax1 pr6|326 002512 aa 010000 4310 07 fld 4096,dl 002513 aa 7 00074 3521 00 epp2 pr7|60 log_read_data.free_message 002514 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 427 return; 002515 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 428 end; STATEMENT 1 ON LINE 430 if log_read_data.allocate_copies then do; 002516 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 002517 aa 000007 6000 04 tze 7,ic 002526 STATEMENT 1 ON LINE 431 call free_message (P_log_message_ptr); 002520 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 002521 aa 6 00476 2521 00 spri2 pr6|318 002522 aa 6 00474 3521 00 epp2 pr6|316 002523 aa 004000 4310 07 fld 2048,dl 002524 aa 2 00000 7571 00 staq pr2|0 002525 aa 002466 6700 04 tsp4 1334,ic 005213 STATEMENT 1 ON LINE 432 end; STATEMENT 1 ON LINE 433 return; 002526 aa 0 00631 7101 00 tra pr0|409 return_mac ENTRY TO log_read_$get_log_uid STATEMENT 1 ON LINE 436 log_read_$get_log_uid: entry (P_log_read_data_ptr, P_log_uid, P_code); 002527 at 000003000036 002530 tt 000033000035 002531 ta 002527000000 002532 da 000516300000 002533 aa 001460 6270 00 eax7 816 002534 aa 7 00034 3521 20 epp2 pr7|28,* 002535 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002536 aa 000006000000 002537 aa 000000000000 002540 aa 6 00032 3735 20 epp7 pr6|26,* 002541 aa 7 00002 3715 20 epp5 pr7|2,* 002542 aa 6 00152 6515 00 spri5 pr6|106 002543 aa 7 00006 3535 20 epp3 pr7|6,* 002544 aa 6 00160 2535 00 spri3 pr6|112 STATEMENT 1 ON LINE 439 call check_in_pointer; 002545 aa 003373 6700 04 tsp4 1787,ic 006140 STATEMENT 1 ON LINE 440 P_code = 0; 002546 aa 6 00160 4501 20 stz pr6|112,* P_code STATEMENT 1 ON LINE 441 P_log_uid = "0"b; 002547 aa 6 00032 3735 20 epp7 pr6|26,* 002550 aa 7 00004 4501 20 stz pr7|4,* P_log_uid STATEMENT 1 ON LINE 443 if log_read_data.call_procedures then do; 002551 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 002552 aa 5 00004 2351 00 lda pr5|4 log_read_data.call_procedures 002553 aa 000015 6000 04 tze 13,ic 002570 STATEMENT 1 ON LINE 444 call log_read_data.ev.get_log_uid (log_read_data.reader_data_ptr, P_log_uid, code); 002554 aa 5 00012 3521 00 epp2 pr5|10 log_read_data.reader_data_ptr 002555 aa 6 00510 2521 00 spri2 pr6|328 002556 aa 7 00004 3521 20 epp2 pr7|4,* P_log_uid 002557 aa 6 00512 2521 00 spri2 pr6|330 002560 aa 6 00101 3521 00 epp2 pr6|65 code 002561 aa 6 00514 2521 00 spri2 pr6|332 002562 aa 6 00506 6211 00 eax1 pr6|326 002563 aa 014000 4310 07 fld 6144,dl 002564 aa 5 00100 3521 00 epp2 pr5|64 log_read_data.get_log_uid 002565 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 445 call finished (code); 002566 aa 003624 3520 04 epp2 1940,ic 006412 = 000002000000 002567 aa 003505 6700 04 tsp4 1861,ic 006274 STATEMENT 1 ON LINE 446 end; STATEMENT 1 ON LINE 448 call hcs_$get_uid_seg (log_read_data.segments (1).ptr, P_log_uid, code); 002570 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002571 aa 7 00206 3521 00 epp2 pr7|134 log_read_data.ptr 002572 aa 6 00510 2521 00 spri2 pr6|328 002573 aa 6 00032 3715 20 epp5 pr6|26,* 002574 aa 5 00004 3521 20 epp2 pr5|4,* P_log_uid 002575 aa 6 00512 2521 00 spri2 pr6|330 002576 aa 6 00101 3521 00 epp2 pr6|65 code 002577 aa 6 00514 2521 00 spri2 pr6|332 002600 aa 6 00506 6211 00 eax1 pr6|326 002601 aa 014000 4310 07 fld 6144,dl 002602 aa 6 00044 3701 20 epp4 pr6|36,* 002603 la 4 00030 3521 20 epp2 pr4|24,* hcs_$get_uid_seg 002604 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 450 call finished (code); 002605 aa 003605 3520 04 epp2 1925,ic 006412 = 000002000000 002606 aa 003466 6700 04 tsp4 1846,ic 006274 STATEMENT 1 ON LINE 453 log_read_$register: entry (P_log_read_data_ptr, P_process_id, P_event_channel, P_code); 002607 aa 000020 7100 04 tra 16,ic 002627 ENTRY TO log_read_$register STATEMENT 1 ON LINE 453 log_read_$register: entry (P_log_read_data_ptr, P_process_id, P_event_channel, P_code); 002610 at 000004000036 002611 tt 000033000034 002612 ta 000035000000 002613 ta 002610000000 002614 da 000531300000 002615 aa 001460 6270 00 eax7 816 002616 aa 7 00034 3521 20 epp2 pr7|28,* 002617 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002620 aa 000010000000 002621 aa 000000000000 002622 aa 6 00032 3735 20 epp7 pr6|26,* 002623 aa 7 00002 3715 20 epp5 pr7|2,* 002624 aa 6 00152 6515 00 spri5 pr6|106 002625 aa 7 00010 3535 20 epp3 pr7|8,* 002626 aa 6 00160 2535 00 spri3 pr6|112 STATEMENT 1 ON LINE 456 call check_in_pointer; 002627 aa 003311 6700 04 tsp4 1737,ic 006140 STATEMENT 1 ON LINE 458 if log_read_data.call_procedures then do; 002630 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002631 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 002632 aa 000020 6000 04 tze 16,ic 002652 STATEMENT 1 ON LINE 459 call log_read_data.ev.register (log_read_data.reader_data_ptr, P_process_id, P_event_channel, code); 002633 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 002634 aa 6 00510 2521 00 spri2 pr6|328 002635 aa 6 00032 3715 20 epp5 pr6|26,* 002636 aa 5 00004 3521 20 epp2 pr5|4,* P_process_id 002637 aa 6 00512 2521 00 spri2 pr6|330 002640 aa 5 00006 3521 20 epp2 pr5|6,* P_event_channel 002641 aa 6 00514 2521 00 spri2 pr6|332 002642 aa 6 00101 3521 00 epp2 pr6|65 code 002643 aa 6 00516 2521 00 spri2 pr6|334 002644 aa 6 00506 6211 00 eax1 pr6|326 002645 aa 020000 4310 07 fld 8192,dl 002646 aa 7 00104 3521 00 epp2 pr7|68 log_read_data.register 002647 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 460 call finished (code); 002650 aa 003542 3520 04 epp2 1890,ic 006412 = 000002000000 002651 aa 003423 6700 04 tsp4 1811,ic 006274 STATEMENT 1 ON LINE 461 end; STATEMENT 1 ON LINE 463 call log_wakeup_$register (log_read_data.segments (1).ptr, P_process_id, P_event_channel, code); 002652 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002653 aa 7 00206 3521 00 epp2 pr7|134 log_read_data.ptr 002654 aa 6 00510 2521 00 spri2 pr6|328 002655 aa 6 00032 3715 20 epp5 pr6|26,* 002656 aa 5 00004 3521 20 epp2 pr5|4,* P_process_id 002657 aa 6 00512 2521 00 spri2 pr6|330 002660 aa 5 00006 3521 20 epp2 pr5|6,* P_event_channel 002661 aa 6 00514 2521 00 spri2 pr6|332 002662 aa 6 00101 3521 00 epp2 pr6|65 code 002663 aa 6 00516 2521 00 spri2 pr6|334 002664 aa 6 00506 6211 00 eax1 pr6|326 002665 aa 020000 4310 07 fld 8192,dl 002666 aa 6 00044 3701 20 epp4 pr6|36,* 002667 la 4 00052 3521 20 epp2 pr4|42,* log_wakeup_$register 002670 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 464 call finished (code); 002671 aa 003521 3520 04 epp2 1873,ic 006412 = 000002000000 002672 aa 003402 6700 04 tsp4 1794,ic 006274 STATEMENT 1 ON LINE 467 log_read_$deregister: entry (P_log_read_data_ptr, P_process_id, P_event_channel, P_code); 002673 aa 000015 7100 04 tra 13,ic 002710 ENTRY TO log_read_$deregister STATEMENT 1 ON LINE 467 log_read_$deregister: entry (P_log_read_data_ptr, P_process_id, P_event_channel, P_code); 002674 ta 002610000000 002675 da 000545300000 002676 aa 001460 6270 00 eax7 816 002677 aa 7 00034 3521 20 epp2 pr7|28,* 002700 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 002701 aa 000010000000 002702 aa 000000000000 002703 aa 6 00032 3735 20 epp7 pr6|26,* 002704 aa 7 00002 3715 20 epp5 pr7|2,* 002705 aa 6 00152 6515 00 spri5 pr6|106 002706 aa 7 00010 3535 20 epp3 pr7|8,* 002707 aa 6 00160 2535 00 spri3 pr6|112 STATEMENT 1 ON LINE 470 call check_in_pointer; 002710 aa 003230 6700 04 tsp4 1688,ic 006140 STATEMENT 1 ON LINE 472 if log_read_data.call_procedures then do; 002711 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002712 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 002713 aa 000020 6000 04 tze 16,ic 002733 STATEMENT 1 ON LINE 473 call log_read_data.ev.deregister (log_read_data.reader_data_ptr, P_process_id, P_event_channel, code); 002714 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 002715 aa 6 00510 2521 00 spri2 pr6|328 002716 aa 6 00032 3715 20 epp5 pr6|26,* 002717 aa 5 00004 3521 20 epp2 pr5|4,* P_process_id 002720 aa 6 00512 2521 00 spri2 pr6|330 002721 aa 5 00006 3521 20 epp2 pr5|6,* P_event_channel 002722 aa 6 00514 2521 00 spri2 pr6|332 002723 aa 6 00101 3521 00 epp2 pr6|65 code 002724 aa 6 00516 2521 00 spri2 pr6|334 002725 aa 6 00506 6211 00 eax1 pr6|326 002726 aa 020000 4310 07 fld 8192,dl 002727 aa 7 00110 3521 00 epp2 pr7|72 log_read_data.deregister 002730 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 474 call finished (code); 002731 aa 003461 3520 04 epp2 1841,ic 006412 = 000002000000 002732 aa 003342 6700 04 tsp4 1762,ic 006274 STATEMENT 1 ON LINE 475 end; STATEMENT 1 ON LINE 477 call log_wakeup_$deregister (log_read_data.segments (1).ptr, P_process_id, P_event_channel, code); 002733 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002734 aa 7 00206 3521 00 epp2 pr7|134 log_read_data.ptr 002735 aa 6 00510 2521 00 spri2 pr6|328 002736 aa 6 00032 3715 20 epp5 pr6|26,* 002737 aa 5 00004 3521 20 epp2 pr5|4,* P_process_id 002740 aa 6 00512 2521 00 spri2 pr6|330 002741 aa 5 00006 3521 20 epp2 pr5|6,* P_event_channel 002742 aa 6 00514 2521 00 spri2 pr6|332 002743 aa 6 00101 3521 00 epp2 pr6|65 code 002744 aa 6 00516 2521 00 spri2 pr6|334 002745 aa 6 00506 6211 00 eax1 pr6|326 002746 aa 020000 4310 07 fld 8192,dl 002747 aa 6 00044 3701 20 epp4 pr6|36,* 002750 la 4 00054 3521 20 epp2 pr4|44,* log_wakeup_$deregister 002751 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 478 call finished (code); 002752 aa 003440 3520 04 epp2 1824,ic 006412 = 000002000000 002753 aa 003321 6700 04 tsp4 1745,ic 006274 STATEMENT 1 ON LINE 987 MAIN_RETURN: return; 002754 aa 0 00631 7101 00 tra pr0|409 return_mac STATEMENT 1 ON LINE 1295 end log_read_; BEGIN PROCEDURE sequence_search ENTRY TO sequence_search STATEMENT 1 ON LINE 481 sequence_search: procedure (P_after_sw); 002755 aa 6 00174 6501 00 spri4 pr6|124 002756 aa 6 00176 2521 00 spri2 pr6|126 STATEMENT 1 ON LINE 490 message_sequence = P_message_sequence; 002757 aa 6 00156 2361 20 ldq pr6|110,* P_message_sequence 002760 aa 6 00202 7561 00 stq pr6|130 message_sequence STATEMENT 1 ON LINE 492 call set_current_log (log_read_data.very_last_log_idx); 002761 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 002762 aa 7 00123 3521 00 epp2 pr7|83 log_read_data.very_last_log_idx 002763 aa 6 00560 2521 00 spri2 pr6|368 002764 aa 6 00556 3521 00 epp2 pr6|366 002765 aa 004000 4310 07 fld 2048,dl 002766 aa 2 00000 7571 00 staq pr2|0 002767 aa 001341 6700 04 tsp4 737,ic 004330 STATEMENT 1 ON LINE 493 log_read_data.very_last_sequence = log_segment.last_sequence; 002770 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 002771 aa 7 00057 2361 00 ldq pr7|47 log_segment.last_sequence 002772 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 002773 aa 5 00121 7561 00 stq pr5|81 log_read_data.very_last_sequence STATEMENT 1 ON LINE 495 if P_after_sw then do; 002774 aa 6 00176 3535 20 epp3 pr6|126,* 002775 aa 3 00002 2351 20 lda pr3|2,* P_after_sw 002776 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 002777 aa 6 00564 7551 00 sta pr6|372 P_after_sw 003000 aa 000041 6000 04 tze 33,ic 003041 STATEMENT 1 ON LINE 496 if (message_sequence <= log_read_data.very_first_sequence) then do; 003001 aa 6 00202 2361 00 ldq pr6|130 message_sequence 003002 aa 5 00120 1161 00 cmpq pr5|80 log_read_data.very_first_sequence 003003 aa 000027 6054 04 tpnz 23,ic 003032 STATEMENT 1 ON LINE 497 call set_current_log (log_read_data.very_first_log_idx); 003004 aa 5 00122 3521 00 epp2 pr5|82 log_read_data.very_first_log_idx 003005 aa 6 00560 2521 00 spri2 pr6|368 003006 aa 6 00556 3521 00 epp2 pr6|366 003007 aa 004000 4310 07 fld 2048,dl 003010 aa 2 00000 7571 00 staq pr2|0 003011 aa 001317 6700 04 tsp4 719,ic 004330 STATEMENT 1 ON LINE 498 log_message_ptr = null (); 003012 aa 775032 2370 04 ldaq -1510,ic 000044 = 077777000043 000001000000 003013 aa 6 00144 7571 00 staq pr6|100 log_message_ptr STATEMENT 1 ON LINE 499 call log_position_$next_message (log_segment_ptr, log_message_ptr, ("0"b)); 003014 aa 000000 2350 07 lda 0,dl 003015 aa 6 00565 7551 00 sta pr6|373 003016 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 003017 aa 6 00570 2521 00 spri2 pr6|376 003020 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 003021 aa 6 00572 2521 00 spri2 pr6|378 003022 aa 6 00565 3521 00 epp2 pr6|373 003023 aa 6 00574 2521 00 spri2 pr6|380 003024 aa 6 00566 6211 00 eax1 pr6|374 003025 aa 014000 4310 07 fld 6144,dl 003026 aa 6 00044 3701 20 epp4 pr6|36,* 003027 la 4 00044 3521 20 epp2 pr4|36,* log_position_$next_message 003030 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 500 end; 003031 aa 000050 7100 04 tra 40,ic 003101 STATEMENT 1 ON LINE 502 else if (message_sequence > log_read_data.very_last_sequence) then log_message_ptr = null (); 003032 aa 5 00121 1161 00 cmpq pr5|81 log_read_data.very_last_sequence 003033 aa 000004 6044 04 tmoz 4,ic 003037 003034 aa 775010 2370 04 ldaq -1528,ic 000044 = 077777000043 000001000000 003035 aa 6 00144 7571 00 staq pr6|100 log_message_ptr 003036 aa 000043 7100 04 tra 35,ic 003101 STATEMENT 1 ON LINE 505 else call search_for_sequence (); 003037 aa 000043 6700 04 tsp4 35,ic 003102 STATEMENT 1 ON LINE 506 end; 003040 aa 000041 7100 04 tra 33,ic 003101 STATEMENT 1 ON LINE 508 else if ^P_after_sw then do; 003041 aa 000040 6010 04 tnz 32,ic 003101 STATEMENT 1 ON LINE 509 if (message_sequence >= log_read_data.very_last_sequence) then do; 003042 aa 6 00202 2361 00 ldq pr6|130 message_sequence 003043 aa 5 00121 1161 00 cmpq pr5|81 log_read_data.very_last_sequence 003044 aa 000027 6040 04 tmi 23,ic 003073 STATEMENT 1 ON LINE 510 call set_current_log (log_read_data.very_last_log_idx); 003045 aa 5 00123 3521 00 epp2 pr5|83 log_read_data.very_last_log_idx 003046 aa 6 00560 2521 00 spri2 pr6|368 003047 aa 6 00556 3521 00 epp2 pr6|366 003050 aa 004000 4310 07 fld 2048,dl 003051 aa 2 00000 7571 00 staq pr2|0 003052 aa 001256 6700 04 tsp4 686,ic 004330 STATEMENT 1 ON LINE 511 log_message_ptr = null (); 003053 aa 774771 2370 04 ldaq -1543,ic 000044 = 077777000043 000001000000 003054 aa 6 00144 7571 00 staq pr6|100 log_message_ptr STATEMENT 1 ON LINE 512 call log_position_$prev_message (log_segment_ptr, log_message_ptr, ("0"b)); 003055 aa 000000 2350 07 lda 0,dl 003056 aa 6 00564 7551 00 sta pr6|372 003057 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 003060 aa 6 00570 2521 00 spri2 pr6|376 003061 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 003062 aa 6 00572 2521 00 spri2 pr6|378 003063 aa 6 00564 3521 00 epp2 pr6|372 003064 aa 6 00574 2521 00 spri2 pr6|380 003065 aa 6 00566 6211 00 eax1 pr6|374 003066 aa 014000 4310 07 fld 6144,dl 003067 aa 6 00044 3701 20 epp4 pr6|36,* 003070 la 4 00046 3521 20 epp2 pr4|38,* log_position_$prev_message 003071 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 513 end; 003072 aa 000007 7100 04 tra 7,ic 003101 STATEMENT 1 ON LINE 515 else if (message_sequence < log_read_data.very_first_sequence) then log_message_ptr = null (); 003073 aa 5 00120 1161 00 cmpq pr5|80 log_read_data.very_first_sequence 003074 aa 000004 6050 04 tpl 4,ic 003100 003075 aa 774747 2370 04 ldaq -1561,ic 000044 = 077777000043 000001000000 003076 aa 6 00144 7571 00 staq pr6|100 log_message_ptr 003077 aa 000002 7100 04 tra 2,ic 003101 STATEMENT 1 ON LINE 518 else call search_for_sequence (); 003100 aa 000002 6700 04 tsp4 2,ic 003102 STATEMENT 1 ON LINE 519 end; STATEMENT 1 ON LINE 521 return; 003101 aa 6 00174 6101 00 rtcd pr6|124 STATEMENT 1 ON LINE 643 end sequence_search; BEGIN PROCEDURE search_for_sequence ENTRY TO search_for_sequence STATEMENT 1 ON LINE 528 search_for_sequence: procedure (); 003102 aa 6 00204 6501 00 spri4 pr6|132 STATEMENT 1 ON LINE 536 log_message_ptr = null (); 003103 aa 774741 2370 04 ldaq -1567,ic 000044 = 077777000043 000001000000 003104 aa 6 00144 7571 00 staq pr6|100 log_message_ptr STATEMENT 1 ON LINE 542 call look_for_log_segment (log_read_data.very_last_log_idx, log_read_data.very_first_log_idx); 003105 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 003106 aa 7 00123 3521 00 epp2 pr7|83 log_read_data.very_last_log_idx 003107 aa 6 00600 2521 00 spri2 pr6|384 003110 aa 7 00122 3521 00 epp2 pr7|82 log_read_data.very_first_log_idx 003111 aa 6 00602 2521 00 spri2 pr6|386 003112 aa 6 00576 3521 00 epp2 pr6|382 003113 aa 010000 4310 07 fld 4096,dl 003114 aa 2 00000 7571 00 staq pr2|0 003115 aa 001133 6700 04 tsp4 603,ic 004250 STATEMENT 1 ON LINE 543 if log_idx = 0 /* all the log segments damaged? */ then return; 003116 aa 6 00121 2361 00 ldq pr6|81 log_idx 003117 aa 000002 6010 04 tnz 2,ic 003121 003120 aa 6 00204 6101 00 rtcd pr6|132 STATEMENT 1 ON LINE 545 else if message_sequence >= log_segment.first_sequence & message_sequence <= log_segment.last_sequence then goto call_log_position; 003121 aa 6 00202 2361 00 ldq pr6|130 message_sequence 003122 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 003123 aa 7 00056 1161 00 cmpq pr7|46 log_segment.first_sequence 003124 aa 000003 6040 04 tmi 3,ic 003127 003125 aa 7 00057 1161 00 cmpq pr7|47 log_segment.last_sequence 003126 aa 000146 6044 04 tmoz 102,ic 003274 STATEMENT 1 ON LINE 550 found = "0"b; 003127 aa 6 00212 4501 00 stz pr6|138 found STATEMENT 1 ON LINE 552 low_idx = log_idx + 1; 003130 aa 6 00121 2361 00 ldq pr6|81 log_idx 003131 aa 000001 0760 07 adq 1,dl 003132 aa 6 00214 7561 00 stq pr6|140 low_idx STATEMENT 1 ON LINE 553 high_idx = log_read_data.very_first_log_idx; 003133 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 003134 aa 5 00122 2361 00 ldq pr5|82 log_read_data.very_first_log_idx 003135 aa 6 00215 7561 00 stq pr6|141 high_idx STATEMENT 1 ON LINE 556 do while ((low_idx <= high_idx) & ^found); 003136 aa 6 00212 2351 00 lda pr6|138 found 003137 aa 0 00002 6751 00 era pr0|2 = 400000000000 003140 aa 6 00606 7551 00 sta pr6|390 003141 aa 000043 6000 04 tze 35,ic 003204 003142 aa 6 00214 2361 00 ldq pr6|140 low_idx 003143 aa 6 00215 1161 00 cmpq pr6|141 high_idx 003144 aa 000040 6054 04 tpnz 32,ic 003204 STATEMENT 1 ON LINE 558 test_idx = divide ((high_idx - low_idx), 2, 17, 0) + low_idx; 003145 aa 6 00215 2361 00 ldq pr6|141 high_idx 003146 aa 6 00214 1761 00 sbq pr6|140 low_idx 003147 aa 000002 5060 07 div 2,dl 003150 aa 6 00214 0761 00 adq pr6|140 low_idx 003151 aa 6 00213 7561 00 stq pr6|139 test_idx STATEMENT 1 ON LINE 571 call look_for_log_segment (test_idx, high_idx); 003152 aa 003202 3520 04 epp2 1666,ic 006354 = 000004000000 003153 aa 001075 6700 04 tsp4 573,ic 004250 STATEMENT 1 ON LINE 572 if log_idx = 0 /* unable to get any log segment? */ then high_idx = test_idx; 003154 aa 6 00121 2361 00 ldq pr6|81 log_idx 003155 aa 000004 6010 04 tnz 4,ic 003161 003156 aa 6 00213 2361 00 ldq pr6|139 test_idx 003157 aa 6 00215 7561 00 stq pr6|141 high_idx 003160 aa 777756 7100 04 tra -18,ic 003136 STATEMENT 1 ON LINE 582 else do; STATEMENT 1 ON LINE 587 if message_sequence >= log_segment.first_sequence & message_sequence <= log_segment.last_sequence then found = "1"b; 003161 aa 6 00202 2361 00 ldq pr6|130 message_sequence 003162 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 003163 aa 7 00056 1161 00 cmpq pr7|46 log_segment.first_sequence 003164 aa 000006 6040 04 tmi 6,ic 003172 003165 aa 7 00057 1161 00 cmpq pr7|47 log_segment.last_sequence 003166 aa 000004 6054 04 tpnz 4,ic 003172 003167 aa 400000 2350 03 lda 131072,du 003170 aa 6 00212 7551 00 sta pr6|138 found 003171 aa 777745 7100 04 tra -27,ic 003136 STATEMENT 1 ON LINE 589 else if message_sequence < log_segment.last_sequence then low_idx = log_idx + 1; 003172 aa 7 00057 1161 00 cmpq pr7|47 log_segment.last_sequence 003173 aa 000005 6050 04 tpl 5,ic 003200 003174 aa 6 00121 2361 00 ldq pr6|81 log_idx 003175 aa 000001 0760 07 adq 1,dl 003176 aa 6 00214 7561 00 stq pr6|140 low_idx 003177 aa 777737 7100 04 tra -33,ic 003136 STATEMENT 1 ON LINE 591 else high_idx = test_idx - 1; 003200 aa 6 00213 2361 00 ldq pr6|139 test_idx 003201 aa 000001 1760 07 sbq 1,dl 003202 aa 6 00215 7561 00 stq pr6|141 high_idx STATEMENT 1 ON LINE 592 end; STATEMENT 1 ON LINE 593 end; 003203 aa 777733 7100 04 tra -37,ic 003136 STATEMENT 1 ON LINE 602 if ^found then if P_after_sw then if message_sequence > log_segment.last_sequence then do; 003204 aa 400000 3150 03 cana 131072,du 003205 aa 000054 6000 04 tze 44,ic 003261 003206 aa 6 00176 3735 20 epp7 pr6|126,* 003207 aa 7 00002 2351 20 lda pr7|2,* P_after_sw 003210 aa 400000 3150 03 cana 131072,du 003211 aa 000025 6000 04 tze 21,ic 003236 003212 aa 6 00202 2361 00 ldq pr6|130 message_sequence 003213 aa 6 00142 3715 20 epp5 pr6|98,* log_segment_ptr 003214 aa 5 00057 1161 00 cmpq pr5|47 log_segment.last_sequence 003215 aa 000044 6044 04 tmoz 36,ic 003261 STATEMENT 1 ON LINE 606 test_idx = max (test_idx - 1, log_read_data.very_last_log_idx); 003216 aa 6 00213 2361 00 ldq pr6|139 test_idx 003217 aa 000001 1760 07 sbq 1,dl 003220 aa 6 00134 3535 20 epp3 pr6|92,* log_read_data_ptr 003221 aa 3 00123 1161 00 cmpq pr3|83 log_read_data.very_last_log_idx 003222 aa 000002 6050 04 tpl 2,ic 003224 003223 aa 3 00123 2361 00 ldq pr3|83 log_read_data.very_last_log_idx 003224 aa 6 00213 7561 00 stq pr6|139 test_idx STATEMENT 1 ON LINE 608 call look_for_log_segment (test_idx, log_read_data.very_last_log_idx); 003225 aa 6 00213 3521 00 epp2 pr6|139 test_idx 003226 aa 6 00600 2521 00 spri2 pr6|384 003227 aa 3 00123 3521 00 epp2 pr3|83 log_read_data.very_last_log_idx 003230 aa 6 00602 2521 00 spri2 pr6|386 003231 aa 6 00576 3521 00 epp2 pr6|382 003232 aa 010000 4310 07 fld 4096,dl 003233 aa 2 00000 7571 00 staq pr2|0 003234 aa 001014 6700 04 tsp4 524,ic 004250 STATEMENT 1 ON LINE 609 end; STATEMENT 1 ON LINE 610 else ; 003235 aa 000024 7100 04 tra 20,ic 003261 STATEMENT 1 ON LINE 612 else if message_sequence < log_segment.first_sequence then do; 003236 aa 6 00202 2361 00 ldq pr6|130 message_sequence 003237 aa 6 00142 3715 20 epp5 pr6|98,* log_segment_ptr 003240 aa 5 00056 1161 00 cmpq pr5|46 log_segment.first_sequence 003241 aa 000020 6050 04 tpl 16,ic 003261 STATEMENT 1 ON LINE 614 test_idx = min (test_idx + 1, log_read_data.very_first_log_idx); 003242 aa 6 00213 2361 00 ldq pr6|139 test_idx 003243 aa 000001 0760 07 adq 1,dl 003244 aa 6 00134 3535 20 epp3 pr6|92,* log_read_data_ptr 003245 aa 3 00122 1161 00 cmpq pr3|82 log_read_data.very_first_log_idx 003246 aa 000002 6040 04 tmi 2,ic 003250 003247 aa 3 00122 2361 00 ldq pr3|82 log_read_data.very_first_log_idx 003250 aa 6 00213 7561 00 stq pr6|139 test_idx STATEMENT 1 ON LINE 616 call look_for_log_segment (test_idx, log_read_data.very_first_log_idx); 003251 aa 6 00213 3521 00 epp2 pr6|139 test_idx 003252 aa 6 00600 2521 00 spri2 pr6|384 003253 aa 3 00122 3521 00 epp2 pr3|82 log_read_data.very_first_log_idx 003254 aa 6 00602 2521 00 spri2 pr6|386 003255 aa 6 00576 3521 00 epp2 pr6|382 003256 aa 010000 4310 07 fld 4096,dl 003257 aa 2 00000 7571 00 staq pr2|0 003260 aa 000770 6700 04 tsp4 504,ic 004250 STATEMENT 1 ON LINE 617 end; STATEMENT 1 ON LINE 621 if log_segment_ptr = null () then return; 003261 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 003262 aa 774562 6770 04 eraq -1678,ic 000044 = 077777000043 000001000000 003263 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 003264 aa 000002 6010 04 tnz 2,ic 003266 003265 aa 6 00204 6101 00 rtcd pr6|132 STATEMENT 1 ON LINE 627 if message_sequence >= log_segment.first_sequence & message_sequence <= log_segment.last_sequence then do; 003266 aa 6 00202 2361 00 ldq pr6|130 message_sequence 003267 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 003270 aa 7 00056 1161 00 cmpq pr7|46 log_segment.first_sequence 003271 aa 000026 6040 04 tmi 22,ic 003317 003272 aa 7 00057 1161 00 cmpq pr7|47 log_segment.last_sequence 003273 aa 000024 6054 04 tpnz 20,ic 003317 STATEMENT 1 ON LINE 629 call_log_position: call log_position_$find_sequence (log_segment_ptr, message_sequence, P_after_sw, log_message_ptr, ("0"b)); 003274 aa 000000 2350 07 lda 0,dl 003275 aa 6 00606 7551 00 sta pr6|390 003276 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 003277 aa 6 00612 2521 00 spri2 pr6|394 003300 aa 6 00202 3521 00 epp2 pr6|130 message_sequence 003301 aa 6 00614 2521 00 spri2 pr6|396 003302 aa 6 00176 3715 20 epp5 pr6|126,* 003303 aa 5 00002 3521 20 epp2 pr5|2,* P_after_sw 003304 aa 6 00616 2521 00 spri2 pr6|398 003305 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 003306 aa 6 00620 2521 00 spri2 pr6|400 003307 aa 6 00606 3521 00 epp2 pr6|390 003310 aa 6 00622 2521 00 spri2 pr6|402 003311 aa 6 00610 6211 00 eax1 pr6|392 003312 aa 024000 4310 07 fld 10240,dl 003313 aa 6 00044 3701 20 epp4 pr6|36,* 003314 la 4 00040 3521 20 epp2 pr4|32,* log_position_$find_sequence 003315 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 631 end; 003316 aa 000040 7100 04 tra 32,ic 003356 STATEMENT 1 ON LINE 632 else do; STATEMENT 1 ON LINE 635 if P_after_sw then call log_position_$next_message (log_segment_ptr, log_message_ptr, ("0"b)); 003317 aa 6 00176 3715 20 epp5 pr6|126,* 003320 aa 5 00002 2351 20 lda pr5|2,* P_after_sw 003321 aa 400000 3150 03 cana 131072,du 003322 aa 000017 6000 04 tze 15,ic 003341 003323 aa 000000 2350 07 lda 0,dl 003324 aa 6 00606 7551 00 sta pr6|390 003325 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 003326 aa 6 00600 2521 00 spri2 pr6|384 003327 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 003330 aa 6 00602 2521 00 spri2 pr6|386 003331 aa 6 00606 3521 00 epp2 pr6|390 003332 aa 6 00604 2521 00 spri2 pr6|388 003333 aa 6 00576 6211 00 eax1 pr6|382 003334 aa 014000 4310 07 fld 6144,dl 003335 aa 6 00044 3701 20 epp4 pr6|36,* 003336 la 4 00044 3521 20 epp2 pr4|36,* log_position_$next_message 003337 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 003340 aa 000016 7100 04 tra 14,ic 003356 STATEMENT 1 ON LINE 637 else call log_position_$prev_message (log_segment_ptr, log_message_ptr, ("0"b)); 003341 aa 000000 2350 07 lda 0,dl 003342 aa 6 00606 7551 00 sta pr6|390 003343 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 003344 aa 6 00600 2521 00 spri2 pr6|384 003345 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 003346 aa 6 00602 2521 00 spri2 pr6|386 003347 aa 6 00606 3521 00 epp2 pr6|390 003350 aa 6 00604 2521 00 spri2 pr6|388 003351 aa 6 00576 6211 00 eax1 pr6|382 003352 aa 014000 4310 07 fld 6144,dl 003353 aa 6 00044 3701 20 epp4 pr6|36,* 003354 la 4 00046 3521 20 epp2 pr4|38,* log_position_$prev_message 003355 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 638 end; STATEMENT 1 ON LINE 640 end search_for_sequence; 003356 aa 6 00204 6101 00 rtcd pr6|132 END PROCEDURE search_for_sequence END PROCEDURE sequence_search BEGIN PROCEDURE set_entry_variable ENTRY TO set_entry_variable STATEMENT 1 ON LINE 646 set_entry_variable: procedure (P_entry_variable, P_procedure_name, P_entry_name); 003357 aa 6 00216 6501 00 spri4 pr6|142 003360 aa 6 00220 2521 00 spri2 pr6|144 003361 aa 2 00002 3521 01 epp2 pr2|2,au 003362 aa 6 00222 2521 00 spri2 pr6|146 003363 aa 2 00002 2361 20 ldq pr2|2,* 003364 aa 000002 6040 04 tmi 2,ic 003366 003365 aa 777777 3760 07 anq 262143,dl 003366 aa 0 00250 3761 00 anq pr0|168 = 000077777777 003367 aa 6 00624 7561 00 stq pr6|404 003370 aa 2 00004 2361 20 ldq pr2|4,* 003371 aa 000002 6040 04 tmi 2,ic 003373 003372 aa 777777 3760 07 anq 262143,dl 003373 aa 0 00250 3761 00 anq pr0|168 = 000077777777 003374 aa 6 00625 7561 00 stq pr6|405 STATEMENT 1 ON LINE 653 RETRY: P_entry_variable = cv_entry_ (P_procedure_name || "$" || P_entry_name, codeptr (log_read_), code); 003375 aa 6 00624 2361 00 ldq pr6|404 003376 aa 000001 0760 07 adq 1,dl 003377 aa 6 00627 7561 00 stq pr6|407 003400 aa 6 00625 0761 00 adq pr6|405 003401 aa 6 00630 7561 00 stq pr6|408 003402 aa 524000 2760 03 orq 174080,du 003403 aa 6 00626 7561 00 stq pr6|406 003404 aa 6 00627 2361 00 ldq pr6|407 003405 aa 0 00551 7001 00 tsx0 pr0|361 alloc_char_temp 003406 aa 6 00220 3735 20 epp7 pr6|144,* 003407 aa 7 00004 3715 20 epp5 pr7|4,* 003410 aa 6 00624 2351 00 lda pr6|404 003411 aa 040 140 100 540 mlr (pr,rl),(pr,rl),fill(040) 003412 aa 5 00000 00 0005 desc9a pr5|0,al P_procedure_name 003413 aa 2 00000 00 0005 desc9a pr2|0,al 003414 aa 040 105 100 404 mlr (ic),(pr,al),fill(040) 003415 aa 003002 00 0001 desc9a 1538,1 006416 = 044000000000 003416 aa 2 00000 00 0001 desc9a pr2|0,1 003417 aa 6 00630 2361 00 ldq pr6|408 003420 aa 0 00606 7001 00 tsx0 pr0|390 cat_realloc_chars 003421 aa 6 00627 2351 00 lda pr6|407 003422 aa 7 00006 3535 20 epp3 pr7|6,* 003423 aa 6 00625 2361 00 ldq pr6|405 003424 aa 040 145 100 540 mlr (pr,rl),(pr,rl,al),fill(040) 003425 aa 3 00000 00 0006 desc9a pr3|0,ql P_entry_name 003426 aa 2 00000 00 0006 desc9a pr2|0,ql 003427 aa 6 00640 2521 00 spri2 pr6|416 003430 aa 774544 3514 04 epp1 -1692,ic 000174 = 001460627000 003431 aa 6 00634 2515 00 spri1 pr6|412 003432 aa 6 00634 3521 00 epp2 pr6|412 003433 aa 6 00642 2521 00 spri2 pr6|418 003434 aa 6 00101 3521 00 epp2 pr6|65 code 003435 aa 6 00644 2521 00 spri2 pr6|420 003436 aa 7 00002 3521 20 epp2 pr7|2,* P_entry_variable 003437 aa 6 00646 2521 00 spri2 pr6|422 003440 aa 6 00626 3521 00 epp2 pr6|406 003441 aa 6 00650 2521 00 spri2 pr6|424 003442 aa 774374 3520 04 epp2 -1796,ic 000036 = 464000000000 003443 aa 6 00652 2521 00 spri2 pr6|426 003444 aa 774371 3520 04 epp2 -1799,ic 000035 = 404000000043 003445 aa 6 00654 2521 00 spri2 pr6|428 003446 aa 774363 3520 04 epp2 -1805,ic 000031 = 500000000000 003447 aa 6 00656 2521 00 spri2 pr6|430 003450 aa 6 00636 6211 00 eax1 pr6|414 003451 aa 020000 4310 07 fld 8192,dl 003452 aa 6 00044 3701 20 epp4 pr6|36,* 003453 la 4 00024 3521 20 epp2 pr4|20,* cv_entry_ 003454 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 655 if (code = 0) then return; 003455 aa 0 01014 7001 00 tsx0 pr0|524 shorten_stack 003456 aa 6 00101 2361 00 ldq pr6|65 code 003457 aa 000002 6010 04 tnz 2,ic 003461 003460 aa 6 00216 6101 00 rtcd pr6|142 STATEMENT 1 ON LINE 657 call sub_err_ (code, "log_read_", ACTION_CAN_RESTART, null (), (0), "Failed to snap link to ^a$^a.", P_procedure_name, P_entry_name); 003461 aa 774367 2370 04 ldaq -1801,ic 000050 = 154157147137 162145141144 003462 aa 6 00636 7571 00 staq pr6|414 003463 aa 137000 2350 03 lda 48640,du 003464 aa 6 00640 7551 00 sta pr6|416 003465 aa 774357 3734 24 epp7 -1809,ic* 003466 aa 6 00634 6535 00 spri7 pr6|412 003467 aa 6 00626 4501 00 stz pr6|406 003470 aa 000 100 100 404 mlr (ic),(pr),fill(000) 003471 aa 774440 00 0040 desc9a -1760,32 000130 = 106141151154 003472 aa 6 00660 00 0040 desc9a pr6|432,32 003473 aa 6 00101 3521 00 epp2 pr6|65 code 003474 aa 6 00672 2521 00 spri2 pr6|442 003475 aa 6 00636 3521 00 epp2 pr6|414 003476 aa 6 00674 2521 00 spri2 pr6|444 003477 aa 774331 3520 04 epp2 -1831,ic 000030 = 000000000000 003500 aa 6 00676 2521 00 spri2 pr6|446 003501 aa 6 00634 3521 00 epp2 pr6|412 003502 aa 6 00700 2521 00 spri2 pr6|448 003503 aa 6 00626 3521 00 epp2 pr6|406 003504 aa 6 00702 2521 00 spri2 pr6|450 003505 aa 6 00660 3521 00 epp2 pr6|432 003506 aa 6 00704 2521 00 spri2 pr6|452 003507 aa 6 00220 3715 20 epp5 pr6|144,* 003510 aa 5 00004 3521 20 epp2 pr5|4,* P_procedure_name 003511 aa 6 00706 2521 00 spri2 pr6|454 003512 aa 5 00006 3521 20 epp2 pr5|6,* P_entry_name 003513 aa 6 00710 2521 00 spri2 pr6|456 003514 aa 774321 3520 04 epp2 -1839,ic 000035 = 404000000043 003515 aa 6 00712 2521 00 spri2 pr6|458 003516 aa 774276 3520 04 epp2 -1858,ic 000014 = 524000000011 003517 aa 6 00714 2521 00 spri2 pr6|460 003520 aa 774313 3520 04 epp2 -1845,ic 000033 = 514000000044 003521 aa 6 00716 2521 00 spri2 pr6|462 003522 aa 774314 3520 04 epp2 -1844,ic 000036 = 464000000000 003523 aa 6 00720 2521 00 spri2 pr6|464 003524 aa 774267 3520 04 epp2 -1865,ic 000013 = 404000000005 003525 aa 6 00722 2521 00 spri2 pr6|466 003526 aa 774264 3520 04 epp2 -1868,ic 000012 = 524000000035 003527 aa 6 00724 2521 00 spri2 pr6|468 003530 aa 6 00222 3535 20 epp3 pr6|146,* 003531 aa 3 00002 3521 20 epp2 pr3|2,* 003532 aa 6 00726 2521 00 spri2 pr6|470 003533 aa 3 00004 3521 20 epp2 pr3|4,* 003534 aa 6 00730 2521 00 spri2 pr6|472 003535 aa 6 00670 6211 00 eax1 pr6|440 003536 aa 040000 4310 07 fld 16384,dl 003537 aa 6 00044 3701 20 epp4 pr6|36,* 003540 la 4 00056 3521 20 epp2 pr4|46,* sub_err_ 003541 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 658 go to RETRY; 003542 aa 777633 7100 04 tra -101,ic 003375 STATEMENT 1 ON LINE 660 end set_entry_variable; END PROCEDURE set_entry_variable BEGIN PROCEDURE time_search ENTRY TO time_search STATEMENT 1 ON LINE 663 time_search: procedure (P_after_sw); 003543 aa 6 00224 6501 00 spri4 pr6|148 003544 aa 6 00226 2521 00 spri2 pr6|150 STATEMENT 1 ON LINE 671 message_time = P_message_time; 003545 aa 6 00032 3735 20 epp7 pr6|26,* 003546 aa 7 00004 2371 20 ldaq pr7|4,* P_message_time 003547 aa 6 00232 7571 00 staq pr6|154 message_time STATEMENT 1 ON LINE 674 call set_current_log (log_read_data.very_last_log_idx); 003550 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 003551 aa 5 00123 3521 00 epp2 pr5|83 log_read_data.very_last_log_idx 003552 aa 6 00734 2521 00 spri2 pr6|476 003553 aa 6 00732 3521 00 epp2 pr6|474 003554 aa 004000 4310 07 fld 2048,dl 003555 aa 2 00000 7571 00 staq pr2|0 003556 aa 000552 6700 04 tsp4 362,ic 004330 STATEMENT 1 ON LINE 675 log_read_data.very_last_time = log_segment.last_time; 003557 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 003560 aa 7 00062 2371 00 ldaq pr7|50 log_segment.last_time 003561 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 003562 aa 5 00116 7571 00 staq pr5|78 log_read_data.very_last_time STATEMENT 1 ON LINE 677 if P_after_sw then do; 003563 aa 6 00226 3535 20 epp3 pr6|150,* 003564 aa 3 00002 2351 20 lda pr3|2,* P_after_sw 003565 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 003566 aa 6 00740 7551 00 sta pr6|480 P_after_sw 003567 aa 000041 6000 04 tze 33,ic 003630 STATEMENT 1 ON LINE 678 if (message_time <= log_read_data.very_first_time) then do; 003570 aa 6 00232 2371 00 ldaq pr6|154 message_time 003571 aa 5 00114 1171 00 cmpaq pr5|76 log_read_data.very_first_time 003572 aa 000027 6054 04 tpnz 23,ic 003621 STATEMENT 1 ON LINE 679 call set_current_log (log_read_data.very_first_log_idx); 003573 aa 5 00122 3521 00 epp2 pr5|82 log_read_data.very_first_log_idx 003574 aa 6 00734 2521 00 spri2 pr6|476 003575 aa 6 00732 3521 00 epp2 pr6|474 003576 aa 004000 4310 07 fld 2048,dl 003577 aa 2 00000 7571 00 staq pr2|0 003600 aa 000530 6700 04 tsp4 344,ic 004330 STATEMENT 1 ON LINE 680 log_message_ptr = null (); 003601 aa 774243 2370 04 ldaq -1885,ic 000044 = 077777000043 000001000000 003602 aa 6 00144 7571 00 staq pr6|100 log_message_ptr STATEMENT 1 ON LINE 681 call log_position_$next_message (log_segment_ptr, log_message_ptr, ("0"b)); 003603 aa 000000 2350 07 lda 0,dl 003604 aa 6 00741 7551 00 sta pr6|481 003605 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 003606 aa 6 00744 2521 00 spri2 pr6|484 003607 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 003610 aa 6 00746 2521 00 spri2 pr6|486 003611 aa 6 00741 3521 00 epp2 pr6|481 003612 aa 6 00750 2521 00 spri2 pr6|488 003613 aa 6 00742 6211 00 eax1 pr6|482 003614 aa 014000 4310 07 fld 6144,dl 003615 aa 6 00044 3701 20 epp4 pr6|36,* 003616 la 4 00044 3521 20 epp2 pr4|36,* log_position_$next_message 003617 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 682 end; 003620 aa 000050 7100 04 tra 40,ic 003670 STATEMENT 1 ON LINE 684 else if (message_time > log_read_data.very_last_time) then log_message_ptr = null (); 003621 aa 5 00116 1171 00 cmpaq pr5|78 log_read_data.very_last_time 003622 aa 000004 6044 04 tmoz 4,ic 003626 003623 aa 774221 2370 04 ldaq -1903,ic 000044 = 077777000043 000001000000 003624 aa 6 00144 7571 00 staq pr6|100 log_message_ptr 003625 aa 000043 7100 04 tra 35,ic 003670 STATEMENT 1 ON LINE 687 else call search_for_time (); 003626 aa 000043 6700 04 tsp4 35,ic 003671 STATEMENT 1 ON LINE 688 end; 003627 aa 000041 7100 04 tra 33,ic 003670 STATEMENT 1 ON LINE 690 else if ^P_after_sw then do; 003630 aa 000040 6010 04 tnz 32,ic 003670 STATEMENT 1 ON LINE 691 if (message_time >= log_read_data.very_last_time) then do; 003631 aa 6 00232 2371 00 ldaq pr6|154 message_time 003632 aa 5 00116 1171 00 cmpaq pr5|78 log_read_data.very_last_time 003633 aa 000027 6040 04 tmi 23,ic 003662 STATEMENT 1 ON LINE 692 call set_current_log (log_read_data.very_last_log_idx); 003634 aa 5 00123 3521 00 epp2 pr5|83 log_read_data.very_last_log_idx 003635 aa 6 00734 2521 00 spri2 pr6|476 003636 aa 6 00732 3521 00 epp2 pr6|474 003637 aa 004000 4310 07 fld 2048,dl 003640 aa 2 00000 7571 00 staq pr2|0 003641 aa 000467 6700 04 tsp4 311,ic 004330 STATEMENT 1 ON LINE 693 log_message_ptr = null (); 003642 aa 774202 2370 04 ldaq -1918,ic 000044 = 077777000043 000001000000 003643 aa 6 00144 7571 00 staq pr6|100 log_message_ptr STATEMENT 1 ON LINE 694 call log_position_$prev_message (log_segment_ptr, log_message_ptr, ("0"b)); 003644 aa 000000 2350 07 lda 0,dl 003645 aa 6 00740 7551 00 sta pr6|480 003646 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 003647 aa 6 00744 2521 00 spri2 pr6|484 003650 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 003651 aa 6 00746 2521 00 spri2 pr6|486 003652 aa 6 00740 3521 00 epp2 pr6|480 003653 aa 6 00750 2521 00 spri2 pr6|488 003654 aa 6 00742 6211 00 eax1 pr6|482 003655 aa 014000 4310 07 fld 6144,dl 003656 aa 6 00044 3701 20 epp4 pr6|36,* 003657 la 4 00046 3521 20 epp2 pr4|38,* log_position_$prev_message 003660 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 695 end; 003661 aa 000007 7100 04 tra 7,ic 003670 STATEMENT 1 ON LINE 697 else if (message_time < log_read_data.very_first_time) then log_message_ptr = null (); 003662 aa 5 00114 1171 00 cmpaq pr5|76 log_read_data.very_first_time 003663 aa 000004 6050 04 tpl 4,ic 003667 003664 aa 774160 2370 04 ldaq -1936,ic 000044 = 077777000043 000001000000 003665 aa 6 00144 7571 00 staq pr6|100 log_message_ptr 003666 aa 000002 7100 04 tra 2,ic 003670 STATEMENT 1 ON LINE 700 else call search_for_time (); 003667 aa 000002 6700 04 tsp4 2,ic 003671 STATEMENT 1 ON LINE 701 end; STATEMENT 1 ON LINE 703 return; 003670 aa 6 00224 6101 00 rtcd pr6|148 STATEMENT 1 ON LINE 826 end time_search; BEGIN PROCEDURE search_for_time ENTRY TO search_for_time STATEMENT 1 ON LINE 711 search_for_time: procedure; 003671 aa 6 00234 6501 00 spri4 pr6|156 STATEMENT 1 ON LINE 720 log_message_ptr = null (); 003672 aa 774152 2370 04 ldaq -1942,ic 000044 = 077777000043 000001000000 003673 aa 6 00144 7571 00 staq pr6|100 log_message_ptr STATEMENT 1 ON LINE 726 call look_for_log_segment (log_read_data.very_last_log_idx, log_read_data.very_first_log_idx); 003674 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 003675 aa 7 00123 3521 00 epp2 pr7|83 log_read_data.very_last_log_idx 003676 aa 6 00754 2521 00 spri2 pr6|492 003677 aa 7 00122 3521 00 epp2 pr7|82 log_read_data.very_first_log_idx 003700 aa 6 00756 2521 00 spri2 pr6|494 003701 aa 6 00752 3521 00 epp2 pr6|490 003702 aa 010000 4310 07 fld 4096,dl 003703 aa 2 00000 7571 00 staq pr2|0 003704 aa 000344 6700 04 tsp4 228,ic 004250 STATEMENT 1 ON LINE 727 if log_idx = 0 /* all log segments damaged? */ then return; 003705 aa 6 00121 2361 00 ldq pr6|81 log_idx 003706 aa 000002 6010 04 tnz 2,ic 003710 003707 aa 6 00234 6101 00 rtcd pr6|156 STATEMENT 1 ON LINE 729 else if message_time >= log_segment.first_time & message_time <= log_segment.last_time then goto call_log_position; 003710 aa 6 00232 2371 00 ldaq pr6|154 message_time 003711 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 003712 aa 7 00060 1171 00 cmpaq pr7|48 log_segment.first_time 003713 aa 000003 6040 04 tmi 3,ic 003716 003714 aa 7 00062 1171 00 cmpaq pr7|50 log_segment.last_time 003715 aa 000160 6044 04 tmoz 112,ic 004075 STATEMENT 1 ON LINE 734 found = "0"b; 003716 aa 6 00242 4501 00 stz pr6|162 found STATEMENT 1 ON LINE 736 low_idx = log_idx + 1; 003717 aa 6 00121 2361 00 ldq pr6|81 log_idx 003720 aa 000001 0760 07 adq 1,dl 003721 aa 6 00244 7561 00 stq pr6|164 low_idx STATEMENT 1 ON LINE 737 high_idx = log_read_data.very_first_log_idx; 003722 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 003723 aa 5 00122 2361 00 ldq pr5|82 log_read_data.very_first_log_idx 003724 aa 6 00245 7561 00 stq pr6|165 high_idx STATEMENT 1 ON LINE 742 do while ((low_idx <= high_idx) & ^found); 003725 aa 000000 0110 03 nop 0,du 003726 aa 6 00242 2351 00 lda pr6|162 found 003727 aa 0 00002 6751 00 era pr0|2 = 400000000000 003730 aa 6 00762 7551 00 sta pr6|498 003731 aa 000052 6000 04 tze 42,ic 004003 003732 aa 6 00244 2361 00 ldq pr6|164 low_idx 003733 aa 6 00245 1161 00 cmpq pr6|165 high_idx 003734 aa 000047 6054 04 tpnz 39,ic 004003 STATEMENT 1 ON LINE 744 test_idx = divide ((high_idx - low_idx), 2, 17, 0) + low_idx; 003735 aa 6 00245 2361 00 ldq pr6|165 high_idx 003736 aa 6 00244 1761 00 sbq pr6|164 low_idx 003737 aa 000002 5060 07 div 2,dl 003740 aa 6 00244 0761 00 adq pr6|164 low_idx 003741 aa 6 00243 7561 00 stq pr6|163 test_idx STATEMENT 1 ON LINE 754 if test_idx < log_read_data.very_first_log_idx then first_message_time = log_read_data.segments (test_idx + 1).suffix_time + 1; 003742 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 003743 aa 7 00122 1161 00 cmpq pr7|82 log_read_data.very_first_log_idx 003744 aa 000006 6050 04 tpl 6,ic 003752 003745 aa 000072 4020 07 mpy 58,dl 003746 aa 7 00210 2371 06 ldaq pr7|136,ql log_read_data.suffix_time 003747 aa 000001 0330 07 adl 1,dl 003750 aa 6 00246 7571 00 staq pr6|166 first_message_time 003751 aa 000003 7100 04 tra 3,ic 003754 STATEMENT 1 ON LINE 756 else first_message_time = log_read_data.very_first_time; 003752 aa 7 00114 2371 00 ldaq pr7|76 log_read_data.very_first_time 003753 aa 6 00246 7571 00 staq pr6|166 first_message_time STATEMENT 1 ON LINE 768 if message_time >= first_message_time & message_time <= log_read_data.segments (test_idx).suffix_time then found = "1"b; 003754 aa 6 00243 2361 00 ldq pr6|163 test_idx 003755 aa 000072 4020 07 mpy 58,dl 003756 aa 6 00763 7561 00 stq pr6|499 003757 aa 6 00232 2371 00 ldaq pr6|154 message_time 003760 aa 6 00246 1171 00 cmpaq pr6|166 first_message_time 003761 aa 000007 6040 04 tmi 7,ic 003770 003762 aa 6 00763 7271 00 lxl7 pr6|499 003763 aa 7 00116 1171 17 cmpaq pr7|78,7 log_read_data.suffix_time 003764 aa 000004 6054 04 tpnz 4,ic 003770 003765 aa 400000 2350 03 lda 131072,du 003766 aa 6 00242 7551 00 sta pr6|162 found 003767 aa 777737 7100 04 tra -33,ic 003726 STATEMENT 1 ON LINE 770 else if message_time < log_read_data.segments (test_idx).suffix_time then low_idx = test_idx + 1; 003770 aa 6 00763 7271 00 lxl7 pr6|499 003771 aa 7 00116 1171 17 cmpaq pr7|78,7 log_read_data.suffix_time 003772 aa 000005 6050 04 tpl 5,ic 003777 003773 aa 6 00243 2361 00 ldq pr6|163 test_idx 003774 aa 000001 0760 07 adq 1,dl 003775 aa 6 00244 7561 00 stq pr6|164 low_idx 003776 aa 777730 7100 04 tra -40,ic 003726 STATEMENT 1 ON LINE 772 else high_idx = test_idx - 1; 003777 aa 6 00243 2361 00 ldq pr6|163 test_idx 004000 aa 000001 1760 07 sbq 1,dl 004001 aa 6 00245 7561 00 stq pr6|165 high_idx STATEMENT 1 ON LINE 773 end; 004002 aa 777724 7100 04 tra -44,ic 003726 STATEMENT 1 ON LINE 776 if ^found then return; 004003 aa 400000 3150 03 cana 131072,du 004004 aa 000002 6000 04 tze 2,ic 004006 004005 aa 6 00234 6101 00 rtcd pr6|156 STATEMENT 1 ON LINE 784 if P_after_sw then call look_for_log_segment (test_idx, log_read_data.very_last_log_idx); 004006 aa 6 00226 3735 20 epp7 pr6|150,* 004007 aa 7 00002 2351 20 lda pr7|2,* P_after_sw 004010 aa 400000 3150 03 cana 131072,du 004011 aa 000013 6000 04 tze 11,ic 004024 004012 aa 6 00243 3521 00 epp2 pr6|163 test_idx 004013 aa 6 00754 2521 00 spri2 pr6|492 004014 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 004015 aa 5 00123 3521 00 epp2 pr5|83 log_read_data.very_last_log_idx 004016 aa 6 00756 2521 00 spri2 pr6|494 004017 aa 6 00752 3521 00 epp2 pr6|490 004020 aa 010000 4310 07 fld 4096,dl 004021 aa 2 00000 7571 00 staq pr2|0 004022 aa 000226 6700 04 tsp4 150,ic 004250 004023 aa 000012 7100 04 tra 10,ic 004035 STATEMENT 1 ON LINE 786 else call look_for_log_segment (test_idx, log_read_data.very_first_log_idx); 004024 aa 6 00243 3521 00 epp2 pr6|163 test_idx 004025 aa 6 00754 2521 00 spri2 pr6|492 004026 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 004027 aa 5 00122 3521 00 epp2 pr5|82 log_read_data.very_first_log_idx 004030 aa 6 00756 2521 00 spri2 pr6|494 004031 aa 6 00752 3521 00 epp2 pr6|490 004032 aa 010000 4310 07 fld 4096,dl 004033 aa 2 00000 7571 00 staq pr2|0 004034 aa 000214 6700 04 tsp4 140,ic 004250 STATEMENT 1 ON LINE 793 if ^P_after_sw then if log_segment.first_time > message_time then if test_idx < log_read_data.very_first_log_idx then do; 004035 aa 6 00226 3735 20 epp7 pr6|150,* 004036 aa 7 00002 2351 20 lda pr7|2,* P_after_sw 004037 aa 400000 3150 03 cana 131072,du 004040 aa 000022 6010 04 tnz 18,ic 004062 004041 aa 6 00142 3715 20 epp5 pr6|98,* log_segment_ptr 004042 aa 5 00060 2371 00 ldaq pr5|48 log_segment.first_time 004043 aa 6 00232 1171 00 cmpaq pr6|154 message_time 004044 aa 000016 6044 04 tmoz 14,ic 004062 004045 aa 6 00243 2361 00 ldq pr6|163 test_idx 004046 aa 6 00134 3535 20 epp3 pr6|92,* log_read_data_ptr 004047 aa 3 00122 1161 00 cmpq pr3|82 log_read_data.very_first_log_idx 004050 aa 000012 6050 04 tpl 10,ic 004062 STATEMENT 1 ON LINE 797 test_idx = test_idx + 1; 004051 aa 6 00243 0541 00 aos pr6|163 test_idx STATEMENT 1 ON LINE 798 call look_for_log_segment (test_idx, log_read_data.very_first_log_idx); 004052 aa 6 00243 3521 00 epp2 pr6|163 test_idx 004053 aa 6 00754 2521 00 spri2 pr6|492 004054 aa 3 00122 3521 00 epp2 pr3|82 log_read_data.very_first_log_idx 004055 aa 6 00756 2521 00 spri2 pr6|494 004056 aa 6 00752 3521 00 epp2 pr6|490 004057 aa 010000 4310 07 fld 4096,dl 004060 aa 2 00000 7571 00 staq pr2|0 004061 aa 000167 6700 04 tsp4 119,ic 004250 STATEMENT 1 ON LINE 799 end; STATEMENT 1 ON LINE 804 if log_segment_ptr = null () then return; 004062 aa 6 00142 2371 00 ldaq pr6|98 log_segment_ptr 004063 aa 773761 6770 04 eraq -2063,ic 000044 = 077777000043 000001000000 004064 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004065 aa 000002 6010 04 tnz 2,ic 004067 004066 aa 6 00234 6101 00 rtcd pr6|156 STATEMENT 1 ON LINE 810 if message_time >= log_segment.first_time & message_time <= log_segment.last_time then do; 004067 aa 6 00232 2371 00 ldaq pr6|154 message_time 004070 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 004071 aa 7 00060 1171 00 cmpaq pr7|48 log_segment.first_time 004072 aa 000026 6040 04 tmi 22,ic 004120 004073 aa 7 00062 1171 00 cmpaq pr7|50 log_segment.last_time 004074 aa 000024 6054 04 tpnz 20,ic 004120 STATEMENT 1 ON LINE 812 call_log_position: call log_position_$find_time (log_segment_ptr, message_time, P_after_sw, log_message_ptr, ("0"b)); 004075 aa 000000 2350 07 lda 0,dl 004076 aa 6 00762 7551 00 sta pr6|498 004077 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 004100 aa 6 00766 2521 00 spri2 pr6|502 004101 aa 6 00232 3521 00 epp2 pr6|154 message_time 004102 aa 6 00770 2521 00 spri2 pr6|504 004103 aa 6 00226 3715 20 epp5 pr6|150,* 004104 aa 5 00002 3521 20 epp2 pr5|2,* P_after_sw 004105 aa 6 00772 2521 00 spri2 pr6|506 004106 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 004107 aa 6 00774 2521 00 spri2 pr6|508 004110 aa 6 00762 3521 00 epp2 pr6|498 004111 aa 6 00776 2521 00 spri2 pr6|510 004112 aa 6 00764 6211 00 eax1 pr6|500 004113 aa 024000 4310 07 fld 10240,dl 004114 aa 6 00044 3701 20 epp4 pr6|36,* 004115 la 4 00042 3521 20 epp2 pr4|34,* log_position_$find_time 004116 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 814 end; 004117 aa 000040 7100 04 tra 32,ic 004157 STATEMENT 1 ON LINE 815 else do; STATEMENT 1 ON LINE 818 if P_after_sw then call log_position_$next_message (log_segment_ptr, log_message_ptr, ("0"b)); 004120 aa 6 00226 3715 20 epp5 pr6|150,* 004121 aa 5 00002 2351 20 lda pr5|2,* P_after_sw 004122 aa 400000 3150 03 cana 131072,du 004123 aa 000017 6000 04 tze 15,ic 004142 004124 aa 000000 2350 07 lda 0,dl 004125 aa 6 00762 7551 00 sta pr6|498 004126 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 004127 aa 6 00754 2521 00 spri2 pr6|492 004130 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 004131 aa 6 00756 2521 00 spri2 pr6|494 004132 aa 6 00762 3521 00 epp2 pr6|498 004133 aa 6 00760 2521 00 spri2 pr6|496 004134 aa 6 00752 6211 00 eax1 pr6|490 004135 aa 014000 4310 07 fld 6144,dl 004136 aa 6 00044 3701 20 epp4 pr6|36,* 004137 la 4 00044 3521 20 epp2 pr4|36,* log_position_$next_message 004140 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 004141 aa 000016 7100 04 tra 14,ic 004157 STATEMENT 1 ON LINE 820 else call log_position_$prev_message (log_segment_ptr, log_message_ptr, ("0"b)); 004142 aa 000000 2350 07 lda 0,dl 004143 aa 6 00762 7551 00 sta pr6|498 004144 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 004145 aa 6 00754 2521 00 spri2 pr6|492 004146 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 004147 aa 6 00756 2521 00 spri2 pr6|494 004150 aa 6 00762 3521 00 epp2 pr6|498 004151 aa 6 00760 2521 00 spri2 pr6|496 004152 aa 6 00752 6211 00 eax1 pr6|490 004153 aa 014000 4310 07 fld 6144,dl 004154 aa 6 00044 3701 20 epp4 pr6|36,* 004155 la 4 00046 3521 20 epp2 pr4|38,* log_position_$prev_message 004156 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 821 end; STATEMENT 1 ON LINE 824 end search_for_time; 004157 aa 6 00234 6101 00 rtcd pr6|156 END PROCEDURE search_for_time END PROCEDURE time_search BEGIN PROCEDURE find_log_idx_of_message ENTRY TO find_log_idx_of_message STATEMENT 1 ON LINE 829 find_log_idx_of_message: procedure (); 004160 aa 6 00250 6501 00 spri4 pr6|168 STATEMENT 1 ON LINE 837 if (log_read_data.current_idx > 0) then if (log_read_data.current_ptr = log_read_data.ptr (log_read_data.current_idx)) then if (segno (log_read_data.current_ptr) = segno (log_message_ptr)) then do; 004161 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004162 aa 7 00010 2361 00 ldq pr7|8 log_read_data.current_idx 004163 aa 000025 6044 04 tmoz 21,ic 004210 004164 aa 000072 4020 07 mpy 58,dl 004165 aa 000000 6270 06 eax7 0,ql 004166 aa 7 00006 2371 00 ldaq pr7|6 log_read_data.current_ptr 004167 aa 7 00114 6771 17 eraq pr7|76,7 log_read_data.ptr 004170 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004171 aa 000017 6010 04 tnz 15,ic 004210 004172 aa 6 00144 2131 20 epaq pr6|100,* log_message_ptr 004173 aa 000022 7770 00 llr 18 004174 aa 077777 3760 07 anq 32767,dl 004175 aa 6 01000 7561 00 stq pr6|512 004176 aa 7 00006 2131 20 epaq pr7|6,* log_read_data.current_ptr 004177 aa 000022 7770 00 llr 18 004200 aa 077777 3760 07 anq 32767,dl 004201 aa 6 01000 1161 00 cmpq pr6|512 004202 aa 000006 6010 04 tnz 6,ic 004210 STATEMENT 1 ON LINE 840 log_idx = log_read_data.current_idx; 004203 aa 7 00010 2361 00 ldq pr7|8 log_read_data.current_idx 004204 aa 6 00121 7561 00 stq pr6|81 log_idx STATEMENT 1 ON LINE 841 log_segment_ptr = log_read_data.current_ptr; 004205 aa 7 00006 3715 20 epp5 pr7|6,* log_read_data.current_ptr 004206 aa 6 00142 6515 00 spri5 pr6|98 log_segment_ptr STATEMENT 1 ON LINE 842 return; 004207 aa 6 00250 6101 00 rtcd pr6|168 STATEMENT 1 ON LINE 843 end; STATEMENT 1 ON LINE 845 do log_idx = 1 to log_read_data.n_segments; 004210 aa 7 00002 2361 00 ldq pr7|2 log_read_data.n_segments 004211 aa 6 00256 7561 00 stq pr6|174 004212 aa 000001 2360 07 ldq 1,dl 004213 aa 6 00121 7561 00 stq pr6|81 log_idx 004214 aa 6 00121 2361 00 ldq pr6|81 log_idx 004215 aa 6 00256 1161 00 cmpq pr6|174 004216 aa 000022 6054 04 tpnz 18,ic 004240 STATEMENT 1 ON LINE 846 if (segno (log_read_data.ptr (log_idx)) = segno (log_message_ptr)) then do; 004217 aa 6 00144 2131 20 epaq pr6|100,* log_message_ptr 004220 aa 000022 7770 00 llr 18 004221 aa 077777 3760 07 anq 32767,dl 004222 aa 6 01000 7561 00 stq pr6|512 004223 aa 6 00121 2361 00 ldq pr6|81 log_idx 004224 aa 000072 4020 07 mpy 58,dl 004225 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004226 aa 7 00114 2131 26 epaq pr7|76,ql* log_read_data.ptr 004227 aa 000022 7770 00 llr 18 004230 aa 077777 3760 07 anq 32767,dl 004231 aa 6 01000 1161 00 cmpq pr6|512 004232 aa 000004 6010 04 tnz 4,ic 004236 STATEMENT 1 ON LINE 847 call set_current_log (log_idx); 004233 aa 002115 3520 04 epp2 1101,ic 006350 = 000002000000 004234 aa 000074 6700 04 tsp4 60,ic 004330 STATEMENT 1 ON LINE 848 return; 004235 aa 6 00250 6101 00 rtcd pr6|168 STATEMENT 1 ON LINE 849 end; STATEMENT 1 ON LINE 850 end; 004236 aa 6 00121 0541 00 aos pr6|81 log_idx 004237 aa 777755 7100 04 tra -19,ic 004214 STATEMENT 1 ON LINE 855 call finished (error_table_$fatal_error); 004240 aa 6 00044 3701 20 epp4 pr6|36,* 004241 la 4 00012 3521 20 epp2 pr4|10,* error_table_$fatal_error 004242 aa 6 01004 2521 00 spri2 pr6|516 004243 aa 6 01002 3521 00 epp2 pr6|514 004244 aa 004000 4310 07 fld 2048,dl 004245 aa 2 00000 7571 00 staq pr2|0 004246 aa 002026 6700 04 tsp4 1046,ic 006274 STATEMENT 1 ON LINE 857 end find_log_idx_of_message; 004247 aa 6 00250 6101 00 rtcd pr6|168 END PROCEDURE find_log_idx_of_message BEGIN PROCEDURE look_for_log_segment ENTRY TO look_for_log_segment STATEMENT 1 ON LINE 860 look_for_log_segment: procedure (P_start, P_finish); 004250 aa 6 00260 6501 00 spri4 pr6|176 004251 aa 6 00262 2521 00 spri2 pr6|178 STATEMENT 1 ON LINE 874 if (P_start > P_finish) then /* Force loop to proceed in right direction */ increment = -1; 004252 aa 2 00002 2361 20 ldq pr2|2,* P_start 004253 aa 2 00004 1161 20 cmpq pr2|4,* P_finish 004254 aa 000004 6044 04 tmoz 4,ic 004260 004255 aa 000001 3360 07 lcq 1,dl 004256 aa 6 00266 7561 00 stq pr6|182 increment 004257 aa 000003 7100 04 tra 3,ic 004262 STATEMENT 1 ON LINE 876 else increment = 1; 004260 aa 000001 2360 07 ldq 1,dl 004261 aa 6 00266 7561 00 stq pr6|182 increment STATEMENT 1 ON LINE 878 code = 1; 004262 aa 000001 2360 07 ldq 1,dl 004263 aa 6 00101 7561 00 stq pr6|65 code STATEMENT 1 ON LINE 879 do test_idx = P_start to P_finish by increment while (code ^= 0); 004264 aa 2 00004 2361 20 ldq pr2|4,* P_finish 004265 aa 6 00270 7561 00 stq pr6|184 004266 aa 6 00266 2361 00 ldq pr6|182 increment 004267 aa 6 00271 7561 00 stq pr6|185 004270 aa 2 00002 2361 20 ldq pr2|2,* P_start 004271 aa 6 00267 7561 00 stq pr6|183 test_idx 004272 aa 6 00271 2361 00 ldq pr6|185 004273 aa 000004 6040 04 tmi 4,ic 004277 004274 aa 6 00267 2361 00 ldq pr6|183 test_idx 004275 aa 6 00270 1161 00 cmpq pr6|184 004276 aa 000021 6054 04 tpnz 17,ic 004317 004277 aa 6 00271 2361 00 ldq pr6|185 004300 aa 000004 6050 04 tpl 4,ic 004304 004301 aa 6 00267 2361 00 ldq pr6|183 test_idx 004302 aa 6 00270 1161 00 cmpq pr6|184 004303 aa 000014 6040 04 tmi 12,ic 004317 004304 aa 6 00101 2361 00 ldq pr6|65 code 004305 aa 000012 6000 04 tze 10,ic 004317 STATEMENT 1 ON LINE 880 call initiate_log (test_idx); 004306 aa 002036 3520 04 epp2 1054,ic 006344 = 000002000000 004307 aa 000045 6700 04 tsp4 37,ic 004354 STATEMENT 1 ON LINE 881 if (code = 0) then log_idx = test_idx; 004310 aa 6 00101 2361 00 ldq pr6|65 code 004311 aa 000003 6010 04 tnz 3,ic 004314 004312 aa 6 00267 2361 00 ldq pr6|183 test_idx 004313 aa 6 00121 7561 00 stq pr6|81 log_idx STATEMENT 1 ON LINE 882 end; 004314 aa 6 00271 2361 00 ldq pr6|185 004315 aa 6 00267 0561 00 asq pr6|183 test_idx 004316 aa 777754 7100 04 tra -20,ic 004272 STATEMENT 1 ON LINE 884 if (code ^= 0) then /* A zero invalidates the current log pointer */ call set_current_log (0); 004317 aa 6 00101 2361 00 ldq pr6|65 code 004320 aa 000005 6000 04 tze 5,ic 004325 004321 aa 6 01010 4501 00 stz pr6|520 004322 aa 002016 3520 04 epp2 1038,ic 006340 = 000002000000 004323 aa 000005 6700 04 tsp4 5,ic 004330 004324 aa 000003 7100 04 tra 3,ic 004327 STATEMENT 1 ON LINE 886 else call set_current_log (log_idx); 004325 aa 002023 3520 04 epp2 1043,ic 006350 = 000002000000 004326 aa 000002 6700 04 tsp4 2,ic 004330 STATEMENT 1 ON LINE 888 return; 004327 aa 6 00260 6101 00 rtcd pr6|176 STATEMENT 1 ON LINE 889 end look_for_log_segment; END PROCEDURE look_for_log_segment BEGIN PROCEDURE set_current_log ENTRY TO set_current_log STATEMENT 1 ON LINE 892 set_current_log: procedure (P_log_idx); 004330 aa 6 00272 6501 00 spri4 pr6|186 004331 aa 6 00274 2521 00 spri2 pr6|188 STATEMENT 1 ON LINE 902 if (P_log_idx = 0) then log_segment_ptr = null (); 004332 aa 2 00002 2361 20 ldq pr2|2,* P_log_idx 004333 aa 000004 6010 04 tnz 4,ic 004337 004334 aa 773510 2370 04 ldaq -2232,ic 000044 = 077777000043 000001000000 004335 aa 6 00142 7571 00 staq pr6|98 log_segment_ptr 004336 aa 000005 7100 04 tra 5,ic 004343 STATEMENT 1 ON LINE 904 else log_segment_ptr = log_read_data.ptr (P_log_idx); 004337 aa 000072 4020 07 mpy 58,dl 004340 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004341 aa 7 00114 3735 26 epp7 pr7|76,ql* log_read_data.ptr 004342 aa 6 00142 6535 00 spri7 pr6|98 log_segment_ptr STATEMENT 1 ON LINE 906 log_read_data.current_ptr = log_segment_ptr; 004343 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 004344 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 004345 aa 5 00006 6535 00 spri7 pr5|6 log_read_data.current_ptr STATEMENT 1 ON LINE 907 log_read_data.current_idx = P_log_idx; 004346 aa 2 00002 2361 20 ldq pr2|2,* P_log_idx 004347 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004350 aa 7 00010 7561 00 stq pr7|8 log_read_data.current_idx STATEMENT 1 ON LINE 909 log_idx = P_log_idx; 004351 aa 2 00002 2361 20 ldq pr2|2,* P_log_idx 004352 aa 6 00121 7561 00 stq pr6|81 log_idx STATEMENT 1 ON LINE 911 return; 004353 aa 6 00272 6101 00 rtcd pr6|186 STATEMENT 1 ON LINE 912 end set_current_log; END PROCEDURE set_current_log BEGIN PROCEDURE initiate_log ENTRY TO initiate_log STATEMENT 1 ON LINE 915 initiate_log: procedure (P_idx); 004354 aa 6 00300 6501 00 spri4 pr6|192 004355 aa 6 00302 2521 00 spri2 pr6|194 STATEMENT 1 ON LINE 921 if (log_read_data.damaged (P_idx)) then do; 004356 aa 2 00002 2361 20 ldq pr2|2,* P_idx 004357 aa 000072 4020 07 mpy 58,dl 004360 aa 6 01011 7561 00 stq pr6|521 004361 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004362 aa 7 00122 2351 06 lda pr7|82,ql log_read_data.damaged 004363 aa 400000 3150 03 cana 131072,du 004364 aa 000005 6000 04 tze 5,ic 004371 STATEMENT 1 ON LINE 922 code = error_table_$log_segment_damaged; 004365 aa 6 00044 3701 20 epp4 pr6|36,* 004366 la 4 00014 2361 20 ldq pr4|12,* error_table_$log_segment_damaged 004367 aa 6 00101 7561 00 stq pr6|65 code STATEMENT 1 ON LINE 923 return; 004370 aa 6 00300 6101 00 rtcd pr6|192 STATEMENT 1 ON LINE 924 end; STATEMENT 1 ON LINE 926 if (log_read_data.ptr (P_idx) ^= null ()) then do; 004371 aa 7 00114 2371 06 ldaq pr7|76,ql log_read_data.ptr 004372 aa 773452 6770 04 eraq -2262,ic 000044 = 077777000043 000001000000 004373 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004374 aa 000003 6000 04 tze 3,ic 004377 STATEMENT 1 ON LINE 927 code = 0; 004375 aa 6 00101 4501 00 stz pr6|65 code STATEMENT 1 ON LINE 928 return; 004376 aa 6 00300 6101 00 rtcd pr6|192 STATEMENT 1 ON LINE 929 end; STATEMENT 1 ON LINE 931 call log_initiate_ (log_read_data.dname (P_idx), log_read_data.ename (P_idx), 10, log_read_data.ptr (P_idx), code); 004377 aa 773411 2360 04 ldq -2295,ic 000010 = 526000000250 004400 aa 6 01012 7561 00 stq pr6|522 004401 aa 773426 2360 04 ldq -2282,ic 000027 = 526000000040 004402 aa 6 01013 7561 00 stq pr6|523 004403 aa 464000 2360 03 ldq 157696,du 004404 aa 6 01014 7561 00 stq pr6|524 004405 aa 000012 2360 07 ldq 10,dl 004406 aa 6 01015 7561 00 stq pr6|525 004407 aa 6 01011 7271 00 lxl7 pr6|521 004410 aa 7 00032 3521 17 epp2 pr7|26,7 log_read_data.dname 004411 aa 6 01020 2521 00 spri2 pr6|528 004412 aa 7 00104 3521 17 epp2 pr7|68,7 log_read_data.ename 004413 aa 6 01022 2521 00 spri2 pr6|530 004414 aa 6 01015 3521 00 epp2 pr6|525 004415 aa 6 01024 2521 00 spri2 pr6|532 004416 aa 7 00114 3521 17 epp2 pr7|76,7 log_read_data.ptr 004417 aa 6 01026 2521 00 spri2 pr6|534 004420 aa 6 00101 3521 00 epp2 pr6|65 code 004421 aa 6 01030 2521 00 spri2 pr6|536 004422 aa 6 01012 3521 00 epp2 pr6|522 004423 aa 6 01032 2521 00 spri2 pr6|538 004424 aa 6 01013 3521 00 epp2 pr6|523 004425 aa 6 01034 2521 00 spri2 pr6|540 004426 aa 773363 3520 04 epp2 -2317,ic 000011 = 404000000021 004427 aa 6 01036 2521 00 spri2 pr6|542 004430 aa 6 01014 3521 00 epp2 pr6|524 004431 aa 6 01040 2521 00 spri2 pr6|544 004432 aa 773403 3520 04 epp2 -2301,ic 000035 = 404000000043 004433 aa 6 01042 2521 00 spri2 pr6|546 004434 aa 6 01016 6211 00 eax1 pr6|526 004435 aa 024000 4310 07 fld 10240,dl 004436 aa 6 00044 3701 20 epp4 pr6|36,* 004437 la 4 00034 3521 20 epp2 pr4|28,* log_initiate_ 004440 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 934 if (code ^= 0) then log_read_data.damaged (P_idx) = "1"b; 004441 aa 6 00101 2361 00 ldq pr6|65 code 004442 aa 000007 6000 04 tze 7,ic 004451 004443 aa 6 00302 3735 20 epp7 pr6|194,* 004444 aa 7 00002 2361 20 ldq pr7|2,* P_idx 004445 aa 000072 4020 07 mpy 58,dl 004446 aa 400000 2350 03 lda 131072,du 004447 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 004450 aa 5 00122 7551 06 sta pr5|82,ql log_read_data.damaged STATEMENT 1 ON LINE 936 return; 004451 aa 6 00300 6101 00 rtcd pr6|192 STATEMENT 1 ON LINE 937 end initiate_log; END PROCEDURE initiate_log BEGIN PROCEDURE get_complete_history ENTRY TO get_complete_history STATEMENT 1 ON LINE 940 get_complete_history: procedure (); 004452 aa 6 00306 6501 00 spri4 pr6|198 STATEMENT 1 ON LINE 958 if log_read_data.history_complete then return; 004453 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004454 aa 7 00003 2351 00 lda pr7|3 log_read_data.history_complete 004455 aa 000002 6000 04 tze 2,ic 004457 004456 aa 6 00306 6101 00 rtcd pr6|198 STATEMENT 1 ON LINE 960 call log_list_history_$all (log_read_data.ptr (1), log_read_data.ename (1), log_read_data.n_segments, new_log_read_data_ptr); 004457 aa 464000 2360 03 ldq 157696,du 004460 aa 6 01044 7561 00 stq pr6|548 004461 aa 773346 2360 04 ldq -2330,ic 000027 = 526000000040 004462 aa 6 01045 7561 00 stq pr6|549 004463 aa 7 00206 3521 00 epp2 pr7|134 log_read_data.ptr 004464 aa 6 01050 2521 00 spri2 pr6|552 004465 aa 7 00176 3521 00 epp2 pr7|126 log_read_data.ename 004466 aa 6 01052 2521 00 spri2 pr6|554 004467 aa 7 00002 3521 00 epp2 pr7|2 log_read_data.n_segments 004470 aa 6 01054 2521 00 spri2 pr6|556 004471 aa 6 00314 3521 00 epp2 pr6|204 new_log_read_data_ptr 004472 aa 6 01056 2521 00 spri2 pr6|558 004473 aa 6 01044 3521 00 epp2 pr6|548 004474 aa 6 01060 2521 00 spri2 pr6|560 004475 aa 6 01045 3521 00 epp2 pr6|549 004476 aa 6 01062 2521 00 spri2 pr6|562 004477 aa 773312 3520 04 epp2 -2358,ic 000011 = 404000000021 004500 aa 6 01064 2521 00 spri2 pr6|564 004501 aa 773335 3520 04 epp2 -2339,ic 000036 = 464000000000 004502 aa 6 01066 2521 00 spri2 pr6|566 004503 aa 6 01046 6211 00 eax1 pr6|550 004504 aa 020000 4310 07 fld 8192,dl 004505 aa 6 00044 3701 20 epp4 pr6|36,* 004506 la 4 00036 3521 20 epp2 pr4|30,* log_list_history_$all 004507 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 963 if (new_log_read_data_ptr ^= null ()) then do; 004510 aa 6 00314 2371 00 ldaq pr6|204 new_log_read_data_ptr 004511 aa 773333 6770 04 eraq -2341,ic 000044 = 077777000043 000001000000 004512 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004513 aa 000055 6000 04 tze 45,ic 004570 STATEMENT 1 ON LINE 964 do new_idx = 1 to log_read_data.n_segments; 004514 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004515 aa 7 00002 2361 00 ldq pr7|2 log_read_data.n_segments 004516 aa 6 00320 7561 00 stq pr6|208 004517 aa 000001 2360 07 ldq 1,dl 004520 aa 6 00316 7561 00 stq pr6|206 new_idx 004521 aa 000000 0110 03 nop 0,du 004522 aa 6 00316 2361 00 ldq pr6|206 new_idx 004523 aa 6 00320 1161 00 cmpq pr6|208 004524 aa 000013 6054 04 tpnz 11,ic 004537 STATEMENT 1 ON LINE 965 new_log_read_data_ptr -> log_read_data.segments (new_idx) = log_read_data.segments (new_idx); 004525 aa 000072 4020 07 mpy 58,dl 004526 aa 6 00314 3735 20 epp7 pr6|204,* new_log_read_data_ptr 004527 aa 7 00032 3735 06 epp7 pr7|26,ql log_read_data.segments 004530 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 004531 aa 5 00032 3715 06 epp5 pr5|26,ql log_read_data.segments 004532 aa 000 100 100 500 mlr (pr),(pr),fill(000) 004533 aa 5 00000 00 0350 desc9a pr5|0,232 log_read_data.segments 004534 aa 7 00000 00 0350 desc9a pr7|0,232 log_read_data.segments STATEMENT 1 ON LINE 966 end; 004535 aa 6 00316 0541 00 aos pr6|206 new_idx 004536 aa 777764 7100 04 tra -12,ic 004522 STATEMENT 1 ON LINE 971 saved_n_segments = new_log_read_data_ptr -> log_read_data.n_segments; 004537 aa 6 00314 3735 20 epp7 pr6|204,* new_log_read_data_ptr 004540 aa 7 00002 2361 00 ldq pr7|2 log_read_data.n_segments 004541 aa 6 00317 7561 00 stq pr6|207 saved_n_segments STATEMENT 1 ON LINE 972 new_log_read_data_ptr -> log_read_data.header = log_read_data.header; 004542 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 004543 aa 000 100 100 500 mlr (pr),(pr),fill(000) 004544 aa 5 00000 00 0520 desc9a pr5|0,336 log_read_data.header 004545 aa 7 00000 00 0520 desc9a pr7|0,336 log_read_data.header STATEMENT 1 ON LINE 973 new_log_read_data_ptr -> log_read_data.n_segments = saved_n_segments; 004546 aa 7 00002 7561 00 stq pr7|2 log_read_data.n_segments STATEMENT 1 ON LINE 974 system_area_ptr = get_system_free_area_ (); 004547 aa 6 00116 3521 00 epp2 pr6|78 system_area_ptr 004550 aa 6 01050 2521 00 spri2 pr6|552 004551 aa 6 01046 6211 00 eax1 pr6|550 004552 aa 004000 4310 07 fld 2048,dl 004553 aa 6 00044 3701 20 epp4 pr6|36,* 004554 la 4 00026 3521 20 epp2 pr4|22,* get_system_free_area_ 004555 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 975 free log_read_data_ptr -> log_read_data in (system_area); 004556 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004557 aa 7 00002 2361 00 ldq pr7|2 log_read_data.n_segments 004560 aa 000072 4020 07 mpy 58,dl 004561 aa 000125 0760 07 adq 85,dl 004562 aa 6 00134 3715 00 epp5 pr6|92 log_read_data_ptr 004563 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 977 log_read_data_ptr = new_log_read_data_ptr; 004564 aa 6 00314 3735 20 epp7 pr6|204,* new_log_read_data_ptr 004565 aa 6 00134 6535 00 spri7 pr6|92 log_read_data_ptr STATEMENT 1 ON LINE 978 new_log_read_data_ptr = null (); 004566 aa 773256 2370 04 ldaq -2386,ic 000044 = 077777000043 000001000000 004567 aa 6 00314 7571 00 staq pr6|204 new_log_read_data_ptr STATEMENT 1 ON LINE 979 end; STATEMENT 1 ON LINE 981 log_read_data.history_complete = "1"b; 004570 aa 400000 2350 03 lda 131072,du 004571 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004572 aa 7 00003 7551 00 sta pr7|3 log_read_data.history_complete STATEMENT 1 ON LINE 983 return; 004573 aa 6 00306 6101 00 rtcd pr6|198 STATEMENT 1 ON LINE 984 end get_complete_history; END PROCEDURE get_complete_history BEGIN PROCEDURE update_procedure ENTRY TO update_procedure STATEMENT 1 ON LINE 991 update_procedure: procedure (); 004574 aa 6 00322 6501 00 spri4 pr6|210 STATEMENT 1 ON LINE 994 log_message_ptr = P_log_message_ptr; 004575 aa 6 00154 3735 20 epp7 pr6|108,* P_log_message_ptr 004576 aa 7 00000 3735 20 epp7 pr7|0,* P_log_message_ptr 004577 aa 6 00144 6535 00 spri7 pr6|100 log_message_ptr STATEMENT 1 ON LINE 995 if log_read_data.allocate_copies then log_message_ptr = lookup_message (log_message_ptr); 004600 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 004601 aa 5 00005 2351 00 lda pr5|5 log_read_data.allocate_copies 004602 aa 000003 6000 04 tze 3,ic 004605 004603 aa 001571 3520 04 epp2 889,ic 006374 = 000004000000 004604 aa 000711 6700 04 tsp4 457,ic 005515 STATEMENT 1 ON LINE 997 if (log_message_ptr = null ()) then call finished (error_table_$fatal_error); 004605 aa 6 00144 2371 00 ldaq pr6|100 log_message_ptr 004606 aa 773236 6770 04 eraq -2402,ic 000044 = 077777000043 000001000000 004607 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 004610 aa 000010 6010 04 tnz 8,ic 004620 004611 aa 6 00044 3701 20 epp4 pr6|36,* 004612 la 4 00012 3521 20 epp2 pr4|10,* error_table_$fatal_error 004613 aa 6 01072 2521 00 spri2 pr6|570 004614 aa 6 01070 3521 00 epp2 pr6|568 004615 aa 004000 4310 07 fld 2048,dl 004616 aa 2 00000 7571 00 staq pr2|0 004617 aa 001455 6700 04 tsp4 813,ic 006274 STATEMENT 1 ON LINE 1000 if log_read_data.call_procedures then do; 004620 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004621 aa 7 00004 2351 00 lda pr7|4 log_read_data.call_procedures 004622 aa 000017 6000 04 tze 15,ic 004641 STATEMENT 1 ON LINE 1001 call log_read_data.ev.update (P_message_sequence, log_read_data.reader_data_ptr, P_log_message_ptr, code); 004623 aa 6 00156 3521 20 epp2 pr6|110,* P_message_sequence 004624 aa 6 01100 2521 00 spri2 pr6|576 004625 aa 7 00012 3521 00 epp2 pr7|10 log_read_data.reader_data_ptr 004626 aa 6 01102 2521 00 spri2 pr6|578 004627 aa 6 00154 3521 20 epp2 pr6|108,* P_log_message_ptr 004630 aa 6 01104 2521 00 spri2 pr6|580 004631 aa 6 00101 3521 00 epp2 pr6|65 code 004632 aa 6 01106 2521 00 spri2 pr6|582 004633 aa 6 01076 6211 00 eax1 pr6|574 004634 aa 020000 4310 07 fld 8192,dl 004635 aa 7 00064 3521 00 epp2 pr7|52 log_read_data.update 004636 aa 0 00617 7001 00 tsx0 pr0|399 call_ent_var STATEMENT 1 ON LINE 1003 call finished (code); 004637 aa 001553 3520 04 epp2 875,ic 006412 = 000002000000 004640 aa 001434 6700 04 tsp4 796,ic 006274 STATEMENT 1 ON LINE 1004 end; STATEMENT 1 ON LINE 1006 message_sequence = P_message_sequence; 004641 aa 6 00156 2361 20 ldq pr6|110,* P_message_sequence 004642 aa 6 00122 7561 00 stq pr6|82 message_sequence STATEMENT 1 ON LINE 1007 log_segment_ptr = setwordno (log_message_ptr, 0); 004643 aa 6 00144 3525 20 epbp2 pr6|100,* log_message_ptr 004644 aa 6 00142 2521 00 spri2 pr6|98 log_segment_ptr STATEMENT 1 ON LINE 1008 call log_segment_$get_service_bit (log_segment_ptr, log_in_service, code); 004645 aa 6 00142 3521 00 epp2 pr6|98 log_segment_ptr 004646 aa 6 01100 2521 00 spri2 pr6|576 004647 aa 6 00120 3521 00 epp2 pr6|80 log_in_service 004650 aa 6 01102 2521 00 spri2 pr6|578 004651 aa 6 00101 3521 00 epp2 pr6|65 code 004652 aa 6 01104 2521 00 spri2 pr6|580 004653 aa 6 01076 6211 00 eax1 pr6|574 004654 aa 014000 4310 07 fld 6144,dl 004655 aa 6 00044 3701 20 epp4 pr6|36,* 004656 la 4 00050 3521 20 epp2 pr4|40,* log_segment_$get_service_bit 004657 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1009 if code ^= 0 then call finished (code); 004660 aa 6 00101 2361 00 ldq pr6|65 code 004661 aa 000003 6000 04 tze 3,ic 004664 004662 aa 001530 3520 04 epp2 856,ic 006412 = 000002000000 004663 aa 001411 6700 04 tsp4 777,ic 006274 STATEMENT 1 ON LINE 1010 if message_sequence >= log_segment.limits.first_sequence & message_sequence <= log_segment.limits.last_sequence & log_in_service then call finished (0); 004664 aa 6 00122 2361 00 ldq pr6|82 message_sequence 004665 aa 6 00142 3735 20 epp7 pr6|98,* log_segment_ptr 004666 aa 7 00056 1161 00 cmpq pr7|46 log_segment.first_sequence 004667 aa 000011 6040 04 tmi 9,ic 004700 004670 aa 7 00057 1161 00 cmpq pr7|47 log_segment.last_sequence 004671 aa 000007 6054 04 tpnz 7,ic 004700 004672 aa 6 00120 2351 00 lda pr6|80 log_in_service 004673 aa 400000 3150 03 cana 131072,du 004674 aa 000004 6000 04 tze 4,ic 004700 004675 aa 6 01112 4501 00 stz pr6|586 004676 aa 001436 3520 04 epp2 798,ic 006334 = 000002000000 004677 aa 001375 6700 04 tsp4 765,ic 006274 STATEMENT 1 ON LINE 1014 call log_read_$open (log_read_data.segments (1).dname, log_read_data.segments (1).ename, new_log_read_data_ptr, code); 004700 aa 773110 2360 04 ldq -2488,ic 000010 = 526000000250 004701 aa 6 01112 7561 00 stq pr6|586 004702 aa 773125 2360 04 ldq -2475,ic 000027 = 526000000040 004703 aa 6 01113 7561 00 stq pr6|587 004704 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004705 aa 7 00124 3521 00 epp2 pr7|84 log_read_data.dname 004706 aa 6 01116 2521 00 spri2 pr6|590 004707 aa 7 00176 3521 00 epp2 pr7|126 log_read_data.ename 004710 aa 6 01120 2521 00 spri2 pr6|592 004711 aa 6 00124 3521 00 epp2 pr6|84 new_log_read_data_ptr 004712 aa 6 01122 2521 00 spri2 pr6|594 004713 aa 6 00101 3521 00 epp2 pr6|65 code 004714 aa 6 01124 2521 00 spri2 pr6|596 004715 aa 6 01112 3521 00 epp2 pr6|586 004716 aa 6 01126 2521 00 spri2 pr6|598 004717 aa 6 01113 3521 00 epp2 pr6|587 004720 aa 6 01130 2521 00 spri2 pr6|600 004721 aa 773115 3520 04 epp2 -2483,ic 000036 = 464000000000 004722 aa 6 01132 2521 00 spri2 pr6|602 004723 aa 773112 3520 04 epp2 -2486,ic 000035 = 404000000043 004724 aa 6 01134 2521 00 spri2 pr6|604 004725 aa 6 01114 6211 00 eax1 pr6|588 004726 aa 020000 4310 07 fld 8192,dl 004727 aa 773260 3520 04 epp2 -2384,ic 000207 = 001460627000 004730 aa 0 00620 7001 00 tsx0 pr0|400 call_ext_in_desc STATEMENT 1 ON LINE 1016 if code ^= 0 then call finished (0); 004731 aa 6 00101 2361 00 ldq pr6|65 code 004732 aa 000004 6000 04 tze 4,ic 004736 004733 aa 6 01112 4501 00 stz pr6|586 004734 aa 001400 3520 04 epp2 768,ic 006334 = 000002000000 004735 aa 001337 6700 04 tsp4 735,ic 006274 STATEMENT 1 ON LINE 1018 call log_read_$position_sequence (new_log_read_data_ptr, message_sequence, "1"b /* here or later */, log_message_ptr, code); 004736 aa 400000 2350 03 lda 131072,du 004737 aa 6 01112 7551 00 sta pr6|586 004740 aa 6 00124 3521 00 epp2 pr6|84 new_log_read_data_ptr 004741 aa 6 01100 2521 00 spri2 pr6|576 004742 aa 6 00122 3521 00 epp2 pr6|82 message_sequence 004743 aa 6 01102 2521 00 spri2 pr6|578 004744 aa 6 01112 3521 00 epp2 pr6|586 004745 aa 6 01104 2521 00 spri2 pr6|580 004746 aa 6 00144 3521 00 epp2 pr6|100 log_message_ptr 004747 aa 6 01106 2521 00 spri2 pr6|582 004750 aa 6 00101 3521 00 epp2 pr6|65 code 004751 aa 6 01110 2521 00 spri2 pr6|584 004752 aa 6 01076 6211 00 eax1 pr6|574 004753 aa 024000 4310 07 fld 10240,dl 004754 aa 775155 3520 04 epp2 -1427,ic 002131 = 001460627000 004755 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1020 if code ^= 0 then do; 004756 aa 6 00101 2361 00 ldq pr6|65 code 004757 aa 000015 6000 04 tze 13,ic 004774 STATEMENT 1 ON LINE 1021 call log_read_$close (new_log_read_data_ptr, (0)); 004760 aa 6 01112 4501 00 stz pr6|586 004761 aa 6 00124 3521 00 epp2 pr6|84 new_log_read_data_ptr 004762 aa 6 01072 2521 00 spri2 pr6|570 004763 aa 6 01112 3521 00 epp2 pr6|586 004764 aa 6 01074 2521 00 spri2 pr6|572 004765 aa 6 01070 6211 00 eax1 pr6|568 004766 aa 010000 4310 07 fld 4096,dl 004767 aa 774371 3520 04 epp2 -1799,ic 001360 = 001460627000 004770 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1022 call finished (0); 004771 aa 6 01112 4501 00 stz pr6|586 004772 aa 001342 3520 04 epp2 738,ic 006334 = 000002000000 004773 aa 001301 6700 04 tsp4 705,ic 006274 STATEMENT 1 ON LINE 1023 end; STATEMENT 1 ON LINE 1025 if log_read_data.allocate_copies then /* held messages cannot be held across an update */ /* because the copy pointers cannot be preserved */ call free_held_messages; 004774 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 004775 aa 7 00005 2351 00 lda pr7|5 log_read_data.allocate_copies 004776 aa 000002 6000 04 tze 2,ic 005000 004777 aa 000742 6700 04 tsp4 482,ic 005741 STATEMENT 1 ON LINE 1029 call log_read_$close (log_read_data_ptr, (0)); 005000 aa 6 01112 4501 00 stz pr6|586 005001 aa 6 00134 3521 00 epp2 pr6|92 log_read_data_ptr 005002 aa 6 01072 2521 00 spri2 pr6|570 005003 aa 6 01112 3521 00 epp2 pr6|586 005004 aa 6 01074 2521 00 spri2 pr6|572 005005 aa 6 01070 6211 00 eax1 pr6|568 005006 aa 010000 4310 07 fld 4096,dl 005007 aa 774351 3520 04 epp2 -1815,ic 001360 = 001460627000 005010 aa 0 00621 7001 00 tsx0 pr0|401 call_ext_in STATEMENT 1 ON LINE 1030 log_read_data_ptr = new_log_read_data_ptr; 005011 aa 6 00124 3735 20 epp7 pr6|84,* new_log_read_data_ptr 005012 aa 6 00134 6535 00 spri7 pr6|92 log_read_data_ptr STATEMENT 1 ON LINE 1032 P_log_read_data_ptr = log_read_data_ptr; 005013 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005014 aa 6 00152 6535 20 spri7 pr6|106,* P_log_read_data_ptr STATEMENT 1 ON LINE 1033 P_log_message_ptr = log_message_ptr; 005015 aa 6 00144 3735 20 epp7 pr6|100,* log_message_ptr 005016 aa 6 00154 6535 20 spri7 pr6|108,* P_log_message_ptr STATEMENT 1 ON LINE 1034 call finished (0); 005017 aa 6 01112 4501 00 stz pr6|586 005020 aa 001314 3520 04 epp2 716,ic 006334 = 000002000000 005021 aa 001253 6700 04 tsp4 683,ic 006274 STATEMENT 1 ON LINE 1035 return; 005022 aa 6 00322 6101 00 rtcd pr6|210 STATEMENT 1 ON LINE 1037 end update_procedure; END PROCEDURE update_procedure BEGIN PROCEDURE short_hold_message ENTRY TO short_hold_message STATEMENT 1 ON LINE 1040 short_hold_message: procedure (P_message_ptr); 005023 aa 6 00330 6501 00 spri4 pr6|216 005024 aa 6 00332 2521 00 spri2 pr6|218 STATEMENT 1 ON LINE 1048 if P_message_ptr = null () then return; 005025 aa 2 00002 2371 20 ldaq pr2|2,* P_message_ptr 005026 aa 773016 6770 04 eraq -2546,ic 000044 = 077777000043 000001000000 005027 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005030 aa 000002 6010 04 tnz 2,ic 005032 005031 aa 6 00330 6101 00 rtcd pr6|216 STATEMENT 1 ON LINE 1050 if log_read_data.earlier_message.actual_ptr ^= null () then do; 005032 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005033 aa 7 00022 2371 00 ldaq pr7|18 log_read_data.actual_ptr 005034 aa 773010 6770 04 eraq -2552,ic 000044 = 077777000043 000001000000 005035 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005036 aa 000052 6000 04 tze 42,ic 005110 STATEMENT 1 ON LINE 1052 call lookup_node (log_read_data.earlier_message.actual_ptr, node_ptr, prev_node_ptr); 005037 aa 7 00022 3521 00 epp2 pr7|18 log_read_data.actual_ptr 005040 aa 6 01140 2521 00 spri2 pr6|608 005041 aa 6 00340 3521 00 epp2 pr6|224 node_ptr 005042 aa 6 01142 2521 00 spri2 pr6|610 005043 aa 6 00342 3521 00 epp2 pr6|226 prev_node_ptr 005044 aa 6 01144 2521 00 spri2 pr6|612 005045 aa 6 01136 3521 00 epp2 pr6|606 005046 aa 014000 4310 07 fld 6144,dl 005047 aa 2 00000 7571 00 staq pr2|0 005050 aa 000337 6700 04 tsp4 223,ic 005407 STATEMENT 1 ON LINE 1053 if node_ptr ^= null () then call dereference_node (node_ptr, prev_node_ptr); 005051 aa 6 00340 2371 00 ldaq pr6|224 node_ptr 005052 aa 772772 6770 04 eraq -2566,ic 000044 = 077777000043 000001000000 005053 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005054 aa 000004 6000 04 tze 4,ic 005060 005055 aa 001251 3520 04 epp2 681,ic 006326 = 000004000000 005056 aa 000317 6700 04 tsp4 207,ic 005375 005057 aa 000024 7100 04 tra 20,ic 005103 STATEMENT 1 ON LINE 1055 else free log_read_data.earlier_message.copy_ptr -> log_message; 005060 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005061 aa 7 00024 3715 20 epp5 pr7|20,* log_read_data.copy_ptr 005062 aa 5 00004 2351 00 lda pr5|4 log_message.data_lth 005063 aa 000022 7350 00 als 18 005064 aa 000066 7330 00 lrs 54 005065 aa 6 01150 7561 00 stq pr6|616 log_message.data_lth 005066 aa 5 00002 2351 00 lda pr5|2 log_message.data_class_lth 005067 aa 000011 7350 00 als 9 005070 aa 000077 7730 00 lrl 63 005071 aa 6 01151 7561 00 stq pr6|617 log_message.data_class_lth 005072 aa 5 00004 2351 00 lda pr5|4 log_message.text_lth 005073 aa 000066 7330 00 lrs 54 005074 aa 000030 0760 07 adq 24,dl 005075 aa 6 01151 0761 00 adq pr6|617 log_message.data_class_lth 005076 aa 000003 0760 07 adq 3,dl 005077 aa 000002 7320 00 qrs 2 005100 aa 6 01150 0761 00 adq pr6|616 log_message.data_lth 005101 aa 7 00024 3715 00 epp5 pr7|20 log_read_data.copy_ptr 005102 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 1056 log_read_data.earlier_message = null (); 005103 aa 772741 2370 04 ldaq -2591,ic 000044 = 077777000043 000001000000 005104 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005105 aa 7 00022 7571 00 staq pr7|18 log_read_data.actual_ptr 005106 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005107 aa 7 00024 7571 00 staq pr7|20 log_read_data.copy_ptr STATEMENT 1 ON LINE 1057 end; STATEMENT 1 ON LINE 1059 log_read_data.earlier_message = log_read_data.latest_message; 005110 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005111 aa 7 00016 2371 00 ldaq pr7|14 log_read_data.latest_message 005112 aa 7 00022 7571 00 staq pr7|18 log_read_data.earlier_message 005113 aa 7 00020 2371 00 ldaq pr7|16 log_read_data.latest_message 005114 aa 7 00024 7571 00 staq pr7|20 log_read_data.earlier_message STATEMENT 1 ON LINE 1061 mp = P_message_ptr; 005115 aa 6 00332 3735 20 epp7 pr6|218,* 005116 aa 7 00002 3715 20 epp5 pr7|2,* P_message_ptr 005117 aa 5 00000 3715 20 epp5 pr5|0,* P_message_ptr 005120 aa 6 00336 6515 00 spri5 pr6|222 mp STATEMENT 1 ON LINE 1062 call lookup_node (mp, node_ptr, (null ())); 005121 aa 772723 3534 24 epp3 -2605,ic* 005122 aa 6 01152 2535 00 spri3 pr6|618 005123 aa 001173 3520 04 epp2 635,ic 006316 = 000006000000 005124 aa 000263 6700 04 tsp4 179,ic 005407 STATEMENT 1 ON LINE 1063 if node_ptr ^= null () then do; 005125 aa 6 00340 2371 00 ldaq pr6|224 node_ptr 005126 aa 772716 6770 04 eraq -2610,ic 000044 = 077777000043 000001000000 005127 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005130 aa 000011 6000 04 tze 9,ic 005141 STATEMENT 1 ON LINE 1065 node_ptr -> log_held_message_node.reference_count = node_ptr -> log_held_message_node.reference_count + 1; 005131 aa 6 00340 3735 20 epp7 pr6|224,* node_ptr 005132 aa 7 00004 0541 00 aos pr7|4 log_held_message_node.reference_count STATEMENT 1 ON LINE 1066 log_read_data.latest_message = node_ptr -> log_held_message_node.message; 005133 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 005134 aa 7 00000 2371 00 ldaq pr7|0 log_held_message_node.message 005135 aa 5 00016 7571 00 staq pr5|14 log_read_data.latest_message 005136 aa 7 00002 2371 00 ldaq pr7|2 log_held_message_node.message 005137 aa 5 00020 7571 00 staq pr5|16 log_read_data.latest_message STATEMENT 1 ON LINE 1067 end; 005140 aa 000015 7100 04 tra 13,ic 005155 STATEMENT 1 ON LINE 1068 else do; STATEMENT 1 ON LINE 1069 log_read_data.latest_message.actual_ptr = mp; 005141 aa 6 00336 3735 20 epp7 pr6|222,* mp 005142 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 005143 aa 5 00016 6535 00 spri7 pr5|14 log_read_data.actual_ptr STATEMENT 1 ON LINE 1070 call allocate_copy (mp, log_read_data.latest_message.copy_ptr); 005144 aa 6 00336 3521 00 epp2 pr6|222 mp 005145 aa 6 01140 2521 00 spri2 pr6|608 005146 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 005147 aa 5 00020 3521 00 epp2 pr5|16 log_read_data.copy_ptr 005150 aa 6 01142 2521 00 spri2 pr6|610 005151 aa 6 01136 3521 00 epp2 pr6|606 005152 aa 010000 4310 07 fld 4096,dl 005153 aa 2 00000 7571 00 staq pr2|0 005154 aa 000474 6700 04 tsp4 316,ic 005650 STATEMENT 1 ON LINE 1071 end; STATEMENT 1 ON LINE 1072 P_message_ptr = log_read_data.latest_message.copy_ptr; 005155 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005156 aa 7 00020 3735 20 epp7 pr7|16,* log_read_data.copy_ptr 005157 aa 6 00332 3715 20 epp5 pr6|218,* 005160 aa 5 00002 6535 20 spri7 pr5|2,* P_message_ptr STATEMENT 1 ON LINE 1073 return; 005161 aa 6 00330 6101 00 rtcd pr6|216 STATEMENT 1 ON LINE 1074 end short_hold_message; END PROCEDURE short_hold_message BEGIN PROCEDURE hold_message ENTRY TO hold_message STATEMENT 1 ON LINE 1076 hold_message: procedure (P_message_ptr, P_message_copy_ptr); 005162 aa 6 00344 6501 00 spri4 pr6|228 005163 aa 6 00346 2521 00 spri2 pr6|230 STATEMENT 1 ON LINE 1084 mp = P_message_ptr; 005164 aa 2 00002 3735 20 epp7 pr2|2,* P_message_ptr 005165 aa 7 00000 3735 20 epp7 pr7|0,* P_message_ptr 005166 aa 6 00352 6535 00 spri7 pr6|234 mp STATEMENT 1 ON LINE 1086 call lookup_node (mp, node_ptr, (null ())); 005167 aa 772655 3714 24 epp5 -2643,ic* 005170 aa 6 01154 6515 00 spri5 pr6|620 005171 aa 001115 3520 04 epp2 589,ic 006306 = 000006000000 005172 aa 000215 6700 04 tsp4 141,ic 005407 STATEMENT 1 ON LINE 1087 if node_ptr = null () then do; 005173 aa 6 00354 2371 00 ldaq pr6|236 node_ptr 005174 aa 772650 6770 04 eraq -2648,ic 000044 = 077777000043 000001000000 005175 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005176 aa 000012 6010 04 tnz 10,ic 005210 STATEMENT 1 ON LINE 1088 node_ptr = new_node (); 005177 aa 001103 3520 04 epp2 579,ic 006302 = 000002000000 005200 aa 000252 6700 04 tsp4 170,ic 005452 STATEMENT 1 ON LINE 1089 node_ptr -> log_held_message_node.actual_ptr = mp; 005201 aa 6 00352 3735 20 epp7 pr6|234,* mp 005202 aa 6 00354 6535 20 spri7 pr6|236,* log_held_message_node.actual_ptr STATEMENT 1 ON LINE 1090 node_ptr -> log_held_message_node.copy_ptr = P_message_copy_ptr; 005203 aa 6 00346 3715 20 epp5 pr6|230,* 005204 aa 5 00004 3535 20 epp3 pr5|4,* P_message_copy_ptr 005205 aa 3 00000 3535 20 epp3 pr3|0,* P_message_copy_ptr 005206 aa 6 00354 3515 20 epp1 pr6|236,* node_ptr 005207 aa 1 00002 2535 00 spri3 pr1|2 log_held_message_node.copy_ptr STATEMENT 1 ON LINE 1091 end; STATEMENT 1 ON LINE 1092 node_ptr -> log_held_message_node.reference_count = node_ptr -> log_held_message_node.reference_count + 1; 005210 aa 6 00354 3735 20 epp7 pr6|236,* node_ptr 005211 aa 7 00004 0541 00 aos pr7|4 log_held_message_node.reference_count STATEMENT 1 ON LINE 1093 return; 005212 aa 6 00344 6101 00 rtcd pr6|228 STATEMENT 1 ON LINE 1094 end hold_message; END PROCEDURE hold_message BEGIN PROCEDURE free_message ENTRY TO free_message STATEMENT 1 ON LINE 1096 free_message: procedure (P_message_ptr); 005213 aa 6 00356 6501 00 spri4 pr6|238 005214 aa 6 00360 2521 00 spri2 pr6|240 STATEMENT 1 ON LINE 1105 mp = P_message_ptr; 005215 aa 2 00002 3735 20 epp7 pr2|2,* P_message_ptr 005216 aa 7 00000 3735 20 epp7 pr7|0,* P_message_ptr 005217 aa 6 00364 6535 00 spri7 pr6|244 mp STATEMENT 1 ON LINE 1106 prev_node_ptr = null (); 005220 aa 772624 2370 04 ldaq -2668,ic 000044 = 077777000043 000001000000 005221 aa 6 00366 7571 00 staq pr6|246 prev_node_ptr STATEMENT 1 ON LINE 1107 node_ptr = log_read_data.first_held_message_ptr; 005222 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 005223 aa 5 00030 3715 20 epp5 pr5|24,* log_read_data.first_held_message_ptr 005224 aa 6 00370 6515 00 spri5 pr6|248 node_ptr STATEMENT 1 ON LINE 1108 do while (node_ptr ^= null ()); 005225 aa 000000 0110 03 nop 0,du 005226 aa 6 00370 2371 00 ldaq pr6|248 node_ptr 005227 aa 772615 6770 04 eraq -2675,ic 000044 = 077777000043 000001000000 005230 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005231 aa 000012 6000 04 tze 10,ic 005243 STATEMENT 1 ON LINE 1109 if node_ptr -> log_held_message_node.copy_ptr = mp then go to FOUND_NODE; 005232 aa 6 00370 3735 20 epp7 pr6|248,* node_ptr 005233 aa 7 00002 2371 00 ldaq pr7|2 log_held_message_node.copy_ptr 005234 aa 6 00364 6771 00 eraq pr6|244 mp 005235 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005236 aa 000060 6000 04 tze 48,ic 005316 STATEMENT 1 ON LINE 1111 prev_node_ptr = node_ptr; 005237 aa 6 00366 6535 00 spri7 pr6|246 prev_node_ptr STATEMENT 1 ON LINE 1112 node_ptr = node_ptr -> log_held_message_node.next_ptr; 005240 aa 7 00006 3715 20 epp5 pr7|6,* log_held_message_node.next_ptr 005241 aa 6 00370 6515 00 spri5 pr6|248 node_ptr STATEMENT 1 ON LINE 1113 end; 005242 aa 777764 7100 04 tra -12,ic 005226 STATEMENT 1 ON LINE 1115 call sub_err_ (0, "log_read_", ACTION_CAN_RESTART, null (), (0), "free_message failed to find message ^p on held list.", mp); 005243 aa 6 01156 4501 00 stz pr6|622 005244 aa 772604 2370 04 ldaq -2684,ic 000050 = 154157147137 162145141144 005245 aa 6 01160 7571 00 staq pr6|624 005246 aa 137000 2350 03 lda 48640,du 005247 aa 6 01162 7551 00 sta pr6|626 005250 aa 772574 3734 24 epp7 -2692,ic* 005251 aa 6 01164 6535 00 spri7 pr6|628 005252 aa 6 01163 4501 00 stz pr6|627 005253 aa 000 100 100 404 mlr (ic),(pr),fill(000) 005254 aa 772665 00 0064 desc9a -2635,52 000140 = 146162145145 005255 aa 6 01166 00 0064 desc9a pr6|630,52 005256 aa 6 01156 3521 00 epp2 pr6|622 005257 aa 6 01206 2521 00 spri2 pr6|646 005260 aa 6 01160 3521 00 epp2 pr6|624 005261 aa 6 01210 2521 00 spri2 pr6|648 005262 aa 772546 3520 04 epp2 -2714,ic 000030 = 000000000000 005263 aa 6 01212 2521 00 spri2 pr6|650 005264 aa 6 01164 3521 00 epp2 pr6|628 005265 aa 6 01214 2521 00 spri2 pr6|652 005266 aa 6 01163 3521 00 epp2 pr6|627 005267 aa 6 01216 2521 00 spri2 pr6|654 005270 aa 6 01166 3521 00 epp2 pr6|630 005271 aa 6 01220 2521 00 spri2 pr6|656 005272 aa 6 00364 3521 00 epp2 pr6|244 mp 005273 aa 6 01222 2521 00 spri2 pr6|658 005274 aa 772517 3520 04 epp2 -2737,ic 000013 = 404000000005 005275 aa 6 01224 2521 00 spri2 pr6|660 005276 aa 6 01234 2521 00 spri2 pr6|668 005277 aa 772515 3520 04 epp2 -2739,ic 000014 = 524000000011 005300 aa 6 01226 2521 00 spri2 pr6|662 005301 aa 772532 3520 04 epp2 -2726,ic 000033 = 514000000044 005302 aa 6 01230 2521 00 spri2 pr6|664 005303 aa 772533 3520 04 epp2 -2725,ic 000036 = 464000000000 005304 aa 6 01232 2521 00 spri2 pr6|666 005305 aa 6 01240 2521 00 spri2 pr6|672 005306 aa 772501 3520 04 epp2 -2751,ic 000007 = 524000000064 005307 aa 6 01236 2521 00 spri2 pr6|670 005310 aa 6 01204 6211 00 eax1 pr6|644 005311 aa 034000 4310 07 fld 14336,dl 005312 aa 6 00044 3701 20 epp4 pr6|36,* 005313 la 4 00056 3521 20 epp2 pr4|46,* sub_err_ 005314 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1116 return; 005315 aa 6 00356 6101 00 rtcd pr6|238 STATEMENT 1 ON LINE 1119 FOUND_NODE: DEREFERENCE_COMMON: if node_ptr -> log_held_message_node.reference_count > 1 then do; 005316 aa 6 00370 3735 20 epp7 pr6|248,* node_ptr 005317 aa 7 00004 2361 00 ldq pr7|4 log_held_message_node.reference_count 005320 aa 000001 1160 07 cmpq 1,dl 005321 aa 000004 6044 04 tmoz 4,ic 005325 STATEMENT 1 ON LINE 1123 node_ptr -> log_held_message_node.reference_count = node_ptr -> log_held_message_node.reference_count - 1; 005322 aa 000001 3360 07 lcq 1,dl 005323 aa 7 00004 0561 00 asq pr7|4 log_held_message_node.reference_count STATEMENT 1 ON LINE 1124 return; 005324 aa 6 00356 6101 00 rtcd pr6|238 STATEMENT 1 ON LINE 1125 end; STATEMENT 1 ON LINE 1128 free node_ptr -> log_held_message_node.copy_ptr -> log_message; 005325 aa 7 00002 3715 20 epp5 pr7|2,* log_held_message_node.copy_ptr 005326 aa 5 00004 2351 00 lda pr5|4 log_message.data_lth 005327 aa 000022 7350 00 als 18 005330 aa 000066 7330 00 lrs 54 005331 aa 6 01163 7561 00 stq pr6|627 log_message.data_lth 005332 aa 5 00002 2351 00 lda pr5|2 log_message.data_class_lth 005333 aa 000011 7350 00 als 9 005334 aa 000077 7730 00 lrl 63 005335 aa 6 01156 7561 00 stq pr6|622 log_message.data_class_lth 005336 aa 5 00004 2351 00 lda pr5|4 log_message.text_lth 005337 aa 000066 7330 00 lrs 54 005340 aa 000030 0760 07 adq 24,dl 005341 aa 6 01156 0761 00 adq pr6|622 log_message.data_class_lth 005342 aa 000003 0760 07 adq 3,dl 005343 aa 000002 7320 00 qrs 2 005344 aa 6 01163 0761 00 adq pr6|627 log_message.data_lth 005345 aa 7 00002 3715 00 epp5 pr7|2 log_held_message_node.copy_ptr 005346 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 1129 next_node_ptr = node_ptr -> log_held_message_node.next_ptr; 005347 aa 6 00370 3735 20 epp7 pr6|248,* node_ptr 005350 aa 7 00006 3735 20 epp7 pr7|6,* log_held_message_node.next_ptr 005351 aa 6 00372 6535 00 spri7 pr6|250 next_node_ptr STATEMENT 1 ON LINE 1131 if prev_node_ptr ^= null () then prev_node_ptr -> log_held_message_node.next_ptr = next_node_ptr; 005352 aa 6 00366 2371 00 ldaq pr6|246 prev_node_ptr 005353 aa 772471 6770 04 eraq -2759,ic 000044 = 077777000043 000001000000 005354 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005355 aa 000004 6000 04 tze 4,ic 005361 005356 aa 6 00366 3715 20 epp5 pr6|246,* prev_node_ptr 005357 aa 5 00006 6535 00 spri7 pr5|6 log_held_message_node.next_ptr 005360 aa 000004 7100 04 tra 4,ic 005364 STATEMENT 1 ON LINE 1132 else log_read_data.first_held_message_ptr = prev_node_ptr; 005361 aa 6 00366 3715 20 epp5 pr6|246,* prev_node_ptr 005362 aa 6 00134 3535 20 epp3 pr6|92,* log_read_data_ptr 005363 aa 3 00030 6515 00 spri5 pr3|24 log_read_data.first_held_message_ptr STATEMENT 1 ON LINE 1133 if log_read_data.last_held_message_ptr = node_ptr then log_read_data.last_held_message_ptr = prev_node_ptr; 005364 aa 6 00134 3535 20 epp3 pr6|92,* log_read_data_ptr 005365 aa 3 00032 2371 00 ldaq pr3|26 log_read_data.last_held_message_ptr 005366 aa 6 00370 6771 00 eraq pr6|248 node_ptr 005367 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005370 aa 000002 6010 04 tnz 2,ic 005372 005371 aa 3 00032 6515 00 spri5 pr3|26 log_read_data.last_held_message_ptr STATEMENT 1 ON LINE 1136 free node_ptr -> log_held_message_node; 005372 aa 6 00370 3715 00 epp5 pr6|248 node_ptr 005373 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 1137 return; 005374 aa 6 00356 6101 00 rtcd pr6|238 ENTRY TO dereference_node STATEMENT 1 ON LINE 1139 dereference_node: entry (P_node_ptr, P_prev_node_ptr); 005375 aa 6 00356 6501 00 spri4 pr6|238 005376 aa 6 00360 2521 00 spri2 pr6|240 STATEMENT 1 ON LINE 1145 prev_node_ptr = P_prev_node_ptr; 005377 aa 6 00360 3735 20 epp7 pr6|240,* 005400 aa 7 00004 3715 20 epp5 pr7|4,* P_prev_node_ptr 005401 aa 5 00000 3715 20 epp5 pr5|0,* P_prev_node_ptr 005402 aa 6 00366 6515 00 spri5 pr6|246 prev_node_ptr STATEMENT 1 ON LINE 1146 node_ptr = P_node_ptr; 005403 aa 7 00002 3535 20 epp3 pr7|2,* P_node_ptr 005404 aa 3 00000 3535 20 epp3 pr3|0,* P_node_ptr 005405 aa 6 00370 2535 00 spri3 pr6|248 node_ptr STATEMENT 1 ON LINE 1147 go to DEREFERENCE_COMMON; 005406 aa 777710 7100 04 tra -56,ic 005316 STATEMENT 1 ON LINE 1149 end free_message; END PROCEDURE free_message BEGIN PROCEDURE lookup_node ENTRY TO lookup_node STATEMENT 1 ON LINE 1151 lookup_node: procedure (P_message_ptr, P_node_ptr, P_prev_node_ptr); 005407 aa 6 00374 6501 00 spri4 pr6|252 005410 aa 6 00376 2521 00 spri2 pr6|254 STATEMENT 1 ON LINE 1156 mp = P_message_ptr; 005411 aa 2 00002 3735 20 epp7 pr2|2,* P_message_ptr 005412 aa 7 00000 3735 20 epp7 pr7|0,* P_message_ptr 005413 aa 6 00402 6535 00 spri7 pr6|258 mp STATEMENT 1 ON LINE 1157 node_ptr = log_read_data.first_held_message_ptr; 005414 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 005415 aa 5 00030 3715 20 epp5 pr5|24,* log_read_data.first_held_message_ptr 005416 aa 6 00404 6515 00 spri5 pr6|260 node_ptr STATEMENT 1 ON LINE 1158 prev_node_ptr = null (); 005417 aa 772425 2370 04 ldaq -2795,ic 000044 = 077777000043 000001000000 005420 aa 6 00406 7571 00 staq pr6|262 prev_node_ptr STATEMENT 1 ON LINE 1159 do while (node_ptr ^= null ()); 005421 aa 000000 0110 03 nop 0,du 005422 aa 6 00404 2371 00 ldaq pr6|260 node_ptr 005423 aa 772421 6770 04 eraq -2799,ic 000044 = 077777000043 000001000000 005424 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005425 aa 000012 6000 04 tze 10,ic 005437 STATEMENT 1 ON LINE 1160 if node_ptr -> log_held_message_node.actual_ptr = mp then go to FOUND_NODE; 005426 aa 6 00404 2371 20 ldaq pr6|260,* log_held_message_node.actual_ptr 005427 aa 6 00402 6771 00 eraq pr6|258 mp 005430 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005431 aa 000013 6000 04 tze 11,ic 005444 STATEMENT 1 ON LINE 1162 prev_node_ptr = node_ptr; 005432 aa 6 00404 3735 20 epp7 pr6|260,* node_ptr 005433 aa 6 00406 6535 00 spri7 pr6|262 prev_node_ptr STATEMENT 1 ON LINE 1163 node_ptr = node_ptr -> log_held_message_node.next_ptr; 005434 aa 7 00006 3715 20 epp5 pr7|6,* log_held_message_node.next_ptr 005435 aa 6 00404 6515 00 spri5 pr6|260 node_ptr STATEMENT 1 ON LINE 1164 end; 005436 aa 777764 7100 04 tra -12,ic 005422 STATEMENT 1 ON LINE 1165 P_node_ptr, P_prev_node_ptr = null (); 005437 aa 772405 3734 24 epp7 -2811,ic* 005440 aa 6 00376 3715 20 epp5 pr6|254,* 005441 aa 5 00004 6535 20 spri7 pr5|4,* P_node_ptr 005442 aa 5 00006 6535 20 spri7 pr5|6,* P_prev_node_ptr STATEMENT 1 ON LINE 1166 return; 005443 aa 6 00374 6101 00 rtcd pr6|252 STATEMENT 1 ON LINE 1168 FOUND_NODE: P_node_ptr = node_ptr; 005444 aa 6 00404 3735 20 epp7 pr6|260,* node_ptr 005445 aa 6 00376 3715 20 epp5 pr6|254,* 005446 aa 5 00004 6535 20 spri7 pr5|4,* P_node_ptr STATEMENT 1 ON LINE 1170 P_prev_node_ptr = prev_node_ptr; 005447 aa 6 00406 3535 20 epp3 pr6|262,* prev_node_ptr 005450 aa 5 00006 2535 20 spri3 pr5|6,* P_prev_node_ptr STATEMENT 1 ON LINE 1171 return; 005451 aa 6 00374 6101 00 rtcd pr6|252 STATEMENT 1 ON LINE 1172 end lookup_node; END PROCEDURE lookup_node BEGIN PROCEDURE new_node ENTRY TO new_node STATEMENT 1 ON LINE 1174 new_node: procedure returns (pointer); 005452 aa 6 00410 6501 00 spri4 pr6|264 005453 aa 6 00412 2521 00 spri2 pr6|266 STATEMENT 1 ON LINE 1179 system_area_ptr = get_system_free_area_ (); 005454 aa 6 00116 3521 00 epp2 pr6|78 system_area_ptr 005455 aa 6 01246 2521 00 spri2 pr6|678 005456 aa 6 01244 6211 00 eax1 pr6|676 005457 aa 004000 4310 07 fld 2048,dl 005460 aa 6 00044 3701 20 epp4 pr6|36,* 005461 la 4 00026 3521 20 epp2 pr4|22,* get_system_free_area_ 005462 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 1180 allocate log_held_message_node in (system_area) set (node_ptr); 005463 aa 000010 2360 07 ldq 8,dl 005464 aa 6 00116 3521 20 epp2 pr6|78,* system_area 005465 aa 0 01402 7001 00 tsx0 pr0|770 op_alloc_ 005466 aa 777775 7100 04 tra -3,ic 005463 005467 aa 6 00416 2521 00 spri2 pr6|270 node_ptr STATEMENT 1 ON LINE 1181 node_ptr -> log_held_message_node.next_ptr = null (); 005470 aa 772354 2370 04 ldaq -2836,ic 000044 = 077777000043 000001000000 005471 aa 2 00006 7571 00 staq pr2|6 log_held_message_node.next_ptr STATEMENT 1 ON LINE 1182 node_ptr -> log_held_message_node.reference_count = 0; 005472 aa 2 00004 4501 00 stz pr2|4 log_held_message_node.reference_count STATEMENT 1 ON LINE 1184 if log_read_data.first_held_message_ptr = null () then do; 005473 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005474 aa 7 00030 6771 00 eraq pr7|24 log_read_data.first_held_message_ptr 005475 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005476 aa 000010 6010 04 tnz 8,ic 005506 STATEMENT 1 ON LINE 1186 log_read_data.first_held_message_ptr, log_read_data.last_held_message_ptr = node_ptr; 005477 aa 7 00030 2521 00 spri2 pr7|24 log_read_data.first_held_message_ptr 005500 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005501 aa 7 00032 2521 00 spri2 pr7|26 log_read_data.last_held_message_ptr STATEMENT 1 ON LINE 1188 return (node_ptr); 005502 aa 6 00416 3735 20 epp7 pr6|270,* node_ptr 005503 aa 6 00412 3715 20 epp5 pr6|266,* 005504 aa 5 00002 6535 20 spri7 pr5|2,* 005505 aa 6 00410 6101 00 rtcd pr6|264 STATEMENT 1 ON LINE 1189 end; STATEMENT 1 ON LINE 1191 log_read_data.last_held_message_ptr -> log_held_message_node.next_ptr = node_ptr; 005506 aa 7 00032 3715 20 epp5 pr7|26,* log_read_data.last_held_message_ptr 005507 aa 5 00006 2521 00 spri2 pr5|6 log_held_message_node.next_ptr STATEMENT 1 ON LINE 1192 log_read_data.last_held_message_ptr = node_ptr; 005510 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005511 aa 7 00032 2521 00 spri2 pr7|26 log_read_data.last_held_message_ptr STATEMENT 1 ON LINE 1193 return (node_ptr); 005512 aa 6 00412 3735 20 epp7 pr6|266,* 005513 aa 7 00002 2521 20 spri2 pr7|2,* 005514 aa 6 00410 6101 00 rtcd pr6|264 STATEMENT 1 ON LINE 1194 end new_node; END PROCEDURE new_node BEGIN PROCEDURE lookup_message ENTRY TO lookup_message STATEMENT 1 ON LINE 1196 lookup_message: procedure (P_copy_ptr) returns (pointer); 005515 aa 6 00420 6501 00 spri4 pr6|272 005516 aa 6 00422 2521 00 spri2 pr6|274 STATEMENT 1 ON LINE 1203 mp = P_copy_ptr; 005517 aa 2 00002 3735 20 epp7 pr2|2,* P_copy_ptr 005520 aa 7 00000 3735 20 epp7 pr7|0,* P_copy_ptr 005521 aa 6 00430 6535 00 spri7 pr6|280 mp STATEMENT 1 ON LINE 1204 if mp = null () then return (null ()); 005522 aa 6 00430 2371 00 ldaq pr6|280 mp 005523 aa 772321 6770 04 eraq -2863,ic 000044 = 077777000043 000001000000 005524 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005525 aa 000004 6010 04 tnz 4,ic 005531 005526 aa 772316 2370 04 ldaq -2866,ic 000044 = 077777000043 000001000000 005527 aa 2 00004 7571 20 staq pr2|4,* 005530 aa 6 00420 6101 00 rtcd pr6|272 STATEMENT 1 ON LINE 1205 if mp = log_read_data.latest_message.copy_ptr then return (log_read_data.latest_message.actual_ptr); 005531 aa 6 00430 2371 00 ldaq pr6|280 mp 005532 aa 6 00134 3715 20 epp5 pr6|92,* log_read_data_ptr 005533 aa 5 00020 6771 00 eraq pr5|16 log_read_data.copy_ptr 005534 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005535 aa 000004 6010 04 tnz 4,ic 005541 005536 aa 5 00016 3535 20 epp3 pr5|14,* log_read_data.actual_ptr 005537 aa 2 00004 2535 20 spri3 pr2|4,* 005540 aa 6 00420 6101 00 rtcd pr6|272 STATEMENT 1 ON LINE 1207 if mp = log_read_data.earlier_message.copy_ptr then return (log_read_data.earlier_message.actual_ptr); 005541 aa 6 00430 2371 00 ldaq pr6|280 mp 005542 aa 5 00024 6771 00 eraq pr5|20 log_read_data.copy_ptr 005543 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005544 aa 000004 6010 04 tnz 4,ic 005550 005545 aa 5 00022 3535 20 epp3 pr5|18,* log_read_data.actual_ptr 005546 aa 2 00004 2535 20 spri3 pr2|4,* 005547 aa 6 00420 6101 00 rtcd pr6|272 STATEMENT 1 ON LINE 1210 node_ptr = log_read_data.first_held_message_ptr; 005550 aa 5 00030 3535 20 epp3 pr5|24,* log_read_data.first_held_message_ptr 005551 aa 6 00426 2535 00 spri3 pr6|278 node_ptr STATEMENT 1 ON LINE 1211 do while (node_ptr ^= null ()); 005552 aa 6 00426 2371 00 ldaq pr6|278 node_ptr 005553 aa 772271 6770 04 eraq -2887,ic 000044 = 077777000043 000001000000 005554 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005555 aa 000015 6000 04 tze 13,ic 005572 STATEMENT 1 ON LINE 1212 if mp = node_ptr -> log_held_message_node.copy_ptr then return (node_ptr -> log_held_message_node.actual_ptr); 005556 aa 6 00430 2371 00 ldaq pr6|280 mp 005557 aa 6 00426 3735 20 epp7 pr6|278,* node_ptr 005560 aa 7 00002 6771 00 eraq pr7|2 log_held_message_node.copy_ptr 005561 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005562 aa 000005 6010 04 tnz 5,ic 005567 005563 aa 7 00000 3715 20 epp5 pr7|0,* log_held_message_node.actual_ptr 005564 aa 6 00422 3535 20 epp3 pr6|274,* 005565 aa 3 00004 6515 20 spri5 pr3|4,* 005566 aa 6 00420 6101 00 rtcd pr6|272 STATEMENT 1 ON LINE 1214 node_ptr = node_ptr -> log_held_message_node.next_ptr; 005567 aa 7 00006 3715 20 epp5 pr7|6,* log_held_message_node.next_ptr 005570 aa 6 00426 6515 00 spri5 pr6|278 node_ptr STATEMENT 1 ON LINE 1215 end; 005571 aa 777761 7100 04 tra -15,ic 005552 STATEMENT 1 ON LINE 1216 call sub_err_ (error_table_$no_log_message, "log_read_", ACTION_CANT_RESTART, null (), (0), "Invalid message pointer ^p.", mp); 005572 aa 772256 2370 04 ldaq -2898,ic 000050 = 154157147137 162145141144 005573 aa 6 01252 7571 00 staq pr6|682 005574 aa 137000 2350 03 lda 48640,du 005575 aa 6 01254 7551 00 sta pr6|684 005576 aa 772246 3734 24 epp7 -2906,ic* 005577 aa 6 01256 6535 00 spri7 pr6|686 005600 aa 6 01255 4501 00 stz pr6|685 005601 aa 000 100 100 404 mlr (ic),(pr),fill(000) 005602 aa 772310 00 0034 desc9a -2872,28 000111 = 111156166141 005603 aa 6 01260 00 0034 desc9a pr6|688,28 005604 aa 6 00044 3701 20 epp4 pr6|36,* 005605 la 4 00016 3521 20 epp2 pr4|14,* error_table_$no_log_message 005606 aa 6 01272 2521 00 spri2 pr6|698 005607 aa 6 01252 3521 00 epp2 pr6|682 005610 aa 6 01274 2521 00 spri2 pr6|700 005611 aa 772205 3520 04 epp2 -2939,ic 000016 = 400000000000 005612 aa 6 01276 2521 00 spri2 pr6|702 005613 aa 6 01256 3521 00 epp2 pr6|686 005614 aa 6 01300 2521 00 spri2 pr6|704 005615 aa 6 01255 3521 00 epp2 pr6|685 005616 aa 6 01302 2521 00 spri2 pr6|706 005617 aa 6 01260 3521 00 epp2 pr6|688 005620 aa 6 01304 2521 00 spri2 pr6|708 005621 aa 6 00430 3521 00 epp2 pr6|280 mp 005622 aa 6 01306 2521 00 spri2 pr6|710 005623 aa 772212 3520 04 epp2 -2934,ic 000035 = 404000000043 005624 aa 6 01310 2521 00 spri2 pr6|712 005625 aa 772167 3520 04 epp2 -2953,ic 000014 = 524000000011 005626 aa 6 01312 2521 00 spri2 pr6|714 005627 aa 772204 3520 04 epp2 -2940,ic 000033 = 514000000044 005630 aa 6 01314 2521 00 spri2 pr6|716 005631 aa 772205 3520 04 epp2 -2939,ic 000036 = 464000000000 005632 aa 6 01316 2521 00 spri2 pr6|718 005633 aa 6 01324 2521 00 spri2 pr6|724 005634 aa 772157 3520 04 epp2 -2961,ic 000013 = 404000000005 005635 aa 6 01320 2521 00 spri2 pr6|720 005636 aa 772150 3520 04 epp2 -2968,ic 000006 = 524000000033 005637 aa 6 01322 2521 00 spri2 pr6|722 005640 aa 6 01270 6211 00 eax1 pr6|696 005641 aa 034000 4310 07 fld 14336,dl 005642 la 4 00056 3521 20 epp2 pr4|46,* sub_err_ 005643 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1217 end lookup_message; 005644 aa 000027 7260 07 lxl6 23,dl 005645 aa 772236 3520 04 epp2 -2914,ic 000103 = 162145164165 005646 aa 0 00716 7001 00 tsx0 pr0|462 signal_op 005647 aa 6 00420 6101 00 rtcd pr6|272 END PROCEDURE lookup_message BEGIN PROCEDURE allocate_copy ENTRY TO allocate_copy STATEMENT 1 ON LINE 1219 allocate_copy: procedure (P_message_ptr, P_copy_ptr); 005650 aa 6 00432 6501 00 spri4 pr6|282 005651 aa 6 00434 2521 00 spri2 pr6|284 STATEMENT 1 ON LINE 1225 log_message_text_lth = P_message_ptr -> log_message.text_lth; 005652 aa 2 00002 3735 20 epp7 pr2|2,* P_message_ptr 005653 aa 7 00000 3735 20 epp7 pr7|0,* P_message_ptr 005654 aa 7 00004 2351 00 lda pr7|4 log_message.text_lth 005655 aa 000066 7330 00 lrs 54 005656 aa 6 00146 7561 00 stq pr6|102 log_message_text_lth STATEMENT 1 ON LINE 1226 log_message_data_class_lth = P_message_ptr -> log_message.data_class_lth; 005657 aa 7 00002 2351 00 lda pr7|2 log_message.data_class_lth 005660 aa 000011 7350 00 als 9 005661 aa 000077 7730 00 lrl 63 005662 aa 6 00147 7561 00 stq pr6|103 log_message_data_class_lth STATEMENT 1 ON LINE 1227 log_message_data_lth = P_message_ptr -> log_message.data_lth; 005663 aa 7 00004 2351 00 lda pr7|4 log_message.data_lth 005664 aa 000022 7350 00 als 18 005665 aa 000066 7330 00 lrs 54 005666 aa 6 00150 7561 00 stq pr6|104 log_message_data_lth STATEMENT 1 ON LINE 1228 allocate log_message in (caller_area) set (P_copy_ptr); 005667 aa 6 00146 2361 00 ldq pr6|102 log_message_text_lth 005670 aa 000030 0760 07 adq 24,dl 005671 aa 6 00147 0761 00 adq pr6|103 log_message_data_class_lth 005672 aa 000003 0760 07 adq 3,dl 005673 aa 000002 7320 00 qrs 2 005674 aa 6 00150 0761 00 adq pr6|104 log_message_data_lth 005675 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005676 aa 7 00014 3521 20 epp2 pr7|12,* caller_area 005677 aa 0 01402 7001 00 tsx0 pr0|770 op_alloc_ 005700 aa 777767 7100 04 tra -9,ic 005667 005701 aa 6 00434 3735 20 epp7 pr6|284,* 005702 aa 7 00004 2521 20 spri2 pr7|4,* P_copy_ptr 005703 aa 6 00146 2361 00 ldq pr6|102 log_message_text_lth 005704 aa 000066 7370 00 lls 54 005705 aa 2 00004 5511 60 stba pr2|4,60 log_message.text_lth 005706 aa 6 00147 2361 00 ldq pr6|103 log_message_data_class_lth 005707 aa 000066 7370 00 lls 54 005710 aa 2 00002 5511 20 stba pr2|2,20 log_message.data_class_lth 005711 aa 6 00150 2361 00 ldq pr6|104 log_message_data_lth 005712 aa 2 00004 5521 14 stbq pr2|4,14 log_message.data_lth STATEMENT 1 ON LINE 1229 P_copy_ptr -> log_message = P_message_ptr -> log_message; 005713 aa 7 00002 3715 20 epp5 pr7|2,* P_message_ptr 005714 aa 5 00000 3715 20 epp5 pr5|0,* P_message_ptr 005715 aa 5 00004 2351 00 lda pr5|4 log_message.data_lth 005716 aa 000022 7350 00 als 18 005717 aa 000066 7330 00 lrs 54 005720 aa 6 01326 7561 00 stq pr6|726 log_message.data_lth 005721 aa 5 00002 2351 00 lda pr5|2 log_message.data_class_lth 005722 aa 000011 7350 00 als 9 005723 aa 000077 7730 00 lrl 63 005724 aa 6 01327 7561 00 stq pr6|727 log_message.data_class_lth 005725 aa 5 00004 2351 00 lda pr5|4 log_message.text_lth 005726 aa 000066 7330 00 lrs 54 005727 aa 000030 0760 07 adq 24,dl 005730 aa 6 01327 0761 00 adq pr6|727 log_message.data_class_lth 005731 aa 000003 0760 07 adq 3,dl 005732 aa 000002 7320 00 qrs 2 005733 aa 6 01326 0761 00 adq pr6|726 log_message.data_lth 005734 aa 000002 7360 00 qls 2 005735 aa 000 140 100 540 mlr (pr,rl),(pr,rl),fill(000) 005736 aa 5 00000 00 0006 desc9a pr5|0,ql log_message 005737 aa 2 00000 00 0006 desc9a pr2|0,ql log_message STATEMENT 1 ON LINE 1230 return; 005740 aa 6 00432 6101 00 rtcd pr6|282 STATEMENT 1 ON LINE 1231 end allocate_copy; END PROCEDURE allocate_copy BEGIN PROCEDURE free_held_messages ENTRY TO free_held_messages STATEMENT 1 ON LINE 1233 free_held_messages: procedure; 005741 aa 6 00440 6501 00 spri4 pr6|288 STATEMENT 1 ON LINE 1239 if log_read_data.latest_message.actual_ptr ^= null () then do; 005742 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005743 aa 7 00016 2371 00 ldaq pr7|14 log_read_data.actual_ptr 005744 aa 772100 6770 04 eraq -3008,ic 000044 = 077777000043 000001000000 005745 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005746 aa 000051 6000 04 tze 41,ic 006017 STATEMENT 1 ON LINE 1241 call lookup_node (log_read_data.latest_message.actual_ptr, smp_this, (null ())); 005747 aa 772075 3714 24 epp5 -3011,ic* 005750 aa 6 01330 6515 00 spri5 pr6|728 005751 aa 7 00016 3521 00 epp2 pr7|14 log_read_data.actual_ptr 005752 aa 6 01334 2521 00 spri2 pr6|732 005753 aa 6 00446 3521 00 epp2 pr6|294 smp_this 005754 aa 6 01336 2521 00 spri2 pr6|734 005755 aa 6 01330 3521 00 epp2 pr6|728 005756 aa 6 01340 2521 00 spri2 pr6|736 005757 aa 6 01332 3521 00 epp2 pr6|730 005760 aa 014000 4310 07 fld 6144,dl 005761 aa 2 00000 7571 00 staq pr2|0 005762 aa 777425 6700 04 tsp4 -235,ic 005407 STATEMENT 1 ON LINE 1242 if smp_this = null () /* its NOT in the held chain */ then free log_read_data.latest_message.copy_ptr -> log_message; 005763 aa 6 00446 2371 00 ldaq pr6|294 smp_this 005764 aa 772060 6770 04 eraq -3024,ic 000044 = 077777000043 000001000000 005765 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 005766 aa 000024 6010 04 tnz 20,ic 006012 005767 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 005770 aa 7 00020 3715 20 epp5 pr7|16,* log_read_data.copy_ptr 005771 aa 5 00004 2351 00 lda pr5|4 log_message.data_lth 005772 aa 000022 7350 00 als 18 005773 aa 000066 7330 00 lrs 54 005774 aa 6 01344 7561 00 stq pr6|740 log_message.data_lth 005775 aa 5 00002 2351 00 lda pr5|2 log_message.data_class_lth 005776 aa 000011 7350 00 als 9 005777 aa 000077 7730 00 lrl 63 006000 aa 6 01345 7561 00 stq pr6|741 log_message.data_class_lth 006001 aa 5 00004 2351 00 lda pr5|4 log_message.text_lth 006002 aa 000066 7330 00 lrs 54 006003 aa 000030 0760 07 adq 24,dl 006004 aa 6 01345 0761 00 adq pr6|741 log_message.data_class_lth 006005 aa 000003 0760 07 adq 3,dl 006006 aa 000002 7320 00 qrs 2 006007 aa 6 01344 0761 00 adq pr6|740 log_message.data_lth 006010 aa 7 00020 3715 00 epp5 pr7|16 log_read_data.copy_ptr 006011 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 1244 log_read_data.latest_message = null (); 006012 aa 772032 2370 04 ldaq -3046,ic 000044 = 077777000043 000001000000 006013 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 006014 aa 7 00016 7571 00 staq pr7|14 log_read_data.actual_ptr 006015 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 006016 aa 7 00020 7571 00 staq pr7|16 log_read_data.copy_ptr STATEMENT 1 ON LINE 1245 end; STATEMENT 1 ON LINE 1247 if log_read_data.earlier_message.actual_ptr ^= null () then do; 006017 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 006020 aa 7 00022 2371 00 ldaq pr7|18 log_read_data.actual_ptr 006021 aa 772023 6770 04 eraq -3053,ic 000044 = 077777000043 000001000000 006022 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006023 aa 000051 6000 04 tze 41,ic 006074 STATEMENT 1 ON LINE 1249 call lookup_node (log_read_data.earlier_message.actual_ptr, smp_this, (null ())); 006024 aa 772020 3714 24 epp5 -3056,ic* 006025 aa 6 01330 6515 00 spri5 pr6|728 006026 aa 7 00022 3521 00 epp2 pr7|18 log_read_data.actual_ptr 006027 aa 6 01334 2521 00 spri2 pr6|732 006030 aa 6 00446 3521 00 epp2 pr6|294 smp_this 006031 aa 6 01336 2521 00 spri2 pr6|734 006032 aa 6 01330 3521 00 epp2 pr6|728 006033 aa 6 01340 2521 00 spri2 pr6|736 006034 aa 6 01332 3521 00 epp2 pr6|730 006035 aa 014000 4310 07 fld 6144,dl 006036 aa 2 00000 7571 00 staq pr2|0 006037 aa 777350 6700 04 tsp4 -280,ic 005407 STATEMENT 1 ON LINE 1250 if smp_this = null () /* its NOT in the held chain */ then free log_read_data.earlier_message.copy_ptr -> log_message; 006040 aa 6 00446 2371 00 ldaq pr6|294 smp_this 006041 aa 772003 6770 04 eraq -3069,ic 000044 = 077777000043 000001000000 006042 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006043 aa 000024 6010 04 tnz 20,ic 006067 006044 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 006045 aa 7 00024 3715 20 epp5 pr7|20,* log_read_data.copy_ptr 006046 aa 5 00004 2351 00 lda pr5|4 log_message.data_lth 006047 aa 000022 7350 00 als 18 006050 aa 000066 7330 00 lrs 54 006051 aa 6 01344 7561 00 stq pr6|740 log_message.data_lth 006052 aa 5 00002 2351 00 lda pr5|2 log_message.data_class_lth 006053 aa 000011 7350 00 als 9 006054 aa 000077 7730 00 lrl 63 006055 aa 6 01345 7561 00 stq pr6|741 log_message.data_class_lth 006056 aa 5 00004 2351 00 lda pr5|4 log_message.text_lth 006057 aa 000066 7330 00 lrs 54 006060 aa 000030 0760 07 adq 24,dl 006061 aa 6 01345 0761 00 adq pr6|741 log_message.data_class_lth 006062 aa 000003 0760 07 adq 3,dl 006063 aa 000002 7320 00 qrs 2 006064 aa 6 01344 0761 00 adq pr6|740 log_message.data_lth 006065 aa 7 00024 3715 00 epp5 pr7|20 log_read_data.copy_ptr 006066 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 1252 log_read_data.earlier_message = null (); 006067 aa 771755 2370 04 ldaq -3091,ic 000044 = 077777000043 000001000000 006070 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 006071 aa 7 00022 7571 00 staq pr7|18 log_read_data.actual_ptr 006072 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 006073 aa 7 00024 7571 00 staq pr7|20 log_read_data.copy_ptr STATEMENT 1 ON LINE 1253 end; STATEMENT 1 ON LINE 1255 smp_this = log_read_data.first_held_message_ptr; 006074 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 006075 aa 7 00030 3735 20 epp7 pr7|24,* log_read_data.first_held_message_ptr 006076 aa 6 00446 6535 00 spri7 pr6|294 smp_this STATEMENT 1 ON LINE 1256 do while (smp_this ^= null ()); 006077 aa 000000 0110 03 nop 0,du 006100 aa 6 00446 2371 00 ldaq pr6|294 smp_this 006101 aa 771743 6770 04 eraq -3101,ic 000044 = 077777000043 000001000000 006102 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006103 aa 000034 6000 04 tze 28,ic 006137 STATEMENT 1 ON LINE 1257 free smp_this -> log_held_message_node.message.copy_ptr -> log_message; 006104 aa 6 00446 3735 20 epp7 pr6|294,* smp_this 006105 aa 7 00002 3715 20 epp5 pr7|2,* log_held_message_node.copy_ptr 006106 aa 5 00004 2351 00 lda pr5|4 log_message.data_lth 006107 aa 000022 7350 00 als 18 006110 aa 000066 7330 00 lrs 54 006111 aa 6 01344 7561 00 stq pr6|740 log_message.data_lth 006112 aa 5 00002 2351 00 lda pr5|2 log_message.data_class_lth 006113 aa 000011 7350 00 als 9 006114 aa 000077 7730 00 lrl 63 006115 aa 6 01345 7561 00 stq pr6|741 log_message.data_class_lth 006116 aa 5 00004 2351 00 lda pr5|4 log_message.text_lth 006117 aa 000066 7330 00 lrs 54 006120 aa 000030 0760 07 adq 24,dl 006121 aa 6 01345 0761 00 adq pr6|741 log_message.data_class_lth 006122 aa 000003 0760 07 adq 3,dl 006123 aa 000002 7320 00 qrs 2 006124 aa 6 01344 0761 00 adq pr6|740 log_message.data_lth 006125 aa 7 00002 3715 00 epp5 pr7|2 log_held_message_node.copy_ptr 006126 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 1258 smp_next = smp_this -> log_held_message_node.next_ptr; 006127 aa 6 00446 3735 20 epp7 pr6|294,* smp_this 006130 aa 7 00006 3735 20 epp7 pr7|6,* log_held_message_node.next_ptr 006131 aa 6 00450 6535 00 spri7 pr6|296 smp_next STATEMENT 1 ON LINE 1259 free smp_this -> log_held_message_node; 006132 aa 6 00446 3715 00 epp5 pr6|294 smp_this 006133 aa 0 01404 7001 00 tsx0 pr0|772 op_freen_ STATEMENT 1 ON LINE 1260 smp_this = smp_next; 006134 aa 6 00450 3735 20 epp7 pr6|296,* smp_next 006135 aa 6 00446 6535 00 spri7 pr6|294 smp_this STATEMENT 1 ON LINE 1261 end; 006136 aa 777742 7100 04 tra -30,ic 006100 STATEMENT 1 ON LINE 1262 return; 006137 aa 6 00440 6101 00 rtcd pr6|288 STATEMENT 1 ON LINE 1263 end free_held_messages; END PROCEDURE free_held_messages BEGIN PROCEDURE check_in_pointer ENTRY TO check_in_pointer STATEMENT 1 ON LINE 1266 check_in_pointer: procedure; 006140 aa 6 00452 6501 00 spri4 pr6|298 STATEMENT 1 ON LINE 1269 log_read_data_ptr = P_log_read_data_ptr; 006141 aa 6 00152 3735 20 epp7 pr6|106,* P_log_read_data_ptr 006142 aa 7 00000 3735 20 epp7 pr7|0,* P_log_read_data_ptr 006143 aa 6 00134 6535 00 spri7 pr6|92 log_read_data_ptr STATEMENT 1 ON LINE 1270 if log_read_data_ptr = null () then call sub_err_ (error_table_$null_info_ptr, "log_read_", ACTION_CANT_RESTART, null (), (0), "Null log_read_data_ptr supplied."); 006144 aa 6 00134 2371 00 ldaq pr6|92 log_read_data_ptr 006145 aa 771677 6770 04 eraq -3137,ic 000044 = 077777000043 000001000000 006146 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 006147 aa 000050 6010 04 tnz 40,ic 006217 006150 aa 771700 2370 04 ldaq -3136,ic 000050 = 154157147137 162145141144 006151 aa 6 01346 7571 00 staq pr6|742 006152 aa 137000 2350 03 lda 48640,du 006153 aa 6 01350 7551 00 sta pr6|744 006154 aa 771670 3714 24 epp5 -3144,ic* 006155 aa 6 01352 6515 00 spri5 pr6|746 006156 aa 6 01351 4501 00 stz pr6|745 006157 aa 000 100 100 404 mlr (ic),(pr),fill(000) 006160 aa 771741 00 0040 desc9a -3103,32 000120 = 116165154154 006161 aa 6 01354 00 0040 desc9a pr6|748,32 006162 aa 6 00044 3701 20 epp4 pr6|36,* 006163 la 4 00020 3521 20 epp2 pr4|16,* error_table_$null_info_ptr 006164 aa 6 01366 2521 00 spri2 pr6|758 006165 aa 6 01346 3521 00 epp2 pr6|742 006166 aa 6 01370 2521 00 spri2 pr6|760 006167 aa 771627 3520 04 epp2 -3177,ic 000016 = 400000000000 006170 aa 6 01372 2521 00 spri2 pr6|762 006171 aa 6 01352 3521 00 epp2 pr6|746 006172 aa 6 01374 2521 00 spri2 pr6|764 006173 aa 6 01351 3521 00 epp2 pr6|745 006174 aa 6 01376 2521 00 spri2 pr6|766 006175 aa 6 01354 3521 00 epp2 pr6|748 006176 aa 6 01400 2521 00 spri2 pr6|768 006177 aa 771636 3520 04 epp2 -3170,ic 000035 = 404000000043 006200 aa 6 01402 2521 00 spri2 pr6|770 006201 aa 771613 3520 04 epp2 -3189,ic 000014 = 524000000011 006202 aa 6 01404 2521 00 spri2 pr6|772 006203 aa 771630 3520 04 epp2 -3176,ic 000033 = 514000000044 006204 aa 6 01406 2521 00 spri2 pr6|774 006205 aa 771631 3520 04 epp2 -3175,ic 000036 = 464000000000 006206 aa 6 01410 2521 00 spri2 pr6|776 006207 aa 771604 3520 04 epp2 -3196,ic 000013 = 404000000005 006210 aa 6 01412 2521 00 spri2 pr6|778 006211 aa 771574 3520 04 epp2 -3204,ic 000005 = 524000000040 006212 aa 6 01414 2521 00 spri2 pr6|780 006213 aa 6 01364 6211 00 eax1 pr6|756 006214 aa 030000 4310 07 fld 12288,dl 006215 la 4 00056 3521 20 epp2 pr4|46,* sub_err_ 006216 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1272 if log_read_data.sentinel ^= LOG_READ_DATA_VERSION_SENTINEL then call sub_err_ (error_table_$badcall, "log_read_", ACTION_CANT_RESTART, null (), (0), "Invalid log_read_data_ptr supplied in call to log_read_."); 006217 aa 6 00134 3735 20 epp7 pr6|92,* log_read_data_ptr 006220 aa 7 00000 2351 00 lda pr7|0 log_read_data.sentinel 006221 aa 7 00001 2361 00 ldq pr7|1 log_read_data.sentinel 006222 aa 771560 1170 04 cmpaq -3216,ic 000002 = 154157147162 060060060061 006223 aa 000050 6000 04 tze 40,ic 006273 006224 aa 771624 2370 04 ldaq -3180,ic 000050 = 154157147137 162145141144 006225 aa 6 01346 7571 00 staq pr6|742 006226 aa 137000 2350 03 lda 48640,du 006227 aa 6 01350 7551 00 sta pr6|744 006230 aa 771614 3714 24 epp5 -3188,ic* 006231 aa 6 01352 6515 00 spri5 pr6|746 006232 aa 6 01351 4501 00 stz pr6|745 006233 aa 000 100 100 404 mlr (ic),(pr),fill(000) 006234 aa 771722 00 0070 desc9a -3118,56 000155 = 111156166141 006235 aa 6 01364 00 0070 desc9a pr6|756,56 006236 aa 6 00044 3701 20 epp4 pr6|36,* 006237 la 4 00010 3521 20 epp2 pr4|8,* error_table_$badcall 006240 aa 6 01420 2521 00 spri2 pr6|784 006241 aa 6 01346 3521 00 epp2 pr6|742 006242 aa 6 01422 2521 00 spri2 pr6|786 006243 aa 771553 3520 04 epp2 -3221,ic 000016 = 400000000000 006244 aa 6 01424 2521 00 spri2 pr6|788 006245 aa 6 01352 3521 00 epp2 pr6|746 006246 aa 6 01426 2521 00 spri2 pr6|790 006247 aa 6 01351 3521 00 epp2 pr6|745 006250 aa 6 01430 2521 00 spri2 pr6|792 006251 aa 6 01364 3521 00 epp2 pr6|756 006252 aa 6 01432 2521 00 spri2 pr6|794 006253 aa 771562 3520 04 epp2 -3214,ic 000035 = 404000000043 006254 aa 6 01434 2521 00 spri2 pr6|796 006255 aa 771537 3520 04 epp2 -3233,ic 000014 = 524000000011 006256 aa 6 01436 2521 00 spri2 pr6|798 006257 aa 771554 3520 04 epp2 -3220,ic 000033 = 514000000044 006260 aa 6 01440 2521 00 spri2 pr6|800 006261 aa 771555 3520 04 epp2 -3219,ic 000036 = 464000000000 006262 aa 6 01442 2521 00 spri2 pr6|802 006263 aa 771530 3520 04 epp2 -3240,ic 000013 = 404000000005 006264 aa 6 01444 2521 00 spri2 pr6|804 006265 aa 771517 3520 04 epp2 -3249,ic 000004 = 524000000070 006266 aa 6 01446 2521 00 spri2 pr6|806 006267 aa 6 01416 6211 00 eax1 pr6|782 006270 aa 030000 4310 07 fld 12288,dl 006271 la 4 00056 3521 20 epp2 pr4|46,* sub_err_ 006272 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 1274 return; 006273 aa 6 00452 6101 00 rtcd pr6|298 STATEMENT 1 ON LINE 1275 end check_in_pointer; END PROCEDURE check_in_pointer BEGIN PROCEDURE finished ENTRY TO finished STATEMENT 1 ON LINE 1277 finished: procedure (P_return_code); 006274 aa 6 00460 6501 00 spri4 pr6|304 006275 aa 6 00462 2521 00 spri2 pr6|306 STATEMENT 1 ON LINE 1283 P_code = P_return_code; 006276 aa 2 00002 2361 20 ldq pr2|2,* P_return_code 006277 aa 6 00160 7561 20 stq pr6|112,* P_code STATEMENT 1 ON LINE 1284 goto MAIN_RETURN; 006300 aa 774454 7100 04 tra -1748,ic 002754 STATEMENT 1 ON LINE 1286 end finished; END PROCEDURE finished END PROCEDURE log_read_ ----------------------------------------------------------- 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