COMPILATION LISTING OF SEGMENT rlm_open Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1624.4 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* format: style2,ind3 */ 8 9 rlm_open: 10 proc (); 11 12 return; /* Not a valid entry point. */ 13 14 15 /* DESCRIPTION 16* 17* This routine handles open and close requests with the two entries: 18* $open: 19* opens a relation, sets up relation opening structures if they have 20* not been set up by a prior open, increments the count of openings for this 21* process for this relation, and returns the file opening id as the 22* rel_opening_id. 23* 24* $close: 25* decrements the count of openings. The relation_opening_info structure 26* is gotten via rlm_opening_info$get_dont_refresh. If the count of 27* openings becomes 0, the relation_opening_info structure is freed (causing 28* the relation_opening_info_ptr to become null) and the file is closed. 29**/ 30 31 /* HISTORY: 32*Written by Matthew Pierret, 04/28/82. 33*Modified: 34*10/19/82 by Matthew Pierret: Added capability to generate and store 35* relation_info, maintain number of openings. 36*10/20/82 by Matthew Pierret: Converted to use file_manager_. 37*03/01/83 by Matthew Pierret: Changed to use rlm_update_opening_info. 38* Added $close. 39*03/16/83 by Matthew Pierret: Changed $close to use rlm_opening_info 40* $get_dont_refresh. This is because to close a relation, the 41* refresh-able information is not needed (or desired). 42*05/16/83 by Lindsey L. Spratt: Changed to call file_manager_$close in the 43* $close entry if the call to rlm_update_opening_info$decrement* 44* causes the relation_opening_info to be freed. 45*04/19/84 by Lindsey L. Spratt: Fixed to only do the $init and $refresh if the 46* error code from $get is dm_error_$relation_not_open, otherwise if 47* the code is non-zero then this module just returns. 48*10/26/84 by Stanford S. Cox: $open: Added cleanup. $close: moved fm_$close 49* call from rlm_opening_info$free. ERROR_RETURN: modified from OPEN_= 50* for use by $close. RETURN(added): for a common return point. 51* FINISH(added) 52*11/26/84 by Stanford S. Cox: ERROR_RETURN: Added call to FINISH. 53**/ 54 55 /* START OF DECLARATIONS */ 56 /* Parameter */ 57 58 dcl p_rel_dir char (*); 59 dcl p_rel_entry char (*); 60 dcl p_rel_opening_id bit (36) aligned; 61 dcl p_code fixed bin (35); 62 63 /* Automatic */ 64 /* Based */ 65 /* Cleanup */ 66 67 dcl cleanup condition; 68 69 /* Builtin */ 70 71 dcl null builtin; 72 73 /* Controlled */ 74 /* Constant */ 75 76 dcl IS_OPEN_ENTRY init ("1"b) bit (1) int static options (constant); 77 dcl IS_CLOSE_ENTRY init ("0"b) bit (1) int static options (constant); 78 dcl myname init ("rlm_open") char (8) internal static options (constant); 79 80 /* Entry */ 81 82 dcl file_manager_$open entry (char (*), char (*), bit (36) aligned, fixed bin (35)); 83 dcl file_manager_$close entry (bit (36) aligned, fixed bin (35)); 84 85 dcl rlm_opening_info$get entry (bit (36) aligned, ptr, fixed bin (35)); 86 dcl rlm_opening_info$get_dont_refresh 87 entry (bit (36) aligned, ptr, fixed bin (35)); 88 dcl rlm_opening_info$refresh 89 entry (ptr, fixed bin (35)); 90 dcl rlm_opening_info$init entry (bit (36) aligned, ptr, fixed bin (35)); 91 dcl rlm_update_opening_info$increment_openings 92 entry (ptr, fixed bin (35)); 93 dcl rlm_update_opening_info$decrement_openings 94 entry (ptr, fixed bin (35)); 95 96 /* External */ 97 98 dcl error_table_$unimplemented_version 99 ext fixed bin (35); 100 dcl dm_error_$file_already_open 101 ext fixed bin (35); 102 dcl dm_error_$relation_not_open 103 ext fixed bin (35); 104 105 /* END OF DECLARATIONS */ 106 107 open: 108 entry (p_rel_dir, p_rel_entry, p_rel_opening_id, p_code); 109 110 p_code = 0; 111 p_rel_opening_id = "0"b; 112 113 on cleanup call FINISH; 114 call file_manager_$open (p_rel_dir, p_rel_entry, p_rel_opening_id, p_code); 115 116 if p_code ^= 0 & p_code ^= dm_error_$file_already_open 117 then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 118 119 p_code = 0; 120 121 call rlm_opening_info$get (p_rel_opening_id, relation_opening_info_ptr, p_code); 122 if p_code ^= 0 123 then if p_code ^= dm_error_$relation_not_open 124 then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 125 else 126 do; 127 call rlm_opening_info$init (p_rel_opening_id, relation_opening_info_ptr, p_code); 128 if p_code ^= 0 129 then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 130 131 call rlm_opening_info$refresh (relation_opening_info_ptr, p_code); 132 if p_code ^= 0 133 then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 134 end; 135 136 137 call rlm_update_opening_info$increment_openings (relation_opening_info_ptr, p_code); 138 if p_code ^= 0 139 then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 140 141 MAIN_RETURN: 142 return; 143 144 145 ERROR_RETURN: 146 proc (er_p_is_open_entry, er_p_code); 147 148 dcl er_p_is_open_entry bit (1) parameter; 149 dcl er_p_code fixed bin (35); 150 151 p_code = er_p_code; 152 if er_p_is_open_entry 153 then 154 do; 155 call FINISH (); 156 p_rel_opening_id = "0"b; 157 end; 158 call RETURN; 159 end ERROR_RETURN; 160 161 RETURN: 162 proc (); 163 goto MAIN_RETURN; 164 end; 165 166 FINISH: 167 proc (); 168 call file_manager_$close (p_rel_opening_id, p_code); 169 end; 170 171 close: 172 entry (p_rel_opening_id, p_code); 173 174 call rlm_opening_info$get_dont_refresh (p_rel_opening_id, relation_opening_info_ptr, p_code); 175 if p_code ^= 0 176 then call ERROR_RETURN (IS_CLOSE_ENTRY, p_code); 177 178 call rlm_update_opening_info$decrement_openings (relation_opening_info_ptr, p_code); 179 if p_code ^= 0 180 then call ERROR_RETURN (IS_CLOSE_ENTRY, p_code); 181 182 call file_manager_$close (p_rel_opening_id, p_code); 183 if p_code ^= 0 184 then call ERROR_RETURN (IS_CLOSE_ENTRY, p_code); 185 186 call RETURN; 187 1 1 /* BEGIN INCLUDE FILE - dm_rlm_opening_info.incl.pl1 */ 1 2 1 3 /* Written by Matthew Pierret, 09/08/82. 1 4*Modified: 1 5*01/18/83 by Matthew Pierret: Changed version to be char (8). Added 1 6* transaction_id. 1 7*02/25/83 by Matthew Pierret: Changed to relation_opening_info (from 1 8* relation_info). 1 9*10/29/84 by Stanford S. Cox: Changed to not init version. 1 10**/ 1 11 1 12 1 13 /* format: style2,ind3 */ 1 14 1 15 dcl 1 relation_opening_info 1 16 aligned based (relation_opening_info_ptr), 1 17 2 version char (8), 1 18 2 per_process, 1 19 3 current_transaction_id 1 20 bit (36) aligned init ("0"b), 1 21 3 current_rollback_count 1 22 fixed bin (35) init (0), 1 23 3 file_opening_id bit (36) aligned init ("0"b), 1 24 3 number_of_openings 1 25 fixed bin (17) aligned init (0), 1 26 3 lock_advice aligned, 1 27 4 this_process bit (2) unaligned init ("0"b), 1 28 4 other_processes 1 29 bit (2) unaligned init ("0"b), 1 30 4 mbz1 bit (32) unaligned init ("0"b), 1 31 3 record_cursor_ptr 1 32 ptr init (null), 1 33 3 index_cursor_array_ptr 1 34 ptr init (null), 1 35 2 relation_header_ptr 1 36 ptr init (null), 1 37 2 attribute_info_ptr ptr init (null), 1 38 2 index_attribute_map_ptr 1 39 ptr init (null); 1 40 1 41 dcl relation_opening_info_ptr 1 42 ptr; 1 43 dcl RELATION_OPENING_INFO_VERSION_2 1 44 init ("rlmopen2") char (8) aligned internal static options (constant); 1 45 1 46 1 47 /* END INCLUDE FILE - dm_rlm_opening_info.incl.pl1 */ 188 189 190 end rlm_open; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1147.9 rlm_open.pl1 >spec>temp>famis1>rlm_open.pl1 188 1 01/03/85 1004.6 dm_rlm_opening_info.incl.pl1 >spec>temp>famis1>dm_rlm_opening_info.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. IS_CLOSE_ENTRY 000002 constant bit(1) initial unaligned dcl 77 set ref 175* 179* 183* IS_OPEN_ENTRY 000000 constant bit(1) initial unaligned dcl 76 set ref 116* 122* 128* 132* 138* cleanup 000100 stack reference condition dcl 67 ref 113 dm_error_$file_already_open 000030 external static fixed bin(35,0) dcl 100 ref 116 dm_error_$relation_not_open 000032 external static fixed bin(35,0) dcl 102 ref 122 er_p_code parameter fixed bin(35,0) dcl 149 ref 145 151 er_p_is_open_entry parameter bit(1) unaligned dcl 148 ref 145 152 file_manager_$close 000012 constant entry external dcl 83 ref 168 182 file_manager_$open 000010 constant entry external dcl 82 ref 114 p_code parameter fixed bin(35,0) dcl 61 set ref 107 110* 114* 116 116 116* 119* 121* 122 122 122* 127* 128 128* 131* 132 132* 137* 138 138* 151* 168* 171 174* 175 175* 178* 179 179* 182* 183 183* p_rel_dir parameter char unaligned dcl 58 set ref 107 114* p_rel_entry parameter char unaligned dcl 59 set ref 107 114* p_rel_opening_id parameter bit(36) dcl 60 set ref 107 111* 114* 121* 127* 156* 168* 171 174* 182* relation_opening_info_ptr 000106 automatic pointer dcl 1-41 set ref 121* 127* 131* 137* 174* 178* rlm_opening_info$get 000014 constant entry external dcl 85 ref 121 rlm_opening_info$get_dont_refresh 000016 constant entry external dcl 86 ref 174 rlm_opening_info$init 000022 constant entry external dcl 90 ref 127 rlm_opening_info$refresh 000020 constant entry external dcl 88 ref 131 rlm_update_opening_info$decrement_openings 000026 constant entry external dcl 93 ref 178 rlm_update_opening_info$increment_openings 000024 constant entry external dcl 91 ref 137 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. RELATION_OPENING_INFO_VERSION_2 internal static char(8) initial dcl 1-43 error_table_$unimplemented_version external static fixed bin(35,0) dcl 98 myname internal static char(8) initial unaligned dcl 78 null builtin function dcl 71 relation_opening_info based structure level 1 dcl 1-15 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000401 constant entry internal dcl 145 ref 116 122 128 132 138 175 179 183 FINISH 000424 constant entry internal dcl 166 ref 113 155 MAIN_RETURN 000265 constant label dcl 141 ref 163 RETURN 000421 constant entry internal dcl 161 ref 158 186 close 000272 constant entry external dcl 171 open 000024 constant entry external dcl 107 rlm_open 000011 constant entry external dcl 9 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 632 666 443 642 Length 1074 443 34 171 167 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rlm_open 108 external procedure is an external procedure. on unit on line 113 64 on unit ERROR_RETURN internal procedure shares stack frame of external procedure rlm_open. RETURN internal procedure shares stack frame of external procedure rlm_open. FINISH 70 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rlm_open 000106 relation_opening_info_ptr rlm_open THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return enable ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. file_manager_$close file_manager_$open rlm_opening_info$get rlm_opening_info$get_dont_refresh rlm_opening_info$init rlm_opening_info$refresh rlm_update_opening_info$decrement_openings rlm_update_opening_info$increment_openings THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$file_already_open dm_error_$relation_not_open CONSTANTS 000000 aa 400000000000 000001 aa 516000000001 000002 aa 000000000000 000003 aa 404000000043 000004 aa 514000000044 000005 aa 526077777777 000006 aa 143 154 145 141 clea 000007 aa 156 165 160 000 nup BEGIN PROCEDURE rlm_open ENTRY TO rlm_open STATEMENT 1 ON LINE 9 rlm_open: proc (); 000010 da 000142200000 000011 aa 000160 6270 00 eax7 112 000012 aa 7 00034 3521 20 epp2 pr7|28,* 000013 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000014 aa 000000000000 000015 aa 000000000000 STATEMENT 1 ON LINE 12 return; 000016 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO open STATEMENT 1 ON LINE 107 open: entry (p_rel_dir, p_rel_entry, p_rel_opening_id, p_code); 000017 at 000004000005 000020 tt 000005000004 000021 ta 000003000000 000022 ta 000017000000 000023 da 000145300000 000024 aa 000160 6270 00 eax7 112 000025 aa 7 00034 3521 20 epp2 pr7|28,* 000026 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000027 aa 000010000000 000030 aa 000000000000 000031 aa 6 00042 3735 20 epp7 pr6|34,* 000032 aa 7 00000 2361 20 ldq pr7|0,* 000033 aa 000002 6040 04 tmi 2,ic 000035 000034 aa 777777 3760 07 anq 262143,dl 000035 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000036 aa 6 00130 7561 00 stq pr6|88 000037 aa 7 00002 2361 20 ldq pr7|2,* 000040 aa 000002 6040 04 tmi 2,ic 000042 000041 aa 777777 3760 07 anq 262143,dl 000042 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000043 aa 6 00131 7561 00 stq pr6|89 000044 aa 6 00032 3715 20 epp5 pr6|26,* 000045 aa 5 00006 3535 20 epp3 pr5|6,* 000046 aa 6 00110 2535 00 spri3 pr6|72 000047 aa 5 00010 3515 20 epp1 pr5|8,* 000050 aa 6 00112 2515 00 spri1 pr6|74 STATEMENT 1 ON LINE 110 p_code = 0; 000051 aa 6 00112 4501 20 stz pr6|74,* p_code STATEMENT 1 ON LINE 111 p_rel_opening_id = "0"b; 000052 aa 6 00110 4501 20 stz pr6|72,* p_rel_opening_id STATEMENT 1 ON LINE 113 on cleanup call FINISH; 000053 aa 000007 7260 07 lxl6 7,dl 000054 aa 777732 3520 04 epp2 -38,ic 000006 = 143154145141 000055 aa 0 00717 7001 00 tsx0 pr0|463 enable 000056 aa 000004 7100 04 tra 4,ic 000062 000057 aa 000100000000 000060 aa 000015 7100 04 tra 13,ic 000075 BEGIN CONDITION cleanup.1 ENTRY TO cleanup.1 STATEMENT 1 ON LINE 113 on cleanup call FINISH; 000061 da 000153200000 000062 aa 000100 6270 00 eax7 64 000063 aa 7 00034 3521 20 epp2 pr7|28,* 000064 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000065 aa 000000000000 000066 aa 000000000000 000067 aa 000001 7270 07 lxl7 1,dl 000070 aa 6 00056 6211 00 eax1 pr6|46 000071 aa 000000 4310 07 fld 0,dl 000072 aa 000332 3520 04 epp2 218,ic 000424 = 000120627000 000073 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 000074 aa 0 00631 7101 00 tra pr0|409 return END CONDITION cleanup.1 STATEMENT 1 ON LINE 114 call file_manager_$open (p_rel_dir, p_rel_entry, p_rel_opening_id, p_code); 000075 aa 6 00032 3735 20 epp7 pr6|26,* 000076 aa 7 00002 3521 20 epp2 pr7|2,* p_rel_dir 000077 aa 6 00134 2521 00 spri2 pr6|92 000100 aa 7 00004 3521 20 epp2 pr7|4,* p_rel_entry 000101 aa 6 00136 2521 00 spri2 pr6|94 000102 aa 6 00110 3521 20 epp2 pr6|72,* p_rel_opening_id 000103 aa 6 00140 2521 00 spri2 pr6|96 000104 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000105 aa 6 00142 2521 00 spri2 pr6|98 000106 aa 6 00042 3715 20 epp5 pr6|34,* 000107 aa 5 00000 3521 20 epp2 pr5|0,* 000110 aa 6 00144 2521 00 spri2 pr6|100 000111 aa 5 00002 3521 20 epp2 pr5|2,* 000112 aa 6 00146 2521 00 spri2 pr6|102 000113 aa 777671 3520 04 epp2 -71,ic 000004 = 514000000044 000114 aa 6 00150 2521 00 spri2 pr6|104 000115 aa 777666 3520 04 epp2 -74,ic 000003 = 404000000043 000116 aa 6 00152 2521 00 spri2 pr6|106 000117 aa 6 00132 6211 00 eax1 pr6|90 000120 aa 020000 4310 07 fld 8192,dl 000121 aa 6 00044 3701 20 epp4 pr6|36,* 000122 la 4 00010 3521 20 epp2 pr4|8,* file_manager_$open 000123 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 116 if p_code ^= 0 & p_code ^= dm_error_$file_already_open then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 000124 aa 6 00112 2361 20 ldq pr6|74,* p_code 000125 aa 000014 6000 04 tze 12,ic 000141 000126 aa 6 00044 3701 20 epp4 pr6|36,* 000127 la 4 00030 1161 20 cmpq pr4|24,* dm_error_$file_already_open 000130 aa 000011 6000 04 tze 9,ic 000141 000131 aa 777647 3520 04 epp2 -89,ic 000000 = 400000000000 000132 aa 6 00134 2521 00 spri2 pr6|92 000133 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000134 aa 6 00136 2521 00 spri2 pr6|94 000135 aa 6 00132 3521 00 epp2 pr6|90 000136 aa 010000 4310 07 fld 4096,dl 000137 aa 2 00000 7571 00 staq pr2|0 000140 aa 000241 6700 04 tsp4 161,ic 000401 STATEMENT 1 ON LINE 119 p_code = 0; 000141 aa 6 00112 4501 20 stz pr6|74,* p_code STATEMENT 1 ON LINE 121 call rlm_opening_info$get (p_rel_opening_id, relation_opening_info_ptr, p_code); 000142 aa 6 00110 3521 20 epp2 pr6|72,* p_rel_opening_id 000143 aa 6 00134 2521 00 spri2 pr6|92 000144 aa 6 00106 3521 00 epp2 pr6|70 relation_opening_info_ptr 000145 aa 6 00136 2521 00 spri2 pr6|94 000146 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000147 aa 6 00140 2521 00 spri2 pr6|96 000150 aa 6 00132 6211 00 eax1 pr6|90 000151 aa 014000 4310 07 fld 6144,dl 000152 aa 6 00044 3701 20 epp4 pr6|36,* 000153 la 4 00014 3521 20 epp2 pr4|12,* rlm_opening_info$get 000154 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 122 if p_code ^= 0 then if p_code ^= dm_error_$relation_not_open then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 000155 aa 6 00112 2361 20 ldq pr6|74,* p_code 000156 aa 000064 6000 04 tze 52,ic 000242 000157 aa 6 00044 3701 20 epp4 pr6|36,* 000160 la 4 00032 1161 20 cmpq pr4|26,* dm_error_$relation_not_open 000161 aa 000012 6000 04 tze 10,ic 000173 000162 aa 777616 3520 04 epp2 -114,ic 000000 = 400000000000 000163 aa 6 00134 2521 00 spri2 pr6|92 000164 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000165 aa 6 00136 2521 00 spri2 pr6|94 000166 aa 6 00132 3521 00 epp2 pr6|90 000167 aa 010000 4310 07 fld 4096,dl 000170 aa 2 00000 7571 00 staq pr2|0 000171 aa 000210 6700 04 tsp4 136,ic 000401 000172 aa 000050 7100 04 tra 40,ic 000242 STATEMENT 1 ON LINE 125 else do; STATEMENT 1 ON LINE 127 call rlm_opening_info$init (p_rel_opening_id, relation_opening_info_ptr, p_code); 000173 aa 6 00110 3521 20 epp2 pr6|72,* p_rel_opening_id 000174 aa 6 00134 2521 00 spri2 pr6|92 000175 aa 6 00106 3521 00 epp2 pr6|70 relation_opening_info_ptr 000176 aa 6 00136 2521 00 spri2 pr6|94 000177 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000200 aa 6 00140 2521 00 spri2 pr6|96 000201 aa 6 00132 6211 00 eax1 pr6|90 000202 aa 014000 4310 07 fld 6144,dl 000203 la 4 00022 3521 20 epp2 pr4|18,* rlm_opening_info$init 000204 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 128 if p_code ^= 0 then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 000205 aa 6 00112 2361 20 ldq pr6|74,* p_code 000206 aa 000011 6000 04 tze 9,ic 000217 000207 aa 777571 3520 04 epp2 -135,ic 000000 = 400000000000 000210 aa 6 00134 2521 00 spri2 pr6|92 000211 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000212 aa 6 00136 2521 00 spri2 pr6|94 000213 aa 6 00132 3521 00 epp2 pr6|90 000214 aa 010000 4310 07 fld 4096,dl 000215 aa 2 00000 7571 00 staq pr2|0 000216 aa 000163 6700 04 tsp4 115,ic 000401 STATEMENT 1 ON LINE 131 call rlm_opening_info$refresh (relation_opening_info_ptr, p_code); 000217 aa 6 00106 3521 00 epp2 pr6|70 relation_opening_info_ptr 000220 aa 6 00134 2521 00 spri2 pr6|92 000221 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000222 aa 6 00136 2521 00 spri2 pr6|94 000223 aa 6 00132 6211 00 eax1 pr6|90 000224 aa 010000 4310 07 fld 4096,dl 000225 aa 6 00044 3701 20 epp4 pr6|36,* 000226 la 4 00020 3521 20 epp2 pr4|16,* rlm_opening_info$refresh 000227 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 132 if p_code ^= 0 then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 000230 aa 6 00112 2361 20 ldq pr6|74,* p_code 000231 aa 000011 6000 04 tze 9,ic 000242 000232 aa 777546 3520 04 epp2 -154,ic 000000 = 400000000000 000233 aa 6 00134 2521 00 spri2 pr6|92 000234 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000235 aa 6 00136 2521 00 spri2 pr6|94 000236 aa 6 00132 3521 00 epp2 pr6|90 000237 aa 010000 4310 07 fld 4096,dl 000240 aa 2 00000 7571 00 staq pr2|0 000241 aa 000140 6700 04 tsp4 96,ic 000401 STATEMENT 1 ON LINE 134 end; STATEMENT 1 ON LINE 137 call rlm_update_opening_info$increment_openings (relation_opening_info_ptr, p_code); 000242 aa 6 00106 3521 00 epp2 pr6|70 relation_opening_info_ptr 000243 aa 6 00134 2521 00 spri2 pr6|92 000244 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000245 aa 6 00136 2521 00 spri2 pr6|94 000246 aa 6 00132 6211 00 eax1 pr6|90 000247 aa 010000 4310 07 fld 4096,dl 000250 aa 6 00044 3701 20 epp4 pr6|36,* 000251 la 4 00024 3521 20 epp2 pr4|20,* rlm_update_opening_info$increment_openings 000252 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 138 if p_code ^= 0 then call ERROR_RETURN (IS_OPEN_ENTRY, p_code); 000253 aa 6 00112 2361 20 ldq pr6|74,* p_code 000254 aa 000011 6000 04 tze 9,ic 000265 000255 aa 777523 3520 04 epp2 -173,ic 000000 = 400000000000 000256 aa 6 00134 2521 00 spri2 pr6|92 000257 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000260 aa 6 00136 2521 00 spri2 pr6|94 000261 aa 6 00132 3521 00 epp2 pr6|90 000262 aa 010000 4310 07 fld 4096,dl 000263 aa 2 00000 7571 00 staq pr2|0 000264 aa 000115 6700 04 tsp4 77,ic 000401 STATEMENT 1 ON LINE 141 MAIN_RETURN: return; 000265 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO close STATEMENT 1 ON LINE 171 close: entry (p_rel_opening_id, p_code); 000266 at 000002000004 000267 ta 000003000000 000270 ta 000266000000 000271 da 000156300000 000272 aa 000160 6270 00 eax7 112 000273 aa 7 00034 3521 20 epp2 pr7|28,* 000274 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000275 aa 000004000000 000276 aa 000000000000 000277 aa 6 00032 3735 20 epp7 pr6|26,* 000300 aa 7 00002 3715 20 epp5 pr7|2,* 000301 aa 6 00110 6515 00 spri5 pr6|72 000302 aa 7 00004 3535 20 epp3 pr7|4,* 000303 aa 6 00112 2535 00 spri3 pr6|74 STATEMENT 1 ON LINE 174 call rlm_opening_info$get_dont_refresh (p_rel_opening_id, relation_opening_info_ptr, p_code); 000304 aa 6 00110 3521 20 epp2 pr6|72,* p_rel_opening_id 000305 aa 6 00134 2521 00 spri2 pr6|92 000306 aa 6 00106 3521 00 epp2 pr6|70 relation_opening_info_ptr 000307 aa 6 00136 2521 00 spri2 pr6|94 000310 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000311 aa 6 00140 2521 00 spri2 pr6|96 000312 aa 6 00132 6211 00 eax1 pr6|90 000313 aa 014000 4310 07 fld 6144,dl 000314 aa 6 00044 3701 20 epp4 pr6|36,* 000315 la 4 00016 3521 20 epp2 pr4|14,* rlm_opening_info$get_dont_refresh 000316 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 175 if p_code ^= 0 then call ERROR_RETURN (IS_CLOSE_ENTRY, p_code); 000317 aa 6 00112 2361 20 ldq pr6|74,* p_code 000320 aa 000011 6000 04 tze 9,ic 000331 000321 aa 777461 3520 04 epp2 -207,ic 000002 = 000000000000 000322 aa 6 00134 2521 00 spri2 pr6|92 000323 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000324 aa 6 00136 2521 00 spri2 pr6|94 000325 aa 6 00132 3521 00 epp2 pr6|90 000326 aa 010000 4310 07 fld 4096,dl 000327 aa 2 00000 7571 00 staq pr2|0 000330 aa 000051 6700 04 tsp4 41,ic 000401 STATEMENT 1 ON LINE 178 call rlm_update_opening_info$decrement_openings (relation_opening_info_ptr, p_code); 000331 aa 6 00106 3521 00 epp2 pr6|70 relation_opening_info_ptr 000332 aa 6 00134 2521 00 spri2 pr6|92 000333 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000334 aa 6 00136 2521 00 spri2 pr6|94 000335 aa 6 00132 6211 00 eax1 pr6|90 000336 aa 010000 4310 07 fld 4096,dl 000337 aa 6 00044 3701 20 epp4 pr6|36,* 000340 la 4 00026 3521 20 epp2 pr4|22,* rlm_update_opening_info$decrement_openings 000341 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 179 if p_code ^= 0 then call ERROR_RETURN (IS_CLOSE_ENTRY, p_code); 000342 aa 6 00112 2361 20 ldq pr6|74,* p_code 000343 aa 000011 6000 04 tze 9,ic 000354 000344 aa 777436 3520 04 epp2 -226,ic 000002 = 000000000000 000345 aa 6 00134 2521 00 spri2 pr6|92 000346 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000347 aa 6 00136 2521 00 spri2 pr6|94 000350 aa 6 00132 3521 00 epp2 pr6|90 000351 aa 010000 4310 07 fld 4096,dl 000352 aa 2 00000 7571 00 staq pr2|0 000353 aa 000026 6700 04 tsp4 22,ic 000401 STATEMENT 1 ON LINE 182 call file_manager_$close (p_rel_opening_id, p_code); 000354 aa 6 00110 3521 20 epp2 pr6|72,* p_rel_opening_id 000355 aa 6 00134 2521 00 spri2 pr6|92 000356 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000357 aa 6 00136 2521 00 spri2 pr6|94 000360 aa 6 00132 6211 00 eax1 pr6|90 000361 aa 010000 4310 07 fld 4096,dl 000362 aa 6 00044 3701 20 epp4 pr6|36,* 000363 la 4 00012 3521 20 epp2 pr4|10,* file_manager_$close 000364 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 183 if p_code ^= 0 then call ERROR_RETURN (IS_CLOSE_ENTRY, p_code); 000365 aa 6 00112 2361 20 ldq pr6|74,* p_code 000366 aa 000011 6000 04 tze 9,ic 000377 000367 aa 777413 3520 04 epp2 -245,ic 000002 = 000000000000 000370 aa 6 00134 2521 00 spri2 pr6|92 000371 aa 6 00112 3521 20 epp2 pr6|74,* p_code 000372 aa 6 00136 2521 00 spri2 pr6|94 000373 aa 6 00132 3521 00 epp2 pr6|90 000374 aa 010000 4310 07 fld 4096,dl 000375 aa 2 00000 7571 00 staq pr2|0 000376 aa 000003 6700 04 tsp4 3,ic 000401 STATEMENT 1 ON LINE 186 call RETURN; 000377 aa 000022 6700 04 tsp4 18,ic 000421 STATEMENT 1 ON LINE 190 end rlm_open; 000400 aa 0 00631 7101 00 tra pr0|409 return BEGIN PROCEDURE ERROR_RETURN ENTRY TO ERROR_RETURN STATEMENT 1 ON LINE 145 ERROR_RETURN: proc (er_p_is_open_entry, er_p_code); 000401 aa 6 00114 6501 00 spri4 pr6|76 000402 aa 6 00116 2521 00 spri2 pr6|78 STATEMENT 1 ON LINE 151 p_code = er_p_code; 000403 aa 2 00004 2361 20 ldq pr2|4,* er_p_code 000404 aa 6 00112 7561 20 stq pr6|74,* p_code STATEMENT 1 ON LINE 152 if er_p_is_open_entry then do; 000405 aa 2 00002 3735 20 epp7 pr2|2,* 000406 aa 000 000 066 500 cmpb (pr),(),fill(0) 000407 aa 7 00000 00 0001 descb pr7|0,1 er_p_is_open_entry 000410 aa 000000 00 0000 descb 0,0 000411 aa 000006 6000 04 tze 6,ic 000417 STATEMENT 1 ON LINE 155 call FINISH (); 000412 aa 6 00056 6211 00 eax1 pr6|46 000413 aa 000000 4310 07 fld 0,dl 000414 aa 000010 3520 04 epp2 8,ic 000424 = 000120627000 000415 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 156 p_rel_opening_id = "0"b; 000416 aa 6 00110 4501 20 stz pr6|72,* p_rel_opening_id STATEMENT 1 ON LINE 157 end; STATEMENT 1 ON LINE 158 call RETURN; 000417 aa 000002 6700 04 tsp4 2,ic 000421 STATEMENT 1 ON LINE 159 end ERROR_RETURN; 000420 aa 6 00114 6101 00 rtcd pr6|76 END PROCEDURE ERROR_RETURN BEGIN PROCEDURE RETURN ENTRY TO RETURN STATEMENT 1 ON LINE 161 RETURN: proc (); 000421 aa 6 00122 6501 00 spri4 pr6|82 STATEMENT 1 ON LINE 163 goto MAIN_RETURN; 000422 aa 777643 7100 04 tra -93,ic 000265 STATEMENT 1 ON LINE 164 end; END PROCEDURE RETURN BEGIN PROCEDURE FINISH ENTRY TO FINISH STATEMENT 1 ON LINE 166 FINISH: proc (); 000423 da 000163200000 000424 aa 000120 6270 00 eax7 80 000425 aa 7 00034 3521 20 epp2 pr7|28,* 000426 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000427 aa 000000000000 000430 aa 000000000000 STATEMENT 1 ON LINE 168 call file_manager_$close (p_rel_opening_id, p_code); 000431 aa 6 00040 3735 20 epp7 pr6|32,* 000432 aa 7 00110 3521 20 epp2 pr7|72,* p_rel_opening_id 000433 aa 6 00102 2521 00 spri2 pr6|66 000434 aa 7 00112 3521 20 epp2 pr7|74,* p_code 000435 aa 6 00104 2521 00 spri2 pr6|68 000436 aa 6 00100 6211 00 eax1 pr6|64 000437 aa 010000 4310 07 fld 4096,dl 000440 la 4 00012 3521 20 epp2 pr4|10,* file_manager_$close 000441 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 169 end; 000442 aa 0 00631 7101 00 tra pr0|409 return END PROCEDURE FINISH END PROCEDURE rlm_open ----------------------------------------------------------- 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