COMPILATION LISTING OF SEGMENT pdt_copy Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/07/88 1232.6 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 16 17 18 /****^ HISTORY COMMENTS: 19* 1) change(86-10-15,Parisek), approve(87-06-17,MCR7570), 20* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 21* Skip projects marked as renamed when scanning the SAT. 22* 2) change(88-09-15,Parisek), approve(88-09-28,MCR7996), 23* audit(88-10-05,Hunter), install(88-10-07,MR12.2-1140): 24* Implemented the copying of the hash table for pdts having them. 25* This change originally coded by Paul M. Karagianis. 26* END HISTORY COMMENTS */ 27 28 29 30 /* PDT_COPY - Procedure to copy the System Administrator's Table (SAT) and the Project Definition Tables (PDTs) 31* from given directories to a special administrative directory. 32* 33* This procedure is called with three arguments: 34* 35* 1) pathname of directory containing SAT ("from" dir ) 36* 2) pathname of directory containing PDTs ("from" dir) 37* 3) pathname of the administrative directory into which the SAT and PDTs will be copied ("to" dir ) 38* 39* Janice B. Phillipps, April 4, 1972 */ 40 41 42 pdt_copy: proc; 43 44 dcl (argp, cp_satp, cp_pdtp, htp, sp, satp, satep, pdtep, pdtp) ptr, 45 (arglg, i, lth, llth, w) fixed bin, 46 code fixed bin; 47 48 dcl (sat_dir, pdt_dir, cp_dir) char (168) aligned, 49 pdt_name char (168) aligned; 50 51 /* procedures called in this program */ 52 53 dcl cu_$arg_ptr ext entry (fixed bin, ptr, fixed bin, fixed bin), 54 com_err_ ext entry options (variable), 55 expand_path_ ext entry (ptr, fixed bin, ptr, ptr, fixed bin), 56 hcs_$initiate ext entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (1), fixed bin (2), 57 ptr, fixed bin), 58 hcs_$make_seg ext entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (5), ptr, 59 fixed bin), 60 hcs_$set_bc_seg ext entry (ptr, fixed bin, fixed bin), 61 hcs_$terminate_noname ext entry (ptr, fixed bin), 62 hcs_$truncate_seg ext entry (ptr, fixed bin, fixed bin), 63 ioa_$rsnnl ext entry options (variable); 64 65 66 dcl (addr, addrel, null) builtin; 67 68 dcl sat_zap (lth) fixed bin based, 69 pdt_zap (llth) fixed bin based; 70 71 72 /* ======================================================= */ 73 74 call cu_$arg_ptr (1, argp, arglg, code); /* get 1st arg, path of dir containing SAT */ 75 76 if code ^= 0 then do; 77 error: 78 call com_err_ (code, "pdt_copy", ""); 79 return; 80 end; 81 call expand_path_ (argp, arglg, addr (sat_dir), null, code); /* get absolute path of SAT dir */ 82 if code ^= 0 then go to error; 83 call hcs_$initiate (sat_dir, "sat", "", 0, 0, satp, code); /* get ptr to SAT header */ 84 if satp = null then go to error; 85 call cu_$arg_ptr (2, argp, arglg, code); /* get 2nd arg, path of dir containing PDTs */ 86 if code ^= 0 then go to error; 87 call expand_path_ (argp, arglg, addr (pdt_dir), null, code); /* get absolute path of PDTs dir */ 88 if code ^= 0 then go to error; 89 call cu_$arg_ptr (3, argp, arglg, code); /* get 3rd arg, path to copy data bases into */ 90 if code ^= 0 then go to error; 91 call expand_path_ (argp, arglg, addr (cp_dir), null, code); /* get absolute path of admin dir */ 92 if code ^= 0 then go to error; 93 call hcs_$make_seg (cp_dir, "sat", "", 1011b, cp_satp, code); 94 if cp_satp = null then go to error; 95 96 lth = SAT_header_lth + (satp -> sat.current_size * SAT_entry_lth); /* copy SAT to admin dir */ 97 cp_satp -> sat_zap = satp -> sat_zap; 98 99 do i = 1 to cp_satp -> sat.current_size; /* find a PDT in "from" dir by looping thru SAT */ 100 sp = addr (cp_satp -> sat.project (i)); /* get ptr to a project array */ 101 if sp -> project.state ^= 0 & sp -> project.state ^= 3 then do; /* if project active during the month, count it (do not include renamed projects either) */ 102 call ioa_$rsnnl ("^a.pdt", pdt_name, w, sp -> project.project_id); /* get name of proj and add ".pdt" */ 103 call hcs_$initiate (pdt_dir, pdt_name, "", 0, 0, pdtp, code); 104 if pdtp = null then go to nonfaterr; /* continue with other PDTs if find a bad one */ 105 call hcs_$make_seg (cp_dir, pdt_name, "", 1011b, cp_pdtp, code); /* each time get seg for copied PDT */ 106 if cp_pdtp = null then go to nonfaterr; /* continue with other PDTs if find bad one */ 107 108 llth = PDT_header_lth + (pdtp -> pdt.current_size * PDT_entry_lth); /* copy PDT to admin dir */ 109 if pdt.ht_relp > 0 then do; /* if there is a hash table */ 110 htp = addrel (pdtp, pdt.ht_relp); 111 llth = llth + htable.loht; /* then include it */ 112 end; 113 cp_pdtp -> pdt_zap = pdtp -> pdt_zap; 114 115 call hcs_$terminate_noname (pdtp, code); /* terminate each PDT as you finish */ 116 call hcs_$truncate_seg (cp_pdtp, llth, code); /* waste not, want not */ 117 call hcs_$set_bc_seg (cp_pdtp, llth * 36, code); 118 call hcs_$terminate_noname (cp_pdtp, code); 119 /* terminate the copied PDT as you finish */ 120 go to skip; 121 nonfaterr: call com_err_ (code, "pdt_copy", pdt_name); 122 end; /* end of project conditional */ 123 skip: end; /* end of project do loop: go back and get the next PDT */ 124 125 call hcs_$terminate_noname (satp, code); /* terminate the SAT */ 126 call hcs_$terminate_noname (cp_satp, code); /* terminate the copied SAT */ 127 1 1 /* BEGIN INCLUDE FILE ... hashst.incl.pl1 */ 1 2 /* format: style4 */ 1 3 1 4 /* General Utility hash table */ 1 5 1 6 dcl 1 htable based (htp) aligned, /* hash table entries of level 2 are statistical info */ 1 7 2 nb fixed bin, /* number of buckets in hash table */ 1 8 2 ni fixed bin, /* number of entries used */ 1 9 2 np fixed bin, /* number of times hash_ called referincing this table */ 1 10 2 tnt fixed bin, /* total # of tries to find, enter, or delete an entry */ 1 11 2 id char (4), /* ht01 version 1 of hash_ */ 1 12 2 gnt fixed bin, /* greatest number of tries for search etc. */ 1 13 2 loht fixed bin (18) unsigned, /* length of hash table in words */ 1 14 2 pad bit (36) aligned, /* padding */ 1 15 2 buckets (1:hash_table_size_ refer (htable.nb)), /* 26111=((1024*255)/10 words per entry)-1 (8-word header) */ 1 16 3 name char (32) unaligned, /* identifier of entry */ 1 17 3 value bit (36) aligned, /* value corresponding to name */ 1 18 3 flags aligned, 1 19 4 ds bit (1) unal, /* deleted switch="1"b if deleted */ 1 20 4 empty bit (1) unal, 1 21 4 pad bit (34) unal, /* empty switch="1"b if empty */ 1 22 2 end_of_table bit (0) aligned; /* to get address */ 1 23 1 24 declare MAX_HT_BUCKETS_IN_SEG fixed bin init (26111) int static options (constant); 1 25 declare hash_table_size_ fixed bin; 1 26 1 27 /* END INCLUDE FILE ... hashst.incl.pl1 */ 128 129 2 1 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 2 2 /* Requires user_attributes.incl.pl1 */ 2 3 2 4 /* Modified 740723 by PG to add AIM info */ 2 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 2 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 2 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 2 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 2 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 2 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 2 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 2 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 2 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 2 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 2 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 2 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 2 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 2 18 2 19 dcl (PDT_version init (4), /* version of this declaration */ 2 20 PDT_header_lth init (256), /* length in words of PDT head */ 2 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 2 22 2 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 2 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 2 25 ) fixed bin internal static options (constant); 2 26 2 27 dcl 1 pdt based (pdtp) aligned, 2 28 3 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 3 2 3 3 /* the "author" items must always be the first ones in the table. The 3 4* module which moves the converted table to the System Control process 3 5* fills in these data items and assumes them to be at the head of the segment 3 6* regardless of the specific table's actual declaration. The variables 3 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 3 8* respectively. For tables installed in multiple processes, these 3 9* are to be used to lock out multiple installations. */ 3 10 3 11 /* Lock should be used as a modification lock. Since, in general, 3 12* entries may not be moved in system tables, even by installations, 3 13* it is sufficient for only installers and programs that change threads 3 14* to set or respect the lock. Simply updating data in an entry 3 15* requires no such protection. 3 16* 3 17* Last_install_time is used by readers of system tables to detect 3 18* installations or other serious modifications. By checking it before 3 19* and after copying a block of data, they can be protected against 3 20* modifications. 3 21* 3 22* Modules that set the lock should save proc_group_id, and then 3 23* put their group id there for the time they hold the lock. 3 24* if they do not actually install the, they should restore the group id. 3 25**/ 3 26 3 27 2 author aligned, /* validation data about table's author */ 3 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 3 29 3 lock bit (36), /* installation lock */ 3 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 3 31 3 update_authorization bit (1) unal, /* update only authorizations */ 3 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 3 33 3 pad bit (33) unaligned, 3 34 3 last_install_time fixed bin (71), 3 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 3 36 3 w_dir char (64), /* author's working directory */ 3 37 3 38 /* END INCLUDE FILE author.incl.pl1 */ 2 29 2 30 2 max_size fixed bin, /* max number of entries table can grow */ 2 31 2 current_size fixed bin, /* current size of table (in entries) */ 2 32 2 version fixed bin, /* table version */ 2 33 2 freep fixed bin, /* relptr to begin of free chain */ 2 34 2 n_users fixed bin, /* number of entries actually used */ 2 35 2 project_name char (28), /* name of project */ 2 36 2 project_dir char (64), /* treename of project's directory */ 2 37 2 projfile_version fixed bin, 2 38 2 projentry bit (66*36), 2 39 2 pad3 (5) bit (36) aligned, 2 40 2 reqfile_version fixed bin, 2 41 2 reqentry bit (40*36), 2 42 2 pad4 (9) fixed bin, 2 43 2 sat_version fixed bin, 2 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 2 45 2 pad5 (4) bit (36) aligned, 2 46 2 date_reqfile_copied fixed bin (71), 2 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 2 48 2 pad2l bit (27) unaligned, 2 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 2 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 2 51 2 user (1019) aligned, /* the project definition table entries */ 2 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 2 53 2 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 2 55 2 56 2 57 2 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 2 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 2 60 2 lock bit (36), /* update lock */ 2 61 2 person_id char (24) aligned, /* login name of user */ 2 62 2 now_in fixed bin, /* count of users logged in on this entry */ 2 63 2 password char (8) aligned, /* password for anonymous user */ 2 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 2 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 2 66 2 home_dir char (64) aligned, /* user's default working directory */ 2 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 2 68 2 high_ring fixed bin, /* highest ring user may use */ 2 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 2 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 2 71 2 outer_module char (32), /* outer module used if user is interactive */ 2 72 2 lot_size fixed bin, /* size of linkage offset table */ 2 73 2 kst_size fixed bin, /* size of known segment table */ 2 74 2 cls_size fixed bin, /* size of combined linkage */ 2 75 2 uflags, /* various flags */ 2 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 2 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 2 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 2 79 3 flagpad bit (33) unal, 2 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 2 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 2 82 2 dollar_limit float bin, 2 83 2 dollar_charge float bin, /* total dollars spent this month */ 2 84 2 shift_limit (0: 7) float bin, 2 85 2 daton fixed bin (71), /* date user added to system */ 2 86 2 datof fixed bin (71), /* date user deleted */ 2 87 2 last_login_time fixed bin (71), /* time of last login */ 2 88 2 last_login_unit char (4), /* terminal id last used */ 2 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 2 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 2 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 2 92 2 last_update fixed bin (71), /* time of last transaction */ 2 93 2 logins fixed bin, /* number of logins */ 2 94 2 crashes fixed bin, /* sessions abnormally terminated */ 2 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 2 96 3 charge float bin, /* total dollar charge this shift */ 2 97 3 xxx fixed bin, 2 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 2 99 3 core fixed bin (71), /* core demand in page-microseconds */ 2 100 3 connect fixed bin (71), /* total console time in microseconds */ 2 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 2 102 2 absentee (4), /* absentee use, queues 1-4 */ 2 103 3 charge float bin, /* dollar charge this queue */ 2 104 3 jobs fixed bin, /* number of jobs submitted */ 2 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 2 106 3 memory fixed bin (71), /* total memory demand */ 2 107 2 iod (4), /* io daemon use, queues 1-4 */ 2 108 3 charge float bin, /* dollar charge this queue */ 2 109 3 pieces fixed bin, /* pieces of output requested */ 2 110 3 pad fixed bin (35), 2 111 3 pages fixed bin (35), /* number of pages output */ 2 112 3 lines fixed bin (71), /* total record count of output */ 2 113 2 devices (16) float bin, /* device charges */ 2 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 2 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 2 116 2 absolute_spent float bin, /* Spending against this */ 2 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 2 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 2 119 2 pad_was_authorization bit (72) aligned, 2 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 2 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 2 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 2 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 2 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 2 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 2 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 2 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 2 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 2 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 2 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 2 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 2 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 2 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 2 134 2 user_authorization (2) bit (72) aligned, /* range */ 2 135 2 pdtupad (5) fixed bin, 2 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 2 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 2 138 2 chain fixed bin; /* free chain */ 2 139 2 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 130 131 4 1 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 4 2 4 3 4 4 4 5 4 6 /****^ HISTORY COMMENTS: 4 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 4 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 4 9* Expand comment line of project.state to include the renamed state (state = 4 10* 3). 4 11* END HISTORY COMMENTS */ 4 12 4 13 4 14 4 15 /* Modified 740723 by PG to add AIM info */ 4 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 4 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 4 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 4 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 4 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 4 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 4 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 4 23 4 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 4 25 4 26 SAT_header_lth init (466), /* length in words of SAT header */ 4 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 4 28 4 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 4 30 ) fixed bin internal static options (constant); 4 31 4 32 dcl 1 sat based (satp) aligned, 4 33 5 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 5 2 5 3 /* the "author" items must always be the first ones in the table. The 5 4* module which moves the converted table to the System Control process 5 5* fills in these data items and assumes them to be at the head of the segment 5 6* regardless of the specific table's actual declaration. The variables 5 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 5 8* respectively. For tables installed in multiple processes, these 5 9* are to be used to lock out multiple installations. */ 5 10 5 11 /* Lock should be used as a modification lock. Since, in general, 5 12* entries may not be moved in system tables, even by installations, 5 13* it is sufficient for only installers and programs that change threads 5 14* to set or respect the lock. Simply updating data in an entry 5 15* requires no such protection. 5 16* 5 17* Last_install_time is used by readers of system tables to detect 5 18* installations or other serious modifications. By checking it before 5 19* and after copying a block of data, they can be protected against 5 20* modifications. 5 21* 5 22* Modules that set the lock should save proc_group_id, and then 5 23* put their group id there for the time they hold the lock. 5 24* if they do not actually install the, they should restore the group id. 5 25**/ 5 26 5 27 2 author aligned, /* validation data about table's author */ 5 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 5 29 3 lock bit (36), /* installation lock */ 5 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 5 31 3 update_authorization bit (1) unal, /* update only authorizations */ 5 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 5 33 3 pad bit (33) unaligned, 5 34 3 last_install_time fixed bin (71), 5 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 5 36 3 w_dir char (64), /* author's working directory */ 5 37 5 38 /* END INCLUDE FILE author.incl.pl1 */ 4 34 4 35 2 max_size fixed bin, /* max number of entries table can grow */ 4 36 2 current_size fixed bin, /* current size of table (in entries) */ 4 37 2 version fixed bin, /* version number of table (word 32) */ 4 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 4 39 2 n_projects fixed bin, /* number of entries actually used */ 4 40 2 pad_was_max_users bit (36) aligned, 4 41 2 max_units fixed bin, /* maximum number of login-units per session */ 4 42 2 pad_was_max_prim bit (36) aligned, 4 43 2 uwt_size fixed bin, /* size of User Weight Table */ 4 44 2 uwt (24) aligned, /* User Weight Table */ 4 45 3 initproc char (64) unaligned, /* user's initial procedure */ 4 46 3 units fixed bin, /* weight of initial procedure */ 4 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 4 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 4 49 2 project (3258), /* The SAT entries. 255K segment. */ 4 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 4 51 4 52 4 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 4 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 4 55 2 project_id char (12) unaligned, /* project's name */ 4 56 2 project_dir char (64) unaligned, /* project's directory */ 4 57 2 pdt_ptr pointer, /* pointer to current PDT */ 4 58 2 max_users fixed bin, /* maximum number of users from project */ 4 59 2 n_users fixed bin, /* current number */ 4 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 4 61 2 admin (4) aligned, /* list of project's administrators */ 4 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 4 63 3 pad char (2) unal, 4 64 2 cutoff char (1), /* if project is cut off, why. */ 4 65 2 min_ring fixed bin, /* lowest ring for project */ 4 66 2 max_ring fixed bin, /* highest ring for project */ 4 67 2 alias char (8) unal, /* project alias */ 4 68 2 group char (8) unal, /* default group for this project */ 4 69 2 grace_max fixed bin, /* maximum bump grace */ 4 70 2 audit bit (36), /* audit flags for project */ 4 71 2 project_authorization (2) bit (72), /* authorization of this project */ 4 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 4 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 4 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 4 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 4 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 4 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 4 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 4 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 4 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 4 81 2 satpad1 fixed bin (9) unsigned unaligned, 4 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 4 83 2 chain fixed bin; /* if free entry, chain */ 4 84 4 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 132 133 6 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 6 2 6 3 6 4 /****^ HISTORY COMMENTS: 6 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 6 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 6 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 6 8* attribute switches. 6 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 6 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 6 12* be deleted. 6 13* B) Add constants identifying attributes that can be changed by user at 6 14* login, etc. 6 15* END HISTORY COMMENTS */ 6 16 6 17 6 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 6 19 6 20 /* format: style4 */ 6 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 6 22 (2 administrator bit (1), /* 1 system administrator privileges */ 6 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 6 24 2 nobump bit (1), /* 2 user cannot be bumped */ 6 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 6 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 6 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 6 28* . of same project (distinct from "nobump") */ 6 29 2 nolist bit (1), /* 7 don't list user on "who" */ 6 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 6 31 2 multip bit (1), /* 9 user may have several processes */ 6 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 6 33 2 brief bit (1), /* 11 no login or logout message */ 6 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 6 35 2 vhomedir bit (1), /* 13 user may change homedir */ 6 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 6 37 2 sb_ok bit (1), /* 15 user may be standby */ 6 38 2 pm_ok bit (1), /* 16 user may be primary */ 6 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 6 40 2 daemon bit (1), /* 18 user may login as daemon */ 6 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 6 42 2 no_warning bit (1), /* 20 no warning message */ 6 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 6 44* . in PDT: this user has an individual load control group */ 6 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 6 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 6 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 6 48 2 pad bit (12)) unaligned; 6 49 6 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 6 51 ("none", /* 0 */ 6 52 "administrator", /* 1 */ 6 53 "primary_line", /* 2 */ 6 54 "nobump", /* 3 */ 6 55 "guaranteed_login", /* 4 */ 6 56 "anonymous", /* 5 */ 6 57 "nopreempt", /* 6 */ 6 58 "nolist", /* 7 */ 6 59 "dialok", /* 8 */ 6 60 "multip", /* 9 */ 6 61 "bumping", /* 10 */ 6 62 "brief", /* 11 */ 6 63 "vinitproc", /* 12 */ 6 64 "vhomedir", /* 13 */ 6 65 "nostartup", /* 14 */ 6 66 "no_secondary", /* 15 */ 6 67 "no_prime", /* 16 */ 6 68 "no_eo", /* 17 */ 6 69 "daemon", /* 18 */ 6 70 "", /* 19 vdim OBSOLETE */ 6 71 "no_warning", /* 20 */ 6 72 "igroup", /* 21 */ 6 73 "save_pdir", /* 22 */ 6 74 "disconnect_ok", /* 23 */ 6 75 "save_on_disconnect"); /* 24 */ 6 76 6 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 6 78 ("null", /* 0 */ 6 79 "admin", /* 1 */ 6 80 "", "", /* 2 - 3 */ 6 81 "guar", /* 4 */ 6 82 "anon", /* 5 */ 6 83 "", "", /* 6 - 7 */ 6 84 "dial", /* 8 */ 6 85 "multi_login", /* 9 */ 6 86 "preempting", /* 10 */ 6 87 "", /* 11 */ 6 88 "v_process_overseer", /* 12 */ 6 89 "v_home_dir", /* 13 */ 6 90 "no_start_up", /* 14 */ 6 91 "no_sec", /* 15 */ 6 92 "no_primary", /* 16 */ 6 93 "no_edit_only", /* 17 */ 6 94 "op_login", /* 18 */ 6 95 "", /* 19 */ 6 96 "nowarn", /* 20 */ 6 97 "", "", "", /* 21 - 23 */ 6 98 "save"); /* 24 */ 6 99 6 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 6 101 options(constant) init("000000000010000000010000000000000000"b); 6 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 6 103 6 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 6 105 options(constant) init("000000000010000000010000000000000000"b); 6 106 /* PDT value for (brief, no_warning) is default */ 6 107 6 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 6 109 options(constant) init("000100000110010000010000000000000000"b); 6 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 6 111 7 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 7 2 7 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 7 4 /* */ 7 5 /* This include file describes the attributes of an absentee job. It is */ 7 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 7 7 /* and PIT.incl.pl1. */ 7 8 /* */ 7 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 7 10 7 11 /****^ HISTORY COMMENTS: 7 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 7 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 14* Separated abs_attributes from the request structure 7 15* (abs_message_format.incl.pl1) so that the identical structure could be 7 16* used in the ute structure (user_table_entry.incl.pl1). 7 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 7 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 19* Added ABS_ATTRIBUTE_NAMES array. 7 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 7 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 7 22* Added the no_start_up flag. SCP6367 7 23* END HISTORY COMMENTS */ 7 24 7 25 dcl 1 user_abs_attributes aligned based, 7 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 7 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 7 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 7 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 7 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 7 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 7 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 7 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 7 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 7 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 7 36 2 attributes_pad bit (26) unaligned; 7 37 7 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 7 39 "restartable", 7 40 "user_deferred_until_time", 7 41 "proxy", 7 42 "set_bit_cnt", 7 43 "time_in_gmt", 7 44 "user_deferred_indefinitely", 7 45 "secondary_ok", 7 46 "truncate_absout", 7 47 "restarted", 7 48 "no_start_up"); 7 49 7 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 7 51 6 112 6 113 6 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 134 135 136 end pdt_copy; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/07/88 1232.6 pdt_copy.pl1 >spec>install>1140>pdt_copy.pl1 128 1 04/21/82 1211.8 hashst.incl.pl1 >ldd>include>hashst.incl.pl1 130 2 09/13/84 0921.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 2-29 3 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 132 4 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 4-34 5 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 134 6 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 6-112 7 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.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. PDT_entry_lth constant fixed bin(17,0) initial dcl 2-19 ref 108 PDT_header_lth constant fixed bin(17,0) initial dcl 2-19 ref 108 SAT_entry_lth constant fixed bin(17,0) initial dcl 4-24 ref 96 SAT_header_lth constant fixed bin(17,0) initial dcl 4-24 ref 96 addr builtin function dcl 66 ref 81 81 87 87 91 91 100 addrel builtin function dcl 66 ref 110 arglg 000116 automatic fixed bin(17,0) dcl 44 set ref 74* 81* 85* 87* 89* 91* argp 000100 automatic pointer dcl 44 set ref 74* 81* 85* 87* 89* 91* code 000123 automatic fixed bin(17,0) dcl 44 set ref 74* 76 77* 81* 82 83* 85* 86 87* 88 89* 90 91* 92 93* 103* 105* 115* 116* 117* 118* 121* 125* 126* com_err_ 000012 constant entry external dcl 53 ref 77 121 cp_dir 000250 automatic char(168) dcl 48 set ref 91 91 93* 105* cp_pdtp 000104 automatic pointer dcl 44 set ref 105* 106 113 116* 117* 118* cp_satp 000102 automatic pointer dcl 44 set ref 93* 94 97 99 100 126* cu_$arg_ptr 000010 constant entry external dcl 53 ref 74 85 89 current_size 36 based fixed bin(17,0) level 2 in structure "sat" dcl 4-32 in procedure "pdt_copy" ref 96 99 current_size 36 based fixed bin(17,0) level 2 in structure "pdt" dcl 2-27 in procedure "pdt_copy" ref 108 expand_path_ 000014 constant entry external dcl 53 ref 81 87 91 hcs_$initiate 000016 constant entry external dcl 53 ref 83 103 hcs_$make_seg 000020 constant entry external dcl 53 ref 93 105 hcs_$set_bc_seg 000022 constant entry external dcl 53 ref 117 hcs_$terminate_noname 000024 constant entry external dcl 53 ref 115 118 125 126 hcs_$truncate_seg 000026 constant entry external dcl 53 ref 116 ht_relp 377 based fixed bin(18,0) level 2 dcl 2-27 ref 109 110 htable based structure level 1 dcl 1-6 htp 000106 automatic pointer dcl 44 set ref 110* 111 i 000117 automatic fixed bin(17,0) dcl 44 set ref 99* 100* ioa_$rsnnl 000030 constant entry external dcl 53 ref 102 llth 000121 automatic fixed bin(17,0) dcl 44 set ref 108* 111* 111 113 116* 117 loht 6 based fixed bin(18,0) level 2 unsigned dcl 1-6 ref 111 lth 000120 automatic fixed bin(17,0) dcl 44 set ref 96* 97 null builtin function dcl 66 ref 81 81 84 87 87 91 91 94 104 106 pdt based structure level 1 dcl 2-27 pdt_dir 000176 automatic char(168) dcl 48 set ref 87 87 103* pdt_name 000322 automatic char(168) dcl 48 set ref 102* 103* 105* 121* pdt_zap based fixed bin(17,0) array dcl 68 set ref 113* 113 pdtp 000114 automatic pointer dcl 44 set ref 103* 104 108 109 110 110 113 115* project based structure level 1 dcl 4-53 in procedure "pdt_copy" project 722 based structure array level 2 in structure "sat" dcl 4-32 in procedure "pdt_copy" set ref 100 project_id 1 based char(12) level 2 packed packed unaligned dcl 4-53 set ref 102* sat based structure level 1 dcl 4-32 sat_dir 000124 automatic char(168) dcl 48 set ref 81 81 83* sat_zap based fixed bin(17,0) array dcl 68 set ref 97* 97 satp 000112 automatic pointer dcl 44 set ref 83* 84 96 97 125* sp 000110 automatic pointer dcl 44 set ref 100* 101 101 102 state based fixed bin(17,0) level 2 dcl 4-53 ref 101 101 user_attributes based structure level 1 dcl 6-21 w 000122 automatic fixed bin(17,0) dcl 44 set ref 102* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 7-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 6-77 MAX_HT_BUCKETS_IN_SEG internal static fixed bin(17,0) initial dcl 1-24 PDT_person_id_length internal static fixed bin(17,0) initial dcl 2-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 2-19 PDT_version internal static fixed bin(17,0) initial dcl 2-19 SAT_project_name_length internal static fixed bin(17,0) initial dcl 4-24 SAT_version internal static fixed bin(17,0) initial dcl 4-24 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 6-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 6-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 6-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 6-50 hash_table_size_ automatic fixed bin(17,0) dcl 1-25 pdtep automatic pointer dcl 44 satep automatic pointer dcl 44 user based structure level 1 dcl 2-58 user_abs_attributes based structure level 1 dcl 7-25 NAMES DECLARED BY EXPLICIT CONTEXT. error 000050 constant label dcl 77 ref 82 84 86 88 90 92 94 nonfaterr 000646 constant label dcl 121 ref 104 106 pdt_copy 000023 constant entry external dcl 42 skip 000671 constant label dcl 123 ref 120 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1040 1072 716 1050 Length 1400 716 32 271 121 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pdt_copy 316 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pdt_copy 000100 argp pdt_copy 000102 cp_satp pdt_copy 000104 cp_pdtp pdt_copy 000106 htp pdt_copy 000110 sp pdt_copy 000112 satp pdt_copy 000114 pdtp pdt_copy 000116 arglg pdt_copy 000117 i pdt_copy 000120 lth pdt_copy 000121 llth pdt_copy 000122 w pdt_copy 000123 code pdt_copy 000124 sat_dir pdt_copy 000176 pdt_dir pdt_copy 000250 cp_dir pdt_copy 000322 pdt_name pdt_copy THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr expand_path_ hcs_$initiate hcs_$make_seg hcs_$set_bc_seg hcs_$terminate_noname hcs_$truncate_seg ioa_$rsnnl NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 42 000022 74 000030 76 000046 77 000050 79 000073 81 000074 82 000117 83 000121 84 000166 85 000172 86 000211 87 000213 88 000236 89 000240 90 000257 91 000261 92 000304 93 000306 94 000347 96 000353 97 000362 99 000367 100 000377 101 000403 102 000407 103 000436 104 000500 105 000504 106 000542 108 000546 109 000555 110 000557 111 000562 113 000564 115 000572 116 000603 117 000616 118 000634 120 000645 121 000646 123 000671 125 000673 126 000704 136 000715 ----------------------------------------------------------- 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