COMPILATION LISTING OF SEGMENT print_configuration_deck Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 01/26/88 1329.1 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(87-06-23,Fawcett), approve(87-06-23,MCR7700), 17* audit(87-06-23,Dickson), install(87-07-17,MR12.1-1042): 18* Changed to display the negative numeric values as negative integers, 19* instead of very positive large numbers. 20* 2) change(88-01-01,Gilcrease), approve(88-01-19,MCR7830), 21* audit(88-01-20,Parisek), install(88-01-26,MR12.2-1018): 22* Fix bug where -control argument is ignored. 23* END HISTORY COMMENTS */ 24 25 26 /* format: style3 */ 27 print_configuration_deck: 28 pcd: 29 proc; 30 31 /* ************************************************************************** 32* * This routine displays the desired card images in the configuration * 33* * deck. It can be called as a command or active function with up to * 34* * 32 card selection arguments, as well as with up to 16 field * 35* * specification groups to be matched or excluded. * 36* * * 37* * Coded 1981/1982 by Warren Johnson and Jim Homan. * 38* * Modified: 16 January 1983 by G. Palter to add -pathname control * 39* * control argument * 40* * Modified 83 June 15 by Art Beattie to increase length of line * 41* * displayed. * 42* * Modified: 09 September 1983 by B. Braun to fix -match and -pathname * 43* * when it's a zero length seg (phx15746). * 44* * Modified: 01 February 1984 by Keith Loepere for -label * 45* ************************************************************************** */ 46 47 dcl (argN, nargs, max_size, card_no, field_no) 48 fixed bin; 49 dcl (card_args, match_args, exclude_args) 50 fixed bin; 51 dcl (argl, rsl) fixed bin (21); 52 dcl code fixed bin (35); 53 dcl (argp, rsp) ptr; 54 dcl af_sw bit (1); 55 dcl card_found bit (1); 56 dcl cards (32) char (4); /* card names to select */ 57 dcl label_output bit (1) aligned; 58 dcl match_cards (16, 14) char (8); 59 dcl exclude_cards (16, 14) char (8); 60 dcl out char (256) varying; /* output line */ 61 dcl have_pathname bit (1); 62 dcl config_dirname char (168); 63 dcl config_ename char (32); 64 dcl stype fixed bin (2); /* segment type */ 65 dcl bitcnt fixed bin (24); /* bit count of config deck segment */ 66 67 dcl error_routine_ entry variable options (variable); 68 /* either com_err_ or active_fnc_err_ */ 69 70 dcl arg char (argl) based (argp); 71 dcl rs char (rsl) varying based (rsp); 72 dcl config_card_field_in_ascii 73 char (4) based; 74 75 dcl (addr, char, divide, fixed, index, null, substr, hbound, rtrim, size, verify) 76 builtin; 77 78 dcl cleanup condition; 79 80 dcl cname char (24) init ("print_configuration_deck") int static options (constant); 81 82 dcl error_table_$badcall 83 fixed bin (35) external; 84 dcl error_table_$badopt fixed bin (35) external; 85 dcl error_table_$bigarg fixed bin (35) external; 86 dcl error_table_$noarg fixed bin (35) external; 87 dcl error_table_$not_act_fnc 88 fixed bin (35) external; 89 dcl error_table_$too_many_args 90 fixed bin (35) external; 91 dcl error_table_$zero_length_seg 92 fixed bin (35) external; 93 94 dcl active_fnc_err_ entry options (variable); 95 dcl com_err_ entry options (variable); 96 dcl config_deck_parse_$binary_to_ascii 97 entry (ptr, char (256) var); 98 dcl cv_oct_ entry (char (*)) returns (fixed bin (35)); 99 dcl cu_$af_return_arg entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 100 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin bin (35)); 101 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 102 dcl hcs_$status_mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)); 103 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 104 dcl ioa_ entry options (variable); 105 dcl ioa_$rsnnl entry options (variable); 106 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 107 dcl requote_string_ entry (char (*)) returns (char (*)); 108 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 109 1 1 /* BEGIN INCLUDE FILE ... config_deck.incl.pl1 ... 11/13/80, W. Olin Sibert */ 1 2 1 3 dcl (configp, cardp) pointer; 1 4 dcl config_n_cards fixed bin; /* Number of cards used in config */ 1 5 dcl config_max_cards fixed bin; /* Max number of cards in config */ 1 6 1 7 dcl config_deck$ fixed bin external static; 1 8 1 9 dcl 1 config_deck aligned based (configp), 1 10 2 cards (config_n_cards) aligned like config_card, 1 11 2 pad_cards (config_max_cards - config_n_cards) aligned like config_card; 1 12 1 13 dcl 1 config_card aligned based (cardp), 1 14 2 word char (4) aligned, 1 15 2 data_field (14) bit (36) aligned, 1 16 2 type_word aligned like config_card_type_word; 1 17 1 18 dcl 1 config_card_type_word aligned based, 1 19 2 field_type (14) bit (2) unaligned, 1 20 2 pad1 bit (4) unaligned, 1 21 2 n_fields fixed bin (4) unsigned unaligned; 1 22 1 23 dcl (CONFIG_DECIMAL_TYPE init ("11"b), 1 24 CONFIG_OCTAL_TYPE init ("00"b), 1 25 CONFIG_SINGLE_CHAR_TYPE init ("01"b), 1 26 CONFIG_STRING_TYPE init ("10"b)) bit (2) aligned static options (constant); 1 27 1 28 dcl ZERO_CARD_WORD char (4) aligned internal static options (constant) init (""); 1 29 dcl FREE_CARD_WORD char (4) aligned internal static options (constant) init ("ÿÿÿÿ"); 1 30 1 31 dcl VALID_CARD_WORD_CHARACTERS char (38) internal static options (constant) init 1 32 ("abcdefghijklmnopqrstuvwxyz0123456789_."); /* lowercase letters, digits, period and underscore */ 1 33 1 34 dcl EMPTY_FIELD bit (36) aligned internal static options (constant) init ("777777777777"b3); 1 35 1 36 /* END INCLUDE FILE config_deck.incl.pl1 */ 110 111 2 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 112 113 3 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 3 2 /* format: style2,^inddcls,idind32 */ 3 3 3 4 declare 1 terminate_file_switches based, 3 5 2 truncate bit (1) unaligned, 3 6 2 set_bc bit (1) unaligned, 3 7 2 terminate bit (1) unaligned, 3 8 2 force_write bit (1) unaligned, 3 9 2 delete bit (1) unaligned; 3 10 3 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 3 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 3 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 3 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 3 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 3 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 3 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 3 18 3 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 114 115 116 call cu_$af_return_arg (nargs, rsp, rsl, code); 117 if code = 0 118 then do; 119 error_routine_ = active_fnc_err_; 120 af_sw = "1"b; 121 rs = ""; 122 end; 123 else if code = error_table_$not_act_fnc 124 then do; 125 error_routine_ = com_err_; 126 af_sw = "0"b; 127 end; 128 else do; 129 call com_err_ (code, cname); 130 return; 131 end; 132 133 cards (*), match_cards (*, *), exclude_cards (*, *) = ""; 134 card_args, match_args, exclude_args = 0; 135 label_output = "0"b; 136 have_pathname = "0"b; /* will default to the live config deck */ 137 138 /* Argument processing loop. */ 139 140 do argN = 1 to nargs by 1; /* get arguments */ 141 call cu_$arg_ptr (argN, argp, argl, code); 142 if code ^= 0 143 then do; 144 call error_routine_ (code, cname, "Error getting argument ^d.", argN); 145 return; 146 end; 147 else ; 148 if arg = "-match" /* -MATCH */ 149 then do; 150 call pick_up_match_exclude ("-match", match_cards, match_args, argN, code); 151 if code ^= 0 152 then return; 153 end; 154 155 else if arg = "-exclude" | arg = "-ex" /* -EXCLUDE */ 156 then do; 157 call pick_up_match_exclude ("-exclude", exclude_cards, exclude_args, argN, code); 158 if code ^= 0 159 then return; 160 end; /* end -EXCLUDE */ 161 162 else if arg = "-label" | arg = "-lbl" /* -LABEL */ 163 then label_output = "1"b; 164 else if arg = "-no_label" | arg = "-nlbl" 165 then label_output = "0"b; 166 167 else if arg = "-pathname" | arg = "-pn" /* -PATHNAME */ 168 then do; 169 if argN = nargs 170 then do; 171 call error_routine_ (error_table_$noarg, cname, 172 "Config deck pathname after ""-pathname""."); 173 return; 174 end; 175 if have_pathname 176 then do; 177 call error_routine_ (error_table_$too_many_args, cname, 178 "Only one pathname may be given."); 179 return; 180 end; 181 argN = argN + 1; 182 call cu_$arg_ptr (argN, argp, argl, code); 183 if code ^= 0 184 then do; 185 call error_routine_ (code, cname, "Error getting argument ^d.", argN); 186 return; 187 end; 188 call expand_pathname_ (arg, config_dirname, config_ename, code); 189 if code ^= 0 190 then do; 191 call error_routine_ (code, cname, "^a", arg); 192 return; 193 end; 194 have_pathname = "1"b; /* have a config deck pathname now */ 195 end; 196 197 else /* cannot be a control argument */ 198 if substr (arg, 1, 1) = "-" 199 then do; 200 call error_routine_ (error_table_$badopt, cname, arg); 201 return; 202 end; 203 else do; /* must be a card name argument */ 204 card_args = card_args + 1; 205 if card_args > hbound (cards, 1) 206 then do; 207 call error_routine_ (error_table_$too_many_args, cname, 208 "^/Only the first ^d card arguments will be used.", hbound (cards, 1)); 209 card_args = hbound (cards, 1); 210 go to process; 211 end; 212 else ; 213 if argl > 4 214 then code = error_table_$bigarg; 215 else if verify (arg, "abcdefghijklmnopqrstuvwxyz") > 0 216 then code = error_table_$badcall; 217 else code = 0; 218 if code ^= 0 219 then do; 220 call error_routine_ (code, cname, "^/Invalid card name specifier ^a.", arg); 221 return; 222 end; 223 else cards (card_args) = arg; 224 end; 225 end; /* end argument processing */ 226 227 process: /* begin processing */ 228 configp = null (); /* for cleanup handler */ 229 230 on cleanup 231 begin; 232 if have_pathname 233 then if configp ^= null () 234 then do; 235 call terminate_file_ (configp, 0, TERM_FILE_TERM, (0)); 236 configp = null (); 237 end; 238 end; 239 240 if have_pathname 241 then do; /* explicit config deck pathname */ 242 call initiate_file_ (config_dirname, config_ename, R_ACCESS, configp, bitcnt, code); 243 if code ^= 0 244 then do; 245 call error_routine_ (code, cname, "^a", pathname_ (config_dirname, config_ename)); 246 return; 247 end; 248 if bitcnt = 0 249 then do; 250 call error_routine_ (error_table_$zero_length_seg, cname, "^a", 251 pathname_ (config_dirname, config_ename)); 252 return; 253 end; 254 end; 255 256 else do; /* use live config deck */ 257 configp = addr (config_deck$); 258 call hcs_$status_mins (configp, stype, bitcnt, code); 259 if code ^= 0 260 then do; 261 call error_routine_ (code, cname, "Cannot get bit count of config_deck."); 262 return; 263 end; 264 end; 265 266 max_size = divide (bitcnt, 36, 17, 0); /* get size of config deck seg */ 267 config_n_cards = divide (max_size, size (config_card), 17, 0); 268 /* get number of cards */ 269 config_max_cards = 128; /* a guess */ 270 271 /* Loop through config_deck examining each card. */ 272 273 card_found = "0"b; 274 if af_sw 275 then ; 276 else call ioa_ (); 277 278 do card_no = 1 by 1 to config_n_cards while (config_deck.cards (card_no).word ^= FREE_CARD_WORD); 279 cardp = addr (config_deck.cards (card_no)); 280 if match_config_card () 281 then do; /* display or return this card */ 282 card_found = "1"b; 283 if label_output 284 then call config_deck_parse_$binary_to_ascii (cardp, out); 285 else do; 286 call ioa_$rsnnl ("^a", out, (0), config_card.word); 287 do field_no = 1 to config_card.type_word.n_fields by 1; 288 if config_card.type_word.field_type (field_no) = CONFIG_STRING_TYPE 289 then call ioa_$rsnnl ("^a ^a", out, (0), out, 290 addr (config_card.data_field (field_no)) -> config_card_field_in_ascii); 291 else if config_card.type_word.field_type (field_no) = CONFIG_OCTAL_TYPE 292 then call ioa_$rsnnl ("^a ^o", out, (0), out, 293 fixed (config_card.data_field (field_no),35,0)); 294 else if config_card.type_word.field_type (field_no) = CONFIG_DECIMAL_TYPE 295 then call ioa_$rsnnl ("^a ^d.", out, (0), out, 296 fixed (config_card.data_field (field_no),35,0)); 297 else if config_card.type_word.field_type (field_no) = CONFIG_SINGLE_CHAR_TYPE 298 then call ioa_$rsnnl ("^a ^a", out, (0), out, 299 substr ("abcdefgh", fixed (config_card.data_field (field_no),35,0), 1)); 300 else ; 301 end; 302 end; 303 if af_sw 304 then rs = rs || requote_string_ ((out)) || " "; 305 else call ioa_ ("^a", out); 306 end; 307 else ; 308 end; 309 310 if af_sw 311 then rs = rtrim (rs, " "); 312 else call ioa_ ("^[^;No cards meet the match fields specified.^/^]", card_found); 313 314 if have_pathname 315 then if configp ^= null () 316 then do; 317 call terminate_file_ (configp, 0, TERM_FILE_TERM, (0)); 318 configp = null (); 319 end; 320 321 return; 322 323 match_config_card: 324 proc returns (bit (1)); 325 326 dcl (m, f, k, l) fixed bin; 327 dcl fields (14) char (8); 328 dcl (part_match, match, exclude) 329 bit (1); 330 331 match = "0"b; 332 333 do m = 1 to card_args by 1 while (^match); 334 match = cards (m) = config_card.word; 335 end; 336 337 if match | card_args = 0 338 then if match_args + exclude_args > 0 339 then ; 340 else return ("1"b); 341 else return ("0"b); 342 343 fields (*) = ""; 344 345 do f = 1 to config_card.type_word.n_fields by 1; /* canonicalize card */ 346 if config_card.type_word.field_type (f) = CONFIG_STRING_TYPE 347 then fields (f) = addr (config_card.data_field (f)) -> config_card_field_in_ascii; 348 else if config_card.type_word.field_type (f) = CONFIG_SINGLE_CHAR_TYPE 349 then fields (f) = substr ("abcdefgh", fixed (config_card.data_field (f)), 1); 350 else call ioa_$rsnnl ("^d.", fields (f), (0), fixed (config_card.data_field (f))); 351 end; 352 353 match = match_args = 0; 354 355 do m = 1 to match_args by 1 while (^match); 356 357 do k = 1 by 1 while (match_cards (m, k) ^= ""); 358 part_match = "0"b; 359 if index (match_cards (m, k), "*") > 0 360 then l = index (match_cards (m, k), "*") - 1; 361 else l = 8; 362 363 do f = 1 to config_card.type_word.n_fields by 1 while (^part_match); 364 part_match = substr (match_cards (m, k), 1, l) = substr (fields (f), 1, l); 365 end; 366 367 if part_match 368 then ; 369 else go to match_skip; 370 371 end; 372 373 match = "1"b; 374 375 match_skip: 376 end; 377 378 if exclude_args = 0 | ^match 379 then return (match); 380 else exclude = exclude_args = 0; 381 382 do m = 1 to exclude_args by 1 while (^exclude); 383 384 do k = 1 by 1 while (exclude_cards (m, k) ^= ""); 385 part_match = "0"b; 386 if index (exclude_cards (m, k), "*") > 0 387 then l = index (exclude_cards (m, k), "*") - 1; 388 else l = 8; 389 390 do f = 1 to config_card.type_word.n_fields by 1 while (^part_match); 391 part_match = substr (exclude_cards (m, k), 1, l) = substr (fields (f), 1, l); 392 end; 393 394 if part_match 395 then ; 396 else go to exclude_skip; 397 398 end; 399 400 exclude = "1"b; 401 402 exclude_skip: 403 end; 404 405 return (^exclude); 406 407 end match_config_card; 408 409 410 pick_up_match_exclude: 411 proc (match_exclude_name, match_exclude_cards, match_exclude_args, arg_no, code); 412 413 dcl match_exclude_name char (*); 414 dcl match_exclude_cards (*, *) char (8); 415 dcl match_exclude_args fixed bin; 416 dcl arg_no fixed bin; 417 dcl code fixed bin (35); 418 dcl end_arg bit (1); 419 dcl (j, k) fixed bin; 420 421 match_exclude_args = match_exclude_args + 1; 422 if match_exclude_args > hbound (match_exclude_cards, 1) 423 then do; 424 code = error_table_$too_many_args; 425 call error_routine_ (code, cname, "^/Only ^d ^a arguments allowed.", hbound (match_exclude_cards, 1), 426 match_exclude_name); 427 return; 428 end; 429 else if arg_no >= nargs 430 then do; 431 code = error_table_$noarg; 432 call error_routine_ (code, cname, "^/Field specifiers must follow ^a argument.", match_exclude_name); 433 return; 434 end; 435 else ; 436 end_arg = "0"b; 437 k = 0; 438 do j = arg_no + 1 to nargs by 1 while (^end_arg); 439 k = k + 1; 440 call cu_$arg_ptr (j, argp, argl, code); 441 if code ^= 0 442 then do; 443 call error_routine_ (code, cname, "^/Error processing argument ^d; following ^a.", j, 444 match_exclude_name); 445 return; 446 end; 447 else arg_no = arg_no + 1; 448 if arg = "-match" | arg = "-exclude" | arg = "-ex" 449 then do; 450 end_arg = "1"b; 451 arg_no = arg_no - 1; 452 if k = 1 /* check if anything followed -match */ 453 then do; 454 code = error_table_$noarg; 455 call error_routine_ (code, cname, "^/Field specifiers must follow ^a argument.", 456 match_exclude_name); 457 return; 458 end; 459 else ; 460 end; 461 else if substr (arg, 1, 1) = "-" 462 then arg_no = arg_no - 1; /* assume a control arg, skip */ 463 else do; 464 if k > hbound (match_exclude_cards, 2) 465 then do; 466 code = error_table_$too_many_args; 467 call error_routine_ (code, cname, "^/Too many fields specified following ^a.", 468 match_exclude_name); 469 return; 470 end; 471 else if verify (arg, "01234567") = 0 472 then call ioa_$rsnnl ("^d.", match_exclude_cards (match_exclude_args, k), (0), cv_oct_ (arg)); 473 else if char (arg, 1) ^= "*" 474 then match_exclude_cards (match_exclude_args, k) = arg; 475 else do; 476 code = error_table_$badcall; 477 call error_routine_ (code, cname, "^/Illegal field specifier ^a.", arg); 478 return; 479 end; 480 end; 481 end; 482 end pick_up_match_exclude; 483 484 end print_configuration_deck; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/26/88 1329.1 print_configuration_deck.pl1 >spec>install>1018>print_configuration_deck.pl1 110 1 05/08/81 1853.6 config_deck.incl.pl1 >ldd>include>config_deck.incl.pl1 112 2 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 114 3 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. CONFIG_DECIMAL_TYPE constant bit(2) initial dcl 1-23 ref 294 CONFIG_OCTAL_TYPE constant bit(2) initial dcl 1-23 ref 291 CONFIG_SINGLE_CHAR_TYPE constant bit(2) initial dcl 1-23 ref 297 348 CONFIG_STRING_TYPE constant bit(2) initial dcl 1-23 ref 288 346 FREE_CARD_WORD 004274 constant char(4) initial dcl 1-29 ref 278 R_ACCESS 000055 constant bit(3) initial unaligned dcl 2-11 set ref 242* TERM_FILE_TERM 000000 constant bit(3) initial unaligned dcl 3-14 set ref 235* 317* active_fnc_err_ 000026 constant entry external dcl 94 ref 119 addr builtin function dcl 75 ref 257 279 288 346 af_sw 000120 automatic bit(1) unaligned dcl 54 set ref 120* 126* 274 303 310 arg based char unaligned dcl 70 set ref 148 155 155 162 162 164 164 167 167 188* 191* 197 200* 215 220* 223 448 448 448 461 471 471* 471* 473 473 477* argN 000100 automatic fixed bin(17,0) dcl 47 set ref 140* 141* 144* 150* 157* 169 181* 181 182* 185* arg_no parameter fixed bin(17,0) dcl 416 set ref 410 429 438 447* 447 451* 451 461* 461 argl 000110 automatic fixed bin(21,0) dcl 51 set ref 141* 148 155 155 162 162 164 164 167 167 182* 188 188 191 191 197 200 200 213 215 220 220 223 440* 448 448 448 461 471 471 471 471 471 473 473 477 477 argp 000114 automatic pointer dcl 53 set ref 141* 148 155 155 162 162 164 164 167 167 182* 188 191 197 200 215 220 223 440* 448 448 448 461 471 471 471 473 473 477 bitcnt 002150 automatic fixed bin(24,0) dcl 65 set ref 242* 248 258* 266 card_args 000105 automatic fixed bin(17,0) dcl 49 set ref 134* 204* 204 205 209* 223 333 337 card_found 000121 automatic bit(1) unaligned dcl 55 set ref 273* 282* 312* card_no 000103 automatic fixed bin(17,0) dcl 47 set ref 278* 278* 279* cardp 002166 automatic pointer dcl 1-3 set ref 267 279* 283* 286 287 288 288 291 291 291 294 294 294 297 297 297 334 345 346 346 348 348 350 350 363 390 cards 000122 automatic char(4) array unaligned dcl 56 in procedure "pcd" set ref 133* 205 207 207 209 223* 334 cards based structure array level 2 in structure "config_deck" dcl 1-9 in procedure "pcd" set ref 279 char builtin function dcl 75 ref 473 cleanup 002156 stack reference condition dcl 78 ref 230 cname 000001 constant char(24) initial unaligned dcl 80 set ref 129* 144* 171* 177* 185* 191* 200* 207* 220* 245* 250* 261* 425* 432* 443* 455* 467* 477* code 000112 automatic fixed bin(35,0) dcl 52 in procedure "pcd" set ref 116* 117 123 129* 141* 142 144* 150* 151 157* 158 182* 183 185* 188* 189 191* 213* 215* 217* 218 220* 242* 243 245* 258* 259 261* code parameter fixed bin(35,0) dcl 417 in procedure "pick_up_match_exclude" set ref 410 424* 425* 431* 432* 440* 441 443* 454* 455* 466* 467* 476* 477* com_err_ 000030 constant entry external dcl 95 ref 125 129 config_card based structure level 1 dcl 1-13 set ref 267 config_card_field_in_ascii based char(4) unaligned dcl 72 set ref 288* 346 config_card_type_word based structure level 1 dcl 1-18 config_deck based structure level 1 dcl 1-9 config_deck$ 000062 external static fixed bin(17,0) dcl 1-7 set ref 257 config_deck_parse_$binary_to_ascii 000032 constant entry external dcl 96 ref 283 config_dirname 002065 automatic char(168) unaligned dcl 62 set ref 188* 242* 245* 245* 250* 250* config_ename 002137 automatic char(32) unaligned dcl 63 set ref 188* 242* 245* 245* 250* 250* config_max_cards 002171 automatic fixed bin(17,0) dcl 1-5 set ref 269* config_n_cards 002170 automatic fixed bin(17,0) dcl 1-4 set ref 267* 278 configp 002164 automatic pointer dcl 1-3 set ref 227* 232 235* 236* 242* 257* 258* 278 279 314 317* 318* cu_$af_return_arg 000036 constant entry external dcl 99 ref 116 cu_$arg_ptr 000040 constant entry external dcl 100 ref 141 182 440 cv_oct_ 000034 constant entry external dcl 98 ref 471 471 data_field 1 based bit(36) array level 2 dcl 1-13 set ref 288 291 291 294 294 297 297 346 348 350 350 divide builtin function dcl 75 ref 266 267 end_arg 002302 automatic bit(1) unaligned dcl 418 set ref 436* 438 450* error_routine_ 002152 automatic entry variable dcl 67 set ref 119* 125* 144 171 177 185 191 200 207 220 245 250 261 425 432 443 455 467 477 error_table_$badcall 000010 external static fixed bin(35,0) dcl 82 ref 215 476 error_table_$badopt 000012 external static fixed bin(35,0) dcl 84 set ref 200* error_table_$bigarg 000014 external static fixed bin(35,0) dcl 85 ref 213 error_table_$noarg 000016 external static fixed bin(35,0) dcl 86 set ref 171* 431 454 error_table_$not_act_fnc 000020 external static fixed bin(35,0) dcl 87 ref 123 error_table_$too_many_args 000022 external static fixed bin(35,0) dcl 89 set ref 177* 207* 424 466 error_table_$zero_length_seg 000024 external static fixed bin(35,0) dcl 91 set ref 250* exclude 002252 automatic bit(1) unaligned dcl 328 set ref 380* 382 400* 405 exclude_args 000107 automatic fixed bin(17,0) dcl 49 set ref 134* 157* 337 378 380 382 exclude_cards 001063 automatic char(8) array unaligned dcl 59 set ref 133* 157* 384 386 386 391 expand_pathname_ 000042 constant entry external dcl 101 ref 188 f 002211 automatic fixed bin(17,0) dcl 326 set ref 345* 346 346 346 348 348 348 350 350 350* 363* 364* 390* 391* field_no 000104 automatic fixed bin(17,0) dcl 47 set ref 287* 288 288 291 291 291 294 294 294 297 297 297* field_type 17 based bit(2) array level 3 packed unaligned dcl 1-13 ref 288 291 294 297 346 348 fields 002214 automatic char(8) array unaligned dcl 327 set ref 343* 346* 348* 350* 364 391 fixed builtin function dcl 75 ref 291 291 294 294 297 297 348 350 350 have_pathname 002064 automatic bit(1) unaligned dcl 61 set ref 136* 175 194* 232 240 314 hbound builtin function dcl 75 ref 205 207 207 209 422 425 425 464 hcs_$status_mins 000044 constant entry external dcl 102 ref 258 index builtin function dcl 75 ref 359 359 386 386 initiate_file_ 000046 constant entry external dcl 103 ref 242 ioa_ 000050 constant entry external dcl 104 ref 276 305 312 ioa_$rsnnl 000052 constant entry external dcl 105 ref 286 288 291 294 297 350 471 j 002303 automatic fixed bin(17,0) dcl 419 set ref 438* 440* 443* k 002304 automatic fixed bin(17,0) dcl 419 in procedure "pick_up_match_exclude" set ref 437* 439* 439 452 464 471 473 k 002212 automatic fixed bin(17,0) dcl 326 in procedure "match_config_card" set ref 357* 357* 359 359 364* 384* 384* 386 386 391* l 002213 automatic fixed bin(17,0) dcl 326 set ref 359* 361* 364 364 386* 388* 391 391 label_output 000162 automatic bit(1) dcl 57 set ref 135* 162* 164* 283 m 002210 automatic fixed bin(17,0) dcl 326 set ref 333* 334* 355* 357 359 359 364* 382* 384 386 386 391* match 002251 automatic bit(1) unaligned dcl 328 set ref 331* 333 334* 337 353* 355 373* 378 378 match_args 000106 automatic fixed bin(17,0) dcl 49 set ref 134* 150* 337 353 355 match_cards 000163 automatic char(8) array unaligned dcl 58 set ref 133* 150* 357 359 359 364 match_exclude_args parameter fixed bin(17,0) dcl 415 set ref 410 421* 421 422 471 473 match_exclude_cards parameter char(8) array unaligned dcl 414 set ref 410 422 425 425 464 471* 473* match_exclude_name parameter char unaligned dcl 413 set ref 410 425* 432* 443* 455* 467* max_size 000102 automatic fixed bin(17,0) dcl 47 set ref 266* 267 n_fields 17(32) based fixed bin(4,0) level 3 packed unsigned unaligned dcl 1-13 ref 287 345 363 390 nargs 000101 automatic fixed bin(17,0) dcl 47 set ref 116* 140 169 429 438 null builtin function dcl 75 ref 227 232 236 314 318 out 001763 automatic varying char(256) dcl 60 set ref 283* 286* 288* 288* 291* 291* 294* 294* 297* 297* 303 305* part_match 002250 automatic bit(1) unaligned dcl 328 set ref 358* 363 364* 367 385* 390 391* 394 pathname_ 000054 constant entry external dcl 106 ref 245 245 250 250 requote_string_ 000056 constant entry external dcl 107 ref 303 rs based varying char dcl 71 set ref 121* 303* 303 310* 310 rsl 000111 automatic fixed bin(21,0) dcl 51 set ref 116* 121 303 310 rsp 000116 automatic pointer dcl 53 set ref 116* 121 303 303 310 310 rtrim builtin function dcl 75 ref 310 size builtin function dcl 75 ref 267 stype 002147 automatic fixed bin(2,0) dcl 64 set ref 258* substr builtin function dcl 75 ref 197 297 297 348 364 364 391 391 461 terminate_file_ 000060 constant entry external dcl 108 ref 235 317 type_word 17 based structure level 2 dcl 1-13 verify builtin function dcl 75 ref 215 471 word based char(4) level 2 in structure "config_card" dcl 1-13 in procedure "pcd" set ref 286* 334 word based char(4) array level 3 in structure "config_deck" dcl 1-9 in procedure "pcd" set ref 278 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 2-33 EMPTY_FIELD internal static bit(36) initial dcl 1-34 E_ACCESS internal static bit(3) initial unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 M_ACCESS internal static bit(3) initial unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 N_ACCESS internal static bit(3) initial unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 REW_ACCESS internal static bit(3) initial unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS internal static bit(3) initial unaligned dcl 2-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SA_ACCESS internal static bit(3) initial unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 2-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 S_ACCESS internal static bit(3) initial unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 3-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 3-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 3-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 3-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 3-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 3-15 VALID_CARD_WORD_CHARACTERS internal static char(38) initial unaligned dcl 1-31 W_ACCESS internal static bit(3) initial unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 ZERO_CARD_WORD internal static char(4) initial dcl 1-28 terminate_file_switches based structure level 1 packed unaligned dcl 3-4 NAMES DECLARED BY EXPLICIT CONTEXT. exclude_skip 003026 constant label dcl 402 ref 394 match_config_card 002363 constant entry internal dcl 323 ref 280 match_skip 002672 constant label dcl 375 ref 367 pcd 000332 constant entry external dcl 27 pick_up_match_exclude 003041 constant entry internal dcl 410 ref 150 157 print_configuration_deck 000341 constant entry external dcl 27 process 001273 constant label dcl 227 ref 210 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4564 4650 4277 4574 Length 5150 4277 64 263 264 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pcd 1431 external procedure is an external procedure. on unit on line 230 84 on unit match_config_card internal procedure shares stack frame of external procedure pcd. pick_up_match_exclude internal procedure shares stack frame of external procedure pcd. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pcd 000100 argN pcd 000101 nargs pcd 000102 max_size pcd 000103 card_no pcd 000104 field_no pcd 000105 card_args pcd 000106 match_args pcd 000107 exclude_args pcd 000110 argl pcd 000111 rsl pcd 000112 code pcd 000114 argp pcd 000116 rsp pcd 000120 af_sw pcd 000121 card_found pcd 000122 cards pcd 000162 label_output pcd 000163 match_cards pcd 001063 exclude_cards pcd 001763 out pcd 002064 have_pathname pcd 002065 config_dirname pcd 002137 config_ename pcd 002147 stype pcd 002150 bitcnt pcd 002152 error_routine_ pcd 002164 configp pcd 002166 cardp pcd 002170 config_n_cards pcd 002171 config_max_cards pcd 002210 m match_config_card 002211 f match_config_card 002212 k match_config_card 002213 l match_config_card 002214 fields match_config_card 002250 part_match match_config_card 002251 match match_config_card 002252 exclude match_config_card 002302 end_arg pick_up_match_exclude 002303 j pick_up_match_exclude 002304 k pick_up_match_exclude THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ent_var_desc call_ext_out_desc call_ext_out return_mac enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ com_err_ config_deck_parse_$binary_to_ascii cu_$af_return_arg cu_$arg_ptr cv_oct_ expand_pathname_ hcs_$status_mins initiate_file_ ioa_ ioa_$rsnnl pathname_ requote_string_ terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. config_deck$ error_table_$badcall error_table_$badopt error_table_$bigarg error_table_$noarg error_table_$not_act_fnc error_table_$too_many_args error_table_$zero_length_seg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000331 116 000346 117 000362 119 000364 120 000371 121 000373 122 000374 123 000375 125 000400 126 000404 127 000405 129 000406 130 000422 133 000423 134 000512 135 000515 136 000516 140 000517 141 000527 142 000544 144 000546 145 000575 148 000576 150 000604 151 000611 153 000613 155 000614 157 000624 158 000631 160 000633 162 000634 164 000647 167 000661 169 000671 171 000674 173 000720 175 000721 177 000723 179 000747 181 000750 182 000751 183 000766 185 000770 186 001017 188 001020 189 001050 191 001052 192 001103 194 001104 195 001106 197 001107 200 001113 201 001137 204 001140 205 001141 207 001144 209 001176 210 001200 213 001201 215 001210 217 001226 218 001227 220 001231 221 001263 223 001264 225 001271 227 001273 230 001275 232 001311 235 001320 236 001346 238 001351 240 001352 242 001354 243 001411 245 001413 246 001461 248 001462 250 001464 252 001533 254 001534 257 001535 258 001540 259 001554 261 001556 262 001601 266 001602 267 001605 269 001607 273 001611 274 001612 276 001615 278 001622 279 001636 280 001640 282 001645 283 001647 286 001663 287 001713 288 001725 291 001772 294 002034 297 002076 301 002142 303 002144 305 002237 308 002257 310 002261 312 002303 314 002323 317 002331 318 002360 321 002362 323 002363 331 002365 333 002366 334 002377 335 002403 337 002405 340 002415 341 002424 343 002432 345 002446 346 002457 348 002500 350 002513 351 002550 353 002552 355 002555 357 002565 358 002606 359 002607 361 002625 363 002627 364 002643 365 002662 367 002664 371 002666 373 002670 375 002672 378 002674 380 002706 382 002711 384 002721 385 002742 386 002743 388 002761 390 002763 391 002777 392 003016 394 003020 398 003022 400 003024 402 003026 405 003030 410 003041 421 003052 422 003054 424 003060 425 003063 427 003117 429 003120 431 003123 432 003126 433 003156 436 003157 437 003160 438 003161 439 003173 440 003174 441 003212 443 003215 445 003251 447 003252 448 003253 450 003271 451 003273 452 003275 454 003300 455 003303 457 003333 460 003334 461 003335 464 003344 466 003351 467 003354 469 003403 471 003404 473 003514 476 003550 477 003553 478 003605 481 003606 482 003610 ----------------------------------------------------------- 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