COMPILATION LISTING OF SEGMENT mseg_error_v3_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 05/09/85 1117.1 mst Thu 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 mseg_error_v3_: proc (mptr, ecode, caller); 12 13 /* This procedure formats error messages for the message 14* segment facility and enters these error messages into 15* the syserr log. An error message contains the following 16* parts: 17* 18* 1. name of the calling procedure 19* 2. message segment pathname 20* 3. process group id 21* 4. system error message 22* 5. caller-supplied message 23* 24**/ 25 /* Written by J. Stern, 11/11/75 */ 26 /* Modified 3/77 by Charlie Davis for the installation of version 4 message segments */ 27 28 29 dcl mptr ptr; /* message segment pointer */ 30 dcl ecode fixed bin (35); /* error code (input!) */ 31 dcl caller char (*); /* procedure name of caller */ 32 33 dcl buffer char (512) aligned; /* buffer to construct error message */ 34 dcl bi fixed bin; /* current length of buffer */ 35 dcl dir char (168); /* directory name */ 36 dcl dirlen fixed bin; /* length of dir */ 37 dcl ent char (32); /* entry name */ 38 dcl code fixed bin (35); /* error code */ 39 dcl pgid char (32); /* process group id */ 40 dcl short_mess char (8) aligned; /* short error message */ 41 dcl long_mess char (100) aligned; /* long error message */ 42 dcl nargs fixed bin; /* number of arguments */ 43 dcl argp ptr; /* argument list ptr */ 44 dcl ioa_string char (256); /* string returned by ioa_ */ 45 dcl len fixed bin; /* length of ioa_string */ 46 47 48 dcl (null, substr, length, reverse, verify) builtin; 49 50 dcl hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)); 51 dcl get_group_id_ entry returns (char (32)); 52 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 53 dcl cu_$arg_count entry (fixed bin); 54 dcl cu_$arg_list_ptr entry (ptr); 55 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin, bit (1) aligned, bit (1) aligned); 56 dcl admin_gate_$syserr entry options (variable); 57 58 /* */ 59 60 bi = 0; /* set initial buffer length */ 61 62 /* add caller name to buffer */ 63 64 if caller ^= "" then do; 65 call strip_add (caller); 66 call add (":"); 67 end; 68 69 /* add message segment pathname to buffer */ 70 71 if mptr ^= null then do; 72 call hcs_$fs_get_path_name (mptr, dir, dirlen, ent, code); 73 if code ^= 0 then 74 call add (" Cannot get pathname."); 75 else do; 76 call add (" "); 77 call add (substr (dir, 1, dirlen)); 78 call add (">"); 79 call strip_add (ent); 80 end; 81 end; 82 83 /* add process group id to buffer */ 84 85 call add (" for "); 86 pgid = get_group_id_ (); 87 call strip_add (pgid); 88 89 /* add system error message to buffer */ 90 91 if ecode ^= 0 then do; 92 call add (" "); 93 call convert_status_code_ (ecode, short_mess, long_mess); 94 call strip_add ((long_mess)); 95 end; 96 97 /* add ioa_ message to buffer */ 98 99 call cu_$arg_count (nargs); 100 if nargs > 3 then do; 101 call add (" "); 102 call cu_$arg_list_ptr (argp); 103 call ioa_$general_rs (argp, 4, 5, ioa_string, len, "0"b, "0"b); 104 call strip_add (substr (ioa_string, 1, len)); 105 end; 106 107 /* now just spit it out */ 108 109 finish: call admin_gate_$syserr (15, substr (buffer, 1, bi)); 110 return; 111 112 113 strip_add: proc (item); /* strips trailing blanks and adds item to buffer */ 114 115 dcl item char (*); 116 dcl (i, j) fixed bin; 117 dcl strip_sw bit (1) aligned; 118 119 120 strip_sw = "1"b; /* strip trailing blanks */ 121 go to join; 122 123 add: entry (item); /* adds item to buffer */ 124 125 strip_sw = "0"b; 126 127 128 join: i = length (item); 129 if i = 0 then return; 130 131 if strip_sw then do; 132 j = verify (reverse (item), " "); 133 if j = 0 then return; /* item was all blanks */ 134 i = i -j + 1; 135 end; 136 137 if bi + i > length (buffer) then i = length (buffer) - bi; 138 substr (buffer, bi+1, i) = substr (item, 1, i); 139 bi = bi + i; 140 if bi = length (buffer) then go to finish; 141 142 end strip_add; 143 144 145 end mseg_error_v3_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/06/85 1619.0 mseg_error_v3_.pl1 >spec>on>mseg>mseg_error_v3_.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. admin_gate_$syserr 000024 constant entry external dcl 56 ref 109 argp 000432 automatic pointer dcl 43 set ref 102* 103* bi 000300 automatic fixed bin(17,0) dcl 34 set ref 60* 109 109 137 137 138 139* 139 140 buffer 000100 automatic char(512) dcl 33 set ref 109 109 137 137 138* 140 caller parameter char unaligned dcl 31 set ref 11 64 65* code 000364 automatic fixed bin(35,0) dcl 38 set ref 72* 73 convert_status_code_ 000014 constant entry external dcl 52 ref 93 cu_$arg_count 000016 constant entry external dcl 53 ref 99 cu_$arg_list_ptr 000020 constant entry external dcl 54 ref 102 dir 000301 automatic char(168) unaligned dcl 35 set ref 72* 77 77 dirlen 000353 automatic fixed bin(17,0) dcl 36 set ref 72* 77 77 ecode parameter fixed bin(35,0) dcl 30 set ref 11 91 93* ent 000354 automatic char(32) unaligned dcl 37 set ref 72* 79* get_group_id_ 000012 constant entry external dcl 51 ref 86 hcs_$fs_get_path_name 000010 constant entry external dcl 50 ref 72 i 000100 automatic fixed bin(17,0) dcl 116 set ref 128* 129 134* 134 137 137* 138 138 139 ioa_$general_rs 000022 constant entry external dcl 55 ref 103 ioa_string 000434 automatic char(256) unaligned dcl 44 set ref 103* 104 104 item parameter char unaligned dcl 115 ref 113 123 128 132 138 j 000101 automatic fixed bin(17,0) dcl 116 set ref 132* 133 134 len 000534 automatic fixed bin(17,0) dcl 45 set ref 103* 104 104 length builtin function dcl 48 ref 128 137 137 140 long_mess 000400 automatic char(100) dcl 41 set ref 93* 94 mptr parameter pointer dcl 29 set ref 11 71 72* nargs 000431 automatic fixed bin(17,0) dcl 42 set ref 99* 100 null builtin function dcl 48 ref 71 pgid 000365 automatic char(32) unaligned dcl 39 set ref 86* 87* reverse builtin function dcl 48 ref 132 short_mess 000376 automatic char(8) dcl 40 set ref 93* strip_sw 000102 automatic bit(1) dcl 117 set ref 120* 125* 131 substr builtin function dcl 48 set ref 77 77 104 104 109 109 138* 138 verify builtin function dcl 48 ref 132 NAMES DECLARED BY EXPLICIT CONTEXT. add 000520 constant entry internal dcl 123 ref 66 73 76 77 78 85 92 101 finish 000450 constant label dcl 109 ref 140 join 000534 constant label dcl 128 ref 121 mseg_error_v3_ 000034 constant entry external dcl 11 strip_add 000501 constant entry internal dcl 113 ref 65 79 87 94 104 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 740 766 611 750 Length 1144 611 26 142 127 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mseg_error_v3_ 442 external procedure is an external procedure. strip_add 68 internal procedure is called during a stack extension. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mseg_error_v3_ 000100 buffer mseg_error_v3_ 000300 bi mseg_error_v3_ 000301 dir mseg_error_v3_ 000353 dirlen mseg_error_v3_ 000354 ent mseg_error_v3_ 000364 code mseg_error_v3_ 000365 pgid mseg_error_v3_ 000376 short_mess mseg_error_v3_ 000400 long_mess mseg_error_v3_ 000431 nargs mseg_error_v3_ 000432 argp mseg_error_v3_ 000434 ioa_string mseg_error_v3_ 000534 len mseg_error_v3_ strip_add 000100 i strip_add 000101 j strip_add 000102 strip_sw strip_add THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out call_int_this_desc return tra_ext shorten_stack ext_entry_desc int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. admin_gate_$syserr convert_status_code_ cu_$arg_count cu_$arg_list_ptr get_group_id_ hcs_$fs_get_path_name ioa_$general_rs NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000030 60 000047 64 000050 65 000056 66 000066 71 000100 72 000105 73 000136 76 000157 77 000171 78 000210 79 000223 85 000233 86 000245 87 000254 91 000264 92 000267 93 000301 94 000315 99 000330 100 000337 101 000342 102 000354 103 000363 104 000430 105 000447 109 000450 110 000476 113 000500 120 000514 121 000516 123 000517 125 000533 128 000534 129 000536 131 000537 132 000541 133 000555 134 000556 137 000562 138 000571 139 000600 140 000602 142 000610 ----------------------------------------------------------- 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