COMPILATION LISTING OF SEGMENT reprint_error Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/04/82 1802.9 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 reprint_error: 12 re: 13 procedure; 14 15 /* This procedure looks back in the stack for frames belonging to default_error_handler_ 16* and calls default_error_handler_ with the argument list it has then. It would 17* normally be used if one wanted his messages in a diferent mode (long instead of brief, etc.) */ 18 19 /* initially coded by M. Weaver 13 July 1971 */ 20 /* modified by M. Weaver 17 August 1971 */ 21 /* modified by M. Weaver 28 January 1974 for change to condition frames */ 22 /* Modified 761026 by PG to convert to iox_ */ 23 /* modified 14 November 1979 by M. Weaver to make -depth work again */ 24 25 /* conditions */ 26 27 dcl cleanup condition; 28 29 /* based */ 30 31 dcl arg char (alng) based (aptr); 32 /* so we can refer to our arguments */ 33 dcl message char (mlng) based (mptr); 34 /* to refer to message from condition_interpreter_ */ 35 dcl sys_area area (1000) based (areap); 36 /* to use in free statement */ 37 38 /* automatic */ 39 40 dcl (lngsw, depth, nd, i) 41 fixed bin; 42 dcl code fixed bin (35); 43 dcl (alng, mlng) fixed bin (21); 44 dcl argdh (100) fixed bin aligned; 45 /* holds values */ 46 dcl (allsw, depsw) bit (1) aligned init ("0"b); 47 dcl (aptr, areap) ptr; 48 dcl mptr ptr init (null); 49 dcl verb char (3) aligned; 50 dcl suf char (1) aligned; /* to distinguish singular error message */ 51 52 /* entries */ 53 54 dcl com_err_ entry options (variable); 55 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 56 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 57 dcl default_error_handler_$reprint_error_message_ 58 entry (ptr, ptr, fixed bin (21), fixed bin, fixed bin, fixed bin (35)); 59 dcl get_system_free_area_ entry (ptr); 60 dcl ioa_$nnl entry options (variable); 61 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 62 63 /* external static */ 64 65 dcl ( 66 iox_$user_output ptr, 67 error_table_$badopt fixed bin (35) 68 ) external static; 69 70 /* internal static */ 71 72 dcl me char (13) internal static init ("reprint_error") options (constant); 73 74 /* builtin */ 75 76 dcl (null, substr) builtin; 77 78 /* program */ 79 80 lngsw = 1; /* normal length message */ 81 depth = 1; /* default is most recent frame */ 82 nd = 1; 83 argdh (1) = 1; 84 i = 0; 85 86 read: 87 i = i + 1; 88 call cu_$arg_ptr (i, aptr, alng, code); 89 if code ^= 0 90 then go to process; /* have finished reading in args */ 91 if substr (arg, 1, 1) = "-" 92 then do; /* possible option */ 93 if arg = "-brief" | arg = "-bf" 94 then lngsw = 2; /* want brief message */ 95 else if arg = "-long" | arg = "-lg" 96 then lngsw = 3; 97 else if arg = "-all" | arg = "-a" 98 then allsw = "1"b; /* look at all deh frames */ 99 else if arg = "-depth" | arg = "-dh" 100 then do; /* process (one) depth count */ 101 if depsw 102 then do; /* don't allow more than 1 */ 103 call com_err_ (0, me, "Only one depth may be specified at a time."); 104 return; 105 end; 106 depsw = "1"b; /* indicate that we have found depth option */ 107 i = i + 1; /* get next arg specially */ 108 call cu_$arg_ptr (i, aptr, alng, code); 109 /* get depth number */ 110 if code ^= 0 111 then do; 112 call com_err_ (code, me, "Missing depth number."); 113 return; 114 end; 115 argdh (1) = cv_dec_check_ (arg, code); 116 /* convert arg to numerical depth */ 117 if code ^= 0 118 then do; 119 call com_err_ (0, me, "Non-decimal digit in position ^d of ""^a"".", code, arg); 120 return; 121 end; 122 end; 123 else do; 124 err: 125 call com_err_ (error_table_$badopt, me, "^a", arg); 126 return; 127 end; 128 go to read; /* get next argument */ 129 end; 130 else go to err; /* don't recognize numbers by themselves */ 131 132 process: 133 if allsw 134 then do; /* want all depths; fill array as if they had been typed */ 135 nd = 100; /* current maximum */ 136 do i = 1 to 100; 137 argdh (i) = i; 138 end; 139 end; 140 141 call get_system_free_area_ (areap); /* get area for message */ 142 on condition (cleanup) 143 begin; 144 if mptr ^= null 145 then free message in (sys_area); /* always clean up area */ 146 end; 147 do i = 1 to nd; 148 149 /* if depths are not given in monotonically increasing order, and not all of them 150* exist, some messages may not get printed */ 151 152 call default_error_handler_$reprint_error_message_ (areap, mptr, mlng, lngsw, argdh (i), code); 153 if code = 0 154 then do; /* default_error_handler_ has no active frames */ 155 call com_err_ (0, me, "There are no active condition frames."); 156 return; 157 end; 158 else if code < argdh (i) 159 then do; 160 if code = -1 161 then go to end_loop; /* couldn't get info for this depth */ 162 if ^allsw 163 then do; 164 if code = 1 165 then do; 166 verb = "is"; 167 suf = " "; 168 end; 169 else do; 170 verb = "are"; 171 suf = "s"; 172 end; 173 call com_err_ (0, me, "There ^a only ^d condition frame^a.", verb, code, suf); 174 end; 175 return; 176 end; 177 call ioa_$nnl ("^/depth ^d:^/", argdh (i)); /* print out depth number */ 178 call iox_$put_chars (iox_$user_output, mptr, mlng, code); 179 free message in (sys_area); /* clear to make room for the next */ 180 mptr = null; /* so wont try to free before it gets reset */ 181 end_loop: 182 end; 183 184 return; 185 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/82 1625.1 reprint_error.pl1 >dumps>old>recomp>reprint_error.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. allsw 000261 automatic bit(1) initial dcl 46 set ref 46* 97* 132 162 alng 000113 automatic fixed bin(21,0) dcl 43 set ref 88* 91 93 93 95 95 97 97 99 99 108* 115 115 119 119 124 124 aptr 000264 automatic pointer dcl 47 set ref 88* 91 93 93 95 95 97 97 99 99 108* 115 119 124 areap 000266 automatic pointer dcl 47 set ref 141* 144 152* 179 arg based char unaligned dcl 31 set ref 91 93 93 95 95 97 97 99 99 115* 119* 124* argdh 000115 automatic fixed bin(17,0) array dcl 44 set ref 83* 115* 137* 152* 158 177* cleanup 000100 stack reference condition dcl 27 ref 142 code 000112 automatic fixed bin(35,0) dcl 42 set ref 88* 89 108* 110 112* 115* 117 119* 152* 153 158 160 164 173* 178* com_err_ 000010 constant entry external dcl 54 ref 103 112 119 124 155 173 cu_$arg_ptr 000012 constant entry external dcl 55 ref 88 108 cv_dec_check_ 000014 constant entry external dcl 56 ref 115 default_error_handler_$reprint_error_message_ 000016 constant entry external dcl 57 ref 152 depsw 000262 automatic bit(1) initial dcl 46 set ref 46* 101 106* depth 000107 automatic fixed bin(17,0) dcl 40 set ref 81* error_table_$badopt 000030 external static fixed bin(35,0) dcl 65 set ref 124* get_system_free_area_ 000020 constant entry external dcl 59 ref 141 i 000111 automatic fixed bin(17,0) dcl 40 set ref 84* 86* 86 88* 107* 107 108* 136* 137 137* 147* 152 158 177* ioa_$nnl 000022 constant entry external dcl 60 ref 177 iox_$put_chars 000024 constant entry external dcl 61 ref 178 iox_$user_output 000026 external static pointer dcl 65 set ref 178* lngsw 000106 automatic fixed bin(17,0) dcl 40 set ref 80* 93* 95* 152* me 000000 constant char(13) initial unaligned dcl 72 set ref 103* 112* 119* 124* 155* 173* message based char unaligned dcl 33 ref 144 179 mlng 000114 automatic fixed bin(21,0) dcl 43 set ref 144 144 152* 178* 179 179 mptr 000270 automatic pointer initial dcl 48 set ref 48* 144 144 152* 178* 179 180* nd 000110 automatic fixed bin(17,0) dcl 40 set ref 82* 135* 147 null builtin function dcl 76 ref 48 144 180 substr builtin function dcl 76 ref 91 suf 000273 automatic char(1) dcl 50 set ref 167* 171* 173* sys_area based area(1000) dcl 35 ref 144 179 verb 000272 automatic char(3) dcl 49 set ref 166* 170* 173* NAMES DECLARED BY EXPLICIT CONTEXT. end_loop 000771 constant label dcl 181 ref 160 err 000452 constant label dcl 124 ref 91 process 000506 constant label dcl 132 ref 89 re 000135 constant entry external dcl 11 read 000161 constant label dcl 86 ref 128 reprint_error 000145 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1146 1200 777 1156 Length 1366 777 32 151 147 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME re 276 external procedure is an external procedure. on unit on line 142 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME re 000106 lngsw re 000107 depth re 000110 nd re 000111 i re 000112 code re 000113 alng re 000114 mlng re 000115 argdh re 000261 allsw re 000262 depsw re 000264 aptr re 000266 areap re 000270 mptr re 000272 verb re 000273 suf re THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry int_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr cv_dec_check_ default_error_handler_$reprint_error_message_ get_system_free_area_ ioa_$nnl iox_$put_chars THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 46 000126 48 000130 11 000134 80 000153 81 000155 82 000156 83 000157 84 000160 86 000161 88 000162 89 000177 91 000201 93 000206 95 000222 97 000235 99 000250 101 000260 103 000262 104 000307 106 000310 107 000312 108 000313 110 000330 112 000332 113 000361 115 000362 117 000406 119 000410 120 000450 122 000451 124 000452 126 000504 128 000505 132 000506 135 000510 136 000512 137 000517 138 000520 141 000522 142 000531 144 000545 146 000557 147 000560 152 000567 153 000610 155 000612 156 000637 158 000640 160 000643 162 000645 164 000647 166 000651 167 000653 168 000655 170 000656 171 000660 173 000662 175 000723 177 000724 178 000745 179 000762 180 000767 181 000771 184 000773 ----------------------------------------------------------- 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