COMPILATION LISTING OF SEGMENT upd_task_err_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1724.9 mst Mon 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 upd_task_err_: procedure (code, sev, argp); 12 13 14 /* 15* 16* This procedure is used within the Multics Online Updater to signal 17* task errors. Calling sequence is as follows: 18* 19* call upd_task_err_(code, sev, argp, name, string, args); 20* 21* (1) code fixed bin(35) status code 22* (2) sev fixed bin severity code 23* (3) argp ptr pointer to caller's arglist 24* (4) name char(*) caller's entryname, e.g. a$b 25* (5) string char(*) (optional) format string 26* (6) args (optional) format args 27* 28* upd_task_err_ performs the following functions: 29* 30* (1) Updates the caller's status code, if the current error 31* is of higher severity, and does the same for all parent 32* tasks (updater task arg 3 is parent arglist pointer) 33* 34* (3) signals the condition "task_error_" and passes an updater 35* status block via the info_ptr. 36* 37**/ 38 39 /* */ 40 41 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 42 43 44 dcl code fixed bin(35), /* status code */ 45 sev fixed bin, /* severity code */ 46 argp ptr, /* caller arglist pointer */ 47 name char(nl) based (np),/* entry point name of caller */ 48 line char(ll) based (lp);/* format string */ 49 50 dcl cu_$arg_count entry (fixed bin), 51 cu_$arg_list_ptr entry returns (ptr), 52 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin(35)), 53 decode_entryname_ entry (char(*), char(32), char(32)), 54 ioa_$general_rs entry (ptr, fixed bin, fixed bin, char(*) aligned, fixed bin(35), 55 bit(1) aligned, bit(1) aligned), 56 signal_ entry (char(*), ptr, ptr, ptr), 57 upd_print_err_ entry options (variable); 58 59 dcl (addr, length, null) builtin; 60 61 dcl based_p ptr based, /* based pointer */ 62 cdp ptr, /* baseptr for "cd" */ 63 lp ptr, /* arg ptr for "line" */ 64 np ptr, /* arg ptr for "name" */ 65 p ptr, /* random */ 66 svp ptr; /* baseptr for "sv" */ 67 68 dcl cd fixed bin(35) based (cdp), /* task procedure status code arg */ 69 ignore fixed bin(35), /* status code */ 70 ll fixed bin, /* arg length for "line" */ 71 n fixed bin, /* arg count */ 72 nl fixed bin, /* arg length for "name" */ 73 sv fixed bin based (svp); /* task procedure severity code arg */ 74 75 dcl 1 arglist aligned based (argp), /* argument list */ 76 2 hdr bit(72), /* arg count, etc. */ 77 2 p (5) ptr; /* arg pointer array */ 78 79 dcl 1 ts aligned, /* internal status block */ 80 2 proc char(32) unal, 81 2 entry char(32) unal, 82 2 code fixed bin(35), 83 2 sev fixed bin, 84 2 string char(200); 85 86 /* */ 87 88 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 89 90 91 p = argp; /* copy pointer to current task arglist */ 92 do while (p ^= null); /* update his status code */ 93 cdp = p -> arglist.p(4); /* status code is updater task arg 4 */ 94 svp = p -> arglist.p(5); /* severity code is arg 5 */ 95 if sev > sv then do; /* if current error is higher severity, */ 96 cd = code; /* update his status code */ 97 sv = sev; /* and severity code */ 98 end; 99 else /* somebody else got there first; we are done */ 100 go to skip; /* exit from loop */ 101 p = p -> arglist.p(3) -> based_p; /* not done, get parent arglist pointer (arg 3) */ 102 end; 103 skip: call cu_$arg_ptr (4, np, nl, ignore); /* locate 4th arg (entryname) */ 104 call decode_entryname_(name, ts.proc, ts.entry); /* break up into refname and entryname */ 105 ts.code = code; /* copy status code */ 106 ts.sev = sev; /* and severity code */ 107 call cu_$arg_count (n); /* get our own arg count */ 108 if n > 5 then /* did caller specify formatted message? */ 109 call ioa_$general_rs (cu_$arg_list_ptr(), 5, 6, ts.string, ignore, "1"b, "1"b); 110 /* yes, format it. */ 111 else if n > 4 then do; /* no, but he did provide the string */ 112 call cu_$arg_ptr (5, lp, ll, ignore); /* get pointer and length */ 113 ts.string = line; /* copy it without call to formline_ */ 114 end; 115 else /* no, he didn't supply anything like that */ 116 ts.string = ""; /* blank out message */ 117 p = addr (ts); /* get pointer to temp status block */ 118 call signal_("task_error_", null, p, null); /* signal error */ 119 120 121 end upd_task_err_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1515.1 upd_task_err_.pl1 >dumps>old>recomp>upd_task_err_.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. addr builtin function dcl 59 ref 117 arglist based structure level 1 dcl 75 argp parameter pointer dcl 44 ref 11 91 based_p based pointer dcl 61 ref 101 cd based fixed bin(35,0) dcl 68 set ref 96* cdp 000100 automatic pointer dcl 61 set ref 93* 96 code parameter fixed bin(35,0) dcl 44 in procedure "upd_task_err_" ref 11 96 105 code 20 000116 automatic fixed bin(35,0) level 2 in structure "ts" dcl 79 in procedure "upd_task_err_" set ref 105* cu_$arg_count 000010 constant entry external dcl 50 ref 107 cu_$arg_list_ptr 000012 constant entry external dcl 50 ref 108 108 cu_$arg_ptr 000014 constant entry external dcl 50 ref 103 112 decode_entryname_ 000016 constant entry external dcl 50 ref 104 entry 10 000116 automatic char(32) level 2 packed unaligned dcl 79 set ref 104* ignore 000112 automatic fixed bin(35,0) dcl 68 set ref 103* 108* 112* ioa_$general_rs 000020 constant entry external dcl 50 ref 108 line based char unaligned dcl 44 ref 113 ll 000113 automatic fixed bin(17,0) dcl 68 set ref 112* 113 lp 000102 automatic pointer dcl 61 set ref 112* 113 n 000114 automatic fixed bin(17,0) dcl 68 set ref 107* 108 111 name based char unaligned dcl 44 set ref 104* nl 000115 automatic fixed bin(17,0) dcl 68 set ref 103* 104 104 np 000104 automatic pointer dcl 61 set ref 103* 104 null builtin function dcl 59 ref 92 118 118 118 118 p 000106 automatic pointer dcl 61 in procedure "upd_task_err_" set ref 91* 92 93 94 101* 101 117* 118* p 2 based pointer array level 2 in structure "arglist" dcl 75 in procedure "upd_task_err_" ref 93 94 101 proc 000116 automatic char(32) level 2 packed unaligned dcl 79 set ref 104* sev 21 000116 automatic fixed bin(17,0) level 2 in structure "ts" dcl 79 in procedure "upd_task_err_" set ref 106* sev parameter fixed bin(17,0) dcl 44 in procedure "upd_task_err_" ref 11 95 97 106 signal_ 000022 constant entry external dcl 50 ref 118 string 22 000116 automatic char(200) level 2 dcl 79 set ref 108* 113* 115* sv based fixed bin(17,0) dcl 68 set ref 95 97* svp 000110 automatic pointer dcl 61 set ref 94* 95 97 ts 000116 automatic structure level 1 dcl 79 set ref 117 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. length builtin function dcl 59 upd_print_err_ 000000 constant entry external dcl 50 NAMES DECLARED BY EXPLICIT CONTEXT. skip 000061 constant label dcl 103 ref 95 upd_task_err_ 000021 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 404 430 307 414 Length 604 307 24 137 75 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME upd_task_err_ 208 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME upd_task_err_ 000100 cdp upd_task_err_ 000102 lp upd_task_err_ 000104 np upd_task_err_ 000106 p upd_task_err_ 000110 svp upd_task_err_ 000112 ignore upd_task_err_ 000113 ll upd_task_err_ 000114 n upd_task_err_ 000115 nl upd_task_err_ 000116 ts upd_task_err_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr decode_entryname_ ioa_$general_rs signal_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000015 91 000026 92 000032 93 000036 94 000041 95 000044 96 000050 97 000052 101 000054 102 000060 103 000061 104 000100 105 000123 106 000126 107 000130 108 000137 111 000220 112 000222 113 000241 114 000246 115 000247 117 000252 118 000254 121 000306 ----------------------------------------------------------- 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