COMPILATION LISTING OF SEGMENT delete_proj Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1023.8 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 delete_proj: proc; 12 13 /* DELETE_PROJ - Program used by user accounts to delete a project. 14* 15* THVV */ 16 17 dcl dn char (168) aligned, 18 en char (32) aligned, 19 (i, j, k, l, m, n) fixed bin, 20 mylock bit (1) init ("0"b), 21 ap ptr, 22 al fixed bin, 23 bchr char (al) unaligned based (ap), 24 ec fixed bin (35); 25 26 dcl (new_pdt, old_pdt) char (32) aligned; 27 28 dcl udd char (64) aligned int static init (">user_dir_dir"), 29 sc1_pdt char (64) aligned int static init (">system_control_1>pdt"), 30 sc1 char (64) aligned int static init (">system_control_1"); 31 dcl pp ptr, /* ptr to projfile */ 32 qp ptr, /* ptr to reqfile */ 33 satp ptr, /* ptr to sat */ 34 sadp ptr, /* ptr to sys_admin_data */ 35 satep ptr, /* ptr to sat entry. */ 36 p ptr, /* ptr to new table entry */ 37 q ptr; /* ptr to dummy entry */ 38 39 dcl set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)), 40 set_lock_$unlock entry (bit (36) aligned, fixed bin (35)), 41 error_table_$locked_by_this_process fixed bin (35) ext, 42 error_table_$invalid_lock_reset fixed bin (35) ext; 43 44 dcl (addr, null, substr, index, verify, search, reverse, length, bit, fixed, divide, mod) builtin; 45 46 dcl clock_ entry () returns (fixed bin (71)), 47 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 48 get_wdir_ entry () returns (char (168) aligned), 49 ioa_ entry options (variable), 50 ioa_$rsnnl entry options (variable), 51 com_err_ entry options (variable); 52 53 54 dcl hcs_$chname_file entry (char (*) aligned, char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (35)); 55 dcl hcs_$initiate entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (1), fixed bin (2), 56 ptr, fixed bin (35)); 57 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 58 59 1 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 1 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 1 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 1 8* attribute switches. 1 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 1 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 1 12* be deleted. 1 13* B) Add constants identifying attributes that can be changed by user at 1 14* login, etc. 1 15* END HISTORY COMMENTS */ 1 16 1 17 1 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 1 19 1 20 /* format: style4 */ 1 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 1 22 (2 administrator bit (1), /* 1 system administrator privileges */ 1 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 1 24 2 nobump bit (1), /* 2 user cannot be bumped */ 1 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 1 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 1 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 1 28* . of same project (distinct from "nobump") */ 1 29 2 nolist bit (1), /* 7 don't list user on "who" */ 1 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 1 31 2 multip bit (1), /* 9 user may have several processes */ 1 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 1 33 2 brief bit (1), /* 11 no login or logout message */ 1 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 1 35 2 vhomedir bit (1), /* 13 user may change homedir */ 1 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 1 37 2 sb_ok bit (1), /* 15 user may be standby */ 1 38 2 pm_ok bit (1), /* 16 user may be primary */ 1 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 1 40 2 daemon bit (1), /* 18 user may login as daemon */ 1 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 1 42 2 no_warning bit (1), /* 20 no warning message */ 1 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 1 44* . in PDT: this user has an individual load control group */ 1 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 1 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 1 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 1 48 2 pad bit (12)) unaligned; 1 49 1 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 1 51 ("none", /* 0 */ 1 52 "administrator", /* 1 */ 1 53 "primary_line", /* 2 */ 1 54 "nobump", /* 3 */ 1 55 "guaranteed_login", /* 4 */ 1 56 "anonymous", /* 5 */ 1 57 "nopreempt", /* 6 */ 1 58 "nolist", /* 7 */ 1 59 "dialok", /* 8 */ 1 60 "multip", /* 9 */ 1 61 "bumping", /* 10 */ 1 62 "brief", /* 11 */ 1 63 "vinitproc", /* 12 */ 1 64 "vhomedir", /* 13 */ 1 65 "nostartup", /* 14 */ 1 66 "no_secondary", /* 15 */ 1 67 "no_prime", /* 16 */ 1 68 "no_eo", /* 17 */ 1 69 "daemon", /* 18 */ 1 70 "", /* 19 vdim OBSOLETE */ 1 71 "no_warning", /* 20 */ 1 72 "igroup", /* 21 */ 1 73 "save_pdir", /* 22 */ 1 74 "disconnect_ok", /* 23 */ 1 75 "save_on_disconnect"); /* 24 */ 1 76 1 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 1 78 ("null", /* 0 */ 1 79 "admin", /* 1 */ 1 80 "", "", /* 2 - 3 */ 1 81 "guar", /* 4 */ 1 82 "anon", /* 5 */ 1 83 "", "", /* 6 - 7 */ 1 84 "dial", /* 8 */ 1 85 "multi_login", /* 9 */ 1 86 "preempting", /* 10 */ 1 87 "", /* 11 */ 1 88 "v_process_overseer", /* 12 */ 1 89 "v_home_dir", /* 13 */ 1 90 "no_start_up", /* 14 */ 1 91 "no_sec", /* 15 */ 1 92 "no_primary", /* 16 */ 1 93 "no_edit_only", /* 17 */ 1 94 "op_login", /* 18 */ 1 95 "", /* 19 */ 1 96 "nowarn", /* 20 */ 1 97 "", "", "", /* 21 - 23 */ 1 98 "save"); /* 24 */ 1 99 1 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 1 101 options(constant) init("000000000010000000010000000000000000"b); 1 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 1 103 1 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 1 105 options(constant) init("000000000010000000010000000000000000"b); 1 106 /* PDT value for (brief, no_warning) is default */ 1 107 1 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 1 109 options(constant) init("000100000110010000010000000000000000"b); 1 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 1 111 2 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* This include file describes the attributes of an absentee job. It is */ 2 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 2 7 /* and PIT.incl.pl1. */ 2 8 /* */ 2 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 10 2 11 /****^ HISTORY COMMENTS: 2 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 2 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 14* Separated abs_attributes from the request structure 2 15* (abs_message_format.incl.pl1) so that the identical structure could be 2 16* used in the ute structure (user_table_entry.incl.pl1). 2 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 2 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 19* Added ABS_ATTRIBUTE_NAMES array. 2 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 2 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 2 22* Added the no_start_up flag. SCP6367 2 23* END HISTORY COMMENTS */ 2 24 2 25 dcl 1 user_abs_attributes aligned based, 2 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 2 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 2 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 2 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 2 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 2 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 2 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 2 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 2 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 2 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 2 36 2 attributes_pad bit (26) unaligned; 2 37 2 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 2 39 "restartable", 2 40 "user_deferred_until_time", 2 41 "proxy", 2 42 "set_bit_cnt", 2 43 "time_in_gmt", 2 44 "user_deferred_indefinitely", 2 45 "secondary_ok", 2 46 "truncate_absout", 2 47 "restarted", 2 48 "no_start_up"); 2 49 2 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 2 51 1 112 1 113 1 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 60 3 1 /* BEGIN INCLUDE FILE ... sys_admin_data.incl.pl1 */ 3 2 3 3 /* This data base is writeable by all system administrators. 3 4* It resides in the working directory of the system administrators. 3 5* The important item in this data base is "lock", which is used to prevent 3 6* two administrators from modifying the system administration data bases simultaneously. */ 3 7 3 8 /* Modified 1984-12-14 by EJ Sharpe to add default_audit_flags, and remove log_control */ 3 9 3 10 dcl 1 sys_admin_data based (sadp) aligned, 3 11 2 lock bit (36), 3 12 2 locker char (24), /* name of person using table */ 3 13 2 sadxx fixed bin, 3 14 2 time_locked fixed bin (71), 3 15 2 pntno fixed bin, 3 16 2 pnt_entries_to_install bit (1), 3 17 2 smf_entries_to_install bit (1), 3 18 2 pad1 (97) fixed bin, /* was log_control stuff before MR11 */ 3 19 2 user_accounts_office char (64), 3 20 2 user_accounts_addr char (64), 3 21 2 user_accounts_phone char (16), 3 22 2 mailing_banner (3) char (10), /* Used by mailing_page_ */ 3 23 2 default_proj_attributes bit (36), /* Used by new_proj */ 3 24 2 default_proj_ring1 fixed bin, /* .. */ 3 25 2 default_proj_ring2 fixed bin, /* .. */ 3 26 2 default_proj_group char (8), /* .. */ 3 27 2 default_proj_grace fixed bin, /* .. */ 3 28 2 default_audit_flags bit (36) aligned; /* initial set of flags for new_user and edit_proj */ 3 29 3 30 /* END INCLUDE FILE .. sys_admin_data.incl.pl1 */ 61 4 1 /* BEGIN INCLUDE FILE .. projfile.incl.pl1 */ 4 2 /* Modified by T. Casey April 1976 to change disk_infs (obsolete) to dir_disk_use */ 4 3 /* Modified 1984-07-09 BIM for dir_disk_quota, version */ 4 4 /* Modified 1984-09-14 BIM for reasonable array size */ 4 5 4 6 dcl 1 projfile based (pp) aligned, /* Project history file */ 4 7 2 nproj fixed bin (35), /* number of entries */ 4 8 2 version fixed bin, 4 9 2 projfilexx0 (6) bit (36) aligned, 4 10 2 projfiletab (3000), /* in seg limit */ 4 11 3 id char (12) unal, /* project ID */ 4 12 3 title char (52) unal, /* project title */ 4 13 3 inv char (32) unal, /* name of principal investigator */ 4 14 3 inv_addr char (32) unal, /* address */ 4 15 3 sup char (32) unal, /* name of supervisor */ 4 16 3 sup_addr char (32) unal, /* address */ 4 17 3 sup_phone char (16) unal, /* telephone */ 4 18 3 on fixed bin (71), /* date on */ 4 19 3 off fixed bin (71), /* date off */ 4 20 3 disk_psec fixed bin (71), /* project disk page-seconds */ 4 21 3 disk_quota fixed bin (35), /* project disk quota */ 4 22 3 dir_disk_quota fixed bin (35), /* project dir disk quota */ 4 23 3 disk_use fixed bin (35), /* total segment pages used */ 4 24 3 dir_disk_use fixed bin (35), /* total directory pages used */ 4 25 3 misc_charges float bin, /* manuals, etc */ 4 26 3 n_misc fixed bin, /* number of entries */ 4 27 3 processed fixed bin, /* temp for usage-report */ 4 28 3 pad bit (36) aligned; /* out to even number of words */ 4 29 4 30 dcl loph int static fixed bin (17) options (constant) init (8), /* lth of projfile header */ 4 31 lope int static fixed bin (17) options (constant) init (66); /* lth of projflile entry */ 4 32 4 33 dcl PROJFILE_VERSION fixed bin init (3) int static options (constant); 4 34 4 35 /* END INCLUDE FILE ... projfile.incl.pl1 */ 62 5 1 /* Requisition file declaration */ 5 2 /* Modified BIM 1984-07-10 for unaligned strings */ 5 3 /* Modified BIM 1984-09-14 foor 3000 size-array */ 5 4 5 5 dcl 1 reqfile based (qp) aligned, /* MIT accounting data */ 5 6 2 nacts fixed, 5 7 2 version fixed bin, 5 8 2 pad (6) bit (36) aligned, 5 9 2 reqfiletab (3000), /* one entry per Multics account */ 5 10 /* same size as projfile */ 5 11 3 acctid char (12) unal, /* account id. usually same as Proj */ 5 12 3 mitacct char (12) unal, /* MIT account no. */ 5 13 3 reqno char (12) unal, /* requisition or PO no. */ 5 14 3 qflag char (8), /* class & activity */ 5 15 3 procssd fixed bin, /* temp for usage report */ 5 16 3 qdn fixed bin (71), /* date on for account */ 5 17 3 qdf fixed bin (71), /* date off */ 5 18 3 billing_name char (32) unal, /* where to send bill */ 5 19 3 billing_addr char (32) unal, 5 20 3 chg_mo float bin (63), /* charges this month */ 5 21 3 chg_tr float bin (63), /* charges this req */ 5 22 3 req_amt float bin (63), /* req face value */ 5 23 3 cutoff fixed bin (71); /* term date for req */ 5 24 5 25 dcl loqh int static fixed bin (17) init (8), /* length of reqfile head */ 5 26 loqe int static fixed bin (17) init (40); /* lth of reqfile entry */ 5 27 5 28 declare REQFILE_VERSION fixed bin init (2) int static options (constant); 5 29 5 30 /* End include file reqfile.incl.pl1 */ 63 6 1 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 6 2 6 3 6 4 6 5 6 6 /****^ HISTORY COMMENTS: 6 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 6 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 6 9* Expand comment line of project.state to include the renamed state (state = 6 10* 3). 6 11* END HISTORY COMMENTS */ 6 12 6 13 6 14 6 15 /* Modified 740723 by PG to add AIM info */ 6 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 6 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 6 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 6 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 6 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 6 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 6 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 6 23 6 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 6 25 6 26 SAT_header_lth init (466), /* length in words of SAT header */ 6 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 6 28 6 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 6 30 ) fixed bin internal static options (constant); 6 31 6 32 dcl 1 sat based (satp) aligned, 6 33 7 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 7 2 7 3 /* the "author" items must always be the first ones in the table. The 7 4* module which moves the converted table to the System Control process 7 5* fills in these data items and assumes them to be at the head of the segment 7 6* regardless of the specific table's actual declaration. The variables 7 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 7 8* respectively. For tables installed in multiple processes, these 7 9* are to be used to lock out multiple installations. */ 7 10 7 11 /* Lock should be used as a modification lock. Since, in general, 7 12* entries may not be moved in system tables, even by installations, 7 13* it is sufficient for only installers and programs that change threads 7 14* to set or respect the lock. Simply updating data in an entry 7 15* requires no such protection. 7 16* 7 17* Last_install_time is used by readers of system tables to detect 7 18* installations or other serious modifications. By checking it before 7 19* and after copying a block of data, they can be protected against 7 20* modifications. 7 21* 7 22* Modules that set the lock should save proc_group_id, and then 7 23* put their group id there for the time they hold the lock. 7 24* if they do not actually install the, they should restore the group id. 7 25**/ 7 26 7 27 2 author aligned, /* validation data about table's author */ 7 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 7 29 3 lock bit (36), /* installation lock */ 7 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 7 31 3 update_authorization bit (1) unal, /* update only authorizations */ 7 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 7 33 3 pad bit (33) unaligned, 7 34 3 last_install_time fixed bin (71), 7 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 7 36 3 w_dir char (64), /* author's working directory */ 7 37 7 38 /* END INCLUDE FILE author.incl.pl1 */ 6 34 6 35 2 max_size fixed bin, /* max number of entries table can grow */ 6 36 2 current_size fixed bin, /* current size of table (in entries) */ 6 37 2 version fixed bin, /* version number of table (word 32) */ 6 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 6 39 2 n_projects fixed bin, /* number of entries actually used */ 6 40 2 pad_was_max_users bit (36) aligned, 6 41 2 max_units fixed bin, /* maximum number of login-units per session */ 6 42 2 pad_was_max_prim bit (36) aligned, 6 43 2 uwt_size fixed bin, /* size of User Weight Table */ 6 44 2 uwt (24) aligned, /* User Weight Table */ 6 45 3 initproc char (64) unaligned, /* user's initial procedure */ 6 46 3 units fixed bin, /* weight of initial procedure */ 6 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 6 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 6 49 2 project (3258), /* The SAT entries. 255K segment. */ 6 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 6 51 6 52 6 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 6 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 6 55 2 project_id char (12) unaligned, /* project's name */ 6 56 2 project_dir char (64) unaligned, /* project's directory */ 6 57 2 pdt_ptr pointer, /* pointer to current PDT */ 6 58 2 max_users fixed bin, /* maximum number of users from project */ 6 59 2 n_users fixed bin, /* current number */ 6 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 6 61 2 admin (4) aligned, /* list of project's administrators */ 6 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 6 63 3 pad char (2) unal, 6 64 2 cutoff char (1), /* if project is cut off, why. */ 6 65 2 min_ring fixed bin, /* lowest ring for project */ 6 66 2 max_ring fixed bin, /* highest ring for project */ 6 67 2 alias char (8) unal, /* project alias */ 6 68 2 group char (8) unal, /* default group for this project */ 6 69 2 grace_max fixed bin, /* maximum bump grace */ 6 70 2 audit bit (36), /* audit flags for project */ 6 71 2 project_authorization (2) bit (72), /* authorization of this project */ 6 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 6 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 6 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 6 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 6 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 6 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 6 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 6 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 6 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 6 81 2 satpad1 fixed bin (9) unsigned unaligned, 6 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 6 83 2 chain fixed bin; /* if free entry, chain */ 6 84 6 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 64 65 66 dcl 1 Nsate aligned like project; 67 68 /* ======================================================== */ 69 70 dn = get_wdir_ (); 71 en = "sys_admin_data"; 72 call hcs_$initiate (dn, en, "", 0, 1, sadp, ec); 73 if sadp = null then go to er; 74 call set_lock_$lock (sys_admin_data.lock, 60, ec); 75 if ec ^= 0 then 76 if ec = error_table_$locked_by_this_process then mylock = "1"b; 77 else if ec ^= error_table_$invalid_lock_reset then do; 78 call com_err_ (ec, "delete_proj", "Sys_admin_data is locked by ^a", sys_admin_data.locker); 79 go to exit1; 80 end; 81 82 en = "smf.cur.sat"; 83 call hcs_$initiate (dn, en, "", 0, 1, satp, ec); 84 if satp = null then do; 85 er: call com_err_ (ec, "delete_proj", en); 86 go to abend; 87 end; 88 en = "projfile"; 89 call hcs_$initiate (dn, en, "", 0, 1, pp, ec); 90 if pp = null then go to er; 91 en = "reqfile"; 92 call hcs_$initiate (dn, en, "", 0, 1, qp, ec); 93 if qp = null then go to er; 94 95 en = ""; 96 call cu_$arg_ptr (1, ap, al, ec); 97 if ec ^= 0 then go to er; 98 Nsate.project_id = bchr; 99 100 do i = 1 to sat.current_size; 101 satep = addr (sat.project (i)); 102 if Nsate.project_id = project.project_id then 103 if project.state = 1 then do; 104 project.state = 2; /* Flag proj as deleted. */ 105 go to check_req; 106 end; 107 else if project.state = 2 then do; 108 call com_err_ (0, "delete_proj", "Project ""^a"" has already been deleted.", 109 Nsate.project_id); 110 go to abend; 111 end; 112 end; 113 call com_err_ (0, "delete_proj", "Project ""^a"" not found in SAT", Nsate.project_id); 114 go to abend; 115 116 check_req: do i = 1 to reqfile.nacts while (Nsate.project_id ^= reqfile.acctid (i)); end; 117 if i <= reqfile.nacts then 118 if reqfile.qdf (i) ^= 0 then do; 119 call com_err_ (0, "delete_proj", "Project ""^a"" is deleted from reqfile.", Nsate.project_id); 120 go to abend; 121 end; 122 else reqfile.qdf (i) = clock_ (); /* Delete him */ 123 else do; 124 call com_err_ (0, "delete_proj", "Project ""^a"" not found in reqfile.", 125 Nsate.project_id); 126 go to abend; 127 end; 128 129 do i = 1 to projfile.nproj while (Nsate.project_id ^= projfile.id (i)); end; 130 if i <= projfile.nproj then 131 if projfile.off (i) ^= 0 then do; 132 call com_err_ (0, "delete_proj", "Project ""^a"" is deleted from projfile.", Nsate.project_id); 133 go to abend; 134 end; 135 else projfile.off (i) = clock_ (); 136 else do; 137 call com_err_ (0, "delete_proj", "Project ""^a"" not found in projfile.", 138 Nsate.project_id); 139 go to abend; 140 end; 141 142 call ioa_$rsnnl ("^a.pdt", old_pdt, i, Nsate.project_id); 143 call ioa_$rsnnl ("delete.^a.pdt", new_pdt, i, Nsate.project_id); 144 call hcs_$chname_file (sc1_pdt, old_pdt, "", new_pdt, ec); 145 if ec ^= 0 then call com_err_ (ec, "delete_proj", "Cannot add name ^a to ^a>^a", 146 new_pdt, sc1_pdt, old_pdt); 147 148 /* Could delete project dir here.. Might interfere with installation policy tho. */ 149 /* Note that we cannot necessarily remove project admins. */ 150 /* ..aha: we can if they have a project ID of this project. */ 151 /* .. do that later */ 152 153 /* Terminate all segments. */ 154 155 abend: call hcs_$terminate_noname (pp, ec); 156 call hcs_$terminate_noname (qp, ec); 157 call hcs_$terminate_noname (satp, ec); 158 exit1: if ^mylock then call set_lock_$unlock (sys_admin_data.lock, ec); 159 call hcs_$terminate_noname (sadp, ec); 160 return; 161 162 /* -------------------------------------------------------- */ 163 164 test: entry (asc1, audd); 165 dcl (asc1, audd) char (*); 166 167 sc1 = asc1; 168 udd = audd; 169 call ioa_ ("udd = ^a^/sc1 = ^a", udd, sc1); 170 call ioa_$rsnnl ("^a>pdt", sc1_pdt, j, sc1); 171 return; 172 173 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0941.0 delete_proj.pl1 >special_ldd>install>MR12.2-1047>delete_proj.pl1 60 1 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 1-112 2 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 61 3 01/30/85 1523.9 sys_admin_data.incl.pl1 >ldd>include>sys_admin_data.incl.pl1 62 4 09/20/84 0925.7 projfile.incl.pl1 >ldd>include>projfile.incl.pl1 63 5 09/20/84 0925.7 reqfile.incl.pl1 >ldd>include>reqfile.incl.pl1 64 6 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 6-34 7 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. Nsate 000224 automatic structure level 1 dcl 66 acctid 10 based char(12) array level 3 packed packed unaligned dcl 5-5 ref 116 addr builtin function dcl 44 ref 101 al 000170 automatic fixed bin(17,0) dcl 17 set ref 96* 98 ap 000166 automatic pointer dcl 17 set ref 96* 98 asc1 parameter char packed unaligned dcl 165 ref 164 167 audd parameter char packed unaligned dcl 165 ref 164 168 bchr based char packed unaligned dcl 17 ref 98 clock_ 000100 constant entry external dcl 46 ref 122 135 com_err_ 000112 constant entry external dcl 46 ref 78 85 108 113 119 124 132 137 145 cu_$arg_ptr 000102 constant entry external dcl 46 ref 96 current_size 36 based fixed bin(17,0) level 2 dcl 6-32 ref 100 dn 000100 automatic char(168) dcl 17 set ref 70* 72* 83* 89* 92* ec 000171 automatic fixed bin(35,0) dcl 17 set ref 72* 74* 75 75 77 78* 83* 85* 89* 92* 96* 97 144* 145 145* 155* 156* 157* 158* 159* en 000152 automatic char(32) dcl 17 set ref 71* 72* 82* 83* 85* 88* 89* 91* 92* 95* error_table_$invalid_lock_reset 000076 external static fixed bin(35,0) dcl 39 ref 77 error_table_$locked_by_this_process 000074 external static fixed bin(35,0) dcl 39 ref 75 get_wdir_ 000104 constant entry external dcl 46 ref 70 hcs_$chname_file 000114 constant entry external dcl 54 ref 144 hcs_$initiate 000116 constant entry external dcl 55 ref 72 83 89 92 hcs_$terminate_noname 000120 constant entry external dcl 57 ref 155 156 157 159 i 000162 automatic fixed bin(17,0) dcl 17 set ref 100* 101* 116* 116* 117 117 122 129* 129* 130 130 135 142* 143* id 10 based char(12) array level 3 packed packed unaligned dcl 4-6 ref 129 ioa_ 000106 constant entry external dcl 46 ref 169 ioa_$rsnnl 000110 constant entry external dcl 46 ref 142 143 170 j 000163 automatic fixed bin(17,0) dcl 17 set ref 170* lock based bit(36) level 2 dcl 3-10 set ref 74* 158* locker 1 based char(24) level 2 dcl 3-10 set ref 78* mylock 000164 automatic bit(1) initial packed unaligned dcl 17 set ref 17* 75* 158 nacts based fixed bin(17,0) level 2 dcl 5-5 ref 116 117 new_pdt 000172 automatic char(32) dcl 26 set ref 143* 144* 145* nproj based fixed bin(35,0) level 2 dcl 4-6 ref 129 130 null builtin function dcl 44 ref 73 84 90 93 off 76 based fixed bin(71,0) array level 3 dcl 4-6 set ref 130 135* old_pdt 000202 automatic char(32) dcl 26 set ref 142* 144* 145* pp 000212 automatic pointer dcl 31 set ref 89* 90 129 129 130 130 135 155* project based structure level 1 dcl 6-53 in procedure "delete_proj" project 722 based structure array level 2 in structure "sat" dcl 6-32 in procedure "delete_proj" set ref 101 project_id 1 000224 automatic char(12) level 2 in structure "Nsate" packed packed unaligned dcl 66 in procedure "delete_proj" set ref 98* 102 108* 113* 116 119* 124* 129 132* 137* 142* 143* project_id 1 based char(12) level 2 in structure "project" packed packed unaligned dcl 6-53 in procedure "delete_proj" ref 102 projfile based structure level 1 dcl 4-6 projfiletab 10 based structure array level 2 dcl 4-6 qdf 26 based fixed bin(71,0) array level 3 dcl 5-5 set ref 117 122* qp 000214 automatic pointer dcl 31 set ref 92* 93 116 116 117 117 122 156* reqfile based structure level 1 dcl 5-5 reqfiletab 10 based structure array level 2 dcl 5-5 sadp 000220 automatic pointer dcl 31 set ref 72* 73 74 78 158 159* sat based structure level 1 dcl 6-32 satep 000222 automatic pointer dcl 31 set ref 101* 102 102 104 107 satp 000216 automatic pointer dcl 31 set ref 83* 84 100 101 157* sc1 000050 internal static char(64) initial dcl 28 set ref 167* 169* 170* sc1_pdt 000030 internal static char(64) initial dcl 28 set ref 144* 145* 170* set_lock_$lock 000070 constant entry external dcl 39 ref 74 set_lock_$unlock 000072 constant entry external dcl 39 ref 158 state based fixed bin(17,0) level 2 dcl 6-53 set ref 102 104* 107 sys_admin_data based structure level 1 dcl 3-10 udd 000010 internal static char(64) initial dcl 28 set ref 168* 169* user_attributes based structure level 1 dcl 1-21 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 2-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-77 PROJFILE_VERSION internal static fixed bin(17,0) initial dcl 4-33 REQFILE_VERSION internal static fixed bin(17,0) initial dcl 5-28 SAT_entry_lth internal static fixed bin(17,0) initial dcl 6-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 6-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 6-24 SAT_version internal static fixed bin(17,0) initial dcl 6-24 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 1-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 1-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 1-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-50 bit builtin function dcl 44 divide builtin function dcl 44 fixed builtin function dcl 44 index builtin function dcl 44 k automatic fixed bin(17,0) dcl 17 l automatic fixed bin(17,0) dcl 17 length builtin function dcl 44 lope internal static fixed bin(17,0) initial dcl 4-30 loph internal static fixed bin(17,0) initial dcl 4-30 loqe internal static fixed bin(17,0) initial dcl 5-25 loqh internal static fixed bin(17,0) initial dcl 5-25 m automatic fixed bin(17,0) dcl 17 mod builtin function dcl 44 n automatic fixed bin(17,0) dcl 17 p automatic pointer dcl 31 q automatic pointer dcl 31 reverse builtin function dcl 44 search builtin function dcl 44 substr builtin function dcl 44 user_abs_attributes based structure level 1 dcl 2-25 verify builtin function dcl 44 NAMES DECLARED BY EXPLICIT CONTEXT. abend 001447 constant label dcl 155 ref 86 110 114 120 126 133 139 check_req 000771 constant label dcl 116 ref 105 delete_proj 000203 constant entry external dcl 11 er 000433 constant label dcl 85 ref 73 90 93 97 exit1 001502 constant label dcl 158 ref 79 test 001533 constant entry external dcl 164 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2026 2150 1644 2036 Length 2512 1644 122 325 162 60 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME delete_proj 292 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 udd delete_proj 000030 sc1_pdt delete_proj 000050 sc1 delete_proj STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME delete_proj 000100 dn delete_proj 000152 en delete_proj 000162 i delete_proj 000163 j delete_proj 000164 mylock delete_proj 000166 ap delete_proj 000170 al delete_proj 000171 ec delete_proj 000172 new_pdt delete_proj 000202 old_pdt delete_proj 000212 pp delete_proj 000214 qp delete_proj 000216 satp delete_proj 000220 sadp delete_proj 000222 satep delete_proj 000224 Nsate delete_proj THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ com_err_ cu_$arg_ptr get_wdir_ hcs_$chname_file hcs_$initiate hcs_$terminate_noname ioa_ ioa_$rsnnl set_lock_$lock set_lock_$unlock THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalid_lock_reset error_table_$locked_by_this_process LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 17 000177 11 000202 70 000211 71 000220 72 000223 73 000267 74 000273 75 000310 77 000320 78 000322 79 000357 82 000360 83 000363 84 000427 85 000433 86 000461 88 000462 89 000465 90 000531 91 000535 92 000540 93 000604 95 000610 96 000613 97 000632 98 000634 100 000641 101 000651 102 000655 104 000664 105 000666 107 000667 108 000671 110 000727 112 000730 113 000732 114 000770 116 000771 116 001010 117 001012 119 001022 120 001060 122 001061 124 001072 126 001130 129 001131 129 001150 130 001152 132 001162 133 001220 135 001221 137 001232 139 001270 142 001271 143 001320 144 001351 145 001401 155 001447 156 001460 157 001471 158 001502 159 001515 160 001526 164 001527 167 001554 168 001563 169 001570 170 001615 171 001643 ----------------------------------------------------------- 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