COMPILATION LISTING OF SEGMENT display_rtdt Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/12/82 1259.0 mst Fri 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 display_rtdt: proc; 12 13 /* This procedure formats and prints the contents of a Resource Type Description Table (RTDT). */ 14 /* Written 03/13/78 by C. D. Tavares */ 15 1 1 /* --------------- BEGIN include file rtdt.incl.pl1 --------------- */ 1 2 1 3 dcl 1 rtdt aligned based (rtdtp), /* resource type description table */ 2 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 2 2 2 3 /* the "author" items must always be the first ones in the table. The 2 4* module which moves the converted table to the System Control process 2 5* fills in these data items and assumes them to be at the head of the segment 2 6* regardless of the specific table's actual declaration. The variables 2 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 2 8* respectively. For tables installed in multiple processes, these 2 9* are to be used to lock out multiple installations. */ 2 10 2 11 /* Lock should be used as a modification lock. Since, in general, 2 12* entries may not be moved in system tables, even by installations, 2 13* it is sufficient for only installers and programs that change threads 2 14* to set or respect the lock. Simply updating data in an entry 2 15* requires no such protection. 2 16* 2 17* Last_install_time is used by readers of system tables to detect 2 18* installations or other serious modifications. By checking it before 2 19* and after copying a block of data, they can be protected against 2 20* modifications. 2 21* 2 22* Modules that set the lock should save proc_group_id, and then 2 23* put their group id there for the time they hold the lock. 2 24* if they do not actually install the, they should restore the group id. 2 25**/ 2 26 2 27 2 author aligned, /* validation data about table's author */ 2 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 2 29 3 lock bit (36), /* installation lock */ 2 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 2 31 3 update_authorization bit (1) unal, /* update only authorizations */ 2 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 2 33 3 pad bit (33) unaligned, 2 34 3 last_install_time fixed bin (71), 2 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 2 36 3 w_dir char (64), /* author's working directory */ 2 37 2 38 /* END INCLUDE FILE author.incl.pl1 */ 1 4 1 5 2 version fixed bin, /* version number */ 1 6 2 installed_under_resource_mgt bit (1) aligned, /* resource mgt. was ON when this was installed */ 1 7 2 charge_type_table_ptr offset, /* points to charge_type_table */ 1 8 2 first_resource offset, /* chain for RTDE's */ 1 9 2 rtdt_area area (RTDT_area_len); /* all following items allocated here */ 1 10 1 11 dcl 1 charge_type_table aligned based (cttp), /* describes charges for resource types */ 1 12 2 n_charge_types fixed bin, /* number of distinct charge types */ 1 13 2 charge_types (N_CHARGE_TYPES refer (charge_type_table.n_charge_types)) aligned char (32), 1 14 2 flagword fixed bin (35) aligned; /* this word simply help us set bitcount properly */ 1 15 1 16 dcl 1 rtde aligned based (rtdep), /* describes one resource type */ 1 17 2 fixed_info aligned, 1 18 3 next_resource offset, /* chains to next type, or nullo */ 1 19 3 name char (32), /* name of resource type, e.g. "tape_drive" */ 1 20 3 syn_to char (32), /* if is_synonym this is master syn */ 1 21 3 precanon_proc char (64), /* name of routine to standardize resource name */ 1 22 3 pad_1 (16) fixed bin (35), 1 23 3 flags unaligned, 1 24 4 (valid, /* resource type hasn't been deleted */ 1 25 is_volume, /* specifies volume or device type */ 1 26 manual_clear, /* volumes of this type to be "degaussed" between owners */ 1 27 addition_pending, /* bookkeeping bit for upd_rtdt_ */ 1 28 deletion_pending, 1 29 is_synonym) bit (1) unaligned, /* ditto */ 1 30 4 pad bit (12) unaligned, 1 31 3 (process_limit, /* how many can you assign at one time */ 1 32 default_time, /* implicit reservations are for how many minutes */ 1 33 max_time, /* how long can you reserve it for */ 1 34 advance_notice_time, /* warn operator to prepare mount ahead of time */ 1 35 pad2, 1 36 n_exclusion_specs, /* number of distinct "name=" fields in attributes */ 1 37 n_mates, /* number of mating devs/vols for this vol/dev */ 1 38 n_subtypes, /* number of registration subtypes */ 1 39 n_defined_attributes) fixed bin (17) unaligned, /* number of defined attributes */ 1 40 3 pad_2 (8) fixed bin (35), 1 41 3 attributes_valid bit (72) aligned, /* "1"b if corresp. attribute undeleted */ 1 42 3 attributes_to_match bit (72) aligned, /* potential mate must possess these attributes */ 1 43 3 attribute_names (72) char (12) aligned, /* all possible attributes for this resource */ 1 44 3 exclusion_specs (36) bit (72) aligned, /* each masks all attrributes of the form "key=val" */ 1 45 3 pad_3 (32) fixed bin (35), 1 46 3 registration_defaults aligned, /* applied at reg. time if none given */ 1 47 4 default_flags aligned, 1 48 5 (potential_attributes_given, /* "1"b = there are default potential_attributes */ 1 49 attributes_given, /* and similarly, etc. */ 1 50 aim_range_given, 1 51 charge_type_given) bit (1) unaligned, 1 52 5 pad bit (31) unaligned, 1 53 4 potential_attributes bit (72) aligned, /* for registration, if given */ 1 54 4 attributes bit (72) aligned, /* for registration and also for runtime "I-don't-care" */ 1 55 4 aim_range (2) bit (72) aligned, /* and similarly, etc. */ 1 56 4 charge_type fixed bin, 1 57 4 pad_4 (8) fixed bin (35) aligned, 1 58 2 mates (N_MATES refer (rtde.n_mates)) char (32) aligned, 1 59 /* the volume type that mounts on this device, or vice versa */ 1 60 2 subtypes (N_SUBTYPES refer (rtde.n_subtypes)) aligned, /* named registration default groups */ 1 61 3 subtype_name char (32), /* name of the group */ 1 62 3 subtype_defaults like rtde.registration_defaults aligned; 1 63 1 64 dcl RTDT_version_3 fixed bin static options (constant) initial (3), 1 65 RTDT_version_2 fixed bin static options (constant) initial (2), 1 66 /* same format, but without precanon_proc */ 1 67 (N_MATES, N_SUBTYPES, N_CHARGE_TYPES) fixed bin, 1 68 RTDT_area_len fixed bin (18); 1 69 1 70 dcl (rtdep, rtdtp, cttp) pointer; 1 71 1 72 /* ---------------- END include file rtdt.incl.pl1 ---------------- */ 16 17 18 dcl sysdir char (168) static initial (">system_control_1"), 19 sysent char (32) static initial ("rtdt") options (constant); 20 21 dcl null builtin; 22 23 dcl cu_$arg_count ext entry (fixed bin), 24 nargs fixed bin; 25 26 dcl cu_$arg_list_ptr ext entry (pointer), 27 alp pointer; 28 29 rtdtp = null (); 30 31 call cu_$arg_list_ptr (alp); 32 33 call cu_$arg_count (nargs); 34 35 begin; 36 37 dcl dirname char (168), 38 ename char (32); 39 40 dcl temp_name char (128) aligned; 41 42 dcl cu_$arg_ptr_rel ext entry (fixed bin, pointer, fixed bin, fixed bin (35), pointer), 43 ap pointer, 44 al fixed bin, 45 arg based (ap) char (al), 46 code fixed bin (35); 47 48 dcl com_err_ ext entry options (variable), 49 expand_pathname_$add_suffix ext entry (char (*), char (*), char (*), char (*), fixed bin (35)); 50 51 dcl hcs_$initiate_count ext entry (char (*), char (*), char (*), fixed bin (24), fixed bin, pointer, fixed bin (35)), 52 bc fixed bin (24); 53 54 dcl i fixed bin, 55 header_sw bit (1) aligned, 56 n_names_to_match fixed bin, 57 date_time_string char (24), 58 attribute_string char (512) varying; 59 60 dcl ioa_ ext entry options (variable), 61 hcs_$terminate_noname ext entry (pointer, fixed bin (35)), 62 date_time_ ext entry (fixed bin (52), char (*)), 63 clock_ ext entry returns (fixed bin (52)); 64 65 dcl (error_table_$unimplemented_version, 66 error_table_$name_not_found, 67 error_table_$badopt) external fixed bin (35) static; 68 69 dcl (index, length, null, pointer, reverse, string, substr) builtin, 70 cleanup condition; 71 72 dcl (convert_authorization_$to_string, 73 convert_authorization_$from_string) ext entry (bit (72) aligned, char (*), fixed bin (35)); 74 75 dcl (SYSTEM_HIGH, SYSTEM_LOW) bit (72) aligned; 76 77 dcl matchnames (nargs) char (32); 78 79 dcl temp_atts (2) bit (72); 80 81 dcl cv_rcp_attributes_$to_string_given_rtde ext entry (pointer, bit (72) dimension (2), char (*) varying, fixed bin (35)); 82 83 call convert_authorization_$from_string (SYSTEM_LOW, "system_low", code); 84 if code ^= 0 then call crump (code, "system_low"); 85 call convert_authorization_$from_string (SYSTEM_HIGH, "system_high", code); 86 if code ^= 0 then call crump (code, "system_high"); 87 88 dirname = sysdir; 89 ename = sysent; 90 n_names_to_match = 0; 91 header_sw = "1"b; 92 93 do i = 1 to nargs; 94 call cu_$arg_ptr_rel (i, ap, al, code, alp); 95 if code ^= 0 then call crump (code, "obtaining arguments"); 96 97 if arg = "-pn" | arg = "-pathname" then do; 98 i = i + 1; 99 call cu_$arg_ptr_rel (i, ap, al, code, alp); 100 if code ^= 0 then call crump (code, "No pathname supplied."); 101 102 call expand_pathname_$add_suffix (arg, "rtdt", dirname, ename, code); 103 if code ^= 0 then call crump (code, arg); 104 end; 105 106 else if arg = "-nhe" | arg = "-no_header" then header_sw = ""b; 107 108 else if substr (arg, 1, 1) = "-" then call crump (error_table_$badopt, arg); 109 110 else do; 111 n_names_to_match = n_names_to_match + 1; 112 matchnames (n_names_to_match) = arg; 113 end; 114 end; 115 116 on cleanup call clean_up; 117 118 /* ------------------------- */ 119 120 clean_up: proc; 121 if rtdtp ^= null then call hcs_$terminate_noname (rtdtp, 0); 122 end clean_up; 123 124 /* ------------------------- */ 125 126 call hcs_$initiate_count (dirname, ename, "", bc, 0, rtdtp, code); 127 if rtdtp = null then 128 if ename = "rtdt.rtdt" then do; 129 ename = "rtdt"; 130 call hcs_$initiate_count (dirname, ename, "", bc, 0, rtdtp, code); 131 end; 132 if rtdtp = null then call crump (code, "^a>^a"); 133 134 if (rtdt.version ^= RTDT_version_2) & (rtdt.version ^= RTDT_version_3) then 135 call crump (error_table_$unimplemented_version, "^a>^a"); 136 137 if header_sw then do; 138 call date_time_ (clock_ (), date_time_string); 139 call ioa_ ("/* ^a>^a -- ^a */^/", dirname, ename, date_time_string); 140 141 call ioa_ ("/* Author: ^a */^/", rtdt.author.proc_group_id); 142 end; 143 144 cttp = pointer (rtdt.charge_type_table_ptr, rtdt.rtdt_area); 145 146 do rtdep = pointer (rtdt.first_resource, rtdt.rtdt_area) 147 repeat (pointer (rtde.next_resource, rtdt.rtdt_area)) 148 while (rtdep ^= null); 149 150 if rtde.valid then do; 151 do i = 1 to n_names_to_match while (matchnames (i) ^= rtde.name); 152 end; 153 154 if (i <= n_names_to_match | n_names_to_match = 0) then do; 155 156 if i <= n_names_to_match then matchnames (i) = ""; 157 158 call ioa_ ("^/^[Volume^;Device^]:^2-^a;", rtde.is_volume, rtde.name); 159 160 if rtde.is_synonym then call ioa_ ("Like:^2-^a;", rtde.syn_to); 161 162 else do; 163 temp_atts (1) = rtde.attributes_valid; 164 temp_atts (2) = rtde.attributes_to_match; 165 call cv_rcp_attributes_$to_string_given_rtde (rtdep, temp_atts, attribute_string, code); 166 if code ^= 0 then do; 167 call com_err_ (code, "display_rtdt", "Error displaying attributes for ^a", rtde.name); 168 attribute_string = ""; 169 end; 170 171 attribute_string = attribute_string || ";"; 172 if attribute_string = ";" then call ioa_ ("Attribute_domain:^-;"); 173 else do i = 1 by 1 while (attribute_string ^= ""); 174 call ioa_ ("^[Attribute_domain:^-^;^2- ^]^a", (i = 1), knockoff_50_ch (attribute_string)); 175 end; 176 177 call ioa_ ("Limit:^2-^[open^;^d^];", (rtde.process_limit = -1), rtde.process_limit); 178 call ioa_ ("Time:^2-^[open^;^[^d^;^d, ^d^]^];", (rtde.default_time >= 4880), 179 (rtde.default_time = rtde.max_time), rtde.default_time, rtde.max_time); 180 181 if rtde.n_mates = 0 then call ioa_ ("^[Implies^;Accepts^]:^2-;", (rtde.is_volume)); 182 183 else call ioa_ ("^[Implies^;Accepts^]:^2-^v(^a, ^)^a;", (rtde.is_volume), 184 rtde.n_mates - 1, rtde.mates (*)); 185 186 call ioa_ ("Manual_clear:^-^[yes^;no^];", rtde.manual_clear); 187 call ioa_ ("Advance_notice:^-^[none^;^d^];", (rtde.advance_notice_time = -1), 188 rtde.advance_notice_time); 189 call ioa_ ("Canonicalizer:^-^[^a^;^];", (rtdt.version = RTDT_version_3), 190 rtde.precanon_proc); 191 192 call ioa_ (""); 193 194 call display_subtype (rtde.name, rtde.registration_defaults, 0); 195 196 do i = 1 to rtde.n_subtypes; 197 198 call ioa_ ("^/type:^2-^a;", rtde.subtype_name (i)); 199 temp_name = rtrim (rtde.name) || " (" || rtrim (rtde.subtype_name (i)) || ")"; 200 call display_subtype (rtde.name, rtde.subtype_defaults (i), 5); 201 end; 202 end; 203 end; 204 end; 205 206 if n_names_to_match = 0 then call ioa_ ("^//* --------------- */"); 207 end; 208 209 call clean_up; 210 if n_names_to_match = 0 then call ioa_ ("^/end;"); 211 212 else do i = 1 to n_names_to_match; 213 if matchnames (i) ^= "" then call com_err_ (error_table_$name_not_found, "display_rtdt", matchnames (i)); 214 end; 215 216 return; 217 218 display_subtype: proc (item_name, struc, indent); 219 220 dcl item_name char (*) aligned parameter; 221 222 dcl 1 struc like rtde.registration_defaults aligned parameter; 223 224 dcl indent fixed bin parameter; 225 226 dcl (low_auth_string, high_auth_string) char (128), 227 i fixed bin; 228 229 if struc.potential_attributes_given then do; 230 temp_atts (1) = struc.potential_attributes; 231 temp_atts (2) = ""b; 232 call cv_rcp_attributes_$to_string_given_rtde (rtdep, temp_atts, attribute_string, code); 233 if code ^= 0 then do; 234 call com_err_ (code, "display_rtdt", 235 "Error displaying potential attributes for ^a", item_name); 236 attribute_string = ""; 237 end; 238 239 attribute_string = attribute_string || ";"; 240 241 if attribute_string = ";" then 242 call ioa_ ("^vxpotential_attributes: ;", indent); 243 244 else do i = 1 by 1 while (attribute_string ^= ""); 245 call ioa_ ("^[^vxpotential_attributes:^/^2-^vx^;^s^2-^vx ^]^a", (i = 1), 246 indent, indent, knockoff_50_ch (attribute_string)); 247 end; 248 end; 249 250 if struc.attributes_given then do; 251 temp_atts (1) = struc.attributes; 252 temp_atts (2) = ""b; 253 call cv_rcp_attributes_$to_string_given_rtde (rtdep, temp_atts, attribute_string, code); 254 if code ^= 0 then do; 255 call com_err_ (code, "display_rtdt", 256 "Error displaying attributes for ^a", item_name); 257 attribute_string = ""; 258 end; 259 260 attribute_string = attribute_string || ";"; 261 262 if attribute_string = ";" then 263 call ioa_ ("^vxattributes: ;", indent); 264 265 else do i = 1 by 1 while (attribute_string ^= ""); 266 call ioa_ ("^[^vxattributes:^-^vx^;^s^2-^vx ^]^a", (i = 1), 267 indent, indent, knockoff_50_ch (attribute_string)); 268 end; 269 end; 270 271 if struc.charge_type_given then call ioa_ ("^vxcharge_type:^-^vx^a;", 272 indent, indent, charge_type_table.charge_types (struc.charge_type)); 273 274 if struc.aim_range_given then do; 275 code = 0; 276 if struc.aim_range (1) = SYSTEM_LOW then low_auth_string = "system_low"; 277 else if struc.aim_range (1) = SYSTEM_HIGH then low_auth_string = "system_high"; 278 else call convert_authorization_$to_string (struc.aim_range (1), low_auth_string, code); 279 if code ^= 0 then do; 280 call com_err_ (code, "display_rtdt", 281 "While converting min access class of ^a.; assuming system_low.", item_name); 282 low_auth_string = "system_low"; 283 end; 284 285 if struc.aim_range (2) = SYSTEM_LOW then high_auth_string = "system_low"; 286 else if struc.aim_range (2) = SYSTEM_HIGH then high_auth_string = "system_high"; 287 else call convert_authorization_$to_string (struc.aim_range (2), high_auth_string, code); 288 if code ^= 0 then do; 289 call com_err_ (code, "display_rtdt", 290 "While converting max access class of ^a; assuming system_high.", item_name); 291 high_auth_string = "system_high"; 292 end; 293 294 call ioa_ ("^vxaccess_range:^-^vx""^a : ^a"";", indent, indent, low_auth_string, high_auth_string); 295 end; 296 297 return; 298 299 end display_subtype; 300 301 knockoff_50_ch: proc (string) returns (char (50) varying); 302 303 dcl string char (512) varying parameter; 304 305 dcl i fixed bin, 306 temp char (50) varying; 307 308 if length (string) <= 50 then do; 309 temp = string; 310 string = ""; 311 return (temp); 312 end; 313 314 i = 51 - index (reverse (substr (string, 1, 50)), ","); 315 temp = substr (string, 1, i); 316 string = substr (string, i+1); 317 318 return (temp); 319 end knockoff_50_ch; 320 321 crump: proc (code, reason); 322 323 dcl code fixed bin (35) parameter, 324 reason char (*) parameter; 325 326 call com_err_ (code, "display_rtdt", reason, dirname, ename); 327 call clean_up; 328 goto return_hard; 329 end crump; 330 end; /* end begin block */ 331 332 return_hard: 333 return; 334 335 end display_rtdt; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/12/82 1045.3 display_rtdt.pl1 >spec>on>11/12/82>display_rtdt.pl1 16 1 11/20/79 2015.6 rtdt.incl.pl1 >ldd>include>rtdt.incl.pl1 1-4 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.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. RTDT_version_2 constant fixed bin(17,0) initial dcl 1-64 ref 134 RTDT_version_3 constant fixed bin(17,0) initial dcl 1-64 ref 134 189 SYSTEM_HIGH 000450 automatic bit(72) dcl 75 set ref 85* 277 286 SYSTEM_LOW 000452 automatic bit(72) dcl 75 set ref 83* 276 285 advance_notice_time 63 based fixed bin(17,0) level 3 packed unaligned dcl 1-16 set ref 187 187* aim_range 5 parameter bit(72) array level 2 dcl 222 set ref 276 277 278* 285 286 287* aim_range_given 0(02) parameter bit(1) level 3 packed unaligned dcl 222 ref 274 al 000224 automatic fixed bin(17,0) dcl 42 set ref 94* 97 97 99* 102 102 103 103 106 106 108 108 108 112 alp 000110 automatic pointer dcl 26 set ref 31* 94* 99* ap 000222 automatic pointer dcl 42 set ref 94* 97 97 99* 102 103 106 106 108 108 112 arg based char unaligned dcl 42 set ref 97 97 102* 103* 106 106 108 108* 112 attribute_string 000240 automatic varying char(512) dcl 54 set ref 165* 168* 171* 171 172 173 174* 232* 236* 239* 239 241 244 245* 253* 257* 260* 260 262 265 266* attributes 3 parameter bit(72) level 2 dcl 222 ref 251 attributes_given 0(01) parameter bit(1) level 3 packed unaligned dcl 222 ref 250 attributes_to_match 100 based bit(72) level 3 dcl 1-16 ref 164 attributes_valid 76 based bit(72) level 3 dcl 1-16 ref 163 author based structure level 2 dcl 1-3 bc 000226 automatic fixed bin(24,0) dcl 51 set ref 126* 130* charge_type 11 parameter fixed bin(17,0) level 2 dcl 222 ref 271 charge_type_given 0(03) parameter bit(1) level 3 packed unaligned dcl 222 ref 271 charge_type_table based structure level 1 dcl 1-11 charge_type_table_ptr 37 based offset level 2 dcl 1-3 ref 144 charge_types 1 based char(32) array level 2 dcl 1-11 set ref 271* cleanup 000442 stack reference condition dcl 69 ref 116 clock_ 000032 constant entry external dcl 60 ref 138 138 code parameter fixed bin(35,0) dcl 323 in procedure "crump" set ref 321 326* code 000225 automatic fixed bin(35,0) dcl 42 in begin block on line 35 set ref 83* 84 84* 85* 86 86* 94* 95 95* 99* 100 100* 102* 103 103* 126* 130* 132* 165* 166 167* 232* 233 234* 253* 254 255* 275* 278* 279 280* 287* 288 289* com_err_ 000016 constant entry external dcl 48 ref 167 213 234 255 280 289 326 convert_authorization_$from_string 000044 constant entry external dcl 72 ref 83 85 convert_authorization_$to_string 000042 constant entry external dcl 72 ref 278 287 cttp 000104 automatic pointer dcl 1-70 set ref 144* 271 cu_$arg_count 000010 constant entry external dcl 23 ref 33 cu_$arg_list_ptr 000012 constant entry external dcl 26 ref 31 cu_$arg_ptr_rel 000014 constant entry external dcl 42 ref 94 99 cv_rcp_attributes_$to_string_given_rtde 000046 constant entry external dcl 81 ref 165 232 253 date_time_ 000030 constant entry external dcl 60 ref 138 date_time_string 000232 automatic char(24) unaligned dcl 54 set ref 138* 139* default_flags parameter structure level 2 dcl 222 default_time 62 based fixed bin(17,0) level 3 packed unaligned dcl 1-16 set ref 178 178 178* dirname 000100 automatic char(168) unaligned dcl 37 set ref 88* 102* 126* 130* 139* 326* ename 000152 automatic char(32) unaligned dcl 37 set ref 89* 102* 126* 127 129* 130* 139* 326* error_table_$badopt 000040 external static fixed bin(35,0) dcl 65 set ref 108* error_table_$name_not_found 000036 external static fixed bin(35,0) dcl 65 set ref 213* error_table_$unimplemented_version 000034 external static fixed bin(35,0) dcl 65 set ref 134* expand_pathname_$add_suffix 000020 constant entry external dcl 48 ref 102 first_resource 40 based offset level 2 dcl 1-3 ref 146 fixed_info based structure level 2 dcl 1-16 flags 61 based structure level 3 packed unaligned dcl 1-16 hcs_$initiate_count 000022 constant entry external dcl 51 ref 126 130 hcs_$terminate_noname 000026 constant entry external dcl 60 ref 121 header_sw 000230 automatic bit(1) dcl 54 set ref 91* 106* 137 high_auth_string 000560 automatic char(128) unaligned dcl 226 set ref 285* 286* 287* 291* 294* i 000630 automatic fixed bin(17,0) dcl 305 in procedure "knockoff_50_ch" set ref 314* 315 316 i 000620 automatic fixed bin(17,0) dcl 226 in procedure "display_subtype" set ref 244* 245* 265* 266* i 000227 automatic fixed bin(17,0) dcl 54 in begin block on line 35 set ref 93* 94* 98* 98 99* 151* 151* 154 156 156 173* 174* 196* 198 199 200* 212* 213 213* indent parameter fixed bin(17,0) dcl 224 set ref 218 241* 245* 245* 262* 266* 266* 271* 271* 294* 294* index builtin function dcl 69 ref 314 ioa_ 000024 constant entry external dcl 60 ref 139 141 158 160 172 174 177 178 181 183 186 187 189 192 198 206 210 241 245 262 266 271 294 is_synonym 61(05) based bit(1) level 4 packed unaligned dcl 1-16 ref 160 is_volume 61(01) based bit(1) level 4 packed unaligned dcl 1-16 set ref 158* 181 183 item_name parameter char dcl 220 set ref 218 234* 255* 280* 289* length builtin function dcl 69 ref 308 low_auth_string 000520 automatic char(128) unaligned dcl 226 set ref 276* 277* 278* 282* 294* manual_clear 61(02) based bit(1) level 4 packed unaligned dcl 1-16 set ref 186* matchnames 000454 automatic char(32) array unaligned dcl 77 set ref 112* 151 156* 213 213* mates 624 based char(32) array level 2 dcl 1-16 set ref 183* max_time 62(18) based fixed bin(17,0) level 3 packed unaligned dcl 1-16 set ref 178 178* n_mates 64(18) based fixed bin(17,0) level 3 packed unaligned dcl 1-16 ref 181 183 183 198 199 200 n_names_to_match 000231 automatic fixed bin(17,0) dcl 54 set ref 90* 111* 111 112 151 154 154 156 206 210 212 n_subtypes 65 based fixed bin(17,0) level 3 packed unaligned dcl 1-16 ref 196 name 1 based char(32) level 3 dcl 1-16 set ref 151 158* 167* 194* 199 200* nargs 000106 automatic fixed bin(17,0) dcl 23 set ref 33* 77 93 next_resource based offset level 3 dcl 1-16 ref 207 null builtin function dcl 69 in begin block on line 35 ref 121 127 132 146 null builtin function dcl 21 in procedure "display_rtdt" ref 29 pointer builtin function dcl 69 ref 144 146 207 potential_attributes 1 parameter bit(72) level 2 dcl 222 ref 230 potential_attributes_given parameter bit(1) level 3 packed unaligned dcl 222 ref 229 precanon_proc 21 based char(64) level 3 dcl 1-16 set ref 189* proc_group_id based char(32) level 3 dcl 1-3 set ref 141* process_limit 61(18) based fixed bin(17,0) level 3 packed unaligned dcl 1-16 set ref 177 177* reason parameter char unaligned dcl 323 set ref 321 326* registration_defaults 602 based structure level 3 dcl 1-16 set ref 194* reverse builtin function dcl 69 ref 314 rtde based structure level 1 dcl 1-16 rtdep 000100 automatic pointer dcl 1-70 set ref 146* 146* 150 151 158 158 160 160 163 164 165* 167 177 177 178 178 178 178 178 181 181 183 183 183 186 187 187 189 194 194 196 198 199 199 200 200* 207 232* 253* rtdt based structure level 1 dcl 1-3 rtdt_area 42 based area level 2 dcl 1-3 ref 144 146 207 rtdtp 000102 automatic pointer dcl 1-70 set ref 29* 121 121* 126* 127 130* 132 134 134 141 144 144 146 146 189 207 string parameter varying char(512) dcl 303 set ref 301 308 309 310* 314 315 316* 316 struc parameter structure level 1 dcl 222 set ref 218 substr builtin function dcl 69 ref 108 314 315 316 subtype_defaults based structure array level 3 dcl 1-16 set ref 200* subtype_name based char(32) array level 3 dcl 1-16 set ref 198* 199 subtypes based structure array level 2 dcl 1-16 syn_to 11 based char(32) level 3 dcl 1-16 set ref 160* sysdir 000010 constant char(168) initial unaligned dcl 18 ref 88 sysent 000000 constant char(32) initial unaligned dcl 18 ref 89 temp 000631 automatic varying char(50) dcl 305 set ref 309* 311 315* 318 temp_atts 000454 automatic bit(72) array unaligned dcl 79 set ref 163* 164* 165* 230* 231* 232* 251* 252* 253* temp_name 000162 automatic char(128) dcl 40 set ref 199* valid 61 based bit(1) level 4 packed unaligned dcl 1-16 ref 150 version 35 based fixed bin(17,0) level 2 dcl 1-3 ref 134 134 189 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. N_CHARGE_TYPES automatic fixed bin(17,0) dcl 1-64 N_MATES automatic fixed bin(17,0) dcl 1-64 N_SUBTYPES automatic fixed bin(17,0) dcl 1-64 RTDT_area_len automatic fixed bin(18,0) dcl 1-64 string builtin function dcl 69 NAMES DECLARED BY EXPLICIT CONTEXT. clean_up 002777 constant entry internal dcl 120 ref 116 209 327 crump 004070 constant entry internal dcl 321 ref 84 86 95 100 103 108 132 134 display_rtdt 000554 constant entry external dcl 11 display_subtype 003024 constant entry internal dcl 218 ref 194 200 knockoff_50_ch 003776 constant entry internal dcl 301 ref 174 245 266 return_hard 004147 constant label dcl 332 ref 328 NAME DECLARED BY CONTEXT OR IMPLICATION. rtrim builtin function ref 199 199 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4514 4564 4253 4524 Length 5034 4253 50 234 240 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_rtdt 78 external procedure is an external procedure. begin block on line 35 606 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 116 64 on unit clean_up 72 internal procedure is called by several nonquick procedures. display_subtype internal procedure shares stack frame of begin block on line 35. knockoff_50_ch internal procedure shares stack frame of begin block on line 35. crump internal procedure shares stack frame of begin block on line 35. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 35 000100 dirname begin block on line 35 000152 ename begin block on line 35 000162 temp_name begin block on line 35 000222 ap begin block on line 35 000224 al begin block on line 35 000225 code begin block on line 35 000226 bc begin block on line 35 000227 i begin block on line 35 000230 header_sw begin block on line 35 000231 n_names_to_match begin block on line 35 000232 date_time_string begin block on line 35 000240 attribute_string begin block on line 35 000450 SYSTEM_HIGH begin block on line 35 000452 SYSTEM_LOW begin block on line 35 000454 temp_atts begin block on line 35 000454 matchnames begin block on line 35 000520 low_auth_string display_subtype 000560 high_auth_string display_subtype 000620 i display_subtype 000630 i knockoff_50_ch 000631 temp knockoff_50_ch display_rtdt 000100 rtdep display_rtdt 000102 rtdtp display_rtdt 000104 cttp display_rtdt 000106 nargs display_rtdt 000110 alp display_rtdt THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ge_a alloc_cs cat_realloc_cs enter_begin call_ext_out_desc call_ext_out call_int_this call_int_other begin_return return tra_ext alloc_auto_adj enable shorten_stack ext_entry int_entry pointer_hard THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ com_err_ convert_authorization_$from_string convert_authorization_$to_string cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr_rel cv_rcp_attributes_$to_string_given_rtde date_time_ expand_pathname_$add_suffix hcs_$initiate_count hcs_$terminate_noname ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$name_not_found error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000553 29 000561 31 000563 33 000571 35 000600 77 000603 213 000612 83 000614 84 000641 85 000652 86 000700 88 000712 89 000715 90 000720 91 000721 93 000723 94 000733 95 000753 97 000766 98 001000 99 001001 100 001021 102 001031 103 001067 104 001110 106 001111 108 001123 111 001150 112 001151 114 001160 116 001162 126 001204 127 001247 129 001260 130 001263 132 001325 134 001337 137 001365 138 001367 139 001413 141 001443 144 001467 146 001475 150 001506 151 001512 152 001532 154 001534 156 001541 158 001552 160 001602 163 001632 164 001635 165 001640 166 001665 167 001667 168 001725 171 001726 172 001735 173 001757 174 001766 175 002020 177 002022 178 002060 181 002132 183 002166 186 002235 187 002261 189 002314 192 002347 194 002360 196 002403 198 002415 199 002455 200 002563 201 002654 206 002656 207 002674 209 002703 210 002707 212 002725 213 002733 214 002771 216 002773 330 002775 120 002776 121 003004 122 003023 218 003024 229 003035 230 003041 231 003045 232 003047 233 003075 234 003077 236 003135 239 003136 241 003145 244 003174 245 003203 247 003245 250 003247 251 003253 252 003257 253 003261 254 003307 255 003311 257 003347 260 003350 262 003357 265 003411 266 003420 268 003462 271 003464 274 003526 275 003532 276 003533 277 003544 278 003552 279 003573 280 003575 282 003633 285 003636 286 003650 287 003656 288 003677 289 003701 291 003737 294 003742 297 003775 301 003776 308 004000 309 004004 310 004014 311 004015 314 004024 315 004040 316 004047 318 004061 321 004070 326 004101 327 004140 328 004144 332 004147 ----------------------------------------------------------- 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