COMPILATION LISTING OF SEGMENT ls_message_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1303.3 mst Tue Options: optimize map 1 /****^ ******************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* ******************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(85-08-01,Coren), approve(87-07-10,MCR7679), audit(07-02-27,GDixon), 9* install(87-08-04,MR12.1-1055): 10* Initial coding. 11* 2) change(87-03-18,GDixon), approve(87-07-10,MCR7679), 12* audit(87-05-19,Parisek), install(87-08-04,MR12.1-1055): 13* Correct coding standard violations. 14* END HISTORY COMMENTS */ 15 16 /* format: style4,delnl,insnl,^ifthendo */ 17 18 ls_message_: 19 procedure (); 20 21 /* This procedure contains utility entrypoints for printing messages in a login server. 22**/ 23 24 /* AUTOMATIC */ 25 26 dcl arg_list_ptr pointer; 27 dcl arg_count fixed bin; 28 dcl argl fixed bin (21); 29 dcl argp pointer; 30 dcl code fixed bin (35); 31 dcl nnl_switch bit (1) aligned; 32 dcl output_message char (512); 33 dcl output_message_len fixed bin (21); 34 dcl error_message char (100) aligned; 35 36 dcl message_locator_ptr pointer; 37 dcl message_ptr pointer; 38 39 40 /* BASED */ 41 42 dcl fixed_bin_35_based fixed bin (35) based; 43 44 dcl 1 message_locator aligned based (message_locator_ptr), 45 2 segno bit (18) unaligned, 46 2 offset bit (18) unaligned; 47 48 dcl 1 message aligned based (message_ptr), 49 2 length fixed bin (9) unsigned unaligned, 50 2 string char (message_length refer (message.length)) unaligned; 51 52 53 /* ENTRIES */ 54 55 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 56 dcl cu_$arg_list_ptr entry (ptr); 57 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 58 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 59 dcl ioa_ entry () options (variable); 60 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin (21), bit (1) aligned, bit (1) aligned); 61 dcl ioa_$general_rs_control_string 62 entry (ptr, char (*), fixed bin, char (*), fixed bin (21), bit (1) aligned, bit (1) aligned); 63 dcl ioa_$nnl entry () options (variable); 64 65 66 /* BUILTINS AND CONDITIONS */ 67 68 dcl (baseptr, ptr) builtin; 69 70 dcl io_error condition; 71 72 print: 73 entry () options (variable); 74 75 /* This entry is called to print messages derived from ls_message_table_. The 76* actual calling sequence is: 77* 78* call ls_message_$print (message_locator, ioa_args...); 79* 80* where message_locator is an error-code-like object (see the declaration of 81* message_locator, above) which is used to find an ACC string (see the declaration 82* of message) which is actually an ioa_ control string. 83**/ 84 85 nnl_switch = "0"b; 86 go to PRINT_JOIN; 87 88 print_nnl: 89 entry () options (variable); 90 91 /* same as print but suppresses the trailing newline */ 92 93 nnl_switch = "1"b; 94 95 PRINT_JOIN: 96 call cu_$arg_list_ptr (arg_list_ptr); 97 call cu_$arg_count (arg_count, (0)); 98 99 call cu_$arg_ptr (1, message_locator_ptr, argl, code); 100 if code ^= 0 101 then signal io_error; /* this would be pretty outrageous */ 102 103 message_ptr = ptr (baseptr (message_locator.segno), message_locator.offset); 104 105 if arg_count = 1 /* no data args, just print the string */ 106 then if nnl_switch 107 then call ioa_$nnl (message.string); 108 else call ioa_ (message.string); 109 110 else do; /* send ioa_ the control string and let it apply the data args */ 111 call ioa_$general_rs_control_string (arg_list_ptr, message.string, 2, output_message, output_message_len, 112 "0"b, "0"b); 113 114 begin; 115 116 dcl actual_output_message char (output_message_len) defined (output_message); 117 118 if nnl_switch 119 then call ioa_$nnl ("^a", actual_output_message); 120 else call ioa_ ("^a", actual_output_message); 121 end; 122 123 end; 124 125 return; 126 127 print_error: 128 entry () options (variable); 129 130 /* this entry is used to print error messages, with an error code supplied. 131* The calling sequence is: 132* 133* call ls_message_$print_error (code, ioa_control_string, ioa_args...); 134* 135* where the ioa_control_string and ioa_args are optional. 136**/ 137 138 call cu_$arg_count (arg_count, (0)); 139 140 call cu_$arg_ptr (1, argp, argl, code); 141 if code ^= 0 142 then signal io_error; /* unlikely to have been called with no arguments */ 143 144 call convert_status_code_ (argp -> fixed_bin_35_based, (""), error_message); 145 146 if arg_count > 1 147 then do; 148 call cu_$arg_list_ptr (arg_list_ptr); 149 call ioa_$general_rs (arg_list_ptr, 2, 3, output_message, output_message_len, "0"b, "0"b); 150 end; 151 152 else do; 153 output_message = ""; 154 output_message_len = 0; 155 end; 156 157 begin; 158 159 dcl actual_output_message char (output_message_len) defined (output_message); 160 161 call ioa_ ("^[^a ^;^s^]^a", (error_message ^= ""), error_message, actual_output_message); 162 163 end; 164 165 return; 166 167 end ls_message_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1221.9 ls_message_.pl1 >special_ldd>install>MR12.1-1054>ls_message_.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. actual_output_message defined char unaligned dcl 159 in begin block on line 157 set ref 161* actual_output_message defined char unaligned dcl 116 in begin block on line 114 set ref 118* 120* arg_count 000102 automatic fixed bin(17,0) dcl 27 set ref 97* 105 138* 146 arg_list_ptr 000100 automatic pointer dcl 26 set ref 95* 111* 148* 149* argl 000103 automatic fixed bin(21,0) dcl 28 set ref 99* 140* argp 000104 automatic pointer dcl 29 set ref 140* 144 baseptr builtin function dcl 68 ref 103 code 000106 automatic fixed bin(35,0) dcl 30 set ref 99* 100 140* 141 convert_status_code_ 000016 constant entry external dcl 58 ref 144 cu_$arg_count 000010 constant entry external dcl 55 ref 97 138 cu_$arg_list_ptr 000012 constant entry external dcl 56 ref 95 148 cu_$arg_ptr 000014 constant entry external dcl 57 ref 99 140 error_message 000311 automatic char(100) dcl 34 set ref 144* 161 161* fixed_bin_35_based based fixed bin(35,0) dcl 42 set ref 144* io_error 000346 stack reference condition dcl 70 ref 100 141 ioa_ 000020 constant entry external dcl 59 ref 108 120 161 ioa_$general_rs 000022 constant entry external dcl 60 ref 149 ioa_$general_rs_control_string 000024 constant entry external dcl 61 ref 111 ioa_$nnl 000026 constant entry external dcl 63 ref 105 118 length based fixed bin(9,0) level 2 packed unsigned unaligned dcl 48 ref 105 105 108 108 111 111 message based structure level 1 dcl 48 message_locator based structure level 1 dcl 44 message_locator_ptr 000342 automatic pointer dcl 36 set ref 99* 103 103 message_ptr 000344 automatic pointer dcl 37 set ref 103* 105 108 111 nnl_switch 000107 automatic bit(1) dcl 31 set ref 85* 93* 105 118 offset 0(18) based bit(18) level 2 packed unaligned dcl 44 ref 103 output_message 000110 automatic char(512) unaligned dcl 32 set ref 111* 118 118 120 120 149* 153* 161 161 output_message_len 000310 automatic fixed bin(21,0) dcl 33 set ref 111* 116 149* 154* 159 ptr builtin function dcl 68 ref 103 segno based bit(18) level 2 packed unaligned dcl 44 ref 103 string 0(09) based char level 2 packed unaligned dcl 48 set ref 105* 108* 111* NAMES DECLARED BY EXPLICIT CONTEXT. PRINT_JOIN 000051 constant label dcl 95 ref 86 ls_message_ 000023 constant entry external dcl 18 print 000032 constant entry external dcl 72 print_error 000325 constant entry external dcl 127 print_nnl 000042 constant entry external dcl 88 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 670 720 535 700 Length 1106 535 30 152 132 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ls_message_ 336 external procedure is an external procedure. begin block on line 114 begin block shares stack frame of external procedure ls_message_. begin block on line 157 begin block shares stack frame of external procedure ls_message_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ls_message_ 000100 arg_list_ptr ls_message_ 000102 arg_count ls_message_ 000103 argl ls_message_ 000104 argp ls_message_ 000106 code ls_message_ 000107 nnl_switch ls_message_ 000110 output_message ls_message_ 000310 output_message_len ls_message_ 000311 error_message ls_message_ 000342 message_locator_ptr ls_message_ 000344 message_ptr ls_message_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_out_desc call_ext_out return_mac signal_op ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_status_code_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr ioa_ ioa_$general_rs ioa_$general_rs_control_string ioa_$nnl NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000022 72 000030 85 000037 86 000040 88 000041 93 000047 95 000051 97 000060 99 000072 100 000111 103 000116 105 000127 108 000156 111 000177 116 000253 118 000255 120 000257 118 000262 120 000304 125 000323 127 000324 138 000332 140 000344 141 000363 144 000370 146 000405 148 000410 149 000417 150 000465 153 000466 154 000471 159 000472 161 000474 165 000534 ----------------------------------------------------------- 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