COMPILATION LISTING OF SEGMENT delete_dm_file_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1647.9 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 /* format: style4,ifthenstmt,^indproc,^indcomtxt */ 7 /*---------------*/ 8 9 delete_dm_file_: proc (A_dir_name, A_entry_name, A_code); 10 11 /* DESCRIPTION: 12* 13* Deleting primitive for DM files, with interface like hcs_$delentry_file. 14**/ 15 16 /* HISTORY: 17* 18*Written by Steve Herbst, 03/29/83. 19*Modified: 20*10/15/84 by Steve Herbst: Changed in response to audit comments. 21*12/05/84 by Matthew Pierret: Changed to return the code 22* dm_error_$delete_pending_transaction if the deletion was 23* successful but the transaction was not committed because 24* this routine did not begin the transaction. 25*12/07/84 by Lindsey L. Spratt: Changed 26* error_table_$delete_pending_transaction to dm_error_$=. 27**/ 28 29 /* Parameters */ 30 31 dcl (A_dir_name, A_entry_name) char (*); 32 dcl A_code fixed bin (35); 33 34 /* Automatic */ 35 36 dcl txn_id bit (36) aligned; 37 dcl (begin_code, code) fixed bin (35); 38 39 /* External */ 40 41 dcl dm_error_$delete_pending_transaction fixed bin (35) ext; 42 dcl dm_error_$transaction_in_progress fixed bin (35) ext; 43 44 /* Entries */ 45 46 dcl file_manager_$delete entry (char (*), char (*), fixed bin (35)); 47 dcl transaction_manager_$abort_txn entry (bit (36) aligned, fixed bin (35)); 48 dcl transaction_manager_$begin_txn entry (fixed bin, bit (36) aligned, bit (36) aligned, fixed bin (35)); 49 dcl transaction_manager_$commit_txn entry (bit (36) aligned, fixed bin (35)); 50 51 /* Conditions */ 52 53 dcl cleanup condition; 54 55 A_code, begin_code, code = 0; 56 txn_id = "0"b; 57 58 on cleanup call FINISH (); 59 60 call transaction_manager_$begin_txn (TM_NORMAL_MODE, "0"b, txn_id, begin_code); 61 if begin_code ^= 0 & begin_code ^= dm_error_$transaction_in_progress then call ERROR_RETURN (begin_code); 62 /* OK to use existing txn if there is one */ 63 64 call file_manager_$delete (A_dir_name, A_entry_name, code); 65 66 if code ^= 0 then call ERROR_RETURN (code); 67 else if begin_code = dm_error_$transaction_in_progress then 68 A_code = dm_error_$delete_pending_transaction; 69 else do; 70 call transaction_manager_$commit_txn (txn_id, code); 71 if code ^= 0 then call ERROR_RETURN (code); 72 else A_code = 0; 73 end; 74 75 RETURN: 76 return; 77 78 ERROR_RETURN: proc (P_code); 79 80 dcl P_code fixed bin (35); 81 82 A_code = P_code; 83 call FINISH; 84 go to RETURN; 85 86 end ERROR_RETURN; 87 88 89 FINISH: proc (); 90 91 if txn_id ^= "0"b & begin_code ^= dm_error_$transaction_in_progress then 92 call transaction_manager_$abort_txn (txn_id, 0); 93 94 end FINISH; 95 1 1 /* START OF: dm_tm_modes.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 /* HISTORY: 1 4* 1 5*Designed by Matthew C. Pierret, 01/26/82. 1 6*Coded by Jeffrey D. Ives, 04/30/82. 1 7*Modified: 1 8*10/18/82 by Steve Herbst: Names changed. 1 9*01/19/83 by Steve Herbst: Added (LOWEST HIGHEST)_MODE. 1 10**/ 1 11 1 12 dcl (LOWEST_MODE init (1), 1 13 HIGHEST_MODE init (8)) fixed bin int static options (constant); 1 14 1 15 dcl TM_NORMAL_MODE fixed bin static options (constant) init (1); 1 16 dcl TM_STATISTICAL_MODE fixed bin static options (constant) init (2); 1 17 dcl TM_READ_ONLY_MODE fixed bin static options (constant) init (3); 1 18 dcl TM_NEVER_WRITE_MODE fixed bin static options (constant) init (4); 1 19 dcl TM_TEST_NORMAL_MODE fixed bin static options (constant) init (5); 1 20 dcl TM_TEST_STATISTICAL_MODE fixed bin static options (constant) init (6); 1 21 dcl TM_TEST_READ_ONLY_MODE fixed bin static options (constant) init (7); 1 22 dcl TM_TEST_NEVER_WRITE_MODE fixed bin static options (constant) init (8); 1 23 1 24 /* END OF: dm_tm_modes.incl.pl1 * * * * * * * * * * * * * * * * */ 96 97 98 99 end delete_dm_file_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1150.2 delete_dm_file_.pl1 >spec>temp>famis1>delete_dm_file_.pl1 96 1 01/03/85 1004.7 dm_tm_modes.incl.pl1 >spec>temp>famis1>dm_tm_modes.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. A_code parameter fixed bin(35,0) dcl 32 set ref 9 55* 67* 72* 82* A_dir_name parameter char unaligned dcl 31 set ref 9 64* A_entry_name parameter char unaligned dcl 31 set ref 9 64* P_code parameter fixed bin(35,0) dcl 80 ref 78 82 TM_NORMAL_MODE 000002 constant fixed bin(17,0) initial dcl 1-15 set ref 60* begin_code 000101 automatic fixed bin(35,0) dcl 37 set ref 55* 60* 61 61 61* 67 91 cleanup 000104 stack reference condition dcl 53 ref 58 code 000102 automatic fixed bin(35,0) dcl 37 set ref 55* 64* 66 66* 70* 71 71* dm_error_$delete_pending_transaction 000010 external static fixed bin(35,0) dcl 41 ref 67 dm_error_$transaction_in_progress 000012 external static fixed bin(35,0) dcl 42 ref 61 67 91 file_manager_$delete 000014 constant entry external dcl 46 ref 64 transaction_manager_$abort_txn 000016 constant entry external dcl 47 ref 91 transaction_manager_$begin_txn 000020 constant entry external dcl 48 ref 60 transaction_manager_$commit_txn 000022 constant entry external dcl 49 ref 70 txn_id 000100 automatic bit(36) dcl 36 set ref 56* 60* 70* 91 91* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. HIGHEST_MODE internal static fixed bin(17,0) initial dcl 1-12 LOWEST_MODE internal static fixed bin(17,0) initial dcl 1-12 TM_NEVER_WRITE_MODE internal static fixed bin(17,0) initial dcl 1-18 TM_READ_ONLY_MODE internal static fixed bin(17,0) initial dcl 1-17 TM_STATISTICAL_MODE internal static fixed bin(17,0) initial dcl 1-16 TM_TEST_NEVER_WRITE_MODE internal static fixed bin(17,0) initial dcl 1-22 TM_TEST_NORMAL_MODE internal static fixed bin(17,0) initial dcl 1-19 TM_TEST_READ_ONLY_MODE internal static fixed bin(17,0) initial dcl 1-21 TM_TEST_STATISTICAL_MODE internal static fixed bin(17,0) initial dcl 1-20 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000167 constant entry internal dcl 78 ref 61 66 71 FINISH 000202 constant entry internal dcl 89 ref 58 83 RETURN 000166 constant label dcl 75 ref 84 delete_dm_file_ 000012 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 370 414 240 400 Length 614 240 24 163 127 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME delete_dm_file_ 108 external procedure is an external procedure. on unit on line 58 64 on unit ERROR_RETURN internal procedure shares stack frame of external procedure delete_dm_file_. FINISH 72 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME delete_dm_file_ 000100 txn_id delete_dm_file_ 000101 begin_code delete_dm_file_ 000102 code delete_dm_file_ 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_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. file_manager_$delete transaction_manager_$abort_txn transaction_manager_$begin_txn transaction_manager_$commit_txn THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$delete_pending_transaction dm_error_$transaction_in_progress CONSTANTS 000230 aa 000002000000 000231 aa 000000000000 000232 aa 600000000041 000233 aa 000102000000 000234 aa 000002000000 000235 aa 000000000000 000236 aa 600000000041 000237 aa 000101000000 000000 aa 404000000043 000001 aa 526077777777 000002 aa 000000000001 000004 aa 143 154 145 141 clea 000005 aa 156 165 160 000 nup BEGIN PROCEDURE delete_dm_file_ ENTRY TO delete_dm_file_ STATEMENT 1 ON LINE 9 delete_dm_file_: proc (A_dir_name, A_entry_name, A_code); 000006 at 000003000001 000007 tt 000001000000 000010 ta 000006000000 000011 da 000110300000 000012 aa 000160 6270 00 eax7 112 000013 aa 7 00034 3521 20 epp2 pr7|28,* 000014 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000015 aa 000006000000 000016 aa 000000000000 000017 aa 6 00042 3735 20 epp7 pr6|34,* 000020 aa 7 00000 2361 20 ldq pr7|0,* 000021 aa 000002 6040 04 tmi 2,ic 000023 000022 aa 777777 3760 07 anq 262143,dl 000023 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000024 aa 6 00120 7561 00 stq pr6|80 000025 aa 7 00002 2361 20 ldq pr7|2,* 000026 aa 000002 6040 04 tmi 2,ic 000030 000027 aa 777777 3760 07 anq 262143,dl 000030 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000031 aa 6 00121 7561 00 stq pr6|81 STATEMENT 1 ON LINE 55 A_code, begin_code, code = 0; 000032 aa 6 00032 3715 20 epp5 pr6|26,* 000033 aa 5 00006 4501 20 stz pr5|6,* A_code 000034 aa 6 00101 4501 00 stz pr6|65 begin_code 000035 aa 6 00102 4501 00 stz pr6|66 code STATEMENT 1 ON LINE 56 txn_id = "0"b; 000036 aa 6 00100 4501 00 stz pr6|64 txn_id STATEMENT 1 ON LINE 58 on cleanup call FINISH (); 000037 aa 000007 7260 07 lxl6 7,dl 000040 aa 777744 3520 04 epp2 -28,ic 000004 = 143154145141 000041 aa 0 00717 7001 00 tsx0 pr0|463 enable 000042 aa 000004 7100 04 tra 4,ic 000046 000043 aa 000104000000 000044 aa 000015 7100 04 tra 13,ic 000061 BEGIN CONDITION cleanup.1 ENTRY TO cleanup.1 STATEMENT 1 ON LINE 58 on cleanup call FINISH (); 000045 da 000116200000 000046 aa 000100 6270 00 eax7 64 000047 aa 7 00034 3521 20 epp2 pr7|28,* 000050 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000051 aa 000000000000 000052 aa 000000000000 000053 aa 000001 7270 07 lxl7 1,dl 000054 aa 6 00056 6211 00 eax1 pr6|46 000055 aa 000000 4310 07 fld 0,dl 000056 aa 000124 3520 04 epp2 84,ic 000202 = 000120627000 000057 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 000060 aa 0 00631 7101 00 tra pr0|409 return END CONDITION cleanup.1 STATEMENT 1 ON LINE 60 call transaction_manager_$begin_txn (TM_NORMAL_MODE, "0"b, txn_id, begin_code); 000061 aa 000000 2350 07 lda 0,dl 000062 aa 6 00122 7551 00 sta pr6|82 000063 aa 777717 3520 04 epp2 -49,ic 000002 = 000000000001 000064 aa 6 00126 2521 00 spri2 pr6|86 000065 aa 6 00122 3521 00 epp2 pr6|82 000066 aa 6 00130 2521 00 spri2 pr6|88 000067 aa 6 00100 3521 00 epp2 pr6|64 txn_id 000070 aa 6 00132 2521 00 spri2 pr6|90 000071 aa 6 00101 3521 00 epp2 pr6|65 begin_code 000072 aa 6 00134 2521 00 spri2 pr6|92 000073 aa 6 00124 6211 00 eax1 pr6|84 000074 aa 020000 4310 07 fld 8192,dl 000075 aa 6 00044 3701 20 epp4 pr6|36,* 000076 la 4 00020 3521 20 epp2 pr4|16,* transaction_manager_$begin_txn 000077 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 61 if begin_code ^= 0 & begin_code ^= dm_error_$transaction_in_progress then call ERROR_RETURN (begin_code); 000100 aa 6 00101 2361 00 ldq pr6|65 begin_code 000101 aa 000006 6000 04 tze 6,ic 000107 000102 aa 6 00044 3701 20 epp4 pr6|36,* 000103 la 4 00012 1161 20 cmpq pr4|10,* dm_error_$transaction_in_progress 000104 aa 000003 6000 04 tze 3,ic 000107 000105 aa 000127 3520 04 epp2 87,ic 000234 = 000002000000 000106 aa 000061 6700 04 tsp4 49,ic 000167 STATEMENT 1 ON LINE 64 call file_manager_$delete (A_dir_name, A_entry_name, code); 000107 aa 6 00032 3735 20 epp7 pr6|26,* 000110 aa 7 00002 3521 20 epp2 pr7|2,* A_dir_name 000111 aa 6 00140 2521 00 spri2 pr6|96 000112 aa 7 00004 3521 20 epp2 pr7|4,* A_entry_name 000113 aa 6 00142 2521 00 spri2 pr6|98 000114 aa 6 00102 3521 00 epp2 pr6|66 code 000115 aa 6 00144 2521 00 spri2 pr6|100 000116 aa 6 00042 3715 20 epp5 pr6|34,* 000117 aa 5 00000 3521 20 epp2 pr5|0,* 000120 aa 6 00146 2521 00 spri2 pr6|102 000121 aa 5 00002 3521 20 epp2 pr5|2,* 000122 aa 6 00150 2521 00 spri2 pr6|104 000123 aa 777655 3520 04 epp2 -83,ic 000000 = 404000000043 000124 aa 6 00152 2521 00 spri2 pr6|106 000125 aa 6 00136 6211 00 eax1 pr6|94 000126 aa 014000 4310 07 fld 6144,dl 000127 aa 6 00044 3701 20 epp4 pr6|36,* 000130 la 4 00014 3521 20 epp2 pr4|12,* file_manager_$delete 000131 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 66 if code ^= 0 then call ERROR_RETURN (code); 000132 aa 6 00102 2361 00 ldq pr6|66 code 000133 aa 000004 6000 04 tze 4,ic 000137 000134 aa 000074 3520 04 epp2 60,ic 000230 = 000002000000 000135 aa 000032 6700 04 tsp4 26,ic 000167 000136 aa 000030 7100 04 tra 24,ic 000166 STATEMENT 1 ON LINE 67 else if begin_code = dm_error_$transaction_in_progress then A_code = dm_error_$delete_pending_transaction; 000137 aa 6 00101 2361 00 ldq pr6|65 begin_code 000140 aa 6 00044 3701 20 epp4 pr6|36,* 000141 la 4 00012 1161 20 cmpq pr4|10,* dm_error_$transaction_in_progress 000142 aa 000005 6010 04 tnz 5,ic 000147 000143 la 4 00010 2361 20 ldq pr4|8,* dm_error_$delete_pending_transaction 000144 aa 6 00032 3735 20 epp7 pr6|26,* 000145 aa 7 00006 7561 20 stq pr7|6,* A_code 000146 aa 000020 7100 04 tra 16,ic 000166 STATEMENT 1 ON LINE 69 else do; STATEMENT 1 ON LINE 70 call transaction_manager_$commit_txn (txn_id, code); 000147 aa 6 00100 3521 00 epp2 pr6|64 txn_id 000150 aa 6 00126 2521 00 spri2 pr6|86 000151 aa 6 00102 3521 00 epp2 pr6|66 code 000152 aa 6 00130 2521 00 spri2 pr6|88 000153 aa 6 00124 6211 00 eax1 pr6|84 000154 aa 010000 4310 07 fld 4096,dl 000155 la 4 00022 3521 20 epp2 pr4|18,* transaction_manager_$commit_txn 000156 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 71 if code ^= 0 then call ERROR_RETURN (code); 000157 aa 6 00102 2361 00 ldq pr6|66 code 000160 aa 000004 6000 04 tze 4,ic 000164 000161 aa 000047 3520 04 epp2 39,ic 000230 = 000002000000 000162 aa 000005 6700 04 tsp4 5,ic 000167 000163 aa 000003 7100 04 tra 3,ic 000166 STATEMENT 1 ON LINE 72 else A_code = 0; 000164 aa 6 00032 3735 20 epp7 pr6|26,* 000165 aa 7 00006 4501 20 stz pr7|6,* A_code STATEMENT 1 ON LINE 73 end; STATEMENT 1 ON LINE 75 RETURN: return; 000166 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 99 end delete_dm_file_; BEGIN PROCEDURE ERROR_RETURN ENTRY TO ERROR_RETURN STATEMENT 1 ON LINE 78 ERROR_RETURN: proc (P_code); 000167 aa 6 00112 6501 00 spri4 pr6|74 000170 aa 6 00114 2521 00 spri2 pr6|76 STATEMENT 1 ON LINE 82 A_code = P_code; 000171 aa 2 00002 2361 20 ldq pr2|2,* P_code 000172 aa 6 00032 3735 20 epp7 pr6|26,* 000173 aa 7 00006 7561 20 stq pr7|6,* A_code STATEMENT 1 ON LINE 83 call FINISH; 000174 aa 6 00056 6211 00 eax1 pr6|46 000175 aa 000000 4310 07 fld 0,dl 000176 aa 000004 3520 04 epp2 4,ic 000202 = 000120627000 000177 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 84 go to RETURN; 000200 aa 777766 7100 04 tra -10,ic 000166 STATEMENT 1 ON LINE 86 end ERROR_RETURN; END PROCEDURE ERROR_RETURN BEGIN PROCEDURE FINISH ENTRY TO FINISH STATEMENT 1 ON LINE 89 FINISH: proc (); 000201 da 000123200000 000202 aa 000120 6270 00 eax7 80 000203 aa 7 00034 3521 20 epp2 pr7|28,* 000204 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000205 aa 000000000000 000206 aa 000000000000 STATEMENT 1 ON LINE 91 if txn_id ^= "0"b & begin_code ^= dm_error_$transaction_in_progress then call transaction_manager_$abort_txn (txn_id, 0); 000207 aa 6 00040 3735 20 epp7 pr6|32,* 000210 aa 7 00100 2351 00 lda pr7|64 txn_id 000211 aa 000015 6000 04 tze 13,ic 000226 000212 aa 7 00101 2361 00 ldq pr7|65 begin_code 000213 la 4 00012 1161 20 cmpq pr4|10,* dm_error_$transaction_in_progress 000214 aa 000012 6000 04 tze 10,ic 000226 000215 aa 6 00100 4501 00 stz pr6|64 000216 aa 7 00100 3521 00 epp2 pr7|64 txn_id 000217 aa 6 00104 2521 00 spri2 pr6|68 000220 aa 6 00100 3521 00 epp2 pr6|64 000221 aa 6 00106 2521 00 spri2 pr6|70 000222 aa 6 00102 6211 00 eax1 pr6|66 000223 aa 010000 4310 07 fld 4096,dl 000224 la 4 00016 3521 20 epp2 pr4|14,* transaction_manager_$abort_txn 000225 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 94 end FINISH; 000226 aa 0 00631 7101 00 tra pr0|409 return END PROCEDURE FINISH END PROCEDURE delete_dm_file_ ----------------------------------------------------------- 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