COMPILATION LISTING OF SEGMENT compile_messages Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 12/01/87 1558.8 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 16 /****^ HISTORY COMMENTS: 17* 1) change(87-06-01,Huen), approve(87-06-01,MCR7696), audit(87-06-17,RWaters), 18* install(87-12-01,MR12.2-1005): 19* Fix bug 2173: If incorrect number of argument is supplied when invoking 20* "compile_messages", a usage message is printed. 21* END HISTORY COMMENTS */ 22 23 24 compile_messages: proc; 25 26 /* Modified: 29 Apr 1987 by SH to fix bug 2173 - A usage message should 27* be printed when invoking this procedure with 28* incorrect number of argument. 29**/ 30 31 /* Apr29,1987. This procedure is rewritten so that it accepts any valid 32*pathname (such as the pathname of the source segment or archive segment). 33*In addition, the ".message" suffix is added by default if the user does 34*not supply it. */ 35 36 /* This procedure accepts a pathname of a "source" segment as an argument. 37*The source segment which is suffixed by ".message" containing messages 38*to be reformatted is initialised. An object segment with the name 39*object_name is created in the user's working directory and the reformatted 40*messages are placed into it. */ 41 42 dcl my_name char(16) int static options(constant) init("compile_messages"); 43 dcl arg char(arg_len) based(arg_ptr); 44 dcl arg_count fixed bin; 45 dcl arg_len fixed bin(21); 46 dcl arg_ptr ptr; 47 dcl code fixed bin(35); 48 dcl dir char(512); 49 dcl (entry, comp) char(33); /* 33 to force trailing blank */ 50 dcl (object_bc, source_bc) fixed bin(24); 51 dcl object_name char(32); 52 dcl (source_ptr, obj_ptr, aclinfo) ptr; 53 dcl w_dir_path char(168); 54 55 dcl (before, null) builtin; 56 dcl cleanup condition; 57 58 dcl build_message_segment external entry (ptr, ptr, fixed bin(24)); 59 dcl com_err_ external entry options(variable); 60 dcl cu_$arg_count entry(fixed bin, fixed bin(35)); 61 dcl cu_$arg_ptr entry(fixed bin, ptr, fixed bin(21), fixed bin(35)); 62 dcl expand_pathname_$component_add_suffix entry(char(*), char(*), char(*), char(*), char(*), fixed bin(35)); 63 dcl get_wdir_ entry() returns(char(168) aligned); 64 dcl initiate_file_$component entry(char(*), char(*), char(*), bit(*), ptr, fixed bin(24), fixed bin(35)); 65 dcl terminate_file_ entry(ptr, fixed bin(24), bit(*), fixed bin(35)); 66 dcl tssi_$clean_up_segment entry(ptr); 67 dcl tssi_$finish_segment entry(ptr, fixed bin(24), bit(36) aligned, ptr, fixed bin(35)); 68 dcl tssi_$get_segment entry(char(*), char(*), ptr, ptr, fixed bin(35)); 69 70 source_ptr, obj_ptr, aclinfo = null(); 71 call cu_$arg_count(arg_count, code); 72 if code ^= 0 then call error(""); 73 if arg_count ^= 1 then call error("^/Usage: compile_messages "); 74 75 call cu_$arg_ptr(1, arg_ptr, arg_len, code); 76 if code ^= 0 then call error(""); 77 78 call expand_pathname_$component_add_suffix(arg, "message", dir, entry, comp, code); 79 if code ^= 0 then call error(arg); 80 81 on cleanup begin; 82 if source_ptr ^= null() then call terminate_file_(source_ptr, 0, "001"b, 0); 83 if aclinfo ^= null() then call tssi_$clean_up_segment(aclinfo); 84 end; 85 86 call initiate_file_$component(dir, entry, comp, "100"b, source_ptr, source_bc, code); 87 if code ^= 0 then call error(arg); 88 89 /* Get pathname for current working directory. */ 90 91 w_dir_path = get_wdir_(); 92 if comp = "" then object_name = before(entry, ".message "); 93 else object_name = before(comp, ".message "); 94 95 /* Create an object segment with name object_name and get a pointer to it. */ 96 97 call tssi_$get_segment(w_dir_path, object_name, obj_ptr, aclinfo, code); 98 if code ^= 0 then call error(object_name); 99 100 /* Reformat messages. */ 101 102 call build_message_segment(source_ptr, obj_ptr, object_bc); 103 104 /* Wrap up by setting bit count and access control information 105* on the new object segment and terminating the source segment. */ 106 107 call tssi_$finish_segment(obj_ptr, object_bc, "1100"b, aclinfo, code); 108 if code ^= 0 then call error(object_name); 109 110 call terminate_file_(source_ptr, 0, "001"b, code); 111 if code ^= 0 then call error(arg); 112 113 114 error: proc(str); 115 dcl str char(*); 116 117 call com_err_(code, my_name, str); 118 goto abort; 119 end error; 120 121 abort: return; 122 end compile_messages; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/01/87 1558.0 compile_messages.pl1 >spec>install>MR12.2-1005>compile_messages.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. aclinfo 000346 automatic pointer dcl 52 set ref 70* 83 83* 97* 107* arg based char unaligned dcl 43 set ref 78* 79* 87* 111* arg_count 000100 automatic fixed bin(17,0) dcl 44 set ref 71* 73 arg_len 000101 automatic fixed bin(21,0) dcl 45 set ref 75* 78 78 79 79 87 87 111 111 arg_ptr 000102 automatic pointer dcl 46 set ref 75* 78 79 87 111 before builtin function dcl 55 ref 92 93 build_message_segment 000010 constant entry external dcl 58 ref 102 cleanup 000422 stack reference condition dcl 56 ref 81 code 000104 automatic fixed bin(35,0) dcl 47 set ref 71* 72 75* 76 78* 79 86* 87 97* 98 107* 108 110* 111 117* com_err_ 000012 constant entry external dcl 59 ref 117 comp 000316 automatic char(33) unaligned dcl 49 set ref 78* 86* 92 93 cu_$arg_count 000014 constant entry external dcl 60 ref 71 cu_$arg_ptr 000016 constant entry external dcl 61 ref 75 dir 000105 automatic char(512) unaligned dcl 48 set ref 78* 86* entry 000305 automatic char(33) unaligned dcl 49 set ref 78* 86* 92 expand_pathname_$component_add_suffix 000020 constant entry external dcl 62 ref 78 get_wdir_ 000022 constant entry external dcl 63 ref 91 initiate_file_$component 000024 constant entry external dcl 64 ref 86 my_name 000000 constant char(16) initial unaligned dcl 42 set ref 117* null builtin function dcl 55 ref 70 82 83 obj_ptr 000344 automatic pointer dcl 52 set ref 70* 97* 102* 107* object_bc 000327 automatic fixed bin(24,0) dcl 50 set ref 102* 107* object_name 000331 automatic char(32) unaligned dcl 51 set ref 92* 93* 97* 98* 108* source_bc 000330 automatic fixed bin(24,0) dcl 50 set ref 86* source_ptr 000342 automatic pointer dcl 52 set ref 70* 82 82* 86* 102* 110* str parameter char unaligned dcl 115 set ref 114 117* terminate_file_ 000026 constant entry external dcl 65 ref 82 110 tssi_$clean_up_segment 000030 constant entry external dcl 66 ref 83 tssi_$finish_segment 000032 constant entry external dcl 67 ref 107 tssi_$get_segment 000034 constant entry external dcl 68 ref 97 w_dir_path 000350 automatic char(168) unaligned dcl 53 set ref 91* 97* NAMES DECLARED BY EXPLICIT CONTEXT. abort 000561 constant label dcl 121 ref 118 compile_messages 000047 constant entry external dcl 24 error 000562 constant entry internal dcl 114 ref 72 73 76 79 87 98 108 111 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1034 1072 650 1044 Length 1262 650 36 154 163 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME compile_messages 430 external procedure is an external procedure. on unit on line 81 86 on unit error internal procedure shares stack frame of external procedure compile_messages. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME compile_messages 000100 arg_count compile_messages 000101 arg_len compile_messages 000102 arg_ptr compile_messages 000104 code compile_messages 000105 dir compile_messages 000305 entry compile_messages 000316 comp compile_messages 000327 object_bc compile_messages 000330 source_bc compile_messages 000331 object_name compile_messages 000342 source_ptr compile_messages 000344 obj_ptr compile_messages 000346 aclinfo compile_messages 000350 w_dir_path compile_messages THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac enable_op ext_entry int_entry set_chars_eis index_before_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. build_message_segment com_err_ cu_$arg_count cu_$arg_ptr expand_pathname_$component_add_suffix get_wdir_ initiate_file_$component terminate_file_ tssi_$clean_up_segment tssi_$finish_segment tssi_$get_segment NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000046 70 000054 71 000060 72 000070 73 000075 75 000106 76 000125 78 000132 79 000173 81 000210 82 000224 83 000261 84 000275 86 000276 87 000340 91 000355 92 000367 93 000405 97 000416 98 000446 102 000453 107 000466 108 000507 110 000514 111 000544 121 000561 114 000562 117 000573 118 000616 ----------------------------------------------------------- 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