COMPILATION LISTING OF SEGMENT print_pdt 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.2 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_PDT - procedure to print the contents of the binary Project Definition Table 12* which was created by the procedure CV_PMF 13* 14* Initial coding by Michael J. Spier, September 10, 1969 */ 15 16 17 /****^ HISTORY COMMENTS: 18* 1) change(86-01-01,Gilcrease), approve(86-03-27,MCR7369), 19* audit(86-06-20,LJAdams), install(86-06-30,MR12.0-1081): 20* To make old comments good to history_comment modified by Eleanor 21* Stone 04/13/70 at 12:54 Janice B. Phillipps -- modified 02/22/72 to allow 22* output from print_pdt to be used as input to cv_pmf. . -- modified 23* 05/25/72 to provide long and brief modes. . -- modified 06/09/72 to search 24* for "sel_name". . -- modified 04/01/73 to print new charging info on 6180 25* (virtual cpu and memory units). Modified 740823 by PG for authorizations. 26* Modified June 1975 by T. Casey, for per-user load_control group Modified 27* Nov 1975 by T. Casey for subsystem and initproc packed into same string 28* Modified May 1976 by T. Casey to print the per-user cutoff warning 29* thresholds. Modified May 1977 by John Gintell to implement -pmf, make 30* output look reasonable and cleanup program. Modified May 1978 by T. Casey 31* to print pdir_quota. Modified November 1978 by T. Casey for MR7.0 to print 32* new absentee control parameters. Modified November 1979 by T. Casey for 33* MR8.0 to print process preservation parameters. Modified Feb 1980 by M. B. 34* Armstrong to implement multiple rate structures. (UNCA) Modified May 1980 35* by R. McDonald to include page charges. (UNCA) Modified June 1981 by E. 36* N. Kittlitz for UNCA changes. Modified December 1981 by E. N. Kittlitz for 37* user_warn controls. Modified September 1982 by E. N. Kittlitz for 38* default_ring. Modified 1984-07-05 BIM for authorization range. 39* 2) change(86-02-26,Gilcrease), approve(86-03-27,MCR7369), 40* audit(86-06-20,LJAdams), install(86-06-30,MR12.0-1081): 41* Put weekly displays in for SCP 6250. 42* END HISTORY COMMENTS */ 43 44 45 /* format: style4 */ 46 print_pdt: procedure; 47 48 49 dcl bigfloat float bin internal static init (1e37); 50 dcl NEVER fixed bin (71) int static init /* This date is 12/31/99 2359. */ 51 (1011000110010110011001001110100110111010100100000000b); /* .. if Multics last this long we will have to fix */ 52 dcl MILLION fixed bin (35) internal static init (1000000); 53 dcl three_asterisks char (3) int static init ("***"); 54 55 dcl error_table_$badopt fixed bin ext; 56 57 58 /* DECLARATION OF AUTOMATIC STORAGE VARIABLES */ 59 60 dcl ctr fixed bin init (0); 61 dcl access_ceiling bit (72) aligned, 62 authorization_string char (500); 63 dcl rs_name char (32); 64 dcl max_rs_number fixed bin; 65 dcl temp float bin; 66 dcl an fixed bin; 67 dcl (pdt_dir, pdt_path) char (168) aligned; 68 dcl datestr char (16) aligned; 69 dcl datstng char (24) aligned; 70 dcl datstr char (8) aligned; 71 dcl sel_name char (32) aligned init (""); 72 dcl pdt_name char (32) aligned; 73 dcl (i, ii, iii, slng) fixed bin; 74 dcl code fixed bin (35); 75 dcl no_header bit (1) init (""b); 76 dcl brief bit (1) init (""b); 77 dcl pmf bit (1) init (""b); 78 dcl long bit (1) init (""b); 79 dcl non_zero_limit bit (1); 80 dcl (argp, pdtp, pdtep) ptr; 81 dcl attr char (512) varying; 82 dcl limit_string char (10) varying; 83 dcl char32 char (32); 84 dcl default_home_dir char (64); 85 dcl len fixed bin (17); 86 dcl strng10 char (64) aligned; 87 88 89 /* DECLARATION OF BASED STRUCTURES */ 90 91 dcl arg char (slng) unaligned based (argp); 92 93 94 /* DECLARATION OF BUILTIN FUNCTIONS */ 95 96 dcl (addr, clock, divide, float, length, mod, max, null, substr, string, rtrim) builtin; 97 98 /* DECLARATION OF EXTERNAL ENTRIES */ 99 100 dcl expand_pathname_ entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (35)); 101 dcl system_info_$access_ceiling entry (bit (72) aligned); 102 dcl system_info_$max_rs_number entry (fixed bin); 103 dcl system_info_$rs_name entry (fixed bin, char (*), fixed bin (35)); 104 dcl convert_access_class_$to_string_range_short entry ((2) bit (72) aligned, char (*), fixed bin (35)); 105 dcl format_attributes_ entry (ptr, char (*) var); 106 dcl date_time_ entry (fixed bin (71), char (*) aligned); 107 dcl com_err_ entry options (variable); 108 dcl ioa_ entry options (variable); 109 dcl ioa_$rsnnl entry options (variable); 110 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 111 dcl cu_$arg_count entry returns (fixed bin); 112 dcl hcs_$initiate entry (char (*) aligned, char (*) aligned, char (*) aligned, 113 fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 114 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 115 dcl ttt_info_$decode_type entry (fixed bin, char (*), fixed bin (35)); 116 1 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 1 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 1 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 1 8* attribute switches. 1 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 1 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 1 12* be deleted. 1 13* B) Add constants identifying attributes that can be changed by user at 1 14* login, etc. 1 15* END HISTORY COMMENTS */ 1 16 1 17 1 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 1 19 1 20 /* format: style4 */ 1 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 1 22 (2 administrator bit (1), /* 1 system administrator privileges */ 1 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 1 24 2 nobump bit (1), /* 2 user cannot be bumped */ 1 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 1 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 1 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 1 28* . of same project (distinct from "nobump") */ 1 29 2 nolist bit (1), /* 7 don't list user on "who" */ 1 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 1 31 2 multip bit (1), /* 9 user may have several processes */ 1 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 1 33 2 brief bit (1), /* 11 no login or logout message */ 1 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 1 35 2 vhomedir bit (1), /* 13 user may change homedir */ 1 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 1 37 2 sb_ok bit (1), /* 15 user may be standby */ 1 38 2 pm_ok bit (1), /* 16 user may be primary */ 1 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 1 40 2 daemon bit (1), /* 18 user may login as daemon */ 1 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 1 42 2 no_warning bit (1), /* 20 no warning message */ 1 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 1 44* . in PDT: this user has an individual load control group */ 1 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 1 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 1 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 1 48 2 pad bit (12)) unaligned; 1 49 1 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 1 51 ("none", /* 0 */ 1 52 "administrator", /* 1 */ 1 53 "primary_line", /* 2 */ 1 54 "nobump", /* 3 */ 1 55 "guaranteed_login", /* 4 */ 1 56 "anonymous", /* 5 */ 1 57 "nopreempt", /* 6 */ 1 58 "nolist", /* 7 */ 1 59 "dialok", /* 8 */ 1 60 "multip", /* 9 */ 1 61 "bumping", /* 10 */ 1 62 "brief", /* 11 */ 1 63 "vinitproc", /* 12 */ 1 64 "vhomedir", /* 13 */ 1 65 "nostartup", /* 14 */ 1 66 "no_secondary", /* 15 */ 1 67 "no_prime", /* 16 */ 1 68 "no_eo", /* 17 */ 1 69 "daemon", /* 18 */ 1 70 "", /* 19 vdim OBSOLETE */ 1 71 "no_warning", /* 20 */ 1 72 "igroup", /* 21 */ 1 73 "save_pdir", /* 22 */ 1 74 "disconnect_ok", /* 23 */ 1 75 "save_on_disconnect"); /* 24 */ 1 76 1 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 1 78 ("null", /* 0 */ 1 79 "admin", /* 1 */ 1 80 "", "", /* 2 - 3 */ 1 81 "guar", /* 4 */ 1 82 "anon", /* 5 */ 1 83 "", "", /* 6 - 7 */ 1 84 "dial", /* 8 */ 1 85 "multi_login", /* 9 */ 1 86 "preempting", /* 10 */ 1 87 "", /* 11 */ 1 88 "v_process_overseer", /* 12 */ 1 89 "v_home_dir", /* 13 */ 1 90 "no_start_up", /* 14 */ 1 91 "no_sec", /* 15 */ 1 92 "no_primary", /* 16 */ 1 93 "no_edit_only", /* 17 */ 1 94 "op_login", /* 18 */ 1 95 "", /* 19 */ 1 96 "nowarn", /* 20 */ 1 97 "", "", "", /* 21 - 23 */ 1 98 "save"); /* 24 */ 1 99 1 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 1 101 options(constant) init("000000000010000000010000000000000000"b); 1 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 1 103 1 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 1 105 options(constant) init("000000000010000000010000000000000000"b); 1 106 /* PDT value for (brief, no_warning) is default */ 1 107 1 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 1 109 options(constant) init("000100000110010000010000000000000000"b); 1 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 1 111 2 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* This include file describes the attributes of an absentee job. It is */ 2 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 2 7 /* and PIT.incl.pl1. */ 2 8 /* */ 2 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 10 2 11 /****^ HISTORY COMMENTS: 2 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 2 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 14* Separated abs_attributes from the request structure 2 15* (abs_message_format.incl.pl1) so that the identical structure could be 2 16* used in the ute structure (user_table_entry.incl.pl1). 2 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 2 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 19* Added ABS_ATTRIBUTE_NAMES array. 2 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 2 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 2 22* Added the no_start_up flag. SCP6367 2 23* END HISTORY COMMENTS */ 2 24 2 25 dcl 1 user_abs_attributes aligned based, 2 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 2 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 2 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 2 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 2 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 2 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 2 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 2 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 2 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 2 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 2 36 2 attributes_pad bit (26) unaligned; 2 37 2 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 2 39 "restartable", 2 40 "user_deferred_until_time", 2 41 "proxy", 2 42 "set_bit_cnt", 2 43 "time_in_gmt", 2 44 "user_deferred_indefinitely", 2 45 "secondary_ok", 2 46 "truncate_absout", 2 47 "restarted", 2 48 "no_start_up"); 2 49 2 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 2 51 1 112 1 113 1 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 117 3 1 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 3 2 /* Requires user_attributes.incl.pl1 */ 3 3 3 4 /* Modified 740723 by PG to add AIM info */ 3 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 3 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 3 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 3 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 3 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 3 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 3 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 3 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 3 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 3 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 3 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 3 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 3 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 3 18 3 19 dcl (PDT_version init (4), /* version of this declaration */ 3 20 PDT_header_lth init (256), /* length in words of PDT head */ 3 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 3 22 3 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 3 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 3 25 ) fixed bin internal static options (constant); 3 26 3 27 dcl 1 pdt based (pdtp) aligned, 3 28 4 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 4 2 4 3 /* the "author" items must always be the first ones in the table. The 4 4* module which moves the converted table to the System Control process 4 5* fills in these data items and assumes them to be at the head of the segment 4 6* regardless of the specific table's actual declaration. The variables 4 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 4 8* respectively. For tables installed in multiple processes, these 4 9* are to be used to lock out multiple installations. */ 4 10 4 11 /* Lock should be used as a modification lock. Since, in general, 4 12* entries may not be moved in system tables, even by installations, 4 13* it is sufficient for only installers and programs that change threads 4 14* to set or respect the lock. Simply updating data in an entry 4 15* requires no such protection. 4 16* 4 17* Last_install_time is used by readers of system tables to detect 4 18* installations or other serious modifications. By checking it before 4 19* and after copying a block of data, they can be protected against 4 20* modifications. 4 21* 4 22* Modules that set the lock should save proc_group_id, and then 4 23* put their group id there for the time they hold the lock. 4 24* if they do not actually install the, they should restore the group id. 4 25**/ 4 26 4 27 2 author aligned, /* validation data about table's author */ 4 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 4 29 3 lock bit (36), /* installation lock */ 4 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 4 31 3 update_authorization bit (1) unal, /* update only authorizations */ 4 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 4 33 3 pad bit (33) unaligned, 4 34 3 last_install_time fixed bin (71), 4 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 4 36 3 w_dir char (64), /* author's working directory */ 4 37 4 38 /* END INCLUDE FILE author.incl.pl1 */ 3 29 3 30 2 max_size fixed bin, /* max number of entries table can grow */ 3 31 2 current_size fixed bin, /* current size of table (in entries) */ 3 32 2 version fixed bin, /* table version */ 3 33 2 freep fixed bin, /* relptr to begin of free chain */ 3 34 2 n_users fixed bin, /* number of entries actually used */ 3 35 2 project_name char (28), /* name of project */ 3 36 2 project_dir char (64), /* treename of project's directory */ 3 37 2 projfile_version fixed bin, 3 38 2 projentry bit (66*36), 3 39 2 pad3 (5) bit (36) aligned, 3 40 2 reqfile_version fixed bin, 3 41 2 reqentry bit (40*36), 3 42 2 pad4 (9) fixed bin, 3 43 2 sat_version fixed bin, 3 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 3 45 2 pad5 (4) bit (36) aligned, 3 46 2 date_reqfile_copied fixed bin (71), 3 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 3 48 2 pad2l bit (27) unaligned, 3 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 3 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 3 51 2 user (1019) aligned, /* the project definition table entries */ 3 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 3 53 3 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 3 55 3 56 3 57 3 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 3 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 3 60 2 lock bit (36), /* update lock */ 3 61 2 person_id char (24) aligned, /* login name of user */ 3 62 2 now_in fixed bin, /* count of users logged in on this entry */ 3 63 2 password char (8) aligned, /* password for anonymous user */ 3 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 3 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 3 66 2 home_dir char (64) aligned, /* user's default working directory */ 3 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 3 68 2 high_ring fixed bin, /* highest ring user may use */ 3 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 3 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 3 71 2 outer_module char (32), /* outer module used if user is interactive */ 3 72 2 lot_size fixed bin, /* size of linkage offset table */ 3 73 2 kst_size fixed bin, /* size of known segment table */ 3 74 2 cls_size fixed bin, /* size of combined linkage */ 3 75 2 uflags, /* various flags */ 3 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 3 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 3 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 3 79 3 flagpad bit (33) unal, 3 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 3 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 3 82 2 dollar_limit float bin, 3 83 2 dollar_charge float bin, /* total dollars spent this month */ 3 84 2 shift_limit (0: 7) float bin, 3 85 2 daton fixed bin (71), /* date user added to system */ 3 86 2 datof fixed bin (71), /* date user deleted */ 3 87 2 last_login_time fixed bin (71), /* time of last login */ 3 88 2 last_login_unit char (4), /* terminal id last used */ 3 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 3 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 3 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 3 92 2 last_update fixed bin (71), /* time of last transaction */ 3 93 2 logins fixed bin, /* number of logins */ 3 94 2 crashes fixed bin, /* sessions abnormally terminated */ 3 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 3 96 3 charge float bin, /* total dollar charge this shift */ 3 97 3 xxx fixed bin, 3 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 3 99 3 core fixed bin (71), /* core demand in page-microseconds */ 3 100 3 connect fixed bin (71), /* total console time in microseconds */ 3 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 3 102 2 absentee (4), /* absentee use, queues 1-4 */ 3 103 3 charge float bin, /* dollar charge this queue */ 3 104 3 jobs fixed bin, /* number of jobs submitted */ 3 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 3 106 3 memory fixed bin (71), /* total memory demand */ 3 107 2 iod (4), /* io daemon use, queues 1-4 */ 3 108 3 charge float bin, /* dollar charge this queue */ 3 109 3 pieces fixed bin, /* pieces of output requested */ 3 110 3 pad fixed bin (35), 3 111 3 pages fixed bin (35), /* number of pages output */ 3 112 3 lines fixed bin (71), /* total record count of output */ 3 113 2 devices (16) float bin, /* device charges */ 3 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 3 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 3 116 2 absolute_spent float bin, /* Spending against this */ 3 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 3 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 3 119 2 pad_was_authorization bit (72) aligned, 3 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 3 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 3 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 3 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 3 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 3 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 3 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 3 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 3 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 3 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 3 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 3 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 3 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 3 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 3 134 2 user_authorization (2) bit (72) aligned, /* range */ 3 135 2 pdtupad (5) fixed bin, 3 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 3 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 3 138 2 chain fixed bin; /* free chain */ 3 139 3 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 118 119 120 /* LOCATE AND INITIALIZE A PDT */ 121 122 123 call system_info_$max_rs_number (max_rs_number); 124 125 call cu_$arg_ptr (1, argp, slng, code); /* get 1st arg: name of pdt */ 126 if code ^= 0 then do; 127 call com_err_ (code, "print_pdt", ""); 128 return; 129 end; 130 131 pdt_path = arg; 132 if substr (pdt_path, max (slng - 3, 1), 4) ^= ".pdt" then do; 133 pdt_path = rtrim (pdt_path) || ".pdt"; 134 end; 135 136 if substr (pdt_path, 1, 1) = ">" | substr (pdt_path, 1, 1) = "<" then do; 137 call expand_pathname_ (pdt_path, pdt_dir, pdt_name, code); 138 if code ^= 0 then do; 139 call com_err_ (code, "print_pdt", pdt_path); 140 return; 141 end; 142 end; 143 else do; 144 pdt_name = substr (pdt_path, 1, length (pdt_name)); 145 pdt_dir = ">sc1>pdt"; 146 end; 147 148 call hcs_$initiate (pdt_dir, pdt_name, "", 0, 0, pdtp, code); 149 if pdtp = null then do; 150 call com_err_ (code, "print_pdt", "^a>^a", pdt_dir, pdt_name); 151 return; 152 end; 153 154 call system_info_$access_ceiling (access_ceiling); 155 156 do an = 2 to cu_$arg_count (); 157 call cu_$arg_ptr (an, argp, slng, code); /* get next arg: a name in a pdt or a control arg */ 158 if substr (arg, 1, 1) = "-" then do; /* control option? */ 159 if arg = "-brief" | arg = "-bf" then no_header, brief = "1"b; 160 else if arg = "-long" | arg = "-lg" then long = "1"b; 161 else if arg = "-pmf" then pmf, brief = "1"b; 162 else if arg = "-no_header" | arg = "-nhe" then no_header = "1"b; 163 else do; 164 call com_err_ (error_table_$badopt, "print_pdt", """^a""", arg); 165 goto TERM; 166 end; 167 end; 168 else do; 169 sel_name = arg; 170 no_header = "1"b; 171 end; 172 173 end; 174 175 if ^no_header then do; 176 call date_time_ ((clock ()), datestr); 177 if ^pmf then call ioa_ ("^/^-^-^28a^3x^20a^/", pdt_name, datestr); 178 call ioa_ ("Projectid:^12x^a;", pdt.project_name); 179 if ^pmf then call ioa_ ("process_group_id:^5x^a;", pdt.author.proc_group_id); 180 if ^pmf then call ioa_ ("table:^16x^a;", pdt.author.table); 181 if ^pmf then call ioa_ ("w_dir:^16x^a;", pdt.author.w_dir); 182 if ^pmf then call ioa_ ("max_size:^13x^d;", pdt.max_size); 183 if ^pmf then call ioa_ ("current_size:^9x^d;", pdt.current_size); 184 if ^pmf then call ioa_ ("version:^14x^d;", pdt.version); 185 if ^pmf then call ioa_ ("n_users:^14x^d;", pdt.n_users); 186 if ^pmf then call ioa_ ("project_dir:^10x^a;", pdt.project_dir); 187 if ^pmf & max_rs_number > 0 then do; 188 call system_info_$rs_name ((pdt.rs_number), rs_name, code); /* get rate structure name */ 189 call ioa_ ("rate_structure:^7x^a (^d);", rs_name, pdt.rs_number); 190 end; 191 end; 192 193 /* P R I N T U S E R E N T R I E S */ 194 195 do i = 1 to pdt.current_size; 196 pdtep = addr (pdt.user (i)); 197 if user.state ^= 0 then do; 198 if pmf & user.state ^= 1 then go to SKIP; 199 if sel_name ^= "" then if sel_name ^= user.person_id then go to SKIP; 200 ctr = ctr + 1; 201 call ioa_ ("^/^/personid:^13x^a;", user.person_id); 202 if ^brief then call ioa_ (" state:^15x^1d;", user.state); 203 if ^brief then call ioa_ (" now_in:^14x^d;", user.now_in); 204 if ^brief & user.n_foreground ^= 0 then 205 call ioa_ (" n_foreground:^23t^d;", user.n_foreground); 206 if ^brief & user.n_background ^= 0 then 207 call ioa_ (" n_background:^23t^d;", user.n_background); 208 if ^brief & user.n_interactive ^= 0 then 209 call ioa_ (" n_interactive:^23t^d", user.n_interactive); 210 if ^brief & user.n_disconnected ^= 0 then 211 call ioa_ (" n_disconnected:^23t^d", user.n_disconnected); 212 if user.password ^= "" then call ioa_ (" password:^10x^8a;", user.password); 213 call format_attributes_ (addr (user.at), attr); 214 if brief & string (user.at) = "000000000000001110"b then ; 215 else call ioa_ (" attributes:^10x^a", attr); 216 217 if user.uflags.ip_given then /* if initproc is in new format */ 218 ii = user.ip_len; /* pick up its length */ 219 else ii = 64; /* if old format, it occupies the whole string */ 220 call ioa_$rsnnl ("^a", strng10, iii, substr (user.initial_procedure, 1, ii)); 221 if user.uflags.dont_call_init_admin then strng10 = rtrim (strng10) || ", direct"; 222 if brief & strng10 = "process_overseer_" then ; 223 else call ioa_ (" initproc:^12x^a;", strng10); 224 225 if user.uflags.ss_given then 226 call ioa_ (" subsystem:^11x^a;", substr (user.initial_procedure, user.ip_len + 1, user.ss_len)); 227 228 default_home_dir = ">user_dir_dir>" || rtrim (pdt.project_name) || ">" || user.person_id; 229 if brief & user.home_dir = default_home_dir then ; 230 else call ioa_ (" homedir:^13x^a;", user.home_dir); 231 if brief & user.bump_grace = 2880 then ; 232 else call ioa_ (" grace:^15x^d;", user.bump_grace); 233 if brief & user.low_ring = 4 & user.high_ring = 5 then ; 234 else call ioa_ (" ring:^16x^1d, ^1d, ^1d;", user.low_ring, user.high_ring, user.default_ring); 235 if user.at.igroup then 236 call ioa_ (" group:^15x^a;", user.group); 237 if user.pdir_quota ^= 0 then 238 call ioa_ (" pdir_quota:^10x^d;", user.pdir_quota); 239 if brief & user.max_foreground = 0 then ; 240 else call ioa_ (" max_foreground:^23t^d;", user.max_foreground); 241 if brief & user.max_background = 0 then ; 242 else call ioa_ (" max_background:^23t^d;", user.max_background); 243 if brief & user.abs_foreground_cpu_limit = 0 then ; 244 else call ioa_ (" abs_foreground_cpu_limit:^23t^d;", user.abs_foreground_cpu_limit); 245 if user.lot_size ^= 0 then /* skip if dft value */ 246 if user.lot_size < 0 then call ioa_ (" lot_size:^12x^d, own;", -user.lot_size); 247 else call ioa_ ("lot_size:^13x^d;", user.lot_size); 248 if user.kst_size ^= 0 then call ioa_ (" kst_size:^12x^d;", user.kst_size); 249 if user.cls_size ^= 0 then 250 if user.cls_size < 0 then call ioa_ (" cls_size:^12x^d, stack;", -user.cls_size); 251 else call ioa_ (" cls_size:^12x^d;", user.cls_size); 252 253 if user.outer_module ^= "" then call ioa_ (" outer_module:^8x^a;", user.outer_module); 254 255 if (user.user_authorization (1) | user.user_authorization (2)) ^= ""b /* we would like to compare to project min, ... */ 256 then do; 257 call convert_access_class_$to_string_range_short (user.user_authorization, authorization_string, code); 258 if code ^= 0 259 then authorization_string = "unknown"; 260 261 if authorization_string ^= "system_low" & authorization_string ^= "" 262 then call ioa_ (" authorization:^7x""^a"";", authorization_string); 263 end; 264 if user.dollar_limit = bigfloat then do; 265 if ^brief then call ioa_ (" limit:^15xopen;"); 266 end; 267 else call ioa_ (" limit:^15x^.2f;", user.dollar_limit); 268 269 attr = "shift_limit: "; 270 non_zero_limit = ""b; 271 do ii = 1 to 7, 0; 272 if user.shift_limit (ii) = bigfloat 273 then attr = attr || " open,"; 274 else do; 275 call ioa_$rsnnl (" ^.2f,", limit_string, len, user.shift_limit (ii)); 276 attr = attr || limit_string; 277 non_zero_limit = "1"b; 278 end; 279 end; 280 substr (attr, length (attr), 1) = ";"; 281 if brief & ^non_zero_limit then ; 282 else call ioa_ (" ^a", attr); 283 284 if user.absolute_limit = bigfloat & user.absolute_cutoff = NEVER then ; 285 else do; 286 if user.absolute_limit = bigfloat then attr = "cutoff: open,"; 287 else call ioa_$rsnnl ("cutoff:^14x^.2f,", attr, len, user.absolute_limit); 288 if user.absolute_cutoff = NEVER then attr = attr || " open,"; 289 else do; 290 call date_time_ (user.absolute_cutoff, datstr); 291 attr = attr || " " || datstr || ","; 292 end; 293 if user.absolute_increm = 0 then do; 294 len = length (attr); 295 substr (attr, len, 1) = ";"; 296 end; 297 else if user.absolute_increm = 1 then attr = attr || " daily;"; 298 else if user.absolute_increm = 2 then attr = attr || " monthly;"; 299 else if user.absolute_increm = 3 then attr = attr || " yearly;"; 300 else if user.absolute_increm = 4 then attr = attr || " cyear;"; 301 else if user.absolute_increm = 5 then attr = attr || " fyear;"; 302 else if user.absolute_increm = 6 then attr = attr || "weekly;"; 303 call ioa_ (" ^a", attr); 304 end; 305 306 if brief & user.user_warn_dollars = 10e0 then ; 307 else call ioa_ (" user_warn_dollars:^3x^.2f;", user.user_warn_dollars); 308 if brief & user.user_warn_pct = 10 then ; 309 else call ioa_ (" user_warn_percent:^3x^d;", user.user_warn_pct); 310 if brief & user.user_warn_days = 10 then ; 311 else call ioa_ (" user_warn_days:^6x^d;", user.user_warn_days); 312 313 if brief & user.warn_dollars = 10e0 then ; 314 else call ioa_ (" warn_dollars:^8x^.2f;", user.warn_dollars); 315 if brief & user.warn_pct = 10 then ; 316 else call ioa_ (" warn_percent:^8x^d;", user.warn_pct); 317 if brief & user.warn_days = 10 then ; 318 else call ioa_ (" warn_days:^11x^d;", user.warn_days); 319 320 321 if ^pmf then call ioa_ (" dollar_charge:^7x$^.2f;", user.dollar_charge); 322 323 if ^long then go to SKIP; 324 call ioa_ (" absolute_spent:^6x$^.2f;", user.absolute_spent); 325 call date_time_ (user.daton, datstng); 326 call ioa_ (" date_on:^13x^24a;", datstng); 327 call date_time_ (user.datof, datstng); 328 call ioa_ (" date_off:^12x^24a;", datstng); 329 call date_time_ (user.last_login_time, datstng); 330 call ioa_ (" last_login_time:^5x^24a;", datstng); 331 if user.last_login_time ^= 0 then do; 332 call ioa_ (" last_login_unit:^5x^a;", user.last_login_unit); 333 call ttt_info_$decode_type ((user.last_login_type), char32, code); 334 call ioa_ (" last_login_type:^5x^a;", char32); 335 end; 336 call date_time_ (user.time_last_bump, datstng); 337 call ioa_ (" time_last_bump:^6x^24a;", datstng); 338 call date_time_ (user.last_update, datstng); 339 call ioa_ (" last_update:^9x^24a;", datstng); 340 call ioa_ (" logins:^14x^d;", user.logins); 341 call ioa_ (" crashes:^13x^d;", user.crashes); 342 343 /* P r i n t i n t e r a c t i v e u s a g e */ 344 345 temp = 0e0; 346 do ii = 0 to 7; 347 temp = temp + user.interactive (ii).charge; 348 end; 349 if temp = 0e0 then do; 350 call ioa_ ("^/Interactive Usage:^2xnone"); 351 end; 352 else do; 353 call ioa_ ("^/Interactive Usage: $^.2f", temp); 354 call ioa_ ("^/shift^2x$charge^5xvcpu^6xmemory*K^6xconnect^4xterminal i/o"); 355 do ii = 1 to 7, 0; 356 if user.interactive (ii).charge = 0e0 then ; /* if zero charge, don't print */ 357 else call ioa_ ("^1d^4x^8.2f^1x^9a^4x^10.1f^4x^9a^6x^10.1f", 358 ii, user.interactive (ii).charge, 359 cv_time (user.interactive (ii).cpu), float (user.interactive (ii).core / 1e6), 360 cv_time (user.interactive (ii).connect), 361 float (user.interactive (ii).io_ops / 1e3)); 362 end; 363 end; 364 365 /* P r i n t a b s e n t e e u s a g e */ 366 367 temp = 0e0; 368 do ii = 1 to 4; 369 temp = temp + user.absentee (ii).charge; 370 end; 371 if temp = 0e0 then do; 372 call ioa_ ("^/Absentee Usage:^5xnone"); 373 end; 374 else do; 375 call ioa_ ("^/Absentee Usage: $^.2f", temp); 376 call ioa_ ("^/queue^2x$charge^6xjobs^10xvcpu^5xmemory*K"); 377 do ii = 1 to 4; 378 if user.absentee (ii).charge = 0e0 then ; 379 else call ioa_ ("^1d^4x^8.2f^7x^4d^5x^9a^3x^10.1f^24x", ii, user.absentee (ii).charge, 380 user.absentee (ii).jobs, cv_time (user.absentee (ii).cpu), 381 float (user.absentee (ii).memory / 1e6)); 382 end; 383 end; 384 385 /* P r i n t i o d a e m o n u s a g e */ 386 387 temp = 0e0; 388 do ii = 1 to 4; 389 temp = temp + user.iod (ii).charge; 390 end; 391 if temp = 0e0 then do; 392 call ioa_ ("^/IO Daemon Usage:^4xnone"); 393 end; 394 else do; 395 call ioa_ ("^/IO Daemon Usage: $^.2f", temp); 396 call ioa_ ("^/queue^2x$charge^3xpieces^7xpages^9xlines"); 397 do ii = 1 to 4; 398 if user.iod (ii).charge = 0e0 then ; 399 else call ioa_ ("^1d^4x^8.2f^10d^12d^14d", 400 ii, user.iod (ii).charge, user.iod (ii).pieces, 401 user.iod (ii).pages, user.iod (ii).lines); 402 end; 403 end; 404 end; 405 SKIP: end; 406 407 if pmf & ^no_header then call ioa_ ("^/^/end;"); 408 409 if sel_name ^= "" & ctr = 0 then do; 410 call com_err_ (0, "print_pdt", "^a not found in ^a.", sel_name, pdt_name); 411 end; 412 413 TERM: call hcs_$terminate_noname (pdtp, code); 414 return; 415 416 cv_time: procedure (time) returns (char (9) aligned); 417 418 /* procedure to convert from fixed bin (71) to a nice formatted string of hrs:mins:secs */ 419 420 /* automatic */ 421 422 dcl time fixed bin (71); 423 dcl hours fixed bin; 424 dcl minutes fixed bin; 425 dcl seconds fixed bin; 426 427 /* builtins */ 428 429 dcl (unspec) builtin; 430 431 /* pictures */ 432 433 dcl 1 time_string aligned, 434 2 hours picture "zz9" unaligned, 435 2 colon1 char (1) unaligned, 436 2 minutes picture "99" unaligned, 437 2 colon2 char (1) unaligned, 438 2 seconds picture "99" unaligned; 439 440 seconds = float (time, 63) / float (MILLION); 441 minutes = divide (seconds, 60, 35, 0); 442 seconds = mod (seconds, 60); /* get rid of the remainder */ 443 hours = divide (minutes, 60, 35, 0); 444 minutes = mod (minutes, 60); /* get rid of the remainder */ 445 446 time_string.colon1 = ":"; 447 time_string.colon2 = ":"; 448 449 if hours < 1000 /* don't die if junque */ 450 then time_string.hours = hours; 451 else unspec (time_string.hours) = unspec (three_asterisks); /* can't say unspec of a constant any more. progress ... */ 452 time_string.minutes = minutes; 453 time_string.seconds = seconds; 454 455 return (string (time_string)); 456 end; 457 458 end print_pdt; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0940.2 print_pdt.pl1 >special_ldd>install>MR12.2-1047>print_pdt.pl1 117 1 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 1-112 2 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 118 3 09/13/84 0921.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 3-29 4 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. MILLION 000001 constant fixed bin(35,0) initial dcl 52 ref 440 NEVER 000002 constant fixed bin(71,0) initial dcl 50 ref 284 288 abs_foreground_cpu_limit 376 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 set ref 243 244* absentee 244 based structure array level 2 dcl 3-58 absolute_cutoff 350 based fixed bin(71,0) level 2 dcl 3-58 set ref 284 288 290* absolute_increm 352 based fixed bin(17,0) level 2 dcl 3-58 ref 293 297 298 299 300 301 302 absolute_limit 346 based float bin(27) level 2 dcl 3-58 set ref 284 286 287* absolute_spent 347 based float bin(27) level 2 dcl 3-58 set ref 324* access_ceiling 000102 automatic bit(72) dcl 61 set ref 154* addr builtin function dcl 96 ref 196 213 213 an 000313 automatic fixed bin(17,0) dcl 66 set ref 156* 157* arg based char packed unaligned dcl 91 set ref 131 158 159 159 160 160 161 162 162 164* 169 argp 000506 automatic pointer dcl 80 set ref 125* 131 157* 158 159 159 160 160 161 162 162 164 169 at 13 based structure level 2 dcl 3-58 set ref 213 213 214 attr 000514 automatic varying char(512) dcl 81 set ref 213* 215* 269* 272* 272 276* 276 280 280* 282* 286* 287* 288* 288 291* 291 294 295* 297* 297 298* 298 299* 299 300* 300 301* 301 302* 302 303* author based structure level 2 dcl 3-27 authorization_string 000104 automatic char(500) packed unaligned dcl 61 set ref 257* 258* 261 261 261* bigfloat 000004 constant float bin(27) initial dcl 49 ref 264 272 284 286 brief 000502 automatic bit(1) initial packed unaligned dcl 76 set ref 76* 159* 161* 202 203 204 206 208 210 214 222 229 231 233 239 241 243 265 281 306 308 310 313 315 317 bump_grace 54 based fixed bin(17,0) level 2 dcl 3-58 set ref 231 232* char32 000721 automatic char(32) packed unaligned dcl 83 set ref 333* 334* charge 124 based float bin(27) array level 3 in structure "user" dcl 3-58 in procedure "print_pdt" set ref 347 356 357* charge 244 based float bin(27) array level 3 in structure "user" dcl 3-58 in procedure "print_pdt" set ref 369 378 379* charge 274 based float bin(27) array level 3 in structure "user" dcl 3-58 in procedure "print_pdt" set ref 389 398 399* clock builtin function dcl 96 ref 176 cls_size 71 based fixed bin(17,0) level 2 dcl 3-58 set ref 249 249 249 251* code 000500 automatic fixed bin(35,0) dcl 74 set ref 125* 126 127* 137* 138 139* 148* 150* 157* 188* 257* 258 333* 413* colon1 0(27) 001011 automatic char(1) level 2 packed packed unaligned dcl 433 set ref 446* colon2 1(18) 001011 automatic char(1) level 2 packed packed unaligned dcl 433 set ref 447* com_err_ 000030 constant entry external dcl 107 ref 127 139 150 164 410 connect 132 based fixed bin(71,0) array level 3 dcl 3-58 set ref 357* 357* convert_access_class_$to_string_range_short 000022 constant entry external dcl 104 ref 257 core 130 based fixed bin(71,0) array level 3 dcl 3-58 ref 357 357 cpu 126 based fixed bin(71,0) array level 3 in structure "user" dcl 3-58 in procedure "print_pdt" set ref 357* 357* cpu 246 based fixed bin(71,0) array level 3 in structure "user" dcl 3-58 in procedure "print_pdt" set ref 379* 379* crashes 123 based fixed bin(17,0) level 2 dcl 3-58 set ref 341* ctr 000100 automatic fixed bin(17,0) initial dcl 60 set ref 60* 200* 200 409 cu_$arg_count 000040 constant entry external dcl 111 ref 156 cu_$arg_ptr 000036 constant entry external dcl 110 ref 125 157 current_size 36 based fixed bin(17,0) level 2 dcl 3-27 set ref 183* 195 date_time_ 000026 constant entry external dcl 106 ref 176 290 325 327 329 336 338 datestr 000440 automatic char(16) dcl 68 set ref 176* 177* datof 110 based fixed bin(71,0) level 2 dcl 3-58 set ref 327* daton 106 based fixed bin(71,0) level 2 dcl 3-58 set ref 325* datstng 000444 automatic char(24) dcl 69 set ref 325* 326* 327* 328* 329* 330* 336* 337* 338* 339* datstr 000452 automatic char(8) dcl 70 set ref 290* 291 default_home_dir 000731 automatic char(64) packed unaligned dcl 84 set ref 228* 229 default_ring 56 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 set ref 234* divide builtin function dcl 96 ref 441 443 dollar_charge 75 based float bin(27) level 2 dcl 3-58 set ref 321* dollar_limit 74 based float bin(27) level 2 dcl 3-58 set ref 264 267* dont_call_init_admin 72 based bit(1) level 3 packed packed unaligned dcl 3-58 ref 221 error_table_$badopt 000010 external static fixed bin(17,0) dcl 55 set ref 164* expand_pathname_ 000012 constant entry external dcl 100 ref 137 float builtin function dcl 96 ref 357 357 357 357 379 379 440 440 format_attributes_ 000024 constant entry external dcl 105 ref 213 group 355 based char(8) level 2 dcl 3-58 set ref 235* hcs_$initiate 000042 constant entry external dcl 112 ref 148 hcs_$terminate_noname 000044 constant entry external dcl 114 ref 413 high_ring 55 based fixed bin(17,0) level 2 dcl 3-58 set ref 233 234* home_dir 34 based char(64) level 2 dcl 3-58 set ref 229 230* hours 001006 automatic fixed bin(17,0) dcl 423 in procedure "cv_time" set ref 443* 449 449 hours 001011 automatic picture(3) level 2 in structure "time_string" packed packed unaligned dcl 433 in procedure "cv_time" set ref 449* 451* i 000474 automatic fixed bin(17,0) dcl 73 set ref 195* 196* igroup 13(20) based bit(1) level 3 packed packed unaligned dcl 3-58 set ref 235 ii 000475 automatic fixed bin(17,0) dcl 73 set ref 217* 219* 220 220 271* 272 275* 346* 347* 355* 356 357* 357 357 357 357 357 357 357 357 357* 368* 369* 377* 378 379* 379 379 379 379 379 379* 388* 389* 397* 398 399* 399 399 399 399* iii 000476 automatic fixed bin(17,0) dcl 73 set ref 220* initial_procedure 14 based char(64) level 2 dcl 3-58 ref 220 220 225 225 interactive 124 based structure array level 2 dcl 3-58 io_ops 134 based fixed bin(71,0) array level 3 dcl 3-58 ref 357 357 ioa_ 000032 constant entry external dcl 108 ref 177 178 179 180 181 182 183 184 185 186 189 201 202 203 204 206 208 210 212 215 223 225 230 232 234 235 237 240 242 244 245 247 248 249 251 253 261 265 267 282 303 307 309 311 314 316 318 321 324 326 328 330 332 334 337 339 340 341 350 353 354 357 372 375 376 379 392 395 396 399 407 ioa_$rsnnl 000034 constant entry external dcl 109 ref 220 275 287 iod 274 based structure array level 2 dcl 3-58 ip_given 72(01) based bit(1) level 3 packed packed unaligned dcl 3-58 ref 217 ip_len 73 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 ref 217 225 225 jobs 245 based fixed bin(17,0) array level 3 dcl 3-58 set ref 379* kst_size 70 based fixed bin(17,0) level 2 dcl 3-58 set ref 248 248* last_login_time 112 based fixed bin(71,0) level 2 dcl 3-58 set ref 329* 331 last_login_type 115 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 ref 333 last_login_unit 114 based char(4) level 2 dcl 3-58 set ref 332* last_update 120 based fixed bin(71,0) level 2 dcl 3-58 set ref 338* len 000751 automatic fixed bin(17,0) dcl 85 set ref 275* 287* 294* 295 length builtin function dcl 96 ref 144 280 294 limit_string 000715 automatic varying char(10) dcl 82 set ref 275* 276 lines 300 based fixed bin(71,0) array level 3 dcl 3-58 set ref 399* logins 122 based fixed bin(17,0) level 2 dcl 3-58 set ref 340* long 000504 automatic bit(1) initial packed unaligned dcl 78 set ref 78* 160* 323 lot_size 67 based fixed bin(17,0) level 2 dcl 3-58 set ref 245 245 245 247* low_ring 56(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 set ref 233 234* max builtin function dcl 96 ref 132 max_background 361(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-58 set ref 241 242* max_foreground 361(18) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-58 set ref 239 240* max_rs_number 000311 automatic fixed bin(17,0) dcl 64 set ref 123* 187 max_size 35 based fixed bin(17,0) level 2 dcl 3-27 set ref 182* memory 250 based fixed bin(71,0) array level 3 dcl 3-58 ref 379 379 minutes 001007 automatic fixed bin(17,0) dcl 424 in procedure "cv_time" set ref 441* 443 444* 444 452 minutes 1 001011 automatic picture(2) level 2 in structure "time_string" packed packed unaligned dcl 433 in procedure "cv_time" set ref 452* mod builtin function dcl 96 ref 442 444 n_background 361(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-58 set ref 206 206* n_disconnected 362(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-58 set ref 210 210* n_foreground 361 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-58 set ref 204 204* n_interactive 362 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-58 set ref 208 208* n_users 41 based fixed bin(17,0) level 2 dcl 3-27 set ref 185* no_header 000501 automatic bit(1) initial packed unaligned dcl 75 set ref 75* 159* 162* 170* 175 407 non_zero_limit 000505 automatic bit(1) packed unaligned dcl 79 set ref 270* 277* 281 now_in 10 based fixed bin(17,0) level 2 dcl 3-58 set ref 203* null builtin function dcl 96 ref 149 outer_module 57 based char(32) level 2 dcl 3-58 set ref 253 253* pages 277 based fixed bin(35,0) array level 3 dcl 3-58 set ref 399* password 11 based char(8) level 2 dcl 3-58 set ref 212 212* pdir_quota 376(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 set ref 237 237* pdt based structure level 1 dcl 3-27 pdt_dir 000314 automatic char(168) dcl 67 set ref 137* 145* 148* 150* pdt_name 000464 automatic char(32) dcl 72 set ref 137* 144* 144 148* 150* 177* 410* pdt_path 000366 automatic char(168) dcl 67 set ref 131* 132 133* 133 136 136 137* 139* 144 pdtep 000512 automatic pointer dcl 80 set ref 196* 197 198 199 201 202 203 204 204 206 206 208 208 210 210 212 212 213 213 214 217 217 220 220 221 225 225 225 225 225 225 225 228 229 230 231 232 233 233 234 234 234 235 235 237 237 239 240 241 242 243 244 245 245 245 247 248 248 249 249 249 251 253 253 255 255 257 264 267 272 275 284 284 286 287 288 290 293 297 298 299 300 301 302 306 307 308 309 310 311 313 314 315 316 317 318 321 324 325 327 329 331 332 333 336 338 340 341 347 356 357 357 357 357 357 357 357 357 357 369 378 379 379 379 379 379 379 389 398 399 399 399 399 pdtp 000510 automatic pointer dcl 80 set ref 148* 149 178 179 180 181 182 183 184 185 186 188 189 195 196 228 413* person_id 2 based char(24) level 2 dcl 3-58 set ref 199 201* 228 pieces 275 based fixed bin(17,0) array level 3 dcl 3-58 set ref 399* pmf 000503 automatic bit(1) initial packed unaligned dcl 77 set ref 77* 161* 177 179 180 181 182 183 184 185 186 187 198 321 407 proc_group_id based char(32) level 3 dcl 3-27 set ref 179* project_dir 51 based char(64) level 2 dcl 3-27 set ref 186* project_name 42 based char(28) level 2 dcl 3-27 set ref 178* 228 rs_name 000301 automatic char(32) packed unaligned dcl 63 set ref 188* 189* rs_number 356 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-27 set ref 188 189* rtrim builtin function dcl 96 ref 133 221 228 seconds 001010 automatic fixed bin(17,0) dcl 425 in procedure "cv_time" set ref 440* 441 442* 442 453 seconds 1(27) 001011 automatic picture(2) level 2 in structure "time_string" packed packed unaligned dcl 433 in procedure "cv_time" set ref 453* sel_name 000454 automatic char(32) initial dcl 71 set ref 71* 169* 199 199 409 410* shift_limit 76 based float bin(27) array level 2 dcl 3-58 set ref 272 275* slng 000477 automatic fixed bin(17,0) dcl 73 set ref 125* 131 132 157* 158 159 159 160 160 161 162 162 164 164 169 ss_given 72(02) based bit(1) level 3 packed packed unaligned dcl 3-58 ref 225 ss_len 73(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 ref 225 225 state based fixed bin(17,0) level 2 dcl 3-58 set ref 197 198 202* string builtin function dcl 96 ref 214 455 strng10 000752 automatic char(64) dcl 86 set ref 220* 221* 221 222 223* substr builtin function dcl 96 set ref 132 136 136 144 158 220 220 225 225 280* 295* system_info_$access_ceiling 000014 constant entry external dcl 101 ref 154 system_info_$max_rs_number 000016 constant entry external dcl 102 ref 123 system_info_$rs_name 000020 constant entry external dcl 103 ref 188 table 14 based char(4) level 3 dcl 3-27 set ref 180* temp 000312 automatic float bin(27) dcl 65 set ref 345* 347* 347 349 353* 367* 369* 369 371 375* 387* 389* 389 391 395* three_asterisks 000000 constant char(3) initial packed unaligned dcl 53 ref 451 time parameter fixed bin(71,0) dcl 422 ref 416 440 time_last_bump 116 based fixed bin(71,0) level 2 dcl 3-58 set ref 336* time_string 001011 automatic structure level 1 dcl 433 set ref 455 ttt_info_$decode_type 000046 constant entry external dcl 115 ref 333 uflags 72 based structure level 2 dcl 3-58 unspec builtin function dcl 429 set ref 451* 451 user based structure level 1 dcl 3-58 in procedure "print_pdt" user 400 based structure array level 2 in structure "pdt" dcl 3-27 in procedure "print_pdt" set ref 196 user_attributes based structure level 1 dcl 1-21 user_authorization 365 based bit(72) array level 2 dcl 3-58 set ref 255 255 257* user_warn_days 363 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 set ref 310 311* user_warn_dollars 364 based float bin(27) level 2 dcl 3-58 set ref 306 307* user_warn_pct 363(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 set ref 308 309* version 37 based fixed bin(17,0) level 2 dcl 3-27 set ref 184* w_dir 15 based char(64) level 3 dcl 3-27 set ref 181* warn_days 357 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 set ref 317 318* warn_dollars 360 based float bin(27) level 2 dcl 3-58 set ref 313 314* warn_pct 357(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-58 set ref 315 316* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 2-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-77 PDT_entry_lth internal static fixed bin(17,0) initial dcl 3-19 PDT_header_lth internal static fixed bin(17,0) initial dcl 3-19 PDT_person_id_length internal static fixed bin(17,0) initial dcl 3-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 3-19 PDT_version internal static fixed bin(17,0) initial dcl 3-19 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 1-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 1-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 1-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-50 user_abs_attributes based structure level 1 dcl 2-25 NAMES DECLARED BY EXPLICIT CONTEXT. SKIP 006140 constant label dcl 405 ref 198 199 323 TERM 006233 constant label dcl 413 ref 165 cv_time 006245 constant entry internal dcl 416 ref 357 357 357 357 379 379 print_pdt 001034 constant entry external dcl 46 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6572 6642 6353 6602 Length 7204 6353 50 326 216 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME print_pdt 611 external procedure is an external procedure. cv_time internal procedure shares stack frame of external procedure print_pdt. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME print_pdt 000100 ctr print_pdt 000102 access_ceiling print_pdt 000104 authorization_string print_pdt 000301 rs_name print_pdt 000311 max_rs_number print_pdt 000312 temp print_pdt 000313 an print_pdt 000314 pdt_dir print_pdt 000366 pdt_path print_pdt 000440 datestr print_pdt 000444 datstng print_pdt 000452 datstr print_pdt 000454 sel_name print_pdt 000464 pdt_name print_pdt 000474 i print_pdt 000475 ii print_pdt 000476 iii print_pdt 000477 slng print_pdt 000500 code print_pdt 000501 no_header print_pdt 000502 brief print_pdt 000503 pmf print_pdt 000504 long print_pdt 000505 non_zero_limit print_pdt 000506 argp print_pdt 000510 pdtp print_pdt 000512 pdtep print_pdt 000514 attr print_pdt 000715 limit_string print_pdt 000721 char32 print_pdt 000731 default_home_dir print_pdt 000751 len print_pdt 000752 strng10 print_pdt 001006 hours cv_time 001007 minutes cv_time 001010 seconds cv_time 001011 time_string cv_time THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac fl2_to_fx1 mdfx1 shorten_stack ext_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_access_class_$to_string_range_short cu_$arg_count cu_$arg_ptr date_time_ expand_pathname_ format_attributes_ hcs_$initiate hcs_$terminate_noname ioa_ ioa_$rsnnl system_info_$access_ceiling system_info_$max_rs_number system_info_$rs_name ttt_info_$decode_type THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 46 001033 60 001041 71 001042 75 001045 76 001046 77 001047 78 001050 123 001051 125 001057 126 001076 127 001100 128 001126 131 001127 132 001134 133 001145 134 001173 136 001174 137 001203 138 001227 139 001231 140 001257 142 001260 144 001261 145 001264 148 001267 149 001332 150 001336 151 001376 154 001377 156 001406 157 001423 158 001440 159 001445 160 001462 161 001475 162 001505 164 001520 165 001557 167 001560 169 001561 170 001565 173 001567 175 001571 176 001573 177 001612 178 001642 179 001666 180 001713 181 001737 182 001763 183 002007 184 002032 185 002056 186 002102 187 002130 188 002134 189 002161 195 002206 196 002217 197 002222 198 002224 199 002230 200 002240 201 002241 202 002261 203 002306 204 002332 206 002363 208 002417 210 002450 212 002504 213 002536 214 002556 215 002565 217 002605 219 002615 220 002617 221 002654 222 002707 223 002717 225 002737 228 003001 229 003053 230 003063 231 003104 232 003113 233 003135 234 003151 235 003206 237 003233 239 003262 240 003272 241 003320 242 003327 243 003355 244 003364 245 003405 247 003437 248 003460 249 003506 251 003540 253 003560 255 003610 257 003617 258 003640 261 003645 264 003700 265 003704 266 003723 267 003724 269 003745 270 003752 271 003753 272 003763 275 004003 276 004032 277 004044 279 004046 280 004055 281 004061 282 004066 284 004105 286 004115 287 004126 288 004157 290 004176 291 004213 292 004256 293 004257 294 004262 295 004264 296 004267 297 004270 298 004305 299 004322 300 004337 301 004354 302 004371 303 004405 306 004424 307 004433 308 004454 309 004465 310 004510 311 004520 313 004544 314 004553 315 004577 316 004610 317 004636 318 004646 321 004667 323 004715 324 004717 325 004740 326 004756 327 005001 328 005017 329 005037 330 005055 331 005075 332 005100 333 005123 334 005150 336 005173 337 005211 338 005233 339 005251 340 005274 341 005316 345 005340 346 005342 347 005347 348 005355 349 005357 350 005361 351 005375 353 005376 354 005416 355 005432 356 005441 357 005450 362 005561 367 005570 368 005572 369 005577 370 005605 371 005607 372 005611 373 005630 375 005631 376 005651 377 005665 378 005673 379 005701 382 005764 387 005766 388 005770 389 005775 390 006003 391 006005 392 006007 393 006023 395 006024 396 006044 397 006060 398 006065 399 006073 402 006136 405 006140 407 006142 409 006161 410 006167 413 006233 414 006244 416 006245 440 006247 441 006260 442 006262 443 006266 444 006271 446 006274 447 006276 449 006300 451 006313 452 006315 453 006324 455 006333 ----------------------------------------------------------- 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