COMPILATION LISTING OF SEGMENT signal Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1147.26_Tue_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* a real command interface for signal. Finally. */ 12 /* format: style2 */ 13 14 signal: 15 procedure options (variable); 16 17 18 /* Coded 12/81 Benson I. Margulies */ 19 20 declare signal_ entry (character (*), pointer, pointer, pointer); 21 declare com_err_ entry () options (variable); 22 declare cu_$arg_count entry (fixed bin, fixed bin (35)); 23 declare cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 24 25 declare cv_ptr_ entry (character (*), fixed binary (35)) returns (pointer); 26 declare cv_ptr_$terminate entry (pointer); 27 28 declare argument_count fixed bin; 29 declare argument_ptr pointer; 30 declare argument_length fixed bin (21); 31 declare argument character (argument_length) based (argument_ptr); 32 declare argx fixed bin; 33 34 declare error_ptr pointer; 35 declare error_name character (256); 36 declare based_error_code fixed bin (35) based (error_ptr); 37 1 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 1 2 /* format: style2 */ 1 3 1 4 declare condition_info_header_ptr 1 5 pointer; 1 6 declare 1 condition_info_header 1 7 aligned based (condition_info_header_ptr), 1 8 2 length fixed bin, /* length in words of this structure */ 1 9 2 version fixed bin, /* version number of this structure */ 1 10 2 action_flags aligned, /* tell handler how to proceed */ 1 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 1 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 1 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 1 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 1 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 1 16 3 pad bit (32) unaligned, 1 17 2 info_string char (256) varying, /* may contain printable message */ 1 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 1 19 1 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 38 39 declare 1 cih aligned like condition_info_header; 40 41 declare condition_name character (256); 42 declare code fixed bin (35); 43 44 declare ( 45 error_table_$badopt, 46 error_table_$too_many_args, 47 error_table_$noarg 48 ) fixed bin (35) external static; 49 declare ME character (32) init ("signal") internal static options (constant); 50 declare cleanup condition; 51 declare (unspec, substr, null, currentsize) 52 builtin; 53 54 55 call cu_$arg_count (argument_count, code); 56 if code ^= 0 57 then do; 58 call com_err_ (code, ME); 59 return; 60 end; 61 62 if argument_count = 0 63 then do; 64 call com_err_ (0, ME, "Usage: signal CONDITION -control_args"); 65 return; 66 end; 67 68 error_ptr = null; 69 on cleanup 70 begin; 71 if error_ptr ^= null 72 then call cv_ptr_$terminate (error_ptr); 73 end; 74 condition_name = ""; 75 unspec (cih) = ""b; 76 cih.version = 1; 77 cih.info_string = " "; 78 cih.length = currentsize (cih); 79 80 do argx = 1 to argument_count; 81 call cu_$arg_ptr (argx, argument_ptr, argument_length, (0)); 82 if substr (argument, 1, 1) ^= "-" 83 then do; 84 if condition_name ^= "" 85 then do; 86 call com_err_ (error_table_$too_many_args, ME, "Only one condition name may be given.") 87 ; 88 return; 89 end; 90 condition_name = argument; 91 end; 92 else if argument = "-info_string" 93 then do; 94 if cih.info_string ^= "" /* -info_string "" -info_string foo will work, which is likely wrong */ 95 then do; 96 call com_err_ (error_table_$too_many_args, ME, "Only one info_string may be given."); 97 go to RETURN; 98 end; 99 if argx = argument_count 100 then do; 101 nostring: 102 call com_err_ (error_table_$noarg, ME, 103 "An info string must be supplied with -info_string."); 104 go to RETURN; 105 end; 106 argx = argx + 1; 107 call cu_$arg_ptr (argx, argument_ptr, argument_length, (0)); 108 if substr (argument, 1, 1) = "-" 109 then go to nostring; 110 cih.info_string = argument; 111 end; 112 else if argument = "-code" 113 then do; 114 if argx = argument_count 115 then do; 116 nocode: 117 call com_err_ (error_table_$noarg, ME, 118 "An error table code must be supplied with -code."); 119 go to RETURN; 120 end; 121 argx = argx + 1; 122 call cu_$arg_ptr (argx, argument_ptr, argument_length, (0)); 123 if substr (argument, 1, 1) = "-" 124 then goto nocode; 125 126 if index (argument, "$") = 0 127 then error_name = "error_table_$" || argument; 128 else error_name = argument; 129 error_ptr = cv_ptr_ (error_name, code); 130 if code ^= 0 131 then do; 132 call com_err_ (code, ME, "^a", error_name); 133 return; 134 end; 135 cih.status_code = based_error_code; 136 end; 137 else if argument = "-cant_restart" 138 then cih.cant_restart = "1"b; 139 else if argument = "-default_restart" 140 then cih.default_restart = "1"b; 141 else if argument = "-quiet_restart" 142 then cih.quiet_restart = "1"b; 143 else if argument = "-support_signal" 144 then cih.support_signal = "1"b; 145 else do; 146 call com_err_ (error_table_$badopt, ME, "^a", argument); 147 go to RETURN; 148 end; 149 end; /* the loop */ 150 151 if condition_name = "" 152 then do; 153 call com_err_ (error_table_$noarg, ME, "A condition name must be given."); 154 RETURN: 155 if error_ptr ^= null 156 then call cv_ptr_$terminate (error_ptr); 157 return; 158 end; 159 160 call signal_ (condition_name, null, addr (cih), null); 161 go to RETURN; 162 163 end signal; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1147.2 signal.pl1 >udd>sm>ds>w>ml>signal.pl1 38 1 03/24/82 1447.2 condition_info_header.incl.pl1 >ldd>incl>condition_info_header.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. ME 000000 constant char(32) initial packed unaligned dcl 49 set ref 58* 64* 86* 96* 101* 116* 132* 146* 153* action_flags 2 000210 automatic structure level 2 dcl 39 argument based char packed unaligned dcl 31 set ref 82 90 92 108 110 112 123 126 126 128 137 139 141 143 146* argument_count 000100 automatic fixed bin(17,0) dcl 28 set ref 55* 62 80 99 114 argument_length 000104 automatic fixed bin(21,0) dcl 30 set ref 81* 82 90 92 107* 108 110 112 122* 123 126 126 128 137 139 141 143 146 146 argument_ptr 000102 automatic pointer dcl 29 set ref 81* 82 90 92 107* 108 110 112 122* 123 126 126 128 137 139 141 143 146 argx 000105 automatic fixed bin(17,0) dcl 32 set ref 80* 81* 99 106* 106 107* 114 121* 121 122* based_error_code based fixed bin(35,0) dcl 36 ref 135 cant_restart 2 000210 automatic bit(1) level 3 packed packed unaligned dcl 39 set ref 137* cih 000210 automatic structure level 1 dcl 39 set ref 75* 78 160 160 cleanup 000416 stack reference condition dcl 50 ref 69 code 000415 automatic fixed bin(35,0) dcl 42 set ref 55* 56 58* 129* 130 132* com_err_ 000012 constant entry external dcl 21 ref 58 64 86 96 101 116 132 146 153 condition_info_header based structure level 1 dcl 1-6 condition_name 000315 automatic char(256) packed unaligned dcl 41 set ref 74* 84 90* 151 160* cu_$arg_count 000014 constant entry external dcl 22 ref 55 cu_$arg_ptr 000016 constant entry external dcl 23 ref 81 107 122 currentsize builtin function dcl 51 ref 78 cv_ptr_ 000020 constant entry external dcl 25 ref 129 cv_ptr_$terminate 000022 constant entry external dcl 26 ref 71 154 default_restart 2(01) 000210 automatic bit(1) level 3 packed packed unaligned dcl 39 set ref 139* error_name 000110 automatic char(256) packed unaligned dcl 35 set ref 126* 128* 129* 132* error_ptr 000106 automatic pointer dcl 34 set ref 68* 71 71* 129* 135 154 154* error_table_$badopt 000024 external static fixed bin(35,0) dcl 44 set ref 146* error_table_$noarg 000030 external static fixed bin(35,0) dcl 44 set ref 101* 116* 153* error_table_$too_many_args 000026 external static fixed bin(35,0) dcl 44 set ref 86* 96* info_string 3 000210 automatic varying char(256) level 2 dcl 39 set ref 77* 94 110* length 000210 automatic fixed bin(17,0) level 2 dcl 39 set ref 78* null builtin function dcl 51 ref 68 71 154 160 160 160 160 quiet_restart 2(02) 000210 automatic bit(1) level 3 packed packed unaligned dcl 39 set ref 141* signal_ 000010 constant entry external dcl 20 ref 160 status_code 104 000210 automatic fixed bin(35,0) level 2 dcl 39 set ref 135* substr builtin function dcl 51 ref 82 108 123 support_signal 2(03) 000210 automatic bit(1) level 3 packed packed unaligned dcl 39 set ref 143* unspec builtin function dcl 51 set ref 75* version 1 000210 automatic fixed bin(17,0) level 2 dcl 39 set ref 76* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. condition_info_header_ptr automatic pointer dcl 1-4 NAMES DECLARED BY EXPLICIT CONTEXT. RETURN 001045 constant label dcl 154 ref 97 104 119 147 161 nocode 000541 constant label dcl 116 ref 123 nostring 000450 constant label dcl 101 ref 108 signal 000160 constant entry external dcl 14 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 160 160 index builtin function ref 126 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1234 1266 1113 1244 Length 1470 1113 32 165 120 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME signal 348 external procedure is an external procedure. on unit on line 69 68 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME signal 000100 argument_count signal 000102 argument_ptr signal 000104 argument_length signal 000105 argx signal 000106 error_ptr signal 000110 error_name signal 000210 cih signal 000315 condition_name signal 000415 code signal THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr cv_ptr_ cv_ptr_$terminate signal_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noarg error_table_$too_many_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000157 55 000165 56 000175 58 000177 59 000214 62 000215 64 000217 65 000244 68 000245 69 000247 71 000263 73 000276 74 000277 75 000302 76 000305 77 000307 78 000313 80 000315 81 000325 82 000343 84 000350 86 000354 88 000400 90 000401 91 000405 92 000406 94 000413 96 000420 97 000444 99 000445 101 000450 104 000474 106 000475 107 000476 108 000514 110 000521 111 000531 112 000532 114 000536 116 000541 119 000565 121 000566 122 000567 123 000605 126 000612 128 000642 129 000646 130 000667 132 000671 133 000720 135 000721 136 000723 137 000724 139 000733 141 000742 143 000751 146 000760 147 001012 149 001013 151 001015 153 001021 154 001045 157 001060 160 001061 161 001111 ----------------------------------------------------------- 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