COMPILATION LISTING OF SEGMENT rlm_destroy_relation Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1617.8 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 /* format: style2,ind3 */ 8 9 rlm_destroy_relation: 10 proc (); 11 12 /* DESCRIPTION: 13* 14* This routine destroys a relation identified by a path or by an 15* opening id. The two entries $by_path and $by_opening_id allow the for 16* the two methods of destruction. 17* $by_path: In this entry file_manager_$delete is called to destroy 18* the file in which the relation resides. 19* $by_opening_id: In this entry the opening information associated 20* with p_rel_opening_id is retrieved, checked for validity and freed. Then 21* file_manager_$delete_close is invoked to close and delete the relation. 22**/ 23 /* HISTORY: 24*Written by Matthew Pierret, 12/06/82. 25*Modified: 26*03/14/83 by Lindsey Spratt: Fixed the $by_path entry to not have the 27* p_rel_opening_id parameter, in conformance with the spec. 28*11/01/84 by Stanford S. Cox: Changed DESCRIPTION, removed unref. vars 29**/ 30 /* START OF DECLARATIONS */ 31 /* Parameter */ 32 dcl p_rel_dir char (*) parameter; 33 dcl p_rel_name char (*) parameter; 34 dcl p_rel_opening_id bit (36) aligned parameter; 35 dcl p_code fixed bin (35) parameter; 36 37 /* Automatic */ 38 39 dcl local_code fixed bin (35) init (0); 40 dcl relation_info_ptr ptr init (null); 41 dcl rel_opening_id bit (36) aligned init ("0"b); 42 43 /* Based */ 44 /* Builtin */ 45 dcl null builtin; 46 47 /* Entry */ 48 49 dcl file_manager_$delete entry (char (*), char (*), fixed bin (35)); 50 dcl file_manager_$delete_close 51 entry (bit (36) aligned, fixed bin (35)); 52 dcl rlm_opening_info$get entry (bit (36) aligned, ptr, fixed bin (35)); 53 54 /* External */ 55 56 57 /* END OF DECLARATIONS */ 58 59 by_path: 60 entry (p_rel_dir, p_rel_name, p_code); 61 62 p_code = 0; 63 64 call file_manager_$delete (p_rel_dir, p_rel_name, p_code); 65 66 return; 67 68 by_opening_id: 69 entry (p_rel_opening_id, p_code); 70 71 p_code = 0; 72 73 call rlm_opening_info$get (p_rel_opening_id, relation_opening_info_ptr, p_code); 74 if p_code ^= 0 75 then return; 76 else 77 do; 78 79 80 call file_manager_$delete_close (p_rel_opening_id, p_code); 81 82 end; 83 84 return; 85 86 /* 87*CHECK_VERSION: 88* proc (p_received_version, p_expected_version, p_structure_name); 89* dcl p_received_version fixed bin (35); 90* dcl p_expected_version fixed bin (35); 91* dcl p_structure_name char (*); 92* if p_received_version ^= p_expected_version 93* then call 94* sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 95* "^/Expected version ^d of the ^a structure. 96*Received version ^d instead.", p_expected_version, p_structure_name, p_received_version); 97* end CHECK_VERSION; 98*%page; 99**/ 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 */ 100 101 2 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 2 2 /* format: style3 */ 2 3 2 4 /* These constants are to be used for the flags argument of sub_err_ */ 2 5 /* They are just "string (condition_info_header.action_flags)" */ 2 6 2 7 declare ( 2 8 ACTION_CAN_RESTART init (""b), 2 9 ACTION_CANT_RESTART init ("1"b), 2 10 ACTION_DEFAULT_RESTART 2 11 init ("01"b), 2 12 ACTION_QUIET_RESTART 2 13 init ("001"b), 2 14 ACTION_SUPPORT_SIGNAL 2 15 init ("0001"b) 2 16 ) bit (36) aligned internal static options (constant); 2 17 2 18 /* End include file */ 102 103 end rlm_destroy_relation; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1147.6 rlm_destroy_relation.pl1 >spec>temp>famis1>rlm_destroy_relation.pl1 100 1 01/03/85 1004.6 dm_rlm_opening_info.incl.pl1 >spec>temp>famis1>dm_rlm_opening_info.incl.pl1 102 2 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. file_manager_$delete 000010 constant entry external dcl 49 ref 64 file_manager_$delete_close 000012 constant entry external dcl 50 ref 80 local_code 000100 automatic fixed bin(35,0) initial dcl 39 set ref 39* null builtin function dcl 45 ref 40 p_code parameter fixed bin(35,0) dcl 35 set ref 59 62* 64* 68 71* 73* 74 80* p_rel_dir parameter char unaligned dcl 32 set ref 59 64* p_rel_name parameter char unaligned dcl 33 set ref 59 64* p_rel_opening_id parameter bit(36) dcl 34 set ref 68 73* 80* rel_opening_id 000104 automatic bit(36) initial dcl 41 set ref 41* relation_info_ptr 000102 automatic pointer initial dcl 40 set ref 40* relation_opening_info_ptr 000106 automatic pointer dcl 1-41 set ref 73* rlm_opening_info$get 000014 constant entry external dcl 52 ref 73 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CANT_RESTART internal static bit(36) initial dcl 2-7 ACTION_CAN_RESTART internal static bit(36) initial dcl 2-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 2-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 2-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 2-7 RELATION_OPENING_INFO_VERSION_2 internal static char(8) initial dcl 1-43 relation_opening_info based structure level 1 dcl 1-15 NAMES DECLARED BY EXPLICIT CONTEXT. by_opening_id 000106 constant entry external dcl 68 by_path 000031 constant entry external dcl 59 rlm_destroy_relation 000016 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 246 264 151 256 Length 500 151 16 177 74 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rlm_destroy_relation 92 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rlm_destroy_relation 000100 local_code rlm_destroy_relation 000102 relation_info_ptr rlm_destroy_relation 000104 rel_opening_id rlm_destroy_relation 000106 relation_opening_info_ptr rlm_destroy_relation THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. file_manager_$delete file_manager_$delete_close rlm_opening_info$get NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. CONSTANTS 000000 aa 404000000043 000001 aa 514000000044 000002 aa 526077777777 000004 aa 077777000043 000005 aa 000001000000 BEGIN PROCEDURE rlm_destroy_relation PROLOGUE SEQUENCE 000006 aa 6 00112 4401 00 sxl0 pr6|74 STATEMENT 1 ON LINE 39 000007 aa 6 00100 4501 00 stz pr6|64 local_code STATEMENT 1 ON LINE 40 000010 aa 777774 2370 04 ldaq -4,ic 000004 = 077777000043 000001000000 000011 aa 6 00102 7571 00 staq pr6|66 relation_info_ptr STATEMENT 1 ON LINE 41 000012 aa 6 00104 4501 00 stz pr6|68 rel_opening_id 000013 aa 6 00112 7201 00 lxl0 pr6|74 000014 aa 000000 7100 10 tra 0,0 MAIN SEQUENCE ENTRY TO rlm_destroy_relation STATEMENT 1 ON LINE 9 rlm_destroy_relation: proc (); 000015 da 000054200000 000016 aa 000140 6270 00 eax7 96 000017 aa 7 00034 3521 20 epp2 pr7|28,* 000020 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000021 aa 000000000000 000022 aa 000000000000 000023 aa 777763 7000 04 tsx0 -13,ic 000006 STATEMENT 1 ON LINE 59 by_path: entry (p_rel_dir, p_rel_name, p_code); 000024 aa 000031 7100 04 tra 25,ic 000055 ENTRY TO by_path STATEMENT 1 ON LINE 59 by_path: entry (p_rel_dir, p_rel_name, p_code); 000025 at 000003000002 000026 tt 000002000000 000027 ta 000025000000 000030 da 000061300000 000031 aa 000140 6270 00 eax7 96 000032 aa 7 00034 3521 20 epp2 pr7|28,* 000033 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000034 aa 000006000000 000035 aa 000000000000 000036 aa 6 00042 3735 20 epp7 pr6|34,* 000037 aa 7 00000 2361 20 ldq pr7|0,* 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 00113 7561 00 stq pr6|75 000044 aa 7 00002 2361 20 ldq pr7|2,* 000045 aa 000002 6040 04 tmi 2,ic 000047 000046 aa 777777 3760 07 anq 262143,dl 000047 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000050 aa 6 00114 7561 00 stq pr6|76 000051 aa 6 00032 3715 20 epp5 pr6|26,* 000052 aa 5 00006 3535 20 epp3 pr5|6,* 000053 aa 6 00110 2535 00 spri3 pr6|72 000054 aa 777732 7000 04 tsx0 -38,ic 000006 STATEMENT 1 ON LINE 62 p_code = 0; 000055 aa 6 00110 4501 20 stz pr6|72,* p_code STATEMENT 1 ON LINE 64 call file_manager_$delete (p_rel_dir, p_rel_name, p_code); 000056 aa 6 00032 3735 20 epp7 pr6|26,* 000057 aa 7 00002 3521 20 epp2 pr7|2,* p_rel_dir 000060 aa 6 00120 2521 00 spri2 pr6|80 000061 aa 7 00004 3521 20 epp2 pr7|4,* p_rel_name 000062 aa 6 00122 2521 00 spri2 pr6|82 000063 aa 6 00110 3521 20 epp2 pr6|72,* p_code 000064 aa 6 00124 2521 00 spri2 pr6|84 000065 aa 6 00042 3715 20 epp5 pr6|34,* 000066 aa 5 00000 3521 20 epp2 pr5|0,* 000067 aa 6 00126 2521 00 spri2 pr6|86 000070 aa 5 00002 3521 20 epp2 pr5|2,* 000071 aa 6 00130 2521 00 spri2 pr6|88 000072 aa 777706 3520 04 epp2 -58,ic 000000 = 404000000043 000073 aa 6 00132 2521 00 spri2 pr6|90 000074 aa 6 00116 6211 00 eax1 pr6|78 000075 aa 014000 4310 07 fld 6144,dl 000076 aa 6 00044 3701 20 epp4 pr6|36,* 000077 la 4 00010 3521 20 epp2 pr4|8,* file_manager_$delete 000100 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 66 return; 000101 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO by_opening_id STATEMENT 1 ON LINE 68 by_opening_id: entry (p_rel_opening_id, p_code); 000102 at 000002000001 000103 ta 000000000000 000104 ta 000102000000 000105 da 000070300000 000106 aa 000140 6270 00 eax7 96 000107 aa 7 00034 3521 20 epp2 pr7|28,* 000110 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000111 aa 000004000000 000112 aa 000000000000 000113 aa 6 00032 3735 20 epp7 pr6|26,* 000114 aa 7 00004 3715 20 epp5 pr7|4,* 000115 aa 6 00110 6515 00 spri5 pr6|72 000116 aa 777670 7000 04 tsx0 -72,ic 000006 STATEMENT 1 ON LINE 71 p_code = 0; 000117 aa 6 00110 4501 20 stz pr6|72,* p_code STATEMENT 1 ON LINE 73 call rlm_opening_info$get (p_rel_opening_id, relation_opening_info_ptr, p_code); 000120 aa 6 00032 3735 20 epp7 pr6|26,* 000121 aa 7 00002 3521 20 epp2 pr7|2,* p_rel_opening_id 000122 aa 6 00120 2521 00 spri2 pr6|80 000123 aa 6 00106 3521 00 epp2 pr6|70 relation_opening_info_ptr 000124 aa 6 00122 2521 00 spri2 pr6|82 000125 aa 6 00110 3521 20 epp2 pr6|72,* p_code 000126 aa 6 00124 2521 00 spri2 pr6|84 000127 aa 6 00116 6211 00 eax1 pr6|78 000130 aa 014000 4310 07 fld 6144,dl 000131 aa 6 00044 3701 20 epp4 pr6|36,* 000132 la 4 00014 3521 20 epp2 pr4|12,* rlm_opening_info$get 000133 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 74 if p_code ^= 0 then return; 000134 aa 6 00110 2361 20 ldq pr6|72,* p_code 000135 aa 0 00631 6011 00 tnz pr0|409 return STATEMENT 1 ON LINE 76 else do; STATEMENT 1 ON LINE 80 call file_manager_$delete_close (p_rel_opening_id, p_code); 000136 aa 6 00032 3735 20 epp7 pr6|26,* 000137 aa 7 00002 3521 20 epp2 pr7|2,* p_rel_opening_id 000140 aa 6 00120 2521 00 spri2 pr6|80 000141 aa 6 00110 3521 20 epp2 pr6|72,* p_code 000142 aa 6 00122 2521 00 spri2 pr6|82 000143 aa 6 00116 6211 00 eax1 pr6|78 000144 aa 010000 4310 07 fld 4096,dl 000145 aa 6 00044 3701 20 epp4 pr6|36,* 000146 la 4 00012 3521 20 epp2 pr4|10,* file_manager_$delete_close 000147 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 82 end; STATEMENT 1 ON LINE 84 return; 000150 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 103 end rlm_destroy_relation; END PROCEDURE rlm_destroy_relation ----------------------------------------------------------- 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