COMPILATION LISTING OF SEGMENT new_user Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1631.2 mst Tue Options: optimize map 1 /****^ *************************************************************** 2* * * 3* * Copyright (c) 1982 by Massachusetts Institute of Technology * 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 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-08-04,Parisek), approve(86-10-02,MCR7541), 16* audit(86-10-14,Martinson), install(86-10-15,MR12.0-1186): 17* Set the date/time password was changed in the PNT entry. 18* 2) change(86-08-04,Parisek), approve(86-10-02,MCR7541), 19* audit(86-10-14,Martinson), install(86-10-15,MR12.0-1186): 20* Bypasses mail table updates if items to be changed do not effect the mail 21* table. 22* 3) change(86-08-06,Parisek), approve(86-10-02,MCR7541), 23* audit(86-10-14,Martinson), install(86-10-15,MR12.0-1186): 24* In the event of a linkage_error, a cleaner error message is printed 25* before termination. 26* 4) change(86-08-06,Parisek), approve(86-10-02,MCR7541), 27* audit(86-10-14,Martinson), install(86-10-15,MR12.0-1186): 28* Leave "notes" in URF as is, if null string ("") is input to "Notes:" 29* query. To delete notes input of "." is needed. This makes the null 30* string and period (".") input consistent with the same responses of 31* other field queries. 32* END HISTORY COMMENTS */ 33 34 35 /* format: style4 */ 36 new_user: procedure options (separate_static, variable); 37 38 /* new_user: define new users and put in the PNT and URF */ 39 /* Rewritten July 1979 by C. Hornig */ 40 /* Modified August 1980 by J. N. R. Barnecut to process notes. */ 41 /* Modified September 1982 by E. N. Kittlitz to reject reserved passwords. */ 42 /* Modified October 1982 by J. I. Schiller to add -no_password_info and 43* -password_info to print_pnt, fixed new_user$nua to check if an alias 44* is in use before prompting for any additional information (which it 45* would have to throw away if the alias is in use). also fixed it to 46* verify that user_id's only have valid characters in them */ 47 /* Modified July 1983 by B. Margolin to update the Mail Table when 48* Person_ids and aliases are registered or changed, and to check Person_ids 49* and aliases against the Mail Table before allowing them to be assigned. */ 50 /* Modified August 1983 by B. Margolin to allow aliases to be deleted and to 51* use a larger character string for the audit flags. */ 52 /* Modified 1984-09-14 by E. Swenson for Version 2 PNT interface. 53* The new format supports a login authorization range and is 54* specified as min_auth:max_auth. The keyword "network_pw" is now 55* used to describe the network_password (formerly the card input 56* password. The keyword "card_pw" is a synonym for "network_pw" 57* for compatibility. */ 58 /* Modified 84-09-25 for "operator" attribute... -E. A. Ranzenbach */ 59 /* Modified 84-12-14 by EJ Sharpe for new audit flags, init set_password and set_network_password */ 60 /* Modified 85-03-05 by E. Swenson for user revalidation */ 61 62 declare pp pointer init (null ()); /* projfile pointer */ 63 declare sadp pointer init (null ()); /* sys_admin_data pointer */ 64 declare sadir character (168) init (">udd>SysAdmin>admin") internal static; 65 66 /* Constant */ 67 68 dcl sysdir char (168) initial (">system_control_1") internal static options (constant); 69 70 71 /* External Static */ 72 73 dcl error_table_$bad_arg fixed bin (35) external static; 74 dcl error_table_$bad_index fixed bin (35) external static; 75 dcl error_table_$checksum_failure fixed bin (35) external static; 76 dcl error_table_$id_not_found fixed bin (35) external static; 77 dcl error_table_$inconsistent fixed bin (35) external static; 78 dcl error_table_$long_record fixed bin (35) external static; 79 dcl error_table_$moderr fixed bin (35) external static; 80 dcl error_table_$no_record fixed bin (35) external static; 81 dcl mlsys_et_$ambiguous_address fixed bin (35) external static; 82 83 declare iox_$user_input pointer external static; 84 85 /* External Entries */ 86 87 dcl check_password_ entry (char (*), char (*), fixed bin (35)); 88 dcl com_err_ entry options (variable); 89 dcl command_query_ entry () options (variable); 90 dcl convert_access_audit_flags_$from_string entry (char (*), bit (36) aligned, fixed bin (35)); 91 dcl convert_access_audit_flags_$edit_from_string entry (char (*), bit (36) aligned, fixed bin (35)); 92 dcl convert_access_audit_flags_$to_string entry (bit (36) aligned, char (*), fixed bin (35)); 93 dcl convert_authorization_$from_string entry (bit (72) aligned, char (*), fixed bin (35)); 94 dcl convert_authorization_$to_string_short entry (bit (72) aligned, char (*), fixed bin (35)); 95 dcl convert_date_to_binary_ entry (char (*), fixed bin (71), fixed bin (35)); 96 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 97 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 98 dcl date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) var); 99 dcl ioa_ entry options (variable); 100 dcl ioa_$nnl entry options (variable); 101 dcl iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 102 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 103 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 104 dcl mail_table_$get entry (char (*) varying, ptr, char (*), fixed bin (35)); 105 dcl mail_table_priv_$add entry (ptr, bit (1), fixed bin (35)); 106 dcl mail_table_priv_$add_alias entry (char (*) varying, char (*) varying, bit (1), fixed bin (35)); 107 dcl mail_table_priv_$delete_alias entry (char (*) varying, bit (1), fixed bin (35)); 108 dcl mail_table_priv_$get entry (char (*) varying, ptr, fixed bin (35)); 109 dcl mail_table_priv_$update entry (ptr, bit (1), fixed bin (35)); 110 dcl mail_table_priv_$test entry (char (*)); 111 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 112 dcl pnt_admin_gate_$add_entry entry (character (*), pointer, fixed bin (35)); 113 dcl pnt_admin_gate_$get_entry entry (character (*), pointer, fixed bin (35)); 114 dcl pnt_manager_$get_abs_entry entry (fixed bin (35), pointer, fixed bin (35)); 115 dcl pnt_manager_$get_entry entry (character (*), pointer, fixed bin (35)); 116 dcl pnt_manager_$add_entry entry (character (*), pointer, fixed bin (35)); 117 dcl pnt_manager_$test entry (char (*)); 118 dcl pnt_manager_$update_entry entry (ptr, bit (1), bit (1), fixed bin (35)); 119 dcl read_password_ entry (char (*), char (*)); 120 dcl scramble_ entry (char (8)) returns (char (8)); 121 dcl urf_manager_$test entry (char (*)); 122 dcl urf_manager_$get_entry entry (character (*), pointer, fixed bin (35)); 123 dcl urf_manager_$add_entry entry (character (*), pointer, fixed bin (35)); 124 dcl urf_manager_$update_entry entry (character (*), pointer, pointer, fixed bin (35)); 125 dcl entry_var entry variable; 126 127 /* Automatic */ 128 129 declare 130 1 (pnte, old_pnte, alias_pnte) aligned like pnt_entry, 131 1 (urfe, old_urfe) aligned like urf_entry, 132 1 mte aligned like mail_table_entry, 133 uid character (32) aligned, 134 ap pointer, 135 al fixed bin (21), 136 argument character (al) based (ap), 137 rec fixed bin (35), 138 line character (256) aligned, 139 code fixed bin (35), 140 initial character, 141 (loud, alias_allowed, arg_given, changing) bit aligned; 142 dcl ip ptr initial (null ()); /* pointer to installation_parms */ 143 dcl set_network_password bit (1) init ("0"b); /* Whether we need to change this */ 144 dcl set_password bit (1) init ("0"b); /* Whether we need to change this */ 145 dcl what char (12); 146 dcl whoami char (32) automatic; 147 148 149 declare (addr, clock, index, length, min, null, rtrim, search, substr, 150 unspec, verify) builtin; 151 152 declare clean_up condition; 153 declare new_user_stop condition; 154 declare linkage_error condition; 155 156 157 /* * * * * * * * * * NEW_USER * * * * * * * * * */ 158 159 loud = "1"b; 160 alias_allowed = "0"b; 161 goto common; 162 163 /* * * * * * * * * * NU * * * * * * * * * */ 164 165 nu: entry options (variable); 166 167 loud, alias_allowed = "0"b; 168 goto common; 169 170 /* * * * ** * * * * * NUA * * * * * * * * * */ 171 172 nua: entry options (variable); 173 174 loud = "0"b; 175 alias_allowed = "1"b; 176 177 /* * * * * * * * * * * * * * * * * * * */ 178 179 common: 180 whoami = "new_user"; 181 arg_given, changing = "0"b; 182 on clean_up call cleaner; 183 call initialize (); 184 on new_user_stop goto stop_given; 185 on linkage_error begin; 186 code = error_table_$moderr; 187 goto NO_ACCESS_TO_GATE; 188 end; 189 entry_var = pnt_admin_gate_$add_entry; 190 revert linkage_error; 191 add_user: 192 unspec (pnte) = ""b; 193 pnte.version = PNT_ENTRY_VERSION_2; 194 pnte.audit = sys_admin_data.default_audit_flags; 195 196 if loud then call ioa_ ("^/Enter full user name (Last, First I.)"); 197 call read_name; 198 if loud then call ioa_ ("^/Enter mailing address"); 199 call read_address; 200 if loud then call ioa_ ("^/Enter programmer number"); 201 call read_prog_number; 202 if loud then call ioa_ ("^/Enter notes"); 203 call read_notes; 204 if loud then call ioa_ ("^/Enter default project"); 205 call read_project; 206 pnte.alias = ""; 207 if alias_allowed then do; 208 if loud then call ioa_ ("^/Enter alias"); 209 call read_alias; 210 if loud then call ioa_ ("^/User registration flags:"); 211 call read_flags; 212 if loud then call ioa_ ("^/User authorization range:"); 213 call read_authorization_range (pnte.person_authorization); 214 if loud then call ioa_ ("Default user authorization:"); 215 call read_default_authorization (pnte.default_person_authorization); 216 if loud then call ioa_ ("^/Audit flags:"); 217 call read_audit; 218 end; 219 220 call read_password ("Password:", pnte.private.password, pnte.public.flags.has_password, pnte.private.pw_flags.short_pw, ("0"b)); 221 222 call read_password ("Network Password:", pnte.private.network_password, pnte.public.flags.has_network_password, pnte.private.pw_flags.short_network_pw, ("0"b)); 223 224 if substr (urfe.last_name, 1, 1) = "*" then goto ask_uid; 225 if ^uid_exists (urfe.last_name) then goto got_uid; 226 if initial ^= "" then if ^uid_exists (substr (urfe.first_name, 1, 1) || initial || urfe.last_name) then goto got_uid; 227 if ^uid_exists (substr (urfe.first_name, 1, 1) || urfe.last_name) then goto got_uid; 228 ask_uid: 229 call ioa_ ("^/Please suggest a user ID for ""^a, ^a""", urfe.last_name, urfe.first_name); 230 read_uid: 231 call read_line ("userid^-"); 232 if line = "" then goto read_uid; else uid = rtrim(line); 233 if uid_exists (uid) then goto read_uid; 234 235 got_uid: 236 call ioa_ ("^/User ID assigned is ""^a"".", uid); 237 if ^yes_no ("Is this OK? ") then goto read_uid; 238 239 pnte.user_id = uid; 240 pnte.bad_pw_term_id, pnte.bad_pw_term_type = ""; 241 242 pnte.user_validated_time = clock (); /* indicate validated */ 243 call pnt_manager_$add_entry ((uid), addr (pnte), code); 244 if code ^= 0 then do; 245 call com_err_ (code, whoami, "Updating PNT."); 246 goto stop_given; 247 end; 248 call urf_manager_$add_entry ((uid), addr (urfe), code); 249 if code ^= 0 then 250 call com_err_ (code, whoami, "Updating URF."); 251 252 mte.version = MAIL_TABLE_ENTRY_VERSION_1; 253 mte.name = rtrim (uid); 254 mte.default_project = rtrim (pnte.default_project); 255 mte.mailing_address = ""; 256 mte.acs_path.dir, mte.acs_path.entry = ""; 257 call mail_table_priv_$add (addr (mte), "1"b, code); 258 if code ^= 0 then 259 call com_err_ (code, whoami, "Updating MAIL_TABLE."); 260 261 if pnte.alias ^= "" then do; 262 call mail_table_priv_$add_alias (rtrim (uid), rtrim (pnte.alias), "1"b, code); 263 if code ^= 0 then 264 call com_err_ (code, whoami, "Updating MAIL_TABLE."); 265 end; 266 267 stop_given: 268 if yes_no ("^/More users to add? ") then goto add_user; 269 270 RETURN_TO_CALLER: 271 272 call cleaner; 273 274 return; 275 276 /* * * * * * * * * * CHANGE * * * * * * * * * */ 277 278 change: entry options (variable); 279 280 alias_allowed = "0"b; 281 loud = "1"b; 282 283 cg: entry options (variable); 284 285 alias_allowed, loud = "0"b; 286 goto change_common; 287 288 cga: entry options (variable); 289 290 loud = "0"b; 291 alias_allowed = "1"b; 292 293 change_common: 294 whoami = "new_user$change"; 295 296 /**** Initialize these for cleanup handler */ 297 pp = null (); 298 sadp = null (); 299 ip = null (); 300 on clean_up 301 call cleaner; 302 303 call initialize (); 304 arg_given = "0"b; 305 changing = "1"b; 306 uid, what, line = ""; 307 call cu_$arg_ptr (1, ap, al, code); 308 if code = 0 then do; 309 uid = argument; 310 call cu_$arg_ptr (2, ap, al, code); 311 if code = 0 then do; 312 what = argument; 313 call cu_$arg_ptr (3, ap, al, code); 314 if code = 0 then do; 315 line = argument; 316 arg_given = "1"b; 317 end; 318 end; 319 end; 320 on new_user_stop goto RETURN_TO_CALLER; 321 322 on linkage_error begin; 323 code = error_table_$moderr; 324 goto NO_ACCESS_TO_GATE; 325 end; 326 entry_var = pnt_admin_gate_$get_entry; 327 revert linkage_error; 328 329 if uid = "" then do; 330 read_cg_uid: line = ""; 331 call read_line ("User ID^-^-"); 332 uid = rtrim(line); 333 end; 334 call pnt_manager_$get_entry ((uid), addr (old_pnte), code); 335 if code ^= 0 then do; 336 call com_err_ (code, whoami, "Searching PNT for ^a.", uid); 337 goto read_cg_uid; 338 end; 339 uid = old_pnte.user_id; 340 call urf_manager_$get_entry ((uid), addr (old_urfe), code); 341 if code ^= 0 then do; 342 call com_err_ (code, whoami, "Searching URF for ^a.", uid); 343 goto read_cg_uid; 344 end; 345 346 urfe = old_urfe; 347 pnte = old_pnte; 348 349 if what ^= "" then do; /* if item name given, see if it is legal */ 350 351 /* These declarations are here so that anyone who adds change items to 352* the list of "if" statements below will see that the item name must 353* be added in two places. */ 354 355 dcl change_items char (54) int static options (constant) init 356 ("name,addr,progn,notes,proj,pass,cpass,npass,revalidate"); 357 dcl cga_items char (47) int static options (constant) init 358 ("alias,flags,auth,dfauth,audit"); 359 360 if index (change_items, rtrim (what)) ^= 0 then 361 goto change_item_ok; 362 if alias_allowed then 363 if index (cga_items, rtrim (what)) ^= 0 then 364 goto change_item_ok; 365 call com_err_ (0, whoami, "Illegal change item ""^a"". Must be one of:^/^a^[,^a^].", 366 what, change_items, alias_allowed, cga_items); 367 goto RETURN_TO_CALLER; 368 end; 369 change_item_ok: 370 371 if what = "" | what = "name" then call read_name; 372 if what = "" | what = "addr" then call read_address; 373 if what = "" | what = "progn" then call read_prog_number; 374 if what = "" | what = "notes" then call read_notes; 375 if what = "" | what = "proj" then call read_project; 376 if (what = "" | what = "alias") & alias_allowed then 377 call read_alias; 378 if what = "" | what = "pass" then 379 do; 380 call read_password ("Password", pnte.private.password, 381 pnte.public.flags.has_password, 382 pnte.private.pw_flags.short_pw, set_password); 383 /* Don't forget to update date/time password was changed. */ 384 if set_password then pnte.public.time_pw_changed = clock (); 385 end; 386 if what = "" | what = "cpass" | what = "npass" then 387 call read_password ("Network Password", 388 pnte.private.network_password, 389 pnte.public.flags.has_network_password, 390 pnte.private.pw_flags.short_network_pw, 391 set_network_password); 392 if alias_allowed then do; 393 if what = "" | what = "flags" then call read_flags; 394 if what = "" | what = "auth" then 395 call read_authorization_range (pnte.person_authorization); 396 if what = "" | what = "dfauth" then 397 call read_default_authorization (pnte.default_person_authorization); 398 if what = "" | what = "audit" then call read_audit; 399 if what = "" | what = "revalidate" then 400 call REVALIDATE_USER (); 401 end; 402 403 call urf_manager_$update_entry ((uid), addr (old_urfe), addr (urfe), 404 code); 405 if code ^= 0 then 406 call com_err_ (code, whoami, "Updating URF entry."); 407 408 call pnt_manager_$update_entry (addr (pnte), set_password, 409 set_network_password, code); 410 if code ^= 0 then 411 call com_err_ (code, whoami, "Updating PNT entry."); 412 413 /* Updating the mail table is not nessesary with some change items. */ 414 if what = "name" | what = "addr" | what = "proj" | what = "alias" then do; 415 mte.version = MAIL_TABLE_ENTRY_VERSION_1; 416 call mail_table_priv_$get (rtrim (uid), addr (mte), code); 417 if code = 0 then do; 418 mte.default_project = rtrim (pnte.default_project); 419 call mail_table_priv_$update (addr (mte), "1"b, code); 420 if code ^= 0 then call com_err_ (code, whoami, "Updating Mail Table."); 421 if pnte.alias ^= old_pnte.alias then do; 422 if pnte.alias = "" then do; /* Delete the alias */ 423 call mail_table_priv_$delete_alias (rtrim (old_pnte.alias), "1"b, code); 424 if code ^= 0 then call com_err_ (code, whoami, "Deleting the alias from the Mail Table."); 425 else do; 426 call mail_table_priv_$add_alias (rtrim (uid), rtrim (old_pnte.alias), "0"b, code); 427 if code ^= 0 then 428 call com_err_ (code, whoami, "Adding the alias back to the Mail Table."); 429 end; 430 end; 431 else do; 432 call mail_table_priv_$add_alias (rtrim (uid), rtrim (pnte.alias), "1"b, code); 433 if code ^= 0 then call com_err_ (code, whoami, "Adding new alias to Mail Table."); 434 end; 435 end; 436 end; 437 else call com_err_ (code, whoami, "Retrieving Mail Table entry."); 438 end; 439 440 goto RETURN_TO_CALLER; 441 442 print_pnt: 443 entry options (variable); 444 445 /**** This entry implements the command to display the contents of a 446* user's PNT entry (or those of all users). */ 447 448 declare (nargs, i) fixed bin, 449 (print_urf, print_all, password_info_set, 450 no_password_info) bit aligned; 451 452 whoami = "print_pnt"; 453 print_urf = "1"b; 454 print_all = "1"b; 455 changing = "0"b; 456 call cu_$arg_count (nargs, code); 457 if code ^= 0 then goto RETURN_TO_CALLER; 458 on linkage_error begin; 459 code = error_table_$moderr; 460 goto NO_ACCESS_TO_GATE; 461 end; 462 entry_var = pnt_admin_gate_$get_entry; 463 revert linkage_error; 464 465 password_info_set = "0"b; 466 no_password_info = "0"b; /* Give the password info by default */ 467 do i = 1 to nargs; 468 call cu_$arg_ptr (i, ap, al, code); 469 if /* case */ argument = "-brief" | argument = "-bf" then print_urf = "0"b; 470 else if argument = "-password_info" | argument = "-no_password_info" then do; 471 if password_info_set then do; 472 call com_err_ (error_table_$inconsistent, 473 whoami, "-password_info and -no_password_info cannot both appear on a command line"); 474 return; 475 end; 476 if argument = "-no_password_info" then no_password_info = "1"b; 477 password_info_set = "1"b; 478 end; 479 else if substr (argument, 1, 1) = "-" then do; 480 call com_err_ (error_table_$bad_arg, whoami, 481 "^a", argument); 482 return; 483 end; 484 else print_all = "0"b; 485 end; 486 487 if ^print_all then do i = 1 to nargs; 488 call cu_$arg_ptr (i, ap, al, code); 489 if substr (argument, 1, 1) ^= "-" then do; 490 uid = argument; 491 call pnt_manager_$get_entry ((uid), addr (pnte), code); 492 if code ^= 0 then do; 493 call com_err_ (code, whoami, "Reading PNT entry of ^a.", uid); 494 return; 495 end; 496 call print_it; 497 end; 498 end; 499 else do rec = 1 by 1; 500 call pnt_manager_$get_abs_entry (rec, addr (pnte), code); 501 if code = 0 then call print_it; 502 else if code = error_table_$checksum_failure 503 then call com_err_ (code, whoami, "Checksum failure on record ^d.", rec); 504 else if code ^= error_table_$no_record then do; 505 if code ^= error_table_$bad_index 506 then call com_err_ (code, whoami, "Reading from PNT."); 507 return; 508 end; 509 end; 510 return; 511 512 print_it: 513 procedure (); 514 515 /**** This procedure displays a single PNT entry. */ 516 517 dcl purf bit aligned; 518 519 if print_urf then do; 520 call urf_manager_$get_entry ((pnte.user_id), addr (urfe), code); 521 purf = (code = 0); 522 end; 523 else purf = "0"b; 524 525 call ioa_ ("^/User ID:^-^-^a", pnte.user_id); 526 if purf then do; 527 call print_name; 528 call print_address; 529 call print_prog_number; 530 call print_notes; 531 end; 532 call print_project; 533 call print_alias; 534 call print_flags; 535 call print_authorization_range (pnte.person_authorization); 536 call print_default_authorization (pnte.default_person_authorization); 537 call print_audit; 538 if no_password_info then do; 539 if pnte.n_good_pw = 0 then 540 call ioa_ ("Never logged in."); 541 else call ioa_ ("Last logged in at ^a.", 542 dt (pnte.time_last_good_pw)); 543 return; 544 end; 545 call ioa_ ("^-^d good passwords given, last at ^a.", 546 pnte.n_good_pw, dt (pnte.time_last_good_pw)); 547 call ioa_ ("^-^d bad passwords given, last at ^a from ^a ^a terminal ^a.", 548 pnte.n_bad_pw, dt (pnte.time_last_bad_pw), 549 line_types (pnte.bad_pw_line_type), pnte.bad_pw_term_type, 550 pnte.bad_pw_term_id); 551 if pnte.time_pw_changed ^= 0 then 552 call ioa_ ("^-Password changed: ^a", dt (pnte.time_pw_changed)); 553 call ioa_ ("^-User last validated on ^a", dt (pnte.user_validated_time)); 554 end print_it; 555 556 initialize: 557 procedure (); 558 559 /**** This procedure initiates several files needed to execute this 560* command. */ 561 562 call initiate_file_ (sadir, "projfile", R_ACCESS, pp, (0), code); 563 if code ^= 0 then do; 564 call com_err_ (code, whoami, "Unable to initiate ^a.", pathname_ (sadir, "projfile")); 565 goto RETURN_TO_CALLER; 566 end; 567 568 call initiate_file_ (sadir, "sys_admin_data", R_ACCESS, sadp, (0), code); 569 if code ^= 0 570 then do; 571 call com_err_ (code, whoami, "Unable to initiate ^a.", pathname_ (sadir, "sys_admin_data")); 572 goto RETURN_TO_CALLER; 573 end; 574 575 call initiate_file_ (sysdir, "installation_parms", R_ACCESS, ip, (0), code); 576 if code ^= 0 then 577 do; 578 call com_err_ (code, whoami, "Unable to initiate ^a.", pathname_ (sysdir, "installation_parms")); 579 goto RETURN_TO_CALLER; 580 end; 581 return; 582 end initialize; 583 584 cleaner: 585 procedure (); 586 587 /**** This is the cleanup handler for new_user */ 588 589 dcl tptr pointer; /* temp pointer */ 590 591 if pp ^= null () 592 then do; 593 tptr = pp; 594 pp = null (); 595 call terminate_file_ (tptr, 0, TERM_FILE_TERM, (0)); 596 end; 597 598 if sadp ^= null () 599 then do; 600 tptr = sadp; 601 sadp = null (); 602 call terminate_file_ (tptr, 0, TERM_FILE_TERM, (0)); 603 end; 604 605 if ip ^= null () then 606 do; 607 tptr = ip; 608 ip = null (); 609 call terminate_file_ (tptr, 0, TERM_FILE_TERM, (0)); 610 end; 611 return; 612 613 end cleaner; 614 615 616 /* * * * * * * * * * READ_LINE * * * * * * * * * */ 617 618 read_line: procedure (Prompt); 619 620 declare (Prompt) character (*) aligned parameter; 621 declare nelemt fixed bin (21), 622 code fixed bin (35); 623 624 if arg_given then do; 625 arg_given = "0"b; 626 return; 627 end; 628 629 read_it: call ioa_$nnl (Prompt); 630 call iox_$get_line (iox_$user_input, addr (line), length (line), nelemt, code); 631 if code = 0 then do; 632 substr (line, nelemt) = ""; 633 if substr (line, 1, 4) = "stop" then signal new_user_stop; 634 return; 635 end; 636 637 do while (code = error_table_$long_record); 638 call iox_$get_line (iox_$user_input, addr (line), length (line), nelemt, code); 639 end; 640 if code = 0 then do; 641 call ioa_ ("Line too long."); 642 goto read_it; 643 end; 644 call com_err_ (code, whoami, "Reading from user_input."); 645 goto RETURN_TO_CALLER; 646 end read_line; 647 648 649 /* * * * * * * * * * UID_EXISTS * * * * * * * * * */ 650 651 uid_exists: procedure (Uid) returns (bit aligned); 652 653 declare Uid character (*) aligned parameter; 654 declare code fixed bin (35); 655 declare 1 test_urfe aligned like urf_entry; 656 657 uid = substr (Uid, 1, min (length (Uid), 20)); 658 call urf_manager_$get_entry ((uid), addr (test_urfe), code); 659 if code = 0 then do; 660 call ioa_ ("""^a"" is in use by ^a, ^a; ^a.", uid, test_urfe.last_name, test_urfe.first_name, test_urfe.address); 661 return ("1"b); 662 end; 663 else if code = error_table_$id_not_found then do; 664 code = 0; 665 call mail_table_$get (rtrim (uid), null (), (""), code); 666 if code = 0 | code = mlsys_et_$ambiguous_address then do; 667 call ioa_ ("""^a"" is in use as a Mail Table entry name.", uid); 668 return ("1"b); 669 end; 670 if code = error_table_$id_not_found then do; 671 if check_legal (uid) then return ("0"b); 672 call ioa_ ("""^a"" is not a valid user_id.", uid); 673 return ("1"b); 674 end; 675 else do; 676 call com_err_ (code, whoami, "Getting name from MAIL_TABLE."); 677 go to RETURN_TO_CALLER; 678 end; 679 end; 680 else do; 681 call com_err_ (code, whoami, "Getting entry from URF."); 682 goto RETURN_TO_CALLER; 683 end; 684 end uid_exists; 685 686 read_password: 687 procedure (Prompt, Password, Has_pw, Short_pw, Pword_changed); 688 689 /**** This procedure prompts for and changes, if necessary, the specified 690* password. */ 691 692 declare Prompt character (*); 693 declare Password character (32) aligned parameter; 694 declare Has_pw bit unaligned parameter; 695 declare Short_pw bit (1) unaligned parameter; 696 declare (p1, p2) character (8); 697 dcl Pword_changed bit (1) parameter; 698 dcl error_message char (64) automatic; /* informative error message */ 699 dcl code fixed bin (35) automatic; /* local status code */ 700 701 Pword_changed = "0"b; /* Assume not changed yet */ 702 read_them: call read_password_ (Prompt, p1); 703 if p1 = "*" 704 then if changing 705 then return; 706 else do; 707 Password = ""; 708 Pword_changed = "1"b; 709 Has_pw = "0"b; 710 return; 711 end; 712 else do; 713 call check_password_ (p1, error_message, code); 714 if code ^= 0 then 715 do; 716 call ioa_ ("^a", error_message); 717 goto read_them; 718 end; 719 end; 720 721 call read_password_ ("Password again:", p2); 722 if p1 ^= p2 then do; 723 call ioa_ ("Passwords don't agree -- try again."); 724 goto read_them; 725 end; 726 Password = scramble_ ((p1)); 727 Pword_changed = "1"b; 728 p1, p2 = ""; 729 Has_pw = "1"b; 730 Short_pw = "1"b; /* We don't support 32 char passwords yet */ 731 end read_password; 732 733 /* * * * * * * * * * PRINT_ALIAS * * * * * * * * * */ 734 735 print_alias: procedure; 736 if (pnte.alias ^= "") | changing 737 then call ioa_ ("Alias:^-^-^a", pnte.alias); 738 end; 739 740 /* * * * * * * * * * READ_ALIAS * * * * * * * * * */ 741 742 read_alias: procedure; 743 if changing then call print_alias; 744 read_alias_again: 745 call read_line ("Alias^-^-"); 746 if line = "" | line = "no" | line = "stop" then return; 747 if changing then 748 if line = "." then do; /* Means to delete the alias. */ 749 pnte.alias = ""; 750 return; 751 end; 752 else if line = pnte.alias then return; /* Changed to itself */ 753 call pnt_manager_$get_entry ((line), addr (alias_pnte), code); 754 if code = 0 then do; 755 call ioa_ ("The alias ""^a"" is already in use by ^a. Try another.", line, alias_pnte.user_id); 756 goto read_alias_again; 757 end; 758 code = 0; 759 call mail_table_$get ((line), null (), (""), code); 760 if code = 0 | code = mlsys_et_$ambiguous_address then do; 761 call ioa_ ("The alias ""^a"" is already in use as a Mail Table entry name.", line); 762 go to read_alias_again; 763 end; 764 if copy_and_check_length (line, pnte.alias, "alias") then goto read_alias_again; 765 end read_alias; 766 767 /* * * * * * * * * * PRINT_PROG_NUMBER * * * * * * * * * */ 768 769 print_prog_number: procedure; 770 if urfe.prog_number ^= "none" | changing 771 then call ioa_ ("Prog. number:^-^a", urfe.prog_number); 772 end print_prog_number; 773 774 /* * * * * * * * * * READ_PROG_NUMBER * * * * * * * * * */ 775 776 read_prog_number: procedure; 777 778 read_it: 779 if changing then call print_prog_number; 780 call read_line ("Prog. number^-"); 781 if changing 782 then if (line = "") | (line = "no") 783 then return; 784 else ; 785 else if line = "" then line = "none"; 786 if copy_and_check_length (line, urfe.prog_number, "programmer number") 787 then goto read_it; 788 if line ^= "none" 789 then if verify (line, "0123456789 ") ^= 0 790 then call ioa_ ("WARNING: Programmer number contains non-numeric characters."); 791 urfe.prog_number = rtrim(line); 792 end read_prog_number; 793 794 /* * * * * * * * * * PRINT_AUDIT * * * * * * * * * */ 795 796 print_audit: procedure; 797 declare audit_string character (256); 798 799 if pnte.audit = ""b & ^changing then return; 800 call convert_access_audit_flags_$to_string (pnte.audit, audit_string, code); 801 if code = 0 802 then call ioa_ ("Audit Flags:^-^a", audit_string); 803 else call ioa_ ("Audit Flags:^-""^12.3b""b3 (illegal format)", pnte.audit); 804 end print_audit; 805 806 /* * * * * * * * * * READ_AUDIT * * * * * * * * * */ 807 808 read_audit: procedure; 809 810 if changing then do; 811 change_loop: call print_audit; 812 call read_line ("Audit Flags^-"); 813 if line = "" | line = "no" then return; 814 call convert_access_audit_flags_$edit_from_string ((line), pnte.audit, code); 815 if code ^= 0 then do; 816 call com_err_ (code, whoami, "Converting audit string."); 817 goto change_loop; 818 end; 819 end; 820 else do; 821 read_it: call read_line ("Audit Flags^-"); 822 call convert_access_audit_flags_$from_string ((line), pnte.audit, code); 823 if code ^= 0 then do; 824 call com_err_ (code, whoami, "Converting audit string."); 825 goto read_it; 826 end; 827 end; 828 829 return; 830 831 end read_audit; 832 833 /* * * * * * * * * * PRINT_AUTHORIZATION * * * * * * * * * * */ 834 835 print_default_authorization: procedure (Which); 836 837 declare Which bit (72) aligned parameter; 838 declare auth_string character (256); 839 840 if Which = ""b & ^changing then return; 841 call convert_authorization_$to_string_short (Which, auth_string, code); 842 call ioa_$nnl ("^a: ", "Default Authorization"); 843 if code = 0 then do; 844 if auth_string = "" then 845 auth_string = "system_low"; 846 call ioa_ ("^a", auth_string); 847 end; 848 else call ioa_ ("""^24.3b""b3", Which); 849 end print_default_authorization; 850 851 print_authorization_range: procedure (P_auth_range); 852 853 dcl P_auth_range (2) bit (72) aligned parameter; 854 dcl auth_string char (256); 855 dcl convert_authorization_$to_string_range_short entry ((2) bit (72) aligned, char (*), fixed bin (35)); 856 857 if P_auth_range (1) = ""b & P_auth_range (2) = ""b & ^changing 858 then return; 859 call convert_authorization_$to_string_range_short (P_auth_range, auth_string, code); 860 call ioa_$nnl ("^a: ", "Authorization Range"); 861 if code = 0 then 862 call ioa_ ("^a", auth_string); 863 else call ioa_ ("^24.3b:^24.3b", P_auth_range (1), P_auth_range (2)); 864 865 end print_authorization_range; 866 867 /* * * * * * * * * * * READ_AUTHORIZATION * * * * * * * * * */ 868 869 read_default_authorization: procedure (Which); 870 871 declare Which bit (72) aligned parameter; 872 873 read_it: 874 if changing then 875 call print_default_authorization (Which); 876 call read_line ("Default Authorization: "); 877 if (line = "" | line = "no") & changing then return; 878 call convert_authorization_$from_string (Which, (line), code); 879 if code ^= 0 then do; 880 call com_err_ (code, whoami, "Converting authorization."); 881 goto read_it; 882 end; 883 end read_default_authorization; 884 885 read_authorization_range: procedure (P_auth_range); 886 887 dcl P_auth_range (2) bit (72) aligned parameter; 888 dcl convert_authorization_$from_string_range entry ((2) bit (72) aligned, char (*), fixed bin (35)); 889 890 read_it: if changing then 891 call print_authorization_range (P_auth_range); 892 call read_line ("Authorization Range: "); 893 if (line = "" | line = "no") & changing then return; 894 call convert_authorization_$from_string_range (P_auth_range, (line), code); 895 if code ^= 0 then do; 896 call com_err_ (code, whoami, "Converting authorization range."); 897 goto read_it; 898 end; 899 return; 900 end read_authorization_range; 901 902 /* * * * * * * * * * PRINT_FLAGS * * * * * * * * * */ 903 904 print_flags: procedure; 905 declare lock_time character (14); 906 907 lock_time = date_time_$format ("date_time", pnte.password_timelock, 908 "", ""); 909 call ioa_ ("Flags:^-^-^[^^^]password,^[^^^]network_pw,^[^^^]trap,^[^^^]lock,^[^^^]change,^[^^^]must_change,^[^^^]generate,^[^^^]operator,^[time_lock=^a^;^^time_lock^s^]", 910 ^pnte.has_password, ^pnte.has_network_password, 911 ^pnte.flags.trap, ^pnte.flags.lock, pnte.flags.nochange, ^pnte.flags.must_change, ^pnte.flags.generate_pw, ^pnte.flags.operator, pnte.flags.pw_time_lock, lock_time); 912 end print_flags; 913 914 read_flags: procedure (); 915 916 /**** This internal procedure displays the current PNT flag settings and 917* offers to change them. */ 918 919 dcl (i, j) fixed bin; 920 dcl mode_value bit aligned; 921 922 read_them: 923 if changing then 924 call print_flags; 925 call read_line ("Flags^-^-"); 926 if line = "" | line = "no" then 927 return; 928 i = 1; 929 do while (i <= length (line)); 930 j = index (substr (line, i), ",") - 1; 931 if j < 0 then j = length (line) - i + 1; 932 if substr (line, i, 1) = "^" 933 then do; 934 mode_value = "0"b; 935 i = i + 1; 936 j = j - 1; 937 end; 938 else mode_value = "1"b; 939 if substr (line, i, j) = "" then ; 940 else if substr (line, i, j) = "password" then 941 pnte.flags.has_password = 942 pnte.flags.has_password & mode_value; 943 else if substr (line, i, j) = "network_pw" then 944 pnte.flags.has_network_password = 945 pnte.flags.has_network_password & mode_value; 946 /**** Still support the old "card_pw" */ 947 else if substr (line, i, j) = "card_pw" then 948 pnte.flags.has_network_password = 949 pnte.flags.has_network_password & mode_value; 950 else if substr (line, i, j) = "trap" then 951 pnte.flags.trap = mode_value; 952 else if substr (line, i, j) = "lock" then 953 pnte.flags.lock = mode_value; 954 else if substr (line, i, j) = "change" then 955 pnte.flags.nochange = ^mode_value; 956 else if substr (line, i, j) = "must_change" then 957 pnte.flags.must_change = mode_value; 958 else if j >= 9 & substr (line, i, 9) = "time_lock" then do; 959 if ^mode_value 960 then pnte.password_timelock = 0; 961 else do; 962 if j < 11 | substr (line, i + 9, 1) ^= "=" then do; 963 call ioa_ ("Bad time lock specified."); 964 goto read_them; 965 end; 966 call convert_date_to_binary_ (substr (line, i + 10, j - 10), pnte.password_timelock, code); 967 if code ^= 0 then do; 968 call com_err_ (code, whoami, "Time lock."); 969 goto read_them; 970 end; 971 end; 972 pnte.flags.pw_time_lock = mode_value; 973 end; 974 else if substr (line, i, j) = "generate" then 975 pnte.flags.generate_pw = mode_value; 976 else if substr (line, i, j) = "operator" then pnte.flags.operator = mode_value; 977 else do; 978 call ioa_ ("Invalid flag ""^a"" specified.", substr (line, i, j)); 979 goto read_them; 980 end; 981 i = i + j + 1; 982 end; 983 end read_flags; 984 985 /* * * * * * * * * * PRINT_PROJECT * * * * * * * * * * */ 986 987 print_project: procedure; 988 call ioa_ ("Project ID:^-^a", pnte.default_project); 989 end print_project; 990 991 /* * * * * * * * * * READ_PROJECT * * * * * * * * * */ 992 993 read_project: procedure; 994 declare i fixed bin; 995 996 read_it: 997 if changing then call print_project; 998 call read_line ("Project ID^-"); 999 if line = "" | line = "No" 1000 then if changing 1001 then return; 1002 else goto read_it; 1003 if pp ^= null () 1004 then do i = 1 to projfile.nproj; 1005 if line = projfile.projfiletab (i).id then goto good_project; 1006 end; 1007 if length (rtrim (line)) > 9 then do; 1008 call ioa_ ("Project name length > 9 characters."); 1009 goto read_it; 1010 end; 1011 if pp ^= null () then call ioa_ ("WARNING: Project name not in projfile."); 1012 good_project: 1013 urfe.project, pnte.default_project = rtrim(line); 1014 end read_project; 1015 1016 /* * * * * * * * * * * PRINT_NOTES * * * * * * * * * * * */ 1017 1018 print_notes: procedure; 1019 call ioa_ ("Notes:^-^-^a", urfe.notes); 1020 end; 1021 1022 /* * * * * * * * * * * READ_NOTES * * * * * * * * * * * */ 1023 1024 read_notes: procedure; 1025 1026 read_it: 1027 if changing then call print_notes; 1028 call read_line ("Notes^-^-"); 1029 if changing then 1030 if line = "" then return; 1031 else if line = "." then line = ""; 1032 if copy_and_check_length (line, urfe.notes, "notes field") 1033 then goto read_it; 1034 return; /* 10/19/82 Jis: Always return, don't force user to give a notes field */ 1035 /* else if changing then return; */ 1036 /* else goto read_it; */ 1037 end read_notes; 1038 1039 /* * * * * * * * * * * PRINT_ADDRESS * * * * * * * * * * */ 1040 1041 print_address: procedure; 1042 call ioa_ ("Address:^-^-^a", urfe.address); 1043 end; 1044 1045 /* * * * * * * * * * READ_ADDRESS * * * * * * * * * */ 1046 1047 read_address: procedure; 1048 1049 read_it: 1050 if changing then call print_address; 1051 call read_line ("Address^-^-"); 1052 if line = "" then 1053 if changing then return; 1054 else goto read_it; 1055 else if copy_and_check_length (line, urfe.address, "address") 1056 then goto read_it; 1057 end read_address; 1058 1059 /* * * * * * * * * * * PRINT_NAME * * * * * * * * * */ 1060 1061 print_name: procedure; 1062 call ioa_ ("Full name:^-^a, ^a^[ : ^a^;^s^]", 1063 urfe.last_name, urfe.first_name, (urfe.title ^= ""), urfe.title); 1064 end; 1065 1066 /* * * * * * * * * * READ_NAME * * * * * * * * * */ 1067 1068 read_name: procedure; 1069 declare (i1, i2, i4) fixed bin; 1070 1071 read_it: 1072 if changing then call print_name; 1073 call read_line ("Full name^-^-"); 1074 if line = "" then if changing then return; else goto read_it; 1075 i2 = search (line, ":"); 1076 if i2 = 0 1077 then urfe.title = ""; 1078 else do; 1079 i1 = search (substr (line, i2 + 1), " "); 1080 if copy_and_check_length (substr (line, i2 + 1, i1 - 1), 1081 urfe.title, "title") then goto read_it; 1082 substr (line, i2, i1) = ""; 1083 end; 1084 1085 i1 = search (line, ","); 1086 if i1 = 0 then do; 1087 call ioa_ ("A comma must immediately follow the last name."); 1088 goto read_it; 1089 end; 1090 if copy_and_check_length (substr (line, 1, i1 - 1), urfe.last_name, "last name") 1091 then goto read_it; 1092 if urfe.last_name = "" then do; 1093 call ioa_ ("No last name given."); 1094 goto read_it; 1095 end; 1096 if verify (substr (urfe.last_name, 1, 1), "*ABCDEFGHIJKLMNOPQRSTUVWXYZ") ^= 0 1097 then call ioa_ ("WARNING: Last name does not begin with capital letter."); 1098 substr (line, 1, i1) = ""; 1099 1100 i2 = verify (line, " "); /* find beginning of first name */ 1101 if i2 = 0 then do; 1102 call ioa_ ("No first name givien."); 1103 goto read_it; 1104 end; 1105 if copy_and_check_length (substr (line, i2), urfe.first_name, "first name") 1106 then goto read_it; 1107 if verify (substr (urfe.first_name, 1, 1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ") ^= 0 1108 then call ioa_ ("WARNING: First name does not begin with a capital letter."); 1109 i4 = search (substr (line, i2), " "); 1110 if i4 = 0 1111 then initial = ""; /* first name no initial */ 1112 else do; 1113 initial = substr (line, i2 + i4, 1); /* first name middle name */ 1114 if verify (initial, " ABCDEFGHIJKLMNOPQRSTUVWXYZ") ^= 0 1115 then call ioa_ ("WARNING: Middle initial is not a capital letter."); 1116 end; 1117 end read_name; 1118 1119 /* * * * * * * * * * YES_NO * * * * * * * * * */ 1120 1121 yes_no: procedure (Prompt) returns (bit aligned); 1122 declare Prompt character (*) aligned parameter; 1123 1124 read_it: call read_line (Prompt); 1125 if line = "yes" | line = "y" then return ("1"b); 1126 else if line = "no" | line = "n" then return ("0"b); 1127 else do; 1128 call ioa_ ("Please answer ""yes"", ""no"", ""y"", or ""n""."); 1129 goto read_it; 1130 end; 1131 end yes_no; 1132 1133 dt: procedure (Date) returns (character (16) aligned); 1134 1135 /**** This function returns a character string representation of 1136* a date-time. */ 1137 1138 dcl Date fixed bin (71); 1139 dcl date char (16); 1140 1141 if Date = 0 then return ("NEVER"); 1142 date = date_time_$format ("date_time", Date, "", ""); 1143 return (date); 1144 end; 1145 1146 /* * * * * * * * * * CHECK_LEGAL * * * * * * * * * */ 1147 1148 check_legal: proc (Thunk) returns (bit (1)); 1149 declare Thunk char (*) aligned; 1150 declare ILLEGAL_FOR_UIDS char (4) init (" .;") internal static options (constant); 1151 1152 if search (rtrim (Thunk), ILLEGAL_FOR_UIDS) = 0 then 1153 return ("1"b); 1154 else return ("0"b); 1155 1156 end check_legal; 1157 1158 /* * * * * * COPY_AND_CHECK_LENGTH * * * * * * * */ 1159 1160 /* Check to see if Input fits in Output, complaining and returning true if 1161* it doesn't, copying and returning false if it does. */ 1162 copy_and_check_length: 1163 proc (Input, Output, Name) returns (bit (1)); 1164 1165 dcl (Input, Output, Name) char (*) aligned; 1166 1167 if length (rtrim (Input)) > length (Output) then do; 1168 call ioa_ ("The ^a ""^a"" is too long. Maximum length is ^d.", 1169 Name, Input, length (Output)); 1170 return ("1"b); 1171 end; 1172 else do; 1173 Output = Input; 1174 return ("0"b); 1175 end; 1176 end copy_and_check_length; 1177 1178 /* * * * * * * * * * TEST * * * * * * * * * */ 1179 1180 new_user_test: 1181 entry (Test_dir); 1182 1183 declare Test_dir character (*) parameter; 1184 1185 sadir = Test_dir; 1186 call pnt_manager_$test (Test_dir); 1187 call urf_manager_$test (Test_dir); 1188 call mail_table_priv_$test (Test_dir); 1189 return; 1190 1191 REVALIDATE_USER: 1192 procedure (); 1193 1194 /**** This procedure is used to revalidate a user. User revalidation 1195* is used in order to prevent the expiration of a user's password 1196* if the installation parameter "password_expiration_interval" is 1197* set to a non-zero value. If this parameter is non-zero, then 1198* if a user has not successfully logged in within the specified 1199* interval, he/she is refused the login. If this occurs, a system 1200* administrator must issue the "new_user$cga Userid revalidate" 1201* command in order to revalidate the user. This command line may 1202* be used to anticipate the password expiration of a user and 1203* ensure that the user is not denied login. This is necessary, 1204* for instance for server processes (network, IMFT, mailer) which 1205* log in with passwords, but which do not have a means of coping 1206* with this situation. 1207* 1208* If this procedure was invoked because of the command line specified 1209* above, the user-revalidation time in the PNT entry is updated 1210* to the current time. If this procedure is invoked due to the 1211* new_user$cga prompt-mode, then the user is prompted as to whether 1212* or not he/she wants to revalidate the user. */ 1213 1214 dcl 1 qi aligned like query_info; 1215 dcl explanation char (182) initial ( 1216 "Answering ""yes"" to this question will allow the user to log in even though he/she may not have logged in with the password_expiration_interval defined in the installation parameters.") internal static options (constant); 1217 dcl appropriate_answer_given bit (1) aligned; 1218 dcl answer char (4); 1219 1220 if what = "revalidate" then 1221 pnte.user_validated_time = clock (); 1222 else if installation_parms.password_expiration_interval ^= 0 then 1223 do; 1224 unspec (qi) = ""b; 1225 qi.version = query_info_version_6; 1226 qi.switches.prompt_after_explanation = "1"b; 1227 qi.question_iocbp = null (); 1228 qi.answer_iocbp = null (); 1229 qi.explanation_ptr = addr (explanation); 1230 qi.explanation_len = length (explanation); 1231 appropriate_answer_given = "0"b; 1232 do while (^appropriate_answer_given); 1233 call command_query_ (addr (qi), answer, whoami, 1234 "User last validated at ^a, revalidate?", 1235 dt (pnte.user_validated_time)); 1236 if answer = "yes" | answer = "y" then 1237 do; 1238 appropriate_answer_given = "1"b; 1239 pnte.user_validated_time = clock (); 1240 end; 1241 else if answer = "no" | answer = "n" | answer = "" then 1242 appropriate_answer_given = "1"b; 1243 end; 1244 end; 1245 return; 1246 end REVALIDATE_USER; 1247 1248 1249 NO_ACCESS_TO_GATE: 1250 call com_err_ (code, whoami, "pnt_admin_gate_"); 1251 return; 1252 1253 1254 /* format: off */ 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 */ 1255 2 1 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 2 2 2 3 /* Modified 740723 by PG to add short AIM access names */ 2 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 2 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 2 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 2 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 2 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 2 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 2 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 2 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 2 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 2 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 2 14* strict_trusted_path. */ 2 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 2 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 2 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 2 18 2 19 2 20 /****^ HISTORY COMMENTS: 2 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 2 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 2 23* added vchn_requires_accept parameter. 2 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 2 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 2 26* Correct formatting problems. 2 27* END HISTORY COMMENTS */ 2 28 2 29 2 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 2 31 2 32 2 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 2 34 2 part_1 like installation_parms_part_1 aligned, 2 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 2 36 2 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 2 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 2 39 2 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 2 41 2 installation_id char (32), /* Name printed at dialup and in who */ 2 42 2 company char (64), /* company name */ 2 43 2 department char (64), /* department */ 2 44 2 companyds char (120), /* company, double spaced */ 2 45 2 departmentds char (120), /* dpeartment double spaced */ 2 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 2 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 2 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 2 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 2 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 2 51 2 ndevices fixed bin, /* number of devices to charge */ 2 52 2 devtab (16), /* Maximum 16 */ 2 53 3 device_id char (8), /* Name of device */ 2 54 3 device_price (0: 7) float bin, /* Price by shift */ 2 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 2 56 2 warning_time fixed bin, /* seconds from warning to logout */ 2 57 2 login_time fixed bin, /* seconds in which to complete login */ 2 58 2 acct_update fixed bin, /* seconds between acct update */ 2 59 2 login_tries fixed bin, /* number of login tries allowed */ 2 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 2 61 2 registration_price float bin, /* fee per month per user */ 2 62 2 dolsign char (1), /* "dollar sign" */ 2 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 2 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 2 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 2 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 2 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 2 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 2 69* Initializer will copy the syserr_log */ 2 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 2 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 2 72 2 fatal_error_loop_count fixed bin (17) unaligned, 2 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 2 74 2 term_real_time_seconds fixed bin (17) unaligned, 2 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 2 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 2 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 2 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 2 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 2 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 2 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 2 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 2 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 2 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 2 85 2 level_names (0:7) char (32), /* Names for security levels. */ 2 86 2 category_names (18) char (32), /* Names for security categories. */ 2 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 2 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 2 89 2 ncon fixed bin, /* Number of config elements. */ 2 90 2 cona (51), /* each entry is 5 words long */ 2 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 2 92 3 shift fixed bin (5) unal, /* Shift number */ 2 93 3 x1 fixed bin (23) unal, 2 94 3 kmem fixed bin (17) unal, /* Memory size */ 2 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 2 96 3 x2 fixed bin (17) unal, 2 97 3 maxa fixed bin (11) unal, /* Max abs users */ 2 98 3 maxq fixed bin (5) unal, /* Max abs q */ 2 99 3 maxu_base fixed bin (17) unal, 2 100 3 response_high fixed bin (17) unal, 2 101 3 response_low fixed bin (17) unal, 2 102 3 x3 fixed bin (17) unal, 2 103 2 104 /* Absentee control parameters. New for MR7.0 */ 2 105 2 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 2 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 2 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 2 109 2 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 2 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 2 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 2 113 2 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 2 115 2 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 2 117 2 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 2 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 2 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 2 121 2 version fixed bin (35), /* must be 2 */ 2 122 2 nrates fixed bin, /* number of rate structures */ 2 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 2 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 2 125 2 require_operator_login bit (1) aligned, /* just what it says */ 2 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 2 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 2 128* mcacs segments for operators */ 2 129 2 password_min_length fixed bin, /* minimum length of passwords */ 2 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 2 131 2 password_change_interval fixed bin, /* number of days until must change */ 2 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 2 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 2 134* "accepted" by operator if personid is not 2 135* signed on system console */ 2 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 2 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 2 138* or someone miscounted when using part of pad2 */ 2 139 2 140 2 141 /* Entries in the following array may be accessed via system_info_$resource_price. 2 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 2 143 2 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 2 145 2 name char (32), 2 146 2 price float bin; 2 147 3 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 3 2 3 3 /* Created on 04/24/78 by Michael R. Jordan */ 3 4 /* Modified 04/10/79 by C. D. Tavares */ 3 5 3 6 dcl rifp ptr; 3 7 3 8 dcl 1 rcp_init_flags based (rifp), 3 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 3 10 2 pad1 bit (2) unaligned, /* obsolete */ 3 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 3 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 3 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 3 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 3 15 3 16 dcl (No_authentication initial (0), 3 17 Nominal_authentication initial (1), 3 18 Automatic_authentication initial (2), 3 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 3 20 3 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 3 22 ("none", "nominal", "automatic", "manual"); 3 23 3 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 2 148 2 149 2 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 1256 4 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 4 2 4 3 /* Written November 10 1975 by Paul Green */ 4 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 4 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 4 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 4 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 4 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 4 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 4 10 4 11 4 12 /****^ HISTORY COMMENTS: 4 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 4 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 15* Add a DSA line type. 4 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 4 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 18* Add HASP_OPR to identify HASP workstation consoles with login service. 4 19* END HISTORY COMMENTS */ 4 20 4 21 4 22 declare (LINE_MC initial (-2), 4 23 LINE_TELNET initial (-1), 4 24 LINE_UNKNOWN initial (0), 4 25 LINE_ASCII initial (1), 4 26 LINE_1050 initial (2), 4 27 LINE_2741 initial (3), 4 28 LINE_ARDS initial (4), 4 29 LINE_SYNCH initial (5), 4 30 LINE_G115 initial (6), 4 31 LINE_BSC initial (7), 4 32 LINE_ETX initial (8), 4 33 LINE_VIP initial (9), 4 34 LINE_ASYNC1 initial (10), 4 35 LINE_ASYNC2 initial (11), 4 36 LINE_ASYNC3 initial (12), 4 37 LINE_SYNC1 initial (13), 4 38 LINE_SYNC2 initial (14), 4 39 LINE_SYNC3 initial (15), 4 40 LINE_POLLED_VIP initial (16), 4 41 LINE_X25LAP initial (17), 4 42 LINE_HDLC initial (18), 4 43 LINE_COLTS initial (19), 4 44 LINE_DSA initial (20), 4 45 LINE_HASP_OPR initial (21) 4 46 ) fixed bin internal static options (constant); 4 47 4 48 dcl max_line_type fixed bin int static options (constant) init (21); 4 49 4 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 4 51 4 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 4 53 4 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 4 55 "MC", /* -2 */ 4 56 "TELNET", /* -1 */ 4 57 "none", /* 0 */ 4 58 "ASCII", /* 1 */ 4 59 "1050", /* 2 */ 4 60 "2741", /* 3 */ 4 61 "ARDS", /* 4 */ 4 62 "Sync", /* 5 */ 4 63 "G115", /* 6 */ 4 64 "BSC", /* 7 */ 4 65 "202ETX", /* 8 */ 4 66 "VIP", /* 9 */ 4 67 "ASYNC1", /* 10 */ 4 68 "ASYNC2", /* 11 */ 4 69 "ASYNC3", /* 12 */ 4 70 "SYNC1", /* 13 */ 4 71 "SYNC2", /* 14 */ 4 72 "SYNC3", /* 15 */ 4 73 "POLLED_VIP", /* 16 */ 4 74 "X25LAP", /* 17 */ 4 75 "HDLC", /* 18 */ 4 76 "COLTS", /* 19 */ 4 77 "DSA", /* 20 */ 4 78 "HASP_OPR"); /* 21 */ 4 79 4 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 1257 5 1 /* START OF: mail_table_entry.incl.pl1 * * * * * * * * * * * * * * * * */ 5 2 5 3 /* Written by B. Margolin - 7/4/83 */ 5 4 5 5 /* format: style2,ifthendo,ifthen,^indnoniterdo,indcomtxt,^inditerdo,idind22 */ 5 6 declare 1 mail_table_entry aligned based (mail_table_entry_ptr), 5 7 2 version char (8), 5 8 2 name char (32) varying, /* Person_id or entry name */ 5 9 2 acs_path, 5 10 3 dir char (168), 5 11 3 entry char (32), 5 12 2 default_project char (12) varying, 5 13 2 mailing_address char (256) varying; 5 14 5 15 declare mail_table_entry_ptr ptr; 5 16 declare MAIL_TABLE_ENTRY_VERSION_1 5 17 char (8) int static options (constant) init ("mte_0001"); 5 18 5 19 declare 1 mail_table_raw_entry 5 20 aligned based (mail_table_raw_entry_ptr), 5 21 2 version char (8), 5 22 2 name char (32) varying, 5 23 2 primary_name char (32) varying, /* for alias entries */ 5 24 2 flags, 5 25 3 alias_entry bit (1) unaligned, 5 26 3 registered_user bit (1) unaligned, /* In the PNT */ 5 27 3 mbz bit (34) unaligned, 5 28 2 n_names fixed bin, /* # names, including primary */ 5 29 2 next_name char (32) varying, /* Make a */ 5 30 2 prev_name char (32) varying, /* linked list */ 5 31 2 acs_path, 5 32 3 dir char (168), 5 33 3 entry char (32), 5 34 2 default_project char (12) varying, 5 35 2 mailing_address char (256) varying; 5 36 5 37 declare mail_table_raw_entry_ptr 5 38 ptr; 5 39 declare MAIL_TABLE_RAW_ENTRY_VERSION_1 5 40 char (8) int static options (constant) init ("mtre_001"); 5 41 5 42 declare 1 mail_table_aliases aligned based (mail_table_aliases_ptr), 5 43 2 version char (8), 5 44 2 n_names fixed bin, 5 45 2 names (mail_table_aliases_extent refer (mail_table_aliases.n_names)) char (32) varying; 5 46 5 47 declare mail_table_aliases_ptr 5 48 ptr; 5 49 declare mail_table_aliases_extent 5 50 fixed bin; 5 51 declare MAIL_TABLE_ALIASES_VERSION_1 5 52 int static options (constant) char (8) init ("mta_0001"); 5 53 5 54 /* END OF: mail_table_entry.incl.pl1 * * * * * * * * * * * * * * * * */ 1258 6 1 /* BEGIN INCLUDE FILE ... pnt_entry.incl.pl1 */ 6 2 6 3 /* Modified 790702 by C. Hornig for MSF PNT */ 6 4 /* Modified 84-07-18 BIM for V2, aim ranges, long passwords. */ 6 5 /* Modified 84-09-25 for operator attribute... -E. A. Ranzenbach */ 6 6 /* Modified 85-03-05 E. Swenson for user_validated_time */ 6 7 6 8 /**** The ms_table_mgr_ has fixed sized entries, for now. 6 9* The presence of a version field and some pad allow 6 10* us to have incrementally-upgraded PNTE's in a future change. 6 11**/ 6 12 6 13 /**** The conversion to V2 copies the existing encrypted passwords. 6 14* Since the 32 character scrambling algorithm will not give the 6 15* same results, the short_XX flags indicate that the old scrambler 6 16* should be used. The short flags are automatically turned off 6 17* by calls to update the password with the long-scrambled form. */ 6 18 6 19 /* format: style4,insnl,delnl */ 6 20 6 21 declare pntep pointer automatic; 6 22 declare 1 pnt_entry based (pntep) aligned, /* declaration of a single PNT entry */ 6 23 2 version fixed bin, 6 24 2 private aligned, 6 25 3 pw_flags aligned, 6 26 4 short_pw bit (1) unal, /* ON password is eight-character form */ 6 27 4 short_network_pw bit (1) unal, /* ON card password is eight character form. */ 6 28 3 password character (32), /* person's password */ 6 29 3 network_password character (32), 6 30 2 public, 6 31 3 user_id character (32), /* user ID (for alias entries */ 6 32 3 alias character (8), 6 33 3 default_project character (16), /* user's default project */ 6 34 3 flags, /* one-bit flags */ 6 35 4 has_password bit (1) unaligned, 6 36 4 has_network_password bit (1) unaligned, 6 37 4 trap bit (1) unal, /* If this password is used, holler */ 6 38 4 lock bit (1) unal, /* prevent login if on. */ 6 39 4 nochange bit (1) unal, /* user cannot change password */ 6 40 4 must_change bit unal, /* user must change password at next login */ 6 41 4 pw_time_lock bit (1) unal, /* if password has a time lock */ 6 42 4 generate_pw bit (1) unal, /* ON if we give new pw, OFF lets user select new pw */ 6 43 4 last_bad_pw_reported bit (1) unal, /* ON if user has NOT been told about last bad password */ 6 44 4 operator bit (1) unal, /* ON if user can login as an operator... */ 6 45 4 pads bit (26) unal, 6 46 3 n_good_pw fixed bin, /* Number of good passwords */ 6 47 3 n_bad_pw fixed bin, /* Number of wrong passwords */ 6 48 3 n_bad_pw_since_good fixed bin, /* Number of wrong passwords since good */ 6 49 3 time_pw_changed fixed bin (71), /* When password was modified by user */ 6 50 6 51 3 time_last_good_pw fixed bin (71), 6 52 3 time_last_bad_pw fixed bin (71), /* When pw was last given wrong */ 6 53 3 bad_pw_term_id character (4), /* where bad password from */ 6 54 3 bad_pw_line_type fixed bin (17), /* ... */ 6 55 3 bad_pw_term_type character (32), 6 56 3 password_timelock fixed bin (71), /* Password is locked up until here */ 6 57 3 person_authorization (2) bit (72), /* authorization of this person */ 6 58 3 default_person_authorization bit (72), /* default authorization of this person */ 6 59 3 audit bit (36), /* audit flags for person */ 6 60 3 pad1 bit (36), /* pad to even word boundary */ 6 61 3 user_validated_time fixed bin (71), /* time this PNT entry was last validated by an administrator */ 6 62 2 pad (80 - 64) bit (36) aligned; 6 63 6 64 declare PNT_ENTRY_VERSION_2 fixed bin init (2) int static options (constant); 6 65 6 66 /* END INCLUDE FILE ... pnte.incl.pl1 */ 1259 7 1 /* BEGIN INCLUDE FILE .. projfile.incl.pl1 */ 7 2 /* Modified by T. Casey April 1976 to change disk_infs (obsolete) to dir_disk_use */ 7 3 /* Modified 1984-07-09 BIM for dir_disk_quota, version */ 7 4 /* Modified 1984-09-14 BIM for reasonable array size */ 7 5 7 6 dcl 1 projfile based (pp) aligned, /* Project history file */ 7 7 2 nproj fixed bin (35), /* number of entries */ 7 8 2 version fixed bin, 7 9 2 projfilexx0 (6) bit (36) aligned, 7 10 2 projfiletab (3000), /* in seg limit */ 7 11 3 id char (12) unal, /* project ID */ 7 12 3 title char (52) unal, /* project title */ 7 13 3 inv char (32) unal, /* name of principal investigator */ 7 14 3 inv_addr char (32) unal, /* address */ 7 15 3 sup char (32) unal, /* name of supervisor */ 7 16 3 sup_addr char (32) unal, /* address */ 7 17 3 sup_phone char (16) unal, /* telephone */ 7 18 3 on fixed bin (71), /* date on */ 7 19 3 off fixed bin (71), /* date off */ 7 20 3 disk_psec fixed bin (71), /* project disk page-seconds */ 7 21 3 disk_quota fixed bin (35), /* project disk quota */ 7 22 3 dir_disk_quota fixed bin (35), /* project dir disk quota */ 7 23 3 disk_use fixed bin (35), /* total segment pages used */ 7 24 3 dir_disk_use fixed bin (35), /* total directory pages used */ 7 25 3 misc_charges float bin, /* manuals, etc */ 7 26 3 n_misc fixed bin, /* number of entries */ 7 27 3 processed fixed bin, /* temp for usage-report */ 7 28 3 pad bit (36) aligned; /* out to even number of words */ 7 29 7 30 dcl loph int static fixed bin (17) options (constant) init (8), /* lth of projfile header */ 7 31 lope int static fixed bin (17) options (constant) init (66); /* lth of projflile entry */ 7 32 7 33 dcl PROJFILE_VERSION fixed bin init (3) int static options (constant); 7 34 7 35 /* END INCLUDE FILE ... projfile.incl.pl1 */ 1260 8 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 8 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 8 3 /* version number changed to 4, 08/10/78 WOS */ 8 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 8 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 8 6 8 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 8 8 2 version fixed bin, /* version of this structure - must be set, see below */ 8 9 2 switches aligned, /* various bit switch values */ 8 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 8 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 8 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 8 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 8 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 8 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 8 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 8 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 8 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 8 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 8 20 8 21 /* Limit of data defined for version 2 */ 8 22 8 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 8 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 8 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 8 26 /* minimum of 30 seconds required for repeat */ 8 27 /* otherwise, no repeat will occur */ 8 28 /* Limit of data defined for version 4 */ 8 29 8 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 8 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 8 32 8 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 8 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 8 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 8 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 8 37 8 38 /* END INCLUDE FILE query_info.incl.pl1 */ 1261 9 1 /* BEGIN INCLUDE FILE ... sys_admin_data.incl.pl1 */ 9 2 9 3 /* This data base is writeable by all system administrators. 9 4* It resides in the working directory of the system administrators. 9 5* The important item in this data base is "lock", which is used to prevent 9 6* two administrators from modifying the system administration data bases simultaneously. */ 9 7 9 8 /* Modified 1984-12-14 by EJ Sharpe to add default_audit_flags, and remove log_control */ 9 9 9 10 dcl 1 sys_admin_data based (sadp) aligned, 9 11 2 lock bit (36), 9 12 2 locker char (24), /* name of person using table */ 9 13 2 sadxx fixed bin, 9 14 2 time_locked fixed bin (71), 9 15 2 pntno fixed bin, 9 16 2 pnt_entries_to_install bit (1), 9 17 2 smf_entries_to_install bit (1), 9 18 2 pad1 (97) fixed bin, /* was log_control stuff before MR11 */ 9 19 2 user_accounts_office char (64), 9 20 2 user_accounts_addr char (64), 9 21 2 user_accounts_phone char (16), 9 22 2 mailing_banner (3) char (10), /* Used by mailing_page_ */ 9 23 2 default_proj_attributes bit (36), /* Used by new_proj */ 9 24 2 default_proj_ring1 fixed bin, /* .. */ 9 25 2 default_proj_ring2 fixed bin, /* .. */ 9 26 2 default_proj_group char (8), /* .. */ 9 27 2 default_proj_grace fixed bin, /* .. */ 9 28 2 default_audit_flags bit (36) aligned; /* initial set of flags for new_user and edit_proj */ 9 29 9 30 /* END INCLUDE FILE .. sys_admin_data.incl.pl1 */ 1262 10 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 10 2 /* format: style2,^inddcls,idind32 */ 10 3 10 4 declare 1 terminate_file_switches based, 10 5 2 truncate bit (1) unaligned, 10 6 2 set_bc bit (1) unaligned, 10 7 2 terminate bit (1) unaligned, 10 8 2 force_write bit (1) unaligned, 10 9 2 delete bit (1) unaligned; 10 10 10 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 10 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 10 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 10 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 10 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 10 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 10 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 10 18 10 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 1263 11 1 /* Begin include file urfe.incl.pl1 */ 11 2 11 3 declare urfep pointer automatic; 11 4 declare 1 urf_entry aligned based (urfep), 11 5 2 last_name character (32), 11 6 2 first_name character (24), 11 7 2 title character (8), 11 8 2 address character (32), 11 9 2 prog_number character (32), 11 10 2 project character (32), 11 11 2 notes character (32); 11 12 11 13 /* End include file urfe.incl.pl1 */ 1264 1265 /* format: on */ 1266 1267 end new_user; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1540.2 new_user.pl1 >special_ldd>install>MR12.1-1054>new_user.pl1 1255 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1256 2 08/04/87 1140.0 installation_parms.incl.pl1 >spec>install>1056>installation_parms.incl.pl1 2-148 3 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 1257 4 08/04/87 1140.0 line_types.incl.pl1 >spec>install>1056>line_types.incl.pl1 1258 5 10/27/83 2104.2 mail_table_entry.incl.pl1 >ldd>include>mail_table_entry.incl.pl1 1259 6 03/15/85 0953.1 pnt_entry.incl.pl1 >ldd>include>pnt_entry.incl.pl1 1260 7 09/20/84 0925.7 projfile.incl.pl1 >ldd>include>projfile.incl.pl1 1261 8 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 1262 9 01/30/85 1523.9 sys_admin_data.incl.pl1 >ldd>include>sys_admin_data.incl.pl1 1263 10 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 1264 11 11/26/79 1801.5 urf_entry.incl.pl1 >ldd>include>urf_entry.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. Date parameter fixed bin(71,0) dcl 1138 set ref 1133 1141 1142* Has_pw parameter bit(1) unaligned dcl 694 set ref 686 709* 729* ILLEGAL_FOR_UIDS 000056 constant char(4) initial unaligned dcl 1150 ref 1152 Input parameter char dcl 1165 set ref 1162 1167 1168* 1173 MAIL_TABLE_ENTRY_VERSION_1 000060 constant char(8) initial unaligned dcl 5-16 ref 252 415 Name parameter char dcl 1165 set ref 1162 1168* Output parameter char dcl 1165 set ref 1162 1167 1168 1168 1173* PNT_ENTRY_VERSION_2 constant fixed bin(17,0) initial dcl 6-64 ref 193 P_auth_range parameter bit(72) array dcl 887 in procedure "read_authorization_range" set ref 885 890* 894* P_auth_range parameter bit(72) array dcl 853 in procedure "print_authorization_range" set ref 851 857 857 859* 863* 863* Password parameter char(32) dcl 693 set ref 686 707* 726* Prompt parameter char dcl 620 in procedure "read_line" set ref 618 629* Prompt parameter char dcl 1122 in procedure "yes_no" set ref 1121 1124* Prompt parameter char unaligned dcl 692 in procedure "read_password" set ref 686 702* Pword_changed parameter bit(1) unaligned dcl 697 set ref 686 701* 708* 727* R_ACCESS 000452 constant bit(3) initial unaligned dcl 1-11 set ref 562* 568* 575* Short_pw parameter bit(1) unaligned dcl 695 set ref 686 730* TERM_FILE_TERM 000057 constant bit(3) initial unaligned dcl 10-14 set ref 595* 602* 609* Test_dir parameter char unaligned dcl 1183 set ref 1180 1185 1186* 1187* 1188* Thunk parameter char dcl 1149 ref 1148 1152 Uid parameter char dcl 653 ref 651 657 657 Which parameter bit(72) dcl 871 in procedure "read_default_authorization" set ref 869 873* 878* Which parameter bit(72) dcl 837 in procedure "print_default_authorization" set ref 835 840 841* 848* acs_path 13 000630 automatic structure level 2 dcl 129 addr builtin function dcl 149 ref 243 243 248 248 257 257 334 334 340 340 403 403 403 403 408 408 416 416 419 419 491 491 500 500 520 520 630 630 638 638 658 658 753 753 1229 1233 1233 address 20 001307 automatic char(32) level 2 in structure "test_urfe" dcl 655 in procedure "uid_exists" set ref 660* address 20 000470 automatic char(32) level 2 in structure "urfe" dcl 129 in procedure "new_user" set ref 1042* 1055* al 001044 automatic fixed bin(21,0) dcl 129 set ref 307* 309 310* 312 313* 315 468* 469 469 470 470 476 479 480 480 488* 489 490 alias 32 000230 automatic char(8) level 3 in structure "old_pnte" dcl 129 in procedure "new_user" set ref 421 423 423 426 426 alias 32 000110 automatic char(8) level 3 in structure "pnte" dcl 129 in procedure "new_user" set ref 206* 261 262 262 421 422 432 432 736 736* 749* 752 764* alias_allowed 001151 automatic bit(1) dcl 129 set ref 160* 167* 175* 207 280* 285* 291* 362 365* 376 392 alias_pnte 000350 automatic structure level 1 dcl 129 set ref 753 753 answer 002204 automatic char(4) unaligned dcl 1218 set ref 1233* 1236 1236 1241 1241 1241 answer_iocbp 6 002166 automatic pointer initial level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* 1228* answer_iocbp 6 001224 automatic pointer initial level 2 in structure "query_info" dcl 8-7 in procedure "new_user" set ref 8-7* ap 001042 automatic pointer dcl 129 set ref 307* 309 310* 312 313* 315 468* 469 469 470 470 476 479 480 488* 489 490 appropriate_answer_given 002203 automatic bit(1) dcl 1217 set ref 1231* 1232 1238* 1241* arg_given 001152 automatic bit(1) dcl 129 set ref 181* 304* 316* 624 625* argument based char unaligned dcl 129 set ref 309 312 315 469 469 470 470 476 479 480* 489 490 audit 74 000110 automatic bit(36) level 3 dcl 129 set ref 194* 799 800* 803* 814* 822* audit_string 001462 automatic char(256) unaligned dcl 797 set ref 800* 801* auth_string 001704 automatic char(256) unaligned dcl 854 in procedure "print_authorization_range" set ref 859* 861* auth_string 001576 automatic char(256) unaligned dcl 838 in procedure "print_default_authorization" set ref 841* 844 844* 846* bad_pw_line_type 53 000110 automatic fixed bin(17,0) level 3 dcl 129 set ref 547 bad_pw_term_id 52 000110 automatic char(4) level 3 dcl 129 set ref 240* 547* bad_pw_term_type 54 000110 automatic char(32) level 3 dcl 129 set ref 240* 547* cga_items 000222 constant char(47) initial unaligned dcl 357 set ref 362 365* change_items 000236 constant char(54) initial unaligned dcl 355 set ref 360 365* changing 001153 automatic bit(1) dcl 129 set ref 181* 305* 455* 703 736 743 747 770 778 781 799 810 840 857 873 877 890 893 922 996 999 1026 1029 1049 1052 1071 1074 check_password_ 000034 constant entry external dcl 87 ref 713 clean_up 001174 stack reference condition dcl 152 ref 182 300 clock builtin function dcl 149 ref 242 384 1220 1239 code 001271 automatic fixed bin(35,0) dcl 621 in procedure "read_line" set ref 630* 631 637 638* 640 644* code 001306 automatic fixed bin(35,0) dcl 654 in procedure "uid_exists" set ref 658* 659 663 664* 665* 666 666 670 676* 681* code 001422 automatic fixed bin(35,0) dcl 699 in procedure "read_password" set ref 713* 714 code 001146 automatic fixed bin(35,0) dcl 129 in procedure "new_user" set ref 186* 243* 244 245* 248* 249 249* 257* 258 258* 262* 263 263* 307* 308 310* 311 313* 314 323* 334* 335 336* 340* 341 342* 403* 405 405* 408* 410 410* 416* 417 419* 420 420* 423* 424 424* 426* 427 427* 432* 433 433* 437* 456* 457 459* 468* 488* 491* 492 493* 500* 501 502 502* 504 505 505* 520* 521 562* 563 564* 568* 569 571* 575* 576 578* 753* 754 758* 759* 760 760 800* 801 814* 815 816* 822* 823 824* 841* 843 859* 861 878* 879 880* 894* 895 896* 966* 967 968* 1249* com_err_ 000036 constant entry external dcl 88 ref 245 249 258 263 336 342 365 405 410 420 424 427 433 437 472 480 493 502 505 564 571 578 644 676 681 816 824 880 896 968 1249 command_query_ 000040 constant entry external dcl 89 ref 1233 convert_access_audit_flags_$edit_from_string 000044 constant entry external dcl 91 ref 814 convert_access_audit_flags_$from_string 000042 constant entry external dcl 90 ref 822 convert_access_audit_flags_$to_string 000046 constant entry external dcl 92 ref 800 convert_authorization_$from_string 000050 constant entry external dcl 93 ref 878 convert_authorization_$from_string_range 000152 constant entry external dcl 888 ref 894 convert_authorization_$to_string_range_short 000150 constant entry external dcl 855 ref 859 convert_authorization_$to_string_short 000052 constant entry external dcl 94 ref 841 convert_date_to_binary_ 000054 constant entry external dcl 95 ref 966 cp_escape_control 1(02) 002166 automatic bit(2) initial level 3 in structure "qi" packed unaligned dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* cp_escape_control 1(02) 001224 automatic bit(2) initial level 3 in structure "query_info" packed unaligned dcl 8-7 in procedure "new_user" set ref 8-7* cu_$arg_count 000060 constant entry external dcl 97 ref 456 cu_$arg_ptr 000056 constant entry external dcl 96 ref 307 310 313 468 488 date 002146 automatic char(16) unaligned dcl 1139 set ref 1142* 1143 date_time_$format 000062 constant entry external dcl 98 ref 907 1142 default_audit_flags 241 based bit(36) level 2 dcl 9-10 ref 194 default_person_authorization 72 000110 automatic bit(72) level 3 dcl 129 set ref 215* 396* 536* default_project 34 000110 automatic char(16) level 3 in structure "pnte" dcl 129 in procedure "new_user" set ref 254 418 988* 1012* default_project 75 000630 automatic varying char(12) level 2 in structure "mte" dcl 129 in procedure "new_user" set ref 254* 418* dir 13 000630 automatic char(168) level 3 dcl 129 set ref 256* entry 65 000630 automatic char(32) level 3 dcl 129 set ref 256* entry_var 000104 automatic entry variable dcl 125 set ref 189* 326* 462* error_message 001402 automatic char(64) unaligned dcl 698 set ref 713* 716* error_table_$bad_arg 000010 external static fixed bin(35,0) dcl 73 set ref 480* error_table_$bad_index 000012 external static fixed bin(35,0) dcl 74 ref 505 error_table_$checksum_failure 000014 external static fixed bin(35,0) dcl 75 ref 502 error_table_$id_not_found 000016 external static fixed bin(35,0) dcl 76 ref 663 670 error_table_$inconsistent 000020 external static fixed bin(35,0) dcl 77 set ref 472* error_table_$long_record 000022 external static fixed bin(35,0) dcl 78 ref 637 error_table_$moderr 000024 external static fixed bin(35,0) dcl 79 ref 186 323 459 error_table_$no_record 000026 external static fixed bin(35,0) dcl 80 ref 504 explanation 000000 constant char(182) initial unaligned dcl 1215 set ref 1229 1230 explanation_len 14 002166 automatic fixed bin(21,0) initial level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* 1230* explanation_len 14 001224 automatic fixed bin(21,0) initial level 2 in structure "query_info" dcl 8-7 in procedure "new_user" set ref 8-7* explanation_ptr 12 002166 automatic pointer initial level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* 1229* explanation_ptr 12 001224 automatic pointer initial level 2 in structure "query_info" dcl 8-7 in procedure "new_user" set ref 8-7* first_name 10 000470 automatic char(24) level 2 in structure "urfe" dcl 129 in procedure "new_user" set ref 226 227 228* 1062* 1105* 1107 first_name 10 001307 automatic char(24) level 2 in structure "test_urfe" dcl 655 in procedure "uid_exists" set ref 660* flags 40 000110 automatic structure level 3 dcl 129 generate_pw 40(07) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 909 974* has_network_password 40(01) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 222* 386* 909 943* 943 947* 947 has_password 40 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 220* 380* 909 940* 940 i 002040 automatic fixed bin(17,0) dcl 919 in procedure "read_flags" set ref 928* 929 930 931 932 935* 935 939 940 943 947 950 952 954 956 958 962 966 966 974 976 978 978 981* 981 i 002060 automatic fixed bin(17,0) dcl 994 in procedure "read_project" set ref 1003* 1005* i 001217 automatic fixed bin(17,0) dcl 448 in procedure "new_user" set ref 467* 468* 487* 488* i1 002126 automatic fixed bin(17,0) dcl 1069 set ref 1079* 1080 1080 1082 1085* 1086 1090 1090 1098 i2 002127 automatic fixed bin(17,0) dcl 1069 set ref 1075* 1076 1079 1080 1080 1082 1100* 1101 1105 1105 1109 1113 i4 002130 automatic fixed bin(17,0) dcl 1069 set ref 1109* 1110 1113 id 10 based char(12) array level 3 packed unaligned dcl 7-6 ref 1005 index builtin function dcl 149 ref 360 362 930 initial 001147 automatic char(1) unaligned dcl 129 set ref 226 226 1110* 1113* 1114 initiate_file_ 000072 constant entry external dcl 102 ref 562 568 575 installation_parms based structure level 1 dcl 2-33 installation_parms_part_1 based structure level 1 dcl 2-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 2-144 ioa_ 000064 constant entry external dcl 99 ref 196 198 200 202 204 208 210 212 214 216 228 235 525 539 541 545 547 551 553 641 660 667 672 716 723 736 755 761 770 788 801 803 846 848 861 863 909 963 978 988 1008 1011 1019 1042 1062 1087 1093 1096 1102 1107 1114 1128 1168 ioa_$nnl 000066 constant entry external dcl 100 ref 629 842 860 iox_$get_line 000070 constant entry external dcl 101 ref 630 638 iox_$user_input 000032 external static pointer dcl 83 set ref 630* 638* ip 001154 automatic pointer initial dcl 142 set ref 142* 299* 575* 605 607 608* 1222 j 002041 automatic fixed bin(17,0) dcl 919 set ref 930* 931 931* 936* 936 939 940 943 947 950 952 954 956 958 962 966 966 974 976 978 978 981 last_name 000470 automatic char(32) level 2 in structure "urfe" dcl 129 in procedure "new_user" set ref 224 225* 226 227 228* 1062* 1090* 1092 1096 last_name 001307 automatic char(32) level 2 in structure "test_urfe" dcl 655 in procedure "uid_exists" set ref 660* length builtin function dcl 149 ref 630 630 638 638 657 929 931 1007 1167 1167 1168 1168 1230 line 001046 automatic char(256) dcl 129 set ref 232 232 306* 315* 330* 332 630 630 630 630 632* 633 638 638 638 638 746 746 746 747 752 753 755* 759 761* 764* 781 781 785 785* 786* 788 788 791 813 813 814 822 877 877 878 893 893 894 926 926 929 930 931 932 939 940 943 947 950 952 954 956 958 962 966 966 974 976 978 978 999 999 1005 1007 1012 1029 1031 1031* 1032* 1052 1055* 1074 1075 1079 1080 1080 1082* 1085 1090 1090 1098* 1100 1105 1105 1109 1113 1125 1125 1126 1126 line_types 000062 constant char(16) initial array unaligned dcl 4-54 set ref 547* linkage_error 001210 stack reference condition dcl 154 ref 185 190 322 327 458 463 literal_sw 1(05) 001224 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 8-7 in procedure "new_user" set ref 8-7* literal_sw 1(05) 002166 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* lock 40(03) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 909 952* lock_time 002026 automatic char(14) unaligned dcl 905 set ref 907* 909* loud 001150 automatic bit(1) dcl 129 set ref 159* 167* 174* 196 198 200 202 204 208 210 212 214 216 281* 285* 290* mail_table_$get 000076 constant entry external dcl 104 ref 665 759 mail_table_entry based structure level 1 dcl 5-6 mail_table_priv_$add 000100 constant entry external dcl 105 ref 257 mail_table_priv_$add_alias 000102 constant entry external dcl 106 ref 262 426 432 mail_table_priv_$delete_alias 000104 constant entry external dcl 107 ref 423 mail_table_priv_$get 000106 constant entry external dcl 108 ref 416 mail_table_priv_$test 000112 constant entry external dcl 110 ref 1188 mail_table_priv_$update 000110 constant entry external dcl 109 ref 419 mailing_address 101 000630 automatic varying char(256) level 2 dcl 129 set ref 255* min builtin function dcl 149 ref 657 mlsys_et_$ambiguous_address 000030 external static fixed bin(35,0) dcl 81 ref 666 760 mode_value 002042 automatic bit(1) dcl 920 set ref 934* 938* 940 943 947 950 952 954 956 959 972 974 976 mte 000630 automatic structure level 1 dcl 129 set ref 257 257 416 416 419 419 must_change 40(05) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 909 956* n_bad_pw 42 000110 automatic fixed bin(17,0) level 3 dcl 129 set ref 547* n_good_pw 41 000110 automatic fixed bin(17,0) level 3 dcl 129 set ref 539 545* name 2 000630 automatic varying char(32) level 2 dcl 129 set ref 253* nargs 001216 automatic fixed bin(17,0) dcl 448 set ref 456* 467 487 nelemt 001270 automatic fixed bin(21,0) dcl 621 set ref 630* 632 638* network_password 12 000110 automatic char(32) level 3 dcl 129 set ref 222* 386* new_user_stop 001202 stack reference condition dcl 153 ref 184 320 633 no_password_info 001223 automatic bit(1) dcl 448 set ref 466* 476* 538 nochange 40(04) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 909* 954* notes 50 000470 automatic char(32) level 2 dcl 129 set ref 1019* 1032* nproj based fixed bin(35,0) level 2 dcl 7-6 ref 1003 null builtin function dcl 149 ref 62 63 142 297 298 299 8-7 8-7 8-7 591 594 598 601 605 608 665 665 759 759 1003 1011 1214 1214 1214 1227 1228 old_pnte 000230 automatic structure level 1 dcl 129 set ref 334 334 347 old_urfe 000550 automatic structure level 1 dcl 129 set ref 340 340 346 403 403 operator 40(09) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 909 976* p1 001376 automatic char(8) unaligned dcl 696 set ref 702* 703 713* 722 726 728* p2 001400 automatic char(8) unaligned dcl 696 set ref 721* 722 728* padding 1(07) 002166 automatic bit(29) initial level 3 in structure "qi" packed unaligned dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* padding 1(07) 001224 automatic bit(29) initial level 3 in structure "query_info" packed unaligned dcl 8-7 in procedure "new_user" set ref 8-7* part_1 based structure level 2 dcl 2-33 password 2 000110 automatic char(32) level 3 dcl 129 set ref 220* 380* password_expiration_interval 2043 based fixed bin(17,0) level 3 dcl 2-33 ref 1222 password_info_set 001222 automatic bit(1) dcl 448 set ref 465* 471 477* password_timelock 64 000110 automatic fixed bin(71,0) level 3 dcl 129 set ref 907* 959* 966* pathname_ 000114 constant entry external dcl 111 ref 564 564 571 571 578 578 person_authorization 66 000110 automatic bit(72) array level 3 dcl 129 set ref 213* 394* 535* pnt_admin_gate_$add_entry 000116 constant entry external dcl 112 ref 189 pnt_admin_gate_$get_entry 000120 constant entry external dcl 113 ref 326 462 pnt_entry based structure level 1 dcl 6-22 pnt_manager_$add_entry 000126 constant entry external dcl 116 ref 243 pnt_manager_$get_abs_entry 000122 constant entry external dcl 114 ref 500 pnt_manager_$get_entry 000124 constant entry external dcl 115 ref 334 491 753 pnt_manager_$test 000130 constant entry external dcl 117 ref 1186 pnt_manager_$update_entry 000132 constant entry external dcl 118 ref 408 pnte 000110 automatic structure level 1 dcl 129 set ref 191* 243 243 347* 408 408 491 491 500 500 pp 000100 automatic pointer initial dcl 62 set ref 62* 297* 562* 591 593 594* 1003 1003 1005 1011 print_all 001221 automatic bit(1) dcl 448 set ref 454* 484* 487 print_urf 001220 automatic bit(1) dcl 448 set ref 453* 469* 519 private 1 000110 automatic structure level 2 dcl 129 prog_number 30 000470 automatic char(32) level 2 dcl 129 set ref 770 770* 786* 791* project 40 000470 automatic char(32) level 2 dcl 129 set ref 1012* projfile based structure level 1 dcl 7-6 projfiletab 10 based structure array level 2 dcl 7-6 prompt_after_explanation 1(06) 001224 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 8-7 in procedure "new_user" set ref 8-7* prompt_after_explanation 1(06) 002166 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* 1226* public 22 000350 automatic structure level 2 in structure "alias_pnte" dcl 129 in procedure "new_user" public 22 000230 automatic structure level 2 in structure "old_pnte" dcl 129 in procedure "new_user" public 22 000110 automatic structure level 2 in structure "pnte" dcl 129 in procedure "new_user" purf 001252 automatic bit(1) dcl 517 set ref 521* 523* 526 pw_flags 1 000110 automatic structure level 3 dcl 129 pw_time_lock 40(06) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 909* 972* qi 002166 automatic structure level 1 dcl 1214 set ref 1224* 1233 1233 query_code 3 001224 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 8-7 in procedure "new_user" set ref 8-7* query_code 3 002166 automatic fixed bin(35,0) initial level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* query_info 001224 automatic structure level 1 dcl 8-7 query_info_version_6 constant fixed bin(17,0) initial dcl 8-36 ref 1225 question_iocbp 4 001224 automatic pointer initial level 2 in structure "query_info" dcl 8-7 in procedure "new_user" set ref 8-7* question_iocbp 4 002166 automatic pointer initial level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* 1227* rcp_init_flags based structure level 1 packed unaligned dcl 3-8 read_password_ 000134 constant entry external dcl 119 ref 702 721 rec 001045 automatic fixed bin(35,0) dcl 129 set ref 499* 500* 502* repeat_time 10 001224 automatic fixed bin(71,0) initial level 2 in structure "query_info" dcl 8-7 in procedure "new_user" set ref 8-7* repeat_time 10 002166 automatic fixed bin(71,0) initial level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* rtrim builtin function dcl 149 ref 232 253 254 262 262 262 262 332 360 362 416 416 418 423 423 426 426 426 426 432 432 432 432 665 665 791 1007 1012 1152 1167 sadir 000000 internal static char(168) initial unaligned dcl 64 set ref 562* 564* 564* 568* 571* 571* 1185* sadp 000102 automatic pointer initial dcl 63 set ref 63* 194 298* 568* 598 600 601* scramble_ 000136 constant entry external dcl 120 ref 726 search builtin function dcl 149 ref 1075 1079 1085 1109 1152 set_network_password 001156 automatic bit(1) initial unaligned dcl 143 set ref 143* 386* 408* set_password 001157 automatic bit(1) initial unaligned dcl 144 set ref 144* 380* 384 408* short_network_pw 1(01) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 222* 386* short_pw 1 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 220* 380* status_code 2 002166 automatic fixed bin(35,0) initial level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* status_code 2 001224 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 8-7 in procedure "new_user" set ref 8-7* substr builtin function dcl 149 set ref 224 226 227 479 489 632* 633 657 930 932 939 940 943 947 950 952 954 956 958 962 966 966 974 976 978 978 1079 1080 1080 1082* 1090 1090 1096 1098* 1105 1105 1107 1109 1113 suppress_name_sw 1(01) 001224 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 8-7 in procedure "new_user" set ref 8-7* suppress_name_sw 1(01) 002166 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* suppress_spacing 1(04) 001224 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 8-7 in procedure "new_user" set ref 8-7* suppress_spacing 1(04) 002166 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* switches 1 001224 automatic structure level 2 in structure "query_info" dcl 8-7 in procedure "new_user" switches 1 002166 automatic structure level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" sys_admin_data based structure level 1 dcl 9-10 sysdir 000254 constant char(168) initial unaligned dcl 68 set ref 575* 578* 578* terminate_file_ 000074 constant entry external dcl 103 ref 595 602 609 test_urfe 001307 automatic structure level 1 dcl 655 set ref 658 658 time_last_bad_pw 50 000110 automatic fixed bin(71,0) level 3 dcl 129 set ref 547* 547* time_last_good_pw 46 000110 automatic fixed bin(71,0) level 3 dcl 129 set ref 541* 541* 545* 545* time_pw_changed 44 000110 automatic fixed bin(71,0) level 3 dcl 129 set ref 384* 551 551* 551* title 16 000470 automatic char(8) level 2 dcl 129 set ref 1062 1062* 1076* 1080* tptr 000100 automatic pointer dcl 589 set ref 593* 595* 600* 602* 607* 609* trap 40(02) 000110 automatic bit(1) level 4 packed unaligned dcl 129 set ref 909 950* uid 001032 automatic char(32) dcl 129 set ref 232* 233* 235* 239 243 248 253 262 262 306* 309* 329 332* 334 336* 339* 340 342* 403 416 416 426 426 432 432 490* 491 493* 657* 658 660* 665 665 667* 671* 672* unspec builtin function dcl 149 set ref 191* 1224* urf_entry based structure level 1 dcl 11-4 urf_manager_$add_entry 000144 constant entry external dcl 123 ref 248 urf_manager_$get_entry 000142 constant entry external dcl 122 ref 340 520 658 urf_manager_$test 000140 constant entry external dcl 121 ref 1187 urf_manager_$update_entry 000146 constant entry external dcl 124 ref 403 urfe 000470 automatic structure level 1 dcl 129 set ref 248 248 346* 403 403 520 520 user_id 22 000110 automatic char(32) level 3 in structure "pnte" dcl 129 in procedure "new_user" set ref 239* 520 525* user_id 22 000230 automatic char(32) level 3 in structure "old_pnte" dcl 129 in procedure "new_user" set ref 339 user_id 22 000350 automatic char(32) level 3 in structure "alias_pnte" dcl 129 in procedure "new_user" set ref 755* user_validated_time 76 000110 automatic fixed bin(71,0) level 3 dcl 129 set ref 242* 553* 553* 1220* 1233* 1233* 1239* verify builtin function dcl 149 ref 788 1096 1100 1107 1114 version 002166 automatic fixed bin(17,0) level 2 in structure "qi" dcl 1214 in procedure "REVALIDATE_USER" set ref 1225* version 000110 automatic fixed bin(17,0) level 2 in structure "pnte" dcl 129 in procedure "new_user" set ref 193* version 000630 automatic char(8) level 2 in structure "mte" dcl 129 in procedure "new_user" set ref 252* 415* what 001160 automatic char(12) unaligned dcl 145 set ref 306* 312* 349 360 362 365* 369 369 372 372 373 373 374 374 375 375 376 376 378 378 386 386 386 393 393 394 394 396 396 398 398 399 399 414 414 414 414 1220 whoami 001163 automatic char(32) unaligned dcl 146 set ref 179* 245* 249* 258* 263* 293* 336* 342* 365* 405* 410* 420* 424* 427* 433* 437* 452* 472* 480* 493* 502* 505* 564* 571* 578* 644* 676* 681* 816* 824* 880* 896* 968* 1233* 1249* yes_or_no_sw 1 001224 automatic bit(1) initial level 3 in structure "query_info" packed unaligned dcl 8-7 in procedure "new_user" set ref 8-7* yes_or_no_sw 1 002166 automatic bit(1) initial level 3 in structure "qi" packed unaligned dcl 1214 in procedure "REVALIDATE_USER" set ref 1214* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Automatic_authentication internal static fixed bin(17,0) initial dcl 3-16 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-33 E_ACCESS internal static bit(3) initial unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 LINE_1050 internal static fixed bin(17,0) initial dcl 4-22 LINE_2741 internal static fixed bin(17,0) initial dcl 4-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 4-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 4-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 4-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 4-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 4-22 LINE_BSC internal static fixed bin(17,0) initial dcl 4-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 4-22 LINE_DSA internal static fixed bin(17,0) initial dcl 4-22 LINE_ETX internal static fixed bin(17,0) initial dcl 4-22 LINE_G115 internal static fixed bin(17,0) initial dcl 4-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 4-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 4-22 LINE_MC internal static fixed bin(17,0) initial dcl 4-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 4-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 4-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 4-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 4-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 4-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 4-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 4-22 LINE_VIP internal static fixed bin(17,0) initial dcl 4-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 4-22 MAIL_TABLE_ALIASES_VERSION_1 internal static char(8) initial unaligned dcl 5-51 MAIL_TABLE_RAW_ENTRY_VERSION_1 internal static char(8) initial unaligned dcl 5-39 M_ACCESS internal static bit(3) initial 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 3-16 N_ACCESS internal static bit(3) initial unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 No_authentication internal static fixed bin(17,0) initial dcl 3-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 3-16 PROJFILE_VERSION internal static fixed bin(17,0) initial dcl 7-33 REW_ACCESS internal static bit(3) initial unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial 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 unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial 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 unaligned dcl 10-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 10-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 10-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 10-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 10-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 10-15 W_ACCESS internal static bit(3) initial unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 authentication_level_names internal static char(12) initial array unaligned dcl 3-21 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 2-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 2-38 lope internal static fixed bin(17,0) initial dcl 7-30 loph internal static fixed bin(17,0) initial dcl 7-30 mail_table_aliases based structure level 1 dcl 5-42 mail_table_aliases_extent automatic fixed bin(17,0) dcl 5-49 mail_table_aliases_ptr automatic pointer dcl 5-47 mail_table_entry_ptr automatic pointer dcl 5-15 mail_table_raw_entry based structure level 1 dcl 5-19 mail_table_raw_entry_ptr automatic pointer dcl 5-37 max_line_type internal static fixed bin(17,0) initial dcl 4-48 n_sync_line_types internal static fixed bin(17,0) initial dcl 4-50 pntep automatic pointer dcl 6-21 query_info_version_3 internal static fixed bin(17,0) initial dcl 8-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 8-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 8-35 rifp automatic pointer dcl 3-6 sync_line_type internal static fixed bin(17,0) initial array dcl 4-52 terminate_file_switches based structure level 1 packed unaligned dcl 10-4 urfep automatic pointer dcl 11-3 NAMES DECLARED BY EXPLICIT CONTEXT. NO_ACCESS_TO_GATE 006177 constant label dcl 1249 ref 187 324 460 RETURN_TO_CALLER 003471 constant label dcl 270 ref 320 367 440 457 565 572 579 645 677 682 REVALIDATE_USER 014257 constant entry internal dcl 1191 ref 399 add_user 002355 constant label dcl 191 ref 267 ask_uid 002735 constant label dcl 228 ref 224 cg 003512 constant entry external dcl 283 cga 003524 constant entry external dcl 288 change 003477 constant entry external dcl 278 change_common 003535 constant label dcl 293 ref 286 change_item_ok 004270 constant label dcl 369 ref 360 362 change_loop 011031 constant label dcl 811 ref 817 check_legal 014073 constant entry internal dcl 1148 ref 671 cleaner 007126 constant entry internal dcl 584 ref 182 270 300 common 002256 constant label dcl 179 set ref 161 168 copy_and_check_length 014144 constant entry internal dcl 1162 ref 764 786 1032 1055 1080 1090 1105 dt 014010 constant entry internal dcl 1133 ref 541 541 545 545 547 547 551 551 553 553 1233 1233 good_project 012720 constant label dcl 1012 ref 1005 got_uid 003014 constant label dcl 235 ref 225 226 227 initialize 006536 constant entry internal dcl 556 ref 183 303 new_user 002220 constant entry external dcl 36 new_user_test 006113 constant entry external dcl 1180 nu 002233 constant entry external dcl 165 nua 002245 constant entry external dcl 172 print_address 013057 constant entry internal dcl 1041 ref 528 1049 print_alias 010242 constant entry internal dcl 735 ref 533 743 print_audit 010730 constant entry internal dcl 796 ref 537 811 print_authorization_range 011347 constant entry internal dcl 851 ref 535 890 print_default_authorization 011215 constant entry internal dcl 835 ref 536 873 print_flags 011731 constant entry internal dcl 904 ref 534 922 print_it 006227 constant entry internal dcl 512 ref 496 501 print_name 013160 constant entry internal dcl 1061 ref 527 1071 print_notes 012745 constant entry internal dcl 1018 ref 530 1026 print_pnt 005407 constant entry external dcl 442 print_prog_number 010534 constant entry internal dcl 769 ref 529 778 print_project 012550 constant entry internal dcl 987 ref 532 996 read_address 013104 constant entry internal dcl 1047 ref 199 372 read_alias 010274 constant entry internal dcl 742 ref 209 376 read_alias_again 010300 constant label dcl 744 ref 756 762 764 read_audit 011026 constant entry internal dcl 808 ref 217 398 read_authorization_range 011620 constant entry internal dcl 885 ref 213 394 read_cg_uid 003762 constant label dcl 330 ref 337 343 read_default_authorization 011507 constant entry internal dcl 869 ref 215 396 read_flags 012116 constant entry internal dcl 914 ref 211 393 read_it 011130 constant label dcl 821 in procedure "read_audit" ref 825 read_it 012772 constant label dcl 1026 in procedure "read_notes" ref 1032 read_it 013105 constant label dcl 1049 in procedure "read_address" ref 1052 1055 read_it 013732 constant label dcl 1124 in procedure "yes_no" set ref 1129 read_it 013224 constant label dcl 1071 in procedure "read_name" ref 1074 1080 1088 1090 1094 1103 1105 read_it 011622 constant label dcl 890 in procedure "read_authorization_range" ref 897 read_it 011511 constant label dcl 873 in procedure "read_default_authorization" ref 881 read_it 007310 constant label dcl 629 in procedure "read_line" ref 642 read_it 012576 constant label dcl 996 in procedure "read_project" ref 999 1009 read_it 010570 constant label dcl 778 in procedure "read_prog_number" ref 786 read_line 007273 constant entry internal dcl 618 ref 230 331 744 780 812 821 876 892 925 998 1028 1051 1073 1124 read_name 013223 constant entry internal dcl 1068 ref 197 369 read_notes 012771 constant entry internal dcl 1024 ref 203 374 read_password 010012 constant entry internal dcl 686 ref 220 222 380 386 read_prog_number 010567 constant entry internal dcl 776 ref 201 373 read_project 012575 constant entry internal dcl 993 ref 205 375 read_them 012117 constant label dcl 922 in procedure "read_flags" ref 964 969 979 read_them 010030 constant label dcl 702 in procedure "read_password" ref 717 724 read_uid 002761 constant label dcl 230 ref 232 233 237 stop_given 003460 constant label dcl 267 ref 184 246 uid_exists 007464 constant entry internal dcl 651 ref 225 226 227 233 yes_no 013721 constant entry internal dcl 1121 ref 237 267 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 17206 17434 16310 17362 Length 20306 16310 154 635 676 52 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME new_user 2622 external procedure is an external procedure. on unit on line 182 64 on unit on unit on line 184 64 on unit on unit on line 185 64 on unit on unit on line 300 64 on unit on unit on line 320 64 on unit on unit on line 322 64 on unit on unit on line 458 64 on unit print_it internal procedure shares stack frame of external procedure new_user. initialize internal procedure shares stack frame of external procedure new_user. cleaner 86 internal procedure is called by several nonquick procedures. read_line internal procedure shares stack frame of external procedure new_user. uid_exists internal procedure shares stack frame of external procedure new_user. read_password internal procedure shares stack frame of external procedure new_user. print_alias internal procedure shares stack frame of external procedure new_user. read_alias internal procedure shares stack frame of external procedure new_user. print_prog_number internal procedure shares stack frame of external procedure new_user. read_prog_number internal procedure shares stack frame of external procedure new_user. print_audit internal procedure shares stack frame of external procedure new_user. read_audit internal procedure shares stack frame of external procedure new_user. print_default_authorization internal procedure shares stack frame of external procedure new_user. print_authorization_range internal procedure shares stack frame of external procedure new_user. read_default_authorization internal procedure shares stack frame of external procedure new_user. read_authorization_range internal procedure shares stack frame of external procedure new_user. print_flags internal procedure shares stack frame of external procedure new_user. read_flags internal procedure shares stack frame of external procedure new_user. print_project internal procedure shares stack frame of external procedure new_user. read_project internal procedure shares stack frame of external procedure new_user. print_notes internal procedure shares stack frame of external procedure new_user. read_notes internal procedure shares stack frame of external procedure new_user. print_address internal procedure shares stack frame of external procedure new_user. read_address internal procedure shares stack frame of external procedure new_user. print_name internal procedure shares stack frame of external procedure new_user. read_name internal procedure shares stack frame of external procedure new_user. yes_no internal procedure shares stack frame of external procedure new_user. dt internal procedure shares stack frame of external procedure new_user. check_legal internal procedure shares stack frame of external procedure new_user. copy_and_check_length 98 internal procedure is called during a stack extension. REVALIDATE_USER internal procedure shares stack frame of external procedure new_user. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000000 sadir new_user STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cleaner 000100 tptr cleaner new_user 000100 pp new_user 000102 sadp new_user 000104 entry_var new_user 000110 pnte new_user 000230 old_pnte new_user 000350 alias_pnte new_user 000470 urfe new_user 000550 old_urfe new_user 000630 mte new_user 001032 uid new_user 001042 ap new_user 001044 al new_user 001045 rec new_user 001046 line new_user 001146 code new_user 001147 initial new_user 001150 loud new_user 001151 alias_allowed new_user 001152 arg_given new_user 001153 changing new_user 001154 ip new_user 001156 set_network_password new_user 001157 set_password new_user 001160 what new_user 001163 whoami new_user 001216 nargs new_user 001217 i new_user 001220 print_urf new_user 001221 print_all new_user 001222 password_info_set new_user 001223 no_password_info new_user 001224 query_info new_user 001252 purf print_it 001270 nelemt read_line 001271 code read_line 001306 code uid_exists 001307 test_urfe uid_exists 001376 p1 read_password 001400 p2 read_password 001402 error_message read_password 001422 code read_password 001462 audit_string print_audit 001576 auth_string print_default_authorization 001704 auth_string print_authorization_range 002026 lock_time print_flags 002040 i read_flags 002041 j read_flags 002042 mode_value read_flags 002060 i read_project 002126 i1 read_name 002127 i2 read_name 002130 i4 read_name 002146 date dt 002166 qi REVALIDATE_USER 002203 appropriate_answer_given REVALIDATE_USER 002204 answer REVALIDATE_USER THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. 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 return_mac tra_ext_1 signal_op enable_op shorten_stack set_chars_eis index_chars_eis ss_ext_entry ss_ext_entry_desc ss_int_entry ss_int_entry_desc clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_password_ com_err_ command_query_ convert_access_audit_flags_$edit_from_string convert_access_audit_flags_$from_string convert_access_audit_flags_$to_string convert_authorization_$from_string convert_authorization_$from_string_range convert_authorization_$to_string_range_short convert_authorization_$to_string_short convert_date_to_binary_ cu_$arg_count cu_$arg_ptr date_time_$format initiate_file_ ioa_ ioa_$nnl iox_$get_line mail_table_$get mail_table_priv_$add mail_table_priv_$add_alias mail_table_priv_$delete_alias mail_table_priv_$get mail_table_priv_$test mail_table_priv_$update pathname_ pnt_admin_gate_$add_entry pnt_admin_gate_$get_entry pnt_manager_$add_entry pnt_manager_$get_abs_entry pnt_manager_$get_entry pnt_manager_$test pnt_manager_$update_entry read_password_ scramble_ terminate_file_ urf_manager_$add_entry urf_manager_$get_entry urf_manager_$test urf_manager_$update_entry THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_index error_table_$checksum_failure error_table_$id_not_found error_table_$inconsistent error_table_$long_record error_table_$moderr error_table_$no_record iox_$user_input mlsys_et_$ambiguous_address LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 62 002160 63 002162 142 002163 143 002164 144 002165 8 7 002166 36 002217 159 002226 160 002230 161 002231 165 002232 167 002241 168 002243 172 002244 174 002253 175 002254 179 002256 181 002261 182 002263 183 002305 184 002306 185 002325 186 002341 187 002344 189 002347 190 002354 191 002355 193 002360 194 002362 196 002365 197 002403 198 002404 199 002422 200 002423 201 002441 202 002442 203 002463 204 002464 205 002502 206 002503 207 002505 208 002510 209 002531 210 002532 211 002550 212 002551 213 002567 214 002571 215 002607 216 002611 217 002632 220 002633 222 002644 224 002657 225 002663 226 002671 227 002721 228 002735 230 002761 232 002766 232 002772 233 003006 235 003014 237 003034 239 003047 240 003052 242 003057 243 003061 244 003107 245 003111 246 003140 248 003141 249 003167 252 003220 253 003222 254 003242 255 003262 256 003263 257 003271 258 003310 261 003336 262 003342 263 003431 267 003460 270 003471 274 003475 278 003476 280 003505 281 003506 283 003510 285 003520 286 003522 288 003523 290 003532 291 003533 293 003535 297 003540 298 003542 299 003543 300 003544 303 003566 304 003567 305 003570 306 003572 307 003603 308 003622 309 003624 310 003631 311 003650 312 003652 313 003657 314 003676 315 003700 316 003705 320 003707 322 003726 323 003742 324 003745 326 003750 327 003755 329 003756 330 003762 331 003765 332 003774 334 004010 335 004036 336 004040 337 004070 339 004071 340 004074 341 004122 342 004124 343 004154 346 004155 347 004160 349 004163 360 004167 362 004210 365 004222 367 004267 369 004270 372 004301 373 004312 374 004323 375 004334 376 004345 378 004361 380 004371 384 004376 386 004403 392 004426 393 004431 394 004442 396 004454 398 004466 399 004477 403 004510 405 004543 408 004574 410 004613 414 004641 415 004661 416 004663 417 004726 418 004731 419 004751 420 004770 421 005021 422 005024 423 005030 424 005073 426 005123 427 005212 430 005241 432 005242 433 005331 436 005360 437 005361 440 005405 442 005406 452 005415 453 005420 454 005422 455 005423 456 005424 457 005435 458 005437 459 005453 460 005456 462 005461 463 005466 465 005467 466 005470 467 005471 468 005501 469 005516 470 005532 471 005542 472 005544 474 005570 476 005571 477 005600 478 005602 479 005603 480 005607 482 005641 484 005642 485 005643 487 005645 488 005657 489 005674 490 005701 491 005705 492 005733 493 005735 494 005765 496 005766 498 005767 499 005772 500 005774 501 006011 502 006015 504 006047 505 006051 507 006101 509 006102 510 006107 1180 006110 1185 006127 1186 006136 1187 006150 1188 006163 1189 006176 1249 006177 1251 006226 512 006227 519 006230 520 006232 521 006260 522 006263 523 006264 525 006265 526 006310 527 006312 528 006313 529 006314 530 006315 532 006316 533 006317 534 006320 535 006321 536 006323 537 006325 538 006326 539 006330 541 006352 543 006374 545 006375 547 006423 551 006467 553 006513 554 006535 556 006536 562 006537 563 006600 564 006602 565 006655 568 006656 569 006723 571 006725 572 007004 575 007005 576 007046 578 007050 579 007123 581 007124 584 007125 591 007133 593 007140 594 007142 595 007144 598 007172 600 007177 601 007201 602 007203 605 007232 607 007237 608 007241 609 007243 611 007272 618 007273 624 007304 625 007306 626 007307 629 007310 630 007323 631 007346 632 007350 633 007361 634 007367 637 007370 638 007374 639 007416 640 007417 641 007421 642 007437 644 007440 645 007463 651 007464 657 007475 658 007505 659 007533 660 007535 661 007567 663 007573 664 007576 665 007577 666 007645 667 007653 668 007673 670 007677 671 007701 672 007712 673 007732 676 007736 677 007761 681 007762 682 010005 684 010006 686 010012 701 010023 702 010030 703 010047 707 010057 708 010064 709 010070 710 010074 713 010075 714 010116 716 010120 717 010137 721 010140 722 010163 723 010166 724 010202 726 010203 727 010222 728 010226 729 010231 730 010235 731 010241 735 010242 736 010243 738 010273 742 010274 743 010275 744 010300 746 010307 747 010324 749 010332 750 010334 752 010335 753 010342 754 010370 755 010372 756 010416 758 010417 759 010420 760 010454 761 010461 762 010501 764 010502 765 010533 769 010534 770 010535 772 010566 776 010567 778 010570 780 010573 781 010604 784 010617 785 010620 786 010627 788 010661 791 010713 792 010727 796 010730 799 010731 800 010736 801 010757 803 011005 804 011025 808 011026 810 011027 811 011031 812 011032 813 011043 814 011054 815 011100 816 011102 817 011126 819 011127 821 011130 822 011141 823 011165 824 011167 825 011213 829 011214 835 011215 840 011217 841 011227 842 011250 843 011272 844 011274 846 011303 847 011322 848 011323 849 011346 851 011347 857 011351 859 011365 860 011406 861 011433 863 011455 865 011506 869 011507 873 011511 876 011522 877 011530 878 011543 879 011570 880 011572 881 011616 883 011617 885 011620 890 011622 892 011633 893 011641 894 011654 895 011701 896 011703 897 011727 899 011730 904 011731 907 011732 909 011772 912 012115 914 012116 922 012117 925 012122 926 012132 928 012143 929 012145 930 012151 931 012166 932 012173 934 012177 935 012200 936 012201 937 012203 938 012204 939 012206 940 012215 943 012230 947 012245 950 012262 952 012274 954 012306 956 012321 958 012333 959 012342 962 012347 963 012356 964 012372 966 012373 967 012426 968 012431 969 012457 972 012460 973 012465 974 012466 976 012500 978 012512 979 012540 981 012542 982 012546 983 012547 987 012550 988 012551 989 012574 993 012575 996 012576 998 012601 999 012610 1003 012623 1005 012637 1006 012646 1007 012650 1008 012663 1009 012677 1011 012700 1012 012720 1014 012743 1018 012745 1019 012746 1020 012770 1024 012771 1026 012772 1028 012775 1029 013004 1031 013013 1032 013022 1034 013056 1041 013057 1042 013060 1043 013103 1047 013104 1049 013105 1051 013110 1052 013117 1055 013126 1057 013157 1061 013160 1062 013161 1064 013222 1068 013223 1071 013224 1073 013227 1074 013240 1075 013247 1076 013261 1079 013265 1080 013302 1082 013343 1085 013351 1086 013363 1087 013364 1088 013400 1090 013401 1092 013445 1093 013452 1094 013466 1096 013467 1098 013513 1100 013517 1101 013531 1102 013532 1103 013546 1105 013547 1107 013616 1109 013643 1110 013663 1113 013667 1114 013674 1117 013720 1121 013721 1124 013732 1125 013744 1126 013760 1128 013773 1129 014007 1133 014010 1141 014012 1142 014021 1143 014062 1148 014073 1152 014104 1154 014136 1162 014143 1167 014171 1168 014207 1170 014236 1173 014244 1174 014252 1191 014257 1214 014260 1220 014310 1222 014317 1224 014322 1225 014325 1226 014327 1227 014331 1228 014333 1229 014334 1230 014336 1231 014340 1232 014341 1233 014344 1236 014404 1238 014416 1239 014420 1240 014422 1241 014423 1243 014444 1245 014445 ----------------------------------------------------------- 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