COMPILATION LISTING OF SEGMENT lib_error_list_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 02/15/84 0857.3 mst Wed Options: optimize map 1 /* *************************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1975 by Massachusetts Institute of Technology * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *************************************************************** */ 11 12 13 14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 /* */ 16 /* Name: lib_error_list_ */ 17 /* */ 18 /* This procedure prints information for error messages and other output from the */ 19 /* arrays used by the library descriptor tools interfaces. */ 20 /* */ 21 /* Status */ 22 /* 0) Created: Aug, 1971 by G. C. Dixon */ 23 /* 1) Modified: Dec, 1980 by G. C. Dixon - add $return_string entry point. */ 24 /* */ 25 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 26 27 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 29 30 lib_error_list_: 31 procedure (label, Pstarname, proc); /* Procedure to output an array of names in an */ 32 /* error message. */ 33 34 dcl /* parameters */ 35 label char(32) varying; /* label for name array. */ 36 /* START OF: lib_based_args_.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* N__a_m_e: lib_based_args_.incl.pl1 */ 1 6 /* */ 1 7 /* This include segment defines structures for the arrays of library names and search*/ 1 8 /* names used by library descriptor commands. This segment, lib_Svalid_req_.incl.pl1, */ 1 9 /* and lib_Scontrol_.incl.pl1 define the complete set of structures required as input */ 1 10 /* to the lib_descriptor_ subroutine. */ 1 11 /* */ 1 12 /* S__t_a_t_u_s */ 1 13 /* */ 1 14 /* 0) Created on: March 1, 1975 by A. J. Scherer */ 1 15 /* 1) Modified on: April 8, 1975 by G. C. Dixon */ 1 16 /* 2) Modified on: May 13, 1976 by G. C. Dixon */ 1 17 /* 3) Modified on: November 2, 1983 by Jim Lippard to align structures */ 1 18 /* */ 1 19 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 20 1 21 1 22 dcl 1 library aligned based (Plibrary), 1 23 /* a structure containing names of libraries to */ 1 24 /* be searched. */ 1 25 2 N fixed bin, /* attribute: number of library names in array. */ 1 26 2 group (0 refer (library.N)), /* attribute: array of library names */ 1 27 3 V char(32) unal, /* attribute: a library name (value). */ 1 28 3 C fixed bin(35); /* attribute: code from check_star_name_ for */ 1 29 dcl Plibrary ptr; /* ptr to: library structure. */ 1 30 /* this library name. */ 1 31 1 32 dcl 1 starname aligned based (Pstarname), 1 33 /* a structure containing names of library entries*/ 1 34 /* being searched for. */ 1 35 2 N fixed bin, /* attribute: number of starnames in array. */ 1 36 2 group (0 refer (starname.N)), /* attribute: array of starnames */ 1 37 3 V char(32) unal, /* attribute: a starname (value). */ 1 38 3 C fixed bin(35); /* attribute: code from check_star_name_ for */ 1 39 /* this starname. */ 1 40 dcl Pstarname ptr; /* ptr to: starname structure. */ 1 41 1 42 dcl 1 exclude aligned based (Pexclude), 1 43 /* a structure containing names of library entries*/ 1 44 /* being excluded from the search. */ 1 45 2 N fixed bin, /* attribute: number of excludes in array. */ 1 46 2 group (0 refer (exclude.N)), /* attribute: array of excludes */ 1 47 3 V char(32) unal, /* attribute: an exclude (value). */ 1 48 3 C fixed bin(35); /* attribute: code from check_star_name_ for */ 1 49 /* this exclude. */ 1 50 dcl Pexclude ptr; /* ptr to: exclude structure. */ 1 51 1 52 /* END OF: lib_based_args_.incl.pl1 * * * * * * * * * * * * * * * * */ 36 37 38 dcl proc char(32) varying, /* Name of caller to be used in error message. */ 39 APiocb ptr; /* ptr to iocb of switch array to be output on. */ 40 41 dcl /* automatic variables */ 42 (Lfield (3), Lprefix) fixed bin, /* length of output fields. */ 43 Piocb ptr, /* ptr: to output switch. */ 44 Sreturn_string bit(1), /* switch: on if entered at $return_string */ 45 field (3) char(32), /* output fields. */ 46 (i, j, k) fixed bin, /* do group indices. */ 47 return_string char(10000) var; /* temp string to hold results during calc. */ 48 49 dcl (length, min, reverse, verify) builtin; 50 51 dcl ioa_$rsnpnnl entry options(variable), 52 ioa_$ioa_switch entry options (variable); 53 54 dcl (FALSE init("0"b), 55 TRUE init("1"b)) bit(1) int static options(constant), 56 iox_$error_output ptr ext static; 57 58 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 59 60 61 Sreturn_string = FALSE; /* Entry to output results to error_output */ 62 Piocb = iox_$error_output; 63 go to COMMON; 64 65 66 lib_array_list_: 67 entry (label, Pstarname, APiocb); /* Entry to output results on user_output. */ 68 69 Sreturn_string = FALSE; 70 Piocb = APiocb; 71 go to COMMON; 72 73 74 return_string: /* Entry to return formatted results as a string. */ 75 entry (label, Pstarname) returns (char(*) varying); 76 77 Sreturn_string = TRUE; 78 return_string = ""; 79 80 81 COMMON: Lprefix = 2; /* indent heading line by 2 chars. */ 82 if starname.N > 1 then field(1) = label || "s:"; 83 else field(1) = label || ":"; /* 1st field is label (singular or plural). */ 84 Lfield(1) = 23; 85 i = 1; /* indicate first field has been used. */ 86 87 j = 1; /* begin outputing with 1st name. */ 88 do while (j <= starname.N); 89 if i = 3 then do; /* if all fields full, output the line. */ 90 if Sreturn_string then 91 call ioa_$rsnpnnl ("^a^[^/^]^vx^va^va^va", return_string, 0, return_string, 92 length(return_string)>0, Lprefix, Lfield(1), field(1), 93 Lfield(2), field(2), Lfield(3), field(3)); 94 else call ioa_$ioa_switch (Piocb, "^vx^va^va^va", Lprefix, Lfield(1), field(1), 95 Lfield(2), field(2), Lfield(3), field(3)); 96 i = 0; /* no fields used. */ 97 Lprefix = 5; /* indent all succeeding lines by 5 chars. */ 98 end; 99 100 i = i + 1; /* process next field. */ 101 Lfield(i) = min (32, 33 - verify (reverse (starname.V(j)), " ")); 102 if Lfield(i) <= 18 then do; /* if name <= 18 chars; it will fit in 1 field. */ 103 Lfield(i) = 20; 104 field(i) = starname.V(j); 105 end; 106 else if i < 3 then do; /* name > 18 chars; it will fit in 2 fields. */ 107 if i = 1 then do; /* put name in 2nd field of line, if next */ 108 /* name won't fit in first field. */ 109 if j < starname.N then do; 110 k = min (32, 33 - verify (reverse (starname.V(j+1)), " ")); 111 if k <= 18 then do; 112 Lfield(i) = 20; 113 field (i) = starname.V(j+1); 114 i = i + 1; 115 Lfield(i) = 40; 116 field (i) = starname.V(j); 117 i = i + 1; 118 Lfield(i) = 0; 119 field (i) = ""; 120 j = j + 1; 121 go to NEXT_NAME; 122 end; 123 end; 124 Lfield(i) = 20; 125 field (i) = ""; 126 i = i + 1; 127 end; 128 Lfield(i) = 40; 129 field(i) = starname.V(j); 130 i = i + 1; /* 2d of the 2 fields needs no further processing.*/ 131 Lfield(i) = 0; 132 field(i) = ""; 133 end; 134 else do; /* name > 18 chars and only 1 field left. */ 135 Lfield(i) = 0; /* make it a blank field. */ 136 field(i) = ""; 137 j = j - 1; /* process this name again on the next line. */ 138 end; 139 NEXT_NAME: j = j + 1; /* process the next name. */ 140 end; 141 do i = i+1 to 3; /* null out any unused fields on last line. */ 142 Lfield(i) = 0; 143 field(i) = ""; 144 end; 145 146 if Sreturn_string then do; 147 call ioa_$rsnpnnl ("^a^[^/^]^vx^va^va^va", return_string, 0, return_string, 148 length(return_string)>0, Lprefix, Lfield(1), field(1), 149 Lfield(2), field(2), Lfield(3), field(3)); 150 return (return_string); 151 end; 152 else call ioa_$ioa_switch (Piocb, "^vx^va^va^va", Lprefix, Lfield(1), field(1), 153 Lfield(2), field(2), Lfield(3), field(3)); /* output the last line. */ 154 155 end lib_error_list_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/15/84 0819.0 lib_error_list_.pl1 >special_ldd>on>6588>lib_error_list_.pl1 36 1 02/15/84 0754.6 lib_based_args_.incl.pl1 >special_ldd>on>6588>lib_based_args_.incl.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. APiocb parameter pointer dcl 38 ref 66 70 FALSE constant bit(1) initial unaligned dcl 54 ref 61 69 Lfield 000100 automatic fixed bin(17,0) array dcl 41 set ref 84* 90* 90* 90* 94* 94* 94* 101* 102 103* 112* 115* 118* 124* 128* 131* 135* 142* 147* 147* 147* 152* 152* 152* Lprefix 000103 automatic fixed bin(17,0) dcl 41 set ref 81* 90* 94* 97* 147* 152* N based fixed bin(17,0) level 2 dcl 1-32 ref 82 88 109 Piocb 000104 automatic pointer dcl 41 set ref 62* 70* 94* 152* Pstarname parameter pointer dcl 1-40 ref 30 66 74 82 88 101 104 109 110 113 116 129 Sreturn_string 000106 automatic bit(1) unaligned dcl 41 set ref 61* 69* 77* 90 146 TRUE constant bit(1) initial unaligned dcl 54 ref 77 V 1 based char(32) array level 3 packed unaligned dcl 1-32 ref 101 104 110 113 116 129 field 000107 automatic char(32) array unaligned dcl 41 set ref 82* 83* 90* 90* 90* 94* 94* 94* 104* 113* 116* 119* 125* 129* 132* 136* 143* 147* 147* 147* 152* 152* 152* group 1 based structure array level 2 dcl 1-32 i 000137 automatic fixed bin(17,0) dcl 41 set ref 85* 89 96* 100* 100 101 102 103 104 106 107 112 113 114* 114 115 116 117* 117 118 119 124 125 126* 126 128 129 130* 130 131 132 135 136 141* 141* 142 143* ioa_$ioa_switch 000012 constant entry external dcl 51 ref 94 152 ioa_$rsnpnnl 000010 constant entry external dcl 51 ref 90 147 iox_$error_output 000014 external static pointer dcl 54 ref 62 j 000140 automatic fixed bin(17,0) dcl 41 set ref 87* 88 101 104 109 110 113 116 120* 120 129 137* 137 139* 139 k 000141 automatic fixed bin(17,0) dcl 41 set ref 110* 111 label parameter varying char(32) dcl 34 ref 30 66 74 82 83 length builtin function dcl 49 ref 90 147 min builtin function dcl 49 ref 101 110 proc parameter varying char(32) dcl 38 ref 30 return_string 000142 automatic varying char(10000) dcl 41 set ref 78* 90* 90* 90 147* 147* 147 150 reverse builtin function dcl 49 ref 101 110 starname based structure level 1 dcl 1-32 verify builtin function dcl 49 ref 101 110 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Pexclude automatic pointer dcl 1-50 Plibrary automatic pointer dcl 1-29 exclude based structure level 1 dcl 1-42 library based structure level 1 dcl 1-22 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000107 constant label dcl 81 ref 63 71 NEXT_NAME 000550 constant label dcl 139 ref 121 lib_array_list_ 000055 constant entry external dcl 66 lib_error_list_ 000035 constant entry external dcl 30 return_string 000076 constant entry external dcl 74 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1056 1074 764 1066 Length 1270 764 16 160 71 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME lib_error_list_ 2658 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME lib_error_list_ 000100 Lfield lib_error_list_ 000103 Lprefix lib_error_list_ 000104 Piocb lib_error_list_ 000106 Sreturn_string lib_error_list_ 000107 field lib_error_list_ 000137 i lib_error_list_ 000140 j lib_error_list_ 000141 k lib_error_list_ 000142 return_string lib_error_list_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a alloc_cs call_ext_out_desc return signal shorten_stack ext_entry ext_entry_desc return_chars_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$ioa_switch ioa_$rsnpnnl THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. iox_$error_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 30 000031 61 000044 62 000045 63 000050 66 000051 69 000064 70 000065 71 000071 74 000072 77 000104 78 000106 81 000107 82 000111 83 000136 84 000156 85 000161 87 000163 88 000164 89 000171 90 000174 94 000272 96 000344 97 000345 100 000347 101 000350 102 000400 103 000402 104 000404 105 000412 106 000413 107 000416 109 000420 110 000423 111 000445 112 000447 113 000451 114 000457 115 000460 116 000463 117 000471 118 000472 119 000474 120 000502 121 000503 124 000504 125 000506 126 000514 128 000515 129 000520 130 000526 131 000527 132 000531 133 000537 135 000540 136 000541 137 000546 139 000550 140 000551 141 000552 142 000557 143 000560 144 000565 146 000567 147 000571 150 000663 152 000701 155 000753 ----------------------------------------------------------- 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