COMPILATION LISTING OF SEGMENT pdt_counter_check Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1036.5 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 pdt_counter_check: proc; 12 13 /* Command to go thru pdt entries, checking the various process counters for correctness 14* and consistency. (They can get inconsistent because of answering service bugs, or faults during 15* logins and logouts, caused by hardware problems, damaged segments, etc.) 16* 17* WARNING: 18* This command provides an alternative to patching system tables with debug. 19* While it does contain some knowledge about proper and consistent values for 20* the counters, it is capable of making things worse if it is misused. It is 21* strongly recommended that a Honeywell representative be consulted before 22* using this command with the -reset or -query arguments. 23* 24* USAGE: pdt_counter_check {-ctl_args} 25* 26* Action: (only one of the following): 27* * -check just print messages about errors (DEFAULT) 28* * -query ask if bad counters should be reset, after each error message 29* * -reset reset bad counters automatically 30* 31* Verbosity: (default is to print only when counters are clearly wrong, 32* * and not print nonzero counters that could be right or wrong). 33* * -print_non_zero, -print_nonzero, -pnz 34* * print all nonzero counters 35* 36* Person and Project (default is all persons and all projects): 37* * -user Person_id just check pdt entries belonging to this person 38* * -project Project just check this project's pdt entries 39* 40* Where to find SAT and PDTs: 41* * -sat_dir PATH default >sc1 42* * -pdt_dir PATH default >sc1>pdt 43* 44* Coded January 1980 by Tom Casey. 45* Modified march 3, 1980 by Tom Casey to add -pnz and warning in usage comments. 46* 47**/ 48 49 /* DECLARATIONS */ 50 51 /* Automatic */ 52 53 /* binary */ 54 dcl code fixed bin (35); 55 dcl (argl, argno, nargs) fixed bin; 56 dcl (active_projects, checked_projects, pdt_entries, active_users, error_count, now_in_error_count) fixed bin init (0); 57 dcl (pdtx, satx) fixed bin; 58 59 /* bit */ 60 dcl (project_found, user_found) bit (1) aligned init (""b); 61 dcl (check_sw, query_sw, reset_sw, user_sw, project_sw, pnz_sw) bit (1) aligned init (""b); 62 dcl reset_negative bit (1) aligned; 63 64 /* char */ 65 dcl ename char (32); 66 dcl pdt_dir char (168) init (">sc1>pdt"); 67 dcl sat_dir char (168) init (">sc1"); 68 dcl project_name char (9) init (""); 69 dcl user_name char (22) init (""); 70 dcl pers char (22) varying init (""); 71 dcl proj char (9) varying init (""); 72 73 /* ptr */ 74 dcl (argp, pdtp, pdtep, satp, satep) ptr init (null); 75 76 /* Based */ 77 78 dcl arg char (argl) based (argp); 79 80 /* Builtin and Condition */ 81 82 dcl (addr, null, rtrim, substr) builtin; 83 dcl cleanup condition; 84 85 /* Entries */ 86 87 dcl absolute_pathname_ entry (char (*), char (*), fixed bin (35)); /* inpath,outpath,code */ 88 dcl com_err_ entry options (variable); 89 dcl command_query_ entry options (variable); /* qi_ptr,answer c*v, caller c*, ioa_ctl_string c*, ioa_args */ 90 dcl cu_$arg_count entry (fixed bin); 91 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 92 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 93 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 94 dcl ioa_ entry options (variable); 95 96 /* External static */ 97 98 dcl error_table_$badopt ext fixed bin (35); 99 dcl error_table_$noarg ext fixed bin (35); 100 101 /* Internal Static */ 102 103 dcl me char (17) int static options (constant) init ("pdt_counter_check"); 104 105 /* Include files */ 106 107 1 1 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 1 2 /* Requires user_attributes.incl.pl1 */ 1 3 1 4 /* Modified 740723 by PG to add AIM info */ 1 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 1 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 1 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 1 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 1 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 1 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 1 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 1 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 1 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 1 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 1 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 1 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 1 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 1 18 1 19 dcl (PDT_version init (4), /* version of this declaration */ 1 20 PDT_header_lth init (256), /* length in words of PDT head */ 1 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 1 22 1 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 1 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 1 25 ) fixed bin internal static options (constant); 1 26 1 27 dcl 1 pdt based (pdtp) aligned, 1 28 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 29 1 30 2 max_size fixed bin, /* max number of entries table can grow */ 1 31 2 current_size fixed bin, /* current size of table (in entries) */ 1 32 2 version fixed bin, /* table version */ 1 33 2 freep fixed bin, /* relptr to begin of free chain */ 1 34 2 n_users fixed bin, /* number of entries actually used */ 1 35 2 project_name char (28), /* name of project */ 1 36 2 project_dir char (64), /* treename of project's directory */ 1 37 2 projfile_version fixed bin, 1 38 2 projentry bit (66*36), 1 39 2 pad3 (5) bit (36) aligned, 1 40 2 reqfile_version fixed bin, 1 41 2 reqentry bit (40*36), 1 42 2 pad4 (9) fixed bin, 1 43 2 sat_version fixed bin, 1 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 1 45 2 pad5 (4) bit (36) aligned, 1 46 2 date_reqfile_copied fixed bin (71), 1 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 1 48 2 pad2l bit (27) unaligned, 1 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 1 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 1 51 2 user (1019) aligned, /* the project definition table entries */ 1 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 1 53 1 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 1 55 1 56 1 57 1 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 1 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 1 60 2 lock bit (36), /* update lock */ 1 61 2 person_id char (24) aligned, /* login name of user */ 1 62 2 now_in fixed bin, /* count of users logged in on this entry */ 1 63 2 password char (8) aligned, /* password for anonymous user */ 1 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 1 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 1 66 2 home_dir char (64) aligned, /* user's default working directory */ 1 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 1 68 2 high_ring fixed bin, /* highest ring user may use */ 1 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 1 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 1 71 2 outer_module char (32), /* outer module used if user is interactive */ 1 72 2 lot_size fixed bin, /* size of linkage offset table */ 1 73 2 kst_size fixed bin, /* size of known segment table */ 1 74 2 cls_size fixed bin, /* size of combined linkage */ 1 75 2 uflags, /* various flags */ 1 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 1 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 1 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 1 79 3 flagpad bit (33) unal, 1 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 1 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 1 82 2 dollar_limit float bin, 1 83 2 dollar_charge float bin, /* total dollars spent this month */ 1 84 2 shift_limit (0: 7) float bin, 1 85 2 daton fixed bin (71), /* date user added to system */ 1 86 2 datof fixed bin (71), /* date user deleted */ 1 87 2 last_login_time fixed bin (71), /* time of last login */ 1 88 2 last_login_unit char (4), /* terminal id last used */ 1 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 1 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 1 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 1 92 2 last_update fixed bin (71), /* time of last transaction */ 1 93 2 logins fixed bin, /* number of logins */ 1 94 2 crashes fixed bin, /* sessions abnormally terminated */ 1 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 1 96 3 charge float bin, /* total dollar charge this shift */ 1 97 3 xxx fixed bin, 1 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 1 99 3 core fixed bin (71), /* core demand in page-microseconds */ 1 100 3 connect fixed bin (71), /* total console time in microseconds */ 1 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 1 102 2 absentee (4), /* absentee use, queues 1-4 */ 1 103 3 charge float bin, /* dollar charge this queue */ 1 104 3 jobs fixed bin, /* number of jobs submitted */ 1 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 1 106 3 memory fixed bin (71), /* total memory demand */ 1 107 2 iod (4), /* io daemon use, queues 1-4 */ 1 108 3 charge float bin, /* dollar charge this queue */ 1 109 3 pieces fixed bin, /* pieces of output requested */ 1 110 3 pad fixed bin (35), 1 111 3 pages fixed bin (35), /* number of pages output */ 1 112 3 lines fixed bin (71), /* total record count of output */ 1 113 2 devices (16) float bin, /* device charges */ 1 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 1 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 1 116 2 absolute_spent float bin, /* Spending against this */ 1 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 1 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 1 119 2 pad_was_authorization bit (72) aligned, 1 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 1 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 1 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 1 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 1 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 1 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 1 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 1 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 1 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 1 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 1 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 1 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 1 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 1 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 1 134 2 user_authorization (2) bit (72) aligned, /* range */ 1 135 2 pdtupad (5) fixed bin, 1 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 1 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 1 138 2 chain fixed bin; /* free chain */ 1 139 1 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 108 109 3 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 3 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 3 3 /* version number changed to 4, 08/10/78 WOS */ 3 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 3 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 3 6 3 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 3 8 2 version fixed bin, /* version of this structure - must be set, see below */ 3 9 2 switches aligned, /* various bit switch values */ 3 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 3 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 3 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 3 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 3 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 3 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 3 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 3 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 3 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 3 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 3 20 3 21 /* Limit of data defined for version 2 */ 3 22 3 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 3 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 3 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 3 26 /* minimum of 30 seconds required for repeat */ 3 27 /* otherwise, no repeat will occur */ 3 28 /* Limit of data defined for version 4 */ 3 29 3 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 3 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 3 32 3 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 3 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 3 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 3 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 3 37 3 38 /* END INCLUDE FILE query_info.incl.pl1 */ 110 111 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 */ 112 113 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 */ 114 115 116 /* PROCEDURE */ 117 118 /* Process Arguments */ 119 120 call cu_$arg_count (nargs); 121 122 do argno = 1 to nargs; 123 124 call get_arg; 125 if substr (arg, 1, 1) ^= "-" then do; 126 call com_err_ (0, me, 127 "Unknown argument: ""^a""; all args must be preceded by an identifying control arg.", arg); 128 return; 129 end; 130 if arg = "-check" | arg = "-ck" then 131 check_sw = "1"b; 132 else if arg = "-query" then 133 query_sw = "1"b; 134 else if arg = "-reset" then 135 reset_sw = "1"b; 136 else if arg = "-pnz" | arg = "-print_nonzero" | arg = "-print_non_zero" then 137 pnz_sw = "1"b; 138 else if arg = "-user" then do; 139 call get_next_arg; 140 if argl > 22 then do; 141 call com_err_ (0, me, "User name ""^a"" too long (max 22 chars)", arg); 142 return; 143 end; 144 user_name = arg; 145 user_sw = "1"b; 146 end; 147 else if arg = "-project" then do; 148 call get_next_arg; 149 if argl > 9 then do; 150 call com_err_ (0, me, "Project name ""^a"" too long (max 9 chars)", arg); 151 return; 152 end; 153 project_name = arg; 154 project_sw = "1"b; 155 end; 156 else if arg = "-sat_dir" then do; 157 call get_next_arg; 158 call absolute_pathname_ ((arg), sat_dir, code); 159 if code ^= 0 then do; 160 path_error: call com_err_ (code, me, arg); 161 return; 162 end; 163 end; 164 else if arg = "-pdt_dir" then do; 165 call get_next_arg; 166 call absolute_pathname_ (arg, pdt_dir, code); 167 if code ^= 0 then goto path_error; 168 end; 169 else do; 170 call com_err_ (error_table_$badopt, me, arg); 171 return; 172 end; 173 end; /* end loop thru args */ 174 175 /* Check for legal combinations of args */ 176 177 if (reset_sw & (query_sw | check_sw)) 178 | (query_sw &check_sw) then do; 179 call com_err_ (0, me, "Only one of -reset, -query, and -check bay be given."); 180 return; 181 end; 182 183 /* Initialize, and initiate segments */ 184 185 on cleanup begin; 186 if satp ^= null then 187 call hcs_$terminate_noname (satp, (0)); 188 if pdtp ^= null then 189 call hcs_$terminate_noname (pdtp, (0)); 190 end; 191 192 call hcs_$initiate (sat_dir, "sat", "", 0, 0, satp, code); 193 if satp = null then do; 194 call com_err_ (code, me, "^a>sat", sat_dir); 195 return; 196 end; 197 198 /* Loop thru PDTs */ 199 200 do satx = 1 to sat.current_size 201 while (^project_found); 202 satep = addr (sat.project (satx)); 203 204 proj = rtrim (project.project_id); 205 if project_sw then 206 if project_name = proj then 207 project_found = "1"b; 208 209 if project.state = 1 /* if project is active */ 210 & (project_found | ^project_sw) then do; /* and we want to check it */ 211 active_projects = active_projects + 1; 212 ename = proj || ".pdt"; 213 call hcs_$initiate (pdt_dir, ename, "", 0, 0, pdtp, code); 214 if pdtp = null then 215 call com_err_ (code, me, "^a>^a", pdt_dir, ename); 216 else do; 217 checked_projects = checked_projects + 1; 218 call check_project; 219 call hcs_$terminate_noname (pdtp, code); 220 if code ^= 0 then 221 call com_err_ (code, me, "^a>^a", pdt_dir, ename); 222 end; /* end pdt initiated successfully */ 223 end; /* end project is active */ 224 end; /* end loop thru SAT */ 225 226 /* Print summary of what was done */ 227 228 if ^project_sw then /* if not doing just one project */ 229 call ioa_ 230 ("^a: ^d SAT entries, ^d active projects, ^d PDTs, ^d PDT entries, ^d active users, ^d with bad counters", 231 me, sat.current_size, active_projects, checked_projects, pdt_entries, active_users, error_count); 232 233 else if active_projects = 0 then /* if we didn't find the specified project */ 234 call com_err_ (0, me, "Project ""^a"" ^[inactive^;not in SAT^].", project_name, project_found); 235 236 else call ioa_ ("^a: ^a project: ^d PDT entries, ^d active users, ^d with bad counters.", 237 me, project_name, pdt_entries, active_users, error_count); 238 239 if user_sw & ^user_found then /* if specified user wasn't found */ 240 call com_err_ (0, me, "User ""^a"" not found in ^[any^s^;^a^] project.", 241 user_name, (^project_sw), project_name); 242 243 if now_in_error_count > 0 then 244 call ioa_ ("^a: ^d projects had sum of now_in's > project.n_users", me, now_in_error_count); 245 246 247 /* Clean up and return */ 248 249 call hcs_$terminate_noname (satp, code); 250 if code ^= 0 then 251 call com_err_ (code, me, "^a>sat", sat_dir); 252 253 nonlocal_return_label: 254 return; 255 256 /* Internal Procedures */ 257 258 check_negative: proc (num, name) returns (fixed bin); 259 260 dcl num fixed bin; 261 dcl name char (*); 262 dcl retval fixed bin; 263 264 reset_negative = ""b; 265 retval = num; 266 267 if retval < 0 then do; /* negative value is always an error */ 268 call ioa_ ("^a: ^[project^x^s^;^a.^]^a ^a is negative (^d)", me, (pers = ""), pers, proj, name, num); 269 if reset (retval, name) then do; 270 retval = 0; 271 reset_negative = "1"b; /* tell caller to reset the real variable */ 272 end; /* we can't, because num is passed by value */ 273 end; /* end it is negative */ 274 275 return (retval); 276 277 end check_negative; 278 279 check_project: proc; 280 281 /* declarations */ 282 283 dcl zero_now_in bit (1) aligned; 284 dcl sigma_now_in fixed bin; 285 dcl (nusers, nowin, nfg, nbg, nint, ndisc) fixed bin; 286 dcl user_on_project bit (1) aligned init (""b); 287 288 /* initialize */ 289 290 sigma_now_in = 0; 291 nusers = check_negative ((project.n_users), "n_users"); 292 if reset_negative then 293 project.n_users = nusers; 294 if pnz_sw then /* if user wants to see all nonzero values */ 295 if nusers ^= 0 then 296 call ioa_ ("^a: project ^a n_users = ^d", me, proj, nusers); 297 if nusers = 0 | user_sw then /* if no users on project logged in, or just checking one user */ 298 zero_now_in = "1"b; /* than it's ok to zero the users' now_in counters */ 299 else zero_now_in = ""b; /* otherwise, we dare not zero the now_in counters */ 300 301 /* loop thru users */ 302 303 do pdtx = 1 to pdt.current_size 304 while (^user_on_project); /* exit loop if we hit specified user's pdt entry */ 305 pdtep = addr (pdt.user (pdtx)); 306 pers = rtrim (user.person_id); 307 pdt_entries = pdt_entries + 1; 308 309 if user_sw then /* if a user name was specified */ 310 if pers = user_name then /* and this PDT entry belongs to that user */ 311 user_on_project = "1"b; /* remember to exit the loop */ 312 313 if user.state = 1 /* if user is active */ 314 & (user_on_project | ^user_sw) then do; /* and we want to check him */ 315 active_users = active_users + 1; 316 nowin = check_negative ((user.now_in), "now_in"); 317 if reset_negative then 318 user.now_in = nowin; 319 320 sigma_now_in = sigma_now_in + nowin; 321 322 if now_in > 0 then /* if user.now_in is > 0 */ 323 if zero_now_in then /* and it's ok to reset it */ 324 if reset (nowin, "now_in") then /* and user said -reset or -query and "yes" */ 325 nowin, user.now_in = 0; /* reset it */ 326 327 nfg = check_negative ((user.n_foreground), "n_foreground"); 328 if reset_negative then 329 user.n_foreground = nfg; 330 nbg = check_negative ((user.n_background), "n_background"); 331 if reset_negative then 332 user.n_background = nbg; 333 334 if nfg + nbg ^= nowin then do; 335 call ioa_ ("^a: ^a.^a n_foreground + n_background (^d+^d) ^= now_in (^d)", 336 me, pers, proj, nfg, nbg, nowin); 337 338 if nowin = 0 then do; /* if nowin is zero, it's ok to zero nfg and nbg */ 339 if reset (nfg, "n_foreground") then 340 nfg, user.n_foreground = 0; 341 if reset (nbg, "n_background") then 342 nbg, user.n_background = 0; 343 end; 344 end; /* end nfg+nbg ^= nowin */ 345 346 nint = check_negative ((user.n_interactive), "n_interactive"); 347 if reset_negative then 348 ndisc, user.n_interactive = 0; 349 ndisc = check_negative ((user.n_disconnected), "n_disconnected"); 350 351 if nint > nfg then do; /* n_interactive shouldn't be > n_foreground */ 352 call ioa_ ("^a: ^a.^a n_interactive (^d) > n_foreground (^d)", 353 me, pers, proj, nint, nfg); 354 if reset (nint, "n_interactive") then 355 nint, user.n_interactive = nfg; 356 end; 357 358 if ndisc > nint then do; /* n_disconnected shouldn't be > n_interactive */ 359 call ioa_ ("^a: ^a.^a n_disconnected (^d) > n_interactive (^d)", 360 me, pers, proj, ndisc, nint); 361 end; 362 363 if pnz_sw then /* if user wants to see all nonzero values */ 364 if (nowin ^= 0 | nfg ^= 0 | nbg ^= 0 | nint ^= 0 | ndisc ^= 0) then 365 call ioa_ ("^a: ^a.^a nowin=^d nfg=^d nbg=^d nint=^d ndisc=^d", 366 me, pers, proj, nowin, nfg, nbg, nint, ndisc); 367 368 end; /* end user is active */ 369 370 else if user_on_project then 371 call ioa_ ("^a: user ^a deleted from project ^a", me, pers, proj); 372 373 end; /* end loop thru pdt */ 374 375 if sigma_now_in > project.n_users then do; /* if users' now_in counters add up to more than 376* project's counter of logged in users */ 377 now_in_error_count = now_in_error_count + 1; /* count these occurrences for the summary */ 378 call ioa_ ("^a: ^a project: sum of now_in's (^d) > project.n_users (^d)", 379 me, proj, sigma_now_in, project.n_users); 380 end; 381 382 if user_on_project then user_found = "1"b; /* remember that specified user was on at least one project */ 383 384 return; 385 386 end check_project; 387 388 get_next_arg: proc; 389 390 argno = argno + 1; 391 392 if argno > nargs then do; 393 call com_err_ (error_table_$noarg, me, "after ^a", arg); 394 goto nonlocal_return_label; 395 end; 396 397 get_arg: entry; 398 399 call cu_$arg_ptr (argno, argp, argl, code); 400 if code ^= 0 then do; 401 call com_err_ (code, me); 402 goto nonlocal_return_label; 403 end; 404 405 return; 406 407 end get_next_arg; 408 409 reset: proc (num, name) returns (bit (1) aligned); 410 411 dcl num fixed bin; 412 dcl name char (*); 413 414 if reset_sw then return ("1"b); 415 if query_sw then do; 416 417 /* TO BE WRITTEN */ 418 419 return (""b); 420 end; 421 422 return (""b); 423 424 end reset; 425 426 end pdt_counter_check; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0940.2 pdt_counter_check.pl1 >special_ldd>install>MR12.2-1047>pdt_counter_check.pl1 108 1 09/13/84 0921.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 1-29 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 110 3 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 112 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 114 6 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 6-112 7 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. absolute_pathname_ 000010 constant entry external dcl 87 ref 158 166 active_projects 000104 automatic fixed bin(17,0) initial dcl 56 set ref 56* 211* 211 228* 233 active_users 000107 automatic fixed bin(17,0) initial dcl 56 set ref 56* 228* 236* 315* 315 addr builtin function dcl 82 ref 202 305 answer_iocbp 6 000326 automatic pointer initial level 2 dcl 3-7 set ref 3-7* arg based char packed unaligned dcl 78 set ref 125 126* 130 130 132 134 136 136 136 138 141* 144 147 150* 153 156 158 160* 164 166* 170* 393* argl 000101 automatic fixed bin(17,0) dcl 55 set ref 125 126 126 130 130 132 134 136 136 136 138 140 141 141 144 147 149 150 150 153 156 158 160 160 164 166 166 170 170 393 393 399* argno 000102 automatic fixed bin(17,0) dcl 55 set ref 122* 390* 390 392 399* argp 000306 automatic pointer initial dcl 74 set ref 74* 125 126 130 130 132 134 136 136 136 138 141 144 147 150 153 156 158 160 164 166 170 393 399* check_sw 000116 automatic bit(1) initial dcl 61 set ref 61* 130* 177 177 checked_projects 000105 automatic fixed bin(17,0) initial dcl 56 set ref 56* 217* 217 228* cleanup 000320 stack reference condition dcl 83 ref 185 code 000100 automatic fixed bin(35,0) dcl 54 set ref 158* 159 160* 166* 167 192* 194* 213* 214* 219* 220 220* 249* 250 250* 399* 400 401* com_err_ 000012 constant entry external dcl 88 ref 126 141 150 160 170 179 194 214 220 233 239 250 393 401 cp_escape_control 1(02) 000326 automatic bit(2) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* cu_$arg_count 000014 constant entry external dcl 90 ref 120 cu_$arg_ptr 000016 constant entry external dcl 91 ref 399 current_size 36 based fixed bin(17,0) level 2 in structure "sat" dcl 4-32 in procedure "pdt_counter_check" set ref 200 228* current_size 36 based fixed bin(17,0) level 2 in structure "pdt" dcl 1-27 in procedure "pdt_counter_check" ref 303 ename 000125 automatic char(32) packed unaligned dcl 65 set ref 212* 213* 214* 220* error_count 000110 automatic fixed bin(17,0) initial dcl 56 set ref 56* 228* 236* error_table_$badopt 000026 external static fixed bin(35,0) dcl 98 set ref 170* error_table_$noarg 000030 external static fixed bin(35,0) dcl 99 set ref 393* explanation_len 14 000326 automatic fixed bin(21,0) initial level 2 dcl 3-7 set ref 3-7* explanation_ptr 12 000326 automatic pointer initial level 2 dcl 3-7 set ref 3-7* hcs_$initiate 000020 constant entry external dcl 92 ref 192 213 hcs_$terminate_noname 000022 constant entry external dcl 93 ref 186 188 219 249 ioa_ 000024 constant entry external dcl 94 ref 228 236 243 268 294 335 352 359 363 370 378 literal_sw 1(05) 000326 automatic bit(1) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* me 000000 constant char(17) initial packed unaligned dcl 103 set ref 126* 141* 150* 160* 170* 179* 194* 214* 220* 228* 233* 236* 239* 243* 250* 268* 294* 335* 352* 359* 363* 370* 378* 393* 401* n_background 361(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-58 set ref 330 331* 341* n_disconnected 362(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-58 ref 349 n_foreground 361 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-58 set ref 327 328* 339* n_interactive 362 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-58 set ref 346 347* 354* n_users 27 based fixed bin(17,0) level 2 dcl 4-53 set ref 291 292* 375 378* name parameter char packed unaligned dcl 412 in procedure "reset" ref 409 name parameter char packed unaligned dcl 261 in procedure "check_negative" set ref 258 268* 269* nargs 000103 automatic fixed bin(17,0) dcl 55 set ref 120* 122 392 nbg 000371 automatic fixed bin(17,0) dcl 285 set ref 330* 331 334 335* 341* 341* 363 363* ndisc 000373 automatic fixed bin(17,0) dcl 285 set ref 347* 349* 358 359* 363 363* nfg 000370 automatic fixed bin(17,0) dcl 285 set ref 327* 328 334 335* 339* 339* 351 352* 354 363 363* nint 000372 automatic fixed bin(17,0) dcl 285 set ref 346* 351 352* 354* 354* 358 359* 363 363* now_in 10 based fixed bin(17,0) level 2 dcl 1-58 set ref 316 317* 322 322* now_in_error_count 000111 automatic fixed bin(17,0) initial dcl 56 set ref 56* 243 243* 377* 377 nowin 000367 automatic fixed bin(17,0) dcl 285 set ref 316* 317 320 322* 322* 334 335* 338 363 363* null builtin function dcl 82 ref 74 74 74 74 74 193 214 3-7 3-7 3-7 186 188 num parameter fixed bin(17,0) dcl 411 in procedure "reset" ref 409 num parameter fixed bin(17,0) dcl 260 in procedure "check_negative" set ref 258 265 268* nusers 000366 automatic fixed bin(17,0) dcl 285 set ref 291* 292 294 294* 297 padding 1(07) 000326 automatic bit(29) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* pdt based structure level 1 dcl 1-27 pdt_dir 000135 automatic char(168) initial packed unaligned dcl 66 set ref 66* 166* 213* 214* 220* pdt_entries 000106 automatic fixed bin(17,0) initial dcl 56 set ref 56* 228* 236* 307* 307 pdtep 000312 automatic pointer initial dcl 74 set ref 74* 305* 306 313 316 317 322 322 327 328 330 331 339 341 346 347 349 354 pdtp 000310 automatic pointer initial dcl 74 set ref 74* 188 188* 213* 214 219* 303 305 pdtx 000112 automatic fixed bin(17,0) dcl 57 set ref 303* 305* pers 000272 automatic varying char(22) initial dcl 70 set ref 70* 268 268* 306* 309 335* 352* 359* 363* 370* person_id 2 based char(24) level 2 dcl 1-58 ref 306 pnz_sw 000123 automatic bit(1) initial dcl 61 set ref 61* 136* 294 363 proj 000301 automatic varying char(9) initial dcl 71 set ref 71* 204* 205 212 268* 294* 335* 352* 359* 363* 370* 378* project 722 based structure array level 2 in structure "sat" dcl 4-32 in procedure "pdt_counter_check" set ref 202 project based structure level 1 dcl 4-53 in procedure "pdt_counter_check" project_found 000114 automatic bit(1) initial dcl 60 set ref 60* 200 205* 209 233* project_id 1 based char(12) level 2 packed packed unaligned dcl 4-53 ref 204 project_name 000261 automatic char(9) initial packed unaligned dcl 68 set ref 68* 153* 205 233* 236* 239* project_sw 000122 automatic bit(1) initial dcl 61 set ref 61* 154* 205 209 228 239 prompt_after_explanation 1(06) 000326 automatic bit(1) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* query_code 3 000326 automatic fixed bin(35,0) initial level 2 dcl 3-7 set ref 3-7* query_info 000326 automatic structure level 1 dcl 3-7 query_sw 000117 automatic bit(1) initial dcl 61 set ref 61* 132* 177 177 415 question_iocbp 4 000326 automatic pointer initial level 2 dcl 3-7 set ref 3-7* repeat_time 10 000326 automatic fixed bin(71,0) initial level 2 dcl 3-7 set ref 3-7* reset_negative 000124 automatic bit(1) dcl 62 set ref 264* 271* 292 317 328 331 347 reset_sw 000120 automatic bit(1) initial dcl 61 set ref 61* 134* 177 414 retval 000354 automatic fixed bin(17,0) dcl 262 set ref 265* 267 269* 270* 275 rtrim builtin function dcl 82 ref 204 306 sat based structure level 1 dcl 4-32 sat_dir 000207 automatic char(168) initial packed unaligned dcl 67 set ref 67* 158* 192* 194* 250* satep 000316 automatic pointer initial dcl 74 set ref 74* 202* 204 209 291 292 375 378 satp 000314 automatic pointer initial dcl 74 set ref 74* 186 186* 192* 193 200 202 228 249* satx 000113 automatic fixed bin(17,0) dcl 57 set ref 200* 202* sigma_now_in 000365 automatic fixed bin(17,0) dcl 284 set ref 290* 320* 320 375 378* state based fixed bin(17,0) level 2 in structure "project" dcl 4-53 in procedure "pdt_counter_check" ref 209 state based fixed bin(17,0) level 2 in structure "user" dcl 1-58 in procedure "pdt_counter_check" ref 313 status_code 2 000326 automatic fixed bin(35,0) initial level 2 dcl 3-7 set ref 3-7* substr builtin function dcl 82 ref 125 suppress_name_sw 1(01) 000326 automatic bit(1) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* suppress_spacing 1(04) 000326 automatic bit(1) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* switches 1 000326 automatic structure level 2 dcl 3-7 user based structure level 1 dcl 1-58 in procedure "pdt_counter_check" user 400 based structure array level 2 in structure "pdt" dcl 1-27 in procedure "pdt_counter_check" set ref 305 user_attributes based structure level 1 dcl 6-21 user_found 000115 automatic bit(1) initial dcl 60 set ref 60* 239 382* user_name 000264 automatic char(22) initial packed unaligned dcl 69 set ref 69* 144* 239* 309 user_on_project 000374 automatic bit(1) initial dcl 286 set ref 286* 303 309* 313 370 382 user_sw 000121 automatic bit(1) initial dcl 61 set ref 61* 145* 239 297 309 313 yes_or_no_sw 1 000326 automatic bit(1) initial level 3 packed packed unaligned dcl 3-7 set ref 3-7* zero_now_in 000364 automatic bit(1) dcl 283 set ref 297* 299* 322 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 PDT_entry_lth internal static fixed bin(17,0) initial dcl 1-19 PDT_header_lth internal static fixed bin(17,0) initial dcl 1-19 PDT_person_id_length internal static fixed bin(17,0) initial dcl 1-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 1-19 PDT_version internal static fixed bin(17,0) initial dcl 1-19 SAT_entry_lth internal static fixed bin(17,0) initial dcl 4-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 4-24 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 command_query_ 000000 constant entry external dcl 89 query_info_version_3 internal static fixed bin(17,0) initial dcl 3-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 3-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 3-35 query_info_version_6 internal static fixed bin(17,0) initial dcl 3-36 user_abs_attributes based structure level 1 dcl 7-25 NAMES DECLARED BY EXPLICIT CONTEXT. check_negative 002244 constant entry internal dcl 258 ref 291 316 327 330 346 349 check_project 002371 constant entry internal dcl 279 ref 218 get_arg 003352 constant entry internal dcl 397 ref 124 get_next_arg 003311 constant entry internal dcl 388 ref 139 148 157 165 nonlocal_return_label 002243 constant label dcl 253 ref 394 402 path_error 001134 constant label dcl 160 ref 167 pdt_counter_check 000516 constant entry external dcl 11 reset 003411 constant entry internal dcl 409 ref 269 322 339 341 354 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4014 4046 3663 4024 Length 4420 3663 32 336 131 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pdt_counter_check 543 external procedure is an external procedure. on unit on line 185 72 on unit check_negative internal procedure shares stack frame of external procedure pdt_counter_check. check_project internal procedure shares stack frame of external procedure pdt_counter_check. get_next_arg internal procedure shares stack frame of external procedure pdt_counter_check. reset internal procedure shares stack frame of external procedure pdt_counter_check. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pdt_counter_check 000100 code pdt_counter_check 000101 argl pdt_counter_check 000102 argno pdt_counter_check 000103 nargs pdt_counter_check 000104 active_projects pdt_counter_check 000105 checked_projects pdt_counter_check 000106 pdt_entries pdt_counter_check 000107 active_users pdt_counter_check 000110 error_count pdt_counter_check 000111 now_in_error_count pdt_counter_check 000112 pdtx pdt_counter_check 000113 satx pdt_counter_check 000114 project_found pdt_counter_check 000115 user_found pdt_counter_check 000116 check_sw pdt_counter_check 000117 query_sw pdt_counter_check 000120 reset_sw pdt_counter_check 000121 user_sw pdt_counter_check 000122 project_sw pdt_counter_check 000123 pnz_sw pdt_counter_check 000124 reset_negative pdt_counter_check 000125 ename pdt_counter_check 000135 pdt_dir pdt_counter_check 000207 sat_dir pdt_counter_check 000261 project_name pdt_counter_check 000264 user_name pdt_counter_check 000272 pers pdt_counter_check 000301 proj pdt_counter_check 000306 argp pdt_counter_check 000310 pdtp pdt_counter_check 000312 pdtep pdt_counter_check 000314 satp pdt_counter_check 000316 satep pdt_counter_check 000326 query_info pdt_counter_check 000354 retval check_negative 000364 zero_now_in check_project 000365 sigma_now_in check_project 000366 nusers check_project 000367 nowin check_project 000370 nfg check_project 000371 nbg check_project 000372 nint check_project 000373 ndisc check_project 000374 user_on_project check_project THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp call_ext_out_desc call_ext_out return_mac enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ com_err_ cu_$arg_count cu_$arg_ptr hcs_$initiate hcs_$terminate_noname ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noarg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000515 56 000523 60 000531 61 000533 66 000541 67 000544 68 000547 69 000552 70 000555 71 000556 74 000557 3 7 000565 120 000614 122 000622 124 000631 125 000632 126 000637 128 000673 130 000674 132 000710 134 000717 136 000726 138 000745 139 000751 140 000752 141 000755 142 001010 144 001011 145 001015 146 001017 147 001020 148 001024 149 001025 150 001030 151 001063 153 001064 154 001070 155 001072 156 001073 157 001077 158 001100 159 001131 160 001134 161 001160 163 001161 164 001162 165 001166 166 001167 167 001213 168 001215 170 001216 171 001242 173 001243 177 001245 179 001257 180 001304 185 001305 186 001321 188 001337 190 001356 192 001357 193 001424 194 001430 195 001457 200 001460 202 001474 204 001500 205 001520 209 001531 211 001541 212 001542 213 001560 214 001624 217 001664 218 001665 219 001666 220 001677 224 001734 228 001736 233 002005 236 002045 239 002103 243 002153 249 002201 250 002212 253 002243 258 002244 264 002255 265 002256 267 002261 268 002262 269 002335 270 002362 271 002363 275 002365 279 002371 286 002372 290 002373 291 002374 292 002404 294 002411 297 002445 299 002454 303 002455 305 002467 306 002472 307 002512 309 002513 313 002524 315 002533 316 002534 317 002543 320 002550 322 002552 327 002572 328 002606 330 002614 331 002630 334 002636 335 002642 338 002704 339 002706 341 002725 346 002743 347 002756 349 002764 351 003000 352 003003 354 003042 358 003061 359 003064 363 003123 368 003207 370 003210 373 003242 375 003244 377 003250 378 003251 382 003304 384 003310 388 003311 390 003312 392 003313 393 003316 394 003350 397 003351 399 003353 400 003370 401 003372 402 003407 405 003410 409 003411 414 003422 415 003430 419 003432 422 003435 ----------------------------------------------------------- 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