COMPILATION LISTING OF SEGMENT new_proj Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 03/15/89 0832.8 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 16 /****^ HISTORY COMMENTS: 17* 1) change(86-09-25,Parisek), approve(87-06-17,MCR7570), 18* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 19* Make reusing a previously deleted project id optional by querying 20* administrator for reuse. This enhances the security feature of reusing old 21* project id's if this is not desirable. 22* END HISTORY COMMENTS */ 23 24 25 26 /* format: style2 */ 27 new_proj: 28 procedure options (variable, separate_static); 29 30 /* NEW_PROJ - This program is used by User Accounts to add projects. 31* 32* THVV 33* 34* Modified by T. Casey, May 1978 to zero entire Nsate, as part of adding pdir_quota to sate. 35* Modified by J. Bakal, July 1979 to add multiple rate structures. 36* Modified by C. Hornig, March 1980, to check length of project name. 37* Modified by J. N. R. Barnecut, April 1980 to default cutoff to midnight of day specified. 38* Modified by E. N. Kittlitz, March 1982, to eliminate proj_admin_seg. 39* Modified by E. N. Kittlitz, April 1982, to allow registration of anonymous users on projects 40* Modified by E. N. Kittlitz, July 1982, call the pmf Project.pmf with the added name Project 41* Modified 84-07-03 by BIM to remove added name on pmf, and query for dir 42* quota, target LV, target access class, and target audit. 43* Modified 1984-08-24 by E. Swenson for Version 2 PNT calling sequences. 44* Modified 1984-09-13 by BIM to recognize when a request for a project 45* logical volume is not in fact a request for a master dir. 46* Modified 1984-09-14 by BIM for mgtp passed to edit_proj_. 47* Modified 1984-10-10 by E. Swenson to special case the ACLs on >udd>SysAdmin 48* and on >udd>SysDaemon when creating these projects during a cold boot. 49* Modified 1984-12-14 by EJ Sharpe to set project.audit to sys_admin_data 50*default. 51* Modified 1984-12-27 by Keith Loepere for setting dir_quota at append. 52* Modified 1985-01-02 by EJ Sharpe to create project dirs with owner and account if it is a master dir 53**/ 54 55 dcl dir_priv_code fixed bin (35) init (-1); 56 dcl dn char (168); 57 dcl en char (32); 58 dcl delegated bit (1) aligned; 59 dcl (i, j, k) fixed bin; 60 dcl bitct fixed bin (24); 61 dcl lvid bit (36) aligned; 62 dcl mylock bit (1) init ("0"b); 63 dcl ap ptr; 64 dcl al fixed bin (21); 65 dcl bchr char (al) unaligned based (ap); 66 dcl ec fixed bin (35); 67 dcl access bit (36) aligned; 68 dcl pubbit bit (1) aligned; 69 dcl TESTING bit (1) aligned init ("0"b); 70 dcl arg_count fixed bin; 71 dcl found_error bit (1) aligned; 72 dcl project_name char (32) varying; 73 dcl char16 char (16); 74 dcl char168 char (168); 75 dcl (char500, char500_2) char (500); 76 dcl pmf_dir char (168) init (""); 77 dcl pmf_en char (32); 78 dcl char32 char (32); 79 dcl u (40) char (32); 80 dcl time fixed bin (71); 81 dcl rings (3) fixed bin (3) init ((3) 7); 82 dcl uid char (32); 83 dcl n_users fixed bin; 84 dcl project_dir_acc bit (72) aligned init (""b); 85 dcl project_dir_lv char (32); 86 dcl project_dir_owner char (32) init (""); /* owner of a project master dir */ 87 dcl project_dir_account char (32) init (""); /* quota account of a project master dir */ 88 dcl udd_acc bit (72) aligned; 89 dcl have_anonymous_user bit (1) aligned; 90 91 dcl USER_RING fixed bin (3) init (4) static options (constant); 92 93 dcl udd char (64) int static init (">user_dir_dir"); 94 dcl sc1 char (64) int static init (">system_control_1"); 95 96 dcl pp ptr; /* ptr to projfile */ 97 dcl qp ptr; /* ptr to reqfile */ 98 dcl mgtp ptr; /* ptr to mgt */ 99 dcl satp ptr; /* ptr to sat */ 100 dcl protop ptr; /* ptr to prototype pmf */ 101 dcl protol fixed bin (21); /* lth in chars */ 102 dcl sadp ptr; /* ptr to sys_admin_data */ 103 dcl satep ptr; /* ptr to sat entry. */ 104 dcl projfile_ep ptr; /* ptr to projfile entry */ 105 dcl reqfile_ep ptr; /* ptr to reqfile entry */ 106 dcl (tp, ttp) ptr; 107 dcl sat_count fixed bin; 108 dcl projfile_count fixed bin; 109 dcl reqfile_count fixed bin; 110 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 111 dcl set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)); 112 dcl set_lock_$unlock entry (bit (36) aligned, fixed bin (35)); 113 dcl error_table_$badopt fixed bin (35) ext static; 114 dcl error_table_$namedup fixed bin (35) ext; 115 dcl error_table_$locked_by_this_process 116 fixed bin (35) ext; 117 dcl error_table_$id_not_found 118 fixed bin (35) ext; 119 dcl error_table_$invalid_lock_reset 120 fixed bin (35) ext; 121 122 123 dcl (addr, after, before, byte, clock, divide, hbound, index, 124 length, null, rtrim, string, substr, unspec, verify) 125 builtin; 126 127 128 dcl command_query_ entry () options (variable); 129 dcl pnt_manager_$get_entry entry (character (*), pointer, fixed bin (35)); 130 dcl datebin_$last_midnight entry (fixed bin (71)); 131 dcl convert_date_to_binary_$relative 132 entry (char (*), fixed bin (71), fixed bin (71), fixed bin (35)); 133 dcl cv_float_ entry (char (*), fixed bin (35)) returns (float bin); 134 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 135 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 136 dcl get_wdir_ entry () returns (char (168)); 137 dcl get_group_id_ entry () returns (char (32)); 138 dcl ioa_ entry options (variable); 139 dcl ioa_$rs entry options (variable); 140 dcl com_err_ entry options (variable); 141 dcl convert_access_class_$from_string 142 entry (bit (72) aligned, character (*), fixed binary (35)); 143 dcl convert_access_class_$to_string_short 144 entry (bit (72) aligned, character (*), fixed binary (35)); 145 dcl expand_pathname_ entry (character (*), character (*), character (*), fixed binary (35)); 146 dcl sub_err_ entry () options (variable); 147 dcl absolute_pathname_ entry (character (*), character (*), fixed binary (35)); 148 dcl mdc_$create_dirx_acct entry (char (*), char (*), char (*), pointer, char (*), char (*), fixed bin (35)); 149 dcl mdc_$get_lv_access entry (char (*), fixed bin (3), bit (36) aligned, bit (1) aligned, fixed bin (35)); 150 dcl mdc_$find_lvid entry (char (*), bit (36) aligned, fixed bin (35)); 151 dcl continue_to_signal_ entry (fixed binary (35)); 152 dcl edit_proj_ entry (pointer); 153 154 dcl find_condition_info_ entry (pointer, pointer, fixed binary (35)); 155 dcl get_ring_ entry() returns(fixed bin(3)); 156 dcl hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 157 dcl hcs_$add_dir_acl_entries 158 entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 159 dcl hcs_$add_dir_inacl_entries 160 entry (char (*), char (*), ptr, fixed bin, fixed bin (3), fixed bin (35)); 161 dcl hcs_$create_branch_ entry (char (*), char (*), ptr, fixed bin (35)); 162 dcl hcs_$chname_file entry (char (*), char (*), char (*), char (*), fixed bin (35)); 163 dcl hcs_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)); 164 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), 165 fixed binary (35)); 166 dcl initiate_file_$create entry (character (*), character (*), bit (*), pointer, bit (1) aligned, 167 fixed binary (24), fixed binary (35)); 168 dcl hcs_$status_long entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 169 dcl ( 170 system_privilege_$dir_priv_on, 171 system_privilege_$dir_priv_off 172 ) entry (fixed bin (35)); 173 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 174 175 dcl bcs char (131071) based (tp); 176 dcl prototype_pmf char (protol) based (protop); 177 178 dcl 1 CBI aligned like create_branch_info; 179 dcl 1 EPA aligned like edit_proj_arg; 180 dcl 1 Nsate aligned like project; 181 dcl 1 Bprojfile aligned like projfile.projfiletab based; 182 dcl 1 Nprojfile aligned like projfile.projfiletab; 183 dcl 1 Breqfile aligned like reqfile.reqfiletab based; 184 dcl 1 Nreqfile aligned like reqfile.reqfiletab; 185 dcl 1 pnte aligned like pnt_entry automatic; 186 187 dcl LEGAL char (71) int static options (constant) 188 init 189 /* Legal chars for project ID. */ ( 190 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'_`^~/-abcdefghijklmnopqrstuvwxyz") 191 options (constant); 192 193 declare 1 seg_acl_array (10) aligned like segment_acl_entry; 194 declare 1 dir_acl_array (10) aligned like directory_acl_entry; 195 declare cleanup condition; 196 declare sub_error_ condition; 197 198 199 call cu_$arg_count (arg_count, ec); 200 if ec ^= 0 201 then do; 202 call com_err_ (ec, "new_proj"); 203 return; 204 end; 205 if arg_count = 0 206 then do; 207 call com_err_ (0, "new_proj", "Usage: new_proj ProjectName"); 208 return; 209 end; 210 211 project_name = ""; 212 do i = 1 to arg_count; 213 call cu_$arg_ptr (i, ap, al, (0)); 214 if index (bchr, "-") ^= 1 215 then do; 216 if project_name ^= "" 217 then do; 218 call com_err_ (0, "new_proj", 219 "Only one project name may be specified. ""^a"" is the second.", bchr); 220 call cleanup_segments; 221 return; 222 end; 223 project_name = bchr; 224 end; 225 else if bchr = "-debug" 226 then TESTING = "1"b; 227 228 else do; 229 call com_err_ (error_table_$badopt, "new_proj", """^a""", bchr); 230 return; 231 end; 232 end; 233 234 if length (project_name) > 9 235 then do; 236 call com_err_ (0, "new_proj", "Project ID ^a longer then 9 characters.", project_name); 237 return; 238 end; 239 if verify (project_name, LEGAL) ^= 0 240 then do; 241 call com_err_ (0, "new_proj", "Illegal character in project ID ""^a""", project_name); 242 return; 243 end; 244 245 sadp, pp, qp, tp, ttp, protop, satp = null (); 246 on cleanup call cleanup_segments; 247 on sub_error_ 248 begin; 249 declare 1 CI aligned like condition_info; 250 if TESTING 251 then call continue_to_signal_ ((0)); 252 else do; 253 CI.version = condition_info_version_1; 254 call find_condition_info_ (null (), addr (CI), (0)); 255 sub_error_info_ptr = CI.info_ptr; 256 call com_err_ (sub_error_info.status_code, "new_proj", "^a", sub_error_info.info_string); 257 go to ERROR_EXIT; 258 end; 259 end; 260 261 seg_acl_array (*).status_code, dir_acl_array (*).status_code = 0; 262 dn = get_wdir_ (); 263 en = "sys_admin_data"; 264 call initiate_file_ (dn, en, R_ACCESS, sadp, (0), ec); 265 if ec ^= 0 266 then go to er; 267 call set_lock_$lock (sys_admin_data.lock, 60, ec); 268 if ec ^= 0 269 then if ec = error_table_$locked_by_this_process 270 then mylock = "1"b; 271 else if ec ^= error_table_$invalid_lock_reset 272 then do; 273 call com_err_ (ec, "new_proj", "Sys_admin_data is locked by ^a", sys_admin_data.locker); 274 call terminate_file_ (sadp, (0), TERM_FILE_TERM, (0)); 275 return; 276 end; 277 278 /* If sys_admin_data gets mashed, fix it up. */ 279 280 if sys_admin_data.default_proj_group < "" 281 then do; 282 sys_admin_data.default_proj_group = "Other"; 283 sys_admin_data.default_proj_grace = 2880; 284 sys_admin_data.default_proj_ring1 = 4; 285 sys_admin_data.default_proj_ring2 = 5; 286 sys_admin_data.default_proj_attributes = "000010000111111110000000000000000000"b; 287 /* anon,bumping,brief,vinitproc,vhomedir,nostart */ 288 end; 289 290 acl_count = 0; /* start with none */ 291 uid = get_group_id_ (); 292 293 en = "smf.cur.sat"; 294 call initiate_file_ (dn, en, RW_ACCESS, satp, (0), ec); 295 if ec ^= 0 296 then do; 297 er: 298 call com_err_ (ec, "new_proj", en); 299 go to abend; 300 end; 301 do i = 1 to 2; /* Put system admins on acls. */ 302 if sat.system_admin (i) ^= "" 303 then do; 304 acl_count = acl_count + 1; 305 seg_acl_array (acl_count).access_name, dir_acl_array (acl_count).access_name = 306 rtrim (sat.system_admin (i)) || ".*"; 307 seg_acl_array (acl_count).mode = RW_ACCESS; 308 seg_acl_array (acl_count).extended_mode = ""b; 309 dir_acl_array (acl_count).mode = SMA_ACCESS; 310 end; 311 end; 312 en = "projfile"; 313 call initiate_file_ (dn, en, RW_ACCESS, pp, (0), ec); 314 if ec ^= 0 315 then go to er; 316 en = "reqfile"; 317 call initiate_file_ (dn, en, RW_ACCESS, qp, (0), ec); 318 if ec ^= 0 319 then go to er; 320 en = "prototype_pmf"; 321 call initiate_file_ (dn, en, R_ACCESS, protop, bitct, ec); 322 if ec ^= 0 323 then go to er; 324 protol = divide (bitct, 9, 17, 0); 325 326 dn = sc1; 327 en = "mgt"; 328 call initiate_file_ (dn, en, R_ACCESS, mgtp, (0), ec); 329 if ec ^= 0 330 then go to er; 331 332 call expand_pathname_ (udd, dn, en, (0)); 333 call hcs_$get_access_class (dn, en, udd_acc, ec); 334 if ec ^= 0 335 then go to er; 336 337 en = ""; /* clean err msg */ 338 unspec (Nsate) = ""b; /* to avoid having to zero every new variable by name */ 339 340 341 call ioa_ ("Creating new project ""^a"".", project_name); 342 343 Nsate.project_id = project_name; 344 pmf_en = rtrim (Nsate.project_id) || ".pmf"; 345 346 sat_count = sat.current_size; 347 reqfile_count = reqfile.nacts; 348 projfile_count = projfile.nproj; 349 satep, reqfile_ep, projfile_ep = null; 350 351 do i = 1 to sat.current_size; 352 satep = addr (sat.project (i)); 353 if Nsate.project_id = project.project_id 354 then if project.state = 1 355 then do; 356 call com_err_ (0, "new_proj", "Project ""^a"" is already registered.", Nsate.project_id); 357 go to abend; 358 end; 359 else if project.state = 2 | project.state = 3 360 then do; 361 REUSE_PROJ: char16 = get_input ("new_proj: Project " || rtrim(project.project_id) || " was previously deleted. Do you wish to reuse it? ", "Just answer yes or no"); 362 if rtrim(char16) = "yes" | rtrim(char16) = "y" then goto check_req; 363 else if rtrim(char16) = "no" | rtrim(char16) = "n" then goto abend; 364 else do; 365 call ioa_ ("You must answer yes or no"); 366 goto REUSE_PROJ; 367 end; 368 end; 369 end; 370 sat_count = sat_count + 1; 371 satep = addr (sat.project (sat_count)); 372 373 check_req: 374 do i = 1 to reqfile.nacts while (Nsate.project_id ^= reqfile.acctid (i)); 375 end; 376 if i <= reqfile.nacts 377 then if reqfile.qdf (i) = 0 378 then do; 379 call com_err_ (0, "new_proj", "Project ""^a"" is already in reqfile.", Nsate.project_id); 380 go to abend; 381 end; 382 else ; /* Returned. */ 383 else reqfile_count = reqfile_count + 1; 384 reqfile_ep = addr (reqfile.reqfiletab (i)); 385 Nreqfile.acctid = Nsate.project_id; 386 387 do i = 1 to projfile.nproj while (Nsate.project_id ^= projfile.id (i)); 388 end; 389 if i <= projfile.nproj 390 then if projfile.off (i) = 0 391 then do; 392 call com_err_ (0, "new_proj", "Project ""^a"" is already in projfile.", Nsate.project_id); 393 go to abend; 394 end; 395 else ; /* Returned. */ 396 else projfile_count = projfile_count + 1; 397 projfile_ep = addr (projfile.projfiletab (i)); 398 Nprojfile.id = Nsate.project_id; 399 400 /* Clear the temporary data structures. */ 401 402 Nsate.state = 1; 403 Nsate.project_dir = rtrim (udd) || ">" || Nsate.project_id; 404 Nsate.pdt_ptr = null; 405 Nsate.max_users = 32767; 406 Nsate.n_users = 0; 407 string (Nsate.at) = sys_admin_data.default_proj_attributes; 408 do i = 1 to 4; 409 Nsate.admin (i).userid = ""; 410 Nsate.admin (i).pad = ""; 411 end; 412 Nsate.cutoff = ""; 413 Nsate.min_ring = sys_admin_data.default_proj_ring1; 414 Nsate.max_ring = sys_admin_data.default_proj_ring2; 415 Nsate.alias = ""; 416 Nsate.group = sys_admin_data.default_proj_group; 417 Nsate.groups (1) = ""; 418 Nsate.groups (2) = ""; 419 Nsate.grace_max = sys_admin_data.default_proj_grace; 420 Nsate.rs_number = 0; 421 Nsate.audit = sys_admin_data.default_audit_flags; 422 Nsate.project_authorization = ""b; 423 424 Nsate.satpad = "0"b; 425 Nsate.chain = 0; 426 427 Nprojfile.title = ""; 428 Nprojfile.inv = ""; 429 Nprojfile.inv_addr = ""; 430 Nprojfile.sup = ""; 431 Nprojfile.sup_addr = ""; 432 Nprojfile.sup_phone = ""; 433 434 435 Nprojfile.on = clock (); 436 Nprojfile.off = 0; 437 Nprojfile.disk_psec = 0; 438 Nprojfile.disk_quota = 100; 439 Nprojfile.dir_disk_quota = 10; 440 Nprojfile.disk_use = 0; 441 Nprojfile.dir_disk_use = 0; 442 Nprojfile.misc_charges = 0; 443 Nprojfile.n_misc = 0; 444 Nprojfile.processed = 0; 445 446 Nreqfile.mitacct = ""; 447 Nreqfile.reqno = ""; 448 Nreqfile.req_amt = 0; /* open ... */ 449 Nreqfile.qflag = ""; 450 Nreqfile.procssd = 0; 451 Nreqfile.qdn = clock (); 452 Nreqfile.qdf = 0; 453 Nreqfile.billing_name = ""; 454 Nreqfile.billing_addr = ""; 455 Nreqfile.chg_mo = 0; 456 Nreqfile.chg_tr = 0; 457 call datebin_$last_midnight (time); 458 call convert_date_to_binary_$relative ("+1year", Nreqfile.cutoff, time, (0)); 459 460 EPA.version = EDIT_PROJ_ARGS_V_2; 461 EPA.caller = "new_proj"; 462 EPA.satep = addr (Nsate); 463 EPA.projfile_ep = addr (Nprojfile); 464 EPA.reqfile_ep = addr (Nreqfile); 465 EPA.mgtp = mgtp; 466 EPA.flags = "0"b; 467 EPA.flags.all = "1"b; 468 EPA.changes = "0"b; 469 EPA.new_value.ptr, EPA.match_value.ptr = null (); 470 471 call edit_proj_ (addr (EPA)); 472 473 delegated = "0"b; 474 do i = 1 to 4; 475 if Nsate.admin (i).userid ^= "" 476 then delegated = "1"b; 477 end; 478 479 if delegated 480 then do ec = -1 repeat ec while (ec ^= 0); 481 char168 = get_input ("PMF directory", "Pathname of the directory to put the PMF into."); 482 call absolute_pathname_ (char168, pmf_dir, ec); 483 if ec ^= 0 484 then call com_err_ (ec, "new_proj", "Illegal PMF directory: ""^a""", char168); 485 end; 486 487 do ec = -1 repeat ec while (ec ^= 0); 488 GET_PROJ_DIR_LV: 489 project_dir_lv = 490 get_input ("Project directory logical volume", 491 "Logical volume on which segments under this project directory will reside. The default is to inherit the logical volume of >user_dir_dir." 492 ); 493 if project_dir_lv = "" 494 then ec = 0; /* call hcs_, not mdc */ 495 else do; 496 call mdc_$find_lvid (project_dir_lv, lvid, ec); 497 if ec ^= 0 498 then call com_err_ (ec, "new_proj", "Invalid logical volume name ""^a"".", project_dir_lv); 499 else if lvid = get_dir_lvid (udd) /* mdc_ is not clever about creation of mdir that is not really an mdir */ 500 then project_dir_lv = ""; /* so this filters out the easy case */ 501 else do; /* get owner and account for the master dir */ 502 call mdc_$get_lv_access (project_dir_lv, get_ring_ (), access, pubbit, ec); 503 if ec ^= 0 504 then do; 505 call com_err_ (ec, "new_proj", "Unable to check logical volume access."); 506 goto GET_PROJ_DIR_LV; 507 end; 508 else do; 509 if (access & E_ACCESS) ^= E_ACCESS 510 then do; 511 call com_err_ (0, "new_proj", "Process lacks executive access to LV ^a.", project_dir_lv); 512 goto GET_PROJ_DIR_LV; 513 end; 514 end; 515 GET_PROJ_DIR_OWNER: 516 project_dir_owner = get_input ("Master directory owner", 517 "User ID of person to manage the project quota. The default is your user_id."); 518 if project_dir_owner ^= "" 519 then if ^check_user_id_syntax$person_project (project_dir_owner) 520 then do; 521 call com_err_ (0, "new_proj", "Illegal user_id format."); 522 goto GET_PROJ_DIR_OWNER; 523 end; 524 GET_PROJ_DIR_ACCT: 525 project_dir_account = get_input ("Master directory account", 526 "Quota account where master directory will draw quota. The default is the owner's account."); 527 if project_dir_account ^= "" 528 then if ^check_user_id_syntax$person_project_star (project_dir_account) 529 then do; 530 call com_err_ (0, "new_proj", "Illegal quota account format."); 531 goto GET_PROJ_DIR_ACCT; 532 end; 533 534 /* now check for existance of the proper quota account */ 535 /*TBD Unfortunately the proper MDC entries don't exist which /*TBD*/ 536 /*TBD would allow us to do this right. We don't want to /*TBD*/ 537 /*TBD try to mimic the quota account matching stuff here, so /*TBD*/ 538 /*TBD the code is commented out until the appropriate interfaces /*TBD*/ 539 /*TBD can be supplied. /*TBD*/ 540 /*TBD if project_dir_account ^= "" /*TBD*/ 541 /*TBD then if ^mdc_$find_account (project_dir_account) /*TBD*/ 542 /*TBD then do; /*TBD*/ 543 /*TBD call com_err_ (0, "new_proj", "Quota account does not exist."); /*TBD*/ 544 /*TBD goto GET_PROJ_DIR_ACCT; /*TBD*/ 545 /*TBD end; /*TBD*/ 546 /*TBD else; /*nothing*/ /*TBD*/ 547 /*TBD else if ^mdc_$find_matching_account (project_dir_owner) /*TBD*/ 548 /*TBD then do; /*TBD*/ 549 /*TBD call com_err_ (0, "new_proj", /*TBD*/ 550 /*TBD "There is no quota account for the specified dir owner."); /*TBD*/ 551 /*TBD goto GET_PROJ_DIR_OWNER; /*TBD*/ 552 /*TBD end; /*TBD*/ 553 /*TBD else; /*nothing*/ /*TBD*/ 554 end; 555 end; 556 end; 557 558 if unspec (Nsate.project_authorization) ^= ""b 559 then do ec = -1 repeat ec while (ec ^= 0); 560 char500 = 561 get_input ("Project directory access class", 562 "AIM access class marking for the project directory."); 563 call convert_access_class_$from_string (project_dir_acc, char500, ec); 564 if ec ^= 0 565 then call com_err_ (ec, "new_proj", "Invalid project directory access class ""^a"".", char500); 566 end; 567 568 call ioa_ ("Enter initial list of users. Type ""."" to exit"); 569 570 571 n_users = 0; 572 have_anonymous_user = "0"b; 573 GET_USERS: 574 do while ("1"b); 575 576 RE_GET_USER: 577 char32 = get_input (" Person", "Multics person-id of a user to be registered on this project."); 578 if char32 = "" 579 then go to GOT_USERS; 580 else if char32 = "." 581 then go to GOT_USERS; 582 else if char32 = "*" 583 then do; /* anonymous */ 584 if have_anonymous_user 585 then do; 586 call com_err_ (0, "new_proj", "Only one anonymous user may be supplied."); 587 go to RE_GET_USER; 588 end; 589 have_anonymous_user = "1"b; 590 n_users = n_users + 1; 591 u (n_users) = "*"; 592 end; 593 else do; 594 if verify (char32, LEGAL) ^= 0 595 then do; 596 call com_err_ (0, "new_proj", "Illegal character in user id ""^a""", char32); 597 go to RE_GET_USER; 598 end; 599 if index (rtrim (char32), " ") ^= 0 600 then do; 601 call ioa_ (0, "new_proj", "No spaces are permitted in user names. ""^a"" is invalid.", 602 char32); 603 go to RE_GET_USER; 604 end; 605 if index (substr (LEGAL, 11, 26), substr (char32, 1, 1)) = 0 606 then call com_err_ (0, "new_proj", "Warning: user name ""^a"" does not begin with a capital", 607 char32); 608 n_users = n_users + 1; 609 u (n_users) = char32; 610 call pnt_manager_$get_entry ((char32), addr (pnte), ec); 611 if ec = error_table_$id_not_found 612 then call com_err_ (0, "new_proj", "Warning: ^a is not registered.", char32); 613 end; 614 GOT_A_USER: 615 if n_users = hbound (u, 1) 616 then do; 617 call com_err_ (0, "new_proj", 618 "Limitation: only ^d users may be in the initial list. Add the rest to the PMF later.", 619 hbound (u, 1)); 620 go to GOT_USERS; 621 end; 622 end; 623 GOT_USERS: 624 if n_users = 0 625 then do; 626 call com_err_ (0, "new_proj", "At least one user must be specified."); 627 go to GET_USERS; 628 end; 629 630 631 call ioa_ ("^/Input for ""^a"" complete.", Nsate.project_id); 632 633 /* Now add the data to the files. */ 634 635 project = Nsate; 636 projfile_ep -> Bprojfile = Nprojfile; 637 reqfile_ep -> Breqfile = Nreqfile; 638 639 /* Create project directory and set quota. */ 640 641 unspec (CBI) = ""b; 642 CBI.version = create_branch_version_2; 643 CBI.dir_sw = "1"b; 644 CBI.parent_ac_sw = aim_check_$equal (project_dir_acc, udd_acc); 645 CBI.mode = SMA_ACCESS; 646 CBI.rings = rings; 647 CBI.userid = get_group_id_ (); 648 CBI.quota = Nprojfile.disk_quota; 649 CBI.dir_quota = Nprojfile.dir_disk_quota; 650 if ^CBI.parent_ac_sw 651 then CBI.access_class = project_dir_acc; 652 653 if project_dir_lv ^= "" 654 then call mdc_$create_dirx_acct (udd, (Nsate.project_id), 655 project_dir_lv, addr (CBI), project_dir_account, project_dir_owner, ec); 656 else call hcs_$create_branch_ (udd, (Nsate.project_id), addr (CBI), ec); 657 658 if ec ^= 0 & ec ^= error_table_$namedup 659 then call sub_err_ (ec, "new_proj", ACTION_CANT_RESTART, null (), (0), "Call to create directory failed."); 660 else if ec = error_table_$namedup 661 then call com_err_ (ec, "new_proj", "Creating ^a>^a", udd, Nsate.project_id); 662 663 if ^CBI.parent_ac_sw 664 then call system_privilege_$dir_priv_on (dir_priv_code); 665 /* Try to allow manipulations of upgraded dir. */ 666 667 if Nsate.alias ^= "" 668 then do; 669 call hcs_$chname_file (udd, (Nsate.project_id), "", (Nsate.alias), ec); 670 if ec ^= 0 671 then call com_err_ (ec, "new_proj", "Warning: Could not add alias ""^a"" to project directory ^a>^a.", 672 Nsate.alias, udd, Nsate.project_id); 673 end; 674 675 /* Calculate ACLs for project dir, etc. */ 676 677 do i = 1 to 4; 678 if Nsate.admin (i).userid ^= "" 679 then do; 680 acl_count = acl_count + 1; 681 dir_acl_array (acl_count).access_name, seg_acl_array (acl_count).access_name = 682 rtrim (Nsate.admin (i).userid) || ".*"; 683 dir_acl_array (acl_count).mode = A_ACCESS; 684 /* We are going to use it for >sc1>update */ 685 seg_acl_array (acl_count).mode = R_ACCESS; 686 seg_acl_array (acl_count).extended_mode = ""b; 687 end; 688 end; 689 acl_count = acl_count + 1; 690 dir_acl_array (acl_count).access_name = "*." || rtrim (Nsate.project_id) || ".*"; 691 692 if Nsate.project_id = "SysAdmin" | Nsate.project_id = "SysDaemon" 693 then dir_acl_array (acl_count).mode = SMA_ACCESS; 694 else dir_acl_array (acl_count).mode = S_ACCESS; /* for *.Project.* */ 695 696 /* NOTE -- acl_count is one to big for the segment acl, and for >sc1>update */ 697 /* since the *.Project.* should not go on sc1>update */ 698 699 /* Set ACL of >sc1>update. */ 700 701 if acl_count > 1 /* We have project administrator acls to add */ 702 then do; 703 call hcs_$add_dir_acl_entries (sc1, "update", addr (dir_acl_array), acl_count - 1, ec); 704 found_error = "0"b; 705 if ec ^= 0 706 then do i = 1 to acl_count - 1; 707 if dir_acl_array (i).status_code ^= 0 708 then do; 709 call com_err_ (dir_acl_array (i).status_code, "new_proj", 710 "Warning: Could not set acl of ^a>^a for ^a", sc1, "update", 711 dir_acl_array (i).access_name); 712 found_error = "1"b; 713 end; 714 end; 715 if ec ^= 0 & ^found_error 716 then call com_err_ (ec, "new_proj", "Warning: Could not set acl of ^a>^a.", sc1, "update"); 717 end; 718 719 /* Set ACL of Project Directory. */ 720 721 do i = 1 to acl_count - 1; /* Give proj admin SMA on proj dir. */ 722 /* -1 dodges the *.Project.* term */ 723 if dir_acl_array (i).mode ^= SMA_ACCESS 724 then dir_acl_array (i).mode = SMA_ACCESS; 725 end; 726 call hcs_$add_dir_acl_entries (udd, (Nsate.project_id), addr (dir_acl_array), acl_count, ec); 727 found_error = "0"b; 728 if ec ^= 0 729 then do i = 1 to acl_count; 730 if dir_acl_array (i).status_code ^= 0 731 then do; 732 found_error = "1"b; 733 call com_err_ (dir_acl_array (i).status_code, "new_proj", 734 "Warning: Could set acl of ^a>^a for ^a", udd, Nsate.project_id, 735 dir_acl_array (i).access_name); 736 end; 737 end; 738 if ec ^= 0 & ^found_error 739 then call com_err_ (ec, "new_proj", "Warning: Could not set acl of ^a>^a.", udd, Nsate.project_id); 740 741 742 /* Set initial dir ACL of project dir same as project dir ACL. */ 743 744 call hcs_$add_dir_inacl_entries (udd, (Nsate.project_id), addr (dir_acl_array), acl_count, USER_RING, ec); 745 found_error = "0"b; 746 if ec ^= 0 747 then do i = 1 to acl_count; 748 if dir_acl_array (i).status_code ^= 0 749 then do; 750 call com_err_ (dir_acl_array (i).status_code, "new_proj", 751 "Warning: Could not set initial acl of ^a>^a for ^a", udd, Nsate.project_id, 752 dir_acl_array (i).access_name); 753 found_error = "1"b; 754 end; 755 end; 756 if ec ^= 0 & ^found_error 757 then call com_err_ (ec, "new_proj", "Warning: Could not set dir initial acl of ^a>^a.", udd, Nsate.project_id); 758 759 /* Create initial PMF */ 760 761 dn = get_wdir_ (); 762 en = pmf_en; 763 call initiate_file_$create (dn, pmf_en, RW_ACCESS, tp, ("0"b), (0), ec); 764 if ec ^= 0 765 then call sub_err_ (ec, "new_proj", ACTION_CANT_RESTART, null (), (0), "Could not create PMF ^a>^a.", dn, 766 pmf_en); 767 768 call ioa_$rs ("Projectid:^-^a;", char168, j, Nsate.project_id); 769 substr (bcs, 1, j) = substr (char168, 1, j); 770 771 substr (bcs, j + 1, protol) = prototype_pmf; 772 j = j + protol + 1; 773 if Nsate.project_authorization (1) ^= ""b /* start them off at min */ 774 then do; 775 call convert_access_class_$to_string_short (Nsate.project_authorization (1), char500, (0)); 776 call ioa_$rs ("Authorization:^-""^a"";", char500_2, k, rtrim (char500)); 777 substr (bcs, j, k) = substr (char500_2, 1, k); 778 j = j + k; 779 end; 780 do i = 1 to n_users; 781 call ioa_$rs ("personid:^-^-^a;", char168, k, u (i)); 782 substr (bcs, j, k) = substr (char168, 1, k); 783 j = j + k; 784 end; 785 substr (bcs, j, 5) = "end; 786 "; 787 j = j + 4; 788 789 790 if pmf_dir ^= "" /* create copy of pmf for project administrators */ 791 then do; 792 call initiate_file_$create (pmf_dir, pmf_en, RW_ACCESS, ttp, "0"b, (0), ec); 793 if ec ^= 0 794 then do; 795 call com_err_ (ec, "new_proj", "Warning: Could not create pmf ^a.pmf in ^a", 796 Nsate.project_id, pmf_dir); 797 go to SKIP_PMF; 798 end; 799 800 do i = 1 to acl_count - 1; 801 if seg_acl_array (i).mode = R_ACCESS 802 then seg_acl_array (i).mode = RW_ACCESS; 803 end; 804 call hcs_$add_acl_entries (pmf_dir, pmf_en, addr (seg_acl_array), acl_count - 1, ec); 805 found_error = "0"b; 806 if ec ^= 0 807 then do i = 1 to acl_count - 1; 808 if seg_acl_array (i).status_code ^= 0 809 then do; 810 found_error = "1"b; 811 call com_err_ (seg_acl_array (i).status_code, "new_proj", 812 "Warning: Could not set acl of ^a>^a for ^a", pmf_dir, pmf_en, 813 seg_acl_array (i).access_name); 814 end; 815 end; 816 if ec ^= 0 & ^found_error 817 then call com_err_ (ec, "new_proj", "Warning: Could not set acl of ^a>^a.", pmf_dir, pmf_en); 818 819 substr (ttp -> bcs, 1, j) = substr (bcs, 1, j); 820 /* copy the pmf */ 821 call terminate_file_ (ttp, 9 * j, TERM_FILE_TRUNC_BC_TERM, (0)); 822 end; 823 SKIP_PMF: 824 call terminate_file_ (tp, 9 * j, TERM_FILE_TRUNC_BC_TERM, (0)); 825 826 /* Increase counts in head of data bases */ 827 828 reqfile.nacts = reqfile_count; 829 projfile.nproj = projfile_count; 830 sat.current_size = sat_count; 831 832 /* Terminate all segments. */ 833 834 ERROR_EXIT: 835 abend: 836 call cleanup_segments; 837 return; 838 839 840 cleanup_segments: 841 procedure; 842 843 if dir_priv_code = 0 844 then call system_privilege_$dir_priv_off (dir_priv_code); 845 if pp ^= null () 846 then call terminate_file_ (pp, 36 * (loph + projfile.nproj * lope), TERM_FILE_TRUNC_BC_TERM, (0)); 847 if qp ^= null () 848 then call terminate_file_ (qp, 36 * (loqh + reqfile.nacts * loqe), TERM_FILE_TRUNC_BC_TERM, (0)); 849 if satp ^= null () 850 then call terminate_file_ (satp, 36 * (SAT_header_lth + sat.current_size * SAT_entry_lth), 851 TERM_FILE_TRUNC_BC_TERM, (0)); 852 if protop ^= null () 853 then call terminate_file_ (protop, (0), TERM_FILE_TERM, ec); 854 if sadp ^= null () 855 then do; 856 if ^mylock 857 then call set_lock_$unlock (sys_admin_data.lock, ec); 858 call terminate_file_ (sadp, (0), TERM_FILE_TERM, (0)); 859 end; 860 end cleanup_segments; 861 862 /* -------------------------------------------------------- */ 863 864 get_input: 865 procedure (prompt, explanation) returns (char (*)); 866 867 declare prompt char (*); 868 declare buf character (1000); 869 declare explanation char (*); 1 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 1 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 1 3 /* version number changed to 4, 08/10/78 WOS */ 1 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 1 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 1 6 1 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 1 8 2 version fixed bin, /* version of this structure - must be set, see below */ 1 9 2 switches aligned, /* various bit switch values */ 1 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 1 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 1 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 1 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 1 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 1 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 1 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 1 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 1 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 1 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 1 20 1 21 /* Limit of data defined for version 2 */ 1 22 1 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 1 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 1 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 1 26 /* minimum of 30 seconds required for repeat */ 1 27 /* otherwise, no repeat will occur */ 1 28 /* Limit of data defined for version 4 */ 1 29 1 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 1 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 1 32 1 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 1 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 1 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 1 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 1 37 1 38 /* END INCLUDE FILE query_info.incl.pl1 */ 870 871 872 query_info.version = query_info_version_6; 873 query_info.yes_or_no_sw = "0"b; 874 query_info.suppress_name_sw = "1"b; 875 query_info.suppress_spacing = "1"b; 876 query_info.literal_sw = "0"b; 877 query_info.prompt_after_explanation = "1"b; 878 query_info.explanation_ptr = addr (explanation); 879 query_info.explanation_len = length (rtrim (explanation)); 880 881 call command_query_ (addr (query_info), buf, "new_proj", "^a:^25t", prompt); 882 if buf = "stop" 883 then go to abend; 884 return (rtrim (rtrim (buf), byte (10))); 885 886 end get_input; 887 888 889 get_dir_lvid: 890 procedure (dir) returns (bit (36) aligned); 891 892 dcl dir char (*); 893 dcl dir_dn char (168); 894 dcl dir_en char (32); 895 dcl 1 status aligned like status_branch automatic; 896 897 call expand_pathname_ (dir, dir_dn, dir_en, ec); 898 if ec ^= 0 899 then call sub_err_ (ec, "new_proj", ACTION_CANT_RESTART, null (), (0), 900 "Failed to expand pathname ^a in get_dir_lvid.", dir); 901 status_ptr = addr (status); 902 call hcs_$status_long (dir_dn, dir_en, (1), addr (status), null (), ec); 903 if ec ^= 0 904 then call sub_err_ (ec, "new_proj", ACTION_CANT_RESTART, null (), (0), 905 "Failed to get status_long for ^a in get_dir_lvid.", dir); 906 return (status.lvid); 907 end get_dir_lvid; 908 909 /* -------------------------------------------------- */ 910 911 check_user_id_syntax: procedure (userid) returns (bit (1)); 912 913 dcl userid char (*) parameter; 914 dcl project_required bit (1); 915 dcl star_ok bit (1); 916 dcl (person, project) char (32) varying; 917 918 919 project_required = "0"b; 920 star_ok = "0"b; 921 goto join; 922 923 check_user_id_syntax$person_project: entry (userid) returns (bit(1)); /* requires Person.Project */ 924 925 project_required = "1"b; 926 star_ok = "0"b; 927 goto join; 928 929 check_user_id_syntax$person_project_star: entry (userid) returns (bit(1)); /* requires Person.Project but allows "*" for either */ 930 931 project_required = "1"b; 932 star_ok = "1"b; 933 goto join; 934 935 join: 936 if length(rtrim(userid)) > 32 937 then return ("0"b); 938 939 if userid = "" 940 then return ("0"b); 941 942 person = before (userid, "."); 943 if person = "" 944 then return ("0"b); 945 if length(person) > 22 946 then return ("0"b); 947 if person = "*" & ^star_ok 948 then return ("0"b); 949 950 project = rtrim(after(userid, ".")); 951 if project = "" 952 then return ("0"b); 953 if length(project) > 9 954 then return ("0"b); 955 if project = "*" & ^star_ok 956 then return ("0"b); 957 958 return ("1"b); 959 960 end check_user_id_syntax; 961 962 963 test: 964 entry (asc1, audd); 965 dcl (asc1, audd) char (*); 966 967 call absolute_pathname_ (asc1, sc1, (0)); 968 call absolute_pathname_ (audd, udd, (0)); 969 call ioa_ ("udd = ^a^/sc1 = ^a", udd, sc1); 970 return; 971 972 /* -------------------------------------------------- */ 973 2 1 /* Begin include file edit_proj_arguments_.incl.pl1 BIM 1984-08-27 */ 2 2 /* format: style3 */ 2 3 /* Modified 1984-09-14 BIM to pass in mgt_ptr */ 2 4 2 5 /**** This data structure is passed to edit_proj_ (and edit_proj_$review) 2 6* to inform if of the desired action. */ 2 7 2 8 declare edit_proj_arg_ptr pointer; 2 9 declare 1 edit_proj_arg aligned based (edit_proj_arg_ptr), 2 10 2 version char (8) aligned, 2 11 2 caller char (32) unaligned, 2 12 2 seg_pointers aligned, 2 13 3 ( 2 14 satep, /* SAT entry (project) */ 2 15 projfile_ep, /* projfile entry */ 2 16 reqfile_ep, /* reqfile entry */ 2 17 mgtp /* entire MGT */ 2 18 ) pointer, 2 19 2 flags aligned, 2 20 3 all bit (1) unaligned, /* prompt for all values */ 2 21 3 long bit (1) unaligned, /* speak up when changing one */ 2 22 3 report_project_name 2 23 bit (1) unaligned, /* include name of project in speech */ 2 24 3 match bit (1) unaligned, /* replace one of a list with another */ 2 25 3 brief_match bit (1) unaligned, /* do not complain if match fails */ 2 26 2 changes aligned, 2 27 3 anything bit (1) unaligned, /* any field changed */ 2 28 3 acls bit (1) unaligned, /* acls need to be recalculated */ 2 29 3 alias bit (1) unaligned, 2 30 3 seg_quota bit (1) unaligned, 2 31 3 dir_quota bit (1) unaligned, 2 32 2 value_index fixed bin, /* keyword */ 2 33 2 new_value aligned, 2 34 3 ptr pointer, 2 35 3 length fixed bin (21), 2 36 2 match_value aligned, 2 37 3 ptr pointer, 2 38 3 length fixed bin (21); 2 39 2 40 declare new_value_string char (edit_proj_arg.new_value.length) based (edit_proj_arg.new_value.ptr); 2 41 declare match_value_string char (edit_proj_arg.match_value.length) based (edit_proj_arg.match_value.ptr); 2 42 2 43 declare EDIT_PROJ_ARGS_V_2 char (8) init ("epagv002") int static options (constant); 2 44 2 45 /* End include file edit_proj_arguments_.incl.pl1 */ 974 3 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 3 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 3 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 3 8* attribute switches. 3 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 3 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 3 12* be deleted. 3 13* B) Add constants identifying attributes that can be changed by user at 3 14* login, etc. 3 15* END HISTORY COMMENTS */ 3 16 3 17 3 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 3 19 3 20 /* format: style4 */ 3 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 3 22 (2 administrator bit (1), /* 1 system administrator privileges */ 3 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 3 24 2 nobump bit (1), /* 2 user cannot be bumped */ 3 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 3 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 3 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 3 28* . of same project (distinct from "nobump") */ 3 29 2 nolist bit (1), /* 7 don't list user on "who" */ 3 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 3 31 2 multip bit (1), /* 9 user may have several processes */ 3 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 3 33 2 brief bit (1), /* 11 no login or logout message */ 3 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 3 35 2 vhomedir bit (1), /* 13 user may change homedir */ 3 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 3 37 2 sb_ok bit (1), /* 15 user may be standby */ 3 38 2 pm_ok bit (1), /* 16 user may be primary */ 3 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 3 40 2 daemon bit (1), /* 18 user may login as daemon */ 3 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 3 42 2 no_warning bit (1), /* 20 no warning message */ 3 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 3 44* . in PDT: this user has an individual load control group */ 3 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 3 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 3 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 3 48 2 pad bit (12)) unaligned; 3 49 3 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 3 51 ("none", /* 0 */ 3 52 "administrator", /* 1 */ 3 53 "primary_line", /* 2 */ 3 54 "nobump", /* 3 */ 3 55 "guaranteed_login", /* 4 */ 3 56 "anonymous", /* 5 */ 3 57 "nopreempt", /* 6 */ 3 58 "nolist", /* 7 */ 3 59 "dialok", /* 8 */ 3 60 "multip", /* 9 */ 3 61 "bumping", /* 10 */ 3 62 "brief", /* 11 */ 3 63 "vinitproc", /* 12 */ 3 64 "vhomedir", /* 13 */ 3 65 "nostartup", /* 14 */ 3 66 "no_secondary", /* 15 */ 3 67 "no_prime", /* 16 */ 3 68 "no_eo", /* 17 */ 3 69 "daemon", /* 18 */ 3 70 "", /* 19 vdim OBSOLETE */ 3 71 "no_warning", /* 20 */ 3 72 "igroup", /* 21 */ 3 73 "save_pdir", /* 22 */ 3 74 "disconnect_ok", /* 23 */ 3 75 "save_on_disconnect"); /* 24 */ 3 76 3 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 3 78 ("null", /* 0 */ 3 79 "admin", /* 1 */ 3 80 "", "", /* 2 - 3 */ 3 81 "guar", /* 4 */ 3 82 "anon", /* 5 */ 3 83 "", "", /* 6 - 7 */ 3 84 "dial", /* 8 */ 3 85 "multi_login", /* 9 */ 3 86 "preempting", /* 10 */ 3 87 "", /* 11 */ 3 88 "v_process_overseer", /* 12 */ 3 89 "v_home_dir", /* 13 */ 3 90 "no_start_up", /* 14 */ 3 91 "no_sec", /* 15 */ 3 92 "no_primary", /* 16 */ 3 93 "no_edit_only", /* 17 */ 3 94 "op_login", /* 18 */ 3 95 "", /* 19 */ 3 96 "nowarn", /* 20 */ 3 97 "", "", "", /* 21 - 23 */ 3 98 "save"); /* 24 */ 3 99 3 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 3 101 options(constant) init("000000000010000000010000000000000000"b); 3 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 3 103 3 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 3 105 options(constant) init("000000000010000000010000000000000000"b); 3 106 /* PDT value for (brief, no_warning) is default */ 3 107 3 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 3 109 options(constant) init("000100000110010000010000000000000000"b); 3 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 3 111 4 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 4 2 4 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 4 /* */ 4 5 /* This include file describes the attributes of an absentee job. It is */ 4 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 4 7 /* and PIT.incl.pl1. */ 4 8 /* */ 4 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 10 4 11 /****^ HISTORY COMMENTS: 4 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 4 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 14* Separated abs_attributes from the request structure 4 15* (abs_message_format.incl.pl1) so that the identical structure could be 4 16* used in the ute structure (user_table_entry.incl.pl1). 4 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 4 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 19* Added ABS_ATTRIBUTE_NAMES array. 4 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 4 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 4 22* Added the no_start_up flag. SCP6367 4 23* END HISTORY COMMENTS */ 4 24 4 25 dcl 1 user_abs_attributes aligned based, 4 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 4 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 4 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 4 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 4 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 4 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 4 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 4 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 4 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 4 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 4 36 2 attributes_pad bit (26) unaligned; 4 37 4 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 4 39 "restartable", 4 40 "user_deferred_until_time", 4 41 "proxy", 4 42 "set_bit_cnt", 4 43 "time_in_gmt", 4 44 "user_deferred_indefinitely", 4 45 "secondary_ok", 4 46 "truncate_absout", 4 47 "restarted", 4 48 "no_start_up"); 4 49 4 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 4 51 3 112 3 113 3 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 975 5 1 /* BEGIN INCLUDE FILE ... sys_admin_data.incl.pl1 */ 5 2 5 3 /* This data base is writeable by all system administrators. 5 4* It resides in the working directory of the system administrators. 5 5* The important item in this data base is "lock", which is used to prevent 5 6* two administrators from modifying the system administration data bases simultaneously. */ 5 7 5 8 /* Modified 1984-12-14 by EJ Sharpe to add default_audit_flags, and remove log_control */ 5 9 5 10 dcl 1 sys_admin_data based (sadp) aligned, 5 11 2 lock bit (36), 5 12 2 locker char (24), /* name of person using table */ 5 13 2 sadxx fixed bin, 5 14 2 time_locked fixed bin (71), 5 15 2 pntno fixed bin, 5 16 2 pnt_entries_to_install bit (1), 5 17 2 smf_entries_to_install bit (1), 5 18 2 pad1 (97) fixed bin, /* was log_control stuff before MR11 */ 5 19 2 user_accounts_office char (64), 5 20 2 user_accounts_addr char (64), 5 21 2 user_accounts_phone char (16), 5 22 2 mailing_banner (3) char (10), /* Used by mailing_page_ */ 5 23 2 default_proj_attributes bit (36), /* Used by new_proj */ 5 24 2 default_proj_ring1 fixed bin, /* .. */ 5 25 2 default_proj_ring2 fixed bin, /* .. */ 5 26 2 default_proj_group char (8), /* .. */ 5 27 2 default_proj_grace fixed bin, /* .. */ 5 28 2 default_audit_flags bit (36) aligned; /* initial set of flags for new_user and edit_proj */ 5 29 5 30 /* END INCLUDE FILE .. sys_admin_data.incl.pl1 */ 976 6 1 /* BEGIN INCLUDE FILE .. projfile.incl.pl1 */ 6 2 /* Modified by T. Casey April 1976 to change disk_infs (obsolete) to dir_disk_use */ 6 3 /* Modified 1984-07-09 BIM for dir_disk_quota, version */ 6 4 /* Modified 1984-09-14 BIM for reasonable array size */ 6 5 6 6 dcl 1 projfile based (pp) aligned, /* Project history file */ 6 7 2 nproj fixed bin (35), /* number of entries */ 6 8 2 version fixed bin, 6 9 2 projfilexx0 (6) bit (36) aligned, 6 10 2 projfiletab (3000), /* in seg limit */ 6 11 3 id char (12) unal, /* project ID */ 6 12 3 title char (52) unal, /* project title */ 6 13 3 inv char (32) unal, /* name of principal investigator */ 6 14 3 inv_addr char (32) unal, /* address */ 6 15 3 sup char (32) unal, /* name of supervisor */ 6 16 3 sup_addr char (32) unal, /* address */ 6 17 3 sup_phone char (16) unal, /* telephone */ 6 18 3 on fixed bin (71), /* date on */ 6 19 3 off fixed bin (71), /* date off */ 6 20 3 disk_psec fixed bin (71), /* project disk page-seconds */ 6 21 3 disk_quota fixed bin (35), /* project disk quota */ 6 22 3 dir_disk_quota fixed bin (35), /* project dir disk quota */ 6 23 3 disk_use fixed bin (35), /* total segment pages used */ 6 24 3 dir_disk_use fixed bin (35), /* total directory pages used */ 6 25 3 misc_charges float bin, /* manuals, etc */ 6 26 3 n_misc fixed bin, /* number of entries */ 6 27 3 processed fixed bin, /* temp for usage-report */ 6 28 3 pad bit (36) aligned; /* out to even number of words */ 6 29 6 30 dcl loph int static fixed bin (17) options (constant) init (8), /* lth of projfile header */ 6 31 lope int static fixed bin (17) options (constant) init (66); /* lth of projflile entry */ 6 32 6 33 dcl PROJFILE_VERSION fixed bin init (3) int static options (constant); 6 34 6 35 /* END INCLUDE FILE ... projfile.incl.pl1 */ 977 7 1 /* Requisition file declaration */ 7 2 /* Modified BIM 1984-07-10 for unaligned strings */ 7 3 /* Modified BIM 1984-09-14 foor 3000 size-array */ 7 4 7 5 dcl 1 reqfile based (qp) aligned, /* MIT accounting data */ 7 6 2 nacts fixed, 7 7 2 version fixed bin, 7 8 2 pad (6) bit (36) aligned, 7 9 2 reqfiletab (3000), /* one entry per Multics account */ 7 10 /* same size as projfile */ 7 11 3 acctid char (12) unal, /* account id. usually same as Proj */ 7 12 3 mitacct char (12) unal, /* MIT account no. */ 7 13 3 reqno char (12) unal, /* requisition or PO no. */ 7 14 3 qflag char (8), /* class & activity */ 7 15 3 procssd fixed bin, /* temp for usage report */ 7 16 3 qdn fixed bin (71), /* date on for account */ 7 17 3 qdf fixed bin (71), /* date off */ 7 18 3 billing_name char (32) unal, /* where to send bill */ 7 19 3 billing_addr char (32) unal, 7 20 3 chg_mo float bin (63), /* charges this month */ 7 21 3 chg_tr float bin (63), /* charges this req */ 7 22 3 req_amt float bin (63), /* req face value */ 7 23 3 cutoff fixed bin (71); /* term date for req */ 7 24 7 25 dcl loqh int static fixed bin (17) init (8), /* length of reqfile head */ 7 26 loqe int static fixed bin (17) init (40); /* lth of reqfile entry */ 7 27 7 28 declare REQFILE_VERSION fixed bin init (2) int static options (constant); 7 29 7 30 /* End include file reqfile.incl.pl1 */ 978 8 1 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 8 2 8 3 8 4 8 5 8 6 /****^ HISTORY COMMENTS: 8 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 8 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 8 9* Expand comment line of project.state to include the renamed state (state = 8 10* 3). 8 11* END HISTORY COMMENTS */ 8 12 8 13 8 14 8 15 /* Modified 740723 by PG to add AIM info */ 8 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 8 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 8 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 8 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 8 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 8 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 8 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 8 23 8 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 8 25 8 26 SAT_header_lth init (466), /* length in words of SAT header */ 8 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 8 28 8 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 8 30 ) fixed bin internal static options (constant); 8 31 8 32 dcl 1 sat based (satp) aligned, 8 33 9 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 9 2 9 3 /* the "author" items must always be the first ones in the table. The 9 4* module which moves the converted table to the System Control process 9 5* fills in these data items and assumes them to be at the head of the segment 9 6* regardless of the specific table's actual declaration. The variables 9 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 9 8* respectively. For tables installed in multiple processes, these 9 9* are to be used to lock out multiple installations. */ 9 10 9 11 /* Lock should be used as a modification lock. Since, in general, 9 12* entries may not be moved in system tables, even by installations, 9 13* it is sufficient for only installers and programs that change threads 9 14* to set or respect the lock. Simply updating data in an entry 9 15* requires no such protection. 9 16* 9 17* Last_install_time is used by readers of system tables to detect 9 18* installations or other serious modifications. By checking it before 9 19* and after copying a block of data, they can be protected against 9 20* modifications. 9 21* 9 22* Modules that set the lock should save proc_group_id, and then 9 23* put their group id there for the time they hold the lock. 9 24* if they do not actually install the, they should restore the group id. 9 25**/ 9 26 9 27 2 author aligned, /* validation data about table's author */ 9 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 9 29 3 lock bit (36), /* installation lock */ 9 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 9 31 3 update_authorization bit (1) unal, /* update only authorizations */ 9 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 9 33 3 pad bit (33) unaligned, 9 34 3 last_install_time fixed bin (71), 9 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 9 36 3 w_dir char (64), /* author's working directory */ 9 37 9 38 /* END INCLUDE FILE author.incl.pl1 */ 8 34 8 35 2 max_size fixed bin, /* max number of entries table can grow */ 8 36 2 current_size fixed bin, /* current size of table (in entries) */ 8 37 2 version fixed bin, /* version number of table (word 32) */ 8 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 8 39 2 n_projects fixed bin, /* number of entries actually used */ 8 40 2 pad_was_max_users bit (36) aligned, 8 41 2 max_units fixed bin, /* maximum number of login-units per session */ 8 42 2 pad_was_max_prim bit (36) aligned, 8 43 2 uwt_size fixed bin, /* size of User Weight Table */ 8 44 2 uwt (24) aligned, /* User Weight Table */ 8 45 3 initproc char (64) unaligned, /* user's initial procedure */ 8 46 3 units fixed bin, /* weight of initial procedure */ 8 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 8 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 8 49 2 project (3258), /* The SAT entries. 255K segment. */ 8 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 8 51 8 52 8 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 8 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 8 55 2 project_id char (12) unaligned, /* project's name */ 8 56 2 project_dir char (64) unaligned, /* project's directory */ 8 57 2 pdt_ptr pointer, /* pointer to current PDT */ 8 58 2 max_users fixed bin, /* maximum number of users from project */ 8 59 2 n_users fixed bin, /* current number */ 8 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 8 61 2 admin (4) aligned, /* list of project's administrators */ 8 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 8 63 3 pad char (2) unal, 8 64 2 cutoff char (1), /* if project is cut off, why. */ 8 65 2 min_ring fixed bin, /* lowest ring for project */ 8 66 2 max_ring fixed bin, /* highest ring for project */ 8 67 2 alias char (8) unal, /* project alias */ 8 68 2 group char (8) unal, /* default group for this project */ 8 69 2 grace_max fixed bin, /* maximum bump grace */ 8 70 2 audit bit (36), /* audit flags for project */ 8 71 2 project_authorization (2) bit (72), /* authorization of this project */ 8 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 8 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 8 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 8 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 8 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 8 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 8 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 8 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 8 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 8 81 2 satpad1 fixed bin (9) unsigned unaligned, 8 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 8 83 2 chain fixed bin; /* if free entry, chain */ 8 84 8 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 979 10 1 /* BEGIN INCLUDE FILE - - - create_branch_info.incl.pl1 - - - created January 1975 */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(89-01-16,TLNguyen), approve(89-01-16,MCR8049), 10 6* audit(89-02-03,Parisek), install(89-03-15,MR12.3-1025): 10 7* 1. Declare version constant properly. 10 8* 2. Remove version 1 since it was never referenced and to force 10 9* callers to upgrade their programs. 10 10* END HISTORY COMMENTS */ 10 11 10 12 10 13 /* Modified December 1984 for dir_quota, Keith Loepere. */ 10 14 10 15 /* this include files gives the argument structure for create_branch_ */ 10 16 10 17 dcl 1 create_branch_info aligned based, 10 18 2 version fixed bin, /* set this to the largest value given below */ 10 19 2 switches unaligned, 10 20 3 dir_sw bit (1) unaligned, /* if on, a directory branch is wanted */ 10 21 3 copy_sw bit (1) unaligned, /* if on, initiating segment will be done by copying */ 10 22 3 chase_sw bit (1) unaligned, /* if on, if pathname is a link, it will be chased */ 10 23 3 priv_upgrade_sw bit (1) unaligned, /* privileged creation (ring 1) of upgraded object */ 10 24 3 parent_ac_sw bit (1) unaligned, /* if on, use parent's access class for seg or dir created */ 10 25 3 mbz1 bit (31) unaligned, /* pad to full word */ 10 26 2 mode bit (3) unaligned, /* segment or directory for acl for userid */ 10 27 2 mbz2 bit (33) unaligned, /* pad to full word */ 10 28 2 rings (3) fixed bin (3), /* branch's ring brackets */ 10 29 2 userid char (32), /* user's access control name */ 10 30 2 bitcnt fixed bin (24), /* bit count of the segment */ 10 31 2 quota fixed bin (18), /* for directories, this am't of quota will be moved to it */ 10 32 2 access_class bit (72), /* is the access class of the body of the branch */ 10 33 2 dir_quota fixed bin (18); /* for directories, this am't of dir quota will be moved to it */ 10 34 10 35 dcl create_branch_version_2 fixed bin int static options (constant) init (2); 10 36 10 37 /* END INCLUDE FILE - - - create_branch_info.incl.pl1 - - - */ 10 38 980 11 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 11 2 /* format: style3,indcomtxt,idind30 */ 11 3 11 4 declare acl_ptr pointer; 11 5 declare acl_count fixed bin; 11 6 11 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 11 8 2 version char (8) aligned, 11 9 2 count fixed bin, 11 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 11 11 11 12 declare 1 general_acl_entry based, 11 13 2 access_name character (32) unaligned, 11 14 2 mode bit (36) aligned, 11 15 2 status_code fixed bin (35); 11 16 11 17 11 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 11 19 2 version char (8) aligned, 11 20 2 count fixed bin, 11 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 11 22 11 23 declare 1 general_extended_acl_entry aligned based, 11 24 2 access_name character (32) unaligned, 11 25 2 mode bit (36) aligned, 11 26 2 extended_mode bit (36) aligned, 11 27 2 status_code fixed bin (35); 11 28 11 29 11 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 11 31 2 version char (8) aligned, 11 32 2 count fixed bin, 11 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 11 34 11 35 declare 1 general_delete_acl_entry aligned based, 11 36 2 access_name character (32) unaligned, 11 37 2 status_code fixed bin (35); 11 38 11 39 11 40 declare 1 segment_acl aligned based (acl_ptr), 11 41 2 version fixed bin, 11 42 2 count fixed bin, 11 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 11 44 11 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 11 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 11 47 11 48 11 49 declare 1 directory_acl aligned based (acl_ptr), 11 50 2 version fixed bin, 11 51 2 count fixed bin, 11 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 11 53 11 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 11 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 11 56 11 57 11 58 declare 1 delete_acl based (acl_ptr) aligned, 11 59 2 version fixed bin, 11 60 2 count fixed bin, 11 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 11 62 11 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 11 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 11 65 11 66 11 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 11 68 DIR_ACL_VERSION_1 init ("dra1"), 11 69 DELETE_ACL_VERSION_1 init ("dla1")) 11 70 char (4) int static options (constant); 11 71 11 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 11 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 11 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 11 75 char (8) internal static options (constant); 11 76 11 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 11 78 11 79 /* End include file acl_structures.incl.pl1 */ 981 12 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 12 2 /* format: style2,^inddcls,idind32 */ 12 3 12 4 declare 1 terminate_file_switches based, 12 5 2 truncate bit (1) unaligned, 12 6 2 set_bc bit (1) unaligned, 12 7 2 terminate bit (1) unaligned, 12 8 2 force_write bit (1) unaligned, 12 9 2 delete bit (1) unaligned; 12 10 12 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 12 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 12 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 12 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 12 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 12 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 12 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 12 18 12 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 982 13 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 13 2* 13 3* Values for the "access mode" argument so often used in hardcore 13 4* James R. Davis 26 Jan 81 MCR 4844 13 5* Added constants for SM access 4/28/82 Jay Pattin 13 6* Added text strings 03/19/85 Chris Jones 13 7**/ 13 8 13 9 13 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 13 11 dcl ( 13 12 N_ACCESS init ("000"b), 13 13 R_ACCESS init ("100"b), 13 14 E_ACCESS init ("010"b), 13 15 W_ACCESS init ("001"b), 13 16 RE_ACCESS init ("110"b), 13 17 REW_ACCESS init ("111"b), 13 18 RW_ACCESS init ("101"b), 13 19 S_ACCESS init ("100"b), 13 20 M_ACCESS init ("010"b), 13 21 A_ACCESS init ("001"b), 13 22 SA_ACCESS init ("101"b), 13 23 SM_ACCESS init ("110"b), 13 24 SMA_ACCESS init ("111"b) 13 25 ) bit (3) internal static options (constant); 13 26 13 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 13 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 13 29 13 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 13 31 static options (constant); 13 32 13 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 13 34 static options (constant); 13 35 13 36 dcl ( 13 37 N_ACCESS_BIN init (00000b), 13 38 R_ACCESS_BIN init (01000b), 13 39 E_ACCESS_BIN init (00100b), 13 40 W_ACCESS_BIN init (00010b), 13 41 RW_ACCESS_BIN init (01010b), 13 42 RE_ACCESS_BIN init (01100b), 13 43 REW_ACCESS_BIN init (01110b), 13 44 S_ACCESS_BIN init (01000b), 13 45 M_ACCESS_BIN init (00010b), 13 46 A_ACCESS_BIN init (00001b), 13 47 SA_ACCESS_BIN init (01001b), 13 48 SM_ACCESS_BIN init (01010b), 13 49 SMA_ACCESS_BIN init (01011b) 13 50 ) fixed bin (5) internal static options (constant); 13 51 13 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 983 14 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 14 2 /* format: style2 */ 14 3 14 4 declare condition_info_header_ptr 14 5 pointer; 14 6 declare 1 condition_info_header 14 7 aligned based (condition_info_header_ptr), 14 8 2 length fixed bin, /* length in words of this structure */ 14 9 2 version fixed bin, /* version number of this structure */ 14 10 2 action_flags aligned, /* tell handler how to proceed */ 14 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 14 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 14 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 14 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 14 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 14 16 3 pad bit (32) unaligned, 14 17 2 info_string char (256) varying, /* may contain printable message */ 14 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 14 19 14 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 984 15 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 15 2 /* format: style2 */ 15 3 15 4 /* The include file condition_info_header must be used with this file */ 15 5 15 6 declare sub_error_info_ptr pointer; 15 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 15 8 2 header aligned like condition_info_header, 15 9 2 retval fixed bin (35), /* return value */ 15 10 2 name char (32), /* module name */ 15 11 2 info_ptr ptr; 15 12 15 13 declare sub_error_info_version_1 15 14 internal static options (constant) fixed bin init (1); 15 15 15 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 985 16 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 16 2 16 3 /* Structure for find_condition_info_. 16 4* 16 5* Written 1-Mar-79 by M. N. Davidoff. 16 6**/ 16 7 16 8 /* automatic */ 16 9 16 10 declare condition_info_ptr pointer; 16 11 16 12 /* based */ 16 13 16 14 declare 1 condition_info aligned based (condition_info_ptr), 16 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 16 16 2 version fixed binary, /* Must be 1 */ 16 17 2 condition_name char (32) varying, /* name of condition */ 16 18 2 info_ptr pointer, /* pointer to the condition data structure */ 16 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 16 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 16 21 2 flags unaligned, 16 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 16 23 3 pad1 bit (35), 16 24 2 pad2 bit (36), 16 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 16 26 2 pad3 (4) bit (36); 16 27 16 28 /* internal static */ 16 29 16 30 declare condition_info_version_1 16 31 fixed binary internal static options (constant) initial (1); 16 32 16 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 986 17 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 17 2 17 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 17 4 17 5 /* This include file contains branch and link structures returned by 17 6* hcs_$status_ and hcs_$status_long. */ 17 7 17 8 dcl 1 status_branch aligned based (status_ptr), 17 9 2 short aligned, 17 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 17 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 17 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 17 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 17 14 3 dtu bit (36) unaligned, /* date/time last used */ 17 15 3 mode bit (5) unaligned, /* caller's effective access */ 17 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 17 17 3 pad1 bit (8) unaligned, 17 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 17 19 17 20 /* Limit of information returned by hcs_$status_ */ 17 21 17 22 2 long aligned, 17 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 17 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 17 25 3 lvid bit (36) unaligned, /* logical volume ID */ 17 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 17 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 17 28 3 pad2 bit (8) unaligned, 17 29 3 copy_switch bit (1) unaligned, /* copy switch */ 17 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 17 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 17 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 17 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 17 34 3 pad3 bit (5) unaligned, 17 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 17 36 3 uid bit (36) unaligned; /* unique ID */ 17 37 17 38 dcl 1 status_link aligned based (status_ptr), 17 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 17 40 2 nnames fixed bin (16) unaligned unsigned, 17 41 2 names_relp bit (18) unaligned, 17 42 2 dtem bit (36) unaligned, 17 43 2 dtd bit (36) unaligned, 17 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 17 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 17 46 17 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 17 48 based (pointer (status_area_ptr, status_branch.names_relp)), 17 49 /* array of names returned */ 17 50 status_pathname character (status_link.pathname_length) aligned 17 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 17 52 /* link target path */ 17 53 status_area_ptr pointer, 17 54 status_ptr pointer; 17 55 17 56 dcl (Link initial (0), 17 57 Segment initial (1), 17 58 Directory initial (2)) fixed bin internal static options (constant); 17 59 /* values for type fields declared above */ 17 60 17 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 987 18 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 18 2 /* format: style3 */ 18 3 18 4 /* These constants are to be used for the flags argument of sub_err_ */ 18 5 /* They are just "string (condition_info_header.action_flags)" */ 18 6 18 7 declare ( 18 8 ACTION_CAN_RESTART init (""b), 18 9 ACTION_CANT_RESTART init ("1"b), 18 10 ACTION_DEFAULT_RESTART 18 11 init ("01"b), 18 12 ACTION_QUIET_RESTART 18 13 init ("001"b), 18 14 ACTION_SUPPORT_SIGNAL 18 15 init ("0001"b) 18 16 ) bit (36) aligned internal static options (constant); 18 17 18 18 /* End include file */ 988 19 1 /* BEGIN INCLUDE FILE ... pnt_entry.incl.pl1 */ 19 2 19 3 /* Modified 790702 by C. Hornig for MSF PNT */ 19 4 /* Modified 84-07-18 BIM for V2, aim ranges, long passwords. */ 19 5 /* Modified 84-09-25 for operator attribute... -E. A. Ranzenbach */ 19 6 /* Modified 85-03-05 E. Swenson for user_validated_time */ 19 7 19 8 /**** The ms_table_mgr_ has fixed sized entries, for now. 19 9* The presence of a version field and some pad allow 19 10* us to have incrementally-upgraded PNTE's in a future change. 19 11**/ 19 12 19 13 /**** The conversion to V2 copies the existing encrypted passwords. 19 14* Since the 32 character scrambling algorithm will not give the 19 15* same results, the short_XX flags indicate that the old scrambler 19 16* should be used. The short flags are automatically turned off 19 17* by calls to update the password with the long-scrambled form. */ 19 18 19 19 /* format: style4,insnl,delnl */ 19 20 19 21 declare pntep pointer automatic; 19 22 declare 1 pnt_entry based (pntep) aligned, /* declaration of a single PNT entry */ 19 23 2 version fixed bin, 19 24 2 private aligned, 19 25 3 pw_flags aligned, 19 26 4 short_pw bit (1) unal, /* ON password is eight-character form */ 19 27 4 short_network_pw bit (1) unal, /* ON card password is eight character form. */ 19 28 3 password character (32), /* person's password */ 19 29 3 network_password character (32), 19 30 2 public, 19 31 3 user_id character (32), /* user ID (for alias entries */ 19 32 3 alias character (8), 19 33 3 default_project character (16), /* user's default project */ 19 34 3 flags, /* one-bit flags */ 19 35 4 has_password bit (1) unaligned, 19 36 4 has_network_password bit (1) unaligned, 19 37 4 trap bit (1) unal, /* If this password is used, holler */ 19 38 4 lock bit (1) unal, /* prevent login if on. */ 19 39 4 nochange bit (1) unal, /* user cannot change password */ 19 40 4 must_change bit unal, /* user must change password at next login */ 19 41 4 pw_time_lock bit (1) unal, /* if password has a time lock */ 19 42 4 generate_pw bit (1) unal, /* ON if we give new pw, OFF lets user select new pw */ 19 43 4 last_bad_pw_reported bit (1) unal, /* ON if user has NOT been told about last bad password */ 19 44 4 operator bit (1) unal, /* ON if user can login as an operator... */ 19 45 4 pads bit (26) unal, 19 46 3 n_good_pw fixed bin, /* Number of good passwords */ 19 47 3 n_bad_pw fixed bin, /* Number of wrong passwords */ 19 48 3 n_bad_pw_since_good fixed bin, /* Number of wrong passwords since good */ 19 49 3 time_pw_changed fixed bin (71), /* When password was modified by user */ 19 50 19 51 3 time_last_good_pw fixed bin (71), 19 52 3 time_last_bad_pw fixed bin (71), /* When pw was last given wrong */ 19 53 3 bad_pw_term_id character (4), /* where bad password from */ 19 54 3 bad_pw_line_type fixed bin (17), /* ... */ 19 55 3 bad_pw_term_type character (32), 19 56 3 password_timelock fixed bin (71), /* Password is locked up until here */ 19 57 3 person_authorization (2) bit (72), /* authorization of this person */ 19 58 3 default_person_authorization bit (72), /* default authorization of this person */ 19 59 3 audit bit (36), /* audit flags for person */ 19 60 3 pad1 bit (36), /* pad to even word boundary */ 19 61 3 user_validated_time fixed bin (71), /* time this PNT entry was last validated by an administrator */ 19 62 2 pad (80 - 64) bit (36) aligned; 19 63 19 64 declare PNT_ENTRY_VERSION_2 fixed bin init (2) int static options (constant); 19 65 19 66 /* END INCLUDE FILE ... pnte.incl.pl1 */ 989 990 991 end new_proj; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/15/89 0800.0 new_proj.pl1 >special_ldd>install>MR12.3-1025>new_proj.pl1 870 1 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 974 2 09/20/84 0925.7 edit_proj_arguments_.incl.pl1 >ldd>include>edit_proj_arguments_.incl.pl1 975 3 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 3-112 4 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 976 5 01/30/85 1523.9 sys_admin_data.incl.pl1 >ldd>include>sys_admin_data.incl.pl1 977 6 09/20/84 0925.7 projfile.incl.pl1 >ldd>include>projfile.incl.pl1 978 7 09/20/84 0925.7 reqfile.incl.pl1 >ldd>include>reqfile.incl.pl1 979 8 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 8-34 9 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 980 10 03/15/89 0759.4 create_branch_info.incl.pl1 >special_ldd>install>MR12.3-1025>create_branch_info.incl.pl1 981 11 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 982 12 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 983 13 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 984 14 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 985 15 07/18/81 1100.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.incl.pl1 986 16 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 987 17 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 988 18 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 989 19 03/15/85 0953.1 pnt_entry.incl.pl1 >ldd>include>pnt_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. ACTION_CANT_RESTART 000125 constant bit(36) initial dcl 18-7 set ref 658* 764* 898* 903* A_ACCESS constant bit(3) initial packed unaligned dcl 13-11 ref 683 Bprojfile based structure level 1 dcl 181 set ref 636* Breqfile based structure level 1 dcl 183 set ref 637* CBI 001565 automatic structure level 1 dcl 178 set ref 641* 653 653 656 656 CI 000100 automatic structure level 1 dcl 249 set ref 254 254 EDIT_PROJ_ARGS_V_2 000004 constant char(8) initial packed unaligned dcl 2-43 ref 460 EPA 001610 automatic structure level 1 dcl 179 set ref 471 471 E_ACCESS constant bit(3) initial packed unaligned dcl 13-11 ref 509 509 LEGAL 000006 constant char(71) initial packed unaligned dcl 187 ref 239 594 605 Nprojfile 001766 automatic structure level 1 dcl 182 set ref 463 636 Nreqfile 002070 automatic structure level 1 dcl 184 set ref 464 637 Nsate 001646 automatic structure level 1 dcl 180 set ref 338* 462 635 RW_ACCESS 000000 constant bit(3) initial packed unaligned dcl 13-11 set ref 294* 307 313* 317* 763* 792* 801 R_ACCESS 000125 constant bit(3) initial packed unaligned dcl 13-11 set ref 264* 321* 328* 685 801 SAT_entry_lth constant fixed bin(17,0) initial dcl 8-24 ref 849 SAT_header_lth constant fixed bin(17,0) initial dcl 8-24 ref 849 SMA_ACCESS constant bit(3) initial packed unaligned dcl 13-11 ref 309 645 692 723 723 S_ACCESS constant bit(3) initial packed unaligned dcl 13-11 ref 694 TERM_FILE_TERM 000002 constant bit(3) initial packed unaligned dcl 12-14 set ref 274* 852* 858* TERM_FILE_TRUNC_BC_TERM 000001 constant bit(3) initial packed unaligned dcl 12-15 set ref 821* 823* 845* 847* 849* TESTING 000200 automatic bit(1) initial dcl 69 set ref 69* 225* 250 USER_RING 000112 constant fixed bin(3,0) initial dcl 91 set ref 744* absolute_pathname_ 000066 constant entry external dcl 147 ref 482 967 968 access 000176 automatic bit(36) dcl 67 set ref 502* 509 access_class 20 001565 automatic bit(72) level 2 dcl 178 set ref 650* access_name 002436 automatic char(32) array level 2 in structure "dir_acl_array" packed packed unaligned dcl 194 in procedure "new_proj" set ref 305* 681* 690* 709* 733* 750* access_name 002260 automatic char(32) array level 2 in structure "seg_acl_array" packed packed unaligned dcl 193 in procedure "new_proj" set ref 305* 681* 811* acctid 10 based char(12) array level 3 in structure "reqfile" packed packed unaligned dcl 7-5 in procedure "new_proj" set ref 373 acctid 002070 automatic char(12) level 2 in structure "Nreqfile" packed packed unaligned dcl 184 in procedure "new_proj" set ref 385* acl_count 002616 automatic fixed bin(17,0) dcl 11-5 set ref 290* 304* 304 305 305 307 308 309 680* 680 681 681 683 685 686 689* 689 690 692 694 701 703 705 721 726* 728 744* 746 800 804 806 addr builtin function dcl 123 ref 254 254 352 371 384 397 462 463 464 471 471 610 610 653 653 656 656 703 703 726 726 744 744 804 804 878 881 881 901 902 902 admin 31 001646 automatic structure array level 2 dcl 180 after builtin function dcl 123 ref 950 aim_check_$equal 000010 constant entry external dcl 110 ref 644 al 000174 automatic fixed bin(21,0) dcl 64 set ref 213* 214 218 218 223 225 229 229 alias 74 001646 automatic char(8) level 2 packed packed unaligned dcl 180 set ref 415* 667 669 670* all 22 001610 automatic bit(1) level 3 packed packed unaligned dcl 179 set ref 467* answer_iocbp 6 000472 automatic pointer initial level 2 dcl 1-7 set ref 1-7* ap 000172 automatic pointer dcl 63 set ref 213* 214 218 223 225 229 arg_count 000201 automatic fixed bin(17,0) dcl 70 set ref 199* 205 212 asc1 parameter char packed unaligned dcl 965 set ref 963 967* at 30 001646 automatic structure level 2 dcl 180 set ref 407* audd parameter char packed unaligned dcl 965 set ref 963 968* audit 101 001646 automatic bit(36) level 2 dcl 180 set ref 421* bchr based char packed unaligned dcl 65 set ref 214 218* 223 225 229* bcs based char(131071) packed unaligned dcl 175 set ref 769* 771* 777* 782* 785* 819* 819 before builtin function dcl 123 ref 942 billing_addr 30 002070 automatic char(32) level 2 packed packed unaligned dcl 184 set ref 454* billing_name 20 002070 automatic char(32) level 2 packed packed unaligned dcl 184 set ref 453* bitct 000167 automatic fixed bin(24,0) dcl 60 set ref 321* 324 buf 000100 automatic char(1000) packed unaligned dcl 868 set ref 881* 882 884 byte builtin function dcl 123 ref 884 caller 2 001610 automatic char(32) level 2 packed packed unaligned dcl 179 set ref 461* chain 117 001646 automatic fixed bin(17,0) level 2 dcl 180 set ref 425* changes 23 001610 automatic structure level 2 dcl 179 set ref 468* char16 000214 automatic char(16) packed unaligned dcl 73 set ref 361* 362 362 363 363 char168 000220 automatic char(168) packed unaligned dcl 74 set ref 481* 482* 483* 768* 769 781* 782 char32 000746 automatic char(32) packed unaligned dcl 78 set ref 576* 578 580 582 594 596* 599 601* 605 605* 609 610 611* char500 000272 automatic char(500) packed unaligned dcl 75 set ref 560* 563* 564* 775* 776 776 char500_2 000467 automatic char(500) packed unaligned dcl 75 set ref 776* 777 chg_mo 40 002070 automatic float bin(63) level 2 dcl 184 set ref 455* chg_tr 42 002070 automatic float bin(63) level 2 dcl 184 set ref 456* cleanup 002602 stack reference condition dcl 195 ref 246 clock builtin function dcl 123 ref 435 451 com_err_ 000054 constant entry external dcl 140 ref 202 207 218 229 236 241 256 273 297 356 379 392 483 497 505 511 521 530 564 586 596 605 611 617 626 660 670 709 715 733 738 750 756 795 811 816 command_query_ 000030 constant entry external dcl 128 ref 881 condition_info based structure level 1 dcl 16-14 condition_info_header based structure level 1 dcl 14-6 condition_info_version_1 constant fixed bin(17,0) initial dcl 16-30 ref 253 continue_to_signal_ 000076 constant entry external dcl 151 ref 250 convert_access_class_$from_string 000056 constant entry external dcl 141 ref 563 convert_access_class_$to_string_short 000060 constant entry external dcl 143 ref 775 convert_date_to_binary_$relative 000036 constant entry external dcl 131 ref 458 cp_escape_control 1(02) 000472 automatic bit(2) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* create_branch_info based structure level 1 dcl 10-17 create_branch_version_2 constant fixed bin(17,0) initial dcl 10-35 ref 642 cu_$arg_count 000040 constant entry external dcl 134 ref 199 cu_$arg_ptr 000042 constant entry external dcl 135 ref 213 current_size 36 based fixed bin(17,0) level 2 dcl 8-32 set ref 346 351 830* 849 cutoff 71 001646 automatic char(1) level 2 in structure "Nsate" dcl 180 in procedure "new_proj" set ref 412* cutoff 46 002070 automatic fixed bin(71,0) level 2 in structure "Nreqfile" dcl 184 in procedure "new_proj" set ref 458* datebin_$last_midnight 000034 constant entry external dcl 130 ref 457 default_audit_flags 241 based bit(36) level 2 dcl 5-10 ref 421 default_proj_attributes 233 based bit(36) level 2 dcl 5-10 set ref 286* 407 default_proj_grace 240 based fixed bin(17,0) level 2 dcl 5-10 set ref 283* 419 default_proj_group 236 based char(8) level 2 dcl 5-10 set ref 280 282* 416 default_proj_ring1 234 based fixed bin(17,0) level 2 dcl 5-10 set ref 284* 413 default_proj_ring2 235 based fixed bin(17,0) level 2 dcl 5-10 set ref 285* 414 delegated 000163 automatic bit(1) dcl 58 set ref 473* 475* 479 delete_acl_entry based structure level 1 dcl 11-63 dir parameter char packed unaligned dcl 892 set ref 889 897* 898* 903* dir_acl_array 002436 automatic structure array level 1 dcl 194 set ref 703 703 726 726 744 744 dir_disk_quota 73 001766 automatic fixed bin(35,0) level 2 dcl 182 set ref 439* 649 dir_disk_use 75 001766 automatic fixed bin(35,0) level 2 dcl 182 set ref 441* dir_dn 002650 automatic char(168) packed unaligned dcl 893 set ref 897* 902* dir_en 002722 automatic char(32) packed unaligned dcl 894 set ref 897* 902* dir_priv_code 000100 automatic fixed bin(35,0) initial dcl 55 set ref 55* 663* 843 843* dir_quota 22 001565 automatic fixed bin(18,0) level 2 dcl 178 set ref 649* dir_sw 1 001565 automatic bit(1) level 3 packed packed unaligned dcl 178 set ref 643* directory_acl_entry based structure level 1 dcl 11-54 disk_psec 70 001766 automatic fixed bin(71,0) level 2 dcl 182 set ref 437* disk_quota 72 001766 automatic fixed bin(35,0) level 2 dcl 182 set ref 438* 648 disk_use 74 001766 automatic fixed bin(35,0) level 2 dcl 182 set ref 440* divide builtin function dcl 123 ref 324 dn 000101 automatic char(168) packed unaligned dcl 56 set ref 262* 264* 294* 313* 317* 321* 326* 328* 332* 333* 761* 763* 764* ec 000175 automatic fixed bin(35,0) dcl 66 set ref 199* 200 202* 264* 265 267* 268 268 271 273* 294* 295 297* 313* 314 317* 318 321* 322 328* 329 333* 334 479* 479* 482* 483 483* 485 487* 487* 493* 496* 497 497* 502* 503 505* 556 558* 558* 563* 564 564* 566 610* 611 653* 656* 658 658 658* 660 660* 669* 670 670* 703* 705 715 715* 726* 728 738 738* 744* 746 756 756* 763* 764 764* 792* 793 795* 804* 806 816 816* 852* 856* 897* 898 898* 902* 903 903* edit_proj_ 000100 constant entry external dcl 152 ref 471 edit_proj_arg based structure level 1 dcl 2-9 en 000153 automatic char(32) packed unaligned dcl 57 set ref 263* 264* 293* 294* 297* 312* 313* 316* 317* 320* 321* 327* 328* 332* 333* 337* 762* error_table_$badopt 000016 external static fixed bin(35,0) dcl 113 set ref 229* error_table_$id_not_found 000024 external static fixed bin(35,0) dcl 117 ref 611 error_table_$invalid_lock_reset 000026 external static fixed bin(35,0) dcl 119 ref 271 error_table_$locked_by_this_process 000022 external static fixed bin(35,0) dcl 115 ref 268 error_table_$namedup 000020 external static fixed bin(35,0) dcl 114 ref 658 660 expand_pathname_ 000062 constant entry external dcl 145 ref 332 897 explanation parameter char packed unaligned dcl 869 set ref 864 878 879 explanation_len 14 000472 automatic fixed bin(21,0) initial level 2 dcl 1-7 set ref 879* 1-7* explanation_ptr 12 000472 automatic pointer initial level 2 dcl 1-7 set ref 878* 1-7* extended_mode 11 002260 automatic bit(36) array level 2 dcl 193 set ref 308* 686* find_condition_info_ 000102 constant entry external dcl 154 ref 254 flags 22 001610 automatic structure level 2 dcl 179 set ref 466* found_error 000202 automatic bit(1) dcl 71 set ref 704* 712* 715 727* 732* 738 745* 753* 756 805* 810* 816 general_acl_entry based structure level 1 unaligned dcl 11-12 general_delete_acl_entry based structure level 1 dcl 11-35 general_extended_acl_entry based structure level 1 dcl 11-23 get_group_id_ 000046 constant entry external dcl 137 ref 291 647 get_ring_ 000104 constant entry external dcl 155 ref 502 502 get_wdir_ 000044 constant entry external dcl 136 ref 262 761 grace_max 100 001646 automatic fixed bin(17,0) level 2 dcl 180 set ref 419* group 76 001646 automatic char(8) level 2 packed packed unaligned dcl 180 set ref 416* groups 106 001646 automatic char(8) array level 2 packed packed unaligned dcl 180 set ref 417* 418* have_anonymous_user 001530 automatic bit(1) dcl 89 set ref 572* 584 589* hbound builtin function dcl 123 ref 614 617 617 hcs_$add_acl_entries 000106 constant entry external dcl 156 ref 804 hcs_$add_dir_acl_entries 000110 constant entry external dcl 157 ref 703 726 hcs_$add_dir_inacl_entries 000112 constant entry external dcl 159 ref 744 hcs_$chname_file 000116 constant entry external dcl 162 ref 669 hcs_$create_branch_ 000114 constant entry external dcl 161 ref 656 hcs_$get_access_class 000120 constant entry external dcl 163 ref 333 hcs_$status_long 000126 constant entry external dcl 168 ref 902 header based structure level 2 dcl 15-7 i 000164 automatic fixed bin(17,0) dcl 59 set ref 212* 213* 301* 302 305* 351* 352* 373* 373* 376 376 384 387* 387* 389 389 397 408* 409 410* 474* 475* 677* 678 681* 705* 707 709 709* 721* 723 723* 728* 730 733 733* 746* 748 750 750* 780* 781* 800* 801 801* 806* 808 811 811* id 10 based char(12) array level 3 in structure "projfile" packed packed unaligned dcl 6-6 in procedure "new_proj" set ref 387 id 001766 automatic char(12) level 2 in structure "Nprojfile" packed packed unaligned dcl 182 in procedure "new_proj" set ref 398* index builtin function dcl 123 ref 214 599 605 info_ptr 14 000100 automatic pointer level 2 dcl 249 set ref 255 info_string 3 based varying char(256) level 3 dcl 15-7 set ref 256* initiate_file_ 000122 constant entry external dcl 164 ref 264 294 313 317 321 328 initiate_file_$create 000124 constant entry external dcl 166 ref 763 792 inv 20 001766 automatic char(32) level 2 packed packed unaligned dcl 182 set ref 428* inv_addr 30 001766 automatic char(32) level 2 packed packed unaligned dcl 182 set ref 429* ioa_ 000050 constant entry external dcl 138 ref 341 365 568 601 631 969 ioa_$rs 000052 constant entry external dcl 139 ref 768 776 781 j 000165 automatic fixed bin(17,0) dcl 59 set ref 768* 769 769 771 772* 772 777 778* 778 782 783* 783 785 787* 787 819 819 821 823 k 000166 automatic fixed bin(17,0) dcl 59 set ref 776* 777 777 778 781* 782 782 783 length builtin function dcl 123 ref 234 879 935 945 953 literal_sw 1(05) 000472 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 876* 1-7* lock based bit(36) level 2 dcl 5-10 set ref 267* 856* locker 1 based char(24) level 2 dcl 5-10 set ref 273* long 4 002732 automatic structure level 2 dcl 895 lope constant fixed bin(17,0) initial dcl 6-30 ref 845 loph constant fixed bin(17,0) initial dcl 6-30 ref 845 loqe constant fixed bin(17,0) initial dcl 7-25 ref 847 loqh constant fixed bin(17,0) initial dcl 7-25 ref 847 lvid 6 002732 automatic bit(36) level 3 in structure "status" packed packed unaligned dcl 895 in procedure "get_dir_lvid" set ref 906 lvid 000170 automatic bit(36) dcl 61 in procedure "new_proj" set ref 496* 499 match_value 32 001610 automatic structure level 2 dcl 179 max_ring 73 001646 automatic fixed bin(17,0) level 2 dcl 180 set ref 414* max_users 26 001646 automatic fixed bin(17,0) level 2 dcl 180 set ref 405* mdc_$create_dirx_acct 000070 constant entry external dcl 148 ref 653 mdc_$find_lvid 000074 constant entry external dcl 150 ref 496 mdc_$get_lv_access 000072 constant entry external dcl 149 ref 502 mgtp 20 001610 automatic pointer level 3 in structure "EPA" dcl 179 in procedure "new_proj" set ref 465* mgtp 001536 automatic pointer dcl 98 in procedure "new_proj" set ref 328* 465 min_ring 72 001646 automatic fixed bin(17,0) level 2 dcl 180 set ref 413* misc_charges 76 001766 automatic float bin(27) level 2 dcl 182 set ref 442* mitacct 3 002070 automatic char(12) level 2 packed packed unaligned dcl 184 set ref 446* mode 2 001565 automatic bit(3) level 2 in structure "CBI" packed packed unaligned dcl 178 in procedure "new_proj" set ref 645* mode 10 002436 automatic bit(36) array level 2 in structure "dir_acl_array" dcl 194 in procedure "new_proj" set ref 309* 683* 692* 694* 723 723* mode 10 002260 automatic bit(36) array level 2 in structure "seg_acl_array" dcl 193 in procedure "new_proj" set ref 307* 685* 801 801* mylock 000171 automatic bit(1) initial packed unaligned dcl 62 set ref 62* 268* 856 n_misc 77 001766 automatic fixed bin(17,0) level 2 dcl 182 set ref 443* n_users 001473 automatic fixed bin(17,0) dcl 83 in procedure "new_proj" set ref 571* 590* 590 591 608* 608 609 614 623 780 n_users 27 001646 automatic fixed bin(17,0) level 2 in structure "Nsate" dcl 180 in procedure "new_proj" set ref 406* nacts based fixed bin(17,0) level 2 dcl 7-5 set ref 347 373 376 828* 847 new_value 26 001610 automatic structure level 2 dcl 179 nproj based fixed bin(35,0) level 2 dcl 6-6 set ref 348 387 389 829* 845 null builtin function dcl 123 ref 245 254 254 349 404 469 658 658 764 764 845 847 849 852 854 1-7 1-7 1-7 898 898 902 902 903 903 off 76 based fixed bin(71,0) array level 3 in structure "projfile" dcl 6-6 in procedure "new_proj" set ref 389 off 66 001766 automatic fixed bin(71,0) level 2 in structure "Nprojfile" dcl 182 in procedure "new_proj" set ref 436* on 64 001766 automatic fixed bin(71,0) level 2 dcl 182 set ref 435* pad 40(18) 001646 automatic char(2) array level 3 packed packed unaligned dcl 180 set ref 410* padding 1(07) 000472 automatic bit(29) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* parent_ac_sw 1(04) 001565 automatic bit(1) level 3 packed packed unaligned dcl 178 set ref 644* 650 663 pdt_ptr 24 001646 automatic pointer level 2 dcl 180 set ref 404* person 002754 automatic varying char(32) dcl 916 set ref 942* 943 945 947 pmf_dir 000664 automatic char(168) initial packed unaligned dcl 76 set ref 76* 482* 790 792* 795* 804* 811* 816* pmf_en 000736 automatic char(32) packed unaligned dcl 77 set ref 344* 762 763* 764* 792* 804* 811* 816* pnt_entry based structure level 1 dcl 19-22 pnt_manager_$get_entry 000032 constant entry external dcl 129 ref 610 pnte 002140 automatic structure level 1 dcl 185 set ref 610 610 pp 001532 automatic pointer dcl 96 set ref 245* 313* 348 387 387 389 389 397 829 845 845* 845 processed 100 001766 automatic fixed bin(17,0) level 2 dcl 182 set ref 444* procssd 13 002070 automatic fixed bin(17,0) level 2 dcl 184 set ref 450* project based structure level 1 dcl 8-53 in procedure "new_proj" set ref 635* project 002765 automatic varying char(32) dcl 916 in procedure "check_user_id_syntax" set ref 950* 951 953 955 project 722 based structure array level 2 in structure "sat" dcl 8-32 in procedure "new_proj" set ref 352 371 project_authorization 102 001646 automatic bit(72) array level 2 dcl 180 set ref 422* 558 773 775* project_dir 4 001646 automatic char(64) level 2 packed packed unaligned dcl 180 set ref 403* project_dir_acc 001474 automatic bit(72) initial dcl 84 set ref 84* 563* 644* 650 project_dir_account 001516 automatic char(32) initial packed unaligned dcl 87 set ref 87* 524* 527 527* 653* project_dir_lv 001476 automatic char(32) packed unaligned dcl 85 set ref 488* 493 496* 497* 499* 502* 511* 653 653* project_dir_owner 001506 automatic char(32) initial packed unaligned dcl 86 set ref 86* 515* 518 518* 653* project_id 1 001646 automatic char(12) level 2 in structure "Nsate" packed packed unaligned dcl 180 in procedure "new_proj" set ref 343* 344 353 356* 373 379* 385 387 392* 398 403 631* 653 656 660* 669 670* 690 692 692 726 733* 738* 744 750* 756* 768* 795* project_id 1 based char(12) level 2 in structure "project" packed packed unaligned dcl 8-53 in procedure "new_proj" set ref 353 361 project_name 000203 automatic varying char(32) dcl 72 set ref 211* 216 223* 234 236* 239 241* 341* 343 project_required 002752 automatic bit(1) packed unaligned dcl 914 set ref 919* 925* 931* projfile based structure level 1 dcl 6-6 projfile_count 001563 automatic fixed bin(17,0) dcl 108 set ref 348* 396* 396 829 projfile_ep 001552 automatic pointer dcl 104 in procedure "new_proj" set ref 349* 397* 636 projfile_ep 14 001610 automatic pointer level 3 in structure "EPA" dcl 179 in procedure "new_proj" set ref 463* projfiletab 10 based structure array level 2 dcl 6-6 set ref 397 prompt parameter char packed unaligned dcl 867 set ref 864 881* prompt_after_explanation 1(06) 000472 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 877* 1-7* protol 001544 automatic fixed bin(21,0) dcl 101 set ref 324* 771 771 772 protop 001542 automatic pointer dcl 100 set ref 245* 321* 771 852 852* prototype_pmf based char packed unaligned dcl 176 ref 771 ptr 32 001610 automatic pointer level 3 in structure "EPA" dcl 179 in procedure "new_proj" set ref 469* ptr 26 001610 automatic pointer level 3 in structure "EPA" dcl 179 in procedure "new_proj" set ref 469* pubbit 000177 automatic bit(1) dcl 68 set ref 502* qdf 16 002070 automatic fixed bin(71,0) level 2 in structure "Nreqfile" dcl 184 in procedure "new_proj" set ref 452* qdf 26 based fixed bin(71,0) array level 3 in structure "reqfile" dcl 7-5 in procedure "new_proj" set ref 376 qdn 14 002070 automatic fixed bin(71,0) level 2 dcl 184 set ref 451* qflag 11 002070 automatic char(8) level 2 dcl 184 set ref 449* qp 001534 automatic pointer dcl 97 set ref 245* 317* 347 373 373 376 376 384 828 847 847* 847 query_code 3 000472 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 1-7* query_info 000472 automatic structure level 1 dcl 1-7 set ref 881 881 query_info_version_6 constant fixed bin(17,0) initial dcl 1-36 ref 872 question_iocbp 4 000472 automatic pointer initial level 2 dcl 1-7 set ref 1-7* quota 17 001565 automatic fixed bin(18,0) level 2 dcl 178 set ref 648* repeat_time 10 000472 automatic fixed bin(71,0) initial level 2 dcl 1-7 set ref 1-7* req_amt 44 002070 automatic float bin(63) level 2 dcl 184 set ref 448* reqfile based structure level 1 dcl 7-5 reqfile_count 001564 automatic fixed bin(17,0) dcl 109 set ref 347* 383* 383 828 reqfile_ep 16 001610 automatic pointer level 3 in structure "EPA" dcl 179 in procedure "new_proj" set ref 464* reqfile_ep 001554 automatic pointer dcl 105 in procedure "new_proj" set ref 349* 384* 637 reqfiletab 10 based structure array level 2 dcl 7-5 set ref 384 reqno 6 002070 automatic char(12) level 2 packed packed unaligned dcl 184 set ref 447* rings 001460 automatic fixed bin(3,0) initial array dcl 81 in procedure "new_proj" set ref 81* 81* 81* 646 rings 3 001565 automatic fixed bin(3,0) array level 2 in structure "CBI" dcl 178 in procedure "new_proj" set ref 646* rs_number 115(18) 001646 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 180 set ref 420* rtrim builtin function dcl 123 ref 305 344 361 362 362 363 363 403 599 681 690 776 776 879 884 884 935 950 sadp 001546 automatic pointer dcl 102 set ref 245* 264* 267 273 274* 280 282 283 284 285 286 407 413 414 416 419 421 854 856 858* sat based structure level 1 dcl 8-32 sat_count 001562 automatic fixed bin(17,0) dcl 107 set ref 346* 370* 370 371 830 satep 12 001610 automatic pointer level 3 in structure "EPA" dcl 179 in procedure "new_proj" set ref 462* satep 001550 automatic pointer dcl 103 in procedure "new_proj" set ref 349* 352* 353 353 359 359 361 371* 635 satp 001540 automatic pointer dcl 99 set ref 245* 294* 302 305 346 351 352 371 830 849 849* 849 satpad 116 001646 automatic bit(36) array level 2 dcl 180 set ref 424* sc1 000020 internal static char(64) initial packed unaligned dcl 94 set ref 326 703* 709* 715* 967* 969* seg_acl_array 002260 automatic structure array level 1 dcl 193 set ref 804 804 seg_pointers 12 001610 automatic structure level 2 dcl 179 segment_acl_entry based structure level 1 dcl 11-45 set_lock_$lock 000012 constant entry external dcl 111 ref 267 set_lock_$unlock 000014 constant entry external dcl 112 ref 856 star_ok 002753 automatic bit(1) packed unaligned dcl 915 set ref 920* 926* 932* 947 955 state 001646 automatic fixed bin(17,0) level 2 in structure "Nsate" dcl 180 in procedure "new_proj" set ref 402* state based fixed bin(17,0) level 2 in structure "project" dcl 8-53 in procedure "new_proj" set ref 353 359 359 status 002732 automatic structure level 1 dcl 895 set ref 901 902 902 status_branch based structure level 1 dcl 17-8 status_code 11 002436 automatic fixed bin(35,0) array level 2 in structure "dir_acl_array" dcl 194 in procedure "new_proj" set ref 261* 707 709* 730 733* 748 750* status_code 104 based fixed bin(35,0) level 3 in structure "sub_error_info" dcl 15-7 in procedure "new_proj" set ref 256* status_code 12 002260 automatic fixed bin(35,0) array level 2 in structure "seg_acl_array" dcl 193 in procedure "new_proj" set ref 261* 808 811* status_code 2 000472 automatic fixed bin(35,0) initial level 2 in structure "query_info" dcl 1-7 in procedure "get_input" set ref 1-7* status_ptr 002622 automatic pointer dcl 17-47 set ref 901* string builtin function dcl 123 set ref 407* sub_err_ 000064 constant entry external dcl 146 ref 658 764 898 903 sub_error_ 002610 stack reference condition dcl 196 ref 247 sub_error_info based structure level 1 dcl 15-7 sub_error_info_ptr 002620 automatic pointer dcl 15-6 set ref 255* 256 256 substr builtin function dcl 123 set ref 605 605 769* 769 771* 777* 777 782* 782 785* 819* 819 sup 40 001766 automatic char(32) level 2 packed packed unaligned dcl 182 set ref 430* sup_addr 50 001766 automatic char(32) level 2 packed packed unaligned dcl 182 set ref 431* sup_phone 60 001766 automatic char(16) level 2 packed packed unaligned dcl 182 set ref 432* suppress_name_sw 1(01) 000472 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 874* 1-7* suppress_spacing 1(04) 000472 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 875* 1-7* switches 1 000472 automatic structure level 2 in structure "query_info" dcl 1-7 in procedure "get_input" switches 1 001565 automatic structure level 2 in structure "CBI" packed packed unaligned dcl 178 in procedure "new_proj" sys_admin_data based structure level 1 dcl 5-10 system_admin 676 based char(32) array level 2 packed packed unaligned dcl 8-32 ref 302 305 system_privilege_$dir_priv_off 000132 constant entry external dcl 169 ref 843 system_privilege_$dir_priv_on 000130 constant entry external dcl 169 ref 663 terminate_file_ 000134 constant entry external dcl 173 ref 274 821 823 845 847 849 852 858 time 001456 automatic fixed bin(71,0) dcl 80 set ref 457* 458* title 3 001766 automatic char(52) level 2 packed packed unaligned dcl 182 set ref 427* tp 001556 automatic pointer dcl 106 set ref 245* 763* 769 771 777 782 785 819 823* ttp 001560 automatic pointer dcl 106 set ref 245* 792* 819 821* u 000756 automatic char(32) array packed unaligned dcl 79 set ref 591* 609* 614 617 617 781* udd 000000 internal static char(64) initial packed unaligned dcl 93 set ref 332* 403 499* 653* 656* 660* 669* 670* 726* 733* 738* 744* 750* 756* 968* 969* udd_acc 001526 automatic bit(72) dcl 88 set ref 333* 644* uid 001463 automatic char(32) packed unaligned dcl 82 set ref 291* unspec builtin function dcl 123 set ref 338* 558 641* user_attributes based structure level 1 dcl 3-21 userid 31 001646 automatic char(30) array level 3 in structure "Nsate" packed packed unaligned dcl 180 in procedure "new_proj" set ref 409* 475 678 681 userid parameter char packed unaligned dcl 913 in procedure "check_user_id_syntax" ref 911 923 929 935 939 942 950 userid 6 001565 automatic char(32) level 2 in structure "CBI" dcl 178 in procedure "new_proj" set ref 647* verify builtin function dcl 123 ref 239 594 version 2 000100 automatic fixed bin(17,0) level 2 in structure "CI" dcl 249 in on unit on line 247 set ref 253* version 001565 automatic fixed bin(17,0) level 2 in structure "CBI" dcl 178 in procedure "new_proj" set ref 642* version 000472 automatic fixed bin(17,0) level 2 in structure "query_info" dcl 1-7 in procedure "get_input" set ref 872* version 001610 automatic char(8) level 2 in structure "EPA" dcl 179 in procedure "new_proj" set ref 460* yes_or_no_sw 1 000472 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 873* 1-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 4-38 ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 11-77 ACTION_CAN_RESTART internal static bit(36) initial dcl 18-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 18-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 18-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 18-7 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 3-77 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 DELETE_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 11-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 13-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 11-67 Directory internal static fixed bin(17,0) initial dcl 17-56 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 GENERAL_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 11-72 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 11-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 11-72 Link internal static fixed bin(17,0) initial dcl 17-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 13-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 13-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 PNT_ENTRY_VERSION_2 internal static fixed bin(17,0) initial dcl 19-64 PROJFILE_VERSION internal static fixed bin(17,0) initial dcl 6-33 REQFILE_VERSION internal static fixed bin(17,0) initial dcl 7-28 REW_ACCESS internal static bit(3) initial packed unaligned dcl 13-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 13-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 SAT_project_name_length internal static fixed bin(17,0) initial dcl 8-24 SAT_version internal static fixed bin(17,0) initial dcl 8-24 SA_ACCESS internal static bit(3) initial packed unaligned dcl 13-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 13-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 11-67 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 13-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 Segment internal static fixed bin(17,0) initial dcl 17-56 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 12-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 12-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 12-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 12-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 12-13 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 3-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 3-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 3-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 3-50 W_ACCESS internal static bit(3) initial packed unaligned dcl 13-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 13-36 acl_ptr automatic pointer dcl 11-4 condition_info_header_ptr automatic pointer dcl 14-4 condition_info_ptr automatic pointer dcl 16-10 cv_float_ 000000 constant entry external dcl 133 delete_acl based structure level 1 dcl 11-58 delete_acl_array based structure array level 1 dcl 11-64 directory_acl based structure level 1 dcl 11-49 directory_acl_array based structure array level 1 dcl 11-55 edit_proj_arg_ptr automatic pointer dcl 2-8 general_acl based structure level 1 dcl 11-7 general_delete_acl based structure level 1 dcl 11-30 general_extended_acl based structure level 1 dcl 11-18 match_value_string based char packed unaligned dcl 2-41 new_value_string based char packed unaligned dcl 2-40 pntep automatic pointer dcl 19-21 query_info_version_3 internal static fixed bin(17,0) initial dcl 1-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 1-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 1-35 segment_acl based structure level 1 dcl 11-40 segment_acl_array based structure array level 1 dcl 11-46 status_area_ptr automatic pointer dcl 17-47 status_entry_names based char(32) array dcl 17-47 status_link based structure level 1 dcl 17-38 status_pathname based char dcl 17-47 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 15-13 terminate_file_switches based structure level 1 packed packed unaligned dcl 12-4 user_abs_attributes based structure level 1 dcl 4-25 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_EXIT 010402 constant label dcl 834 ref 257 GET_PROJ_DIR_ACCT 004725 constant label dcl 524 ref 531 GET_PROJ_DIR_LV 004324 constant label dcl 488 ref 506 512 GET_PROJ_DIR_OWNER 004624 constant label dcl 515 ref 522 GET_USERS 005177 constant label dcl 573 ref 627 GOT_A_USER 005601 constant label dcl 614 GOT_USERS 005643 constant label dcl 623 ref 578 580 620 REUSE_PROJ 003222 constant label dcl 361 ref 366 RE_GET_USER 005200 constant label dcl 576 ref 587 597 603 SKIP_PMF 010342 constant label dcl 823 ref 797 abend 010402 constant label dcl 834 ref 299 357 363 380 393 882 check_req 003373 constant label dcl 373 ref 362 check_user_id_syntax 011504 constant entry internal dcl 911 check_user_id_syntax$person_project 011520 constant entry internal dcl 923 ref 518 check_user_id_syntax$person_project_star 011535 constant entry internal dcl 929 ref 527 cleanup_segments 010534 constant entry internal dcl 840 ref 220 246 834 er 002422 constant label dcl 297 ref 265 314 318 322 329 334 get_dir_lvid 011242 constant entry internal dcl 889 ref 499 get_input 011035 constant entry internal dcl 864 ref 361 481 488 515 524 560 576 join 011552 constant label dcl 935 ref 921 927 933 new_proj 001361 constant entry external dcl 27 test 010413 constant entry external dcl 963 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 13014 13212 12227 13152 Length 14146 12227 136 720 565 40 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME new_proj 1729 external procedure is an external procedure. on unit on line 246 64 on unit on unit on line 247 126 on unit cleanup_segments 90 internal procedure is called by several nonquick procedures. get_input 359 internal procedure uses returns(char(*)) or returns(bit(*)), and is called during a stack extension. get_dir_lvid internal procedure shares stack frame of external procedure new_proj. check_user_id_syntax internal procedure shares stack frame of external procedure new_proj. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000000 udd new_proj 000020 sc1 new_proj STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_input 000100 buf get_input 000472 query_info get_input new_proj 000100 dir_priv_code new_proj 000101 dn new_proj 000153 en new_proj 000163 delegated new_proj 000164 i new_proj 000165 j new_proj 000166 k new_proj 000167 bitct new_proj 000170 lvid new_proj 000171 mylock new_proj 000172 ap new_proj 000174 al new_proj 000175 ec new_proj 000176 access new_proj 000177 pubbit new_proj 000200 TESTING new_proj 000201 arg_count new_proj 000202 found_error new_proj 000203 project_name new_proj 000214 char16 new_proj 000220 char168 new_proj 000272 char500 new_proj 000467 char500_2 new_proj 000664 pmf_dir new_proj 000736 pmf_en new_proj 000746 char32 new_proj 000756 u new_proj 001456 time new_proj 001460 rings new_proj 001463 uid new_proj 001473 n_users new_proj 001474 project_dir_acc new_proj 001476 project_dir_lv new_proj 001506 project_dir_owner new_proj 001516 project_dir_account new_proj 001526 udd_acc new_proj 001530 have_anonymous_user new_proj 001532 pp new_proj 001534 qp new_proj 001536 mgtp new_proj 001540 satp new_proj 001542 protop new_proj 001544 protol new_proj 001546 sadp new_proj 001550 satep new_proj 001552 projfile_ep new_proj 001554 reqfile_ep new_proj 001556 tp new_proj 001560 ttp new_proj 001562 sat_count new_proj 001563 projfile_count new_proj 001564 reqfile_count new_proj 001565 CBI new_proj 001610 EPA new_proj 001646 Nsate new_proj 001766 Nprojfile new_proj 002070 Nreqfile new_proj 002140 pnte new_proj 002260 seg_acl_array new_proj 002436 dir_acl_array new_proj 002616 acl_count new_proj 002620 sub_error_info_ptr new_proj 002622 status_ptr new_proj 002650 dir_dn get_dir_lvid 002722 dir_en get_dir_lvid 002732 status get_dir_lvid 002752 project_required check_user_id_syntax 002753 star_ok check_user_id_syntax 002754 person check_user_id_syntax 002765 project check_user_id_syntax on unit on line 247 000100 CI on unit on line 247 THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac tra_ext_1 mpfx2 enable_op shorten_stack return_chars_eis ss_ext_entry ss_ext_entry_desc ss_int_entry ss_int_entry_desc verify_for_rtrim clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ aim_check_$equal com_err_ command_query_ continue_to_signal_ convert_access_class_$from_string convert_access_class_$to_string_short convert_date_to_binary_$relative cu_$arg_count cu_$arg_ptr datebin_$last_midnight edit_proj_ expand_pathname_ find_condition_info_ get_group_id_ get_ring_ get_wdir_ hcs_$add_acl_entries hcs_$add_dir_acl_entries hcs_$add_dir_inacl_entries hcs_$chname_file hcs_$create_branch_ hcs_$get_access_class hcs_$status_long initiate_file_ initiate_file_$create ioa_ ioa_$rs mdc_$create_dirx_acct mdc_$find_lvid mdc_$get_lv_access pnt_manager_$get_entry set_lock_$lock set_lock_$unlock sub_err_ system_privilege_$dir_priv_off system_privilege_$dir_priv_on terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$id_not_found error_table_$invalid_lock_reset error_table_$locked_by_this_process error_table_$namedup LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 55 001324 62 001326 69 001327 76 001330 81 001333 84 001346 86 001350 87 001353 27 001360 199 001367 200 001400 202 001402 203 001421 205 001422 207 001424 208 001453 211 001454 212 001455 213 001463 214 001501 216 001515 218 001522 220 001560 221 001564 223 001565 224 001575 225 001576 229 001605 230 001641 232 001642 234 001644 236 001647 237 001702 239 001703 241 001716 242 001751 245 001752 246 001762 247 002004 250 002020 253 002033 254 002035 255 002054 256 002057 257 002111 259 002114 261 002115 262 002141 263 002150 264 002153 265 002211 267 002213 268 002230 271 002240 273 002242 274 002274 275 002323 280 002324 282 002334 283 002337 284 002341 285 002343 286 002345 290 002347 291 002350 293 002357 294 002362 295 002420 297 002422 299 002445 301 002446 302 002453 304 002463 305 002464 307 002534 308 002537 309 002540 311 002542 312 002544 313 002547 314 002605 316 002607 317 002612 318 002650 320 002652 321 002655 322 002712 324 002714 326 002717 327 002723 328 002726 329 002764 332 002766 333 003015 334 003042 337 003044 338 003047 341 003052 343 003072 344 003076 346 003124 347 003130 348 003132 349 003134 351 003140 352 003147 353 003153 356 003162 357 003215 359 003216 361 003222 362 003314 363 003336 365 003346 366 003362 369 003363 370 003365 371 003366 373 003373 375 003412 376 003414 379 003423 380 003456 382 003457 383 003460 384 003461 385 003466 387 003473 388 003512 389 003514 392 003523 393 003556 395 003557 396 003560 397 003561 398 003566 402 003573 403 003575 404 003635 405 003640 406 003642 407 003643 408 003646 409 003653 410 003660 411 003663 412 003665 413 003667 414 003672 415 003674 416 003676 417 003701 418 003703 419 003704 420 003706 421 003710 422 003712 424 003726 425 003736 427 003737 428 003742 429 003745 430 003750 431 003753 432 003756 435 003761 436 003763 437 003765 438 003766 439 003770 440 003772 441 003773 442 003774 443 003776 444 003777 446 004000 447 004003 448 004006 449 004010 450 004013 451 004014 452 004016 453 004020 454 004023 455 004026 456 004030 457 004031 458 004040 460 004067 461 004071 462 004074 463 004076 464 004100 465 004102 466 004104 467 004116 468 004120 469 004132 471 004135 473 004146 474 004147 475 004155 477 004165 479 004167 481 004176 482 004237 483 004260 485 004314 487 004317 488 004324 493 004362 496 004371 497 004412 499 004447 502 004473 503 004533 505 004535 506 004563 509 004564 511 004570 512 004623 515 004624 518 004662 521 004675 522 004724 524 004725 527 004763 530 004776 531 005025 556 005026 558 005031 560 005042 563 005100 564 005122 566 005156 568 005161 571 005175 572 005176 573 005177 576 005200 578 005235 580 005242 582 005246 584 005252 586 005254 587 005303 589 005304 590 005306 591 005307 592 005315 594 005316 596 005330 597 005363 599 005364 601 005406 603 005441 605 005442 608 005506 609 005507 610 005515 611 005543 614 005601 617 005604 620 005641 622 005642 623 005643 626 005645 627 005674 631 005675 635 005715 636 005721 637 005725 641 005731 642 005734 643 005736 644 005740 645 005761 646 005763 647 005767 648 006001 649 006003 650 006005 653 006013 656 006067 658 006124 660 006176 663 006242 667 006254 669 006260 670 006321 677 006366 678 006373 680 006402 681 006403 683 006452 685 006455 686 006457 688 006460 689 006462 690 006463 692 006526 694 006543 701 006545 703 006550 704 006611 705 006612 707 006625 709 006631 712 006677 714 006701 715 006703 721 006750 723 006761 725 006770 726 006772 727 007033 728 007034 730 007045 732 007051 733 007053 737 007117 738 007121 744 007164 745 007231 746 007232 748 007243 750 007247 753 007313 755 007315 756 007317 761 007362 762 007371 763 007374 764 007440 768 007517 769 007552 771 007557 772 007564 773 007570 775 007572 776 007614 777 007664 778 007673 780 007675 781 007705 782 007742 783 007750 784 007752 785 007754 787 007761 790 007763 792 007767 793 010033 795 010035 797 010073 800 010074 801 010105 803 010114 804 010116 805 010154 806 010155 808 010167 810 010173 811 010175 815 010237 816 010241 819 010303 821 010311 823 010342 828 010373 829 010375 830 010377 834 010402 837 010406 963 010407 967 010434 968 010461 969 010506 970 010532 840 010533 843 010541 845 010552 847 010615 849 010662 852 010730 854 010763 856 010770 858 011003 860 011033 864 011034 1 7 011055 872 011105 873 011107 874 011111 875 011113 876 011115 877 011117 878 011121 879 011124 881 011140 882 011176 884 011205 889 011242 897 011253 898 011302 901 011357 902 011361 903 011423 906 011500 911 011504 919 011515 920 011516 921 011517 923 011520 925 011531 926 011533 927 011534 929 011535 931 011546 932 011550 933 011551 935 011552 939 011575 942 011606 943 011622 945 011634 947 011644 950 011662 951 011717 953 011731 955 011741 958 011755 ----------------------------------------------------------- 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