COMPILATION LISTING OF SEGMENT print_sat Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1010.4 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 /* PRINT_SAT - procedure to print the binary System Administrator's Table 12* 13* coded by Eleanor Stone January 1970 */ 14 /* modified on 04/13/70 12:59 */ 15 16 /* modified for new SAT format by Janice B. Phillipps, March 12, 1972 */ 17 /* Modified 741107 by PG for authorizations & audit */ 18 /* Modified by T. Casey, June 1975, for per-user load control groups */ 19 /* Modified May 1976 by T. Casey to print project cutoff limits */ 20 /* Modified May 1978 by T. Casey to print pdir_quota */ 21 /* Modified January 1979 by T. Casey to print max_foreground, max_background, and abs_foreground_cpu_limit. */ 22 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 23 /* Modified June 1981 by E. N. Kittlitz for UNCA rate structures */ 24 /* Modified 1984-07-05 BIM for min and max authorizations. */ 25 /* Modified 1984-12-14 by EJ Sharpe for new audit flags */ 26 27 print_sat: 28 procedure; 29 30 31 /* automatic */ 32 33 dcl 1 temp aligned like project.at; 34 dcl 1 global_attr aligned like project.at; 35 dcl sat_dir char (168); 36 dcl rs_number fixed bin; /* rate structure index */ 37 dcl rs_name (0:9) char (32); 38 dcl char_string char (256); 39 dcl datestr char (24); 40 dcl sel_proj char (32) init (""); 41 dcl sat_name char (32); 42 dcl (i, jj) fixed bin; 43 dcl code fixed bin (35); 44 dcl (argp, satp, satep) pointer; 45 dcl slng fixed bin (21); 46 dcl attr char (512) varying; 47 dcl max_rs_number fixed bin; 48 49 /* DECLARATION OF BASED STRUCTURES */ 50 51 dcl arg char (slng) based (argp); 52 53 /* entries */ 54 55 dcl convert_access_audit_flags_$to_string entry (bit (36) aligned, char (*), fixed bin (35)); 56 dcl convert_access_class_$to_string_range_short entry ((2) bit (72) aligned, char (*), fixed bin (35)); 57 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 58 dcl com_err_ entry options (variable); 59 dcl date_time_ entry (fixed bin (71), char (*)); 60 dcl expand_path_ entry (ptr, fixed bin (21), ptr, ptr, fixed bin (35)); 61 dcl format_attributes_ entry (ptr, char (*) var); 62 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 63 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 64 dcl ioa_ entry options (variable); 65 dcl system_info_$max_rs_number entry (fixed bin); 66 dcl system_info_$rs_name entry (fixed bin, char (*), fixed bin (35)); 67 68 /* builtin functions */ 69 70 dcl (addr, char, clock, hbound, length, ltrim, null, reverse, string, substr, verify) builtin; 71 72 /* internal static */ 73 74 dcl my_name char (9) internal static initial ("print_sat"); 75 76 /* include files */ 77 78 /* ================================================ */ 79 1 1 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 1 2 1 3 1 4 1 5 1 6 /****^ HISTORY COMMENTS: 1 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 1 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 1 9* Expand comment line of project.state to include the renamed state (state = 1 10* 3). 1 11* END HISTORY COMMENTS */ 1 12 1 13 1 14 1 15 /* Modified 740723 by PG to add AIM info */ 1 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 1 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 1 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 1 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 1 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 1 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 1 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 1 23 1 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 1 25 1 26 SAT_header_lth init (466), /* length in words of SAT header */ 1 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 1 28 1 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 1 30 ) fixed bin internal static options (constant); 1 31 1 32 dcl 1 sat based (satp) aligned, 1 33 2 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 2 2 2 3 /* the "author" items must always be the first ones in the table. The 2 4* module which moves the converted table to the System Control process 2 5* fills in these data items and assumes them to be at the head of the segment 2 6* regardless of the specific table's actual declaration. The variables 2 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 2 8* respectively. For tables installed in multiple processes, these 2 9* are to be used to lock out multiple installations. */ 2 10 2 11 /* Lock should be used as a modification lock. Since, in general, 2 12* entries may not be moved in system tables, even by installations, 2 13* it is sufficient for only installers and programs that change threads 2 14* to set or respect the lock. Simply updating data in an entry 2 15* requires no such protection. 2 16* 2 17* Last_install_time is used by readers of system tables to detect 2 18* installations or other serious modifications. By checking it before 2 19* and after copying a block of data, they can be protected against 2 20* modifications. 2 21* 2 22* Modules that set the lock should save proc_group_id, and then 2 23* put their group id there for the time they hold the lock. 2 24* if they do not actually install the, they should restore the group id. 2 25**/ 2 26 2 27 2 author aligned, /* validation data about table's author */ 2 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 2 29 3 lock bit (36), /* installation lock */ 2 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 2 31 3 update_authorization bit (1) unal, /* update only authorizations */ 2 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 2 33 3 pad bit (33) unaligned, 2 34 3 last_install_time fixed bin (71), 2 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 2 36 3 w_dir char (64), /* author's working directory */ 2 37 2 38 /* END INCLUDE FILE author.incl.pl1 */ 1 34 1 35 2 max_size fixed bin, /* max number of entries table can grow */ 1 36 2 current_size fixed bin, /* current size of table (in entries) */ 1 37 2 version fixed bin, /* version number of table (word 32) */ 1 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 1 39 2 n_projects fixed bin, /* number of entries actually used */ 1 40 2 pad_was_max_users bit (36) aligned, 1 41 2 max_units fixed bin, /* maximum number of login-units per session */ 1 42 2 pad_was_max_prim bit (36) aligned, 1 43 2 uwt_size fixed bin, /* size of User Weight Table */ 1 44 2 uwt (24) aligned, /* User Weight Table */ 1 45 3 initproc char (64) unaligned, /* user's initial procedure */ 1 46 3 units fixed bin, /* weight of initial procedure */ 1 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 1 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 1 49 2 project (3258), /* The SAT entries. 255K segment. */ 1 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 1 51 1 52 1 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 1 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 1 55 2 project_id char (12) unaligned, /* project's name */ 1 56 2 project_dir char (64) unaligned, /* project's directory */ 1 57 2 pdt_ptr pointer, /* pointer to current PDT */ 1 58 2 max_users fixed bin, /* maximum number of users from project */ 1 59 2 n_users fixed bin, /* current number */ 1 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 1 61 2 admin (4) aligned, /* list of project's administrators */ 1 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 1 63 3 pad char (2) unal, 1 64 2 cutoff char (1), /* if project is cut off, why. */ 1 65 2 min_ring fixed bin, /* lowest ring for project */ 1 66 2 max_ring fixed bin, /* highest ring for project */ 1 67 2 alias char (8) unal, /* project alias */ 1 68 2 group char (8) unal, /* default group for this project */ 1 69 2 grace_max fixed bin, /* maximum bump grace */ 1 70 2 audit bit (36), /* audit flags for project */ 1 71 2 project_authorization (2) bit (72), /* authorization of this project */ 1 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 1 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 1 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 1 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 1 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 1 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 1 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 1 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 1 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 1 81 2 satpad1 fixed bin (9) unsigned unaligned, 1 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 1 83 2 chain fixed bin; /* if free entry, chain */ 1 84 1 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 80 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 */ 81 82 /* ================================================ */ 83 84 /* INITIALIZATION - LOCATE AND INITIATE SAT */ 85 86 call system_info_$max_rs_number (max_rs_number); 87 do i = 0 to hbound (rs_name, 1); 88 rs_name = " rate structure " || ltrim (char (i)); 89 end; 90 91 call cu_$arg_ptr (1, argp, slng, code); 92 if code ^= 0 then do; 93 call com_err_ (code, my_name, ""); 94 return; 95 end; 96 97 call expand_path_ (argp, slng, addr (sat_dir), addr (sat_name), code); 98 if code ^= 0 then do; 99 call com_err_ (code, my_name, arg); 100 return; 101 end; 102 103 i = length (sat_name) - verify (reverse (sat_name), " ") + 1; 104 if i > length (".sat") 105 then if substr (sat_name, i - 3, 4) ^= ".sat" 106 then substr (sat_name, i + 1, 4) = ".sat"; 107 else; 108 else if sat_name ^= "sat" 109 then substr (sat_name, i + 1, 4) = ".sat"; 110 111 call hcs_$initiate (sat_dir, sat_name, "", 0, 0, satp, code); 112 if satp = null then do; 113 call com_err_ (code, my_name, "^a>^a", sat_dir, sat_name); 114 return; 115 end; 116 117 if satp -> sat.version ^= SAT_version then do; 118 call com_err_ (0, my_name, "SAT version ^d is inconsistent with declarations used by this program (version ^d).", satp -> sat.version, SAT_version); 119 return; 120 end; 121 122 call cu_$arg_ptr (2, argp, slng, code); 123 if code = 0 then do; 124 sel_proj = arg; 125 go to plp; 126 end; 127 128 call date_time_ ((clock ()), datestr); 129 call ioa_ ("^//* ^a>^a ^a */^/", sat_dir, sat_name, datestr); 130 call ioa_ ("/* author.process_group_id:^6x^a; */", satp -> sat.author.proc_group_id); 131 call ioa_ ("/* author.w_dir:^17x^a; */", satp -> sat.author.w_dir); 132 133 call ioa_ ("/* max_size:^18x^4d; */", sat.max_size); 134 call ioa_ ("/* current_size:^14x^4d; */", sat.current_size); 135 call ioa_ ("/* version:^22x^d; */", sat.version); 136 call ioa_ ("/* freep:^21x^4d; */", sat.freep); 137 call ioa_ ("/* n_projects:^16x^4d; */", sat.n_projects); 138 call ioa_ (" Maxunits:^16x^6d;", sat.max_units); 139 if satp -> sat.uwt_size ^= 0 then do; 140 call ioa_ ("/* uwt_size:^20x^2d; */", sat.uwt_size); 141 do i = 1 to satp -> sat.uwt_size; 142 call ioa_ ("^3xUwt:^2-^a, ^d;", sat.uwt (i).initproc, sat.uwt (i).units); 143 end; 144 end; 145 146 do jj = 1 to 2; 147 if sat.system_admin (jj) ^= "" 148 then call ioa_ ("^3xAdministrator:^-^a;", sat.system_admin (jj)); 149 end; 150 151 /* Compute Global attribute bits */ 152 153 string (global_attr) = (36)"1"b; /* initially assume all are ON */ 154 155 do i = 1 to sat.current_size; /* turn off all non-global attrs */ 156 satep = addr (sat.project (i)); 157 if project.state ^= 0 then do; 158 string (temp) = string (project.at); /* copy attributes */ 159 temp.sb_ok = ^(temp.sb_ok); /* normalize inverted attrs */ 160 temp.pm_ok = ^(temp.pm_ok); /* (names are opposite of bits) */ 161 temp.eo_ok = ^(temp.eo_ok); /* .. */ 162 string (global_attr) = string (global_attr) & string (temp); 163 end; 164 end; 165 166 string (temp) = string (global_attr); /* leave global alone, make copy */ 167 temp.sb_ok = ^(temp.sb_ok); 168 temp.pm_ok = ^(temp.pm_ok); 169 temp.eo_ok = ^(temp.eo_ok); 170 call format_attributes_ (addr (temp), attr); 171 call ioa_ (" Attributes:^6x^a", attr); 172 173 /* NOW PRINT OUT ALL PROJECT ENTRIES */ 174 175 plp: 176 do rs_number = 0 to max_rs_number; /* get all the rate structure names */ 177 call system_info_$rs_name (rs_number, rs_name (rs_number), code); 178 end; 179 180 do i = 1 to sat.current_size; 181 182 satep = addr (satp -> sat.project (i)); 183 if project.state ^= 0 then do; 184 if sel_proj ^= "" then if sel_proj ^= project.project_id then go to skip; 185 call ioa_ ("^/^3xprojectid:^-^a;", project.project_id); 186 call ioa_ ("/* state:^2-^d; */", project.state); 187 call ioa_ ("^3xprojectdir:^-^a;", project.project_dir); 188 if project.pdt_ptr ^= null 189 then call ioa_ ("/* pdt_ptr:^-^p; */", project.pdt_ptr); 190 call ioa_ ("^3xmaxprim:^-^d;", project.max_users); 191 call ioa_ ("/* n_users:^-^d; */", project.n_users); 192 string (temp) = string (project.at); 193 temp.nopreempt = "0"b; /* only used in PDT */ 194 195 if sel_proj = "" then do; /* if printing whole SAT */ 196 temp.sb_ok = ^(temp.sb_ok); 197 temp.pm_ok = ^(temp.pm_ok); 198 temp.eo_ok = ^(temp.eo_ok); 199 string (temp) = string (temp) & ^string (global_attr); /* turn OFF bits that are global */ 200 temp.sb_ok = ^(temp.sb_ok); 201 temp.pm_ok = ^(temp.pm_ok); 202 temp.eo_ok = ^(temp.eo_ok); 203 end; 204 call format_attributes_ (addr (temp), attr); 205 call ioa_ ("^3xattributes:^-^a", attr); 206 if project.audit ^= ""b then do; 207 call convert_access_audit_flags_$to_string (project.audit, char_string, code); 208 if code ^= 0 209 then call com_err_ (code, my_name, "Could not convert audit flags."); 210 211 if char_string ^= "" 212 then call ioa_ ("^3xaudit:^2-""^a"";", char_string); 213 end; 214 215 call convert_access_class_$to_string_range_short (project.project_authorization, char_string, code); 216 if code ^= 0 217 then call com_err_ (code, my_name, "Could not convert authorization."); 218 219 if char_string ^= "" 220 then call ioa_ ("^3xauthorization:^-""^a"";", char_string); 221 222 if max_rs_number > 0 then 223 call ioa_ ("/* rate_structure:^-^a (^d); */", rs_name (project.rs_number), project.rs_number); 224 225 if project.cutoff ^= " " 226 then call ioa_ ("^3xcutoff:^-^-^a;", project.cutoff); 227 call ioa_ ("/* days_to_cutoff:^-^d; */", project.days_to_cutoff); 228 call ioa_ ("/* pct_balance:^-^d%; */", project.pct_balance); 229 call ioa_ ("/* dollars_to_cutoff: $^.2f; */", project.dollars_to_cutoff); 230 call ioa_ ("^3xring:^-^-^d,^d;", project.min_ring, project.max_ring); 231 if project.alias ^= "" 232 then call ioa_ ("^3xalias:^-^-^a;", project.alias); 233 call ioa_ ("^3xgroup:^-^-^a;", project.group); 234 if project.at.igroup then do; 235 if project.groups (1) ^= "" then do; /* if any authorized groups */ 236 if project.groups (2) ^= "" then /* if two of them */ 237 call ioa_ ("^3xgroups:^-^a, ^a;", project.groups (1), project.groups (2)); 238 else call ioa_ ("^3xgroups:^-^a;", project.groups (1)); 239 end; 240 end; 241 call ioa_ ("^3xgrace:^2-^d;", project.grace_max); 242 call ioa_ ("^3xpdir_quota:^-^d;", project.pdir_quota); 243 call ioa_ ("^3xmax_foreground:^-^d;", project.max_foreground); 244 call ioa_ ("^3xmax_background:^-^d;", project.max_background); 245 call ioa_ ("^3xabs_foreground_cpu_limit:^x^d;", project.abs_foreground_cpu_limit); 246 do jj = 1 to 4; 247 if project.admin (jj).userid ^= "" then 248 call ioa_ ("^3xadministrator:^-^a;", project.admin (jj).userid); 249 end; 250 end; 251 skip: end; 252 253 call ioa_ (""); 254 255 if sel_proj = "" 256 then call ioa_ ("end;^/"); 257 258 call hcs_$terminate_noname (satp, code); 259 return; 260 261 end print_sat; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0942.4 print_sat.pl1 >special_ldd>install>MR12.2-1047>print_sat.pl1 80 1 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 1-34 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 81 3 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 3-112 4 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>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. SAT_version 000053 constant fixed bin(17,0) initial dcl 1-24 set ref 117 118* abs_foreground_cpu_limit 115 based fixed bin(17,0) level 2 packed packed unaligned dcl 1-53 set ref 245* addr builtin function dcl 70 ref 97 97 97 97 156 170 170 182 204 204 admin 31 based structure array level 2 dcl 1-53 alias 74 based char(8) level 2 packed packed unaligned dcl 1-53 set ref 231 231* arg based char packed unaligned dcl 51 set ref 99* 124 argp 000426 automatic pointer dcl 44 set ref 91* 97* 99 122* 124 at 30 based structure level 2 dcl 1-53 ref 158 192 attr 000435 automatic varying char(512) dcl 46 set ref 170* 171* 204* 205* audit 101 based bit(36) level 2 dcl 1-53 set ref 206 207* author based structure level 2 dcl 1-32 char builtin function dcl 70 ref 88 char_string 000275 automatic char(256) packed unaligned dcl 38 set ref 207* 211 211* 215* 219 219* clock builtin function dcl 70 ref 128 code 000425 automatic fixed bin(35,0) dcl 43 set ref 91* 92 93* 97* 98 99* 111* 113* 122* 123 177* 207* 208 208* 215* 216 216* 258* com_err_ 000022 constant entry external dcl 58 ref 93 99 113 118 208 216 convert_access_audit_flags_$to_string 000014 constant entry external dcl 55 ref 207 convert_access_class_$to_string_range_short 000016 constant entry external dcl 56 ref 215 cu_$arg_ptr 000020 constant entry external dcl 57 ref 91 122 current_size 36 based fixed bin(17,0) level 2 dcl 1-32 set ref 134* 155 180 cutoff 71 based char(1) level 2 dcl 1-53 set ref 225 225* date_time_ 000024 constant entry external dcl 59 ref 128 datestr 000375 automatic char(24) packed unaligned dcl 39 set ref 128* 129* days_to_cutoff 112 based fixed bin(17,0) level 2 packed packed unaligned dcl 1-53 set ref 227* dollars_to_cutoff 113 based float bin(27) level 2 dcl 1-53 set ref 229* eo_ok 0(16) 000100 automatic bit(1) level 2 packed packed unaligned dcl 33 set ref 161* 161 169* 169 198* 198 202* 202 expand_path_ 000026 constant entry external dcl 60 ref 97 format_attributes_ 000030 constant entry external dcl 61 ref 170 204 freep 40 based fixed bin(17,0) level 2 dcl 1-32 set ref 136* global_attr 000101 automatic structure level 1 dcl 34 set ref 153* 162* 162 166 199 grace_max 100 based fixed bin(17,0) level 2 dcl 1-53 set ref 241* group 76 based char(8) level 2 packed packed unaligned dcl 1-53 set ref 233* groups 106 based char(8) array level 2 packed packed unaligned dcl 1-53 set ref 235 236 236* 236* 238* hbound builtin function dcl 70 ref 87 hcs_$initiate 000032 constant entry external dcl 62 ref 111 hcs_$terminate_noname 000034 constant entry external dcl 63 ref 258 i 000423 automatic fixed bin(17,0) dcl 42 set ref 87* 88* 103* 104 104 104 108 141* 142 142* 155* 156* 180* 182* igroup 30(20) based bit(1) level 3 packed packed unaligned dcl 1-53 ref 234 initproc 46 based char(64) array level 3 packed packed unaligned dcl 1-32 set ref 142* ioa_ 000036 constant entry external dcl 64 ref 129 130 131 133 134 135 136 137 138 140 142 147 171 185 186 187 188 190 191 205 211 219 222 225 227 228 229 230 231 233 236 238 241 242 243 244 245 247 253 255 jj 000424 automatic fixed bin(17,0) dcl 42 set ref 146* 147 147* 246* 247 247* length builtin function dcl 70 ref 103 104 ltrim builtin function dcl 70 ref 88 max_background 114(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-53 set ref 244* max_foreground 114(18) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-53 set ref 243* max_ring 73 based fixed bin(17,0) level 2 dcl 1-53 set ref 230* max_rs_number 000636 automatic fixed bin(17,0) dcl 47 set ref 86* 175 222 max_size 35 based fixed bin(17,0) level 2 dcl 1-32 set ref 133* max_units 43 based fixed bin(17,0) level 2 dcl 1-32 set ref 138* max_users 26 based fixed bin(17,0) level 2 dcl 1-53 set ref 190* min_ring 72 based fixed bin(17,0) level 2 dcl 1-53 set ref 230* my_name 000010 internal static char(9) initial packed unaligned dcl 74 set ref 93* 99* 113* 118* 208* 216* n_projects 41 based fixed bin(17,0) level 2 dcl 1-32 set ref 137* n_users 27 based fixed bin(17,0) level 2 dcl 1-53 set ref 191* nopreempt 0(05) 000100 automatic bit(1) level 2 packed packed unaligned dcl 33 set ref 193* null builtin function dcl 70 ref 112 188 pct_balance 112(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 1-53 set ref 228* pdir_quota 114 based fixed bin(17,0) level 2 packed packed unaligned dcl 1-53 set ref 242* pdt_ptr 24 based pointer level 2 dcl 1-53 set ref 188 188* pm_ok 0(15) 000100 automatic bit(1) level 2 packed packed unaligned dcl 33 set ref 160* 160 168* 168 197* 197 201* 201 proc_group_id based char(32) level 3 dcl 1-32 set ref 130* project based structure level 1 dcl 1-53 in procedure "print_sat" project 722 based structure array level 2 in structure "sat" dcl 1-32 in procedure "print_sat" set ref 156 182 project_authorization 102 based bit(72) array level 2 dcl 1-53 set ref 215* project_dir 4 based char(64) level 2 packed packed unaligned dcl 1-53 set ref 187* project_id 1 based char(12) level 2 packed packed unaligned dcl 1-53 set ref 184 185* reverse builtin function dcl 70 ref 103 rs_name 000155 automatic char(32) array packed unaligned dcl 37 set ref 87 88* 177* 222* rs_number 115(18) based fixed bin(9,0) level 2 in structure "project" packed packed unsigned unaligned dcl 1-53 in procedure "print_sat" set ref 222 222* rs_number 000154 automatic fixed bin(17,0) dcl 36 in procedure "print_sat" set ref 175* 177* 177* sat based structure level 1 dcl 1-32 sat_dir 000102 automatic char(168) packed unaligned dcl 35 set ref 97 97 111* 113* 129* sat_name 000413 automatic char(32) packed unaligned dcl 41 set ref 97 97 103 103 104 104* 108 108* 111* 113* 129* satep 000432 automatic pointer dcl 44 set ref 156* 157 158 182* 183 184 185 186 187 188 188 190 191 192 206 207 215 222 222 225 225 227 228 229 230 230 231 231 233 234 235 236 236 236 238 241 242 243 244 245 247 247 satp 000430 automatic pointer dcl 44 set ref 111* 112 117 118 130 131 133 134 135 136 137 138 139 140 141 142 142 147 147 155 156 180 182 258* sb_ok 0(14) 000100 automatic bit(1) level 2 packed packed unaligned dcl 33 set ref 159* 159 167* 167 196* 196 200* 200 sel_proj 000403 automatic char(32) initial packed unaligned dcl 40 set ref 40* 124* 184 184 195 255 slng 000434 automatic fixed bin(21,0) dcl 45 set ref 91* 97* 99 99 122* 124 state based fixed bin(17,0) level 2 dcl 1-53 set ref 157 183 186* string builtin function dcl 70 set ref 153* 158* 158 162* 162 162 166* 166 192* 192 199* 199 199 substr builtin function dcl 70 set ref 104 104* 108* system_admin 676 based char(32) array level 2 packed packed unaligned dcl 1-32 set ref 147 147* system_info_$max_rs_number 000040 constant entry external dcl 65 ref 86 system_info_$rs_name 000042 constant entry external dcl 66 ref 177 temp 000100 automatic structure level 1 dcl 33 set ref 158* 162 166* 170 170 192* 199* 199 204 204 units 66 based fixed bin(17,0) array level 3 dcl 1-32 set ref 142* user_attributes based structure level 1 dcl 3-21 userid 31 based char(30) array level 3 packed packed unaligned dcl 1-53 set ref 247 247* uwt 46 based structure array level 2 dcl 1-32 uwt_size 45 based fixed bin(17,0) level 2 dcl 1-32 set ref 139 140* 141 verify builtin function dcl 70 ref 103 version 37 based fixed bin(17,0) level 2 dcl 1-32 set ref 117 118* 135* w_dir 15 based char(64) level 3 dcl 1-32 set ref 131* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 4-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 3-77 SAT_entry_lth internal static fixed bin(17,0) initial dcl 1-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 1-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 1-24 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 user_abs_attributes based structure level 1 dcl 4-25 NAMES DECLARED BY EXPLICIT CONTEXT. plp 001744 constant label dcl 175 ref 125 print_sat 000476 constant entry external dcl 27 skip 003312 constant label dcl 251 ref 184 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3552 3616 3363 3562 Length 4130 3363 44 276 166 4 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME print_sat 508 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 my_name print_sat STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME print_sat 000100 temp print_sat 000101 global_attr print_sat 000102 sat_dir print_sat 000154 rs_number print_sat 000155 rs_name print_sat 000275 char_string print_sat 000375 datestr print_sat 000403 sel_proj print_sat 000413 sat_name print_sat 000423 i print_sat 000424 jj print_sat 000425 code print_sat 000426 argp print_sat 000430 satp print_sat 000432 satep print_sat 000434 slng print_sat 000435 attr print_sat 000636 max_rs_number print_sat THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_access_audit_flags_$to_string convert_access_class_$to_string_range_short cu_$arg_ptr date_time_ expand_path_ format_attributes_ hcs_$initiate hcs_$terminate_noname ioa_ system_info_$max_rs_number system_info_$rs_name NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000475 40 000503 86 000506 87 000514 88 000521 89 000574 91 000577 92 000616 93 000620 94 000641 97 000642 98 000665 99 000667 100 000713 103 000714 104 000732 107 000743 108 000744 111 000753 112 001016 113 001022 114 001055 117 001056 118 001062 119 001116 122 001117 123 001136 124 001140 125 001145 128 001146 129 001165 130 001215 131 001235 133 001256 134 001302 135 001323 136 001347 137 001373 138 001414 139 001435 140 001440 141 001463 142 001473 143 001525 146 001527 147 001535 149 001572 153 001574 155 001576 156 001607 157 001613 158 001615 159 001617 160 001627 161 001637 162 001647 164 001651 166 001653 167 001655 168 001665 169 001675 170 001705 171 001724 175 001744 177 001753 178 001775 180 001777 182 002007 183 002013 184 002015 185 002025 186 002050 187 002070 188 002114 190 002141 191 002163 192 002207 193 002212 195 002214 196 002220 197 002230 198 002240 199 002250 200 002253 201 002263 202 002273 204 002303 205 002322 206 002342 207 002345 208 002366 211 002414 215 002443 216 002465 219 002513 222 002542 225 002577 227 002624 228 002645 229 002673 230 002714 231 002743 233 002773 234 003015 235 003021 236 003027 238 003061 241 003102 242 003124 243 003150 244 003176 245 003224 246 003245 247 003253 249 003310 251 003312 253 003314 255 003325 258 003344 259 003355 ----------------------------------------------------------- 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