COMPILATION LISTING OF SEGMENT ed_installation_parms Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/07/88 1214.7 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /****^ HISTORY COMMENTS: 13* 1) change(87-03-30,Parisek), approve(87-05-01,MCR7690), 14* audit(87-07-15,Beattie), install(87-08-04,MR12.1-1055): 15* Add parameter 64 - vchn_requires_accept. 16* 2) change(87-08-17,Hartogs), approve(88-08-15,MCR7969), 17* audit(87-08-24,GDixon), install(88-08-29,MR12.2-1093): 18* Error handling for -dr fixed for rate_structure_0. (phx14904) 19* 3) change(88-09-19,GDixon), approve(88-09-20,MCR8012), 20* audit(88-10-06,Farley), install(88-10-07,MR12.2-1142): 21* Fix error in initiating the installation_parms (rate_structure_0) segment 22* introduced by an earlier change (error_table_$segknown is being reported 23* as an error, rather than being ignored). 24* END HISTORY COMMENTS */ 25 26 /* format: style4 */ 27 ed_installation_parms: 28 procedure; 29 30 /* ED_INSTALLATION_PARMS - program to edit the "installation_parms" segment 31* which gives the prices for all system resources, and various other 32* system_wide accounting-type constants. 33* 34* Modified 740805 by PG for level & category names. 35* Modified 741120 by LJS for syserr log copying threshold. 36* Modified Aug 1977 by T. Casey for disk and tape device price setting 37* Modified May 1978 by T. Casey to add parameters 21, ..., 32: resource prices, rcp_init_flags, and 38* . various times and counters used in answering service operation. 39* Modified August 1978 by M. R. Jordan to fix bug in set_rcp_init_flag. 40* Modified November 1978 by T. Casey to add parameters 33,...47 for MR7.0 absentee changes. 41* Modified March 1979 by C. D. Tavares to change rcp_init_flags and handling 42* Modified July 1979 by J. N. R. Barnecut for MR8.0 to support multiple rate structures. (UNCA) 43* Modified May 1980 by J. N. R. Barnecut to ensure devices and resources are kept in same positions. (UNCA) 44* Modified 22 September 1980 by G. Palter to add parameter 48 -- abs_default_queue 45* Modified 6 April 1981 by E. N. Kittlitz to add parameters 49,50 -- cwe_count, cwe_time 46* Modified 3 June 1981 by E. N. Kittlitz for UNCA rate structures, re-organization. 47* . Added parameters 51-55: rates, devices, resources, rate_structure_name, all_structures. 48* . mr9_default establishes version, converts abs cpu limits from fixed bin (17) to fixed bin (35). 49* . Program extensively re-structured, although many sub-tasks stayed the same. 50* Modified 22 February 1982 by E. N. Kittlitz for bug fixes. 51* Modified May 1982 by E. N. Kittlitz for retype prices change. 52* Modified 1984-06-19 BIM for strict_trusted_path, remove ARPA 53* Modified 1984-12, BIM: pdir quota values, operator login values. 54* Modified 1985-01-09, BIM: message coordinator access control. 55* Modified 1985-03-01 by E. Swenson for password flags. 56**/ 57 58 /* automatic */ 59 60 dcl all_sw bit (1) aligned; 61 dcl all_abs_queue_sw bit (1) aligned; 62 dcl all_rates_sw bit (1) aligned; 63 dcl all_structures_sw bit (1) aligned; 64 dcl argp ptr; 65 dcl arg char (argl) based (argp); 66 dcl argl fixed bin (21); 67 dcl argno fixed bin; 68 dcl change_request bit (1) aligned; 69 dcl char32 char (32); 70 dcl char48 char (48); 71 dcl char8 char (8); 72 dcl comm char (32); 73 dcl copy_ip (ipl) fixed bin based; 74 dcl critical_op bit (1) aligned; 75 dcl cur_rs_ptr ptr; 76 dcl did_something bit (1) aligned; 77 dcl dn char (168); 78 dcl dnvar char (168) varying; 79 dcl ec fixed bin (35); 80 dcl edit_rs bit (1) aligned; 81 dcl en char (32); 82 dcl i fixed bin; 83 dcl ip ptr defined (rs_ptrs (0)); /* working copy of installation_parms */ 84 dcl ip1 ptr defined (rs_ptrs1 (0)); 85 dcl ipl fixed bin; 86 dcl j fixed bin; 87 dcl k fixed bin; 88 dcl keywx fixed bin; 89 dcl nargs fixed bin; 90 dcl path char (168) init (""); 91 dcl print_comm char (32); 92 dcl rs_ptrs (0:9) ptr; /* rate structure pointers */ 93 dcl rs_ptrs1 (0:9) ptr; 94 dcl rsp ptr; 95 dcl rsp1 ptr; 96 dcl selected_rs_ptr ptr; 97 dcl suppress_nl bit (1) aligned; 98 99 dcl (cleanup, program_interrupt) condition; 100 101 /* internal static constants */ 102 103 dcl NOLIMIT fixed bin (35) int static options (constant) init (-999999); 104 dcl MILLION fixed bin (35) int static init (1000000); 105 dcl SECONDS_PER_MONTH float bin (27) init (30 * 24 * 3600) int static options (constant); 106 dcl ADD fixed bin init (1) static options (constant); 107 dcl CHANGE fixed bin init (2) static options (constant); 108 dcl PRINT fixed bin init (3) static options (constant); 109 dcl RETYPE fixed bin init (4) static options (constant); 110 dcl NO_SPECIAL_DEVICES bit (1) aligned init ("0"b) static options (constant); 111 dcl SPECIAL_DEVICES_OK bit (1) aligned init ("1"b) static options (constant); 112 dcl NOT_RS_ID fixed bin init (-2) static options (constant); 113 dcl ID_NOT_FOUND fixed bin init (-1) static options (constant); 114 dcl ALL_RS bit (1) aligned init ("1"b) static options (constant); 115 dcl THIS_RS bit (1) aligned init ("0"b) static options (constant); 116 dcl SET_HI bit (1) aligned init ("1"b) static options (constant); 117 dcl NO_SET_HI bit (1) aligned init ("0"b) static options (constant); 118 dcl COMPLAIN bit (1) aligned init ("1"b) static options (constant); 119 120 dcl daynam char (21) int static options (constant) init ("MonTueWedThuFriSatSun"); 121 dcl me char (24) int static options (constant) init ("ed_installation_parms"); 122 dcl ip_rings (3) fixed bin (3) init (4, 5, 5) int static options (constant); 123 124 /* internal static */ 125 126 dcl told_user bit (1) aligned internal static init ("0"b); 127 128 /* based structures */ 129 130 dcl based_integer fixed bin based; 131 132 /* builtins */ 133 134 declare (addr, before, bit, char, currentsize, dim, dimension, divide, fixed, hbound, index, lbound, length, ltrim, bin, 135 null, ptr, rel, reverse, rtrim, string, substr, verify, unspec) builtin; 136 137 /* external variables */ 138 139 dcl error_table_$badopt fixed bin (35) ext static; 140 dcl error_table_$inconsistent ext fixed bin (35); 141 dcl error_table_$incorrect_access fixed bin (35) ext static; 142 dcl error_table_$segknown fixed bin (35) ext static; 143 dcl error_table_$segnamedup fixed bin (35) ext static; 144 145 /* entries */ 146 147 dcl absolute_pathname_ entry (char (*), char (*), fixed bin (35)); 148 dcl ask_ entry options (variable); 149 dcl ask_$ask_clr entry (); 150 dcl ask_$ask_flo entry options (variable); 151 dcl ask_$ask_int entry options (variable); 152 dcl ask_$ask_line entry options (variable); 153 dcl ask_$ask_n entry options (variable); 154 dcl ask_$ask_yn entry options (variable); 155 dcl com_err_ entry options (variable); 156 dcl cu_$arg_count entry (fixed bin); 157 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 158 dcl cv_$mwvf entry (float bin) returns (char (15)); 159 dcl cv_dec_ entry (char (*)) returns (fixed bin (35)); 160 dcl cv_float_ entry (char (*), fixed bin (35), float bin (27)); 161 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 162 163 dcl hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 164 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 165 dcl hcs_$delentry_seg entry (ptr, fixed bin (35)); 166 dcl hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)); 167 dcl hcs_$set_ring_brackets entry (char (*), char (*), (3) fixed bin (3), fixed bin (35)); 168 dcl hcs_$set_safety_sw_seg entry (ptr, bit (1), fixed bin (35)); 169 dcl hcs_$truncate_seg entry (ptr, fixed bin (19), fixed bin (35)); 170 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), 171 fixed binary (35)); 172 dcl ioa_ entry options (variable); 173 dcl nd_handler_ entry (char (*), char (*), char (*), fixed bin (35)); 174 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 175 176 /* The following two static arrays, keyw and keyn, map the keywords and their 177* (zero or more) abbreviations into key numbers that map into the label arrays. 178* These two arrays must be kept in sync if keywords or abbreviations are added, 179* and the values in the keyn array must always be in increasing order. 180* Notice that each array is the other one with its value and comment columns interchanged. 181* Another array valid_rs_id must also be updated when adding an identifier 182* which may be used when editing a rate structure. 183* There are also arrays sequence_ALL and sequence_RATES which may require updating 184* when adding a new identifier. 185**/ 186 187 dcl keyw (119) char (32) int static options (constant) init ("all", 188 /* 1 */ 189 "installation_id", /* 2 */ 190 "inst", /* 2 */ 191 "shift_table", /* 3 */ 192 "shif", /* 3 */ 193 "prices", /* 4 */ 194 "titles", /* 5 */ 195 "level_names", /* 6 */ 196 "leve", /* 6 */ 197 "inactive_time", /* 7 */ 198 "inac", /* 7 */ 199 "warning_time", /* 8 */ 200 "warn", /* 8 */ 201 "login_time", /* 9 */ 202 "logi", /* 9 */ 203 "tries", /* 10 */ 204 "update_time", /* 11 */ 205 "upda", /* 11 */ 206 "device_prices", /* 12 */ 207 "devprice", /* 12 */ 208 "devp", /* 12 */ 209 "config_table", /* 13 */ 210 "conf", /* 13 */ 211 "queue_prices", /* 14 */ 212 "abs_queue_parameters", /* 15 */ 213 "abs_", /* 15 */ 214 "category_names", /* 16 */ 215 "cate", /* 16 */ 216 "access_ceiling", /* 17 */ 217 "acce", /* 17 */ 218 "log_parameters", /* 18 */ 219 "log_", /* 18 */ 220 "trusted_path_login", /* 19 */ 221 "device_names", /* 20 */ 222 "devname", /* 20 */ 223 "devn", /* 20 */ 224 "resource_prices", /* 21 */ 225 "rscprice", /* 21 */ 226 "rscp", /* 21 */ 227 "resource_names", /* 22 */ 228 "rscname", /* 22 */ 229 "rscn", /* 22 */ 230 "resource_wait_time", /* 23 */ 231 "rsctime", /* 23 */ 232 "rsct", /* 23 */ 233 "fpe_time", /* 24 */ 234 "fpetime", /* 24 */ 235 "fpet", /* 24 */ 236 "fpe_count", /* 25 */ 237 "fpecount", /* 25 */ 238 "fpec", /* 25 */ 239 "trm_real_time", /* 26 */ 240 "trmrealtime", /* 26 */ 241 "trmr", /* 26 */ 242 "trm_cpu_time", /* 27 */ 243 "trmcputime", /* 27 */ 244 "trmc", /* 27 */ 245 "unload_on_detach", /* 28 */ 246 "unlo", /* 28 */ 247 "authentication_level", /* 29 */ 248 "auth", /* 29 */ 249 "default_pdir_seg_quota", /* 30 */ 250 "df_pdsq", /* 30 */ 251 "rsc_mgmt_enabled", /* 31 */ 252 "rsc_", /* 31 */ 253 "auto_registration", /* 32 */ 254 "auto", /* 32 */ 255 "enable_ss_volume_mount", /* 33 */ 256 "foreground_queue_position", /* 34 */ 257 "fore", /* 34 */ 258 "idle_time_constant", /* 35 */ 259 "idle", /* 35 */ 260 "sus_cpu_time", /* 36 */ 261 "susc", /* 36 */ 262 "sus_real_time", /* 37 */ 263 "susr", /* 37 */ 264 "max_abs", /* 38 */ 265 "min_abs", /* 39 */ 266 "pct_abs", /* 40 */ 267 "max_qres", /* 41 */ 268 "min_qres", /* 42 */ 269 "pct_qres", /* 43 */ 270 "abs_cpu_max_limit", /* 44 */ 271 "abscpumx", /* 44 */ 272 "abs_timax", /* 45 */ 273 "abs_cpu_default_limit", /* 46 */ 274 "abscpudf", /* 46 */ 275 "foreground_cpu_default_limit", /* 47 */ 276 "fgcpudf", /* 47 */ 277 "abs_default_queue", /* 48 */ 278 "absdfq", /* 48 */ 279 "cwe_time", /* 49 */ 280 "cwet", /* 49 */ 281 "cwe_count", /* 50 */ 282 "cwec", /* 50 */ 283 "rates", /* 51 */ 284 "devices", /* 52 */ 285 "device", /* 52 */ 286 "resources", /* 53 */ 287 "resource", /* 53 */ 288 "rate_structure_names", /* 54 */ 289 "rate_structure_name", /* 54 */ 290 "rsn", /* 54 */ 291 "all_structures", /* 55 */ 292 "default_pdir_dir_quota", /* 56 */ 293 "df_pddq", /* 56 */ 294 "require_operator_login", /* 57 */ 295 "operator_inactive_time", /* 58 */ 296 "op_inac", /* 58 */ 297 "validate_daemon_commands", /* 59 */ 298 "password_min_length", /* 60 */ 299 "pwml", /* 60 */ 300 "password_gpw_length", /* 61 */ 301 "pwgl", /* 61 */ 302 "password_change_interval", /* 62 */ 303 "pwci", /* 62 */ 304 "password_expiration_interval", /* 63 */ 305 "pwei", /* 63 */ 306 "vchn_requires_accept" /* 64 */ 307 ); 308 309 310 311 dcl keyn (119) fixed bin int static options (constant) init (1, 312 /* all */ 313 2, /* installation_id */ 314 2, /* inst */ 315 3, /* shift_table */ 316 3, /* shif */ 317 4, /* prices */ 318 5, /* titles */ 319 6, /* level_names */ 320 6, /* leve */ 321 7, /* inactive_time */ 322 7, /* inac */ 323 8, /* warning_time */ 324 8, /* warn */ 325 9, /* login_time */ 326 9, /* logi */ 327 10, /* tries */ 328 11, /* update_time */ 329 11, /* upda */ 330 12, /* device_prices */ 331 12, /* devprice */ 332 12, /* devp */ 333 13, /* config_table */ 334 13, /* conf */ 335 14, /* queue_prices */ 336 15, /* abs_queue_parameters */ 337 15, /* abs_ */ 338 16, /* category_names */ 339 16, /* cate */ 340 17, /* access_ceiling */ 341 17, /* acce */ 342 18, /* log_parameters */ 343 18, /* log_ */ 344 19, /* trusted_path_login */ 345 20, /* device_names */ 346 20, /* devname */ 347 20, /* devn */ 348 21, /* resource_prices */ 349 21, /* rscprice */ 350 21, /* rscp */ 351 22, /* resource_names */ 352 22, /* rscname */ 353 22, /* rscn */ 354 23, /* resource_wait_time */ 355 23, /* rsctime */ 356 23, /* rsct */ 357 24, /* fpe_time */ 358 24, /* fpetime */ 359 24, /* fpet */ 360 25, /* fpe_count */ 361 25, /* fpecount */ 362 25, /* fpec */ 363 26, /* trm_real_time */ 364 26, /* trmrealtime */ 365 26, /* trmr */ 366 27, /* trm_cpu_time */ 367 27, /* trmcputime */ 368 27, /* trmc */ 369 28, /* unload_on_detach */ 370 28, /* unlo */ 371 29, /* authentication_level */ 372 29, /* auth */ 373 30, /* default_pdir_quota */ 374 30, /* df_pdsq */ 375 31, /* rsc_mgmt_enabled */ 376 31, /* rsc_ */ 377 32, /* auto_registration */ 378 32, /* auto */ 379 33, /* enable_ss_volume_mount */ 380 34, /* foreground_queue_position */ 381 34, /* fore */ 382 35, /* idle_time_constant */ 383 35, /* idle */ 384 36, /* sus_cpu_time */ 385 36, /* susc */ 386 37, /* sus_real_time */ 387 37, /* susr */ 388 38, /* max_abs */ 389 39, /* min_abs */ 390 40, /* pct_abs */ 391 41, /* max_qres */ 392 42, /* min_qres */ 393 43, /* pct_qres */ 394 44, /* abs_cpu_max_limit */ 395 44, /* abscpumx */ 396 45, /* abs_timax */ 397 46, /* abs_cpu_default_limit */ 398 46, /* abscpudf */ 399 47, /* foreground_cpu_default_limit */ 400 47, /* fgcpudf */ 401 48, /* abs_default_queue */ 402 48, /* absdfq */ 403 49, /* cwe_time */ 404 49, /* cwet */ 405 50, /* cwe_count */ 406 50, /* cwec */ 407 51, /* rates */ 408 52, /* devices */ 409 52, /* device */ 410 53, /* resources */ 411 53, /* resource */ 412 54, /* rate_structure_names */ 413 54, /* rate_structure_name */ 414 54, /* rsn */ 415 55, /* all_structures */ 416 56, /* default_pdir_dir_quota */ 417 56, /* df_pddq */ 418 57, /* require_operator_login */ 419 58, /* operator_inactive_time */ 420 58, /* op_inac */ 421 59, /* validate_daemon_commands */ 422 60, /* password_min_length */ 423 60, /* pwml */ 424 61, /* password_gpw_length */ 425 61, /* psgl */ 426 62, /* password_change_interval */ 427 62, /* pwci */ 428 63, /* password_expiration_interval */ 429 63, /* pwei */ 430 64 /* vchn_requires_accept */ 431 ); 432 433 434 /* valid_for_rs contains the indices of all change identifiers which may be 435* used while editing a rate_structure. They must be in ascending order. 436* A flag of 999 must be the last element. */ 437 438 dcl valid_for_rs (13) fixed bin static options (constant) init (1, 4, 12, 14, 20, 21, 22, 51, 52, 53, 54, 55, 999); 439 440 /* sequence_ALL defines the order in which individual requests will be made 441* if the 'all' request is issued. */ 442 443 dcl sequence_ALL (54) fixed bin static options (constant) 444 init (1, 2, 5, 7, 8, 9, 10, 49, 50, 11, 4, 14, 52, 53, 3, 6, 445 16, 17, 18, 19, 57, 64, 58, 59, 60, 61, 62, 63, 446 13, 23, 30, 56, 24, 25, 26, 27, 37, 36, 28, 447 29, 31, 32, 33, 35, 34, 47, 48, 15, 38, 39, 40, 41, 42, 43); 448 449 /* sequence_RATES controls the order in which operations are performed when the 450* identifier 'rates' (or 'all' when editing a rate_structure) is used. 451* It contains only indices of rate_structure identifiers, in the same order 452* as sequence_ALL. */ 453 454 dcl sequence_RATES (5) fixed bin static options (constant) init (51, 4, 14, 12, 21); 455 456 /* sequence_ABS_Q controls the abs_queue_parameters identifier */ 457 458 dcl sequence_ABS_Q (4) fixed bin static options (constant) init (15, 44, 45, 46); 459 460 /* 461* DIVERS POINTS 462* 463* This program supports the editing of installation_parms and up to 464* nine additional rate_structures. The accounting system is designed to 465* charge for resources based upon pricing information contained 466* in the rate_structure to which a user or project is assigned. 467* The default pricing is contained in installation_parms, and is considered 468* to be rate_structure 0. If a site defines other rate_structures, 469* they are numbered 1 through 9. 470* 471* The rate_structure definition is the same as installation_parms. 472* However, certain fields are designated as invalid in a rate_structure. 473* Additional rate_structures exist in segments names rate_structure_N. 474* When accounting, a routine accesses all pricing information by using the 475* rate_structure segment appropriate to the user/project being charged. 476* 477* Rate_structure names appear in installation_parms.rate_structures. 478* There are installation_parms.nrates structures (<= 9), where 479* structure 0 is "default" (i.e. installation_parms). 480* 481* This program is designed to allow the user to alter the fields of 482* one rate_structure at a time. The user indicates which rate_structure 483* is under consideration via the "rate_structure" command. In general, 484* all subsequent editing requests act upon the last-specified rate_structure. 485* 486* Terminology: installation_parms is rate_structure 0. Its name is initially 487* "default". Within this program, the notion of editing a rate_structure is 488* typically defined as editing a rate_structure other than installation_parms. 489* There are a number of operations on rate_structure field which can 490* only be performed while editing the default rate_structure (i.e. 491* installation_parms). In general, any operation which affects more than 492* one rate_structure (such as renaming or retyping device information) 493* can only be performed while editing installation_parms. 494* 495* WITHIN this program: the requests of principal interest are: add, change, 496* print and retype. These requests are dispatched to the procedure do_any. 497* The do_any procedure does first-level checks to determine if a valid 498* field identifier has been specified. It also determines whether or 499* not the field is "defined" in non-default rate_structures. 500* An identifier is valid for a rate_structure only if its index appears in 501* the array valid_for_rs. (This technique is used to avoid having to add 502* a control for every new identifier (most of which will be non-rate_structure). 503* 504* The do_any procedure calls the appropriate processor for the request given. 505* If there is any conflict, an individual processor is responsible for 506* detecting an invalid use of a non-rate_structure field. 507* There are several field identifiers which correspond to a group of 508* field identifiers. Examples are "all", "abs_queue_parameters" and "rates". 509* In these cases, do_any will make a number of calls to the designated 510* processor. The identifier "all_structures" causes do_any to loop 511* over all rate_structures (including installation_parms). 512* 513* THERE are a number of internal procedures with entries. Said entries 514* have names of the form int_proc$$entry_name. 515**/ 516 517 518 /* INITIALIZATION */ 519 520 call ask_$ask_clr (); /* make sure nothing in ask_ buffer */ 521 ip = null; /* initialize pointers */ 522 ip1 = null; 523 rs_ptrs (*), rs_ptrs1 (*) = null; 524 edit_rs = "0"b; /* and switches */ 525 selected_rs_ptr, cur_rs_ptr = null; 526 critical_op = "0"b; 527 528 on cleanup call clean_up; 529 530 dn = ""; 531 532 call cu_$arg_count (nargs); /* look for control arguments */ 533 if nargs > 0 then 534 do argno = 1 to nargs; 535 call cu_$arg_ptr (argno, argp, argl, ec); /* next, please */ 536 if ec ^= 0 then do; 537 call com_err_ (ec, me); /* horrors! */ 538 go to exit; 539 end; 540 else if arg = "-directory" | arg = "-dr" then do; 541 /* containing directory? */ 542 if path ^= "" then /* already have a path? */ 543 go to er2; /* inconsitent... */ 544 else do; 545 argno = argno + 1; /* go for directory name */ 546 call cu_$arg_ptr (argno, argp, argl, ec); 547 if ec ^= 0 then do; /* user's fingers wore out */ 548 call com_err_ (ec, me); /* display our distress */ 549 go to exit; /* clean up */ 550 end; 551 else do; /* where to go */ 552 call absolute_pathname_ (arg, dn, ec); 553 if ec ^= 0 then do; 554 call com_err_ (ec, me, "^a", arg); 555 go to exit; 556 end; 557 en = "installation_parms"; 558 end; 559 end; 560 end; 561 else if substr (arg, 1, 1) = "-" then do; /* look like a control arg? */ 562 call com_err_ (error_table_$badopt, me, "^a", arg); 563 /* well, it isn't */ 564 go to exit; 565 end; 566 else if dn ^= "" then do; /* pathname? */ 567 er2: 568 call com_err_ (error_table_$inconsistent, me, 569 "pathname and -directory arguments may not both be specified."); 570 go to exit; 571 end; 572 else do; /* pathname, and it makes sense */ 573 path = arg; 574 call expand_pathname_ (path, dn, en, ec); 575 if ec ^= 0 then do; 576 call com_err_ (ec, me, "^a", path); 577 go to exit; 578 end; 579 end; 580 end; 581 582 else do; /* default path */ 583 path = "installation_parms"; 584 call expand_pathname_ (path, dn, en, ec); 585 if ec ^= 0 then do; 586 call com_err_ (ec, me, "^a", path); 587 go to exit; 588 end; 589 end; 590 591 if dn = ">" then 592 dnvar = ">"; 593 else dnvar = rtrim (dn) || ">"; 594 595 596 /* Find all rate structures. 597* NOTE: When i is set to 0 (the first trip), we get the value of 598* rs_ptrs (0), i.e. also the value of the pointer "ip". Then, 599* we have an installation_parms structure 'defined', and can 600* loop from 1 - installation_parms.nrates. */ 601 602 do i = 0, 1 repeat i + 1 while (i <= installation_parms.nrates); 603 if i = 0 then do; 604 en = "installation_parms"; /* make or initiate installation_parms */ 605 call hcs_$make_seg (dn, en, "", RW_ACCESS_BIN, rsp1, ec); 606 if ec = 0 then do; /* segment was just created */ 607 rsp1 -> installation_parms.version = installation_parms_version_2; 608 create_addname: /* add the name rate_structure_0 to installation_parms */ 609 call hcs_$chname_file (dn, "installation_parms", "", "rate_structure_0", ec); 610 if ec ^= 0 & ec ^= error_table_$segnamedup & ec ^= error_table_$incorrect_access then do; 611 /* not on installation_parms? */ 612 call nd_handler_ (me, dn, "rate_structure_0", ec); 613 /* try to get the name freed */ 614 if ec = 0 then go to create_addname; 615 /* try again */ 616 end; 617 call hcs_$set_ring_brackets (dn, en, ip_rings, ec); 618 /* so try to set rings */ 619 if ec ^= 0 then call com_err_ (ec, me, "Setting ring brackets of ^a.", en); 620 end; /* set the version, so we don't 'convert' later */ 621 else if ec ^= error_table_$segknown then do; 622 call com_err_ (ec, me, "rate_structure_^d ^a.", i, dnvar || rtrim (en)); 623 go to exit; 624 end; 625 end; 626 else do; /* if installation_parms says there an RS */ 627 en = "rate_structure_" || ltrim (char (i)); 628 /* then the RS segment MUST exist */ 629 call initiate_file_ (dn, en, R_ACCESS, rsp1, (0), ec); 630 end; 631 if rsp1 = null then do; /* something go wrong? */ 632 call write_error (ec, i, dnvar || rtrim (en)); 633 go to exit; 634 end; 635 call hcs_$make_seg ("", "", "", RW_ACCESS_BIN, rsp, ec); 636 /* now get temporaries */ 637 if rsp = null then do; 638 call write_error (ec, i, "temporary segment"); 639 go to exit; 640 end; 641 ipl = currentsize (rsp1 -> installation_parms); 642 /* copy contents to temp segment */ 643 unspec (rsp -> copy_ip) = unspec (rsp1 -> copy_ip); 644 rs_ptrs (i) = rsp; 645 rs_ptrs1 (i) = rsp1; 646 if i = 0 then do; /* some gullibility checks */ 647 selected_rs_ptr, cur_rs_ptr = ip; 648 if installation_parms.version ^= installation_parms_version_2 then do; 649 if installation_parms.version ^= installation_parms_version_1 then do; 650 call ioa_ ("The installation_parms segment is either damaged or a pre-MR9.0 version.^/If it is damaged, recover it from backup. If it is pre-MR9.0, MR10.2 or earlier must be used to convert it."); 651 go to exit; 652 end; 653 else do; 654 call ioa_ ("Converting installation parms to MR11 format."); 655 installation_parms.version = installation_parms_version_2; 656 657 installation_parms.trusted_path_login = "0"b; 658 installation_parms.require_operator_login = "0"b; 659 installation_parms.vchn_requires_accept = "0"b; 660 installation_parms.operator_inactive_time = installation_parms.inactive_time; 661 installation_parms.syserr_log_copy_threshold = 0; 662 installation_parms.validate_daemon_commands = "0"b; 663 installation_parms.password_min_length = 0; /* no minimum */ 664 installation_parms.password_gpw_length = 6; 665 installation_parms.password_change_interval = 0; /* no change interval */ 666 installation_parms.password_expiration_interval = 0; /* no expiration */ 667 call set_pdir_quota_defaults; /* knows about communications */ 668 end; 669 end; 670 if installation_parms.nrates < 0 | installation_parms.nrates > hbound (rs_ptrs, 1) then do; 671 call com_err_ (0, me, 672 "Invalid number of rate_structures at offset ^o (8): ^d. Forcing value to 0.", 673 bin (rel (addr (installation_parms.nrates)), 18), installation_parms.nrates); 674 installation_parms.nrates = 0; 675 end; 676 end; 677 end; 678 679 680 /* Handler for PROGRAM_INTERRUPT condition 681* If a 'critical' operation is in progress, we ask the user whether or 682* not we should really punt. If not critical, or user says it's OK, 683* we non-local goto back to the main loop. Otherwise, restart. */ 684 685 on program_interrupt 686 begin; 687 dcl yn char (4); 688 if critical_op then do; /* HOT? */ 689 call ioa_ ("Terminating the current operation may leave tables in an inconsistent state."); 690 call ask_$ask_yn ("Do you want to terminate? (""no"" will restart the operation) ", yn); 691 if yn = "yes" then go to main1; /* we warned you */ 692 end; 693 else go to main1; /* safe to zap, so do it */ 694 end; 695 696 697 698 /* MAIN REQUEST LOOP */ 699 700 main1: 701 call ask_$ask_clr (); 702 main: 703 if ^told_user then do; /* Should we give instructions? */ 704 call ioa_ ("Hit QUIT and use ""program_interrupt"" to return this request loop."); 705 told_user = "1"b; /* never again in this process */ 706 end; 707 708 cur_rs_ptr = selected_rs_ptr; /* make sure we're using the proper rate_structure */ 709 edit_rs = (cur_rs_ptr ^= ip); /* editing a rate_structure? */ 710 critical_op = "0"b; 711 all_sw = "0"b; /* OFF until: all, all_structures */ 712 all_abs_queue_sw = "0"b; /* OFF until: all, all_structures, abs_queue_parameters */ 713 all_rates_sw = "0"b; /* OFF until: all, all_structures, rates */ 714 all_structures_sw = "0"b; /* OFF until: all_structures */ 715 change_request = "0"b; /* OFF unless 'change' command */ 716 call ask_ ("type ", comm); /* get command */ 717 if comm = "q" then do; 718 exit: 719 call clean_up; 720 return; 721 end; 722 else if comm = "w" then do; /* write? */ 723 call ask_$ask_n (char8, j); /* write -force? */ 724 if j ^= 0 then 725 if ^(char8 = "-force" | char8 = "-fc") then j = 0; 726 do i = installation_parms.nrates to 0 by -1; /* write all rate_structures */ 727 /* and then installation_parms */ 728 ipl = currentsize (rs_ptrs (i) -> rate_structure); 729 /* HOW big was it? */ 730 call hcs_$truncate_seg (rs_ptrs1 (i), (ipl), ec); 731 /* tidy up end */ 732 if ec ^= 0 then do; /* nice way to detect no-write */ 733 call write_error (ec, i, ""); /* let user know */ 734 if j ^= 0 then go to main1; /* if not -force */ 735 end; 736 unspec (rs_ptrs1 (i) -> copy_ip) = unspec (rs_ptrs (i) -> copy_ip); 737 /* copy to real segment */ 738 call hcs_$set_bc_seg (rs_ptrs1 (i), 36 * ipl, ec); 739 /* show 'em how big it is */ 740 if ec ^= 0 then do; /* any little problems? */ 741 call write_error (ec, i, ""); 742 if j = 0 then go to main1; /* give up, or -force ? */ 743 end; 744 call hcs_$set_safety_sw_seg (rs_ptrs1 (i), "1"b, ec); 745 if ec ^= 0 then do; /* ok or not */ 746 call write_error (ec, i, ""); 747 if j = 0 then go to main1; /* not -force? */ 748 end; 749 end; 750 end; 751 else if comm = "a" | comm = "add" then call do_any (ADD); 752 else if comm = "c" | comm = "change" then call do_any (CHANGE); 753 else if comm = "p" | comm = "pr" | comm = "print" then call do_any (PRINT); 754 else if comm = "r" | comm = "retype" then call do_any (RETYPE); 755 else if comm = "default" then go to default; /* defaults of some kind */ 756 else if comm = "v" | comm = "verify" then call verify_structures; 757 else if comm = "h" | comm = "help" then do; /* help of some kind */ 758 call ioa_ ("Requests: change ID, print ID, retype ID, add ID, w, q"); 759 /* basic requests */ 760 call ioa_ ("help {-long}, default, mrXX_default, rate_structure RSN, copy, verify"); 761 if edit_rs then call ioa_ ("Use: ""rate_structure ."" to edit the ""installation_parms"" segment."); 762 call ioa_ (" Valid ids: all"); /* special case first */ 763 call ask_$ask_n (char32, k); /* user wants long output? */ 764 if k ^= 0 & (char32 = "long" | char32 = "-long" | char32 = "-lg") then 765 k = 1; /* long, it is */ 766 else k = 0; /* 2 to 1 user types it later... */ 767 j = 1; 768 do i = 2 to hbound (keyw, 1); /* print all keywords */ 769 do while (keyn (i) > valid_for_rs (j) & j < hbound (valid_for_rs, 1)); 770 j = j + 1; /* next valid RS id */ 771 end; 772 if ^edit_rs | keyn (i) = valid_for_rs (j) then 773 /* not RS, or OK for RS */ 774 if k ^= 0 | keyn (i) ^= keyn (i - 1) then 775 /* not same 'ID', or -long */ 776 call ioa_ ("^13x^[^2x^]^a", (keyn (i) = keyn (i - 1)), keyw (i)); 777 /* with short forms indented */ 778 end; 779 go to main1; 780 end; 781 else if comm = "rates" | comm = "rate_structure" then do; 782 call ask_$ask_n (char32, i); /* trying to go somewhere? */ 783 if i = 0 then /* no - just lost */ 784 call ioa_ ("Editing rate_structure ""^a"".", ptr_rs_name (cur_rs_ptr)); 785 else do; 786 call ask_ ("", char32); /* pick it off the line */ 787 i = rstab$$defined (char32, COMPLAIN); /* does it exist? */ 788 if i < 0 then go to main1; /* oh my, no it doesn't */ 789 selected_rs_ptr = rs_ptrs (i); /* all works out at label main */ 790 end; 791 end; 792 else if comm = "copy" then go to copy_rs; /* from 1 RS to another */ 793 else do; 794 call ioa_ ("Illegal command ""^a"". Type help for instructions.", comm); 795 go to main1; 796 end; 797 798 go to main; /* beg for more */ 799 800 801 /* DEFAULT HANDLING for INSTALLATION_PARMS */ 802 803 default: 804 if edit_rs then go to default_rs; 805 806 /* will this change device table or resource table? VERY dangerous */ 807 808 if installation_parms.nrscp > 0 | installation_parms.ndevices > hbound (dev_id, 1) 809 | installation_parms.version < 0 | installation_parms.version > installation_parms_version_1 810 | installation_parms.version = 0 & ptr (ip, 1076) -> based_integer > 0 then do; 811 call ioa_ ("This operation may make other system tables invalid."); 812 call ask_$ask_yn ("Do you want to proceed? ", char8); 813 if char8 ^= "yes" then go to main1; 814 end; 815 installation_parms.installation_id = "Installation and location"; 816 installation_parms.company = "Company Name"; 817 installation_parms.department = "Department Name"; 818 installation_parms.companyds = "C o m p a n y N a m e"; 819 installation_parms.departmentds = "D e p a r t m e n t"; 820 call set_std_shifttab; 821 do i = 0 to 7; 822 rate_structure.cpu_price (i) = 240e0; 823 rate_structure.log_base_price (i) = 1.25e0; 824 rate_structure.io_ops_price (i) = 0e0; 825 rate_structure.core_price (i) = 15e0; 826 end; 827 rate_structure.ndevices = hbound (dev_id, 1); /* define those devices for which charging is built in */ 828 do i = 1 to 16; 829 if i <= rate_structure.ndevices then 830 rate_structure.device_id (i) = dev_id (i); 831 else rate_structure.device_id (i) = "dev" || ltrim (char (i)); 832 /* fill in non-garbage for undefined ones */ 833 do j = 0 to 7; 834 rate_structure.device_price (i, j) = 1e0; 835 /* initialize for all shifts */ 836 end; 837 end; 838 installation_parms.default_pdir_dir_quota, 839 installation_parms.default_pdir_seg_quota = 1000; 840 installation_parms.operator_inactive_time, 841 installation_parms.inactive_time = 3600; 842 installation_parms.warning_time = 300; 843 installation_parms.login_time = 360; 844 installation_parms.acct_update = 900; 845 installation_parms.login_tries = 6; 846 rate_structure.disk_price = .19290120e-6; 847 rate_structure.registration_price = 0e0; 848 rate_structure.dolsign = "$"; 849 do i = 1 to 4; 850 rate_structure.abs_cpu_price (i) = 200e0; 851 rate_structure.abs_mem_price (i) = 15e0; 852 rate_structure.iod_rec_price (i) = 1.80e0; 853 installation_parms.abs_timax (i) = 16000000; 854 installation_parms.abs_cpu_default_limit (i) = 1200; 855 /* 1200 seconds = 20 minutes */ 856 end; 857 858 do i = 1 to hbound (installation_parms.level_names (*), 1); 859 installation_parms.level_names (i) = "level_" || ltrim (char (i)); 860 installation_parms.short_level_names (i) = "l" || ltrim (char (i)); 861 /* man-or-boy common sub-expression test */ 862 end; 863 864 installation_parms.level_names (0) = ""; /* level zero is blank */ 865 installation_parms.short_level_names (0) = ""; 866 867 do i = lbound (installation_parms.category_names (*), 1) to hbound (installation_parms.category_names (*), 1); 868 installation_parms.category_names (i) = "category_" || ltrim (char (i)); 869 installation_parms.short_category_names (i) = "c" || ltrim (char (i)); 870 end; 871 872 installation_parms.access_authorization_ceiling = ""b; 873 /* Level 0, no categories */ 874 875 installation_parms.ncon = 1; 876 installation_parms.cpu (1) = 8; 877 installation_parms.shift (1) = 7; 878 installation_parms.x1 (1) = 0; 879 installation_parms.kmem (1) = 16384; 880 installation_parms.kbulk (1) = 16384; 881 installation_parms.x2 (1) = 0; 882 installation_parms.maxa (1) = 3; 883 installation_parms.maxq (1) = 3; 884 installation_parms.maxu_base (1) = 900; 885 installation_parms.response_high (1) = 300; 886 installation_parms.response_low (1) = 100; 887 installation_parms.x3 (1) = 0; 888 installation_parms.syserr_log_copy_threshold = 0; /* use default value in ring 0. */ 889 890 /* Following parameters added for MR6.5 */ 891 892 unspec (installation_parms.rcp_init_flags) = ""b; /* all flags off */ 893 installation_parms.nrscp = 0; /* no resource prices defined */ 894 installation_parms.rsc_timer_seconds = 300; /* 5 minutes between tries for resource reservations */ 895 installation_parms.fatal_error_loop_count = 3; /* any user who gets 3 fatal process errors */ 896 installation_parms.fatal_error_loop_seconds = 60; /* within one minute, gets logged out */ 897 installation_parms.term_real_time_seconds = 120; /* allow 2 minutes to signal finish after getting trm_ signal */ 898 installation_parms.term_cpu_time_seconds = 5; /* and only 5 seconds of cpu time (in case of runaway process) */ 899 900 /* Following parameters added for MR7.0 */ 901 902 do i = 1 to 4; 903 if installation_parms.abs_cpu_default_limit (i) > MILLION then 904 /* if limit is still in microseconds */ 905 installation_parms.abs_cpu_default_limit (i) = 906 divide (installation_parms.abs_cpu_default_limit (i), MILLION, 35, 0); 907 /* convert it to seconds */ 908 end; 909 910 installation_parms.foreground_queue_position = 0; /* foreground queue comes after Q 0, before Q 1 */ 911 installation_parms.foreground_cpu_default_limit = installation_parms.abs_cpu_default_limit (3); 912 /* current shift 3 limit is better than none at all */ 913 installation_parms.idle_time_constant_seconds = 900; 914 /* average the idle units over the last 5 minutes */ 915 installation_parms.sus_cpu_time_seconds = 5; /* allow suspended process to use up to 5 cpu seconds */ 916 installation_parms.sus_real_time_seconds = 180; /* and up to 3 minutes for it to respond, before destroying it */ 917 918 do i = 0 to 7; /* go thru shifts */ 919 installation_parms.max_abs (i) = -1; /* -1 means "use the abs_maxu in the config array" */ 920 installation_parms.min_abs (i) = 0; 921 installation_parms.pct_abs (i) = 0; 922 do j = 1 to 4; /* go thru queues */ 923 installation_parms.abs_cpu_max_limit (i, j) = installation_parms.abs_cpu_default_limit (j); 924 /* keeping the effective limits the same as they are now */ 925 installation_parms.max_qres (i, j) = 0; /* no slots reserved, by default */ 926 installation_parms.min_qres (i, j) = 0; 927 installation_parms.pct_qres (i, j) = 0; 928 end; 929 end; 930 931 /* Following parameters added for MR8.0 */ 932 933 if substr (installation_parms.rcp_init_flags.pad1, 1, 1) then 934 /* old skip_validation bit */ 935 installation_parms.rcp_init_flags.authentication_level = No_authentication; 936 else if substr (installation_parms.rcp_init_flags.pad1, 2, 1) then 937 /* old exact_authentication bit */ 938 installation_parms.rcp_init_flags.authentication_level = Automatic_authentication; 939 else installation_parms.rcp_init_flags.authentication_level = Nominal_authentication; 940 941 installation_parms.rcp_init_flags.pad1 = ""b; /* zero obsolete bits */ 942 943 if edit_rs then go to cant_comm_rs; 944 945 installation_parms.default_absentee_queue = 3; /* for enter_abs_request, etc. */ 946 installation_parms.chn_wakeup_error_loop_count = 10; 947 /* to control Answering Service hacking */ 948 installation_parms.chn_wakeup_error_loop_seconds = 3; 949 /* ditto */ 950 installation_parms.nrates = 0; /* only RS 0 (installation_parms) */ 951 installation_parms.rate_structures (*) = ""; /* all RS names are blank */ 952 installation_parms.rate_structures (0) = "default"; 953 /* except the zero-th */ 954 installation_parms.trusted_path_login = "0"b; 955 installation_parms.require_operator_login = "0"b; 956 installation_parms.vchn_requires_accept = "0"b; 957 installation_parms.validate_daemon_commands = "0"b; 958 installation_parms.operator_inactive_time = installation_parms.inactive_time; 959 installation_parms.password_min_length = 0; /* none */ 960 installation_parms.password_gpw_length = 6; /* compatibility */ 961 installation_parms.password_change_interval = 0; /* none */ 962 installation_parms.password_expiration_interval = 0; /* none */ 963 964 call verify_structures; /* make a fast check */ 965 966 go to main; 967 968 cant_comm_rs: 969 call ioa_ ("""^a"" is not allowed while editing a rate_structure.", comm); 970 go to main1; 971 972 973 /* DEFAULT HANDLING for RATE-STRUCTURES */ 974 975 default_rs: /* default for a rate_structure working installation_parms */ 976 rsp = ip; 977 go to copy_rs1; 978 979 copy_rs: /* copy anywhere but into installation_parms */ 980 if cur_rs_ptr = ip then do; 981 call ioa_ ("A copy into the default rate structure is not allowed. Use default or change all."); 982 go to main1; 983 end; 984 crs1a: 985 call ask_ ("from^-", char32); /* what is user's desire? */ 986 i = rstab$$defined (char32, COMPLAIN); /* is it feasible? */ 987 if i < 0 then go to crs1a; /* 'fraid not */ 988 rsp = rs_ptrs (i); /* pointer to it */ 989 if rsp = cur_rs_ptr then do; /* how silly */ 990 call ioa_ ("A copy from the same rate structure is not allowed."); 991 call ask_$ask_clr (); 992 go to crs1a; 993 end; 994 995 copy_rs1: /* copy all pricing info */ 996 do i = 0 to 7; 997 rate_structure.cpu_price (i) = rsp -> rate_structure.cpu_price (i); 998 rate_structure.log_base_price (i) = rsp -> rate_structure.log_base_price (i); 999 rate_structure.io_ops_price (i) = rsp -> rate_structure.io_ops_price (i); 1000 rate_structure.core_price (i) = rsp -> rate_structure.core_price (i); 1001 end; 1002 rate_structure.disk_price = rsp -> rate_structure.disk_price; 1003 1004 rate_structure.registration_price = rsp -> rate_structure.registration_price; 1005 rate_structure.ndevices = rsp -> rate_structure.ndevices; 1006 rate_structure.devtab (*) = rsp -> rate_structure.devtab (*); 1007 rate_structure.abs_cpu_price (*) = rsp -> rate_structure.abs_cpu_price (*); 1008 rate_structure.abs_mem_price (*) = rsp -> rate_structure.abs_mem_price (*); 1009 rate_structure.iod_rec_price (*) = rsp -> rate_structure.iod_rec_price (*); 1010 rate_structure.nrscp = rsp -> rate_structure.nrscp; 1011 /* Keep resources in order and position. */ 1012 rate_structure.resource (*).name = rsp -> rate_structure.resource (*).name; 1013 rate_structure.resource (*).price = rsp -> rate_structure.resource (*).price; 1014 go to main; 1015 1016 1017 /* OPERATION SUPERVISOR */ 1018 1019 do_any: 1020 procedure (OP); 1021 1022 dcl OP fixed bin; 1023 dcl IX fixed bin; 1024 dcl i fixed bin; 1025 dcl seq_ptr ptr; 1026 dcl seq_size fixed bin; 1027 dcl sequence (seq_size) fixed bin based (seq_ptr); 1028 1029 /* This internal procedure calls the correct processor for OP */ 1030 1031 worker: 1032 procedure (IX); /* dispatch */ 1033 /* keep everything pl1-quick */ 1034 dcl IX fixed bin; 1035 1036 did_something = "1"b; /* assume the best */ 1037 suppress_nl = "0"b; /* ditto */ 1038 if OP = ADD then call do_add (IX); 1039 else if OP = CHANGE then call do_change (IX); 1040 else if OP = PRINT then call do_print (IX); 1041 else if OP = RETYPE then call do_retype (IX); 1042 return; 1043 1044 end worker; 1045 1046 1047 /* BEGIN do_any */ 1048 1049 if OP = ADD then do; /* get a nice long name for request */ 1050 print_comm = "add"; 1051 end; 1052 else if OP = CHANGE then do; 1053 print_comm = "change"; 1054 change_request = "1"b; /* this really is change, not retype */ 1055 end; 1056 else if OP = PRINT then do; 1057 print_comm = "print"; 1058 end; 1059 else if OP = RETYPE then do; 1060 print_comm = "retype"; 1061 end; 1062 else do; 1063 call com_err_ (0, me, "Internal error. Argument to ""do_any"" is ^d.", OP); 1064 return; 1065 end; 1066 1067 call ask_ ("id ", char32); /* OP on what? */ 1068 keywx = checkid (char32, COMPLAIN); /* is it legit? */ 1069 if keywx < 0 then go to main1; /* something was wrong */ 1070 1071 do_any_common: 1072 if keywx = 1 | keywx = 15 | keywx = 51 then do; /* ALL, ABS_QUEUE_PARAMETERS, RATES */ 1073 if keywx = 1 then do; /* all */ 1074 if edit_rs then go to do_rates; /* simulate 'rates ' */ 1075 all_rates_sw = "1"b; /* all => rates */ 1076 all_abs_queue_sw = "1"b; /* all => abs_queue_parameters */ 1077 all_sw = "1"b; /* indicate 'all' */ 1078 seq_ptr = addr (sequence_ALL); /* where is the sequence array? */ 1079 seq_size = hbound (sequence_ALL, 1); /* and how big? */ 1080 end; 1081 else if keywx = 15 then do; /* abs_queue_parameters */ 1082 all_abs_queue_sw = "1"b; /* indicate 'abs_queue_parameters' */ 1083 seq_ptr = addr (sequence_ABS_Q); /* pointer to sequence array */ 1084 seq_size = hbound (sequence_ABS_Q, 1); /* size thereof */ 1085 end; 1086 else if keywx = 51 then do; /* rates */ 1087 do_rates: 1088 all_rates_sw = "1"b; /* indicate all rates */ 1089 seq_ptr = addr (sequence_RATES); /* pointer to sequence array */ 1090 seq_size = hbound (sequence_RATES, 1); /* size thereof */ 1091 end; 1092 1093 do i = 1 to seq_size; /* NOW, do each sub-request */ 1094 call worker (sequence (i)); /* appropriate processor for OP */ 1095 if ^suppress_nl & did_something then call ioa_ (""); 1096 /* blank line, if required */ 1097 end; 1098 end; 1099 else if keywx = 55 then do; 1100 all_structures_sw = "1"b; /* indicate 'all_structures' */ 1101 all_sw = "1"b; /* => all */ 1102 all_rates_sw = "1"b; /* => rates */ 1103 all_abs_queue_sw = "1"b; /* => abs_queue_parameters */ 1104 do i = 0 to installation_parms.nrates; /* now, for each rate_structure */ 1105 cur_rs_ptr = rs_ptrs (i); /* setup pointer ro RS */ 1106 edit_rs = (cur_rs_ptr ^= ip); /* flag if not IP */ 1107 call do_any$$given_index (OP, 1); /* 'all' for this rate_structure */ 1108 end; 1109 cur_rs_ptr = selected_rs_ptr; /* back to whatever it was */ 1110 edit_rs = (cur_rs_ptr ^= ip); 1111 end; 1112 else do; 1113 call worker (keywx); /* run-of-the-mill */ 1114 end; 1115 1116 return; 1117 1118 do_any$$given_index: 1119 entry (OP, IX); /* alternate entry - have index already */ 1120 1121 keywx = IX; 1122 go to do_any_common; 1123 1124 end do_any; 1125 1126 1127 /* PROCESS SINGLE ADD REQUEST */ 1128 1129 do_add: 1130 procedure (IX); 1131 1132 dcl IX fixed bin; 1133 1134 dcl (i, j) fixed bin; 1135 dcl devnm char (8); 1136 dcl rscnm char (32); 1137 1138 if IX < lbound (add, 1) | IX > hbound (add, 1) then do; 1139 call com_err_ (0, me, "Internal error. do_add index ^d.", IX); 1140 return; 1141 end; 1142 1143 go to add (IX); 1144 1145 add (1): /* all */ 1146 add (2): /* installation_id */ 1147 add (3): /* shift_table */ 1148 add (4): /* prices */ 1149 add (5): /* titles */ 1150 add (6): /* level_names */ 1151 add (7): /* inactive_time */ 1152 add (8): /* warning_time */ 1153 add (9): /* login_time */ 1154 add (10): /* tries */ 1155 add (11): /* update_time */ 1156 add (14): /* queue_prices */ 1157 add (15): /* abs_queue_parameters */ 1158 add (16): /* category_names */ 1159 add (17): /* access_ceiling */ 1160 add (18): /* log_parameters */ 1161 add (19): /* trusted_path_login */ 1162 add (23): /* resource_wait_time */ 1163 add (24): /* fpe_time */ 1164 add (25): /* fpe_count */ 1165 add (26): /* trm_real_time */ 1166 add (27): /* trm_cpu_time */ 1167 add (28): /* unload_on_detach */ 1168 add (29): /* authentication_level */ 1169 add (30): /* default_pdir_seg_quota */ 1170 add (56): /* default_pdir_dir_quota */ 1171 add (31): /* rsc_mgmt_enabled */ 1172 add (32): /* auto_registration */ 1173 add (33): /* enable_ss_volume_mount */ 1174 add (34): /* foreground_queue_position */ 1175 add (35): /* idle_time_constant */ 1176 add (36): /* sus_cpu_time */ 1177 add (37): /* sus_real_time */ 1178 add (38): /* max_abs */ 1179 add (39): /* min_abs */ 1180 add (40): /* pct_abs */ 1181 add (41): /* max_qres */ 1182 add (42): /* min_qres */ 1183 add (43): /* pct_qres */ 1184 add (44): /* abs_cpu_max_limit */ 1185 add (45): /* abs_timax */ 1186 add (46): /* abs_cpu_default_limit */ 1187 add (47): /* foreground_cpu_default_limit */ 1188 add (48): /* abs_default_queue */ 1189 add (49): /* cwe_time */ 1190 add (50): /* cwe_count */ 1191 add (51): /* rates */ 1192 add (55): /* all_structures */ 1193 add (57): /* require_operator_login */ 1194 add (58): /* operator_inactive */ 1195 add (59): /* validate_daemon_commands */ 1196 add (60): /* password_min_length */ 1197 add (61): /* password_gpw_length */ 1198 add (62): /* password_change_interval */ 1199 add (63): /* password_expiration_interval */ 1200 add (64): /* vchn_requires_accept */ 1201 1202 call ioa_ ("""add ^a"" is not allowed. Try ""retype"".", idt (keywx)); 1203 go to main1; 1204 1205 add (12): /* device_prices */ 1206 go to add (52); 1207 1208 add (13): /* config table */ 1209 if installation_parms.ncon = 51 then do; 1210 call ioa_ ("config table full"); 1211 call ask_$ask_clr (); 1212 return; 1213 end; 1214 i = installation_parms.ncon + 1; 1215 call input_config_element (i); 1216 if installation_parms.cona (i).cpu > 0 then installation_parms.ncon = i; 1217 call sort_config_table; 1218 return; 1219 1220 add (20): /* device_names */ 1221 go to add (52); 1222 1223 add (21): /* resource_prices */ 1224 add (22): /* resource_names */ 1225 go to add (53); 1226 1227 add (52): /* devices */ 1228 if edit_rs then go to cant_add_rs; 1229 if installation_parms.ndevices = 16 then do; 1230 call ioa_ ("device table full"); 1231 call ask_$ask_clr (); 1232 return; 1233 end; 1234 add52a: 1235 call ask_ ("device^-", devnm); 1236 j = devtab$$undefined (devnm, NO_SPECIAL_DEVICES, COMPLAIN); 1237 /* best not exist */ 1238 if j >= 0 then go to add52a; /* oh dear, it does */ 1239 call input_device_price (installation_parms.ndevices + 1, devnm, ALL_RS, SET_HI); 1240 return; 1241 1242 add (53): /* resources */ 1243 if edit_rs then go to cant_add_rs; 1244 call ask_ ("resource^-", rscnm); 1245 j = rsctab$$undefined (rscnm, COMPLAIN); /* best not exist */ 1246 if j >= 0 then go to add (53); /* horrors! it does */ 1247 call input_resource_price (installation_parms.nrscp + 1, rscnm, ALL_RS, SET_HI); 1248 return; 1249 1250 add (54): /* rate_structure_name */ 1251 if edit_rs then go to cant_add_rs; 1252 if installation_parms.nrates >= hbound (installation_parms.rate_structures, 1) then do; 1253 call ioa_ ("An attempt to add more than ^n rate structures has been made and ignored.", 1254 hbound (installation_parms.rate_structures, 1)); 1255 go to main1; 1256 end; 1257 j = installation_parms.nrates + 1; 1258 add54a: 1259 call ask_ ("new rate_structure name ", rscnm); 1260 i = rstab$$undefined (rscnm, COMPLAIN); /* ensure no such RS already */ 1261 if i >= 0 then go to add54a; /* oh dear - try again */ 1262 1263 en = "rate_structure_" || ltrim (char (j)); /* make the live segment */ 1264 call hcs_$make_seg (dn, en, "", RW_ACCESS_BIN, rsp1, ec); 1265 if rsp1 = null then do; 1266 call write_error (ec, j, dnvar || rtrim (en)); 1267 return; 1268 end; 1269 call hcs_$set_ring_brackets (dn, en, ip_rings, ec); 1270 /* make sure it's accessible to ring 5 */ 1271 if ec ^= 0 then call com_err_ (ec, me, "Setting ring brackets of ^a.", en); 1272 call hcs_$make_seg ("", "", "", RW_ACCESS_BIN, rsp, ec); 1273 /* make the temp copy */ 1274 if rsp = null then do; 1275 call write_error (ec, j, "temporary segment"); 1276 return; 1277 end; 1278 1279 critical_op = "1"b; /* critical while we setup the RS */ 1280 rs_ptrs1 (j) = rsp1; 1281 rs_ptrs (j) = rsp; 1282 1283 /* make new RS look like all the rest, with 0.0 prices */ 1284 rsp -> rate_structure.rate_structure_number = j; /* unique */ 1285 rsp -> rate_structure.rate_structures (*) = installation_parms.rate_structures (*); 1286 rsp -> rate_structure.cpu_price (*) = 0e0; 1287 rsp -> rate_structure.log_base_price (*) = 0e0; 1288 rsp -> rate_structure.io_ops_price (*) = 0e0; 1289 rsp -> rate_structure.core_price (*) = 0e0; 1290 rsp -> rate_structure.disk_price = 0e0; 1291 rsp -> rate_structure.registration_price = 0e0; 1292 rsp -> rate_structure.dolsign = "$"; 1293 rsp -> rate_structure.ndevices = installation_parms.ndevices; 1294 rsp -> rate_structure.devtab (*).device_id = installation_parms.devtab (*).device_id; 1295 rsp -> rate_structure.devtab (*).device_price (*) = 0e0; 1296 rsp -> rate_structure.abs_cpu_price (*) = 0e0; 1297 rsp -> rate_structure.abs_mem_price (*) = 0e0; 1298 rsp -> rate_structure.iod_rec_price (*) = 0e0; 1299 rsp -> rate_structure.nrscp = installation_parms.nrscp; 1300 rsp -> rate_structure.resource (*).name = installation_parms.resource (*).name; 1301 rsp -> rate_structure.resource (*).price = 0e0; 1302 1303 do i = j to 0 by -1; /* add new rate_structure to all structures */ 1304 rs_ptrs (i) -> rate_structure.nrates = j; 1305 rs_ptrs (i) -> rate_structure.rate_structures (j) = rscnm; 1306 end; 1307 1308 critical_op = "0"b; 1309 call ioa_ ("rate_structure ""^a"" defined. All prices are 0.0.", rscnm); 1310 return; 1311 1312 cant_add_rs: 1313 call ioa_ ("""^a ^a"" is not allowed while editing a rate_structure.", print_comm, idt (IX)); 1314 go to main1; 1315 1316 end do_add; 1317 1318 1319 /* PROCESS SINGLE CHANGE REQUEST */ 1320 1321 do_change: 1322 procedure (IX); 1323 1324 dcl IX fixed bin; 1325 1326 dcl (i, i1, i2, i3, i4, j, k, n) fixed bin; 1327 dcl rscnm char (32); 1328 dcl devnm char (8); 1329 1330 if IX < lbound (change, 1) | IX > hbound (change, 1) then do; 1331 call com_err_ (0, me, "Internal error. do_change index ^d.", IX); 1332 return; 1333 end; 1334 1335 go to change (IX); 1336 1337 change (2): /* installation_id */ 1338 change (5): /* titles */ 1339 change (7): /* inactive_time */ 1340 change (8): /* warning_time */ 1341 change (9): /* login_time */ 1342 change (10): /* tries */ 1343 change (11): /* update_time */ 1344 change (15): /* abs_queue_parameters */ 1345 change (17): /* access_ceiling */ 1346 change (18): /* log_parameters */ 1347 change (19): /* trusted_path_login */ 1348 change (23): /* rsctime */ 1349 change (24): /* fpetime */ 1350 change (25): /* fpecount */ 1351 change (26): /* trmrealtime */ 1352 change (27): /* trmcputime */ 1353 change (28): /* unload_on_detach */ 1354 change (29): /* authentication_level */ 1355 change (30): /* default_pdir_seg_quota */ 1356 change (56): /* default_pdir_dir_quota */ 1357 change (31): /* rsc_mgmt_enabled */ 1358 change (32): /* auto_registration */ 1359 change (33): /* enable_ss_volume_mount */ 1360 change (34): /* foreground_queue_position */ 1361 change (35): /* idle_time_constant */ 1362 change (36): /* sus_cpu_time */ 1363 change (37): /* sus_real_time */ 1364 change (38): /* max_abs */ 1365 change (39): /* min_abs */ 1366 change (40): /* pct_abs */ 1367 change (41): /* max_qres */ 1368 change (42): /* min_qres */ 1369 change (43): /* pct_qres */ 1370 change (44): /* abs_cpu_max_limit */ 1371 change (45): /* abs_timax */ 1372 change (46): /* abs_cpu_default_limits */ 1373 change (47): /* foreground_cpu_default_limit */ 1374 change (48): /* abs_default_queue */ 1375 change (49): /* cwe_time */ 1376 change (50): /* cwe_count */ 1377 change (51): /* rates */ 1378 change (57): /* require_operator_login */ 1379 change (58): /* operator_inactive */ 1380 change (59): /* validate_daemon_commands */ 1381 change (60): /* password_min_length */ 1382 change (61): /* password_gpw_length */ 1383 change (62): /* password_change_interval */ 1384 change (63): /* password_expiration_interval */ 1385 change (64): /* vchn_requires_accept */ 1386 1387 call do_retype (IX); 1388 return; 1389 1390 change (1): /* all */ 1391 go to cant_change; 1392 1393 change (3): /* shift table */ 1394 call ask_ ("day^-", char8); 1395 i = index (daynam, substr (char8, 1, 3)) - 1; 1396 if i < 0 then do; 1397 badday: 1398 call ioa_ ("^a illegal day", char8); 1399 call ask_$ask_clr (); 1400 go to change (3); 1401 end; 1402 i = divide (i, 3, 17, 0); 1403 badhour: 1404 call set_half_al ("hour", "", j, 0, 23); 1405 badhalf: 1406 call ask_$ask_int ("half^-", n); 1407 if n = 30 then n = 1; 1408 else if n ^= 0 & n ^= 1 then do; 1409 call ioa_ ("illegal half hour ^d. Must be 0 for the hour and 1 or 30 for the half.", n); 1410 call ask_$ask_clr (); 1411 go to badhalf; 1412 end; 1413 call ask_$ask_n (char8, i1); /* check for type ahead */ 1414 if i1 ^= 0 & char8 = "thru" then do; /* if "thru" typed ahead */ 1415 call ask_ ("", char8); /* get it off the input line */ 1416 call ask_ ("thru day^-", char8); 1417 i2 = divide (index (daynam, substr (char8, 1, 3)) - 1, 3, 17, 0); 1418 if i2 < 0 then go to badday; 1419 call ask_$ask_int ("thru hour^-", i3); /* i3 = hour = final value of j */ 1420 if i3 < 0 | i3 > 23 then go to badhour; 1421 call ask_$ask_int ("thru half^-", i4); /* i4 = half = final value of n */ 1422 if i4 > 0 then 1423 i4 = 1; 1424 else i4 = 0; 1425 end; 1426 else i1 = 0; /* remember that thru was not given */ 1427 1428 call set_half_al ("shift", "", k, 0, 7); 1429 call set_shift_field (i, j, k, n); 1430 1431 if i1 ^= 0 then /* if "thru" was given */ 1432 do while (i ^= i2 | j ^= i3 | n ^= i4); /* set shifts til we reach the thru time */ 1433 n = n + 1; /* advance half hour */ 1434 if n = 2 then do; /* if next hour */ 1435 n = 0; 1436 j = j + 1; /* advance hour */ 1437 if j = 24 then do; /* if end of day */ 1438 j = 0; 1439 i = i + 1; /* advance day */ 1440 if i = 7 then /* if end of week */ 1441 i = 0; 1442 end; 1443 end; 1444 call set_shift_field (i, j, k, n); 1445 end; 1446 return; 1447 1448 change (4): /* prices */ 1449 call set_half_al ("shift", "", k, 0, 7); 1450 call ask_$ask_flo ("cpu^-", rate_structure.cpu_price (k)); 1451 call ask_$ask_flo ("log^-", rate_structure.log_base_price (k)); 1452 call ask_$ask_flo ("mem^-", rate_structure.core_price (k)); 1453 call ask_$ask_flo ("io ops^-", rate_structure.io_ops_price (k)); 1454 return; 1455 1456 change (6): /* sensitivity level names */ 1457 call set_half_al ("level", "", i, lbound (installation_parms.level_names, 1), 1458 hbound (installation_parms.level_names, 1)); 1459 call enter_level_name (i); 1460 return; 1461 1462 change (12): /* device prices */ 1463 call ask_ ("device^-", devnm); 1464 i = devtab$$defined (devnm, SPECIAL_DEVICES_OK, COMPLAIN); 1465 /* find that device */ 1466 if i < 0 then go to change (12); /* I beg your pardon */ 1467 call input_device_price (i, devnm, THIS_RS, NO_SET_HI); 1468 return; 1469 1470 change (13): /* config table */ 1471 do while ("1"b); 1472 call ask_$ask_int ("ncpu ", i1); 1473 call ask_$ask_int ("nmem ", i2); 1474 call ask_$ask_int ("bulk ", i3); 1475 call ask_$ask_int ("shift ", i4); 1476 do i = 1 to installation_parms.ncon; 1477 if installation_parms.cona.cpu (i) = i1 then 1478 if installation_parms.cona.kmem (i) = i2 then 1479 if installation_parms.cona.kbulk (i) = i3 then 1480 if installation_parms.cona.shift (i) = i4 then do; 1481 call print_config_element (i); 1482 call input_config_element (i); 1483 call sort_config_table; 1484 return; 1485 end; 1486 end; 1487 call ioa_ ("config ^d ^d ^d ^d not found", i1, i2, i3, i4); 1488 call ask_$ask_clr (); 1489 end; 1490 1491 change (14): /* queue prices */ 1492 call set_half_al ("queue", "", i, 1, 4); 1493 call ask_$ask_flo ("abs CPU ^d^-", rate_structure.abs_cpu_price (i), i); 1494 call ask_$ask_flo ("abs mem ^d^-", rate_structure.abs_mem_price (i), i); 1495 call ask_$ask_flo ("iod records ^d^-", rate_structure.iod_rec_price (i), i); 1496 return; 1497 1498 change (16): /* category names */ 1499 call set_half_al ("category", "", i, lbound (installation_parms.category_names, 1), 1500 hbound (installation_parms.category_names, 1)); 1501 call enter_category_name (i); 1502 return; 1503 1504 change (20): /* device name */ 1505 if edit_rs then go to cant_change_rs; 1506 call ask_ ("device^-", devnm); 1507 i = devtab$$defined (devnm, NO_SPECIAL_DEVICES, COMPLAIN); 1508 /* find it in devtab */ 1509 if i < 0 then go to change (20); /* couldn't find it */ 1510 ch20a: 1511 call ask_ ("new device name^-", devnm); 1512 if devnm = installation_parms.device_id (i) then do; 1513 k = devtab$$undefined (devnm, NO_SPECIAL_DEVICES, COMPLAIN); 1514 /* new name must not exist */ 1515 if k >= 0 then go to ch20a; /* try again */ 1516 end; 1517 k = installation_parms.ndevices; 1518 if devnm = "dev" || ltrim (char (i)) & i = k then k = k - 1; 1519 critical_op = "1"b; 1520 do j = installation_parms.nrates to 0 by -1; /* All rate structures must have the same devices */ 1521 rs_ptrs (j) -> rate_structure.ndevices = k; 1522 rs_ptrs (j) -> rate_structure.device_id (i) = devnm; 1523 end; 1524 critical_op = "0"b; 1525 return; 1526 1527 change (21): /* resource_prices */ 1528 call ask_ ("resource^-", rscnm); 1529 i = rsctab$$defined (rscnm, COMPLAIN); /* find resource */ 1530 if i < 0 then go to change (21); /* couldn't */ 1531 call input_resource_price (i, rscnm, THIS_RS, NO_SET_HI); 1532 return; 1533 1534 change (22): /* rscname */ 1535 if edit_rs then go to cant_change_rs; 1536 call ask_ ("resource^-", rscnm); 1537 i = rsctab$$defined (rscnm, COMPLAIN); /* find resource */ 1538 if i < 0 then go to change (22); /* not present */ 1539 call ask_ ("new resource name^-", rscnm); 1540 ch22a: 1541 if rscnm ^= installation_parms.resource (i).name then do; 1542 j = rsctab$$undefined (rscnm, COMPLAIN); /* look out for duplicates */ 1543 if j >= 0 then go to ch22a; /* try for another name */ 1544 end; 1545 critical_op = "1"b; 1546 do j = installation_parms.nrates to 0 by -1; 1547 rs_ptrs (j) -> rate_structure.resource (i).name = rscnm; 1548 end; 1549 critical_op = "0"b; 1550 return; 1551 1552 change (52): /* devices */ 1553 go to change (12); 1554 1555 change (53): /* resources */ 1556 go to change (21); 1557 1558 change (54): /* rate_structure_name */ 1559 if edit_rs then go to cant_change_rs; 1560 call ask_ ("rate_structure^-", rscnm); 1561 i = rstab$$defined (rscnm, COMPLAIN); /* find the RS */ 1562 if i < 0 then go to change (54); /* doesn't exist */ 1563 ch54a: 1564 call ask_ ("new rate_structure name^-", rscnm); 1565 if rscnm ^= installation_parms.rate_structures (i) then do; 1566 j = rstab$$undefined (rscnm, COMPLAIN); /* look out for duplicate names */ 1567 if j >= 0 then go to ch54a; /* oh dear - found duplicate */ 1568 end; 1569 critical_op = "1"b; 1570 do j = installation_parms.nrates to 0 by -1; 1571 rs_ptrs (j) -> rate_structure.rate_structures (i) = rscnm; 1572 end; 1573 critical_op = "0"b; 1574 return; 1575 1576 change (55): /* all_structures */ 1577 go to cant_change; 1578 1579 changed_nothing: 1580 did_something = "0"b; 1581 return; 1582 1583 cant_change: 1584 call ioa_ ("""^a ^a"" is not allowed.", print_comm, idt (IX)); 1585 go to main1; 1586 1587 cant_change_rs: 1588 call ioa_ ("""^a ^a"" is not allowed while editing a rate_structure.", print_comm, idt (IX)); 1589 go to main1; 1590 1591 end do_change; 1592 1593 1594 /* PROCESS SINGLE PRINT REQUEST */ 1595 1596 do_print: 1597 procedure (IX); 1598 1599 dcl IX fixed bin; 1600 1601 dcl (i, j, k, m, n) fixed bin; 1602 dcl c15 char (15); 1603 dcl char48 char (48); 1604 dcl no_charge bit (1) aligned; 1605 dcl (dflt, mx, tmx) bit (1) aligned; 1606 dcl rscnm char (32); 1607 dcl devnm char (8); 1608 dcl pass_sw bit (1) aligned; 1609 1610 if IX < lbound (print, 1) | IX > hbound (print, 1) then do; 1611 call com_err_ (0, me, "Internal error. do_print index ^d.", IX); 1612 return; 1613 end; 1614 1615 go to print (IX); 1616 1617 print (1): /* all */ 1618 call ioa_ ("^/^-Installation parameters^/"); 1619 return; 1620 1621 print (2): /* installation_id */ 1622 call ioa_ ("Installation id:^-^a", installation_parms.installation_id); 1623 return; 1624 1625 print (3): /* shift_table */ 1626 call ioa_ ("^4xM^15x8^7xN^11x6"); 1627 do i = 0 to 6; 1628 char48 = ""; 1629 m = 1; 1630 do j = 0 to 23; 1631 do n = 0 to 1; 1632 k = fixed (installation_parms.shifttab (48 * i + 2 * j + n + 1), 3); 1633 substr (char48, m, 1) = ltrim (char (k)); 1634 m = m + 1; 1635 end; 1636 end; 1637 call ioa_ ("^a ^a", substr (daynam, 3 * i + 1, 3), char48); 1638 end; 1639 return; 1640 1641 print (4): /* prices */ 1642 call ioa_ ("disk price:^-$^f/page-second, $^f/page-30-days", rate_structure.disk_price, 1643 rate_structure.disk_price * SECONDS_PER_MONTH); 1644 call ioa_ ("registration fee:^-^a/user^/", cv_$mwvf (rate_structure.registration_price)); 1645 call ioa_ ("Shift^13xcpu^13xlog^13xmem^10xio ops"); 1646 do i = 0 to 7; 1647 if rate_structure.cpu_price (i) + rate_structure.log_base_price (i) + rate_structure.io_ops_price (i) 1648 + rate_structure.core_price (i) > 0.0e0 then 1649 call ioa_ ("^4x^1d ^15a ^15a ^15a ^15a", i, cv_$mwvf (rate_structure.cpu_price (i)), 1650 cv_$mwvf (rate_structure.log_base_price (i)), cv_$mwvf (rate_structure.core_price (i)), 1651 cv_$mwvf (rate_structure.io_ops_price (i))); 1652 end; 1653 return; 1654 1655 print (5): /* titles */ 1656 call ioa_ ("Company:^-^-^a", installation_parms.company); 1657 call ioa_ ("Department:^-^a", installation_parms.department); 1658 call ioa_ ("Companyds:^-^a", installation_parms.companyds); 1659 call ioa_ ("Departmentds:^-^a", installation_parms.departmentds); 1660 return; 1661 1662 print (6): /* level_names */ 1663 call ioa_ ("Level Short Name Name"); 1664 do i = lbound (installation_parms.level_names (*), 1) to hbound (installation_parms.level_names (*), 1); 1665 call ioa_ ("^3d^6x^8a^6x^a", i, installation_parms.short_level_names (i), 1666 installation_parms.level_names (i)); 1667 end; 1668 return; 1669 1670 print (7): /* inactive_time */ 1671 call ioa_ ("inactive_time:^-^d sec.", installation_parms.inactive_time); 1672 suppress_nl = "1"b; /* tight output */ 1673 return; 1674 1675 print (58): 1676 call ioa_ ("operator_inactive_time:^-^d sec.", installation_parms.operator_inactive_time); 1677 suppress_nl = "1"b; /* tight output */ 1678 return; 1679 1680 print (8): /* warning_time */ 1681 call ioa_ ("warning_time:^-^d sec.", installation_parms.warning_time); 1682 suppress_nl = "1"b; /* tight output */ 1683 return; 1684 1685 print (9): /* login_time */ 1686 call ioa_ ("login_time:^-^d sec.", installation_parms.login_time); 1687 suppress_nl = "1"b; /* tight output */ 1688 return; 1689 1690 print (10): /* tries */ 1691 call ioa_ ("tries:^2-^d", installation_parms.login_tries); 1692 suppress_nl = "1"b; 1693 return; 1694 1695 print (11): /* update_time */ 1696 call ioa_ ("acct_update:^-^d sec.", installation_parms.acct_update); 1697 return; 1698 1699 print (12): /* device_prices */ 1700 go to print (52); /* devices */ 1701 1702 print (13): /* config_table */ 1703 call ioa_ (" cpu mem bulk shift min max base abs absq"); 1704 do i = 1 to installation_parms.ncon; 1705 call print_config_element (i); 1706 end; 1707 return; 1708 1709 print (14): /* queue_prices */ 1710 call ioa_ ("Queue Abs CPU Abs mem IO recs"); 1711 do i = 1 to 4; 1712 call ioa_ (" ^1d ^8.2f ^8.2f ^8.2f", i, rate_structure.abs_cpu_price (i), 1713 rate_structure.abs_mem_price (i), rate_structure.iod_rec_price (i)); 1714 end; 1715 return; 1716 1717 print (15): /* abs_queue_parameters */ 1718 tmx, dflt, mx = "1"b; /* print all 3 parameters */ 1719 go to print_abs_queue_parameters; 1720 1721 print (16): /* category_names */ 1722 call ioa_ ("Category Short Name Name"); 1723 do i = lbound (installation_parms.category_names (*), 1) to hbound (installation_parms.category_names (*), 1); 1724 call ioa_ ("^3d^6x^8a^6x^a", i, installation_parms.short_category_names (i), 1725 installation_parms.category_names (i)); 1726 end; 1727 return; 1728 1729 print (17): /* access_ceiling */ 1730 call ioa_ ("Access ceiling:^-level = ^d, categories = ^6.3b", 1731 /* N.B. Format depends on number of categories */ 1732 addr (installation_parms.access_authorization_ceiling) -> aim_template.level, 1733 addr (installation_parms.access_authorization_ceiling) -> aim_template.categories); 1734 return; 1735 1736 print (18): /* log_parameters */ 1737 if installation_parms.syserr_log_copy_threshold = -1 then call ioa_ ("Syserr log copying disabled."); 1738 else if installation_parms.syserr_log_copy_threshold = 0 then 1739 call ioa_ ("Syserr log copying threshold is using default value."); 1740 else call ioa_ ("Syserr log copying threshold: ^d pages", installation_parms.syserr_log_copy_threshold); 1741 return; 1742 1743 print (19): /* trusted_path_login */ 1744 call ioa_ ("trusted_path_login: ^[yes^;no^]. Terminal disconnection is^[ not^] required to change authorization.", installation_parms.trusted_path_login, ^installation_parms.trusted_path_login); 1745 return; 1746 1747 print (57): 1748 call ioa_ ("require_operator_login: ^[yes^;no^]. Operators are^[ not^] required to sign on before entering commands.", installation_parms.require_operator_login, ^installation_parms.require_operator_login); 1749 return; 1750 1751 print (59): 1752 call ioa_ ("validate_daemon_commands: ^[yes^;no^]. Access to .mcacs segments is^[ not^] required to reply, quit, login, logout, or new_proc daemons.", installation_parms.validate_daemon_commands, ^installation_parms.validate_daemon_commands); 1753 return; 1754 1755 print (60): 1756 call ioa_ ("password_min_length: ^[no minimum length^s^;^d^].", 1757 (installation_parms.password_min_length = 0), 1758 installation_parms.password_min_length); 1759 return; 1760 print (61): 1761 call ioa_ ("password_gpw_length: ^d.", 1762 installation_parms.password_gpw_length); 1763 return; 1764 print (62): 1765 call ioa_ ("password_change_interval: ^[no enforced interval^s^;^d days^].", 1766 (installation_parms.password_change_interval = 0), 1767 installation_parms.password_change_interval); 1768 return; 1769 print (63): 1770 call ioa_ ("password_expiration_interval: ^[no enforced interval^s^;^d days^].", 1771 (installation_parms.password_expiration_interval = 0), 1772 installation_parms.password_expiration_interval); 1773 return; 1774 print (64): 1775 call ioa_ ("vchn_requires_accept: ^[yes^;no^]. virtual channel MC attachments do^[ not^] require ""accept""", 1776 installation_parms.vchn_requires_accept, ^installation_parms.vchn_requires_accept); 1777 return; 1778 print (20): /* devname */ 1779 if all_rates_sw then go to printed_nothing; /* device_prices will do it */ 1780 do i = 1 to rate_structure.ndevices; 1781 call ioa_ ("^2d)^2x^8a", i, rate_structure.device_id (i)); 1782 end; 1783 return; 1784 1785 print (21): /* resource_prices */ 1786 go to print (53); /* resources */ 1787 1788 print (22): /* rscname */ 1789 if all_rates_sw then go to printed_nothing; /* resource_prices will do it */ 1790 pass_sw = "1"b; 1791 do i = 1 to rate_structure.nrscp; 1792 if rate_structure.resource (i).price >= 0 then do; 1793 pass_sw = "0"b; 1794 call ioa_ ("^3d)^2x^a", i, rate_structure.resource (i).name); 1795 end; 1796 end; 1797 if pass_sw then call ioa_ ("no resources defined"); 1798 return; 1799 1800 print (23): /* rsctime */ 1801 call ioa_ ("resource wait time: ^d sec.", installation_parms.rsc_timer_seconds); 1802 return; 1803 1804 1805 print (24): /* fpetime */ 1806 call ioa_ ("fatal error loop time: ^d sec.", installation_parms.fatal_error_loop_seconds); 1807 return; 1808 1809 1810 print (25): /* fpecount */ 1811 call ioa_ ("fatal error loop count: ^d", installation_parms.fatal_error_loop_count); 1812 return; 1813 1814 print (26): /* trmrealtime */ 1815 call ioa_ ("trm_ real time limit: ^d sec.", installation_parms.term_real_time_seconds); 1816 return; 1817 1818 print (27): /* trmcputime */ 1819 call ioa_ ("trm_ cpu time limit: ^d sec.", installation_parms.term_cpu_time_seconds); 1820 return; 1821 1822 print (28): /* unload_on_detach */ 1823 call ioa_ ("^a:^-^[on^;off^]", idt (28), installation_parms.rcp_init_flags.unload_on_detach); 1824 return; 1825 1826 print (29): /* authentication_level */ 1827 call ioa_ ("^a:^-^a", idt (29), 1828 authentication_level_names (installation_parms.rcp_init_flags.authentication_level)); 1829 return; 1830 1831 print (30): /* default_pdir_seg_quota */ 1832 call ioa_ ("^a:^-^d", idt (30), installation_parms.default_pdir_seg_quota); 1833 return; 1834 1835 print (56): /* default_pdir_dir_quota */ 1836 call ioa_ ("^a:^-^d", idt (56), installation_parms.default_pdir_dir_quota); 1837 return; 1838 1839 print (31): /* rsc_mgmt_enabled */ 1840 call ioa_ ("^a:^-^[on^;off^]", idt (31), installation_parms.rcp_init_flags.resource_mgmt_enabled); 1841 return; 1842 1843 print (32): /* auto_registration */ 1844 call ioa_ ("^a:^-^[on^;off^]", idt (32), installation_parms.rcp_init_flags.auto_registration); 1845 return; 1846 1847 print (33): /* enable_ss_volume_mount */ 1848 /* COMMENT OUT UNTIL rcp_init_flags.incl.pl1 is modified: 1849* call ioa_ ("^a:^-^[on^;off^],idt(33),installation_parms.rcp_init_flags.enable_ss_volume_mount); 1850* /* END COMMENT OUT */ 1851 go to printed_nothing; 1852 1853 print (34): /* foreground_queue_position */ 1854 call print_halfword (idt (34), installation_parms.foreground_queue_position); 1855 return; 1856 1857 print (35): /* idle_time_constant */ 1858 call print_halfword (idt (35), installation_parms.idle_time_constant_seconds); 1859 return; 1860 1861 print (36): /* sus_cpu_time */ 1862 call ioa_ ("^a: ^d sec.", idt (36), installation_parms.sus_cpu_time_seconds); 1863 return; 1864 1865 print (37): /* sus_real_time */ 1866 call ioa_ ("^a: ^d sec.", idt (37), installation_parms.sus_real_time_seconds); 1867 return; 1868 1869 print (38): /* max_abs */ 1870 call print_sval (idt (38), installation_parms.max_abs); 1871 return; 1872 1873 print (39): /* min_abs */ 1874 call print_sval (idt (39), installation_parms.min_abs); 1875 return; 1876 1877 print (40): /* pct_abs */ 1878 call print_sval (idt (40), installation_parms.pct_abs); 1879 return; 1880 1881 print (41): /* max_qres */ 1882 call print_sqval (idt (41), installation_parms.max_qres); 1883 return; 1884 1885 print (42): /* min_qres */ 1886 call print_sqval (idt (42), installation_parms.min_qres); 1887 return; 1888 1889 print (43): /* abs_cpu_default_limit */ 1890 call print_sqval (idt (43), installation_parms.pct_qres); 1891 return; 1892 1893 print (44): /* abs_cpu_max_limit */ 1894 if all_abs_queue_sw then go to printed_nothing; 1895 mx = "1"b; 1896 tmx, dflt = ""b; 1897 go to print_abs_queue_parameters; 1898 1899 print (45): /* abs_timax */ 1900 if all_abs_queue_sw then go to printed_nothing; 1901 tmx = "1"b; 1902 mx, dflt = ""b; 1903 go to print_abs_queue_parameters; 1904 1905 print (46): /* abs_cpu_default_limit */ 1906 if all_abs_queue_sw then go to printed_nothing; 1907 dflt = "1"b; 1908 mx, tmx = ""b; 1909 go to print_abs_queue_parameters; 1910 1911 print_abs_queue_parameters: /* Print lines of the following form: 1912* Q TIMAX DEFAULT PER-SHIFT MAX CPU TIME LIMITS 1913* - LIMIT 0 1 2 3 4 5 6 7 1914* 1 timax dflt mx0 mx1 mx2 mx3 mx4 mx5 mx6 mx7 1915* */ 1916 call ioa_ ("Q^[^xABS-TIMAX^]^[^xDEFAULT^]^[^xPER-SHIFT MAX CPU TIME LIMITS^]", tmx, dflt, mx); 1917 if (dflt | mx) then call ioa_ ("^x^[^10x^]^[^3xLIMIT^]^[^x^6x0^6x1^6x2^6x3^6x4^6x5^6x6^6x7^]", tmx, dflt, mx); 1918 do i = 1 to 4; 1919 call ioa_ ("^d^[^x^9d^;^s^]^[^x^7d^;^s^]^[^x^8(^x^6d^)^]", i, tmx, installation_parms.abs_timax (i), dflt, 1920 installation_parms.abs_cpu_default_limit (i), mx, installation_parms.abs_cpu_max_limit (*, i)); 1921 end; 1922 return; 1923 1924 print (47): /* foreground_cpu_default_limit */ 1925 call ioa_ ("foreground default cpu limit: ^d sec.", installation_parms.foreground_cpu_default_limit); 1926 return; 1927 1928 print (48): /* abs_default_queue */ 1929 call print_halfword (idt (48), installation_parms.default_absentee_queue); 1930 return; 1931 1932 print (49): /* cwe_time */ 1933 call ioa_ ("^a:^21t^d sec.", idt (49), installation_parms.chn_wakeup_error_loop_seconds); 1934 suppress_nl = "1"b; /* tight output */ 1935 return; 1936 1937 print (50): /* cwe_count */ 1938 call ioa_ ("^a:^21t^d", idt (50), installation_parms.chn_wakeup_error_loop_count); 1939 suppress_nl = "1"b; /* tight output */ 1940 return; 1941 1942 print (51): /* rates */ 1943 call ioa_ ("^/^-rate_structure ""^a""^/", ptr_rs_name (cur_rs_ptr)); 1944 return; 1945 1946 print (52): /* devices */ 1947 k = 0; 1948 if ^all_rates_sw then call ask_$ask_n (devnm, k); /* look ahead on line for device name */ 1949 if k ^= 0 then do; /* if something is there */ 1950 m, n = devtab$$defined (devnm, SPECIAL_DEVICES_OK, COMPLAIN); 1951 /* find the device */ 1952 if m < 0 then go to print (52); /* sorry, chum */ 1953 call ask_ ("", char8); /* clear it off the input line */ 1954 end; 1955 else do; 1956 if ^check_device_names () then /* check for missing ones, and if we complained about any */ 1957 call ioa_ (""); /* skip a line */ 1958 m = 1; 1959 n = installation_parms.ndevices; 1960 end; 1961 1962 do i = m to n; 1963 call ioa_ ("device:^-^a", rate_structure.device_id (i)); 1964 no_charge = "1"b; /* check for zero prices on all shifts */ 1965 do j = 0 to 7; 1966 if rate_structure.device_price (i, j) > 0.0e0 then do; 1967 call ioa_ ("^-shift ^d ^15a/hr", j, cv_$mwvf (rate_structure.device_price (i, j))); 1968 no_charge = ""b; /* at least one shift has nonzero price */ 1969 end; 1970 end; 1971 if no_charge then call ioa_ ("^2-^7xno charge"); 1972 end; 1973 return; 1974 1975 print (53): /* resources */ 1976 k = 0; 1977 if ^all_rates_sw then call ask_$ask_n (rscnm, k); /* look ahead for a resource name */ 1978 if k ^= 0 then do; /* if something is there */ 1979 j, k = rsctab$$defined (rscnm, COMPLAIN); /* find the resource */ 1980 if j < 0 then go to print (53); 1981 call ask_ ("", char32); /* it was; remove it from the input line */ 1982 end; 1983 else do; 1984 j = 1; /* print them all */ 1985 k = rate_structure.nrscp; 1986 end; 1987 1988 pass_sw = "1"b; 1989 do i = j to k; 1990 if rate_structure.resource (i).price >= 0 then do; 1991 c15 = cv_$mwvf (rate_structure.resource (i).price); 1992 /* format price */ 1993 if length (ltrim (c15)) < 8 then 1994 c15 = substr (c15, 8, 8); /* right-adjust price in 8 column field */ 1995 else c15 = ltrim (c15); /* but don't throw away any nonblanks */ 1996 if pass_sw then do; 1997 pass_sw = "0"b; 1998 call ioa_ ("^3xPRICE^xNAME"); 1999 end; 2000 call ioa_ ("^8a^x^a", c15, rate_structure.resource (i).name); 2001 end; 2002 end; 2003 if pass_sw then call ioa_ ("no resources defined"); 2004 return; 2005 2006 print (54): /* rate_structure_name */ 2007 call ioa_ ("Rate_structure names:"); 2008 do i = 0 to installation_parms.nrates; 2009 call ioa_ ("^-^a ^[ (current rate_structure)^]", installation_parms.rate_structures (i), 2010 (cur_rs_ptr = rs_ptrs (i))); 2011 end; 2012 return; 2013 2014 print (55): /* all_structures */ 2015 go to printed_nothing; 2016 2017 printed_nothing: 2018 did_something = "0"b; 2019 return; 2020 2021 cant_print: 2022 call ioa_ ("""^a ^a"" is not allowed.", print_comm, idt (IX)); 2023 go to main1; 2024 2025 cant_print_rs: 2026 call ioa_ ("""^a ^a"" is not allowed while editing a rate_structure.", print_comm, idt (IX)); 2027 go to main1; 2028 2029 end do_print; 2030 2031 2032 /* PROCESS SINGLE RETYPE REQUEST */ 2033 2034 do_retype: 2035 procedure (IX); 2036 2037 dcl IX fixed bin; 2038 2039 dcl (i, j, k, n) fixed bin; 2040 dcl c1 char (1); 2041 dcl category_set bit (36) aligned; 2042 dcl rscnm char (32); 2043 dcl devnm char (8); 2044 dcl yn char (4); 2045 2046 if IX < lbound (retype, 1) | IX > hbound (retype, 1) then do; 2047 call com_err_ (0, me, "Internal error. do_retype index ^d.", IX); 2048 return; 2049 end; 2050 2051 go to retype (IX); 2052 2053 retype (1): /* all */ 2054 call ioa_ ("^/Retype installation_parms"); 2055 return; 2056 2057 retype (2): /* installation_id */ 2058 call ask_$ask_line ("Installation id^-", installation_parms.installation_id); 2059 return; 2060 2061 retype (3): /* shift_table */ 2062 call ask_ ("standard shifts?^-", c1); 2063 if c1 = "y" then do; 2064 call set_std_shifttab; 2065 end; 2066 else do; 2067 call ioa_ ("Each digit specifies the shift for that half-hour. Shifts may be 0-7"); 2068 do i = 0 to 6; 2069 do j = 0 to 23; 2070 do n = 0 to 1; 2071 badshf: 2072 call ask_$ask_int ("^a ^2d^2d^-", k, substr (daynam, i * 3 + 1, 3), j, 30 * n); 2073 if k > 7 | k < 0 then do; 2074 call ioa_ ("Shifts must be 0-7"); 2075 call ask_$ask_clr (); 2076 go to badshf; 2077 end; 2078 call set_shift_field (i, j, k, n); 2079 end; 2080 end; 2081 end; 2082 end; 2083 return; 2084 2085 retype (4): /* prices */ 2086 call get_disk_price (rate_structure.disk_price); 2087 call ask_$ask_flo ("registration^-", rate_structure.registration_price); 2088 call ask_$ask_yn ("Do you want to retype CPU, log, mem and io ops prices^-", yn); 2089 if yn ^= "yes" then return; 2090 call ioa_ ("Input CPU, log, mem, io ops prices for each shift from 0 to 7"); 2091 do i = 0 to 7; 2092 call ask_$ask_flo ("CPU ^d^-", rate_structure.cpu_price (i), i); 2093 call ask_$ask_flo ("log ^d^-", rate_structure.log_base_price (i), i); 2094 call ask_$ask_flo ("mem ^d^-", rate_structure.core_price (i), i); 2095 call ask_$ask_flo ("io ops ^d^-", rate_structure.io_ops_price (i), i); 2096 end; 2097 return; 2098 2099 retype (5): /* titles */ 2100 call ask_$ask_line ("company^-^-", installation_parms.company); 2101 call ask_$ask_line ("department^-", installation_parms.department); 2102 call ask_$ask_line ("company (ds)^-", installation_parms.companyds); 2103 call ask_$ask_line ("department (ds)^-", installation_parms.departmentds); 2104 return; 2105 2106 retype (6): /* level_names */ 2107 call ioa_ ("Enter names for ^d security levels.", dimension (installation_parms.level_names (*), 1)); 2108 2109 do i = lbound (installation_parms.level_names (*), 1) to hbound (installation_parms.level_names (*), 1); 2110 call enter_level_name (i); 2111 end; 2112 2113 return; 2114 2115 retype (7): /* inactive_time */ 2116 call set_half_al (idt (7), "seconds", installation_parms.inactive_time, 0, NOLIMIT); 2117 return; 2118 2119 retype (58): /* inactive_time */ 2120 call set_half_al (idt (58), "seconds", installation_parms.operator_inactive_time, 0, NOLIMIT); 2121 return; 2122 2123 retype (8): /* warning_time */ 2124 call set_half_al (idt (8), "seconds", installation_parms.warning_time, 0, NOLIMIT); 2125 return; 2126 2127 retype (9): /* login_time */ 2128 call set_half_al (idt (9), "seconds", installation_parms.login_time, 0, NOLIMIT); 2129 return; 2130 2131 retype (10): /* tries */ 2132 call set_half_al (idt (10), "", installation_parms.login_tries, 1, NOLIMIT); 2133 return; 2134 2135 retype (11): /* update_time */ 2136 call set_half_al ("acct update", "seconds", installation_parms.acct_update, 0, NOLIMIT); 2137 return; 2138 2139 retype (12): /* device_prices */ 2140 call ioa_ ("Enter device prices for all shifts"); 2141 do i = 1 to rate_structure.ndevices; 2142 call input_device_price (i, (installation_parms.devtab (i).device_id), THIS_RS, NO_SET_HI); 2143 end; 2144 return; 2145 2146 retype (13): /* config_table */ 2147 call ioa_ ("Enter config table"); 2148 do i = 1 to hbound (installation_parms.cona, 1); 2149 call input_config_element (i); 2150 installation_parms.ncon = i - 1; 2151 if installation_parms.cona.cpu (i) = 0 then do; 2152 call check_config_table; 2153 return; 2154 end; 2155 end; 2156 call ioa_ ("config table full"); 2157 call ask_$ask_clr (); 2158 return; 2159 2160 retype (14): /* queue_prices */ 2161 call ioa_ ("Enter queue prices"); 2162 do i = 1 to 4; 2163 call ask_$ask_flo ("abs CPU ^d^-", rate_structure.abs_cpu_price (i), i); 2164 call ask_$ask_flo ("abs mem ^d^-", rate_structure.abs_mem_price (i), i); 2165 call ask_$ask_flo ("iod records ^d^-", rate_structure.iod_rec_price (i), i); 2166 end; 2167 return; 2168 2169 retype (15): /* abs_queue_parameters */ 2170 call ioa_ ("Enter abs timax (microseconds) and default and max limits (seconds) for queues 1-4"); 2171 return; 2172 2173 retype (16): /* category_names */ 2174 call ioa_ ("Enter names for ^d security categories.", dimension (installation_parms.category_names (*), 1)); 2175 do i = lbound (installation_parms.category_names (*), 1) to hbound (installation_parms.category_names (*), 1); 2176 call enter_category_name (i); 2177 end; 2178 return; 2179 2180 retype (17): /* access_ceiling */ 2181 call set_half_al ("Maximum sensitivity level", "", i, lbound (installation_parms.level_names, 1), 2182 hbound (installation_parms.level_names, 1)); 2183 2184 retype_category_set: 2185 category_set = ""b; 2186 n = divide (dimension (installation_parms.category_names (*), 1), 3, 17, 0); 2187 call ask_$ask_line ("Categories in use: (^d octal digits) ", char48, n); 2188 if verify (substr (char48, 1, n), "01234567") ^= 0 then do; 2189 call ioa_ ("Must be ^d octal digits. Retype it.", n); 2190 call ask_$ask_clr (); 2191 go to retype_category_set; 2192 end; 2193 2194 do j = 1 to n; 2195 substr (category_set, 3 * j - 2, 3) = bit (fixed (index ("01234567", substr (char48, j, 1)) - 1, 3), 3); 2196 end; 2197 2198 addr (installation_parms.access_authorization_ceiling) -> aim_template.level = i; 2199 addr (installation_parms.access_authorization_ceiling) -> aim_template.categories = category_set; 2200 string (addr (installation_parms.access_authorization_ceiling) -> aim_template.privileges) = ""b; 2201 return; 2202 2203 retype (18): /* log_parameters */ 2204 call ask_$ask_int ("syserr log copying threshold:^-", i); 2205 if i > 256 | i < -1 then do; 2206 call ioa_ ("Threshold must be: -1 (disable log copying)^/^20x0 (use built-in default)"); 2207 call ioa_ ("^16x1-256 (max size of log in pages before copying begins)^/Please retype."); 2208 call ask_$ask_clr (); 2209 go to retype (18); 2210 end; 2211 installation_parms.syserr_log_copy_threshold = i; 2212 return; 2213 2214 retype (19): /* strict_trusted_path */ 2215 call ask_$ask_yn ("trusted path login:^-", yn); 2216 installation_parms.trusted_path_login = (yn = "yes"); 2217 return; 2218 2219 retype (57): /* require_operator_login */ 2220 call ask_$ask_yn ("require operator login:^-", yn); 2221 installation_parms.require_operator_login = (yn = "yes"); 2222 return; 2223 2224 retype (59): /* validate_daemon_commands */ 2225 call ask_$ask_yn ("validate daemon commands:^-", yn); 2226 installation_parms.validate_daemon_commands = (yn = "yes"); 2227 return; 2228 2229 retype (60): /* password_min_length */ 2230 call set_half_al (idt (60), "", installation_parms.password_min_length, 2231 0, 8); 2232 return; 2233 retype (61): /* password_gpw_length */ 2234 call set_half_al (idt (61), "", installation_parms.password_gpw_length, 2235 1, 8); 2236 return; 2237 retype (62): /* password_change_interval */ 2238 call ask_$ask_int ("Password Change Interval (in days):^-", i); 2239 if i < 0 then do; 2240 call ioa_ ("Password Change Interval must be greater than zero."); 2241 goto retype (62); 2242 end; 2243 installation_parms.password_change_interval = i; 2244 return; 2245 retype (63): /* password_expiration_interval */ 2246 call ask_$ask_int ("Password Expiration Interval (in days):^-", i); 2247 if i < 0 then do; 2248 call ioa_ ("Password Expiration Interval must be greater than zero."); 2249 goto retype (62); 2250 end; 2251 installation_parms.password_expiration_interval = i; 2252 return; 2253 retype (64): 2254 call ask_$ask_yn ("vchn_requires_accept:^-", yn); 2255 installation_parms.vchn_requires_accept = (yn = "yes"); 2256 return; 2257 retype (20): /* devname */ 2258 go to cant_retype_must_change; 2259 2260 retype (21): /* resource_prices */ 2261 call ioa_ ("Enter resource prices"); 2262 do i = 1 to rate_structure.nrscp; 2263 if rate_structure.resource (i).price >= 0e0 then 2264 /* not a rate structure */ 2265 call input_resource_price (i, (installation_parms.resource (i).name), THIS_RS, NO_SET_HI); 2266 end; 2267 return; 2268 2269 retype (22): /* rscname */ 2270 go to cant_retype_must_change; 2271 2272 retype (23): /* resource_wait_time */ 2273 call set_halfword ("resource wait time", "seconds", installation_parms.rsc_timer_seconds, 0, NOLIMIT); 2274 return; 2275 2276 retype (24): /* fpe_time */ 2277 call set_halfword ("fatal process error loop time", "seconds", installation_parms.fatal_error_loop_seconds, 0, 2278 NOLIMIT); 2279 return; 2280 2281 retype (25): /* fpe_count */ 2282 call set_halfword ("fatal process error loop count", "", installation_parms.fatal_error_loop_count, 0, NOLIMIT); 2283 return; 2284 2285 retype (26): /* trm_real_time */ 2286 call set_halfword ("trm_ real time limit", "seconds", installation_parms.term_real_time_seconds, 0, NOLIMIT); 2287 return; 2288 2289 retype (27): /* trm_cpu_time */ 2290 call set_halfword ("trm_ cpu time limit", "seconds", installation_parms.term_cpu_time_seconds, 0, NOLIMIT); 2291 return; 2292 2293 retype (28): /* unload_on_detach */ 2294 installation_parms.rcp_init_flags.unload_on_detach = ask_on_off (idt (keywx)); 2295 return; 2296 2297 retype (29): /* authentication_level */ 2298 installation_parms.rcp_init_flags.authentication_level = enter_authentication_level (); 2299 return; 2300 2301 retype (30): /* default_pdir_seg_quota */ 2302 call set_halfword ("default pdir segment quota", "records", installation_parms.default_pdir_seg_quota, 100, NOLIMIT); 2303 return; 2304 2305 retype (56): /* default_pdir_dir_quota */ 2306 call set_halfword ("default pdir directory quota", "records", installation_parms.default_pdir_dir_quota, 100, NOLIMIT); 2307 return; 2308 2309 retype (31): /* rsc_mgmt_enabled */ 2310 installation_parms.rcp_init_flags.resource_mgmt_enabled = ask_on_off (idt (31)); 2311 return; 2312 2313 retype (32): /* auto_registration */ 2314 installation_parms.rcp_init_flags.auto_registration = ask_on_off (idt (32)); 2315 return; 2316 2317 retype (33): /* enable_ss_volume_mount */ 2318 go to retyped_nothing; 2319 2320 retype (34): /* foreground_queue_position */ 2321 call set_halfword (idt (34), "", installation_parms.foreground_queue_position, 0, 4); 2322 return; 2323 2324 2325 retype (35): /* idle_time_constant */ 2326 call set_halfword (idt (35), "seconds", installation_parms.idle_time_constant_seconds, 60, 1800); 2327 return; 2328 2329 2330 retype (36): /* sus_cpu_time */ 2331 call set_halfword (idt (36), "seconds", installation_parms.sus_cpu_time_seconds, 1, NOLIMIT); 2332 return; 2333 2334 2335 retype (37): /* sus_real_time */ 2336 call set_halfword (idt (37), "seconds", installation_parms.sus_real_time_seconds, 30, NOLIMIT); 2337 return; 2338 2339 2340 retype (38): /* max_abs */ 2341 call set_sval (idt (38), installation_parms.max_abs, -1, NOLIMIT); 2342 return; 2343 2344 retype (39): /* min_abs */ 2345 call set_sval (idt (39), installation_parms.min_abs, 0, NOLIMIT); 2346 return; 2347 2348 retype (40): /* pct_abs */ 2349 call set_sval (idt (40), installation_parms.pct_abs, 0, 100); 2350 return; 2351 2352 retype (41): /* max_qres */ 2353 call set_sqval (idt (41), installation_parms.max_qres, 0, NOLIMIT); 2354 return; 2355 2356 retype (42): /* min_qres */ 2357 call set_sqval (idt (42), installation_parms.min_qres, 0, NOLIMIT); 2358 return; 2359 2360 retype (43): /* pct_qres */ 2361 call set_sqval (idt (43), installation_parms.pct_qres, 0, 100); 2362 return; 2363 2364 retype (44): /* abs_cpu_max_limit */ 2365 call set_sqlval (idt (44), installation_parms.abs_cpu_max_limit, 0, NOLIMIT); 2366 call check_abs_cpu_limit; 2367 return; 2368 2369 retype (45): /* abs_timax */ 2370 call set_qval (idt (45), installation_parms.abs_timax, 1000000, NOLIMIT); 2371 return; 2372 2373 retype (46): /* abs_cpu_default_limit */ 2374 call set_qval (idt (46), installation_parms.abs_cpu_default_limit, 0, NOLIMIT); 2375 call check_abs_cpu_limit; 2376 return; 2377 2378 retype (47): /* foregound_cpu_default_limit */ 2379 call set_word (idt (47), "seconds", installation_parms.foreground_cpu_default_limit, 0, NOLIMIT); 2380 return; 2381 2382 2383 retype (48): /* abs_default_queue */ 2384 call set_halfword (idt (48), "", installation_parms.default_absentee_queue, 1, 4); 2385 return; 2386 2387 2388 retype (49): /* cwe_time */ 2389 call set_halfword ("channel wakeup error loop time", "seconds", 2390 installation_parms.chn_wakeup_error_loop_seconds, 0, NOLIMIT); 2391 return; 2392 2393 retype (50): /* cwe_count */ 2394 call set_halfword ("channel wakeup error loop count", "", installation_parms.chn_wakeup_error_loop_count, 0, 2395 NOLIMIT); 2396 return; 2397 2398 2399 retype (51): /* rates */ 2400 call ioa_ ("^/Retype rate_structure ^a", ptr_rs_name (cur_rs_ptr)); 2401 return; 2402 2403 retype (52): /* devices */ 2404 if edit_rs then go to cant_retype_rs; 2405 call ioa_ ("Warning: this operation changes the positions of devices in device table;"); 2406 call ioa_ ("it should only be done in a special session just after billing has been run."); 2407 call ask_$ask_yn ("Do you wish to proceed? ", char8); 2408 if char8 ^= "yes" then go to main1; 2409 call ioa_ ("Enter device prices."); 2410 do i = 1 to hbound (installation_parms.devtab, 1); 2411 if i <= hbound (dev_id, 1) then 2412 devnm = dev_id (i); 2413 else do; 2414 deviclp: 2415 call ask_ ("Enter device id or ""x"" to exit^-", devnm); 2416 if devnm = "x" then return; 2417 j = devtab$$undefined (devnm, NO_SPECIAL_DEVICES, COMPLAIN); 2418 /* unique device name? */ 2419 if j >= 0 then go to deviclp; /* no - try again */ 2420 end; 2421 call input_device_price (i, devnm, ALL_RS, SET_HI); 2422 end; 2423 call ioa_ ("Device table full"); 2424 call ask_$ask_clr (); 2425 return; 2426 2427 retype (53): /* resources */ 2428 if edit_rs then go to cant_retype_rs; 2429 call ioa_ ("Warning: retyping the resource price list might make other system tables invalid."); 2430 call ask_$ask_yn ("Do you want to retype the resource price list?^-", char8); 2431 if char8 = "no" then return; 2432 call ioa_ ("Enter resource names and prices, or ""x"" to exit."); 2433 i = 0; 2434 rt53a: 2435 call ask_ ("resource:^-", rscnm); 2436 if rscnm = "x" then return; 2437 j = rsctab$$undefined (rscnm, COMPLAIN); /* unique resource name */ 2438 if j < 0 then do; /* nope */ 2439 i = i + 1; 2440 call input_resource_price (i, rscnm, ALL_RS, SET_HI); 2441 end; 2442 go to rt53a; 2443 2444 retype (54): /* rate_structure_name */ 2445 go to cant_retype_must_change; 2446 2447 retype (55): /* all_structures */ 2448 if edit_rs then go to cant_retype_rs; 2449 go to retyped_nothing; 2450 2451 retyped_nothing: 2452 did_something = "0"b; 2453 return; 2454 2455 cant_retype_must_change: 2456 call ioa_ ("cannot retype ^a; use change", idt (keywx)); 2457 go to main1; 2458 2459 cant_retype: 2460 call ioa_ ("""^a ^a"" is not allowed.", print_comm, idt (IX)); 2461 go to main1; 2462 2463 cant_retype_rs: 2464 call ioa_ ("""^a ^a"" is not allowed while editing a rate_structure.", print_comm, idt (IX)); 2465 go to main1; 2466 2467 end do_retype; 2468 2469 2470 /* ------------------------------ */ 2471 2472 ask_on_off: 2473 procedure (name) returns (bit (1) aligned); 2474 2475 dcl name char (*); 2476 2477 call ask_ ("^a:^-", char8, name); 2478 do while ("1"b); 2479 if char8 = "yes" | char8 = "on" then return ("1"b); 2480 else if char8 = "no" | char8 = "off" then return (""b); 2481 else do; 2482 call ask_$ask_clr (); 2483 call ask_ ("Please answer ""yes"", ""no"", ""on"", or ""off""; ^a: ^x", char8, name); 2484 end; 2485 end; 2486 2487 end ask_on_off; 2488 2489 /* ------------------------------ */ 2490 2491 check_abs_cpu_limit: /* make sure each default is OK */ 2492 procedure; 2493 2494 dcl (qok, qbad) (4) bit (1) aligned init ((4) (1)""b); 2495 dcl nbad fixed bin init (0); 2496 dcl (s, q) fixed bin; 2497 2498 do q = 1 to 4; 2499 do s = 0 to 7; 2500 if installation_parms.abs_cpu_default_limit (q) <= installation_parms.abs_cpu_max_limit (s, q) then 2501 qok (q) = "1"b; 2502 end; 2503 if ^qok (q) then do; 2504 qbad (q) = "1"b; 2505 nbad = nbad + 1; 2506 end; 2507 end; 2508 2509 if nbad > 0 then do; 2510 call ioa_ ("Warning: the default limit is higher than the max limit"); 2511 call ioa_ ("on all shifts, for queue^[s^]^[^x1^]^[^x2^]^[^x3^]^[^x4^].", (nbad > 1), qbad); 2512 call ioa_ ("If you don't change one of them, jobs using the default will never log in."); 2513 end; 2514 2515 return; 2516 2517 end check_abs_cpu_limit; 2518 2519 /* ------------------------------ */ 2520 2521 check_device_names: 2522 procedure returns (bit (1) aligned); 2523 2524 dcl (i, j) fixed bin; 2525 2526 do i = 1 to hbound (dev_id, 1); /* for each required device name */ 2527 do j = 1 to rate_structure.ndevices while (dev_id (i) ^= rate_structure.device_id (j)); 2528 end; 2529 if j > rate_structure.ndevices then 2530 call ioa_ ("Warning: device ""^a"" not in device table. It should be added.", dev_id (i)); 2531 end; 2532 return ("0"b); 2533 2534 end check_device_names; 2535 2536 /* ------------------------------ */ 2537 2538 checkid: 2539 procedure (xid, loud_sw) returns (fixed bin (17)); 2540 2541 dcl xid char (*); 2542 dcl loud_sw bit (1) aligned; 2543 2544 dcl ib fixed bin; 2545 dcl i fixed bin; 2546 dcl keywx fixed bin; 2547 2548 do ib = 1 to hbound (keyw, 1); 2549 if xid = keyw (ib) then do; 2550 keywx = keyn (ib); /* key number */ 2551 if edit_rs then do; /* not valid for rate_structures? */ 2552 do i = 1 to hbound (valid_for_rs, 1) while (valid_for_rs (i) < keywx); 2553 end; 2554 if valid_for_rs (i) > keywx then do; 2555 if loud_sw then do; 2556 call ioa_ ("The identifier ""^a"" is not valid while editing a rate_structure.", 2557 idt (keywx)); 2558 call ask_$ask_clr (); 2559 end; 2560 return (NOT_RS_ID); 2561 end; 2562 end; 2563 return (keywx); 2564 end; 2565 end; 2566 if loud_sw then do; 2567 call ioa_ ("illegal change id ""^a"". Type help for instructions.", xid); 2568 call ask_$ask_clr (); 2569 end; 2570 return (ID_NOT_FOUND); 2571 2572 end checkid; 2573 2574 /* ------------------------------ */ 2575 2576 check_config_table: 2577 procedure; 2578 2579 dcl (this_ord, highest_ord) fixed bin (71); 2580 dcl i fixed bin; 2581 dcl (bad_dup, bad_null, bad_order) bit (1) aligned; 2582 2583 bad_dup, bad_null, bad_order = ""b; 2584 highest_ord = -2; 2585 2586 do i = 1 to installation_parms.ncon; 2587 this_ord = 2588 gen_config_ordinal ((installation_parms.cona (i).cpu), (installation_parms.cona (i).kmem), 2589 (installation_parms.cona (i).kbulk), (installation_parms.cona (i).shift)); 2590 if this_ord = -1 then bad_null = "1"b; 2591 else if this_ord < highest_ord then bad_order = "1"b; 2592 else if this_ord = highest_ord then bad_dup = "1"b; 2593 else highest_ord = this_ord; 2594 end; 2595 if bad_dup | bad_null | bad_order then do; 2596 call ioa_ ("Config table error(s).^[ Duplicate entires.^]^[ Null entries.^]^[ Entries out of order.^]", 2597 bad_dup, bad_null, bad_order); 2598 call sort_config_table; 2599 end; 2600 2601 end check_config_table; 2602 2603 /* ------------------------------ */ 2604 2605 clean_up: 2606 procedure; 2607 dcl i fixed bin; 2608 2609 if ip = null then return; /* no segments active */ 2610 do i = hbound (rs_ptrs, 1) to 0 by -1; /* do installation_parms & copy last */ 2611 if rs_ptrs (i) ^= null then do; /* working copy? */ 2612 call hcs_$delentry_seg (rs_ptrs (i), ec); 2613 /* delete it */ 2614 rs_ptrs (i) = null; /* remember it's gone */ 2615 end; 2616 if rs_ptrs1 (i) ^= null then do; /* real segment? */ 2617 call terminate_file_ (rs_ptrs1 (i), (0), TERM_FILE_TERM, ec); 2618 /* get rid of it */ 2619 rs_ptrs1 (i) = null; /* forget it */ 2620 end; 2621 end; 2622 end clean_up; 2623 2624 /* ------------------------------ */ 2625 2626 devtab$$defined: /* search devtab */ 2627 procedure (devnm, any_sw, loud_sw) returns (fixed bin); 2628 2629 dcl devnm char (*); 2630 dcl any_sw bit (1) aligned; 2631 dcl loud_sw bit (1) aligned; 2632 2633 dcl i fixed bin; 2634 dcl j fixed bin; 2635 dcl should_find bit (1) aligned; 2636 2637 should_find = "1"b; /* we WANT to find it */ 2638 go to devtab_common; 2639 2640 devtab$$undefined: /* search devtab */ 2641 entry (devnm, any_sw, loud_sw) returns (fixed bin (17)); 2642 2643 should_find = "0"b; /* don't want to find it */ 2644 2645 devtab_common: 2646 do i = 1 to installation_parms.ndevices; /* whole devtab */ 2647 if installation_parms.devtab (i).device_id = devnm then do; 2648 /* what we're checking for? */ 2649 if should_find then /* did we want to find it? */ 2650 if any_sw ^= SPECIAL_DEVICES_OK then do; 2651 /* have to check for special */ 2652 do j = 1 to hbound (dev_id, 1); 2653 /* see if special name */ 2654 if devnm = dev_id (j) then do; 2655 /* yes, it's special */ 2656 if loud_sw then do; /* complain? */ 2657 call ioa_ ("""^a"" is a reserved device name.", devnm); 2658 call ask_$ask_clr (); 2659 /* clean up */ 2660 end; 2661 return (-1); /* indicate we're unhappy */ 2662 end; /* found a special name */ 2663 end; /* loop to check for special */ 2664 end; /* have to check for special */ 2665 if ^should_find & loud_sw then do; /* shouldn't have found it */ 2666 call ioa_ ("Device ""^a"" is already defined.", devnm); 2667 call ask_$ask_clr (); 2668 end; 2669 return (i); 2670 end; 2671 end; 2672 if should_find & loud_sw then do; /* should have found it, but we didn't */ 2673 call ioa_ ("Device ""^a"" is not defined.", devnm); 2674 call ask_$ask_clr (); 2675 end; 2676 return (-1); 2677 end devtab$$defined; 2678 2679 /* ------------------------------ */ 2680 2681 enter_authentication_level: 2682 procedure returns (fixed bin); 2683 2684 dcl i fixed bin, 2685 ans char (32); 2686 2687 get_again: 2688 call ask_$ask_line ("Authentication level: ", ans); 2689 2690 do i = lbound (authentication_level_names, 1) to hbound (authentication_level_names, 1); 2691 if (authentication_level_names (i) = ans) then return (i); 2692 end; 2693 2694 call ioa_ ("Authentication level must be ^v(^a, ^) or ^a. Reenter level.", 2695 dim (authentication_level_names, 1) - 1, authentication_level_names (*)); 2696 call ask_$ask_clr (); 2697 go to get_again; 2698 2699 end enter_authentication_level; 2700 2701 /* ------------------------------ */ 2702 2703 enter_category_name: 2704 procedure (i); 2705 2706 dcl i fixed bin; 2707 2708 dcl name char (32); 2709 dcl short_name char (8); 2710 2711 installation_parms.category_names (i) = ""; /* null out so invalid_name doesn't find a duplicate. */ 2712 installation_parms.short_category_names (i) = ""; 2713 2714 change_this_name: 2715 call ask_$ask_line ("Category ^d: ", name, i); 2716 if name = "." then do; 2717 reenter_name: 2718 call ioa_ ("No categories may be unnamed. Reenter name."); 2719 call ask_$ask_clr (); 2720 go to change_this_name; 2721 end; 2722 2723 call ask_$ask_line (" (short name) Category ^d: ", short_name, i); 2724 if short_name = "." then go to reenter_name; 2725 2726 if invalid_name (name, length (installation_parms.category_names (1)), "1"b) then go to change_this_name; 2727 2728 if invalid_name (short_name, length (installation_parms.short_category_names (1)), "0"b) then 2729 go to change_this_name; 2730 2731 installation_parms.category_names (i) = name; 2732 installation_parms.short_category_names (i) = short_name; 2733 2734 end enter_category_name; 2735 2736 /* ------------------------------ */ 2737 2738 enter_level_name: 2739 procedure (i); 2740 2741 dcl i fixed bin; 2742 2743 dcl name char (32); 2744 dcl short_name char (8); 2745 2746 installation_parms.level_names (i) = ""; /* null out so invalid_name doesn't find a duplicate. */ 2747 installation_parms.short_level_names (i) = ""; 2748 2749 change_this_name: 2750 call ask_$ask_line ("Level ^d: ", name, i); 2751 if name = "." then 2752 if i = 0 then 2753 name = ""; 2754 else do; 2755 reenter_name: 2756 call ioa_ ("Only level 0 may be unnamed. Reenter name."); 2757 call ask_$ask_clr (); 2758 go to change_this_name; 2759 end; 2760 2761 call ask_$ask_line (" (short name) Level ^d: ", short_name, i); 2762 if short_name = "." then 2763 if i = 0 then 2764 short_name = ""; 2765 else go to reenter_name; 2766 2767 if invalid_name (name, length (installation_parms.level_names (0)), "1"b) then go to change_this_name; 2768 2769 if invalid_name (short_name, length (installation_parms.short_level_names (0)), "0"b) then 2770 go to change_this_name; 2771 2772 installation_parms.level_names (i) = name; 2773 installation_parms.short_level_names (i) = short_name; 2774 return; 2775 2776 end enter_level_name; 2777 2778 /* ------------------------------ */ 2779 2780 gen_config_ordinal: /* make a number which describes NCPU, NMEM, NBULK and SHIFT */ 2781 /* of a config-table entry */ 2782 procedure (ncpu, nmem, nbulk, shift) returns (fixed bin (71)); 2783 2784 dcl (ncpu, nmem, nbulk, shift) fixed bin; 2785 2786 if ncpu < 0 | nmem < 0 | nbulk < 0 | shift < 0 then 2787 /* something naughty? */ 2788 return (-1); 2789 else return ((((ncpu * 100000 + nmem) * 100000) + nbulk) * 10 + shift); 2790 2791 end gen_config_ordinal; 2792 2793 /* ------------------------------ */ 2794 2795 get_disk_price: 2796 procedure (price); 2797 2798 dcl price float bin (27); 2799 2800 dcl char32 char (32); 2801 dcl f float bin (27); 2802 dcl i fixed bin; 2803 2804 call ask_$ask_n (char32, i); 2805 if i = 0 then /* no typeahead */ 2806 call ioa_ ("enter disk price as 'N' (page-second) or 'N/month' (page-30-days)"); 2807 do while ("1"b); /* keep going until user gets it right */ 2808 call ask_ ("disk price^-", char32); 2809 if index (char32, "/mo") ^= 0 then do; /* per-30-day month */ 2810 call cv_float_ (rtrim (before (char32, "/mo")), ec, f); 2811 if ec = 0 then do; 2812 price = f / SECONDS_PER_MONTH; /* units are page-seconds */ 2813 return; 2814 end; 2815 end; 2816 else do; /* per second */ 2817 call cv_float_ (rtrim (char32), ec, f); 2818 if ec = 0 then do; 2819 price = f; 2820 return; 2821 end; 2822 end; 2823 call ask_$ask_clr (); /* error in floating point number */ 2824 end; 2825 end get_disk_price; 2826 2827 /* ------------------------------ */ 2828 2829 get_nums: 2830 procedure (prompt, n1, n2); 2831 2832 dcl prompt char (*); 2833 dcl (n1, n2) fixed bin; 2834 dcl ia fixed bin; 2835 2836 ask_for_nums: 2837 call ask_ ("^a", char32, prompt); 2838 if verify (rtrim (char32), "0123456789-") ^= 0 then do; 2839 bad_nums: 2840 call ask_$ask_clr (); 2841 call ioa_ ("""^a"" invalid. Give one number or two joined by a hyphen.", char32); 2842 go to ask_for_nums; 2843 end; 2844 2845 ia = index (char32, "-"); 2846 if ia = 0 then 2847 n1, n2 = cv_dec_ (char32); /* we already checked */ 2848 else do; 2849 if ia = 1 /* if leading hyphen */ 2850 | substr (char32, ia + 1) = "" /* or trailing hyphen */ 2851 | index (substr (char32, ia + 1), "-") ^= 0 2852 /* or more than one hyphen */ 2853 then go to bad_nums; /* go complain */ 2854 n1 = cv_dec_ ((substr (char32, 1, ia - 1))); 2855 n2 = cv_dec_ ((substr (char32, ia + 1))); 2856 end; 2857 2858 return; 2859 2860 end get_nums; 2861 2862 /* ------------------------------ */ 2863 2864 get_shift_queue: 2865 procedure (q_lo, q_hi, s_lo, s_hi); /* Checks for typed-ahead shift and queue numbers; 2866* returns first and last shift in s_lo and s_hi; 2867* s_lo = -1 if no shift typed ahead; 2868* same for q_lo and q_hi for queues. */ 2869 2870 dcl (q_lo, q_hi, s_lo, s_hi) fixed bin; 2871 2872 dcl (get_shift, get_queue) bit (1) aligned init (""b); 2873 dcl x fixed bin; 2874 2875 /* Main entry point - get both shift and queue */ 2876 2877 get_shift, get_queue = "1"b; 2878 s_lo, q_lo = -1; /* we haven't gotten either one, yet */ 2879 2880 gsq_common: /* come here from get_shift or get_queue */ 2881 call ask_$ask_n (char32, x); 2882 if x = 0 then return; /* if nothing typed ahead */ 2883 if get_shift & char32 = "shift" then do; 2884 call ask_ ("", char32); /* clear it from the line */ 2885 call get_nums ("shift(s)", s_lo, s_hi); /* get "s" or "s1-s2" */ 2886 get_shift = ""b; /* we have gotten it */ 2887 end; 2888 else if get_queue & char32 = "queue" then do; 2889 call ask_ ("", char32); 2890 call get_nums ("queue(s)", q_lo, q_hi); 2891 get_queue = ""b; 2892 end; 2893 else return; /* if we wanted both, go back for the other one */ 2894 if get_shift | get_queue then go to gsq_common; 2895 return; 2896 2897 get_shift: 2898 entry (s_lo, s_hi); 2899 2900 s_lo = -1; 2901 get_shift = "1"b; 2902 go to gsq_common; 2903 2904 get_queue: 2905 entry (q_lo, q_hi); 2906 2907 q_lo = -1; 2908 get_queue = "1"b; 2909 go to gsq_common; 2910 2911 end get_shift_queue; 2912 2913 /* ------------------------------ */ 2914 2915 idt: 2916 procedure (n) returns (char (32)); /* returns primary keyword, given key number */ 2917 2918 dcl n fixed bin; 2919 dcl ia fixed bin; 2920 2921 do ia = 1 to hbound (keyn, 1); 2922 if keyn (ia) = n then return (keyw (ia)); 2923 end; 2924 call com_err_ (0, me, "Internal error in ""idt"" function."); 2925 return ("UNKNOWN!"); 2926 2927 end idt; 2928 2929 /* ------------------------------ */ 2930 2931 input_config_element: 2932 procedure (i); 2933 dcl i fixed bin; 2934 2935 dcl j fixed bin; 2936 dcl ftmp float bin; 2937 call set_half_al ("ncpu", "", j, -1, 8); 2938 installation_parms.cona.cpu (i) = j; 2939 if j <= 0 then return; 2940 call set_half_al ("mem", "Kwords", j, 0, NOLIMIT); 2941 installation_parms.cona.kmem (i) = j; 2942 call set_half_al ("bulk", "Kwords", j, 0, NOLIMIT); 2943 installation_parms.cona.kbulk (i) = j; 2944 call set_half_al ("shift", "", j, 0, 7); 2945 installation_parms.cona.shift (i) = j; 2946 call ask_$ask_flo ("min ", ftmp); 2947 installation_parms.cona.response_low (i) = ftmp * 1e1; 2948 call ask_$ask_flo ("max ", ftmp); 2949 installation_parms.cona.response_high (i) = ftmp * 1e1; 2950 call ask_$ask_flo ("base ", ftmp); 2951 installation_parms.cona.maxu_base (i) = ftmp * 1e1; 2952 call set_half_al ("absu", "", j, 0, NOLIMIT); 2953 installation_parms.cona.maxa (i) = j; 2954 call set_half_al ("absq", "", j, 1, 4); 2955 installation_parms.cona.maxq (i) = j; 2956 installation_parms.cona.x1 (i) = 0; 2957 installation_parms.cona.x2 (i) = 0; 2958 installation_parms.cona.x3 (i) = 0; 2959 2960 end input_config_element; 2961 2962 /* ------------------------------ */ 2963 2964 input_device_price: 2965 procedure (devx, devnm, all_sw, set_hi); 2966 2967 dcl devx fixed bin; 2968 dcl devnm char (*); 2969 dcl all_sw bit (1) aligned; 2970 dcl set_hi bit (1) aligned; 2971 2972 dcl rsp ptr; 2973 dcl i fixed bin; 2974 dcl s fixed bin; 2975 dcl (hi, lo) fixed bin; 2976 dcl save_crit bit (1) aligned; 2977 2978 /* maybe allow copy or zero? */ 2979 2980 save_crit = critical_op; 2981 critical_op = critical_op | (all_sw = ALL_RS); 2982 if all_sw = ALL_RS then do; /* one, or all RS? */ 2983 hi = installation_parms.nrates; 2984 lo = 0; 2985 end; 2986 else hi, lo = rate_structure.rate_structure_number; 2987 2988 do i = lo to hi; /* run the gamut */ 2989 rsp = rs_ptrs (i); /* which RS now? */ 2990 if all_sw = ALL_RS & installation_parms.nrates > 0 then 2991 /* tell user which one, if more than one */ 2992 call ioa_ ("rate_structure ""^a""", ptr_rs_name (rsp)); 2993 rsp -> rate_structure.device_id (devx) = devnm; 2994 do s = 0 to 7; /* get price for each shift */ 2995 call ask_$ask_flo ("^a shift ^d^-", rsp -> rate_structure.device_price (devx, s), devnm, s); 2996 end; 2997 end; 2998 2999 if set_hi = SET_HI then /* do installation_parms last */ 3000 do i = hi to lo by -1; /* set number of devices */ 3001 rs_ptrs (i) -> rate_structure.ndevices = devx; 3002 end; 3003 critical_op = save_crit; /* restore old critical indicator */ 3004 end input_device_price; 3005 3006 /* ------------------------------ */ 3007 3008 input_resource_price: 3009 procedure (rscx, rscnm, all_sw, set_hi); 3010 3011 dcl rscx fixed bin; 3012 dcl rscnm char (*); 3013 dcl all_sw bit (1) aligned; 3014 dcl set_hi bit (1) aligned; 3015 3016 dcl f float bin (27); 3017 dcl i fixed bin; 3018 dcl rsp ptr; 3019 dcl (hi, lo) fixed bin; 3020 dcl save_crit bit (1) aligned; 3021 3022 save_crit = critical_op; 3023 critical_op = critical_op | (all_sw = ALL_RS); 3024 if all_sw = ALL_RS then do; /* which RS? */ 3025 hi = installation_parms.nrates; 3026 lo = 0; 3027 end; 3028 else hi, lo = rate_structure.rate_structure_number; 3029 3030 do i = lo to hi; /* for each appropriate RS */ 3031 rsp = rs_ptrs (i); /* point to RS */ 3032 if all_sw = ALL_RS & installation_parms.nrates > 0 then 3033 /* more than one - tell user which */ 3034 call ioa_ ("rate_structure ""^a""", ptr_rs_name (rsp)); 3035 call ask_$ask_flo ("Price of ^a:^-", f, rscnm); 3036 /* price, please */ 3037 rsp -> rate_structure.resource (rscx).price = f; 3038 rsp -> rate_structure.resource (rscx).name = rscnm; 3039 end; 3040 3041 if set_hi then /* do installation_parms last */ 3042 do i = hi to lo by -1; /* set number of resources */ 3043 rs_ptrs (i) -> rate_structure.nrscp = rscx; 3044 end; 3045 3046 critical_op = save_crit; /* restore saved indicator */ 3047 return; 3048 3049 end input_resource_price; 3050 3051 /* ------------------------------ */ 3052 3053 invalid_name: /* check level and category names for duplicates, valid chars, etc. */ 3054 procedure (bv_name, bv_max_len, blank_ok) returns (bit (1) aligned); 3055 3056 /* parameters */ 3057 3058 declare bv_name char (*); 3059 declare bv_max_len fixed bin; 3060 declare blank_ok bit (1) aligned; 3061 3062 /* automatic */ 3063 3064 declare i fixed bin; 3065 3066 /* program */ 3067 3068 if bv_name = "" then return ("0"b); /* null names are always ok */ 3069 3070 if bv_name = "system_low" | bv_name = "system_high" then do; 3071 call ioa_ ("The keyword ^a is not allowed as a level or category name. Reenter both names.", bv_name); 3072 go to invalid; 3073 end; 3074 3075 i = length (bv_name) - verify (reverse (bv_name), " ") + 1; 3076 3077 if i > bv_max_len then do; 3078 call ioa_ ("Name ^a is longer than allowed maximum of ^d characters. Reenter both names.", bv_name, 3079 bv_max_len); 3080 go to invalid; 3081 end; 3082 3083 if verify (substr (bv_name, 1, i), " '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz~") ^= 0 3084 then do; 3085 call ioa_ ("Name ^a contains illegal character (s). Reenter both names.", bv_name); 3086 go to invalid; 3087 end; 3088 3089 if blank_ok then ; 3090 else if index (substr (bv_name, 1, i), " ") ^= 0 then do; 3091 call ioa_ ("Short level and category names may not contain embedded blanks. Reenter both names."); 3092 call ask_$ask_clr (); 3093 return ("1"b); 3094 end; 3095 3096 do i = lbound (installation_parms.level_names (*), 1) to hbound (installation_parms.level_names (*), 1); 3097 if installation_parms.level_names (i) = bv_name then go to found_duplicate; 3098 end; 3099 3100 do i = lbound (installation_parms.category_names (*), 1) to hbound (installation_parms.category_names (*), 1); 3101 if installation_parms.category_names (i) = bv_name then go to found_duplicate; 3102 end; 3103 3104 do i = lbound (installation_parms.short_level_names (*), 1) 3105 to hbound (installation_parms.short_level_names (*), 1); 3106 if installation_parms.short_level_names (i) = bv_name then go to found_duplicate; 3107 end; 3108 3109 do i = lbound (installation_parms.short_category_names (*), 1) 3110 to hbound (installation_parms.short_category_names (*), 1); 3111 if installation_parms.short_category_names (i) = bv_name then go to found_duplicate; 3112 end; 3113 3114 return ("0"b); 3115 3116 found_duplicate: 3117 call ioa_ ("Name ^a is already in use. Reenter both names.", bv_name); 3118 invalid: 3119 call ask_$ask_clr (); 3120 return ("1"b); 3121 3122 end invalid_name; 3123 3124 /* ------------------------------ */ 3125 3126 out_of_range: /* NOLIMIT should check hw/word limit */ 3127 procedure (prompt, v, v_lo, v_hi) returns (bit (1) aligned); 3128 3129 dcl v fixed bin (35); 3130 dcl (v_hi, v_lo) fixed bin (35); 3131 dcl prompt char (*); 3132 dcl dummy char (1); 3133 dcl flag fixed bin; 3134 dcl (error, error_lo, error_hi) bit (1) aligned init (""b); 3135 3136 if v_lo ^= NOLIMIT then 3137 if v < v_lo then error, error_lo = "1"b; 3138 if v_hi ^= NOLIMIT then 3139 if v > v_hi then error, error_hi = "1"b; 3140 3141 if error then do; /* value is out of range */ 3142 call ask_$ask_n (dummy, flag); /* see if anything else was typed ahead */ 3143 call ask_$ask_clr (); /* clear anything that was typed ahead */ 3144 call ioa_ ("ERROR: value of ^a (^d) may not be^[ below ^d^;^s^]^[ or^]^[ above ^d^;^s^].", prompt, v, 3145 (error_lo), v_lo, (error_lo & error_hi), (error_hi), v_hi); 3146 call ioa_ ("Please retype it^[^x(and everything that followed it)^].", (flag > 0)); 3147 return ("1"b); 3148 end; 3149 return (""b); /* value is ok */ 3150 3151 end out_of_range; 3152 3153 /* ------------------------------ */ 3154 3155 print_config_element: 3156 procedure (i); 3157 3158 dcl i fixed bin; 3159 3160 call ioa_ ("^5d ^5d ^5d ^5d ^7.1f ^7.1f ^7.1f ^5d ^5d", installation_parms.cona.cpu (i), 3161 installation_parms.cona.kmem (i), installation_parms.cona.kbulk (i), installation_parms.cona.shift (i), 3162 installation_parms.cona.response_low (i) * 1e-1, installation_parms.cona.response_high (i) * 1e-1, 3163 installation_parms.cona.maxu_base (i) * 1e-1, installation_parms.cona.maxa (i), 3164 installation_parms.cona.maxq (i)); 3165 3166 end print_config_element; 3167 3168 /* ------------------------------ */ 3169 3170 print_halfword: 3171 procedure (name, v); 3172 3173 dcl name char (*); 3174 dcl v fixed bin (17) unaligned; 3175 3176 call ioa_ ("^a:^x^d", name, v); 3177 return; 3178 3179 end print_halfword; 3180 3181 /* ------------------------------ */ 3182 3183 print_sval: 3184 procedure (name, sarray); 3185 3186 dcl name char (*); 3187 dcl sarray (0:7) fixed bin (17) unaligned; 3188 3189 dcl nq fixed bin; 3190 dcl i fixed bin; 3191 dcl arrayp ptr; 3192 dcl array (0:7, nq) fixed bin (17) unaligned based (arrayp); 3193 3194 nq = 1; 3195 arrayp = addr (sarray); 3196 3197 print_sval_common: 3198 call ioa_ ("^a - PER ^[QUEUE AND^x^]SHIFT", name, (nq = 4)); 3199 call ioa_ ("^[Q^x^]^5x0^6x1^6x2^6x3^6x4^6x5^6x6^6x7", (nq = 4)); 3200 do i = 1 to nq; 3201 call ioa_ ("^[^d^x^;^s^]^8(^6d^x^)", (nq = 4), i, array (*, i)); 3202 end; 3203 return; 3204 3205 print_sqval: 3206 entry (name, sqarray); 3207 3208 dcl sqarray (0:7, 4) fixed bin (17) unaligned; 3209 3210 nq = 4; 3211 arrayp = addr (sqarray); 3212 go to print_sval_common; 3213 3214 end print_sval; 3215 3216 /* ------------------------------ */ 3217 3218 ptr_rs_name: /* get name of RS, given pointer to temp seg */ 3219 procedure (rsp) returns (char (32)); 3220 3221 dcl rsp ptr; 3222 dcl i fixed bin; 3223 3224 do i = 0 to installation_parms.nrates; 3225 if rsp = rs_ptrs (i) then return (installation_parms.rate_structures (i)); 3226 end; 3227 call com_err_ (0, me, "Internal error in ""ptr_rs_name""."); 3228 return ("UNKNOWN!"); /* OOG! */ 3229 3230 end ptr_rs_name; 3231 3232 /* ------------------------------ */ 3233 3234 rstab$$defined: /* search rate_structure name table */ 3235 /* just like devtab$$= */ 3236 procedure (rsnm, loud_sw) returns (fixed bin); 3237 3238 dcl rsnm char (*); 3239 dcl loud_sw bit (1) aligned; 3240 3241 dcl i fixed bin; 3242 dcl should_find bit (1) aligned; 3243 3244 should_find = "1"b; 3245 go to rstab_common; 3246 3247 rstab$$undefined: 3248 entry (rsnm, loud_sw) returns (fixed bin (17)); 3249 3250 should_find = "0"b; 3251 3252 rstab_common: 3253 do i = 0 to installation_parms.nrates; 3254 if installation_parms.rate_structures (i) = rsnm | rsnm = "." then do; 3255 if ^should_find & loud_sw then do; 3256 call ioa_ ("rate_structure ""^a"" is already defined.", rsnm); 3257 call ask_$ask_clr (); 3258 end; 3259 return (i); 3260 end; 3261 end; 3262 if should_find & loud_sw then do; 3263 call ioa_ ("rate_structure ""^a"" is not defined.", rsnm); 3264 call ask_$ask_clr (); 3265 end; 3266 return (-1); 3267 3268 end rstab$$defined; 3269 3270 /* ------------------------------ */ 3271 3272 rsctab$$defined: /* search resource table. */ 3273 /* just like devtab$$= */ 3274 procedure (rscnm, loud_sw) returns (fixed bin); 3275 3276 dcl rscnm char (*); 3277 dcl loud_sw bit (1) aligned; 3278 3279 dcl i fixed bin; 3280 dcl should_find bit (1) aligned; 3281 3282 should_find = "1"b; 3283 go to rsctab_common; 3284 3285 rsctab$$undefined: 3286 entry (rscnm, loud_sw) returns (fixed bin (17)); 3287 3288 should_find = "0"b; 3289 3290 rsctab_common: 3291 do i = 0 to installation_parms.nrscp; 3292 if installation_parms.resource (i).name = rscnm then do; 3293 if ^should_find & loud_sw then do; 3294 call ioa_ ("resource ""^a"" is already defined.", rscnm); 3295 call ask_$ask_clr (); 3296 end; 3297 return (i); 3298 end; 3299 end; 3300 if should_find & loud_sw then do; 3301 call ioa_ ("resource ""^a"" is not defined.", rscnm); 3302 call ask_$ask_clr (); 3303 end; 3304 return (-1); 3305 3306 end rsctab$$defined; 3307 3308 /* ------------------------------ */ 3309 3310 set_halfword: 3311 procedure (prompt, units, v17unal, v_lo, v_hi); /* to set fixed bin (17) unaligned scalars */ 3312 3313 dcl prompt char (*); 3314 dcl units char (*); 3315 dcl v17unal fixed bin (17) unaligned; 3316 dcl v17al fixed bin (17) aligned; 3317 dcl v35al fixed bin (35) aligned; 3318 dcl v fixed bin (35); 3319 dcl (v_hi, v_lo) fixed bin (35); 3320 dcl long_sw bit (1) aligned; 3321 dcl aligned_sw bit (1) aligned; 3322 3323 long_sw = "0"b; 3324 aligned_sw = "0"b; 3325 go to set_join; 3326 3327 set_half_al: 3328 entry (prompt, units, v17al, v_lo, v_hi); 3329 3330 long_sw = "0"b; 3331 aligned_sw = "1"b; 3332 go to set_join; 3333 3334 set_word: 3335 entry (prompt, units, v35al, v_lo, v_hi); 3336 3337 aligned_sw = "1"b; 3338 long_sw = "1"b; 3339 go to set_join; 3340 3341 set_join: 3342 do while ("1"b); 3343 call ask_$ask_int ("^a^[^x(^a)^;^s^]:^x", v, prompt, (units ^= ""), units); 3344 if ^out_of_range (prompt, v, v_lo, v_hi) then do; 3345 if long_sw then v35al = v; 3346 else if aligned_sw then v17al = v; 3347 else v17unal = v; 3348 return; 3349 end; 3350 end; 3351 3352 end set_halfword; 3353 3354 /* ------------------------------ */ 3355 3356 /* Internal procedure to set per-queue, per-shift, and per-queue-and-shift parameters */ 3357 3358 set_qval: 3359 procedure (prompt, qarray, v_lo, v_hi); /* to set per-queue parameters 45 and 46 */ 3360 3361 dcl prompt char (*); 3362 dcl qarray (4) fixed bin (35); 3363 dcl (v_lo, v_hi) fixed bin (35); 3364 3365 dcl (set_shift, set_queue) bit (1) aligned init (""b); 3366 dcl esw fixed bin; 3367 dcl prompted bit (1) aligned init (""b); 3368 dcl (q, nq, s, ns) fixed bin; 3369 dcl v fixed bin (35); 3370 dcl (qx, q_ext, sx, s_ext) fixed bin; 3371 dcl ask_again bit (1) aligned; 3372 dcl (q_lo, q_hi, s_lo, s_hi) fixed bin; 3373 3374 esw = 1; /* remember which entry point we came in at */ 3375 set_queue = "1"b; /* and what we are supposed to do */ 3376 go to set_common; 3377 3378 set_sval: 3379 entry (prompt, sarray, v_lo, v_hi); /* to set parameters 38, 39, and 40 */ 3380 3381 dcl sarray (0:7) fixed bin (17) unaligned; 3382 3383 esw = 2; /* remember which entry point we came in at */ 3384 set_shift = "1"b; /* and what we are supposed to do */ 3385 go to set_common; 3386 3387 set_sqval: 3388 entry (prompt, sqarray, v_lo, v_hi); /* to set parameters 41 thru 43 */ 3389 3390 dcl sqarray (0:7, 4) fixed bin (17) unaligned; 3391 3392 esw = 3; /* remember which entry point we came in at */ 3393 set_shift, set_queue = "1"b; /* and what we are supposed to do */ 3394 go to set_common; 3395 3396 set_sqlval: 3397 entry (prompt, sqlarray, v_lo, v_hi); /* for parameter 44 */ 3398 3399 dcl sqlarray (0:7, 4) fixed bin (35); 3400 3401 esw = 4; /* remember which entry point we came in at */ 3402 set_shift, set_queue = "1"b; /* and what we are supposed to do */ 3403 go to set_common; 3404 3405 set_common: 3406 ns, nq = 1; /* go around shift and queue loops at least once each */ 3407 3408 /* See if any shift or queue numbers were typed ahead */ 3409 3410 if esw = 1 then call get_queue (q_lo, q_hi); 3411 else if esw = 2 then call get_shift (s_lo, s_hi); 3412 else call get_shift_queue (q_lo, q_hi, s_lo, s_hi); 3413 3414 /* Check on what was typed ahead, and fill in defaults in the absence of typeahead */ 3415 3416 if set_queue then do; /* if setting a per-queue or per-shift-and-queue parameter */ 3417 if q_lo = -1 then do; /* if queue not typed ahead */ 3418 if change_request then do; /* default for change is to ask for, and set, a single queue */ 3419 ask_again = "1"b; 3420 do while (ask_again); 3421 call ask_$ask_int ("queue:^x", q_lo); 3422 /* ask for it */ 3423 ask_again = out_of_range ("queue", (q_lo), 1, 4); 3424 end; 3425 q_hi = q_lo; /* q_hi=q_lo means set value for only one queue */ 3426 end; 3427 else do; /* default for retype is set all queues */ 3428 nq = 4; /* ask for 4 values */ 3429 q_lo = 1; /* for queues 1 */ 3430 q_hi = 4; /* thru 4 */ 3431 end; 3432 end; 3433 if nq = 1 then /* if we will ask for only one per-queue value */ 3434 q_ext = q_hi - q_lo; /* set this many extra elements to that value */ 3435 else q_ext = 0; /* otherwise, set only one element per value typed in */ 3436 end; /* end setting per-queue parameter */ 3437 3438 if set_shift then do; /* if setting a per-shift or per-shift-and-queue parameter */ 3439 if s_lo = -1 then do; /* if shift not typed ahead */ 3440 if change_request then do; /* default for change is a single shift */ 3441 ask_again = "1"b; 3442 do while (ask_again); 3443 call ask_$ask_int ("shift:^x", s_lo); 3444 /* ask for it */ 3445 ask_again = out_of_range ("shift", (s_lo), 0, 7); 3446 end; 3447 s_hi = s_lo; /* one shift */ 3448 end; 3449 else do; /* default for retype is all shifts */ 3450 ns = 8; /* so ask for 8 values */ 3451 s_lo = 0; /* for shifts 0 */ 3452 s_hi = 7; /* thru 7 */ 3453 end; 3454 end; 3455 if ns = 1 then /* if we will ask for only one per-shift value */ 3456 s_ext = s_hi - s_lo; /* set this many extra elements to that value */ 3457 else s_ext = 0; /* otherwise, set only one element per value typed in */ 3458 end; /* end setting per-shift value */ 3459 3460 /* Now, ask for, and store, the value(s) */ 3461 3462 /* Outer loop on queue. If not setting per-queue, or per-shift-and-queue parameter, 3463* go around this loop just once, to get to the inner loop */ 3464 3465 do q = q_lo to q_lo + nq - 1; 3466 3467 /* Inner loop on shift. If not setting per-shift or per-shift-and-queue parameter, 3468* go thru this loop just once for each time around the outer loop */ 3469 3470 do s = s_lo to s_lo + ns - 1; 3471 3472 /* This is what we're here for */ 3473 ask_again = "1"b; 3474 do while (ask_again); 3475 call ask_$ask_int ( 3476 "^[^s^;^a:^x^]^[queue^[s ^d-^d^; ^d^s^]:^x^;^3s^]^[shift^[s ^d-^d^; ^d^s^]:^x^;^3s^]", v, 3477 /* the value to be typed in */ 3478 prompted, prompt, /* print the prompting word only once (first time around) */ 3479 (set_queue & s = s_lo), (q_ext > 0), q, q_hi, 3480 /* if setting per-queue parm, print 1 or 2 queue numbers */ 3481 (set_shift), (s_ext > 0), s, s_hi); 3482 /* if setting per-shift parm, print 1 or 2 shift #s */ 3483 ask_again = out_of_range (prompt, v, v_lo, v_hi); 3484 end; 3485 3486 prompted = "1"b; /* remember not to print prompting word again */ 3487 3488 /* Now store the value into one or more array elements */ 3489 if esw = 1 then 3490 do qx = 0 to q_ext; 3491 qarray (q + qx) = v; 3492 end; 3493 3494 else if esw = 2 then 3495 do sx = 0 to s_ext; 3496 sarray (s + sx) = v; 3497 end; 3498 3499 else do qx = 0 to q_ext; 3500 do sx = 0 to s_ext; 3501 if esw = 3 then sqarray (s + sx, q + qx) = v; 3502 else if esw = 4 then sqlarray (s + sx, q + qx) = v; 3503 end; 3504 end; 3505 3506 end; /* end inner loop on shift */ 3507 end; /* end outer loop on queue */ 3508 3509 return; 3510 3511 end set_qval; 3512 3513 /* ------------------------------ */ 3514 3515 set_shift_field: 3516 procedure (i, j, k, n); 3517 3518 dcl (i, j, k, n) fixed bin; 3519 3520 installation_parms.shifttab (48 * i + (2 * j + n) + 1) = bit (fixed (k, 3), 3); 3521 return; 3522 3523 end set_shift_field; 3524 3525 /* ------------------------------ */ 3526 3527 set_std_shifttab: 3528 procedure; 3529 3530 dcl (i, j) fixed bin; 3531 3532 do i = 0 to 6; 3533 do j = 0 to 15; 3534 installation_parms.shifttab (48 * i + j + 1) = "011"b; 3535 end; 3536 do j = 16 to 35; 3537 installation_parms.shifttab (48 * i + j + 1) = "001"b; 3538 end; 3539 do j = 36 to 47; 3540 installation_parms.shifttab (48 * i + j + 1) = "010"b; 3541 end; 3542 end; 3543 do i = 5 to 6; 3544 do j = 16 to 47; 3545 installation_parms.shifttab (48 * i + j + 1) = "100"b; 3546 end; 3547 end; 3548 3549 end set_std_shifttab; 3550 3551 /* ------------------------------ */ 3552 3553 sort_config_table: 3554 procedure; 3555 3556 dcl i fixed bin; 3557 dcl o1 fixed bin (71); 3558 dcl o2 fixed bin (71); 3559 dcl changed bit (1) aligned; 3560 dcl ever_changed bit (1) aligned; 3561 dcl save_crit bit (1) aligned; 3562 dcl ncon fixed bin; 3563 dcl 1 tcona like installation_parms_part_1.cona aligned; 3564 3565 changed = "1"b; 3566 ever_changed = "0"b; 3567 save_crit = critical_op; 3568 critical_op = critical_op | (all_sw = ALL_RS); 3569 ncon = installation_parms.ncon; /* number of config table elements */ 3570 3571 do while (changed & ncon > 1); /* keep going until we drop */ 3572 changed = "0"b; 3573 3574 do i = 1 repeat i + 1 while (i < ncon); 3575 o1 = gen_config_ordinal ((installation_parms.cona (i).cpu), (installation_parms.cona (i).kmem), 3576 /* get a number describing this element */ 3577 (installation_parms.cona (i).kbulk), (installation_parms.cona (i).shift)); 3578 o2 = gen_config_ordinal ((installation_parms.cona (i + 1).cpu), 3579 /* and one for this element */ 3580 (installation_parms.cona (i + 1).kmem), (installation_parms.cona (i + 1).kbulk), 3581 (installation_parms.cona (i + 1).shift)); 3582 if o1 < 0 | installation_parms.cona (i).cpu <= 0 then do; 3583 /* should we dump this one? */ 3584 installation_parms.cona (i) = installation_parms.cona (ncon); 3585 ncon = ncon - 1; 3586 changed = "1"b; 3587 end; 3588 else if o2 < 0 | installation_parms.cona (i + 1).cpu <= 0 then do; 3589 /* dump this one (only one at a time, please)? */ 3590 installation_parms.cona (i + 1) = installation_parms.cona (ncon); 3591 ncon = ncon - 1; 3592 changed = "1"b; 3593 end; 3594 else if o1 > o2 then do; /* out of order? */ 3595 tcona = installation_parms.cona (i); 3596 /* fiddle about */ 3597 installation_parms.cona (i) = installation_parms.cona (i + 1); 3598 installation_parms.cona (i + 1) = tcona; 3599 changed = "1"b; 3600 end; 3601 ever_changed = ever_changed | changed; 3602 end; 3603 end; 3604 3605 if ever_changed then do; /* tell user if we changed anything */ 3606 call ioa_ ("Config table sorted."); 3607 installation_parms.ncon = ncon; 3608 end; 3609 critical_op = save_crit; /* back to where we were */ 3610 3611 end sort_config_table; 3612 3613 /* ------------------------------ */ 3614 3615 verify_structures: 3616 procedure; 3617 3618 dcl (i, j) fixed bin; 3619 dcl rsn fixed bin; 3620 dcl force bit (1) aligned; 3621 dcl char8 char (8); 3622 dcl phoo bit (1) aligned; 3623 dcl rsname char (32); 3624 3625 call ask_$ask_n (char8, i); 3626 force = (i > 0 & (char8 = "-force" | char8 = "-fc" | char8 = "force" | char8 = "fc")); 3627 if force then call ask_ ("", char8); /* remove it from line */ 3628 3629 do rsn = 0 to installation_parms.nrates; /* for all rate-structures */ 3630 cur_rs_ptr = rs_ptrs (rsn); 3631 rsname = installation_parms.rate_structures (rsn); 3632 3633 /* check device tables against installation_parms */ 3634 3635 if rate_structure.ndevices ^= installation_parms.ndevices then do; 3636 /* first, check the counts */ 3637 call ioa_ ("installation_parms has ^d devices, rate_structure ""^a"" has ^d", 3638 installation_parms.ndevices, rsname, rate_structure.ndevices); 3639 if force then do; 3640 call ioa_ ("Forcing change."); 3641 rate_structure.ndevices = installation_parms.ndevices; 3642 end; 3643 end; 3644 do j = 1 to installation_parms.ndevices; /* now check all the names */ 3645 if installation_parms.device_id (j) ^= rate_structure.device_id (j) then do; 3646 call ioa_ ( 3647 "installation_parms has device ""^a"" at position ^d.^/rate_structure ""^a"" has device ""^a""." 3648 , installation_parms.device_id (j), j, rsname, rate_structure.device_id (j)); 3649 if force then do; 3650 call ioa_ ("Forcing change, price set to 0.0"); 3651 rate_structure.device_id (j) = installation_parms.device_id (j); 3652 rate_structure.device_price (j, *) = 0e0; 3653 end; 3654 end; 3655 end; 3656 3657 /* check resources */ 3658 3659 if installation_parms.nrscp ^= rate_structure.nrscp then do; 3660 /* first check the counts */ 3661 call ioa_ ( 3662 "installation_parms has ^d resource array entries, rate_structure ""^a"" has ^d.^[ Forcing change^]" 3663 , installation_parms.nrscp, rsname, rate_structure.nrscp, force); 3664 if force then rate_structure.nrscp = installation_parms.nrscp; 3665 end; 3666 do i = 1 to installation_parms.nrscp; /* then check the names */ 3667 if installation_parms.resource (i).name ^= rate_structure.resource (i).name then do; 3668 call ioa_ ( 3669 "installation_parms has resource ^a as entry ^d, the rate_structure resource is ""^a"".", 3670 installation_parms.resource (i).name, i, rate_structure.resource (i).name); 3671 if force then do; 3672 call ioa_ ("Forcing change, price set to 0.0"); 3673 rate_structure.resource (i).name = installation_parms.resource (i).name; 3674 rate_structure.resource (i).price = 0e0; 3675 end; 3676 end; 3677 end; 3678 3679 /* then check all the rate_structure name stuff */ 3680 3681 if rate_structure.rate_structure_number ^= rsn then do; 3682 /* do I point to myself? */ 3683 call ioa_ ("rate_structure ^d (^a) has incorrect rate_structure_number field ^d. ^[Forcing change^]", 3684 rsn, installation_parms.rate_structures (rsn), rate_structure.rate_structure_number, force); 3685 if force then rate_structure.rate_structure_number = rsn; 3686 end; 3687 if rate_structure.nrates ^= installation_parms.nrates then do; 3688 /* first, check the counts */ 3689 call ioa_ ("installation_parms has ^d rate_structures, rate_structure ""^a"" has ^d.", 3690 installation_parms.nrates, rsname, rate_structure.nrates); 3691 if force then do; 3692 call ioa_ ("Forcing change."); 3693 rate_structure.nrates = installation_parms.nrates; 3694 end; 3695 end; 3696 do i = 0 to installation_parms.nrates; /* now check the names */ 3697 if installation_parms.rate_structures (i) ^= rate_structure.rate_structures (i) then do; 3698 call ioa_ ( 3699 "installation_parms has rate_structure ""^a"" at position ^d.^/rate_structure ""^a"" has rate_structure ""^a""." 3700 , installation_parms.rate_structures (i), i, rsname, rate_structure.rate_structures (i)); 3701 if force then do; 3702 call ioa_ ("Forcing change."); 3703 rate_structure.rate_structures (i) = installation_parms.rate_structures (i); 3704 end; 3705 end; 3706 end; 3707 end; 3708 3709 cur_rs_ptr = selected_rs_ptr; /* return to normalcy */ 3710 edit_rs = (cur_rs_ptr ^= ip); 3711 critical_op = "0"b; 3712 call check_config_table; /* config table ok? */ 3713 phoo = check_device_names (); /* device table have required names? */ 3714 3715 end verify_structures; 3716 3717 /* ------------------------------ */ 3718 3719 write_error: 3720 procedure (ec, i, msg); 3721 dcl ec fixed bin (35); 3722 dcl i fixed bin; 3723 dcl msg char (*); 3724 3725 call com_err_ (ec, me, "rate_structure_^d (^a) ^a.", i, installation_parms.rate_structures (i), msg); 3726 3727 end write_error; 3728 3729 set_pdir_quota_defaults: 3730 procedure; 3731 3732 declare code fixed bin (35); 3733 3734 /**** OLD COMMUNICATIONS SEGMENT */ 3735 3736 dcl com_p pointer; 3737 dcl 1 communications based (com_p) aligned, /* Administrators and answering service use it */ 3738 2 admin_word char (8) unal, /* Operator password for admin mode */ 3739 2 ppmdl fixed bin, /* Per-process master drum limit */ 3740 2 ppmdl_daemon fixed bin, /* ... for daemon */ 3741 2 ssdq fixed bin, /* Process directory disk quota */ 3742 2 ssdq_daemon fixed bin, /* ... for daemon */ 3743 2 junk (4) fixed bin, 3744 2 version fixed bin, 3745 2 admin_sw fixed bin, /* Length of administrator's command */ 3746 2 admin_comment char (80) unal, /* any old comment */ 3747 2 admin_sender char (32) unal, /* Who sent it */ 3748 2 as_procid bit (36), /* Process id of answering service */ 3749 2 admin_com_chn fixed bin (71), /* Event-call channel for admin command */ 3750 2 admin_com char (4000) unaligned; /* actual command line */ 3751 3752 call initiate_file_ (sc_stat_$sysdir, "communications", R_ACCESS, com_p, (0), code); 3753 if code = 0 then do; 3754 installation_parms.default_pdir_seg_quota = communications.ssdq; 3755 call terminate_file_ (com_p, (0), TERM_FILE_TERM, (0)); 3756 end; 3757 else installation_parms.default_pdir_seg_quota = 1000; 3758 installation_parms.default_pdir_dir_quota = 1000; 3759 return; 3760 end set_pdir_quota_defaults; 3761 3762 3763 /* ------------------------------ */ 3764 3765 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 3766 3767 2 1 /* BEGIN INCLUDE FILE aim_template.incl.pl1 */ 2 2 2 3 /* Created 740723 by PG */ 2 4 /* Modified 06/28/78 by C. D. Tavares to add rcp privilege */ 2 5 /* Modified 83-05-10 by E. N. Kitltitz to add communications privilege */ 2 6 2 7 /* This structure defines the components of both an access 2 8* class and an access authorization as interpreted by the 2 9* Access Isolation Mechanism. */ 2 10 2 11 2 12 dcl 1 aim_template aligned based, /* authorization/access class template */ 2 13 2 categories bit (36), /* access categories */ 2 14 2 level fixed bin (17) unaligned, /* sensitivity level */ 2 15 2 privileges unaligned, /* special access privileges (in authorization only) */ 2 16 (3 ipc, /* interprocess communication privilege */ 2 17 3 dir, /* directory privilege */ 2 18 3 seg, /* segment privilege */ 2 19 3 soos, /* security out-of-service privilege */ 2 20 3 ring1, /* ring 1 access privilege */ 2 21 3 rcp, /* RCP resource access privilege */ 2 22 3 comm) bit (1), /* communications cross-AIM privilege */ 2 23 3 pad bit (11); 2 24 2 25 2 26 /* END INCLUDE FILE aim_template.incl.pl1 */ 3768 3769 3 1 /* BEGIN INCLUDE FILE devid.incl.pl1 */ 3 2 3 3 /* Rewritten September 1977 by T. Casey to implement a new method of device charging. */ 3 4 3 5 3 6 /****^ HISTORY COMMENTS: 3 7* 1) change(85-10-07,Herbst), approve(87-07-21,MCR7694), 3 8* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 3 9* Add dsa_kbyt, dsa_kpkt and dsa_hour device types. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /* This include file is used to avoid conflicts between system code and customer 3 14* sites over the use of elements of the devtab array in installation_parms. 3 15* 3 16* Sites can define new device types for terminal channel charging (for high-speed 3 17* lines, for example), set prices for them in installation_parms, and use their 3 18* names in the charge statement in the CMF. 3 19* 3 20* There also exists a set of system-defined devices, such as tape and disk, and 3 21* this set must be expandable. Code to charge for each one of these devices is 3 22* built into the system. That code can not reference specific elements in the 3 23* devtab array, since a site may have used any given element in that array for 3 24* one of its own devices. This include file solves that problem. 3 25* 3 26* The dev_id array contains the names of devices for which charging code is 3 27* built into the system. That array should be changed whenever new device 3 28* charging code is added. The order of device names in that array is insignificant. 3 29* The constants with names of the form dev_DEVICE are used for program 3 30* readability, to avoid having to reference specific entries in the dev_id 3 31* array with numeric constants as subscripts. 3 32* 3 33* The site must define devices of each of the names in the dev_id array, and 3 34* set prices for them. Otherwise, no charges will be made for use of those 3 35* devices. The ed_installation_parms procedure prints a warning, when 3 36* printing device prices, if any of the required devices is not defined. 3 37* 3 38* The static variables with names of the form devtab_ix_DEVICE are used to 3 39* hold the subscripts of the respective devices' devtab entries. These variables 3 40* must be assigned values at initialization time by the procedures that use them. 3 41* These procedures should call system_info_$device_prices to get a copy of devtab, 3 42* and then search devtab for a device_id equal to dev_id(dev_DEVICE) and remember 3 43* the subscript in devtab_ix_DEVICE. If the device is not defined, the devtab_ix 3 44* variable should remain zero, as an indication that charging for the device is 3 45* to be bypassed. 3 46* 3 47**/ 3 48 dcl dev_id (8) char (8) aligned int static options (constant) init 3 49 ("tape", "tape_mt", "disk", "disk_mt", "lv", 3 50 "dsa_kbyt", "dsa_kpkt", "dsa_hour"); 3 51 3 52 dcl dev_tape fixed bin int static options (constant) init (1); 3 53 dcl dev_tape_mt fixed bin int static options (constant) init (2); 3 54 dcl dev_disk fixed bin int static options (constant) init (3); 3 55 dcl dev_disk_mt fixed bin int static options (constant) init (4); 3 56 dcl dev_lv fixed bin int static options (constant) init (5); 3 57 dcl dev_dsa_kilobyte fixed bin int static options (constant) init (6); 3 58 dcl dev_dsa_kilopacket fixed bin int static options (constant) init (7); 3 59 dcl dev_dsa_hour fixed bin int static options (constant) init (8); 3 60 3 61 dcl devtab_ix_tape fixed bin int static init (0); 3 62 dcl devtab_ix_tape_mt fixed bin int static init (0); 3 63 dcl devtab_ix_disk fixed bin int static init (0); 3 64 dcl devtab_ix_disk_mt fixed bin int static init (0); 3 65 dcl devtab_ix_lv fixed bin int static init (0); 3 66 dcl devtab_ix_dsa_kilobyte fixed bin int static init (0); 3 67 dcl devtab_ix_dsa_kilopacket fixed bin int static init (0); 3 68 dcl devtab_ix_dsa_hour fixed bin int static init (0); 3 69 3 70 /* END INCLUDE FILE devid.incl.pl1 */ 3770 3771 4 1 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 4 2 4 3 /* Modified 740723 by PG to add short AIM access names */ 4 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 4 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 4 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 4 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 4 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 4 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 4 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 4 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 4 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 4 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 4 14* strict_trusted_path. */ 4 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 4 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 4 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 4 18 4 19 4 20 /****^ HISTORY COMMENTS: 4 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 4 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 4 23* added vchn_requires_accept parameter. 4 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 4 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 4 26* Correct formatting problems. 4 27* END HISTORY COMMENTS */ 4 28 4 29 4 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 4 31 4 32 4 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 4 34 2 part_1 like installation_parms_part_1 aligned, 4 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 4 36 4 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 4 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 4 39 4 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 4 41 2 installation_id char (32), /* Name printed at dialup and in who */ 4 42 2 company char (64), /* company name */ 4 43 2 department char (64), /* department */ 4 44 2 companyds char (120), /* company, double spaced */ 4 45 2 departmentds char (120), /* dpeartment double spaced */ 4 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 4 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 4 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 4 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 4 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 4 51 2 ndevices fixed bin, /* number of devices to charge */ 4 52 2 devtab (16), /* Maximum 16 */ 4 53 3 device_id char (8), /* Name of device */ 4 54 3 device_price (0: 7) float bin, /* Price by shift */ 4 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 4 56 2 warning_time fixed bin, /* seconds from warning to logout */ 4 57 2 login_time fixed bin, /* seconds in which to complete login */ 4 58 2 acct_update fixed bin, /* seconds between acct update */ 4 59 2 login_tries fixed bin, /* number of login tries allowed */ 4 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 4 61 2 registration_price float bin, /* fee per month per user */ 4 62 2 dolsign char (1), /* "dollar sign" */ 4 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 4 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 4 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 4 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 4 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 4 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 4 69* Initializer will copy the syserr_log */ 4 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 4 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 4 72 2 fatal_error_loop_count fixed bin (17) unaligned, 4 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 4 74 2 term_real_time_seconds fixed bin (17) unaligned, 4 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 4 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 4 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 4 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 4 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 4 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 4 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 4 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 4 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 4 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 4 85 2 level_names (0:7) char (32), /* Names for security levels. */ 4 86 2 category_names (18) char (32), /* Names for security categories. */ 4 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 4 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 4 89 2 ncon fixed bin, /* Number of config elements. */ 4 90 2 cona (51), /* each entry is 5 words long */ 4 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 4 92 3 shift fixed bin (5) unal, /* Shift number */ 4 93 3 x1 fixed bin (23) unal, 4 94 3 kmem fixed bin (17) unal, /* Memory size */ 4 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 4 96 3 x2 fixed bin (17) unal, 4 97 3 maxa fixed bin (11) unal, /* Max abs users */ 4 98 3 maxq fixed bin (5) unal, /* Max abs q */ 4 99 3 maxu_base fixed bin (17) unal, 4 100 3 response_high fixed bin (17) unal, 4 101 3 response_low fixed bin (17) unal, 4 102 3 x3 fixed bin (17) unal, 4 103 4 104 /* Absentee control parameters. New for MR7.0 */ 4 105 4 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 4 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 4 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 4 109 4 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 4 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 4 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 4 113 4 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 4 115 4 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 4 117 4 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 4 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 4 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 4 121 2 version fixed bin (35), /* must be 2 */ 4 122 2 nrates fixed bin, /* number of rate structures */ 4 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 4 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 4 125 2 require_operator_login bit (1) aligned, /* just what it says */ 4 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 4 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 4 128* mcacs segments for operators */ 4 129 2 password_min_length fixed bin, /* minimum length of passwords */ 4 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 4 131 2 password_change_interval fixed bin, /* number of days until must change */ 4 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 4 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 4 134* "accepted" by operator if personid is not 4 135* signed on system console */ 4 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 4 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 4 138* or someone miscounted when using part of pad2 */ 4 139 4 140 4 141 /* Entries in the following array may be accessed via system_info_$resource_price. 4 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 4 143 4 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 4 145 2 name char (32), 4 146 2 price float bin; 4 147 5 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 5 2 5 3 /* Created on 04/24/78 by Michael R. Jordan */ 5 4 /* Modified 04/10/79 by C. D. Tavares */ 5 5 5 6 dcl rifp ptr; 5 7 5 8 dcl 1 rcp_init_flags based (rifp), 5 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 5 10 2 pad1 bit (2) unaligned, /* obsolete */ 5 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 5 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 5 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 5 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 5 15 5 16 dcl (No_authentication initial (0), 5 17 Nominal_authentication initial (1), 5 18 Automatic_authentication initial (2), 5 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 5 20 5 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 5 22 ("none", "nominal", "automatic", "manual"); 5 23 5 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 4 148 4 149 4 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 3772 6 1 /* BEGIN INCLUDE FILE ... rate_structure.incl.pl1 */ 6 2 6 3 /* Created 81-06-10 by E. N. Kittlitz */ 6 4 6 5 /* The declaration of rate_structure requires declarations contained in 6 6* installation_parms.incl.pl1. 6 7**/ 6 8 6 9 dcl 1 rate_structure based (cur_rs_ptr) aligned, /* describes a rate strcture */ 6 10 2 part_1 like installation_parms_part_1 aligned, 6 11 2 resource (0 refer (rate_structure.nrscp)) like installation_parms_resource_array_part aligned; 6 12 6 13 /* END INCLUDE FILE ... rate_structure.incl.pl1 */ 3773 7 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 7 2 /* format: style2,^inddcls,idind32 */ 7 3 7 4 declare 1 terminate_file_switches based, 7 5 2 truncate bit (1) unaligned, 7 6 2 set_bc bit (1) unaligned, 7 7 2 terminate bit (1) unaligned, 7 8 2 force_write bit (1) unaligned, 7 9 2 delete bit (1) unaligned; 7 10 7 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 7 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 7 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 7 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 7 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 7 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 7 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 7 18 7 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 3774 8 1 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 8 2 8 3 8 4 /****^ HISTORY COMMENTS: 8 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 8 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 8 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 8 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 8 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 8 10* Reorganized by type of data to improve readability. 8 11* END HISTORY COMMENTS */ 8 12 8 13 8 14 /* ACCESS NAMES */ 8 15 dcl ( 8 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 8 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 8 18 ) char(32) ext static; 8 19 8 20 /* PATHNAMES */ 8 21 dcl ( 8 22 sc_stat_$info_dir, /* admin info segs directory */ 8 23 sc_stat_$log_dir, /* as log segs directory */ 8 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 8 25 sc_stat_$sysdir /* system control directory */ 8 26 ) char(168) ext static; 8 27 8 28 /* OTHER CHAR STRINGS */ 8 29 dcl ( 8 30 sc_stat_$master_channel /* Master TTY channel. */ 8 31 ) char(6) aligned ext static; 8 32 8 33 /* LABELS */ 8 34 dcl ( 8 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 8 36 /* ssu_$null_label unless */ 8 37 /* admin_listener is active. */ 8 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 8 39 /* attributable to a particular */ 8 40 /* command. */ 8 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 8 42 ) label variable ext static; 8 43 8 44 /* POINTERS TO */ 8 45 dcl ( 8 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 8 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 8 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 8 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 8 50 /* by sys_log_. */ 8 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 8 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 8 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 8 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 8 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 8 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 8 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 8 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 8 59 ) ptr ext static; 8 60 8 61 /* SWITCHES */ 8 62 dcl ( 8 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 8 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 8 65 sc_stat_$Multics, /* TRUE after answering service started */ 8 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 8 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 8 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 8 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 8 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 8 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 8 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 8 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 8 74 /* if PNT not yet available. */ 8 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 8 76 sc_stat_$test_mode, /* TRUE if in test environment */ 8 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 8 78 /* by operator signed on system console*/ 8 79 ) bit(1) aligned ext static; 8 80 8 81 8 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 3775 3776 3777 end ed_installation_parms; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/07/88 1214.7 ed_installation_parms.pl1 >spec>install>1142>ed_installation_parms.pl1 3766 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 3768 2 09/07/83 1610.6 aim_template.incl.pl1 >ldd>include>aim_template.incl.pl1 3770 3 08/06/87 0913.4 devid.incl.pl1 >ldd>include>devid.incl.pl1 3772 4 08/06/87 0913.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 4-148 5 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 3773 6 03/27/82 0435.1 rate_structure.incl.pl1 >ldd>include>rate_structure.incl.pl1 3774 7 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 3775 8 08/06/87 0913.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.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. ADD 003067 constant fixed bin(17,0) initial dcl 106 set ref 751* 1038 1049 ALL_RS constant bit(1) initial dcl 114 set ref 1239* 1247* 2421* 2440* 2981 2982 2990 3023 3024 3032 3568 Automatic_authentication constant fixed bin(17,0) initial dcl 5-16 ref 936 CHANGE 003066 constant fixed bin(17,0) initial dcl 107 set ref 752* 1039 1052 COMPLAIN 003026 constant bit(1) initial dcl 118 set ref 787* 986* 1068* 1236* 1245* 1260* 1464* 1507* 1513* 1529* 1537* 1542* 1561* 1566* 1950* 1979* 2417* 2437* ID_NOT_FOUND constant fixed bin(17,0) initial dcl 113 ref 2570 IX parameter fixed bin(17,0) dcl 1324 in procedure "do_change" set ref 1321 1330 1330 1331* 1335 1337* 1583* 1583* 1587* 1587* IX parameter fixed bin(17,0) dcl 1599 in procedure "do_print" set ref 1596 1610 1610 1611* 1615 2021* 2021* 2025* 2025* IX parameter fixed bin(17,0) dcl 2037 in procedure "do_retype" set ref 2034 2046 2046 2047* 2051 2459* 2459* 2463* 2463* IX parameter fixed bin(17,0) dcl 1132 in procedure "do_add" set ref 1129 1138 1138 1139* 1143 1312* 1312* IX parameter fixed bin(17,0) dcl 1023 in procedure "do_any" ref 1118 1121 IX parameter fixed bin(17,0) dcl 1034 in procedure "worker" set ref 1031 1038* 1039* 1040* 1041* MILLION 002677 constant fixed bin(35,0) initial dcl 104 ref 903 903 NOLIMIT 002647 constant fixed bin(35,0) initial dcl 103 set ref 2115* 2119* 2123* 2127* 2131* 2135* 2272* 2276* 2281* 2285* 2289* 2301* 2305* 2330* 2335* 2340* 2344* 2352* 2356* 2364* 2369* 2373* 2378* 2388* 2393* 2940* 2942* 2952* 3136 3138 NOT_RS_ID constant fixed bin(17,0) initial dcl 112 ref 2560 NO_SET_HI constant bit(1) initial dcl 117 set ref 1467* 1531* 2142* 2263* NO_SPECIAL_DEVICES constant bit(1) initial dcl 110 set ref 1236* 1507* 1513* 2417* No_authentication constant fixed bin(17,0) initial dcl 5-16 ref 933 Nominal_authentication constant fixed bin(17,0) initial dcl 5-16 ref 939 OP parameter fixed bin(17,0) dcl 1022 set ref 1019 1038 1039 1040 1041 1049 1052 1056 1059 1063* 1107* 1118 PRINT 003056 constant fixed bin(17,0) initial dcl 108 set ref 753* 1040 1056 RETYPE 003057 constant fixed bin(17,0) initial dcl 109 set ref 754* 1041 1059 RW_ACCESS_BIN 003055 constant fixed bin(5,0) initial dcl 1-36 set ref 605* 635* 1264* 1272* R_ACCESS 003026 constant bit(3) initial packed unaligned dcl 1-11 set ref 629* 3752* SECONDS_PER_MONTH 002646 constant float bin(27) initial dcl 105 ref 1641 2812 SET_HI constant bit(1) initial dcl 116 set ref 1239* 1247* 2421* 2440* 2999 SPECIAL_DEVICES_OK constant bit(1) initial dcl 111 set ref 1464* 1950* 2649 TERM_FILE_TERM 003001 constant bit(3) initial packed unaligned dcl 7-14 set ref 2617* 3755* THIS_RS constant bit(1) initial dcl 115 set ref 1467* 1531* 2142* 2263* abs_cpu_default_limit 531 based fixed bin(35,0) array level 3 dcl 4-33 set ref 854* 903 903* 903 911 923 1919* 2373* 2500 abs_cpu_max_limit 1650 based fixed bin(35,0) array level 3 dcl 4-33 set ref 923* 1919* 2364* 2500 abs_cpu_price 511 based float bin(27) array level 3 dcl 6-9 set ref 850* 1007* 1007 1296* 1493* 1712* 2163* abs_mem_price 515 based float bin(27) array level 3 dcl 6-9 set ref 851* 1008* 1008 1297* 1494* 1712* 2164* abs_timax 525 based fixed bin(35,0) array level 3 dcl 4-33 set ref 853* 1919* 2369* absolute_pathname_ 000024 constant entry external dcl 147 ref 552 access_authorization_ceiling 546 based bit(72) level 3 dcl 4-33 set ref 872* 1729 1729 2198 2199 2200 acct_update 504 based fixed bin(17,0) level 3 dcl 4-33 set ref 844* 1695* 2135* addr builtin function dcl 134 ref 671 671 1078 1083 1089 1729 1729 2198 2199 2200 3195 3211 aim_template based structure level 1 dcl 2-12 aligned_sw 000674 automatic bit(1) dcl 3321 set ref 3324* 3331* 3337* 3346 all_abs_queue_sw 000101 automatic bit(1) dcl 61 set ref 712* 1076* 1082* 1103* 1893 1899 1905 all_rates_sw 000102 automatic bit(1) dcl 62 set ref 713* 1075* 1087* 1102* 1778 1788 1948 1977 all_structures_sw 000103 automatic bit(1) dcl 63 set ref 714* 1100* all_sw 000100 automatic bit(1) dcl 60 in procedure "ed_installation_parms" set ref 711* 1077* 1101* 3568 all_sw parameter bit(1) dcl 3013 in procedure "input_resource_price" ref 3008 3023 3024 3032 all_sw parameter bit(1) dcl 2969 in procedure "input_device_price" ref 2964 2981 2982 2990 ans 000377 automatic char(32) packed unaligned dcl 2684 set ref 2687* 2691 any_sw parameter bit(1) dcl 2630 ref 2626 2640 2649 arg based char packed unaligned dcl 65 set ref 540 540 552* 554* 561 562* 573 argl 000106 automatic fixed bin(21,0) dcl 66 set ref 535* 540 540 546* 552 552 554 554 561 562 562 573 argno 000107 automatic fixed bin(17,0) dcl 67 set ref 533* 535* 545* 545 546* argp 000104 automatic pointer dcl 64 set ref 535* 540 540 546* 552 554 561 562 573 array based fixed bin(17,0) array packed unaligned dcl 3192 set ref 3201* arrayp 000646 automatic pointer dcl 3191 set ref 3195* 3201 3211* ask_ 000026 constant entry external dcl 148 ref 716 786 984 1067 1234 1244 1258 1393 1415 1416 1462 1506 1510 1527 1536 1539 1560 1563 1953 1981 2061 2414 2434 2477 2483 2808 2836 2884 2889 3627 ask_$ask_clr 000030 constant entry external dcl 149 ref 520 700 991 1211 1231 1399 1410 1488 2075 2157 2190 2208 2424 2482 2558 2568 2658 2667 2674 2696 2719 2757 2823 2839 3092 3118 3143 3257 3264 3295 3302 ask_$ask_flo 000032 constant entry external dcl 150 ref 1450 1451 1452 1453 1493 1494 1495 2087 2092 2093 2094 2095 2163 2164 2165 2946 2948 2950 2995 3035 ask_$ask_int 000034 constant entry external dcl 151 ref 1405 1419 1421 1472 1473 1474 1475 2071 2203 2237 2245 3343 3421 3443 3475 ask_$ask_line 000036 constant entry external dcl 152 ref 2057 2099 2101 2102 2103 2187 2687 2714 2723 2749 2761 ask_$ask_n 000040 constant entry external dcl 153 ref 723 763 782 1413 1948 1977 2804 2880 3142 3625 ask_$ask_yn 000042 constant entry external dcl 154 ref 690 812 2088 2214 2219 2224 2253 2407 2430 ask_again 000721 automatic bit(1) dcl 3371 set ref 3419* 3420 3423* 3441* 3442 3445* 3473* 3474 3483* authentication_level 541(07) based fixed bin(2,0) level 4 packed packed unsigned unaligned dcl 4-33 set ref 933* 936* 939* 1826 2297* authentication_level_names 000400 constant char(12) initial array packed unaligned dcl 5-21 set ref 1826* 2690 2690 2691 2694 2694* auto_registration 541(04) based bit(1) level 4 packed packed unaligned dcl 4-33 set ref 1843* 2313* bad_dup 000105 automatic bit(1) dcl 2581 set ref 2583* 2592* 2595 2596* bad_null 000106 automatic bit(1) dcl 2581 set ref 2583* 2590* 2595 2596* bad_order 000107 automatic bit(1) dcl 2581 set ref 2583* 2591* 2595 2596* based_integer based fixed bin(17,0) dcl 130 ref 808 before builtin function dcl 134 ref 2810 2810 bin builtin function dcl 134 ref 671 671 bit builtin function dcl 134 ref 2195 3520 blank_ok parameter bit(1) dcl 3060 ref 3053 3089 bv_max_len parameter fixed bin(17,0) dcl 3059 set ref 3053 3077 3078* bv_name parameter char packed unaligned dcl 3058 set ref 3053 3068 3070 3070 3071* 3075 3075 3078* 3083 3085* 3090 3097 3101 3106 3111 3116* c1 000270 automatic char(1) packed unaligned dcl 2040 set ref 2061* 2063 c15 000207 automatic char(15) packed unaligned dcl 1602 set ref 1991* 1993 1993* 1993 1995* 1995 2000* categories based bit(36) level 2 dcl 2-12 set ref 1729* 2199* category_names 650 based char(32) array level 3 dcl 4-33 set ref 867 867 868* 1498 1498 1498 1498 1723 1723 1724* 2173 2173 2175 2175 2186 2711* 2726 2726 2731* 3100 3100 3101 category_set 000271 automatic bit(36) dcl 2041 set ref 2184* 2195* 2199 change_request 000110 automatic bit(1) dcl 68 set ref 715* 1054* 3418 3440 changed 000106 automatic bit(1) dcl 3559 set ref 3565* 3571 3572* 3586* 3592* 3599* 3601 char builtin function dcl 134 ref 627 831 859 860 868 869 1263 1518 1633 char32 000456 automatic char(32) packed unaligned dcl 2800 in procedure "get_disk_price" set ref 2804* 2808* 2809 2810 2810 2817 2817 char32 000111 automatic char(32) packed unaligned dcl 69 in procedure "ed_installation_parms" set ref 763* 764 764 764 782* 786* 787* 984* 986* 1067* 1068* 1981* 2836* 2838 2841* 2845 2846* 2849 2849 2854 2855 2880* 2883 2884* 2888 2889* char48 000121 automatic char(48) packed unaligned dcl 70 in procedure "ed_installation_parms" set ref 2187* 2188 2195 char48 000213 automatic char(48) packed unaligned dcl 1603 in procedure "do_print" set ref 1628* 1633* 1637* char8 000136 automatic char(8) packed unaligned dcl 71 in procedure "ed_installation_parms" set ref 723* 724 724 812* 813 1393* 1395 1397* 1413* 1414 1415* 1416* 1417 1953* 2407* 2408 2430* 2431 2477* 2479 2479 2480 2480 2483* char8 000516 automatic char(8) packed unaligned dcl 3621 in procedure "verify_structures" set ref 3625* 3626 3626 3626 3626 3627* chn_wakeup_error_loop_count 1710(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 946* 1937* 2393* chn_wakeup_error_loop_seconds 1711 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 948* 1932* 2388* cleanup 000464 stack reference condition dcl 99 ref 528 code 000544 automatic fixed bin(35,0) dcl 3732 set ref 3752* 3753 com_err_ 000044 constant entry external dcl 155 ref 537 548 554 562 567 576 586 619 622 671 1063 1139 1271 1331 1611 2047 2924 3227 3725 com_p 000546 automatic pointer dcl 3736 set ref 3752* 3754 3755* comm 000140 automatic char(32) packed unaligned dcl 72 set ref 716* 717 722 751 751 752 752 753 753 753 754 754 755 756 756 757 757 781 781 792 794* 968* communications based structure level 1 dcl 3737 company 10 based char(64) level 3 dcl 4-33 set ref 816* 1655* 2099* companyds 50 based char(120) level 3 dcl 4-33 set ref 818* 1658* 2102* cona 1155 based structure array level 2 in structure "installation_parms_part_1" dcl 4-40 in procedure "ed_installation_parms" cona 1155 based structure array level 3 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" cona 1155 based structure array level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 2148 3584* 3584 3590* 3590 3595 3597* 3597 3598* copy_ip based fixed bin(17,0) array dcl 73 set ref 643* 643 736* 736 core_price 230 based float bin(27) array level 3 dcl 6-9 set ref 825* 1000* 1000 1289* 1452* 1647 1647* 1647* 2094* cpu 1155 based fixed bin(5,0) array level 4 packed packed unaligned dcl 4-33 set ref 876* 1216 1477 2151 2587 2938* 3160* 3575 3578 3582 3588 cpu_price 200 based float bin(27) array level 3 dcl 6-9 set ref 822* 997* 997 1286* 1450* 1647 1647* 1647* 2092* critical_op 000150 automatic bit(1) dcl 74 set ref 526* 688 710* 1279* 1308* 1519* 1524* 1545* 1549* 1569* 1573* 2980 2981* 2981 3003* 3022 3023* 3023 3046* 3567 3568* 3568 3609* 3711* cu_$arg_count 000046 constant entry external dcl 156 ref 532 cu_$arg_ptr 000050 constant entry external dcl 157 ref 535 546 cur_rs_ptr 000152 automatic pointer dcl 75 set ref 525* 647* 708* 709 783* 783* 822 823 824 825 827 829 829 831 834 846 847 848 850 851 852 979 989 997 998 999 1000 1002 1004 1005 1006 1007 1008 1009 1010 1012 1013 1105* 1106 1109* 1110 1450 1451 1452 1453 1493 1494 1495 1641 1641 1644 1644 1647 1647 1647 1647 1647 1647 1647 1647 1647 1647 1647 1647 1712 1712 1712 1780 1781 1791 1792 1794 1942* 1942* 1963 1966 1967 1967 1985 1990 1991 2000 2009 2085 2087 2092 2093 2094 2095 2141 2163 2164 2165 2262 2263 2399* 2399* 2527 2527 2529 2986 3028 3630* 3635 3637 3641 3645 3646 3651 3652 3659 3661 3664 3667 3668 3673 3674 3681 3683 3685 3687 3689 3693 3697 3698 3703 3709* 3710 currentsize builtin function dcl 134 ref 641 728 cv_$mwvf 000052 constant entry external dcl 158 ref 1644 1644 1647 1647 1647 1647 1647 1647 1647 1647 1967 1967 1991 cv_dec_ 000054 constant entry external dcl 159 ref 2846 2854 2855 cv_float_ 000056 constant entry external dcl 160 ref 2810 2817 daynam 002640 constant char(21) initial packed unaligned dcl 120 ref 1395 1417 1637 1637 2071 2071 default_absentee_queue 1710 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 945* 1928* 2383* default_pdir_dir_quota 536(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 838* 1835* 2305* 3758* default_pdir_seg_quota 536 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 838* 1831* 2301* 3754* 3757* department 30 based char(64) level 3 dcl 4-33 set ref 817* 1657* 2101* departmentds 106 based char(120) level 3 dcl 4-33 set ref 819* 1659* 2103* dev_id 000414 constant char(8) initial array dcl 3-48 set ref 808 827 829 2411 2411 2526 2527 2529* 2652 2654 device_id 241 based char(8) array level 4 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" set ref 829* 831* 1294* 1522* 1781* 1963* 2527 2993* 3645 3646* 3651* device_id 241 based char(8) array level 4 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 1294 1512 2142 2647 3645 3646* 3651 device_price 243 based float bin(27) array level 4 dcl 6-9 set ref 834* 1295* 1966 1967* 1967* 2995* 3652* devnm parameter char packed unaligned dcl 2629 in procedure "devtab$$defined" set ref 2626 2640 2647 2654 2657* 2666* 2673* devnm 000244 automatic char(8) packed unaligned dcl 1607 in procedure "do_print" set ref 1948* 1950* devnm parameter char packed unaligned dcl 2968 in procedure "input_device_price" set ref 2964 2993 2995* devnm 000170 automatic char(8) packed unaligned dcl 1328 in procedure "do_change" set ref 1462* 1464* 1467* 1506* 1507* 1510* 1512 1513* 1518 1522 devnm 000302 automatic char(8) packed unaligned dcl 2043 in procedure "do_retype" set ref 2411* 2414* 2416 2417* 2421* devnm 000126 automatic char(8) packed unaligned dcl 1135 in procedure "do_add" set ref 1234* 1236* 1239* devtab 241 based structure array level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 2410 devtab 241 based structure array level 3 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" set ref 1006* 1006 devx parameter fixed bin(17,0) dcl 2967 ref 2964 2993 2995 3001 dflt 000230 automatic bit(1) dcl 1605 set ref 1717* 1896* 1902* 1907* 1911* 1917 1917* 1919* did_something 000154 automatic bit(1) dcl 76 set ref 1036* 1095 1579* 2017* 2451* dim builtin function dcl 134 ref 2694 dimension builtin function dcl 134 ref 2106 2106 2173 2173 2186 disk_price 506 based float bin(27) level 3 dcl 6-9 set ref 846* 1002* 1002 1290* 1641* 1641 2085* divide builtin function dcl 134 ref 903 1402 1417 2186 dn 000155 automatic char(168) packed unaligned dcl 77 set ref 530* 552* 566 574* 584* 591 593 605* 608* 612* 617* 629* 1264* 1269* dnvar 000227 automatic varying char(168) dcl 78 set ref 591* 593* 622 632 1266 dolsign 510 based char(1) level 3 dcl 6-9 set ref 848* 1292* dummy 000614 automatic char(1) packed unaligned dcl 3132 set ref 3142* ec parameter fixed bin(35,0) dcl 3721 in procedure "write_error" set ref 3719 3725* ec 000302 automatic fixed bin(35,0) dcl 79 in procedure "ed_installation_parms" set ref 535* 536 537* 546* 547 548* 552* 553 554* 574* 575 576* 584* 585 586* 605* 606 608* 610 610 610 612* 614 617* 619 619* 621 622* 629* 632* 635* 638* 730* 732 733* 738* 740 741* 744* 745 746* 1264* 1266* 1269* 1271 1271* 1272* 1275* 2612* 2617* 2810* 2811 2817* 2818 edit_rs 000303 automatic bit(1) dcl 80 set ref 524* 709* 761 772 803 943 1074 1106* 1110* 1227 1242 1250 1504 1534 1558 2403 2427 2447 2551 3710* en 000304 automatic char(32) packed unaligned dcl 81 set ref 557* 574* 584* 604* 605* 617* 619* 622 627* 629* 632 1263* 1264* 1266 1269* 1271* error 000616 automatic bit(1) initial dcl 3134 set ref 3134* 3136* 3138* 3141 error_hi 000620 automatic bit(1) initial dcl 3134 set ref 3134* 3138* 3144 3144 error_lo 000617 automatic bit(1) initial dcl 3134 set ref 3134* 3136* 3144 3144 error_table_$badopt 000012 external static fixed bin(35,0) dcl 139 set ref 562* error_table_$inconsistent 000014 external static fixed bin(35,0) dcl 140 set ref 567* error_table_$incorrect_access 000016 external static fixed bin(35,0) dcl 141 ref 610 error_table_$segknown 000020 external static fixed bin(35,0) dcl 142 ref 621 error_table_$segnamedup 000022 external static fixed bin(35,0) dcl 143 ref 610 esw 000706 automatic fixed bin(17,0) dcl 3366 set ref 3374* 3383* 3392* 3401* 3410 3411 3489 3494 3501 3502 ever_changed 000107 automatic bit(1) dcl 3560 set ref 3566* 3601* 3601 3605 expand_pathname_ 000060 constant entry external dcl 161 ref 574 584 f 000564 automatic float bin(27) dcl 3016 in procedure "input_resource_price" set ref 3035* 3037 f 000466 automatic float bin(27) dcl 2801 in procedure "get_disk_price" set ref 2810* 2812 2817* 2819 fatal_error_loop_count 537 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 895* 1810* 2281* fatal_error_loop_seconds 537(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 896* 1805* 2276* fixed builtin function dcl 134 ref 1632 2195 3520 flag 000615 automatic fixed bin(17,0) dcl 3133 set ref 3142* 3146 force 000515 automatic bit(1) dcl 3620 set ref 3626* 3627 3639 3649 3661* 3664 3671 3683* 3685 3691 3701 foreground_cpu_default_limit 545 based fixed bin(35,0) level 3 dcl 4-33 set ref 911* 1924* 2378* foreground_queue_position 543 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 910* 1853* 2320* ftmp 000535 automatic float bin(27) dcl 2936 set ref 2946* 2947 2948* 2949 2950* 2951 get_queue 000507 automatic bit(1) initial dcl 2872 set ref 2872* 2877* 2888 2891* 2894 2908* get_shift 000506 automatic bit(1) initial dcl 2872 set ref 2872* 2877* 2883 2886* 2894 2901* hbound builtin function dcl 134 ref 670 768 769 808 827 858 867 1079 1084 1090 1138 1252 1253 1253 1330 1456 1456 1498 1498 1610 1664 1723 2046 2109 2148 2175 2180 2180 2410 2411 2526 2548 2552 2610 2652 2690 2921 3096 3100 3104 3109 hcs_$chname_file 000062 constant entry external dcl 163 ref 608 hcs_$delentry_seg 000066 constant entry external dcl 165 ref 2612 hcs_$make_seg 000064 constant entry external dcl 164 ref 605 635 1264 1272 hcs_$set_bc_seg 000070 constant entry external dcl 166 ref 738 hcs_$set_ring_brackets 000072 constant entry external dcl 167 ref 617 1269 hcs_$set_safety_sw_seg 000074 constant entry external dcl 168 ref 744 hcs_$truncate_seg 000076 constant entry external dcl 169 ref 730 hi 000570 automatic fixed bin(17,0) dcl 3019 in procedure "input_resource_price" set ref 3025* 3028* 3030 3041 hi 000550 automatic fixed bin(17,0) dcl 2975 in procedure "input_device_price" set ref 2983* 2986* 2988 2999 highest_ord 000102 automatic fixed bin(71,0) dcl 2579 set ref 2584* 2591 2592 2593* i 000264 automatic fixed bin(17,0) dcl 2039 in procedure "do_retype" set ref 2068* 2071 2071 2078* 2091* 2092 2092* 2093 2093* 2094 2094* 2095 2095* 2109* 2110* 2141* 2142* 2142* 2148* 2149* 2150 2151* 2162* 2163 2163* 2164 2164* 2165 2165* 2175* 2176* 2180* 2198 2203* 2205 2205 2211 2237* 2239 2243 2245* 2247 2251 2262* 2263 2263* 2263* 2410* 2411 2411 2421* 2433* 2439* 2439 2440* i 000351 automatic fixed bin(17,0) dcl 2545 in procedure "checkid" set ref 2552* 2552* 2554 i 000150 automatic fixed bin(17,0) dcl 1326 in procedure "do_change" set ref 1395* 1396 1402* 1402 1429* 1431 1439* 1439 1440 1440* 1444* 1456* 1459* 1464* 1466 1467* 1476* 1477 1477 1477 1477 1481* 1482* 1491* 1493 1493* 1494 1494* 1495 1495* 1498* 1501* 1507* 1509 1512 1518 1518 1522 1529* 1530 1531* 1537* 1538 1540 1547 1561* 1562 1565 1571 i 000512 automatic fixed bin(17,0) dcl 3618 in procedure "verify_structures" set ref 3625* 3626 3666* 3667 3667 3668 3668* 3668 3673 3673 3674* 3696* 3697 3697 3698 3698* 3698 3703 3703* i 000546 automatic fixed bin(17,0) dcl 2973 in procedure "input_device_price" set ref 2988* 2989* 2999* 3001* i 000565 automatic fixed bin(17,0) dcl 3017 in procedure "input_resource_price" set ref 3030* 3031* 3041* 3043* i 000376 automatic fixed bin(17,0) dcl 2684 in procedure "enter_authentication_level" set ref 2690* 2691 2691* i parameter fixed bin(17,0) dcl 3722 in procedure "write_error" set ref 3719 3725* 3725 i 000467 automatic fixed bin(17,0) dcl 2802 in procedure "get_disk_price" set ref 2804* 2805 i 000660 automatic fixed bin(17,0) dcl 3279 in procedure "rsctab$$defined" set ref 3290* 3292 3297* i 000100 automatic fixed bin(17,0) dcl 3530 in procedure "set_std_shifttab" set ref 3532* 3534 3537 3540* 3543* 3545* i 000604 automatic fixed bin(17,0) dcl 3064 in procedure "invalid_name" set ref 3075* 3077 3083 3090 3096* 3097* 3100* 3101* 3104* 3106* 3109* 3111* i 000100 automatic fixed bin(17,0) dcl 1024 in procedure "do_any" set ref 1093* 1094* 1104* 1105* i 000100 automatic fixed bin(17,0) dcl 2607 in procedure "clean_up" set ref 2610* 2611 2612 2614 2616 2617 2619* i 000104 automatic fixed bin(17,0) dcl 2580 in procedure "check_config_table" set ref 2586* 2587 2587 2587 2587* i 000100 automatic fixed bin(17,0) dcl 3222 in procedure "ptr_rs_name" set ref 3224* 3225 3225* i parameter fixed bin(17,0) dcl 3518 in procedure "set_shift_field" ref 3515 3520 i 000645 automatic fixed bin(17,0) dcl 3190 in procedure "print_sval" set ref 3200* 3201* 3201* i 000362 automatic fixed bin(17,0) dcl 2633 in procedure "devtab$$defined" set ref 2645* 2647 2669* i 000314 automatic fixed bin(17,0) dcl 82 in procedure "ed_installation_parms" set ref 602* 603 622* 627 632* 638* 644 645 646* 677 677* 726* 728 730 733* 736 736 738 741* 744 746* 768* 769 772 772 772 772 772 772* 782* 783 787* 788 789 821* 822 823 824 825* 828* 829 829 829 831 831 834* 849* 850 851 852 853 854* 858* 859 859 860 860* 867* 868 868 869 869* 902* 903 903 903* 918* 919 920 921 923 925 926 927* 986* 987 988 995* 997 997 998 998 999 999 1000 1000* i 000100 automatic fixed bin(17,0) dcl 2524 in procedure "check_device_names" set ref 2526* 2527 2529* i parameter fixed bin(17,0) dcl 3158 in procedure "print_config_element" ref 3155 3160 3160 3160 3160 3160 3160 3160 3160 3160 i 000100 automatic fixed bin(17,0) dcl 3556 in procedure "sort_config_table" set ref 3574* 3574* 3575 3575 3575 3575 3578 3578 3578 3578 3582 3584 3588 3590 3595 3597 3597 3598* 3602 i 000202 automatic fixed bin(17,0) dcl 1601 in procedure "do_print" set ref 1627* 1632 1637 1637* 1646* 1647 1647 1647 1647 1647* 1647 1647 1647 1647 1647 1647 1647 1647* 1664* 1665* 1665 1665* 1704* 1705* 1711* 1712* 1712 1712 1712* 1723* 1724* 1724 1724* 1780* 1781* 1781* 1791* 1792 1794* 1794* 1918* 1919* 1919 1919 1919* 1962* 1963 1966 1967 1967* 1989* 1990 1991 2000* 2008* 2009 2009* i parameter fixed bin(17,0) dcl 2706 in procedure "enter_category_name" set ref 2703 2711 2712 2714* 2723* 2731 2732 i parameter fixed bin(17,0) dcl 2933 in procedure "input_config_element" ref 2931 2938 2941 2943 2945 2947 2949 2951 2953 2955 2956 2957 2958 i 000124 automatic fixed bin(17,0) dcl 1134 in procedure "do_add" set ref 1214* 1215* 1216 1216 1260* 1261 1303* 1304 1305* i 000100 automatic fixed bin(17,0) dcl 3241 in procedure "rstab$$defined" set ref 3252* 3254 3259* i parameter fixed bin(17,0) dcl 2741 in procedure "enter_level_name" set ref 2738 2746 2747 2749* 2751 2761* 2762 2772 2773 i1 000151 automatic fixed bin(17,0) dcl 1326 set ref 1413* 1414 1426* 1431 1472* 1477 1487* i2 000152 automatic fixed bin(17,0) dcl 1326 set ref 1417* 1418 1431 1473* 1477 1487* i3 000153 automatic fixed bin(17,0) dcl 1326 set ref 1419* 1420 1420 1431 1474* 1477 1487* i4 000154 automatic fixed bin(17,0) dcl 1326 set ref 1421* 1422 1422* 1424* 1431 1475* 1477 1487* ia 000476 automatic fixed bin(17,0) dcl 2834 in procedure "get_nums" set ref 2845* 2846 2849 2849 2849 2854 2855 ia 000524 automatic fixed bin(17,0) dcl 2919 in procedure "idt" set ref 2921* 2922 2922* ib 000350 automatic fixed bin(17,0) dcl 2544 set ref 2548* 2549 2550* idle_time_constant_seconds 543(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 913* 1857* 2325* inactive_time 501 based fixed bin(17,0) level 3 dcl 4-33 set ref 660 840* 958 1670* 2115* index builtin function dcl 134 ref 1395 1417 2195 2809 2845 2849 3090 initiate_file_ 000100 constant entry external dcl 170 ref 629 3752 installation_id based char(32) level 3 dcl 4-33 set ref 815* 1621* 2057* installation_parms based structure level 1 dcl 4-33 set ref 641 installation_parms_part_1 based structure level 1 dcl 4-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 4-144 installation_parms_version_1 constant fixed bin(17,0) initial dcl 4-37 ref 649 808 installation_parms_version_2 constant fixed bin(17,0) initial dcl 4-38 ref 607 648 655 io_ops_price 220 based float bin(27) array level 3 dcl 6-9 set ref 824* 999* 999 1288* 1453* 1647 1647* 1647* 2095* ioa_ 000102 constant entry external dcl 172 ref 650 654 689 704 758 760 761 762 772 783 794 811 968 981 990 1095 1145 1210 1230 1253 1309 1312 1397 1409 1487 1583 1587 1617 1621 1625 1637 1641 1644 1645 1647 1655 1657 1658 1659 1662 1665 1670 1675 1680 1685 1690 1695 1702 1709 1712 1721 1724 1729 1736 1738 1740 1743 1747 1751 1755 1760 1764 1769 1774 1781 1794 1797 1800 1805 1810 1814 1818 1822 1826 1831 1835 1839 1843 1861 1865 1911 1917 1919 1924 1932 1937 1942 1956 1963 1967 1971 1998 2000 2003 2006 2009 2021 2025 2053 2067 2074 2090 2106 2139 2146 2156 2160 2169 2173 2189 2206 2207 2240 2248 2260 2399 2405 2406 2409 2423 2429 2432 2455 2459 2463 2510 2511 2512 2529 2556 2567 2596 2657 2666 2673 2694 2717 2755 2805 2841 2990 3032 3071 3078 3085 3091 3116 3144 3146 3160 3176 3197 3199 3201 3256 3263 3294 3301 3606 3637 3640 3646 3650 3661 3668 3672 3683 3689 3692 3698 3702 iod_rec_price 521 based float bin(27) array level 3 dcl 6-9 set ref 852* 1009* 1009 1298* 1495* 1712* 2165* ip defined pointer dcl 83 set ref 521* 647 648 649 655 657 658 659 660 660 661 662 663 664 665 666 670 670 671 671 671 674 677 709 726 808 808 808 808 808 808 815 816 817 818 819 838 838 840 840 842 843 844 845 853 854 858 859 860 864 865 867 867 868 869 872 875 876 877 878 879 880 881 882 883 884 885 886 887 888 892 893 894 895 896 897 898 903 903 903 910 911 911 913 915 916 919 920 921 923 923 925 926 927 933 933 936 936 939 941 945 946 948 950 951 952 954 955 956 957 958 958 959 960 961 962 975 979 1104 1106 1110 1208 1214 1216 1216 1229 1239 1247 1252 1252 1253 1253 1257 1285 1293 1294 1299 1300 1456 1456 1456 1456 1476 1477 1477 1477 1477 1498 1498 1498 1498 1512 1517 1520 1540 1546 1565 1570 1621 1632 1655 1657 1658 1659 1664 1664 1665 1665 1670 1675 1680 1685 1690 1695 1704 1723 1723 1724 1724 1729 1729 1736 1738 1740 1743 1743 1747 1747 1751 1751 1755 1755 1760 1764 1764 1769 1769 1774 1774 1800 1805 1810 1814 1818 1822 1826 1831 1835 1839 1843 1853 1857 1861 1865 1869 1873 1877 1881 1885 1889 1919 1919 1919 1924 1928 1932 1937 1959 2008 2009 2057 2099 2101 2102 2103 2106 2106 2109 2109 2115 2119 2123 2127 2131 2135 2142 2148 2150 2151 2173 2173 2175 2175 2180 2180 2180 2180 2186 2198 2199 2200 2211 2216 2221 2226 2229 2233 2243 2251 2255 2263 2272 2276 2281 2285 2289 2293 2297 2301 2305 2309 2313 2320 2325 2330 2335 2340 2344 2348 2352 2356 2360 2364 2369 2373 2378 2383 2388 2393 2410 2500 2500 2586 2587 2587 2587 2587 2609 2645 2647 2711 2712 2726 2726 2728 2728 2731 2732 2746 2747 2767 2767 2769 2769 2772 2773 2938 2941 2943 2945 2947 2949 2951 2953 2955 2956 2957 2958 2983 2990 3025 3032 3096 3096 3097 3100 3100 3101 3104 3104 3106 3109 3109 3111 3160 3160 3160 3160 3160 3160 3160 3160 3160 3224 3225 3252 3254 3290 3292 3520 3534 3537 3540 3545 3569 3575 3575 3575 3575 3578 3578 3578 3578 3582 3584 3584 3588 3590 3590 3595 3597 3597 3598 3607 3629 3631 3635 3637 3641 3644 3645 3646 3651 3659 3661 3664 3666 3667 3668 3673 3683 3687 3689 3693 3696 3697 3698 3703 3710 3725 3754 3757 3758 ip1 defined pointer dcl 84 set ref 522* ip_rings 002627 constant fixed bin(3,0) initial array dcl 122 set ref 617* 1269* ipl 000315 automatic fixed bin(17,0) dcl 85 set ref 641* 643 643 728* 730 736 736 738 j 000534 automatic fixed bin(17,0) dcl 2935 in procedure "input_config_element" set ref 2937* 2938 2939 2940* 2941 2942* 2943 2944* 2945 2952* 2953 2954* 2955 j 000125 automatic fixed bin(17,0) dcl 1134 in procedure "do_add" set ref 1236* 1238 1245* 1246 1257* 1263 1266* 1275* 1280 1281 1284 1303 1304 1305 j 000316 automatic fixed bin(17,0) dcl 86 in procedure "ed_installation_parms" set ref 723* 724 724* 734 742 747 767* 769 769 770* 770 772 833* 834* 922* 923 923 925 926 927* j 000101 automatic fixed bin(17,0) dcl 2524 in procedure "check_device_names" set ref 2527* 2527* 2529 j 000265 automatic fixed bin(17,0) dcl 2039 in procedure "do_retype" set ref 2069* 2071* 2078* 2194* 2195 2195* 2417* 2419 2437* 2438 j 000203 automatic fixed bin(17,0) dcl 1601 in procedure "do_print" set ref 1630* 1632* 1965* 1966 1967* 1967 1967* 1979* 1980 1984* 1989 j 000513 automatic fixed bin(17,0) dcl 3618 in procedure "verify_structures" set ref 3644* 3645 3645 3646 3646* 3646 3651 3651 3652* j 000155 automatic fixed bin(17,0) dcl 1326 in procedure "do_change" set ref 1403* 1429* 1431 1436* 1436 1437 1438* 1444* 1520* 1521 1522* 1542* 1543 1546* 1547* 1566* 1567 1570* 1571* j parameter fixed bin(17,0) dcl 3518 in procedure "set_shift_field" ref 3515 3520 j 000101 automatic fixed bin(17,0) dcl 3530 in procedure "set_std_shifttab" set ref 3533* 3534* 3536* 3537* 3539* 3540* 3544* 3545* j 000363 automatic fixed bin(17,0) dcl 2634 in procedure "devtab$$defined" set ref 2652* 2654* k 000156 automatic fixed bin(17,0) dcl 1326 in procedure "do_change" set ref 1428* 1429* 1444* 1448* 1450 1451 1452 1453 1513* 1515 1517* 1518 1518* 1518 1521 k 000266 automatic fixed bin(17,0) dcl 2039 in procedure "do_retype" set ref 2071* 2073 2073 2078* k parameter fixed bin(17,0) dcl 3518 in procedure "set_shift_field" ref 3515 3520 k 000317 automatic fixed bin(17,0) dcl 87 in procedure "ed_installation_parms" set ref 763* 764 764* 766* 772 k 000204 automatic fixed bin(17,0) dcl 1601 in procedure "do_print" set ref 1632* 1633 1946* 1948* 1949 1975* 1977* 1978 1979* 1985* 1989 kbulk 1156(18) based fixed bin(17,0) array level 4 packed packed unaligned dcl 4-33 set ref 880* 1477 2587 2943* 3160* 3575 3578 keyn 000550 constant fixed bin(17,0) initial array dcl 311 ref 769 772 772 772 772 772 2550 2921 2922 keyw 000737 constant char(32) initial array packed unaligned dcl 187 set ref 768 772* 2548 2549 2922 keywx 000320 automatic fixed bin(17,0) dcl 88 in procedure "ed_installation_parms" set ref 1068* 1069 1071 1071 1071 1073 1081 1086 1099 1113* 1121* 1145* 1145* 2293* 2293* 2455* 2455* keywx 000352 automatic fixed bin(17,0) dcl 2546 in procedure "checkid" set ref 2550* 2552 2554 2556* 2556* 2563 kmem 1156 based fixed bin(17,0) array level 4 packed packed unaligned dcl 4-33 set ref 879* 1477 2587 2941* 3160* 3575 3578 lbound builtin function dcl 134 ref 867 1138 1330 1456 1456 1498 1498 1610 1664 1723 2046 2109 2175 2180 2180 2690 3096 3100 3104 3109 length builtin function dcl 134 ref 1993 2726 2726 2728 2728 2767 2767 2769 2769 3075 level 1 based fixed bin(17,0) level 2 packed packed unaligned dcl 2-12 set ref 1729* 2198* level_names 550 based char(32) array level 3 dcl 4-33 set ref 858 859* 864* 1456 1456 1456 1456 1664 1664 1665* 2106 2106 2109 2109 2180 2180 2180 2180 2746* 2767 2767 2772* 3096 3096 3097 lo 000551 automatic fixed bin(17,0) dcl 2975 in procedure "input_device_price" set ref 2984* 2986* 2988 2999 lo 000571 automatic fixed bin(17,0) dcl 3019 in procedure "input_resource_price" set ref 3026* 3028* 3030 3041 log_base_price 210 based float bin(27) array level 3 dcl 6-9 set ref 823* 998* 998 1287* 1451* 1647 1647* 1647* 2093* login_time 503 based fixed bin(17,0) level 3 dcl 4-33 set ref 843* 1685* 2127* login_tries 505 based fixed bin(17,0) level 3 dcl 4-33 set ref 845* 1690* 2131* long_sw 000673 automatic bit(1) dcl 3320 set ref 3323* 3330* 3338* 3345 loud_sw parameter bit(1) dcl 2631 in procedure "devtab$$defined" ref 2626 2640 2656 2665 2672 loud_sw parameter bit(1) dcl 3277 in procedure "rsctab$$defined" ref 3272 3285 3293 3300 loud_sw parameter bit(1) dcl 2542 in procedure "checkid" ref 2538 2555 2566 loud_sw parameter bit(1) dcl 3239 in procedure "rstab$$defined" ref 3234 3247 3255 3262 ltrim builtin function dcl 134 ref 627 831 859 860 868 869 1263 1518 1633 1993 1995 m 000205 automatic fixed bin(17,0) dcl 1601 set ref 1629* 1633 1634* 1634 1950* 1952 1958* 1962 max_abs 1554 based fixed bin(17,0) array level 3 packed packed unaligned dcl 4-33 set ref 919* 1869* 2340* max_qres 1570 based fixed bin(17,0) array level 3 packed packed unaligned dcl 4-33 set ref 925* 1881* 2352* maxa 1157(18) based fixed bin(11,0) array level 4 packed packed unaligned dcl 4-33 set ref 882* 2953* 3160* maxq 1157(30) based fixed bin(5,0) array level 4 packed packed unaligned dcl 4-33 set ref 883* 2955* 3160* maxu_base 1160 based fixed bin(17,0) array level 4 packed packed unaligned dcl 4-33 set ref 884* 2951* 3160 me 002632 constant char(24) initial packed unaligned dcl 121 set ref 537* 548* 554* 562* 567* 576* 586* 612* 619* 622* 671* 1063* 1139* 1271* 1331* 1611* 2047* 2924* 3227* 3725* min_abs 1560 based fixed bin(17,0) array level 3 packed packed unaligned dcl 4-33 set ref 920* 1873* 2344* min_qres 1610 based fixed bin(17,0) array level 3 packed packed unaligned dcl 4-33 set ref 926* 1885* 2356* msg parameter char packed unaligned dcl 3723 set ref 3719 3725* mx 000231 automatic bit(1) dcl 1605 set ref 1717* 1895* 1902* 1908* 1911* 1917 1917* 1919* n parameter fixed bin(17,0) dcl 3518 in procedure "set_shift_field" ref 3515 3520 n parameter fixed bin(17,0) dcl 2918 in procedure "idt" ref 2915 2922 n 000206 automatic fixed bin(17,0) dcl 1601 in procedure "do_print" set ref 1631* 1632* 1950* 1959* 1962 n 000157 automatic fixed bin(17,0) dcl 1326 in procedure "do_change" set ref 1405* 1407 1407* 1408 1408 1409* 1429* 1431 1433* 1433 1434 1435* 1444* n 000267 automatic fixed bin(17,0) dcl 2039 in procedure "do_retype" set ref 2070* 2071 2078* 2186* 2187* 2188 2189* 2194 n1 parameter fixed bin(17,0) dcl 2833 set ref 2829 2846* 2854* n2 parameter fixed bin(17,0) dcl 2833 set ref 2829 2846* 2855* name 000436 automatic char(32) packed unaligned dcl 2743 in procedure "enter_level_name" set ref 2749* 2751 2751* 2767* 2772 name parameter char packed unaligned dcl 3173 in procedure "print_halfword" set ref 3170 3176* name parameter char packed unaligned dcl 2475 in procedure "ask_on_off" set ref 2472 2477* 2483* name 000416 automatic char(32) packed unaligned dcl 2708 in procedure "enter_category_name" set ref 2714* 2716 2726* 2731 name parameter char packed unaligned dcl 3186 in procedure "print_sval" set ref 3183 3197* 3205 name 2401 based char(32) array level 3 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" set ref 1012* 1012 1300* 1547* 1794* 2000* 3038* 3667 3668* 3673* name 2401 based char(32) array level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 1300 1540 2263 3292 3667 3668* 3673 nargs 000321 automatic fixed bin(17,0) dcl 89 set ref 532* 533 533 nbad 000334 automatic fixed bin(17,0) initial dcl 2495 set ref 2495* 2505* 2505 2509 2511 nbulk parameter fixed bin(17,0) dcl 2784 ref 2780 2786 2789 ncon 000111 automatic fixed bin(17,0) dcl 3562 in procedure "sort_config_table" set ref 3569* 3571 3574 3584 3585* 3585 3590 3591* 3591 3607 ncon 1154 based fixed bin(17,0) level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 875* 1208 1214 1216* 1476 1704 2150* 2586 3569 3607* ncpu parameter fixed bin(17,0) dcl 2784 ref 2780 2786 2789 nd_handler_ 000104 constant entry external dcl 173 ref 612 ndevices 240 based fixed bin(17,0) level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 808 1229 1239 1293 1517 1959 2645 3635 3637* 3641 3644 ndevices 240 based fixed bin(17,0) level 3 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" set ref 827* 829 1005* 1005 1293* 1521* 1780 2141 2527 2529 3001* 3635 3637* 3641* nmem parameter fixed bin(17,0) dcl 2784 ref 2780 2786 2789 no_charge 000227 automatic bit(1) dcl 1604 set ref 1964* 1968* 1971 nq 000644 automatic fixed bin(17,0) dcl 3189 in procedure "print_sval" set ref 3194* 3197 3199 3200 3201 3201 3201 3210* nq 000711 automatic fixed bin(17,0) dcl 3368 in procedure "set_qval" set ref 3405* 3428* 3433 3465 nrates 1713 based fixed bin(17,0) level 3 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" set ref 1304* 3687 3689* 3693* nrates 1713 based fixed bin(17,0) level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 670 670 671 671 671* 674* 677 726 950* 1104 1252 1257 1520 1546 1570 2008 2983 2990 3025 3032 3224 3252 3629 3687 3689* 3693 3696 nrscp 2400 based fixed bin(17,0) level 3 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" set ref 728 1010* 1010 1012 1012 1013 1013 1299* 1300 1301 1791 1985 2262 3043* 3659 3661* 3664* nrscp 2400 based fixed bin(17,0) level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 641 808 893* 1247 1299 1300 3290 3659 3661* 3664 3666 ns 000713 automatic fixed bin(17,0) dcl 3368 set ref 3405* 3450* 3455 3470 null builtin function dcl 134 ref 521 522 523 525 631 637 1265 1274 2609 2611 2614 2616 2619 o1 000102 automatic fixed bin(71,0) dcl 3557 set ref 3575* 3582 3594 o2 000104 automatic fixed bin(71,0) dcl 3558 set ref 3578* 3588 3594 operator_inactive_time 2036 based fixed bin(17,0) level 3 dcl 4-33 set ref 660* 840* 958* 1675* 2119* pad1 541(01) based bit(2) level 4 packed packed unaligned dcl 4-33 set ref 933 936 941* part_1 based structure level 2 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" part_1 based structure level 2 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" pass_sw 000246 automatic bit(1) dcl 1608 set ref 1790* 1793* 1797 1988* 1996 1997* 2003 password_change_interval 2042 based fixed bin(17,0) level 3 dcl 4-33 set ref 665* 961* 1764 1764* 2243* password_expiration_interval 2043 based fixed bin(17,0) level 3 dcl 4-33 set ref 666* 962* 1769 1769* 2251* password_gpw_length 2041 based fixed bin(17,0) level 3 dcl 4-33 set ref 664* 960* 1760* 2233* password_min_length 2040 based fixed bin(17,0) level 3 dcl 4-33 set ref 663* 959* 1755 1755* 2229* path 000322 automatic char(168) initial packed unaligned dcl 90 set ref 90* 542 573* 574* 576* 583* 584* 586* pct_abs 1564 based fixed bin(17,0) array level 3 packed packed unaligned dcl 4-33 set ref 921* 1877* 2348* pct_qres 1630 based fixed bin(17,0) array level 3 packed packed unaligned dcl 4-33 set ref 927* 1889* 2360* phoo 000520 automatic bit(1) dcl 3622 set ref 3713* price 2411 based float bin(27) array level 3 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" set ref 1013* 1013 1301* 1792 1990 1991* 2263 3037* 3674* price parameter float bin(27) dcl 2798 in procedure "get_disk_price" set ref 2795 2812* 2819* print_comm 000374 automatic char(32) packed unaligned dcl 91 set ref 1050* 1053* 1057* 1060* 1312* 1583* 1587* 2021* 2025* 2459* 2463* privileges 1(18) based structure level 2 packed packed unaligned dcl 2-12 set ref 2200* program_interrupt 000472 stack reference condition dcl 99 ref 685 prompt parameter char packed unaligned dcl 3313 in procedure "set_halfword" set ref 3310 3327 3334 3343* 3344* prompt parameter char packed unaligned dcl 3131 in procedure "out_of_range" set ref 3126 3144* prompt parameter char packed unaligned dcl 3361 in procedure "set_qval" set ref 3358 3378 3387 3396 3475* 3483* prompt parameter char packed unaligned dcl 2832 in procedure "get_nums" set ref 2829 2836* prompted 000707 automatic bit(1) initial dcl 3367 set ref 3367* 3475* 3486* ptr builtin function dcl 134 ref 808 q 000336 automatic fixed bin(17,0) dcl 2496 in procedure "check_abs_cpu_limit" set ref 2498* 2500 2500 2500 2503 2504* q 000710 automatic fixed bin(17,0) dcl 3368 in procedure "set_qval" set ref 3465* 3475* 3491 3501 3502* q_ext 000716 automatic fixed bin(17,0) dcl 3370 set ref 3433* 3435* 3475 3489 3499 q_hi parameter fixed bin(17,0) dcl 2870 in procedure "get_shift_queue" set ref 2864 2890* 2904 q_hi 000723 automatic fixed bin(17,0) dcl 3372 in procedure "set_qval" set ref 3410* 3412* 3425* 3430* 3433 3475* q_lo 000722 automatic fixed bin(17,0) dcl 3372 in procedure "set_qval" set ref 3410* 3412* 3417 3421* 3423 3425 3429* 3433 3465 3465 q_lo parameter fixed bin(17,0) dcl 2870 in procedure "get_shift_queue" set ref 2864 2878* 2890* 2904 2907* qarray parameter fixed bin(35,0) array dcl 3362 set ref 3358 3491* qbad 000330 automatic bit(1) initial array dcl 2494 set ref 2494* 2494* 2494* 2494* 2504* 2511* qok 000324 automatic bit(1) initial array dcl 2494 set ref 2494* 2494* 2494* 2494* 2500* 2503 qx 000715 automatic fixed bin(17,0) dcl 3370 set ref 3489* 3491* 3499* 3501 3502* rate_structure based structure level 1 dcl 6-9 set ref 728 rate_structure_number 1711(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 6-9 set ref 1284* 2986 3028 3681 3683* 3685* rate_structures 1714 based char(32) array level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 951* 952* 1252 1253 1253 1285 1565 2009* 3225 3254 3631 3683* 3697 3698* 3703 3725* rate_structures 1714 based char(32) array level 3 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" set ref 1285* 1305* 1571* 3697 3698* 3703* rcp_init_flags 541 based structure level 3 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" set ref 892* rcp_init_flags based structure level 1 packed packed unaligned dcl 5-8 in procedure "ed_installation_parms" registration_price 507 based float bin(27) level 3 dcl 6-9 set ref 847* 1004* 1004 1291* 1644* 1644* 2087* rel builtin function dcl 134 ref 671 671 require_operator_login 2035 based bit(1) level 3 dcl 4-33 set ref 658* 955* 1747* 1747 2221* resource 2401 based structure array level 2 in structure "rate_structure" dcl 6-9 in procedure "ed_installation_parms" resource 2401 based structure array level 2 in structure "installation_parms" dcl 4-33 in procedure "ed_installation_parms" resource_mgmt_enabled 541(03) based bit(1) level 4 packed packed unaligned dcl 4-33 set ref 1839* 2309* response_high 1160(18) based fixed bin(17,0) array level 4 packed packed unaligned dcl 4-33 set ref 885* 2949* 3160 response_low 1161 based fixed bin(17,0) array level 4 packed packed unaligned dcl 4-33 set ref 886* 2947* 3160 reverse builtin function dcl 134 ref 3075 rs_ptrs 000404 automatic pointer array dcl 92 set ref 521* 521 523* 644* 647 647 648 648 649 649 655 655 657 657 658 658 659 659 660 660 660 660 661 661 662 662 663 663 664 664 665 665 666 666 670 670 670 670 670 671 671 671 671 671 671 674 674 677 677 709 709 726 726 728 736 789 808 808 808 808 808 808 808 808 808 808 808 808 815 815 816 816 817 817 818 818 819 819 838 838 838 838 840 840 840 840 842 842 843 843 844 844 845 845 853 853 854 854 858 858 859 859 860 860 864 864 865 865 867 867 867 867 868 868 869 869 872 872 875 875 876 876 877 877 878 878 879 879 880 880 881 881 882 882 883 883 884 884 885 885 886 886 887 887 888 888 892 892 893 893 894 894 895 895 896 896 897 897 898 898 903 903 903 903 903 903 910 910 911 911 911 911 913 913 915 915 916 916 919 919 920 920 921 921 923 923 923 923 925 925 926 926 927 927 933 933 933 933 936 936 936 936 939 939 941 941 945 945 946 946 948 948 950 950 951 951 952 952 954 954 955 955 956 956 957 957 958 958 958 958 959 959 960 960 961 961 962 962 975 975 979 979 988 1104 1104 1105 1106 1106 1110 1110 1208 1208 1214 1214 1216 1216 1216 1216 1229 1229 1239 1239 1247 1247 1252 1252 1252 1252 1253 1253 1253 1253 1257 1257 1281* 1285 1285 1293 1293 1294 1294 1299 1299 1300 1300 1304 1305 1456 1456 1456 1456 1456 1456 1456 1456 1476 1476 1477 1477 1477 1477 1477 1477 1477 1477 1498 1498 1498 1498 1498 1498 1498 1498 1512 1512 1517 1517 1520 1520 1521 1522 1540 1540 1546 1546 1547 1565 1565 1570 1570 1571 1621 1621 1632 1632 1655 1655 1657 1657 1658 1658 1659 1659 1664 1664 1664 1664 1665 1665 1665 1665 1670 1670 1675 1675 1680 1680 1685 1685 1690 1690 1695 1695 1704 1704 1723 1723 1723 1723 1724 1724 1724 1724 1729 1729 1729 1729 1736 1736 1738 1738 1740 1740 1743 1743 1743 1743 1747 1747 1747 1747 1751 1751 1751 1751 1755 1755 1755 1755 1760 1760 1764 1764 1764 1764 1769 1769 1769 1769 1774 1774 1774 1774 1800 1800 1805 1805 1810 1810 1814 1814 1818 1818 1822 1822 1826 1826 1831 1831 1835 1835 1839 1839 1843 1843 1853 1853 1857 1857 1861 1861 1865 1865 1869 1869 1873 1873 1877 1877 1881 1881 1885 1885 1889 1889 1919 1919 1919 1919 1919 1919 1924 1924 1928 1928 1932 1932 1937 1937 1959 1959 2008 2008 2009 2009 2009 2057 2057 2099 2099 2101 2101 2102 2102 2103 2103 2106 2106 2106 2106 2109 2109 2109 2109 2115 2115 2119 2119 2123 2123 2127 2127 2131 2131 2135 2135 2142 2142 2148 2148 2150 2150 2151 2151 2173 2173 2173 2173 2175 2175 2175 2175 2180 2180 2180 2180 2180 2180 2180 2180 2186 2186 2198 2198 2199 2199 2200 2200 2211 2211 2216 2216 2221 2221 2226 2226 2229 2229 2233 2233 2243 2243 2251 2251 2255 2255 2263 2263 2272 2272 2276 2276 2281 2281 2285 2285 2289 2289 2293 2293 2297 2297 2301 2301 2305 2305 2309 2309 2313 2313 2320 2320 2325 2325 2330 2330 2335 2335 2340 2340 2344 2344 2348 2348 2352 2352 2356 2356 2360 2360 2364 2364 2369 2369 2373 2373 2378 2378 2383 2383 2388 2388 2393 2393 2410 2410 2500 2500 2500 2500 2586 2586 2587 2587 2587 2587 2587 2587 2587 2587 2609 2609 2610 2611 2612* 2614* 2645 2645 2647 2647 2711 2711 2712 2712 2726 2726 2726 2726 2728 2728 2728 2728 2731 2731 2732 2732 2746 2746 2747 2747 2767 2767 2767 2767 2769 2769 2769 2769 2772 2772 2773 2773 2938 2938 2941 2941 2943 2943 2945 2945 2947 2947 2949 2949 2951 2951 2953 2953 2955 2955 2956 2956 2957 2957 2958 2958 2983 2983 2989 2990 2990 3001 3025 3025 3031 3032 3032 3043 3096 3096 3096 3096 3097 3097 3100 3100 3100 3100 3101 3101 3104 3104 3104 3104 3106 3106 3109 3109 3109 3109 3111 3111 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3160 3224 3224 3225 3225 3225 3252 3252 3254 3254 3290 3290 3292 3292 3520 3520 3534 3534 3537 3537 3540 3540 3545 3545 3569 3569 3575 3575 3575 3575 3575 3575 3575 3575 3578 3578 3578 3578 3578 3578 3578 3578 3582 3582 3584 3584 3584 3584 3588 3588 3590 3590 3590 3590 3595 3595 3597 3597 3597 3597 3598 3598 3607 3607 3629 3629 3630 3631 3631 3635 3635 3637 3637 3641 3641 3644 3644 3645 3645 3646 3646 3651 3651 3659 3659 3661 3661 3664 3664 3666 3666 3667 3667 3668 3668 3673 3673 3683 3683 3687 3687 3689 3689 3693 3693 3696 3696 3697 3697 3698 3698 3703 3703 3710 3710 3725 3725 3754 3754 3757 3757 3758 3758 rs_ptrs1 000430 automatic pointer array dcl 93 set ref 522* 522 523* 645* 730* 736 738* 744* 1280* 2616 2617* 2619* rsc_timer_seconds 542 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 894* 1800* 2272* rscnm 000233 automatic char(32) packed unaligned dcl 1606 in procedure "do_print" set ref 1977* 1979* rscnm 000272 automatic char(32) packed unaligned dcl 2042 in procedure "do_retype" set ref 2434* 2436 2437* 2440* rscnm parameter char packed unaligned dcl 3012 in procedure "input_resource_price" set ref 3008 3035* 3038 rscnm 000160 automatic char(32) packed unaligned dcl 1327 in procedure "do_change" set ref 1527* 1529* 1531* 1536* 1537* 1539* 1540 1542* 1547 1560* 1561* 1563* 1565 1566* 1571 rscnm parameter char packed unaligned dcl 3276 in procedure "rsctab$$defined" set ref 3272 3285 3292 3294* 3301* rscnm 000130 automatic char(32) packed unaligned dcl 1136 in procedure "do_add" set ref 1244* 1245* 1247* 1258* 1260* 1305 1309* rscx parameter fixed bin(17,0) dcl 3011 ref 3008 3037 3038 3043 rsn 000514 automatic fixed bin(17,0) dcl 3619 set ref 3629* 3630 3631 3681 3683* 3683 3685* rsname 000521 automatic char(32) packed unaligned dcl 3623 set ref 3631* 3637* 3646* 3661* 3689* 3698* rsnm parameter char packed unaligned dcl 3238 set ref 3234 3247 3254 3254 3256* 3263* rsp 000454 automatic pointer dcl 94 in procedure "ed_installation_parms" set ref 635* 637 643 644 975* 988* 989 997 998 999 1000 1002 1004 1005 1006 1007 1008 1009 1010 1012 1013 1272* 1274 1281 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 rsp parameter pointer dcl 3221 in procedure "ptr_rs_name" ref 3218 3225 rsp 000544 automatic pointer dcl 2972 in procedure "input_device_price" set ref 2989* 2990* 2990* 2993 2995 rsp 000566 automatic pointer dcl 3018 in procedure "input_resource_price" set ref 3031* 3032* 3032* 3037 3038 rsp1 000456 automatic pointer dcl 95 set ref 605* 607 629* 631 641 643 645 1264* 1265 1280 rtrim builtin function dcl 134 ref 593 622 632 1266 2810 2810 2817 2817 2838 s 000712 automatic fixed bin(17,0) dcl 3368 in procedure "set_qval" set ref 3470* 3475 3475* 3496 3501 3502* s 000335 automatic fixed bin(17,0) dcl 2496 in procedure "check_abs_cpu_limit" set ref 2499* 2500* s 000547 automatic fixed bin(17,0) dcl 2974 in procedure "input_device_price" set ref 2994* 2995 2995* s_ext 000720 automatic fixed bin(17,0) dcl 3370 set ref 3455* 3457* 3475 3494 3500 s_hi 000725 automatic fixed bin(17,0) dcl 3372 in procedure "set_qval" set ref 3411* 3412* 3447* 3452* 3455 3475* s_hi parameter fixed bin(17,0) dcl 2870 in procedure "get_shift_queue" set ref 2864 2885* 2897 s_lo parameter fixed bin(17,0) dcl 2870 in procedure "get_shift_queue" set ref 2864 2878* 2885* 2897 2900* s_lo 000724 automatic fixed bin(17,0) dcl 3372 in procedure "set_qval" set ref 3411* 3412* 3439 3443* 3445 3447 3451* 3455 3470 3470 3475 sarray parameter fixed bin(17,0) array packed unaligned dcl 3187 in procedure "print_sval" set ref 3183 3195 sarray parameter fixed bin(17,0) array packed unaligned dcl 3381 in procedure "set_qval" set ref 3378 3496* save_crit 000552 automatic bit(1) dcl 2976 in procedure "input_device_price" set ref 2980* 3003 save_crit 000110 automatic bit(1) dcl 3561 in procedure "sort_config_table" set ref 3567* 3609 save_crit 000572 automatic bit(1) dcl 3020 in procedure "input_resource_price" set ref 3022* 3046 sc_stat_$sysdir 000110 external static char(168) packed unaligned dcl 8-21 set ref 3752* selected_rs_ptr 000460 automatic pointer dcl 96 set ref 525* 647* 708 789* 1109 3709 seq_ptr 000102 automatic pointer dcl 1025 set ref 1078* 1083* 1089* 1094 seq_size 000104 automatic fixed bin(17,0) dcl 1026 set ref 1079* 1084* 1090* 1093 sequence based fixed bin(17,0) array dcl 1027 set ref 1094* sequence_ABS_Q 000434 constant fixed bin(17,0) initial array dcl 458 set ref 1083 1084 sequence_ALL 000445 constant fixed bin(17,0) initial array dcl 443 set ref 1078 1079 sequence_RATES 000440 constant fixed bin(17,0) initial array dcl 454 set ref 1089 1090 set_hi parameter bit(1) dcl 3014 in procedure "input_resource_price" ref 3008 3041 set_hi parameter bit(1) dcl 2970 in procedure "input_device_price" ref 2964 2999 set_queue 000705 automatic bit(1) initial dcl 3365 set ref 3365* 3375* 3393* 3402* 3416 3475 set_shift 000704 automatic bit(1) initial dcl 3365 set ref 3365* 3384* 3393* 3402* 3438 3475 shift 1155(06) based fixed bin(5,0) array level 4 in structure "installation_parms" packed packed unaligned dcl 4-33 in procedure "ed_installation_parms" set ref 877* 1477 2587 2945* 3160* 3575 3578 shift parameter fixed bin(17,0) dcl 2784 in procedure "gen_config_ordinal" ref 2780 2786 2789 shifttab 144 based bit(3) array level 3 packed packed unaligned dcl 4-33 set ref 1632 3520* 3534* 3537* 3540* 3545* short_category_names 1110 based char(8) array level 3 dcl 4-33 set ref 869* 1724* 2712* 2728 2728 2732* 3109 3109 3111 short_level_names 1070 based char(8) array level 3 dcl 4-33 set ref 860* 865* 1665* 2747* 2769 2769 2773* 3104 3104 3106 short_name 000446 automatic char(8) packed unaligned dcl 2744 in procedure "enter_level_name" set ref 2761* 2762 2762* 2769* 2773 short_name 000426 automatic char(8) packed unaligned dcl 2709 in procedure "enter_category_name" set ref 2723* 2724 2728* 2732 should_find 000661 automatic bit(1) dcl 3280 in procedure "rsctab$$defined" set ref 3282* 3288* 3293 3300 should_find 000364 automatic bit(1) dcl 2635 in procedure "devtab$$defined" set ref 2637* 2643* 2649 2665 2672 should_find 000101 automatic bit(1) dcl 3242 in procedure "rstab$$defined" set ref 3244* 3250* 3255 3262 sqarray parameter fixed bin(17,0) array packed unaligned dcl 3390 in procedure "set_qval" set ref 3387 3501* sqarray parameter fixed bin(17,0) array packed unaligned dcl 3208 in procedure "print_sval" set ref 3205 3211 sqlarray parameter fixed bin(35,0) array dcl 3399 set ref 3396 3502* ssdq 4 based fixed bin(17,0) level 2 dcl 3737 ref 3754 string builtin function dcl 134 set ref 2200* substr builtin function dcl 134 set ref 561 933 936 1395 1417 1633* 1637 1637 1993 2071 2071 2188 2195* 2195 2849 2849 2854 2855 3083 3090 suppress_nl 000462 automatic bit(1) dcl 97 set ref 1037* 1095 1672* 1677* 1682* 1687* 1692* 1934* 1939* sus_cpu_time_seconds 544 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 915* 1861* 2330* sus_real_time_seconds 544(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 916* 1865* 2335* sx 000717 automatic fixed bin(17,0) dcl 3370 set ref 3494* 3496* 3500* 3501 3502* syserr_log_copy_threshold 535 based fixed bin(9,0) level 3 dcl 4-33 set ref 661* 888* 1736 1738 1740* 2211* tcona 000112 automatic structure level 1 dcl 3563 set ref 3595* 3598 term_cpu_time_seconds 540(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 898* 1818* 2289* term_real_time_seconds 540 based fixed bin(17,0) level 3 packed packed unaligned dcl 4-33 set ref 897* 1814* 2285* terminate_file_ 000106 constant entry external dcl 174 ref 2617 3755 this_ord 000100 automatic fixed bin(71,0) dcl 2579 set ref 2587* 2590 2591 2592 2593 tmx 000232 automatic bit(1) dcl 1605 set ref 1717* 1896* 1901* 1908* 1911* 1917* 1919* told_user 000010 internal static bit(1) initial dcl 126 set ref 702 705* trusted_path_login 2034 based bit(1) level 3 dcl 4-33 set ref 657* 954* 1743* 1743 2216* units parameter char packed unaligned dcl 3314 set ref 3310 3327 3334 3343 3343* unload_on_detach 541 based bit(1) level 4 packed packed unaligned dcl 4-33 set ref 1822* 2293* unspec builtin function dcl 134 set ref 643* 643 736* 736 892* v parameter fixed bin(17,0) packed unaligned dcl 3174 in procedure "print_halfword" set ref 3170 3176* v parameter fixed bin(35,0) dcl 3129 in procedure "out_of_range" set ref 3126 3136 3138 3144* v 000672 automatic fixed bin(35,0) dcl 3318 in procedure "set_halfword" set ref 3343* 3344* 3345 3346 3347 v 000714 automatic fixed bin(35,0) dcl 3369 in procedure "set_qval" set ref 3475* 3483* 3491 3496 3501 3502 v17al parameter fixed bin(17,0) dcl 3316 set ref 3327 3346* v17unal parameter fixed bin(17,0) packed unaligned dcl 3315 set ref 3310 3347* v35al parameter fixed bin(35,0) dcl 3317 set ref 3334 3345* v_hi parameter fixed bin(35,0) dcl 3130 in procedure "out_of_range" set ref 3126 3138 3138 3144* v_hi parameter fixed bin(35,0) dcl 3363 in procedure "set_qval" set ref 3358 3378 3387 3396 3483* v_hi parameter fixed bin(35,0) dcl 3319 in procedure "set_halfword" set ref 3310 3327 3334 3344* v_lo parameter fixed bin(35,0) dcl 3319 in procedure "set_halfword" set ref 3310 3327 3334 3344* v_lo parameter fixed bin(35,0) dcl 3130 in procedure "out_of_range" set ref 3126 3136 3136 3144* v_lo parameter fixed bin(35,0) dcl 3363 in procedure "set_qval" set ref 3358 3378 3387 3396 3483* valid_for_rs 000533 constant fixed bin(17,0) initial array dcl 438 ref 769 769 772 2552 2552 2554 validate_daemon_commands 2037 based bit(1) level 3 dcl 4-33 set ref 662* 957* 1751* 1751 2226* vchn_requires_accept 2044 based bit(1) level 3 dcl 4-33 set ref 659* 956* 1774* 1774 2255* verify builtin function dcl 134 ref 2188 2838 3075 3083 version 1712 based fixed bin(35,0) level 3 dcl 4-33 set ref 607* 648 649 655* 808 808 808 warning_time 502 based fixed bin(17,0) level 3 dcl 4-33 set ref 842* 1680* 2123* x 000510 automatic fixed bin(17,0) dcl 2873 set ref 2880* 2882 x1 1155(12) based fixed bin(23,0) array level 4 packed packed unaligned dcl 4-33 set ref 878* 2956* x2 1157 based fixed bin(17,0) array level 4 packed packed unaligned dcl 4-33 set ref 881* 2957* x3 1161(18) based fixed bin(17,0) array level 4 packed packed unaligned dcl 4-33 set ref 887* 2958* xid parameter char packed unaligned dcl 2541 set ref 2538 2549 2567* yn 000100 automatic char(4) packed unaligned dcl 687 in on unit on line 685 set ref 690* 691 yn 000304 automatic char(4) packed unaligned dcl 2044 in procedure "do_retype" set ref 2088* 2089 2214* 2216 2219* 2221 2224* 2226 2253* 2255 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Manual_authentication internal static fixed bin(17,0) initial dcl 5-16 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 7-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 7-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 7-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 7-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 7-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 7-15 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 dev_disk internal static fixed bin(17,0) initial dcl 3-54 dev_disk_mt internal static fixed bin(17,0) initial dcl 3-55 dev_dsa_hour internal static fixed bin(17,0) initial dcl 3-59 dev_dsa_kilobyte internal static fixed bin(17,0) initial dcl 3-57 dev_dsa_kilopacket internal static fixed bin(17,0) initial dcl 3-58 dev_lv internal static fixed bin(17,0) initial dcl 3-56 dev_tape internal static fixed bin(17,0) initial dcl 3-52 dev_tape_mt internal static fixed bin(17,0) initial dcl 3-53 devtab_ix_disk internal static fixed bin(17,0) initial dcl 3-63 devtab_ix_disk_mt internal static fixed bin(17,0) initial dcl 3-64 devtab_ix_dsa_hour internal static fixed bin(17,0) initial dcl 3-68 devtab_ix_dsa_kilobyte internal static fixed bin(17,0) initial dcl 3-66 devtab_ix_dsa_kilopacket internal static fixed bin(17,0) initial dcl 3-67 devtab_ix_lv internal static fixed bin(17,0) initial dcl 3-65 devtab_ix_tape internal static fixed bin(17,0) initial dcl 3-61 devtab_ix_tape_mt internal static fixed bin(17,0) initial dcl 3-62 rifp automatic pointer dcl 5-6 sc_stat_$Go external static bit(1) dcl 8-62 sc_stat_$Go_typed external static bit(1) dcl 8-62 sc_stat_$Multics external static bit(1) dcl 8-62 sc_stat_$Multics_typed external static bit(1) dcl 8-62 sc_stat_$Star_typed external static bit(1) dcl 8-62 sc_stat_$admin_listener_exit_label external static label variable dcl 8-34 sc_stat_$admin_listener_switch external static bit(1) dcl 8-62 sc_stat_$admin_log_iocb external static pointer dcl 8-45 sc_stat_$admin_log_write_ptr external static pointer dcl 8-45 sc_stat_$admin_sci_ptr external static pointer dcl 8-45 sc_stat_$as_log_write_ptr external static pointer dcl 8-45 sc_stat_$did_part1 external static bit(1) dcl 8-62 sc_stat_$did_part2 external static bit(1) dcl 8-62 sc_stat_$did_part3 external static bit(1) dcl 8-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 8-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 8-21 sc_stat_$initzer_ttyp external static pointer dcl 8-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 8-21 sc_stat_$master_abort_label external static label variable dcl 8-34 sc_stat_$master_channel external static char(6) dcl 8-29 sc_stat_$master_iocb external static pointer dcl 8-45 sc_stat_$master_sci_ptr external static pointer dcl 8-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 8-21 sc_stat_$mc_ansp external static pointer dcl 8-45 sc_stat_$mc_iocb external static pointer dcl 8-45 sc_stat_$mc_is_on external static bit(1) dcl 8-62 sc_stat_$no_operator_login external static bit(1) dcl 8-62 sc_stat_$shutdown_typed external static bit(1) dcl 8-62 sc_stat_$sv1_iocb external static pointer dcl 8-45 sc_stat_$sv2_iocb external static pointer dcl 8-45 sc_stat_$sv3_iocb external static pointer dcl 8-45 sc_stat_$system_shutdown_label external static label variable dcl 8-34 sc_stat_$test_mode external static bit(1) dcl 8-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 8-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 8-62 terminate_file_switches based structure level 1 packed packed unaligned dcl 7-4 NAMES DECLARED BY EXPLICIT CONTEXT. add 000000 constant label array(64) dcl 1145 ref 1138 1138 1143 1205 1220 1223 1246 add52a 014701 constant label dcl 1234 ref 1238 add54a 015036 constant label dcl 1258 ref 1261 ask_for_nums 033704 constant label dcl 2836 ref 2842 ask_on_off 031333 constant entry internal dcl 2472 ref 2293 2309 2313 bad_nums 033756 constant label dcl 2839 set ref 2849 badday 016142 constant label dcl 1397 ref 1418 badhalf 016204 constant label dcl 1405 ref 1411 badhour 016174 constant label dcl 1403 ref 1420 badshf 024633 constant label dcl 2071 ref 2076 cant_add_rs 015773 constant label dcl 1312 ref 1227 1242 1250 cant_change 020000 constant label dcl 1583 ref 1390 1576 cant_change_rs 020041 constant label dcl 1587 ref 1504 1534 1558 cant_comm_rs 013566 constant label dcl 968 ref 943 cant_print 024342 constant label dcl 2021 cant_print_rs 024403 constant label dcl 2025 cant_retype 031231 constant label dcl 2459 cant_retype_must_change 031175 constant label dcl 2455 ref 2257 2269 2444 cant_retype_rs 031272 constant label dcl 2463 ref 2403 2427 2447 ch20a 017276 constant label dcl 1510 ref 1515 ch22a 017547 constant label dcl 1540 ref 1543 ch54a 017667 constant label dcl 1563 ref 1567 change 000100 constant label array(64) dcl 1337 ref 1330 1330 1335 1400 1466 1509 1530 1538 1552 1555 1562 change_this_name 033017 constant label dcl 2714 in procedure "enter_category_name" ref 2720 2726 2728 change_this_name 033211 constant label dcl 2749 in procedure "enter_level_name" ref 2758 2767 2769 changed_nothing 017775 constant label dcl 1579 check_abs_cpu_limit 031467 constant entry internal dcl 2491 ref 2366 2375 check_config_table 032126 constant entry internal dcl 2576 ref 2152 3712 check_device_names 031646 constant entry internal dcl 2521 ref 1956 3713 checkid 031747 constant entry internal dcl 2538 ref 1068 clean_up 032305 constant entry internal dcl 2605 ref 528 718 copy_rs 013612 constant label dcl 979 ref 792 copy_rs1 013725 constant label dcl 995 ref 977 create_addname 010524 constant label dcl 608 ref 614 crs1a 013633 constant label dcl 984 ref 987 992 default 012563 constant label dcl 803 ref 755 default_rs 013607 constant label dcl 975 ref 803 deviclp 030756 constant label dcl 2414 ref 2419 devtab$$defined 032414 constant entry internal dcl 2626 ref 1464 1507 1950 devtab$$undefined 032432 constant entry internal dcl 2640 ref 1236 1513 2417 devtab_common 032445 constant label dcl 2645 ref 2638 do_add 014471 constant entry internal dcl 1129 ref 1038 do_any 014043 constant entry internal dcl 1019 ref 751 752 753 754 do_any$$given_index 014403 constant entry internal dcl 1118 ref 1107 do_any_common 014206 constant label dcl 1071 ref 1122 do_change 016034 constant entry internal dcl 1321 ref 1039 do_print 020102 constant entry internal dcl 1596 ref 1040 do_rates 014246 constant label dcl 1087 ref 1074 do_retype 024444 constant entry internal dcl 2034 ref 1041 1337 ed_installation_parms 007634 constant entry external dcl 27 enter_authentication_level 032701 constant entry internal dcl 2681 ref 2297 enter_category_name 032777 constant entry internal dcl 2703 ref 1501 2176 enter_level_name 033171 constant entry internal dcl 2738 ref 1459 2110 er2 010214 constant label dcl 567 ref 542 exit 011605 constant label dcl 718 ref 538 549 555 564 570 577 587 623 633 639 651 found_duplicate 035773 constant label dcl 3116 ref 3097 3101 3106 3111 gen_config_ordinal 033400 constant entry internal dcl 2780 ref 2587 3575 3578 get_again 032703 constant label dcl 2687 ref 2697 get_disk_price 033440 constant entry internal dcl 2795 ref 2085 get_nums 033673 constant entry internal dcl 2829 ref 2885 2890 get_queue 034361 constant entry internal dcl 2904 ref 3410 get_shift 034345 constant entry internal dcl 2897 ref 3411 get_shift_queue 034161 constant entry internal dcl 2864 ref 3412 gsq_common 034177 constant label dcl 2880 ref 2894 2902 2909 idt 034372 constant entry internal dcl 2915 ref 1145 1145 1312 1312 1583 1583 1587 1587 1822 1822 1826 1826 1831 1831 1835 1835 1839 1839 1843 1843 1853 1853 1857 1857 1861 1861 1865 1865 1869 1869 1873 1873 1877 1877 1881 1881 1885 1885 1889 1889 1928 1928 1932 1932 1937 1937 2021 2021 2025 2025 2115 2115 2119 2119 2123 2123 2127 2127 2131 2131 2229 2229 2233 2233 2293 2293 2309 2309 2313 2313 2320 2320 2325 2325 2330 2330 2335 2335 2340 2340 2344 2344 2348 2348 2352 2352 2356 2356 2360 2360 2364 2364 2369 2369 2373 2373 2378 2378 2383 2383 2455 2455 2459 2459 2463 2463 2556 2556 input_config_element 034452 constant entry internal dcl 2931 ref 1215 1482 2149 input_device_price 034763 constant entry internal dcl 2964 ref 1239 1467 2142 2421 input_resource_price 035221 constant entry internal dcl 3008 ref 1247 1531 2263 2440 invalid 036014 constant label dcl 3118 ref 3072 3080 3086 invalid_name 035441 constant entry internal dcl 3053 ref 2726 2728 2767 2769 main 011525 constant label dcl 702 ref 798 966 1014 main1 011520 constant label dcl 700 ref 688 691 734 742 747 779 788 795 813 970 982 1069 1203 1255 1314 1585 1589 2023 2027 2408 2457 2461 2465 out_of_range 036025 constant entry internal dcl 3126 ref 3344 3423 3445 3483 print 000200 constant label array(64) dcl 1617 ref 1610 1610 1615 1699 1785 1952 1980 print_abs_queue_parameters 023210 constant label dcl 1911 set ref 1719 1897 1903 1909 print_config_element 036213 constant entry internal dcl 3155 ref 1481 1705 print_halfword 036325 constant entry internal dcl 3170 ref 1853 1857 1928 print_sqval 036552 constant entry internal dcl 3205 ref 1881 1885 1889 print_sval 036364 constant entry internal dcl 3183 ref 1869 1873 1877 print_sval_common 036402 constant label dcl 3197 ref 3212 printed_nothing 024337 constant label dcl 2017 ref 1778 1788 1847 1893 1899 1905 2014 ptr_rs_name 036572 constant entry internal dcl 3218 ref 783 783 1942 1942 2399 2399 2990 2990 3032 3032 reenter_name 033051 constant label dcl 2717 in procedure "enter_category_name" ref 2724 reenter_name 033252 constant label dcl 2755 in procedure "enter_level_name" ref 2762 retype 000300 constant label array(64) dcl 2053 set ref 2046 2046 2051 2209 2241 2249 retype_category_set 026237 constant label dcl 2184 ref 2191 retyped_nothing 031172 constant label dcl 2451 ref 2317 2449 rsctab$$defined 037071 constant entry internal dcl 3272 ref 1529 1537 1979 rsctab$$undefined 037107 constant entry internal dcl 3285 ref 1245 1542 2437 rsctab_common 037122 constant label dcl 3290 ref 3283 rstab$$defined 036666 constant entry internal dcl 3234 ref 787 986 1561 rstab$$undefined 036707 constant entry internal dcl 3247 ref 1260 1566 rstab_common 036724 constant label dcl 3252 ref 3245 rt53a 031124 constant label dcl 2434 ref 2442 set_common 037603 constant label dcl 3405 ref 3376 3385 3394 3403 set_half_al 037304 constant entry internal dcl 3327 ref 1403 1428 1448 1456 1491 1498 2115 2119 2123 2127 2131 2135 2180 2229 2233 2937 2940 2942 2944 2952 2954 set_halfword 037263 constant entry internal dcl 3310 ref 2272 2276 2281 2285 2289 2301 2305 2320 2325 2330 2335 2383 2388 2393 set_join 037350 constant label dcl 3341 ref 3325 3332 3339 set_pdir_quota_defaults 042063 constant entry internal dcl 3729 ref 667 set_qval 037505 constant entry internal dcl 3358 ref 2369 2373 set_shift_field 040333 constant entry internal dcl 3515 ref 1429 1444 2078 set_sqlval 037563 constant entry internal dcl 3396 ref 2364 set_sqval 037543 constant entry internal dcl 3387 ref 2352 2356 2360 set_std_shifttab 040361 constant entry internal dcl 3527 ref 820 2064 set_sval 037524 constant entry internal dcl 3378 ref 2340 2344 2348 set_word 037326 constant entry internal dcl 3334 ref 2378 sort_config_table 040506 constant entry internal dcl 3553 ref 1217 1483 2598 verify_structures 041007 constant entry internal dcl 3615 ref 756 964 worker 014415 constant entry internal dcl 1031 ref 1094 1113 write_error 042003 constant entry internal dcl 3719 ref 632 638 733 741 746 1266 1275 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 45226 45340 44514 45236 Length 46354 44514 112 1000 511 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ed_installation_parms 662 external procedure is an external procedure. on unit on line 528 64 on unit on unit on line 685 102 on unit do_any 1797 internal procedure calls itself recursively. worker internal procedure shares stack frame of internal procedure do_any. do_add internal procedure shares stack frame of internal procedure do_any. do_change internal procedure shares stack frame of internal procedure do_any. do_print internal procedure shares stack frame of internal procedure do_any. do_retype internal procedure shares stack frame of internal procedure do_any. ask_on_off internal procedure shares stack frame of internal procedure do_any. check_abs_cpu_limit internal procedure shares stack frame of internal procedure do_any. check_device_names 94 internal procedure is called by several nonquick procedures. checkid internal procedure shares stack frame of internal procedure do_any. check_config_table 134 internal procedure is called by several nonquick procedures. clean_up 92 internal procedure is called by several nonquick procedures. devtab$$defined internal procedure shares stack frame of internal procedure do_any. enter_authentication_level internal procedure shares stack frame of internal procedure do_any. enter_category_name internal procedure shares stack frame of internal procedure do_any. enter_level_name internal procedure shares stack frame of internal procedure do_any. gen_config_ordinal 66 internal procedure is called by several nonquick procedures. get_disk_price internal procedure shares stack frame of internal procedure do_any. get_nums internal procedure shares stack frame of internal procedure do_any. get_shift_queue internal procedure shares stack frame of internal procedure do_any. idt internal procedure shares stack frame of internal procedure do_any. input_config_element internal procedure shares stack frame of internal procedure do_any. input_device_price internal procedure shares stack frame of internal procedure do_any. input_resource_price internal procedure shares stack frame of internal procedure do_any. invalid_name internal procedure shares stack frame of internal procedure do_any. out_of_range internal procedure shares stack frame of internal procedure do_any. print_config_element internal procedure shares stack frame of internal procedure do_any. print_halfword internal procedure shares stack frame of internal procedure do_any. print_sval internal procedure shares stack frame of internal procedure do_any. ptr_rs_name 90 internal procedure is called by several nonquick procedures. rstab$$defined 90 internal procedure is called by several nonquick procedures. rsctab$$defined internal procedure shares stack frame of internal procedure do_any. set_halfword internal procedure shares stack frame of internal procedure do_any. set_qval internal procedure shares stack frame of internal procedure do_any. set_shift_field internal procedure shares stack frame of internal procedure do_any. set_std_shifttab 66 internal procedure is called by several nonquick procedures. sort_config_table 104 internal procedure is called by several nonquick procedures. verify_structures internal procedure shares stack frame of external procedure ed_installation_parms. write_error 100 internal procedure is called during a stack extension. set_pdir_quota_defaults internal procedure shares stack frame of external procedure ed_installation_parms. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 told_user ed_installation_parms STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME check_config_table 000100 this_ord check_config_table 000102 highest_ord check_config_table 000104 i check_config_table 000105 bad_dup check_config_table 000106 bad_null check_config_table 000107 bad_order check_config_table check_device_names 000100 i check_device_names 000101 j check_device_names clean_up 000100 i clean_up do_any 000100 i do_any 000102 seq_ptr do_any 000104 seq_size do_any 000124 i do_add 000125 j do_add 000126 devnm do_add 000130 rscnm do_add 000150 i do_change 000151 i1 do_change 000152 i2 do_change 000153 i3 do_change 000154 i4 do_change 000155 j do_change 000156 k do_change 000157 n do_change 000160 rscnm do_change 000170 devnm do_change 000202 i do_print 000203 j do_print 000204 k do_print 000205 m do_print 000206 n do_print 000207 c15 do_print 000213 char48 do_print 000227 no_charge do_print 000230 dflt do_print 000231 mx do_print 000232 tmx do_print 000233 rscnm do_print 000244 devnm do_print 000246 pass_sw do_print 000264 i do_retype 000265 j do_retype 000266 k do_retype 000267 n do_retype 000270 c1 do_retype 000271 category_set do_retype 000272 rscnm do_retype 000302 devnm do_retype 000304 yn do_retype 000324 qok check_abs_cpu_limit 000330 qbad check_abs_cpu_limit 000334 nbad check_abs_cpu_limit 000335 s check_abs_cpu_limit 000336 q check_abs_cpu_limit 000350 ib checkid 000351 i checkid 000352 keywx checkid 000362 i devtab$$defined 000363 j devtab$$defined 000364 should_find devtab$$defined 000376 i enter_authentication_level 000377 ans enter_authentication_level 000416 name enter_category_name 000426 short_name enter_category_name 000436 name enter_level_name 000446 short_name enter_level_name 000456 char32 get_disk_price 000466 f get_disk_price 000467 i get_disk_price 000476 ia get_nums 000506 get_shift get_shift_queue 000507 get_queue get_shift_queue 000510 x get_shift_queue 000524 ia idt 000534 j input_config_element 000535 ftmp input_config_element 000544 rsp input_device_price 000546 i input_device_price 000547 s input_device_price 000550 hi input_device_price 000551 lo input_device_price 000552 save_crit input_device_price 000564 f input_resource_price 000565 i input_resource_price 000566 rsp input_resource_price 000570 hi input_resource_price 000571 lo input_resource_price 000572 save_crit input_resource_price 000604 i invalid_name 000614 dummy out_of_range 000615 flag out_of_range 000616 error out_of_range 000617 error_lo out_of_range 000620 error_hi out_of_range 000644 nq print_sval 000645 i print_sval 000646 arrayp print_sval 000660 i rsctab$$defined 000661 should_find rsctab$$defined 000672 v set_halfword 000673 long_sw set_halfword 000674 aligned_sw set_halfword 000704 set_shift set_qval 000705 set_queue set_qval 000706 esw set_qval 000707 prompted set_qval 000710 q set_qval 000711 nq set_qval 000712 s set_qval 000713 ns set_qval 000714 v set_qval 000715 qx set_qval 000716 q_ext set_qval 000717 sx set_qval 000720 s_ext set_qval 000721 ask_again set_qval 000722 q_lo set_qval 000723 q_hi set_qval 000724 s_lo set_qval 000725 s_hi set_qval ed_installation_parms 000100 all_sw ed_installation_parms 000101 all_abs_queue_sw ed_installation_parms 000102 all_rates_sw ed_installation_parms 000103 all_structures_sw ed_installation_parms 000104 argp ed_installation_parms 000106 argl ed_installation_parms 000107 argno ed_installation_parms 000110 change_request ed_installation_parms 000111 char32 ed_installation_parms 000121 char48 ed_installation_parms 000136 char8 ed_installation_parms 000140 comm ed_installation_parms 000150 critical_op ed_installation_parms 000152 cur_rs_ptr ed_installation_parms 000154 did_something ed_installation_parms 000155 dn ed_installation_parms 000227 dnvar ed_installation_parms 000302 ec ed_installation_parms 000303 edit_rs ed_installation_parms 000304 en ed_installation_parms 000314 i ed_installation_parms 000315 ipl ed_installation_parms 000316 j ed_installation_parms 000317 k ed_installation_parms 000320 keywx ed_installation_parms 000321 nargs ed_installation_parms 000322 path ed_installation_parms 000374 print_comm ed_installation_parms 000404 rs_ptrs ed_installation_parms 000430 rs_ptrs1 ed_installation_parms 000454 rsp ed_installation_parms 000456 rsp1 ed_installation_parms 000460 selected_rs_ptr ed_installation_parms 000462 suppress_nl ed_installation_parms 000512 i verify_structures 000513 j verify_structures 000514 rsn verify_structures 000515 force verify_structures 000516 char8 verify_structures 000520 phoo verify_structures 000521 rsname verify_structures 000544 code set_pdir_quota_defaults 000546 com_p set_pdir_quota_defaults on unit on line 685 000100 yn on unit on line 685 ptr_rs_name 000100 i ptr_rs_name rstab$$defined 000100 i rstab$$defined 000101 should_find rstab$$defined set_std_shifttab 000100 i set_std_shifttab 000101 j set_std_shifttab sort_config_table 000100 i sort_config_table 000102 o1 sort_config_table 000104 o2 sort_config_table 000106 changed sort_config_table 000107 ever_changed sort_config_table 000110 save_crit sort_config_table 000111 ncon sort_config_table 000112 tcona sort_config_table THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_g_a r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac fl2_to_fx1 tra_ext_1 bound_ck_signal mpfx2 signal_op enable_op shorten_stack ext_entry int_entry int_entry_desc set_chars_eis index_chars_eis index_before_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ ask_ ask_$ask_clr ask_$ask_flo ask_$ask_int ask_$ask_line ask_$ask_n ask_$ask_yn com_err_ cu_$arg_count cu_$arg_ptr cv_$mwvf cv_dec_ cv_float_ expand_pathname_ hcs_$chname_file hcs_$delentry_seg hcs_$make_seg hcs_$set_bc_seg hcs_$set_ring_brackets hcs_$set_safety_sw_seg hcs_$truncate_seg initiate_file_ ioa_ nd_handler_ terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent error_table_$incorrect_access error_table_$segknown error_table_$segnamedup sc_stat_$sysdir LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 007633 90 007641 520 007644 521 007650 522 007652 523 007653 524 007702 525 007703 526 007706 528 007707 530 007731 532 007734 533 007743 535 007753 536 007770 537 007772 538 010007 540 010010 542 010022 545 010026 546 010027 547 010044 548 010046 549 010063 552 010064 553 010110 554 010112 555 010144 557 010145 560 010150 561 010151 562 010155 564 010207 566 010210 567 010214 570 010240 573 010241 574 010244 575 010270 576 010272 577 010321 580 010322 583 010325 584 010330 585 010354 586 010356 587 010405 591 010406 593 010417 602 010451 603 010455 604 010457 605 010462 606 010517 607 010521 608 010524 610 010564 612 010573 614 010623 617 010625 619 010652 620 010704 621 010705 622 010710 623 010773 625 010775 627 010776 629 011036 631 011075 632 011101 633 011151 635 011153 637 011206 638 011212 639 011240 641 011241 643 011246 644 011253 645 011256 646 011257 647 011261 648 011264 649 011270 650 011272 651 011306 654 011307 655 011323 657 011326 658 011327 659 011330 660 011331 661 011333 662 011334 663 011335 664 011336 665 011340 666 011341 667 011342 670 011343 671 011350 674 011412 677 011414 685 011431 688 011445 689 011453 690 011467 691 011507 694 011517 700 011520 702 011525 704 011530 705 011543 708 011546 709 011550 710 011555 711 011556 712 011557 713 011560 714 011561 715 011562 716 011563 717 011601 718 011605 720 011611 722 011612 723 011616 724 011633 726 011647 728 011654 730 011663 732 011700 733 011702 734 011722 736 011724 738 011736 740 011754 741 011756 742 011776 744 012000 745 012017 746 012021 747 012041 749 012043 750 012046 751 012047 752 012066 753 012105 754 012130 755 012147 756 012153 757 012165 758 012175 760 012211 761 012225 762 012243 763 012260 764 012275 766 012316 767 012317 768 012321 769 012327 770 012340 771 012341 772 012342 778 012407 779 012411 781 012412 782 012422 783 012437 786 012472 787 012507 788 012527 789 012531 791 012534 792 012535 794 012541 795 012561 798 012562 803 012563 808 012565 811 012604 812 012620 813 012640 815 012645 816 012651 817 012654 818 012657 819 012662 820 012665 821 012671 822 012675 823 012701 824 012703 825 012705 826 012707 827 012711 828 012714 829 012721 831 012735 833 013000 834 013005 836 013014 837 013016 838 013020 840 013025 842 013030 843 013032 844 013034 845 013036 846 013040 847 013043 848 013045 849 013047 850 013055 851 013061 852 013063 853 013065 854 013070 856 013072 858 013074 859 013101 860 013145 862 013172 864 013175 865 013201 867 013204 868 013211 869 013255 870 013302 872 013305 875 013311 876 013313 877 013315 878 013317 879 013321 880 013323 881 013325 882 013327 883 013331 884 013333 885 013335 886 013337 887 013341 888 013343 892 013344 893 013345 894 013346 895 013350 896 013352 897 013354 898 013356 902 013360 903 013365 908 013374 910 013376 911 013401 913 013403 915 013405 916 013407 918 013411 919 013415 920 013422 921 013425 922 013430 923 013435 925 013445 926 013456 927 013461 928 013464 929 013466 933 013470 936 013501 939 013511 941 013515 943 013517 945 013521 946 013523 948 013525 950 013527 951 013530 952 013545 954 013551 955 013552 956 013553 957 013554 958 013555 959 013557 960 013560 961 013562 962 013563 964 013564 966 013565 968 013566 970 013606 975 013607 977 013611 979 013612 981 013616 982 013632 984 013633 986 013652 987 013672 988 013674 989 013677 990 013703 991 013717 992 013724 995 013725 997 013731 998 013736 999 013740 1000 013742 1001 013744 1002 013746 1004 013752 1005 013754 1006 013756 1007 013761 1008 013764 1009 013767 1010 013772 1012 013774 1013 014023 1014 014041 1019 014042 1049 014050 1050 014054 1051 014060 1052 014061 1053 014063 1054 014067 1055 014071 1056 014072 1057 014074 1058 014100 1059 014101 1060 014103 1061 014107 1063 014110 1064 014140 1067 014141 1068 014157 1069 014200 1071 014206 1073 014216 1074 014220 1075 014222 1076 014224 1077 014225 1078 014226 1079 014230 1080 014232 1081 014233 1082 014235 1083 014237 1084 014241 1085 014243 1086 014244 1087 014246 1089 014250 1090 014252 1093 014254 1094 014263 1095 014272 1097 014310 1098 014312 1099 014313 1100 014315 1101 014317 1102 014320 1103 014321 1104 014322 1105 014331 1106 014336 1107 014343 1108 014357 1109 014361 1110 014365 1111 014372 1113 014373 1116 014401 1118 014402 1121 014410 1122 014414 1031 014415 1036 014417 1037 014422 1038 014423 1039 014436 1040 014447 1041 014460 1042 014470 1129 014471 1138 014473 1139 014500 1140 014532 1143 014533 1145 014534 1203 014565 1205 014570 1208 014571 1210 014576 1211 014615 1212 014622 1214 014623 1215 014625 1216 014627 1217 014640 1218 014645 1220 014646 1223 014647 1227 014650 1229 014653 1230 014657 1231 014673 1232 014700 1234 014701 1236 014720 1238 014723 1239 014725 1240 014735 1242 014736 1244 014741 1245 014762 1246 014765 1247 014767 1248 014777 1250 015000 1252 015003 1253 015007 1255 015031 1257 015034 1258 015036 1260 015056 1261 015077 1263 015101 1264 015142 1265 015200 1266 015205 1267 015256 1269 015260 1271 015305 1272 015340 1274 015374 1275 015401 1276 015430 1279 015431 1280 015433 1281 015437 1284 015441 1285 015444 1286 015450 1287 015463 1288 015477 1289 015513 1290 015527 1291 015531 1292 015532 1293 015534 1294 015537 1295 015560 1296 015607 1297 015623 1298 015637 1299 015653 1300 015656 1301 015707 1303 015725 1304 015732 1305 015740 1306 015745 1308 015750 1309 015752 1310 015772 1312 015773 1314 016031 1321 016034 1330 016036 1331 016043 1332 016075 1335 016076 1337 016077 1388 016106 1390 016107 1393 016110 1395 016130 1396 016141 1397 016142 1399 016164 1400 016171 1402 016172 1403 016174 1405 016204 1407 016223 1408 016231 1409 016235 1410 016255 1411 016262 1413 016263 1414 016301 1415 016311 1416 016326 1417 016351 1418 016363 1419 016364 1420 016405 1421 016411 1422 016433 1424 016440 1425 016441 1426 016442 1428 016443 1429 016453 1431 016455 1433 016471 1434 016472 1435 016475 1436 016476 1437 016477 1438 016502 1439 016503 1440 016504 1444 016510 1445 016512 1446 016513 1448 016514 1450 016524 1451 016546 1452 016570 1453 016612 1454 016634 1456 016635 1459 016645 1460 016647 1462 016650 1464 016667 1466 016672 1467 016674 1468 016677 1472 016700 1473 016717 1474 016736 1475 016755 1476 016774 1477 017005 1481 017034 1482 017036 1483 017040 1484 017045 1486 017046 1487 017050 1488 017101 1489 017106 1491 017107 1493 017120 1494 017150 1495 017201 1496 017231 1498 017232 1501 017244 1502 017246 1504 017247 1506 017252 1507 017271 1509 017274 1510 017276 1512 017321 1513 017333 1515 017336 1517 017340 1518 017344 1519 017412 1520 017415 1521 017422 1522 017430 1523 017436 1524 017441 1525 017443 1527 017444 1529 017465 1530 017470 1531 017472 1532 017475 1534 017476 1536 017501 1537 017522 1538 017525 1539 017527 1540 017547 1542 017560 1543 017563 1545 017565 1546 017570 1547 017576 1548 017610 1549 017613 1550 017615 1552 017616 1555 017617 1558 017620 1560 017623 1561 017644 1562 017665 1563 017667 1565 017707 1566 017720 1567 017741 1569 017743 1570 017746 1571 017754 1572 017766 1573 017771 1574 017773 1576 017774 1579 017775 1581 017777 1583 020000 1585 020036 1587 020041 1589 020077 1596 020102 1610 020104 1611 020111 1612 020143 1615 020144 1617 020145 1619 020161 1621 020162 1623 020206 1625 020207 1627 020223 1628 020227 1629 020232 1630 020234 1631 020241 1632 020245 1633 020265 1634 020312 1635 020313 1636 020315 1637 020317 1638 020350 1639 020352 1641 020353 1644 020403 1645 020436 1646 020452 1647 020457 1652 020601 1653 020603 1655 020604 1657 020627 1658 020652 1659 020675 1660 020722 1662 020723 1664 020737 1665 020743 1667 021003 1668 021005 1670 021006 1672 021030 1673 021033 1675 021034 1677 021056 1678 021061 1680 021062 1682 021104 1683 021107 1685 021110 1687 021132 1688 021135 1690 021136 1692 021161 1693 021164 1695 021165 1697 021207 1699 021210 1702 021211 1704 021225 1705 021237 1706 021241 1707 021243 1709 021244 1711 021260 1712 021265 1714 021321 1715 021323 1717 021324 1719 021330 1721 021331 1723 021345 1724 021353 1726 021413 1727 021415 1729 021416 1734 021444 1736 021445 1738 021467 1740 021506 1741 021526 1743 021527 1745 021560 1747 021561 1749 021612 1751 021613 1753 021644 1755 021645 1759 021676 1760 021677 1763 021721 1764 021722 1768 021753 1769 021754 1773 022005 1774 022006 1777 022037 1778 022040 1780 022043 1781 022053 1782 022105 1783 022107 1785 022110 1788 022111 1790 022114 1791 022116 1792 022127 1793 022135 1794 022136 1796 022166 1797 022170 1798 022211 1800 022212 1802 022234 1805 022235 1807 022261 1810 022262 1812 022304 1814 022305 1816 022327 1818 022330 1820 022354 1822 022355 1824 022410 1826 022411 1829 022446 1831 022447 1833 022500 1835 022501 1837 022534 1839 022535 1841 022572 1843 022573 1845 022630 1847 022631 1853 022632 1855 022654 1857 022655 1859 022701 1861 022702 1863 022736 1865 022737 1867 022775 1869 022776 1871 023020 1873 023021 1875 023043 1877 023044 1879 023066 1881 023067 1883 023111 1885 023112 1887 023134 1889 023135 1891 023157 1893 023160 1895 023163 1896 023165 1897 023167 1899 023170 1901 023173 1902 023175 1903 023177 1905 023200 1907 023203 1908 023205 1909 023207 1911 023210 1917 023236 1918 023272 1919 023277 1921 023351 1922 023353 1924 023354 1926 023376 1928 023377 1930 023421 1932 023422 1934 023455 1935 023460 1937 023461 1939 023516 1940 023521 1942 023522 1944 023554 1946 023555 1948 023556 1949 023576 1950 023600 1952 023606 1953 023607 1954 023625 1956 023626 1958 023651 1959 023653 1962 023657 1963 023667 1964 023715 1965 023717 1966 023723 1967 023733 1968 023771 1970 023772 1971 023774 1972 024013 1973 024015 1975 024016 1977 024017 1978 024037 1979 024041 1980 024047 1981 024050 1982 024066 1984 024067 1985 024071 1988 024075 1989 024077 1990 024107 1991 024115 1993 024127 1995 024147 1996 024153 1997 024155 1998 024156 2000 024173 2002 024223 2003 024225 2004 024246 2006 024247 2008 024263 2009 024273 2011 024333 2012 024335 2014 024336 2017 024337 2019 024341 2021 024342 2023 024400 2025 024403 2027 024441 2034 024444 2046 024446 2047 024453 2048 024505 2051 024506 2053 024507 2055 024523 2057 024524 2059 024550 2061 024551 2063 024571 2064 024575 2065 024602 2067 024603 2068 024617 2069 024623 2070 024627 2071 024633 2073 024700 2074 024705 2075 024724 2076 024731 2078 024732 2079 024734 2080 024736 2081 024740 2083 024742 2085 024743 2087 024753 2088 024776 2089 025016 2090 025024 2091 025040 2092 025045 2093 025073 2094 025121 2095 025147 2096 025200 2097 025202 2099 025203 2101 025226 2102 025252 2103 025275 2104 025317 2106 025320 2109 025342 2110 025347 2111 025351 2113 025353 2115 025354 2117 025414 2119 025415 2121 025455 2123 025456 2125 025516 2127 025517 2129 025557 2131 025560 2133 025617 2135 025620 2137 025660 2139 025661 2141 025675 2142 025707 2143 025720 2144 025722 2146 025723 2148 025742 2149 025747 2150 025751 2151 025756 2152 025763 2153 025770 2155 025771 2156 025773 2157 026012 2158 026017 2160 026020 2162 026034 2163 026041 2164 026071 2165 026122 2166 026152 2167 026154 2169 026155 2171 026171 2173 026172 2175 026214 2176 026221 2177 026223 2178 026225 2180 026226 2184 026237 2186 026240 2187 026243 2188 026270 2189 026304 2190 026324 2191 026331 2194 026332 2195 026341 2196 026364 2198 026366 2199 026373 2200 026375 2201 026377 2203 026400 2205 026420 2206 026425 2207 026441 2208 026455 2209 026462 2211 026463 2212 026466 2214 026467 2216 026507 2217 026517 2219 026520 2221 026540 2222 026550 2224 026551 2226 026571 2227 026601 2229 026602 2232 026642 2233 026643 2236 026704 2237 026705 2239 026725 2240 026727 2241 026743 2243 026744 2244 026747 2245 026750 2247 026770 2248 026772 2249 027006 2251 027007 2252 027012 2253 027013 2255 027033 2256 027043 2257 027044 2260 027045 2262 027061 2263 027073 2266 027112 2267 027114 2269 027115 2272 027116 2274 027160 2276 027161 2279 027222 2281 027223 2283 027260 2285 027261 2287 027323 2289 027324 2291 027365 2293 027366 2295 027411 2297 027412 2299 027423 2301 027424 2303 027464 2305 027465 2307 027527 2309 027530 2311 027547 2313 027550 2315 027567 2317 027570 2320 027571 2322 027631 2325 027632 2327 027677 2330 027700 2332 027741 2335 027742 2337 030005 2340 030006 2342 030041 2344 030042 2346 030074 2348 030075 2350 030131 2352 030132 2354 030164 2356 030165 2358 030217 2360 030220 2362 030254 2364 030255 2366 030307 2367 030310 2369 030311 2371 030344 2373 030345 2375 030377 2376 030400 2378 030401 2380 030440 2383 030441 2385 030502 2388 030503 2391 030542 2393 030543 2396 030602 2399 030603 2401 030635 2403 030636 2405 030641 2406 030655 2407 030671 2408 030712 2409 030723 2410 030742 2411 030747 2414 030756 2416 030776 2417 031004 2419 031007 2421 031011 2422 031014 2423 031016 2424 031032 2425 031037 2427 031040 2429 031043 2430 031057 2431 031100 2432 031107 2433 031123 2434 031124 2436 031146 2437 031153 2438 031156 2439 031160 2440 031161 2442 031164 2444 031165 2447 031166 2449 031171 2451 031172 2453 031174 2455 031175 2457 031226 2459 031231 2461 031267 2463 031272 2465 031330 2472 031333 2477 031344 2479 031372 2480 031411 2482 031426 2483 031433 2485 031462 2487 031463 2491 031467 2494 031470 2495 031522 2498 031523 2499 031531 2500 031535 2502 031550 2503 031552 2504 031555 2505 031557 2507 031560 2509 031562 2510 031564 2511 031600 2512 031630 2515 031644 2521 031645 2526 031653 2527 031661 2528 031711 2529 031713 2531 031742 2532 031744 2538 031747 2548 031760 2549 031765 2550 031776 2551 032001 2552 032004 2553 032014 2554 032016 2555 032022 2556 032026 2558 032050 2560 032055 2563 032061 2565 032065 2566 032067 2567 032073 2568 032114 2570 032121 2576 032125 2583 032133 2584 032136 2586 032140 2587 032151 2590 032212 2591 032222 2592 032230 2593 032234 2594 032235 2595 032237 2596 032250 2598 032276 2601 032303 2605 032304 2609 032312 2610 032317 2611 032324 2612 032333 2614 032345 2616 032351 2617 032356 2619 032404 2621 032410 2622 032413 2626 032414 2637 032427 2638 032431 2640 032432 2643 032444 2645 032445 2647 032457 2649 032472 2652 032500 2654 032505 2656 032516 2657 032521 2658 032542 2661 032547 2663 032561 2665 032563 2666 032571 2667 032612 2669 032617 2671 032631 2672 032633 2673 032641 2674 032662 2676 032667 2681 032701 2687 032703 2690 032723 2691 032727 2692 032741 2694 032743 2696 032771 2697 032776 2703 032777 2711 033001 2712 033011 2714 033017 2716 033045 2717 033051 2719 033065 2720 033072 2723 033073 2724 033120 2726 033125 2728 033137 2731 033151 2732 033162 2734 033170 2738 033171 2746 033173 2747 033203 2749 033211 2751 033237 2755 033252 2757 033266 2758 033273 2761 033274 2762 033321 2767 033333 2769 033345 2772 033357 2773 033370 2774 033376 2780 033377 2786 033405 2789 033421 2795 033440 2804 033442 2805 033457 2807 033475 2808 033476 2809 033520 2810 033527 2811 033600 2812 033604 2813 033610 2815 033611 2817 033612 2818 033654 2819 033660 2820 033663 2823 033664 2824 033671 2825 033672 2829 033673 2836 033704 2838 033732 2839 033756 2841 033763 2842 034004 2845 034005 2846 034016 2849 034041 2854 034064 2855 034116 2856 034152 2858 034153 2872 034155 2864 034161 2877 034170 2878 034173 2880 034177 2882 034215 2883 034220 2884 034227 2885 034244 2886 034265 2887 034266 2888 034267 2889 034276 2890 034313 2891 034335 2892 034336 2893 034337 2894 034340 2895 034344 2897 034345 2900 034354 2901 034356 2902 034360 2904 034361 2907 034364 2908 034367 2909 034371 2915 034372 2921 034374 2922 034401 2923 034415 2924 034417 2925 034444 2931 034452 2937 034454 2938 034465 2939 034477 2940 034502 2941 034512 2942 034524 2943 034534 2944 034545 2945 034555 2946 034567 2947 034606 2948 034622 2949 034641 2950 034654 2951 034673 2952 034707 2953 034715 2954 034727 2955 034740 2956 034751 2957 034754 2958 034757 2960 034762 2964 034763 2980 034774 2981 034777 2982 035006 2983 035011 2984 035014 2985 035015 2986 035016 2988 035024 2989 035033 2990 035037 2993 035104 2994 035116 2995 035123 2996 035162 2997 035164 2999 035166 3001 035203 3002 035212 3003 035215 3004 035220 3008 035221 3022 035232 3023 035235 3024 035244 3025 035247 3026 035252 3027 035253 3028 035254 3030 035262 3031 035271 3032 035275 3035 035342 3037 035371 3038 035400 3039 035406 3041 035410 3043 035423 3044 035432 3046 035435 3047 035440 3053 035441 3068 035452 3070 035462 3071 035472 3072 035513 3075 035514 3077 035532 3078 035534 3080 035561 3083 035562 3085 035574 3086 035615 3089 035616 3090 035622 3091 035634 3092 035650 3093 035655 3096 035661 3097 035665 3098 035700 3100 035702 3101 035707 3102 035722 3104 035724 3106 035731 3107 035744 3109 035746 3111 035753 3112 035766 3114 035770 3116 035773 3118 036014 3120 036021 3126 036025 3134 036036 3136 036041 3138 036052 3141 036062 3142 036064 3143 036101 3144 036106 3146 036162 3147 036205 3149 036211 3155 036213 3160 036215 3166 036324 3170 036325 3176 036336 3177 036363 3183 036364 3194 036375 3195 036377 3197 036402 3199 036434 3200 036460 3201 036467 3202 036547 3203 036551 3205 036552 3210 036563 3211 036565 3212 036570 3218 036571 3224 036577 3225 036607 3226 036630 3227 036632 3228 036657 3234 036665 3244 036703 3245 036705 3247 036706 3250 036723 3252 036724 3254 036735 3255 036754 3256 036761 3257 037002 3259 037007 3261 037021 3262 037023 3263 037031 3264 037052 3266 037057 3272 037071 3282 037104 3283 037106 3285 037107 3288 037121 3290 037122 3292 037133 3293 037146 3294 037153 3295 037174 3297 037201 3299 037213 3300 037215 3301 037223 3302 037244 3304 037251 3310 037263 3323 037301 3324 037302 3325 037303 3327 037304 3330 037322 3331 037323 3332 037325 3334 037326 3337 037344 3338 037346 3339 037347 3343 037350 3344 037415 3345 037450 3346 037456 3347 037464 3348 037474 3350 037475 3352 037476 3365 037500 3367 037502 3358 037505 3374 037517 3375 037521 3376 037523 3378 037524 3383 037536 3384 037540 3385 037542 3387 037543 3392 037555 3393 037557 3394 037562 3396 037563 3401 037575 3402 037577 3403 037602 3405 037603 3410 037606 3411 037614 3412 037621 3416 037623 3417 037625 3418 037630 3419 037633 3420 037635 3421 037641 3423 037660 3424 037673 3425 037674 3426 037676 3428 037677 3429 037701 3430 037703 3433 037705 3435 037714 3438 037715 3439 037717 3440 037722 3441 037725 3442 037727 3443 037733 3445 037752 3446 037764 3447 037765 3448 037767 3450 037770 3451 037772 3452 037773 3455 037775 3457 040004 3465 040005 3470 040017 3473 040031 3474 040033 3475 040037 3483 040137 3484 040167 3486 040170 3489 040172 3491 040203 3492 040211 3494 040214 3496 040225 3497 040240 3499 040243 3500 040251 3501 040257 3502 040304 3503 040322 3504 040324 3506 040326 3507 040330 3509 040332 3515 040333 3520 040335 3521 040357 3527 040360 3532 040366 3533 040373 3534 040377 3535 040410 3536 040412 3537 040417 3538 040430 3539 040432 3540 040437 3541 040450 3542 040452 3543 040454 3544 040461 3545 040467 3546 040500 3547 040502 3549 040504 3553 040505 3565 040513 3566 040515 3567 040516 3568 040521 3569 040525 3571 040530 3572 040535 3574 040536 3575 040543 3578 040604 3582 040652 3584 040665 3585 040700 3586 040702 3587 040704 3588 040705 3590 040712 3591 040722 3592 040724 3593 040726 3594 040727 3595 040732 3597 040736 3598 040743 3599 040747 3601 040751 3602 040753 3603 040755 3605 040756 3606 040760 3607 040777 3609 041003 3611 041006 3615 041007 3625 041010 3626 041025 3627 041062 3629 041100 3630 041107 3631 041112 3635 041121 3637 041124 3639 041153 3640 041156 3641 041173 3644 041177 3645 041207 3646 041221 3649 041254 3650 041257 3651 041273 3652 041304 3655 041324 3659 041326 3661 041333 3664 041366 3666 041375 3667 041405 3668 041416 3671 041453 3672 041456 3673 041472 3674 041503 3677 041507 3681 041511 3683 041517 3685 041560 3687 041566 3689 041573 3691 041622 3692 041625 3693 041642 3696 041646 3697 041655 3698 041666 3701 041722 3702 041725 3703 041742 3706 041753 3707 041755 3709 041757 3710 041761 3711 041766 3712 041767 3713 041773 3715 042001 3719 042002 3725 042016 3727 042062 3729 042063 3752 042064 3753 042126 3754 042130 3755 042135 3756 042164 3757 042165 3758 042170 3759 042173 ----------------------------------------------------------- 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