COMPILATION LISTING OF SEGMENT dm_user_shutdown Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0935.2 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* The dm_user_shutdown command terminates a process' usage of a 10* Data Management System. It is a direct interface to the entry 11* transacton_manager_$user_shutdown. All information returned from the 12* subroutine call will be written to the user_output I/O switch. If an 13* error occurs, ONE call to com_err_ will be made at the end of the 14* normal output. 15* 16* 02/20/85 dm_user_shutdown 17* 18* Syntax as a command: dm_user_shutdown 19* 20* Function: removes the process invoking it from the current invocation 21* of the data management system (DMS). 22* 23* Notes: All user process references to per-process and per-system data 24* are invalidated to permit subsequent reentry to DMS. If a transaction 25* is in progress in the process when you issue the command, the DM 26* Daemon (Data_Management.Daemon) rolls it back automatically. 27* 28* Normally all processes using data management are shut down as part of 29* a data management system shutdown, with no explicit user intervention. 30* 31* This command is part of the command level interface to Multics data 32* management. It is intended for use in a test environment or for 33* debugging purposes. 34**/ 35 36 /* HISTORY: 37* 38*Written by L. A. Newcomb, 03/09/84. 39*Modified: 40*05/16/84 by L. A. Newcomb: fixed to pass user_shutdown_status_code to 41* tm_$user_shutdown instead of another code value to stop stack 42* garbage from staying in former; made to understand that only 43* TDT entries with active transactions are reported back; added 44* HISI pnotice. 45*03/19/85 by S. Cox: Added dm_not_available_ handler. 46**/ 47 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 48 49 dm_user_shutdown: 50 proc (); 51 52 /* DECLARATIONS */ 53 54 /* Parameter */ 55 /* Automatic */ 56 dcl ( 57 accept_control_argument bit (1) aligned init ("0"b), 58 arg_list_ptr ptr init (null), 59 code fixed bin (35) init (0), 60 display_messages bit (1) aligned init (YES), 61 err_msg char (100) aligned init (""), 62 finish_started_freeing_structures bit (1) aligned init (NO), 63 force_interpretation_as_argument bit (1) aligned init (NO), 64 is_active_function bit (1) aligned init (NO), 65 number_of_args fixed bin init (-1), 66 sci_ptr ptr init (null), 67 shut_info_index fixed bin init (0) 68 ) automatic; 69 70 /* Based */ 71 /* Builtin */ 72 dcl (addr, bin, null) builtin; 73 74 /* Condition */ 75 dcl (cleanup, dm_not_available_) condition; 76 77 /* Constant */ 78 dcl ( 79 IOA_GENERAL_RS_NO_NEW_LINE bit (1) aligned init (""b), 80 IOA_GENERAL_RS_DONT_PAD bit (1) aligned init (""b), 81 NO bit (1) aligned init ("0"b), 82 SSU_INVOCATION_ERR_MSG char (49) 83 init ( 84 "Cannot establish standalone subsystem invocation." 85 ), 86 YES bit (1) aligned init ("1"b), 87 myname init ("dm_user_shutdown") char (16) 88 ) internal static options (constant); 89 90 /* Entry */ 91 dcl ( 92 com_err_ entry options (variable), 93 convert_status_code_ entry (fixed bin (35), 94 char (8) aligned, char (100) aligned), 95 cu_$arg_list_ptr entry (ptr), 96 get_dm_free_area_ entry () returns (ptr), 97 ioa_ entry () options (variable), 98 ioa_$general_rs entry (ptr, fixed bin, fixed bin, 99 char (*), fixed bin (21), 100 bit (1) aligned, bit (1) aligned), 101 ssu_$abort_line entry () options (variable), 102 ssu_$destroy_invocation entry (ptr), 103 ssu_$return_arg entry (ptr, fixed bin, bit (1) aligned, 104 ptr, fixed bin (21)), 105 ssu_$standalone_invocation entry (ptr, char (*), char (*), ptr, 106 entry, fixed bin (35)), 107 transaction_manager_$user_shutdown entry (ptr, ptr, fixed bin (35)) 108 ) external; 109 110 /* External */ 111 112 dcl ( 113 dm_error_$system_not_initialized, 114 error_table_$active_function, 115 error_table_$too_many_args, 116 error_table_$unimplemented_version 117 ) fixed bin (35) external; 118 119 /* END OF DECLARATIONS */ 120 121 /* dm_user_shutdown: repeat for reader */ 122 /* proc (); */ 123 124 SETUP_INVOCATION: 125 do; 126 call cu_$arg_list_ptr (arg_list_ptr); 127 128 tm_shutdown_info_ptr = null (); 129 on cleanup call CLEAN_UP (); 130 131 call ssu_$standalone_invocation (sci_ptr, myname, "", arg_list_ptr, 132 ABORT_ENTRY, code); 133 if code ^= 0 then /* should be VERY rare */ 134 call ERROR_RETURN_FROM_SSU_SETUP (code); 135 136 on dm_not_available_ 137 call ERROR_RETURN (dm_error_$system_not_initialized); 138 139 call ssu_$return_arg (sci_ptr, number_of_args, is_active_function, 140 (null ()), (0)); /* don't care what AF return info is */ 141 142 if is_active_function then 143 call ERROR_RETURN (error_table_$active_function); 144 if number_of_args > 0 then 145 call ERROR_RETURN (error_table_$too_many_args, "^/Usage: ^a", myname); 146 end SETUP_INVOCATION; 147 148 DO_PER_PROCESS_SHUTDOWN: 149 do; 150 call transaction_manager_$user_shutdown (get_dm_free_area_ (), 151 tm_shutdown_info_ptr, code); 152 153 if code ^= 0 then 154 call ERROR_RETURN (code, "^/Unable to do dm per-process shutdown."); 155 else if tm_shutdown_info_ptr = null () then 156 call RETURN (); /* User wasn't using DM. */ 157 158 call CHECK_VERSION (tm_shutdown_info.version, TM_SHUTDOWN_INFO_VERSION_1, 159 "tm_shutdown_info"); 160 end DO_PER_PROCESS_SHUTDOWN; 161 162 163 /* Tell the user what tm_ did for him/her */ 164 if tm_shutdown_info.count > 0 then do; 165 if tm_shutdown_info.count = 1 then 166 call ioa_ ("A transaction was adjusted."); 167 else call ioa_ ("^d transactions were adjusted.^/", 168 tm_shutdown_info.count); 169 170 do shut_info_index = 1 to tm_shutdown_info.count; 171 if tm_shutdown_info.txn_id (shut_info_index) ^= ""b then do; 172 call convert_status_code_ (tm_shutdown_info 173 .error_code (shut_info_index), "", err_msg); 174 call ioa_ ( 175 "^5xTransaction id: ^d, Operation: ^a, State: ^d, ^[Error: ^a^;^]", 176 bin (tm_shutdown_info.txn_id (shut_info_index)), 177 OP_NAME (tm_shutdown_info.op_completed (shut_info_index)), 178 tm_shutdown_info.state (shut_info_index), 179 (tm_shutdown_info.error_code (shut_info_index) ^= 0), err_msg) 180 ; 181 end; 182 end; 183 end; 184 185 call RETURN (); 186 187 MAIN_RETURN: 188 return; 189 190 RETURN: 191 proc (); 192 ABORT_ENTRY: 193 entry (); /* ABORT currently same as RETURN */ 194 195 call FINISH (); 196 go to MAIN_RETURN; 197 198 end RETURN; 199 200 FINISH: 201 proc (); 202 CLEAN_UP: 203 entry (); /* CLEAN_UP currently same as FINISH */ 204 205 call ssu_$destroy_invocation (sci_ptr); 206 207 if ^finish_started_freeing_structures then 208 FREE_STRUCTURES: 209 do; 210 finish_started_freeing_structures = YES; 211 if tm_shutdown_info_ptr ^= null () then 212 free tm_shutdown_info; 213 end FREE_STRUCTURES; 214 215 return; 216 217 end FINISH; 218 219 CHECK_VERSION: 220 proc (cv_p_received_version, cv_p_expected_version, cv_p_structure_name); 221 222 dcl cv_p_received_version char (8) aligned; 223 dcl cv_p_expected_version char (8) aligned; 224 dcl cv_p_structure_name char (*); 225 226 if cv_p_received_version ^= cv_p_expected_version then 227 call ERROR_RETURN (error_table_$unimplemented_version, 228 "^/Expected version ^d of the ^a structure.^/Received version ^d, instead.", 229 cv_p_expected_version, cv_p_structure_name, cv_p_received_version); 230 231 end CHECK_VERSION; 232 233 ERROR_RETURN_FROM_SSU_SETUP: 234 proc (erfss_p_code); 235 236 dcl erfss_p_code fixed bin (35) parameter; 237 238 call com_err_ (erfss_p_code, myname, SSU_INVOCATION_ERR_MSG); 239 240 go to MAIN_RETURN; /* FINISH skipped since nothing to destroy */ 241 242 end ERROR_RETURN_FROM_SSU_SETUP; 243 244 ERROR_RETURN: 245 proc options (variable); 246 247 dcl ( 248 er_arg_list_ptr ptr, 249 er_code fixed bin (35), 250 er_message char (1024), 251 er_message_length fixed bin (21) 252 ) automatic; 253 254 dcl ( 255 er_fixed_bin_35_value fixed bin (35), 256 er_message_overlay char (er_message_length) 257 ) based; 258 259 call cu_$arg_list_ptr (er_arg_list_ptr); 260 er_code = er_arg_list_ptr -> arg_list.arg_ptrs (1) -> er_fixed_bin_35_value; 261 262 if er_arg_list_ptr -> arg_list.arg_count > 1 then do; 263 call ioa_$general_rs (er_arg_list_ptr, 2, 3, er_message, 264 er_message_length, IOA_GENERAL_RS_DONT_PAD, 265 IOA_GENERAL_RS_NO_NEW_LINE); 266 call ssu_$abort_line (sci_ptr, er_code, 267 addr (er_message) -> er_message_overlay); 268 end; 269 else /* no extra info */ 270 call ssu_$abort_line (sci_ptr, er_code); 271 272 end ERROR_RETURN; 273 1 1 /* BEGIN INCLUDE FILE dm_tm_shutdown_info.incl.pl1 */ 1 2 1 3 /* DESCRIPTION: 1 4* 1 5* This contains the structure used to pass information from 1 6* the DM ring to the user ring about a process' transactions that 1 7* existed when the process terminated its usage of a Data 1 8* Management System. 1 9**/ 1 10 1 11 /* HISTORY: 1 12*Written by Steve Herbst, 11/22/83. 1 13*Modified: 1 14*04/27/84 by L. A. Newcomb: Renamed structure shutdown_info to 1 15* tm_shutdown_info to prevent collision with system shutdown info 1 16* structure. 1 17*05/16/84 by Steve Herbst: Added ABANDONED constant. 1 18*09/20/84 by Lee A. Newcomb: Added an abandoned entry to the OP_NAME array, 1 19* aligned the version, and init'd tm_shutdown_info_ptr to null. 1 20**/ 1 21 1 22 /* format: style4,indattr,^indcomtxt,idind33 */ 1 23 1 24 dcl 1 tm_shutdown_info aligned based (tm_shutdown_info_ptr), 1 25 2 version char (8) aligned, /* = "TMSHUT 1" */ 1 26 2 count fixed bin, 1 27 2 transaction (tm_shutdown_alloc_count refer (tm_shutdown_info.count)), 1 28 3 txn_id bit (36) aligned, 1 29 3 op_completed fixed bin, 1 30 3 state fixed bin, 1 31 3 error_code fixed bin (35); 1 32 1 33 dcl tm_shutdown_info_ptr ptr init (null ()); 1 34 dcl tm_shutdown_alloc_count fixed bin; 1 35 1 36 dcl ( /* constants */ 1 37 TM_SHUTDOWN_INFO_VERSION_1 char (8) aligned init ("TMSHUT 1"), 1 38 (ABORTED init (1), 1 39 FINISHED_ABORT init (2), 1 40 FINISHED_COMMIT init (3), 1 41 ABANDONED init (4)) fixed bin, 1 42 OP_NAME (4) char (32) init 1 43 ("Aborted", "Finished aborting", "Finished committing", "Abandoned") 1 44 ) int static options (constant); 1 45 1 46 /* END INCLUDE FILE - dm_tm_shutdown_info.incl.pl1 */ 274 275 2 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 2 2* 2 3* James R. Davis 10 May 79 */ 2 4 2 5 dcl 1 arg_list aligned based, 2 6 2 header, 2 7 3 arg_count fixed bin (17) unsigned unal, 2 8 3 pad1 bit (1) unal, 2 9 3 call_type fixed bin (18) unsigned unal, 2 10 3 desc_count fixed bin (17) unsigned unal, 2 11 3 pad2 bit (19) unal, 2 12 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 2 13 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 2 14 2 15 2 16 2 17 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 2 18 2 header, 2 19 3 arg_count fixed bin (17) unsigned unal, 2 20 3 pad1 bit (1) unal, 2 21 3 call_type fixed bin (18) unsigned unal, 2 22 3 desc_count fixed bin (17) unsigned unal, 2 23 3 pad2 bit (19) unal, 2 24 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 2 25 2 envptr ptr, 2 26 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 2 27 2 28 2 29 dcl ( 2 30 Quick_call_type init (0), 2 31 Interseg_call_type init (4), 2 32 Envptr_supplied_call_type 2 33 init (8) 2 34 ) fixed bin (18) unsigned unal int static options (constant); 2 35 2 36 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 2 37* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 2 38* an argument list of the proper size in the user's stack 2 39* 2 40**/ 2 41 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 276 277 278 end dm_user_shutdown; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0824.8 dm_user_shutdown.pl1 >spec>on>7192.pbf-04/04/85>dm_user_shutdown.pl1 274 1 01/07/85 0900.0 dm_tm_shutdown_info.incl.pl1 >ldd>include>dm_tm_shutdown_info.incl.pl1 276 2 10/23/81 1948.6 arg_list.incl.pl1 >ldd>include>arg_list.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. IOA_GENERAL_RS_DONT_PAD 000105 constant bit(1) initial dcl 78 set ref 263* IOA_GENERAL_RS_NO_NEW_LINE 000105 constant bit(1) initial dcl 78 set ref 263* NO constant bit(1) initial dcl 78 ref 56 56 56 OP_NAME 000000 constant char(32) initial array unaligned dcl 1-36 set ref 174* SSU_INVOCATION_ERR_MSG 000046 constant char(49) initial unaligned dcl 78 set ref 238* TM_SHUTDOWN_INFO_VERSION_1 000040 constant char(8) initial dcl 1-36 set ref 158* YES constant bit(1) initial dcl 78 ref 56 210 accept_control_argument 000100 automatic bit(1) initial dcl 56 set ref 56* addr builtin function dcl 72 ref 266 arg_count based fixed bin(17,0) level 3 packed unsigned unaligned dcl 2-5 ref 262 arg_list based structure level 1 dcl 2-5 arg_list_ptr 000102 automatic pointer initial dcl 56 set ref 56* 126* 131* arg_ptrs 2 based pointer array level 2 dcl 2-5 ref 260 bin builtin function dcl 72 ref 174 174 cleanup 000150 stack reference condition dcl 75 ref 129 code 000104 automatic fixed bin(35,0) initial dcl 56 set ref 56* 131* 133 133* 150* 153 153* com_err_ 000010 constant entry external dcl 91 ref 238 convert_status_code_ 000012 constant entry external dcl 91 ref 172 count 2 based fixed bin(17,0) level 2 dcl 1-24 set ref 164 165 167* 170 211 cu_$arg_list_ptr 000014 constant entry external dcl 91 ref 126 259 cv_p_expected_version parameter char(8) dcl 223 set ref 219 226 226* cv_p_received_version parameter char(8) dcl 222 set ref 219 226 226* cv_p_structure_name parameter char unaligned dcl 224 set ref 219 226* display_messages 000105 automatic bit(1) initial dcl 56 set ref 56* dm_error_$system_not_initialized 000036 external static fixed bin(35,0) dcl 112 set ref 136* dm_not_available_ 000156 stack reference condition dcl 75 ref 136 er_arg_list_ptr 000100 automatic pointer dcl 247 set ref 259* 260 262 263* er_code 000102 automatic fixed bin(35,0) dcl 247 set ref 260* 266* 269* er_fixed_bin_35_value based fixed bin(35,0) dcl 254 ref 260 er_message 000103 automatic char(1024) unaligned dcl 247 set ref 263* 266 er_message_length 000503 automatic fixed bin(21,0) dcl 247 set ref 263* 266 266 er_message_overlay based char unaligned dcl 254 set ref 266* erfss_p_code parameter fixed bin(35,0) dcl 236 set ref 233 238* err_msg 000106 automatic char(100) initial dcl 56 set ref 56* 172* 174* error_code 6 based fixed bin(35,0) array level 3 dcl 1-24 set ref 172* 174 error_table_$active_function 000040 external static fixed bin(35,0) dcl 112 set ref 142* error_table_$too_many_args 000042 external static fixed bin(35,0) dcl 112 set ref 144* error_table_$unimplemented_version 000044 external static fixed bin(35,0) dcl 112 set ref 226* finish_started_freeing_structures 000137 automatic bit(1) initial dcl 56 set ref 56* 207 210* force_interpretation_as_argument 000140 automatic bit(1) initial dcl 56 set ref 56* get_dm_free_area_ 000016 constant entry external dcl 91 ref 150 150 header based structure level 2 dcl 2-5 ioa_ 000020 constant entry external dcl 91 ref 165 167 174 ioa_$general_rs 000022 constant entry external dcl 91 ref 263 is_active_function 000141 automatic bit(1) initial dcl 56 set ref 56* 139* 142 myname 000042 constant char(16) initial unaligned dcl 78 set ref 131* 144* 238* null builtin function dcl 72 ref 56 56 128 139 155 1-33 211 number_of_args 000142 automatic fixed bin(17,0) initial dcl 56 set ref 56* 139* 144 op_completed 4 based fixed bin(17,0) array level 3 dcl 1-24 ref 174 sci_ptr 000144 automatic pointer initial dcl 56 set ref 56* 131* 139* 205* 266* 269* shut_info_index 000146 automatic fixed bin(17,0) initial dcl 56 set ref 56* 170* 171 172 174 174 174 174 174* ssu_$abort_line 000024 constant entry external dcl 91 ref 266 269 ssu_$destroy_invocation 000026 constant entry external dcl 91 ref 205 ssu_$return_arg 000030 constant entry external dcl 91 ref 139 ssu_$standalone_invocation 000032 constant entry external dcl 91 ref 131 state 5 based fixed bin(17,0) array level 3 dcl 1-24 set ref 174* tm_shutdown_info based structure level 1 dcl 1-24 set ref 211 tm_shutdown_info_ptr 000164 automatic pointer initial dcl 1-33 set ref 128* 150* 155 158 164 165 167 170 171 172 174 174 174 174 174 1-33* 211 211 transaction 3 based structure array level 2 dcl 1-24 transaction_manager_$user_shutdown 000034 constant entry external dcl 91 ref 150 txn_id 3 based bit(36) array level 3 dcl 1-24 ref 171 174 174 version based char(8) level 2 dcl 1-24 set ref 158* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABANDONED internal static fixed bin(17,0) initial dcl 1-36 ABORTED internal static fixed bin(17,0) initial dcl 1-36 Envptr_supplied_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 2-29 FINISHED_ABORT internal static fixed bin(17,0) initial dcl 1-36 FINISHED_COMMIT internal static fixed bin(17,0) initial dcl 1-36 Interseg_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 2-29 Quick_call_type internal static fixed bin(18,0) initial unsigned unaligned dcl 2-29 arg_list_with_envptr based structure level 1 dcl 2-17 tm_shutdown_alloc_count automatic fixed bin(17,0) dcl 1-34 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_ENTRY 000765 constant entry internal dcl 192 ref 131 131 CHECK_VERSION 001046 constant entry internal dcl 219 ref 158 CLEAN_UP 001012 constant entry internal dcl 202 ref 129 DO_PER_PROCESS_SHUTDOWN 000472 constant label dcl 148 ERROR_RETURN 001152 constant entry internal dcl 244 ref 136 142 144 153 226 ERROR_RETURN_FROM_SSU_SETUP 001125 constant entry internal dcl 233 ref 133 FINISH 001003 constant entry internal dcl 200 ref 195 FREE_STRUCTURES 001031 constant label dcl 207 MAIN_RETURN 000754 constant label dcl 187 ref 196 240 RETURN 000756 constant entry internal dcl 190 ref 155 185 SETUP_INVOCATION 000262 constant label dcl 124 dm_user_shutdown 000233 constant entry external dcl 49 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1606 1654 1310 1616 Length 2120 1310 46 227 276 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dm_user_shutdown 266 external procedure is an external procedure. on unit on line 129 64 on unit on unit on line 136 72 on unit RETURN 64 internal procedure is assigned to an entry variable. FINISH 68 internal procedure is called by several nonquick procedures. CHECK_VERSION internal procedure shares stack frame of external procedure dm_user_shutdown. ERROR_RETURN_FROM_SSU_SETUP internal procedure shares stack frame of external procedure dm_user_shutdown. ERROR_RETURN 360 internal procedure is declared options(variable). STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ERROR_RETURN 000100 er_arg_list_ptr ERROR_RETURN 000102 er_code ERROR_RETURN 000103 er_message ERROR_RETURN 000503 er_message_length ERROR_RETURN dm_user_shutdown 000100 accept_control_argument dm_user_shutdown 000102 arg_list_ptr dm_user_shutdown 000104 code dm_user_shutdown 000105 display_messages dm_user_shutdown 000106 err_msg dm_user_shutdown 000137 finish_started_freeing_structures dm_user_shutdown 000140 force_interpretation_as_argument dm_user_shutdown 000141 is_active_function dm_user_shutdown 000142 number_of_args dm_user_shutdown 000144 sci_ptr dm_user_shutdown 000146 shut_info_index dm_user_shutdown 000164 tm_shutdown_info_ptr dm_user_shutdown THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return tra_ext enable ext_entry int_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_status_code_ cu_$arg_list_ptr get_dm_free_area_ ioa_ ioa_$general_rs ssu_$abort_line ssu_$destroy_invocation ssu_$return_arg ssu_$standalone_invocation transaction_manager_$user_shutdown THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$system_not_initialized error_table_$active_function error_table_$too_many_args error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 49 000232 56 000240 1 33 000261 126 000262 128 000270 129 000272 131 000314 133 000353 136 000357 139 000405 142 000427 144 000443 150 000472 153 000514 155 000536 158 000546 164 000573 165 000576 167 000615 170 000635 171 000645 172 000651 174 000667 182 000746 185 000750 187 000754 190 000755 192 000763 195 000772 196 000777 200 001002 202 001010 205 001017 207 001026 210 001031 211 001033 215 001045 219 001046 226 001057 231 001124 233 001125 238 001127 240 001150 244 001151 259 001157 260 001165 262 001170 263 001174 266 001237 268 001264 269 001265 272 001303 ----------------------------------------------------------- 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