COMPILATION LISTING OF SEGMENT user_info_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1045.6 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* format: style2 */ 14 15 user_info_: 16 proc; 17 18 /* USER_INFO_ - procedure to return selected information from the PIT 19* 20* The information returned was put there by the procedure "cpg_" 21* when the process was created. 22* 23* The following entries exist: 24* 25* . user_info_$user_info_ (name, proj, acct) 26* . user_info_$whoami (name, proj, acct) 27* . user_info_$login_data (name, proj, acct, anon, stby, weight, time_login, login_word) 28* . user_info_$usage_data (n_processes, cputime_old_procs, time_login, time_proc_create,core_old_procs,io_old_procs) 29* . user_info_$homedir (home_directory) 30* . user_info_$responder (login_responder) 31* . user_info_$tty_data (terminal_id, terminal_type, channel_id, line_type) 32* . user_info_$terminal_data (terminal_id, terminal_type_name, channel_id, line_type, charge_type) 33* . user_info_$service_type (service_type) 34* . user_info_$process_type (process_type) 35* . user_info_$logout_data (logout_channel, logout_processid) 36* . user_info_$login_line (login_string) 37* . user_info_$absentee_queue (q) 38* . user_info_$absin (path) 39* . user_info_$absout (path) 40* . user_info_$outer_module (om) 41* . user_info_$load_ctl_info (group, sb, bumpclock, weight) 42* . user_info_$authorization_range (range) 43* . user_info_$attributes (att) 44* . user_info_$limits (mlim, clim, cdate, crf, shlim, msp, csp, shsp) 45* . user_info_$rs_name (rs_name) 46* . user_info_$rs_number (rs_number) 47* . user_info_$absentee_request_id (request_id) 48* . user_info_$absout_truncation (truncate_bit) 49* . user_info_$absentee_restarted (restarted_bit) 50* . user_info_$ring_range (range) 51* 52* If an entry which takes multiple arguments is called with too few arguments, 53* only those supplied will be set. 54* 55* THVV 9/70 */ 56 57 58 /****^ HISTORY COMMENTS: 59* 1) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 60* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 61* 1st comment for hcom. 62* Modified 761229 by D. M. Wells to add $service_type and $process_type entry 63* points, to add line_type parameter to $tty_data, and to get info for 64* $tty_data from PIT rather than the user_i/o IOSIM. 65* Modified 6/20/77 by J. Stern to add $terminal_data (obsoletes $tty_data) 66* Modified April 1979 by T. Casey to return correct information in foreground absentee jobs. 67* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures. (UNCA) 68* Modified June 1981 by E. N. Kittlitz for UNCA rate structures. 69* Modified December 1981 by E. N. Kittlitz for login_arg_ptr, login_arg_count. 70* Modified 11/81 by B. Margulies for sub_err_ vs. com_err_. 71* Modified 10/82 by E. N. Kittlitz for absentee_request_id. 72* Modified 1984-07-26 BIM for user_info_$authorization_range 73* 2) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 74* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 75* Add the entries absout_truncation & absentee_restarted for -truncate absout, SCP6297. 76* 3) change(86-11-11,Gilcrease), approve(86-11-11,PBF7370), 77* audit(86-11-12,Fawcett), install(86-11-12,MR12.0-1214): 78* PBF: sub_err_ called with wrong arguments in fillpp procedure. 79* 4) change(87-11-20,Parisek), approve(88-02-11,MCR7849), 80* audit(88-03-07,Lippard), install(88-07-13,MR12.2-1047): 81* Added the ring_range entry which returns low & high ring authorizations. 82* SCP6367. 83* END HISTORY COMMENTS */ 84 85 86 dcl arg_infop pointer; 87 dcl arg_offset fixed bin; 88 dcl (pp, whoptr) pointer, 89 i fixed bin, 90 ii fixed bin, 91 hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, 92 fixed bin (35)), 93 current_validation fixed bin (3), 94 hcs_$level_set entry (fixed bin (3)), 95 hcs_$level_get entry (fixed bin (3)), 96 get_ring_ entry() returns(fixed bin(3)), 97 get_pdir_ entry returns (char (168)), 98 format_attributes_ entry (ptr, char (*) var), 99 ec fixed bin (35), 100 sub_err_ entry options (variable), 101 sysdir char (64) int static init (">system_control_dir") options (constant), 102 system_info_$device_prices 103 entry (fixed bin, ptr), 104 system_info_$rs_name entry (fixed bin, char (*), fixed bin (35)), 105 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 106 107 dcl error_table_$noarg fixed bin (35) ext static; 108 109 dcl 1 dvt (16), 110 2 device_id char (8), 111 2 device_price (0:7) float bin; 112 113 dcl ndev fixed bin; 114 115 dcl ap ptr, 116 al fixed bin, 117 bbit bit (1) based (ap), 118 bchr char (al) based (ap) unaligned, 119 bfix fixed bin (35) based (ap), 120 bf17 fixed bin based (ap), 121 bf21 fixed bin (21) based (ap), 122 bf71 fixed bin (71) based (ap), 123 bflt float bin based (ap), 124 bb36 bit (36) based (ap), 125 bptr ptr based (ap), 126 tvcs char (512) var, 127 bftary (0:7) float bin based (ap); 128 dcl (addr, before, null, max, ptr, substr) 129 builtin; 130 131 1 1 /* BEGIN INCLUDE FILE ... pit.incl.pl1 */ 1 2 1 3 /****^ ******************************************** 1 4* * * 1 5* * Copyright, (C) Honeywell Bull Inc., 1988 * 1 6* * * 1 7* ******************************************** */ 1 8 1 9 /* Requires user_attributes.incl.pl1 */ 1 10 /* Declaration of the Process Inititalization Table (PIT) */ 1 11 1 12 /****^ HISTORY COMMENTS: 1 13* 1) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 1 14* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 1 15* First comment for hcom. Modified 750430 by PG to add terminal_access_class 1 16* Modified 6/20/77 by J. Stern to add term_type_name Modified Feb 1980 by M. 1 17* B. Armstrong to implement multiple rate structures. (UNCA) Modified by R. 1 18* McDonald May 1980 to include page charges, replaces cpu in iod (UNCA) 1 19* Modified by Benson I. Margulies November 1981 do declare pit_$, pit_ptr, 1 20* and unaligned character strings. Modified by E. N. Kittlitz January 1982 1 21* for user_attributes.incl.pl1 changes Modified by E. N. Kittlitz October 1 22* 1982 for request_id. Modified by BIM 1984-09-12 for auth range. The max 1 23* copies the pds, but this is the only home of the min. 1 24* 2) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 1 25* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 1 26* Add the truncate_absout and restarted bits for the 1 27* -truncate .absout SCP 6297, version 3. 1 28* 3) change(86-12-11,GDixon), approve(87-07-16,MCR7741), 1 29* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 30* Changed structure under pit.abs_attributes to use like structure in 1 31* abs_attributes.incl.pl1. This allows the same attributes to be used 1 32* in abs_message_format.incl.pl1 and user_table_entry.incl.pl1 as well as 1 33* this include file. 1 34* 4) change(88-06-03,Parisek), approve(88-06-10,MCR7920), 1 35* audit(88-06-23,Hunter), install(87-07-05,MR12.2-1053): 1 36* Remove "pitmsg" in END comment string. pitmsg.incl.pl1 is no longer a 1 37* name of pit.incl.pl1. 1 38* 5) change(88-07-11,Parisek), approve(88-07-11,MCR7849), 1 39* audit(88-07-03,Lippard), install(88-07-13,MR12.2-1047): 1 40* Removed the ringpad element and added the min_ring & max_ring elements so 1 41* users may access their lowest and/or highest possible login ring value. 1 42* SCP6367. 1 43* END HISTORY COMMENTS */ 1 44 1 45 1 46 /* format: style4 */ 1 47 declare pit_$ bit (36) aligned external static; 1 48 declare pit_ptr pointer; 1 49 1 50 dcl 1 pit aligned based (pit_ptr), 1 51 2 version fixed bin, /* indicates which version of the pit */ 1 52 2 process_type fixed bin, /* initializer, interactive, or absentee process */ 1 53 2 login_responder char (64) unal, /* path name of login responder */ 1 54 1 55 /* All of these are going to be word aligned whether or not they are declared aligned, 1 56* and unaligning them cleans up code in many places */ 1 57 1 58 2 homedir char (64) unal, /* path name of home directory */ 1 59 2 project char (28) unal, /* name of this process' project affiliation */ 1 60 2 account char (32) unal, /* name of account to which this process is charged */ 1 61 2 n_processes fixed bin, /* number of previous processes for this session */ 1 62 2 login_time fixed bin (71), /* clock time at login */ 1 63 2 proc_creation_time fixed bin (71), /* clock time at creation of this process */ 1 64 2 old_proc_cpu fixed bin (71), /* cpu time used by previous processes in this session */ 1 65 2 user_weight fixed bin, /* weight of this process */ 1 66 2 anonymous fixed bin, /* 1 if anonymous user */ 1 67 2 login_name char (28) unal, /* name of user given at login */ 1 68 2 logout_pid bit (36), /* process id of answering service */ 1 69 2 logout_channel fixed bin (71), /* channel for signalling logouts to answering service */ 1 70 2 group char (8) unal, /* party group */ 1 71 2 min_ring fixed bin, /* min ring */ 1 72 2 max_ring fixed bin, /* max ring */ 1 73 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 1 74 2 whox fixed bin, /* this process's index in whotab (or 0) */ 1 75 2 outer_module char (32) unaligned, 1 76 2 pad (2) fixed bin, 1 77 2 dont_call_init_admin bit (1) aligned, /* Call process_overseer_ directly */ 1 78 2 terminal_access_class bit (72) aligned, /* access class of user's terminal */ 1 79 2 dollar_charge float bin, /* Month-to-date expenditure */ 1 80 2 dollar_limit float bin, /* Limit stop on usage */ 1 81 2 shift_limit (0:7) float bin, /* Stops on each shift's usage */ 1 82 2 logins fixed bin, /* Number of logins this month */ 1 83 2 crashes fixed bin, /* Number of sessions crashed */ 1 84 2 interactive (0:7), /* interactive usage by shift */ 1 85 3 charge float bin, /* Total charge */ 1 86 3 xxx fixed bin, 1 87 3 cpu fixed bin (71), /* CPU usage in microseconds */ 1 88 3 core fixed bin (71), /* Memory usage in page-microseconds */ 1 89 3 connect fixed bin (71), /* Connect time in microseconds */ 1 90 3 io_ops fixed bin (71), /* Terminal I/O operations */ 1 91 2 absentee (4), /* Absentee usage by queue */ 1 92 3 charge float bin, /* Total absentee charge */ 1 93 3 jobs fixed bin, /* Number of jobs */ 1 94 3 cpu fixed bin (71), /* CPU usage in microseconds */ 1 95 3 memory fixed bin (71), /* Memory usage in mu */ 1 96 2 iod (4), /* IO Daemon usage, by queue */ 1 97 3 charge float bin, /* Total charge */ 1 98 3 pieces fixed bin, /* Number of requests */ 1 99 3 pad fixed bin (35), 1 100 3 pages fixed bin (35), /* number of pages output */ 1 101 3 lines fixed bin (71), /* Record count */ 1 102 2 devices (16) float bin, /* Usage of attached devices */ 1 103 2 time_last_reset fixed bin (71), /* time last updated the PDT */ 1 104 2 absolute_limit float bin, /* Limit, not reset monthly */ 1 105 2 absolute_spent float bin, /* Spending against this */ 1 106 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 1 107 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 1 108 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0= default rates) */ 1 109 2 pad1a fixed bin (27) unsigned unaligned, /* remainder of word */ 1 110 2 request_id fixed bin (71), /* absentee request id */ 1 111 2 authorization_range (2) bit (72) aligned, 1 112 2 pad1 (73) fixed bin, /* extra space */ 1 113 2 charge_type fixed bin, /* device charge type of console */ 1 114 2 term_type_name char (32) unal, /* terminal type name */ 1 115 2 line_type fixed bin, /* line type of user's console */ 1 116 2 tty_type fixed bin, /* old terminal type (obsolete, kept for compatibility) */ 1 117 2 service_type fixed bin, /* type of service console is performing */ 1 118 2 tty_answerback char (4) unaligned, /* original answerback of user's console */ 1 119 2 old_tty char (6), /* (obsolete) attachment name of user's console */ 1 120 2 standby fixed bin, /* 1 if standby user */ 1 121 2 login_line char (120) unal, /* line typed at login */ 1 122 2 cant_bump_until fixed bin (71), /* cannot be preempted until this time (0 for abs) */ 1 123 2 input_seg char (168) unal, /* path name of absentee input file */ 1 124 2 output_seg char (168) unal, /* path name of absentee output file */ 1 125 2 max_cpu_time fixed bin, /* max number of seconds allowed to this absentee proc */ 1 126 2 abs_queue fixed bin, /* absentee queue if absentee, else -1 */ 1 127 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 1 128 2 arg_info_ptr fixed bin (18) unsigned, /* Relative pointer to information on absentee args. */ 1 129 2 old_proc_core fixed bin (71), /* Memory usage by previous processes in this session */ 1 130 2 old_proc_io_ops fixed bin (71), /* I/O operations from previous processes in this session */ 1 131 2 tty char (32) unaligned, /* Attachment name of users channel */ 1 132 2 start_arg_info fixed bin; /* Put absentee args information here. */ 1 133 1 134 1 135 /* Structure to contain information on absentee arguments */ 1 136 dcl 1 arg_info aligned based, 1 137 2 arg_count fixed bin, /* Number of arguments for replacement in absentee segment */ 1 138 2 ln_args fixed bin, /* Length of string containing arguments. */ 1 139 2 arg_lengths (25 refer (arg_info.arg_count)) fixed bin, /* Array of argument lengths */ 1 140 2 args char (128 refer (arg_info.ln_args)) unal; 1 141 /* Args used for replacement in absentee control segment. */ 1 142 1 143 declare PIT_version_3 fixed bin int static options (constant) init (3); 1 144 1 145 /* END INCLUDE FILE ... pit.incl.pl1 */ 132 2 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 2 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 2 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 2 8* attribute switches. 2 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 2 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 2 12* be deleted. 2 13* B) Add constants identifying attributes that can be changed by user at 2 14* login, etc. 2 15* END HISTORY COMMENTS */ 2 16 2 17 2 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 2 19 2 20 /* format: style4 */ 2 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 2 22 (2 administrator bit (1), /* 1 system administrator privileges */ 2 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 2 24 2 nobump bit (1), /* 2 user cannot be bumped */ 2 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 2 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 2 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 2 28* . of same project (distinct from "nobump") */ 2 29 2 nolist bit (1), /* 7 don't list user on "who" */ 2 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 2 31 2 multip bit (1), /* 9 user may have several processes */ 2 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 2 33 2 brief bit (1), /* 11 no login or logout message */ 2 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 2 35 2 vhomedir bit (1), /* 13 user may change homedir */ 2 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 2 37 2 sb_ok bit (1), /* 15 user may be standby */ 2 38 2 pm_ok bit (1), /* 16 user may be primary */ 2 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 2 40 2 daemon bit (1), /* 18 user may login as daemon */ 2 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 2 42 2 no_warning bit (1), /* 20 no warning message */ 2 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 2 44* . in PDT: this user has an individual load control group */ 2 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 2 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 2 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 2 48 2 pad bit (12)) unaligned; 2 49 2 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 2 51 ("none", /* 0 */ 2 52 "administrator", /* 1 */ 2 53 "primary_line", /* 2 */ 2 54 "nobump", /* 3 */ 2 55 "guaranteed_login", /* 4 */ 2 56 "anonymous", /* 5 */ 2 57 "nopreempt", /* 6 */ 2 58 "nolist", /* 7 */ 2 59 "dialok", /* 8 */ 2 60 "multip", /* 9 */ 2 61 "bumping", /* 10 */ 2 62 "brief", /* 11 */ 2 63 "vinitproc", /* 12 */ 2 64 "vhomedir", /* 13 */ 2 65 "nostartup", /* 14 */ 2 66 "no_secondary", /* 15 */ 2 67 "no_prime", /* 16 */ 2 68 "no_eo", /* 17 */ 2 69 "daemon", /* 18 */ 2 70 "", /* 19 vdim OBSOLETE */ 2 71 "no_warning", /* 20 */ 2 72 "igroup", /* 21 */ 2 73 "save_pdir", /* 22 */ 2 74 "disconnect_ok", /* 23 */ 2 75 "save_on_disconnect"); /* 24 */ 2 76 2 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 2 78 ("null", /* 0 */ 2 79 "admin", /* 1 */ 2 80 "", "", /* 2 - 3 */ 2 81 "guar", /* 4 */ 2 82 "anon", /* 5 */ 2 83 "", "", /* 6 - 7 */ 2 84 "dial", /* 8 */ 2 85 "multi_login", /* 9 */ 2 86 "preempting", /* 10 */ 2 87 "", /* 11 */ 2 88 "v_process_overseer", /* 12 */ 2 89 "v_home_dir", /* 13 */ 2 90 "no_start_up", /* 14 */ 2 91 "no_sec", /* 15 */ 2 92 "no_primary", /* 16 */ 2 93 "no_edit_only", /* 17 */ 2 94 "op_login", /* 18 */ 2 95 "", /* 19 */ 2 96 "nowarn", /* 20 */ 2 97 "", "", "", /* 21 - 23 */ 2 98 "save"); /* 24 */ 2 99 2 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 2 101 options(constant) init("000000000010000000010000000000000000"b); 2 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 2 103 2 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 2 105 options(constant) init("000000000010000000010000000000000000"b); 2 106 /* PDT value for (brief, no_warning) is default */ 2 107 2 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 2 109 options(constant) init("000100000110010000010000000000000000"b); 2 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 2 111 3 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 3 2 3 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 4 /* */ 3 5 /* This include file describes the attributes of an absentee job. It is */ 3 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 3 7 /* and PIT.incl.pl1. */ 3 8 /* */ 3 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 10 3 11 /****^ HISTORY COMMENTS: 3 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 3 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 14* Separated abs_attributes from the request structure 3 15* (abs_message_format.incl.pl1) so that the identical structure could be 3 16* used in the ute structure (user_table_entry.incl.pl1). 3 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 3 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 19* Added ABS_ATTRIBUTE_NAMES array. 3 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 3 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 3 22* Added the no_start_up flag. SCP6367 3 23* END HISTORY COMMENTS */ 3 24 3 25 dcl 1 user_abs_attributes aligned based, 3 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 3 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 3 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 3 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 3 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 3 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 3 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 3 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 3 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 3 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 3 36 2 attributes_pad bit (26) unaligned; 3 37 3 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 3 39 "restartable", 3 40 "user_deferred_until_time", 3 41 "proxy", 3 42 "set_bit_cnt", 3 43 "time_in_gmt", 3 44 "user_deferred_indefinitely", 3 45 "secondary_ok", 3 46 "truncate_absout", 3 47 "restarted", 3 48 "no_start_up"); 3 49 3 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 3 51 2 112 2 113 2 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 133 134 4 1 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 4 2 4 3 /* Modified 740723 by PG to add security info */ 4 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 4 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 4 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 4 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 4 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 4 9 4 10 dcl 1 whotab based (whoptr) aligned, 4 11 2 mxusers fixed bin, /* max. number of users on system */ 4 12 2 n_users fixed bin, /* current number of users */ 4 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 4 14 2 n_units fixed bin, /* current load */ 4 15 2 timeup fixed bin (71), /* time system was started */ 4 16 2 session char (8), /* AS state, same as anstbl.session */ 4 17 2 nextsd fixed bin (71), /* time we will shutdown */ 4 18 2 until fixed bin (71), /* projected time we start up again */ 4 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 4 20 2 erfno char (8), /* if a crash, the error number */ 4 21 2 obsolete_why char (32), /* reason for last shutdown */ 4 22 2 installation_id char (32), /* name of installation */ 4 23 2 obsolete_message char (32), /* message for all users */ 4 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 4 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 4 26 2 max_abs_users fixed bin, /* max number of absentee users */ 4 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 4 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 4 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 4 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 4 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 4 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 4 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 4 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 4 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 4 36 2 pad1 bit (9) unal, 4 37 2 pad (3) fixed bin, 4 38 2 version fixed bin, /* structure version */ 4 39 2 header_size fixed bin, /* length of header in words */ 4 40 2 entry_size fixed bin, /* length of entry in words */ 4 41 /* laste_adjust is used only by Answering Service programs */ 4 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 4 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 4 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 4 45 4 46 /* whotab header extension: The header is extended from 64 words by 4 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 4 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 4 49* present. This allows existing programs to function with old definitions of 4 50* whotab. Obviously no new header field can be more than 31 contiguous words in 4 51* length. In the Answering Service, all programs using whotab must be compiled 4 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 4 53 4 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 4 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 4 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 4 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 4 58 2 abs_control, /* see absentee_user_table */ 4 59 3 mnbz bit (1) unal, /* must not be zero */ 4 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 4 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 4 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 4 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 4 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 4 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 4 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 4 67 3 control_pad bit (23) unal, 4 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 4 69 2 installation_request_pid bit (36), /* installation process identifier */ 4 70 2 sysid char (32), /* current system name */ 4 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 4 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 4 73 2 message char (124), /* message for all users */ 4 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 4 75 2 why char (124), /* reason for last shutdown */ 4 76 2 e (1000), /* offset 240o */ 4 77 3 active fixed bin, /* nonzero means logged in */ 4 78 3 person char (28) aligned, /* person name */ 4 79 3 project char (28), /* project id */ 4 80 3 anon fixed bin, /* 1 if anonymous user */ 4 81 3 padding fixed bin (71), 4 82 3 timeon fixed bin (71), /* time of login */ 4 83 3 units fixed bin, /* load units */ 4 84 3 stby fixed bin, /* 1 if stby */ 4 85 3 idcode char (4), /* tty id code */ 4 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 4 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 4 88 3 group char (8), /* party-line group */ 4 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 4 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 4 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 4 92 3 pad2 bit (33) unal, 4 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 4 94 3 process_authorization bit (72); /* access authorization of process */ 4 95 4 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 4 97 4 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 135 136 137 138 139 fillpp: 140 proc; /* internal proc to fill in PIT ptr on first call */ 141 142 declare whotab_$ bit (36) aligned external static; 143 declare linkage_error condition; 144 145 on linkage_error /* AS12.0 INSTALLATION KLUGE */ 146 begin; /* to be removed after hardcore is installed */ 147 148 call hcs_$level_get (current_validation); 149 call hcs_$level_set (get_ring_ ()); 150 call hcs_$initiate ((get_pdir_ ()), "pit", "pit_", 0, 1, pp, ec); 151 call hcs_$level_set (current_validation); 152 if pp = null 153 then call sub_err_ (ec, "user_info_", "s", null (), (0), "pit"); 154 end; /* END OF KLUGE */ 155 156 pp = addr (pit_$); /* we depend on this refname being in the environment */ 157 on linkage_error 158 begin; 159 160 call hcs_$level_get (current_validation); 161 call hcs_$level_set (get_ring_ ()); 162 call hcs_$initiate (sysdir, "whotab", "whotab_", 0, 1, whoptr, ec); 163 call hcs_$level_set (current_validation); 164 if whoptr = null 165 then call sub_err_ (ec, "user_info_", "s", null (), (0), "whotab"); 166 end; 167 168 whoptr = addr (whotab_$); 169 170 end fillpp; 171 172 173 174 whoami: 175 entry; 176 177 call fillpp; 178 179 call cu_$arg_ptr (1, ap, al, ec); 180 if ec ^= 0 181 then return; 182 bchr = pp -> pit.login_name; 183 call cu_$arg_ptr (2, ap, al, ec); 184 if ec ^= 0 185 then return; 186 bchr = pp -> pit.project; 187 call cu_$arg_ptr (3, ap, al, ec); 188 if ec ^= 0 189 then return; 190 bchr = pp -> pit.account; 191 192 return; 193 194 login_data: 195 entry; 196 197 call fillpp; 198 199 call cu_$arg_ptr (1, ap, al, ec); 200 if ec ^= 0 201 then return; 202 bchr = pp -> pit.login_name; 203 call cu_$arg_ptr (2, ap, al, ec); 204 if ec ^= 0 205 then return; 206 bchr = pp -> pit.project; 207 call cu_$arg_ptr (3, ap, al, ec); 208 if ec ^= 0 209 then return; 210 bchr = pp -> pit.account; 211 call cu_$arg_ptr (4, ap, al, ec); 212 if ec ^= 0 213 then return; 214 bfix = pp -> pit.anonymous; 215 call cu_$arg_ptr (5, ap, al, ec); 216 if ec ^= 0 217 then return; 218 i = pp -> pit.whox; /* use current data from whotab */ 219 if i = 0 220 then bfix = pp -> pit.standby; /* oof. unlisted users */ 221 else bfix = whotab.e (i).stby; /* user may have been promoted since login */ 222 call cu_$arg_ptr (6, ap, al, ec); 223 if ec ^= 0 224 then return; 225 bfix = pp -> pit.user_weight; 226 call cu_$arg_ptr (7, ap, al, ec); 227 if ec ^= 0 228 then return; 229 bf71 = pp -> pit.login_time; 230 call cu_$arg_ptr (8, ap, al, ec); 231 if ec ^= 0 232 then return; 233 if pp -> pit.anonymous = 1 234 then bchr = "enter"; 235 else bchr = "login"; 236 237 return; 238 239 usage_data: 240 entry; 241 242 call fillpp; 243 244 call cu_$arg_ptr (1, ap, al, ec); 245 if ec ^= 0 246 then return; 247 bfix = pp -> pit.n_processes; 248 call cu_$arg_ptr (2, ap, al, ec); 249 if ec ^= 0 250 then return; 251 bf71 = pp -> pit.old_proc_cpu; 252 call cu_$arg_ptr (3, ap, al, ec); 253 if ec ^= 0 254 then return; 255 bf71 = pp -> pit.login_time; 256 call cu_$arg_ptr (4, ap, al, ec); 257 if ec ^= 0 258 then return; 259 bf71 = pp -> pit.proc_creation_time; 260 call cu_$arg_ptr (5, ap, al, ec); 261 if ec ^= 0 262 then return; 263 bf71 = pp -> pit.old_proc_core; 264 call cu_$arg_ptr (6, ap, al, ec); 265 if ec ^= 0 266 then return; 267 bf71 = pp -> pit.old_proc_io_ops; 268 269 return; 270 271 homedir: 272 entry; 273 274 call fillpp; 275 276 call cu_$arg_ptr (1, ap, al, ec); 277 if ec ^= 0 278 then return; 279 bchr = pp -> pit.homedir; 280 281 return; 282 283 responder: 284 entry; 285 286 call fillpp; 287 288 call cu_$arg_ptr (1, ap, al, ec); 289 if ec ^= 0 290 then return; 291 bchr = pp -> pit.login_responder; 292 293 return; 294 295 tty_data: 296 entry; 297 298 call fillpp; 299 300 if pp -> pit.process_type = 2 301 then do; 302 call cu_$arg_ptr (1, ap, al, ec); 303 if ec ^= 0 304 then return; 305 bchr = "abs"; 306 call cu_$arg_ptr (2, ap, al, ec); 307 if ec ^= 0 308 then return; 309 bfix = pp -> pit.tty_type; 310 call cu_$arg_ptr (3, ap, al, ec); 311 if ec ^= 0 312 then return; 313 bchr = pp -> pit.tty; 314 call cu_$arg_ptr (4, ap, al, ec); 315 if ec ^= 0 316 then return; 317 bfix = pp -> pit.line_type; 318 end; 319 320 else do; 321 call cu_$arg_ptr (1, ap, al, ec); 322 if ec ^= 0 323 then return; 324 bchr = pp -> pit.tty_answerback; 325 call cu_$arg_ptr (2, ap, al, ec); 326 if ec ^= 0 327 then return; 328 bfix = pp -> pit.tty_type; 329 call cu_$arg_ptr (3, ap, al, ec); 330 if ec ^= 0 331 then return; 332 bchr = pp -> pit.tty; 333 call cu_$arg_ptr (4, ap, al, ec); 334 if ec ^= 0 335 then return; 336 bfix = pp -> pit.line_type; 337 end; 338 339 return; 340 341 terminal_data: 342 entry; 343 344 call fillpp; 345 346 if pp -> pit.process_type = 2 347 then do; 348 call cu_$arg_ptr (1, ap, al, ec); 349 if ec ^= 0 350 then return; 351 bchr = "abs"; 352 call cu_$arg_ptr (2, ap, al, ec); 353 if ec ^= 0 354 then return; 355 bchr = pp -> pit.term_type_name; 356 call cu_$arg_ptr (3, ap, al, ec); 357 if ec ^= 0 358 then return; 359 bchr = pp -> pit.tty; 360 call cu_$arg_ptr (4, ap, al, ec); 361 if ec ^= 0 362 then return; 363 bfix = pp -> pit.line_type; 364 call cu_$arg_ptr (5, ap, al, ec); 365 if ec ^= 0 366 then return; 367 if pp -> pit.charge_type = 0 368 then bchr = "none"; 369 else do; 370 call system_info_$device_prices (ndev, addr (dvt)); 371 bchr = dvt (pp -> pit.charge_type).device_id; 372 end; 373 end; 374 375 else do; 376 call cu_$arg_ptr (1, ap, al, ec); 377 if ec ^= 0 378 then return; 379 bchr = pp -> pit.tty_answerback; 380 call cu_$arg_ptr (2, ap, al, ec); 381 if ec ^= 0 382 then return; 383 bchr = pp -> pit.term_type_name; 384 call cu_$arg_ptr (3, ap, al, ec); 385 if ec ^= 0 386 then return; 387 bchr = pp -> pit.tty; 388 call cu_$arg_ptr (4, ap, al, ec); 389 if ec ^= 0 390 then return; 391 bfix = pp -> pit.line_type; 392 call cu_$arg_ptr (5, ap, al, ec); 393 if ec ^= 0 394 then return; 395 if pp -> pit.charge_type = 0 396 then bchr = "none"; 397 else do; 398 call system_info_$device_prices (ndev, addr (dvt)); 399 bchr = dvt (pp -> pit.charge_type).device_id; 400 end; 401 end; 402 403 return; 404 405 service_type: 406 entry (); 407 408 call fillpp; 409 410 call cu_$arg_ptr (1, ap, al, ec); 411 if ec ^= 0 412 then return; 413 bfix = pp -> pit.service_type; 414 415 return; 416 417 process_type: 418 entry (); 419 420 call fillpp; 421 422 call cu_$arg_ptr (1, ap, al, ec); 423 if ec ^= 0 424 then return; 425 bfix = pp -> pit.process_type; 426 427 return; 428 429 logout_data: 430 entry; 431 432 call fillpp; 433 434 call cu_$arg_ptr (1, ap, al, ec); 435 if ec ^= 0 436 then return; 437 bf71 = pp -> pit.logout_channel; 438 call cu_$arg_ptr (2, ap, al, ec); 439 if ec ^= 0 440 then return; 441 bb36 = pp -> pit.logout_pid; 442 443 return; 444 445 446 login_line: 447 entry; 448 call fillpp; 449 450 call cu_$arg_ptr (1, ap, al, ec); 451 if ec ^= 0 452 then return; 453 bchr = pp -> pit.login_line; 454 455 return; 456 457 absentee_queue: 458 entry; 459 460 call fillpp; 461 462 call cu_$arg_ptr (1, ap, al, ec); 463 if ec ^= 0 464 then return; 465 if pp -> pit.process_type = 2 466 then bfix = pp -> pit.abs_queue; 467 else bfix = -1; 468 469 return; 470 471 load_ctl_info: 472 entry; 473 474 call fillpp; 475 476 call cu_$arg_ptr (1, ap, al, ec); 477 if ec ^= 0 478 then return; 479 bchr = pp -> pit.group; 480 call cu_$arg_ptr (2, ap, al, ec); 481 if ec ^= 0 482 then return; 483 484 i = pp -> pit.whox; /* use current data from whotab */ 485 if i = 0 486 then do; /* unlisted user? */ 487 bfix = pp -> pit.standby; 488 call cu_$arg_ptr (3, ap, al, ec); 489 if ec ^= 0 490 then return; 491 bf71 = pp -> pit.cant_bump_until; 492 end; 493 else do; 494 bfix = whotab.e (i).stby; 495 call cu_$arg_ptr (3, ap, al, ec); 496 if ec ^= 0 497 then return; 498 bf71 = whotab.e (i).cant_bump_until; 499 end; 500 call cu_$arg_ptr (4, ap, al, ec); 501 if ec ^= 0 502 then return; 503 bfix = pp -> pit.user_weight; 504 return; 505 506 authorization_range: 507 entry (a_auth_range); 508 509 dcl a_auth_range (2) bit (72) aligned; 510 511 call fillpp; 512 a_auth_range = pp -> pit.authorization_range; 513 return; 514 515 attributes: 516 entry (atts); 517 518 dcl atts char (*) var; 519 520 call fillpp; 521 522 call cu_$arg_ptr (1, ap, al, ec); 523 if ec ^= 0 524 then return; 525 call format_attributes_ (addr (pp -> pit.at), tvcs); 526 atts = tvcs; 527 528 return; 529 530 absin: 531 entry; 532 533 call fillpp; 534 535 call cu_$arg_ptr (1, ap, al, ec); 536 if ec ^= 0 537 then return; 538 539 if pp -> pit.process_type ^= 2 540 then bchr = ""; 541 else bchr = pp -> pit.input_seg; 542 543 return; 544 545 absout: 546 entry; 547 548 call fillpp; 549 550 call cu_$arg_ptr (1, ap, al, ec); 551 if ec ^= 0 552 then return; 553 554 if pp -> pit.process_type ^= 2 555 then bchr = ""; 556 else do; 557 if pp -> pit.output_seg = "" 558 then do; 559 bchr = before (pp -> pit.input_seg, ".absin") || ".absout"; 560 end; 561 else bchr = pp -> pit.output_seg; 562 end; 563 564 return; 565 566 outer_module: 567 entry; 568 569 call fillpp; 570 571 call cu_$arg_ptr (1, ap, al, ec); 572 if ec ^= 0 573 then return; 574 bchr = pp -> pit.outer_module; 575 576 return; 577 578 limits: 579 entry; 580 581 call fillpp; 582 583 call cu_$arg_ptr (1, ap, al, ec); 584 if ec ^= 0 585 then return; 586 bflt = pp -> pit.dollar_limit; 587 call cu_$arg_ptr (2, ap, al, ec); 588 if ec ^= 0 589 then return; 590 bflt = pp -> pit.absolute_limit; 591 call cu_$arg_ptr (3, ap, al, ec); 592 if ec ^= 0 593 then return; 594 bf71 = pp -> pit.absolute_cutoff; 595 call cu_$arg_ptr (4, ap, al, ec); 596 if ec ^= 0 597 then return; 598 bfix = pp -> pit.absolute_increm; 599 call cu_$arg_ptr (5, ap, al, ec); 600 if ec ^= 0 601 then return; 602 do i = 0 to 7; 603 bftary (i) = pp -> pit.shift_limit (i); 604 end; 605 call cu_$arg_ptr (6, ap, al, ec); 606 if ec ^= 0 607 then return; 608 bflt = pp -> pit.dollar_charge; 609 call cu_$arg_ptr (7, ap, al, ec); 610 if ec ^= 0 611 then return; 612 bflt = pp -> pit.absolute_spent; 613 call cu_$arg_ptr (8, ap, al, ec); 614 if ec ^= 0 615 then return; 616 do i = 0 to 7; 617 bftary (i) = pp -> pit.interactive (i).charge; 618 end; 619 return; 620 621 rs_name: 622 entry; 623 624 call fillpp; 625 626 call cu_$arg_ptr (1, ap, al, ec); 627 if ec ^= 0 628 then return; 629 call system_info_$rs_name ((pp -> pit.rs_number), bchr, ec); 630 if ec ^= 0 631 then call sub_err_ (ec, "user_info_", "s", null (), (0), "Rate structure ^d invalid. 632 Contact your system administrator.", pp -> pit.rs_number); 633 return; 634 635 rs_number: 636 entry; 637 638 call fillpp; 639 640 call cu_$arg_ptr (1, ap, al, ec); 641 if ec ^= 0 642 then return; 643 bf17 = pp -> pit.rs_number; 644 return; 645 646 login_arg_count: 647 entry; 648 649 call fillpp; 650 651 call cu_$arg_ptr (1, ap, al, ec); 652 if ec ^= 0 653 then return; 654 if pp -> pit.arg_info_ptr = 0 655 then /* no login arguments */ 656 bf17 = 0; 657 else bf17 = ptr (pp, pp -> pit.arg_info_ptr) -> arg_info.arg_count; 658 659 call cu_$arg_ptr (2, ap, al, ec); 660 if ec ^= 0 661 then return; 662 663 bf21 = 0; 664 if pp -> pit.arg_info_ptr = 0 665 then return; 666 else do ii = 1 to ptr (pp, pp -> pit.arg_info_ptr) -> arg_info.arg_count; 667 bf21 = max (ptr (pp, pp -> pit.arg_info_ptr) -> arg_info.arg_lengths (ii), bf21); 668 end; 669 670 call cu_$arg_ptr (3, ap, al, ec); 671 if ec ^= 0 672 then return; 673 674 if pp -> pit.arg_info_ptr = 0 675 then bf21 = 0; 676 else bf21 = ptr (pp, pp -> pit.arg_info_ptr) -> arg_info.ln_args; 677 return; 678 679 680 login_arg_ptr: 681 entry; 682 683 call fillpp; 684 685 call cu_$arg_ptr (1, ap, al, ec); 686 if ec ^= 0 687 then return; 688 i = bf17; /* get argument number */ 689 call cu_$arg_ptr (2, ap, al, ec); /* argument pointer */ 690 if ec ^= 0 691 then return; 692 693 if pp -> pit.arg_info_ptr = 0 694 then do; 695 arg_infop = null; 696 i = -1; 697 end; 698 else arg_infop = ptr (pp, pp -> pit.arg_info_ptr); 699 if i < 1 700 then bptr = null; 701 else if i > arg_infop -> arg_info.arg_count 702 then do; 703 bptr = null; 704 i = -1; 705 end; 706 else do; 707 arg_offset = 1; 708 do ii = 1 to i - 1; 709 arg_offset = arg_offset + arg_infop -> arg_info.arg_lengths (ii); 710 end; 711 bptr = addr (substr (arg_infop -> arg_info.args, arg_offset, 1)); 712 /* illegal pl1 */ 713 end; 714 call cu_$arg_ptr (3, ap, al, ec); /* argument length */ 715 if ec ^= 0 716 then return; 717 if i < 0 718 then bf21 = 0; 719 else bf21 = arg_infop -> arg_info.arg_lengths (i); 720 call cu_$arg_ptr (4, ap, al, ec); /* return code */ 721 if ec ^= 0 722 then return; 723 if i < 0 724 then bfix = error_table_$noarg; 725 else bfix = 0; 726 return; 727 728 729 absentee_request_id: 730 entry; 731 732 call fillpp; 733 734 call cu_$arg_ptr (1, ap, al, ec); 735 if ec = 0 736 then bf71 = pp -> pit.request_id; 737 return; 738 739 absout_truncation: /* truncate .absout bit */ 740 entry; 741 742 call fillpp; 743 744 call cu_$arg_ptr (1, ap, al, ec); 745 if ec ^= 0 then return; 746 if pp -> pit.process_type = 2 then bbit = pp -> pit.truncate_absout; 747 else bbit = "0"b; 748 return; 749 750 absentee_restarted: /* restarted bit */ 751 entry; 752 753 call fillpp; 754 755 call cu_$arg_ptr (1, ap, al, ec); 756 if ec ^= 0 then return; 757 if pp -> pit.process_type ^= 2 then bbit = "0"b; 758 else bbit = pp -> pit.restarted; 759 return; 760 761 ring_range: /* get low and high allowed login ring level */ 762 entry (a_ring_range); 763 764 dcl a_ring_range (2) fixed bin; 765 766 call fillpp; 767 a_ring_range (1) = pp -> pit.min_ring; /* lowest allowed */ 768 a_ring_range (2) = pp -> pit.max_ring; /* highest allowed */ 769 return; 770 771 end user_info_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0905.2 user_info_.pl1 >special_ldd>install>MR12.2-1047>user_info_.pl1 132 1 07/13/88 0930.5 pit.incl.pl1 >special_ldd>install>MR12.2-1047>pit.incl.pl1 133 2 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 2-112 3 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 135 4 01/18/85 0953.2 whotab.incl.pl1 >ldd>include>whotab.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. a_auth_range parameter bit(72) array dcl 509 set ref 506 512* a_ring_range parameter fixed bin(17,0) array dcl 764 set ref 761 767* 768* abs_attributes 722 based structure level 2 dcl 1-50 abs_queue 721 based fixed bin(17,0) level 2 dcl 1-50 ref 465 absolute_cutoff 370 based fixed bin(71,0) level 2 dcl 1-50 ref 594 absolute_increm 372 based fixed bin(17,0) level 2 dcl 1-50 ref 598 absolute_limit 366 based float bin(27) level 2 dcl 1-50 ref 590 absolute_spent 367 based float bin(27) level 2 dcl 1-50 ref 612 account 51 based char(32) level 2 packed packed unaligned dcl 1-50 ref 190 210 addr builtin function dcl 128 ref 156 168 370 370 398 398 525 525 711 al 000360 automatic fixed bin(17,0) dcl 115 set ref 179* 182 183* 186 187* 190 199* 202 203* 206 207* 210 211* 215* 222* 226* 230* 233 235 244* 248* 252* 256* 260* 264* 276* 279 288* 291 302* 305 306* 310* 313 314* 321* 324 325* 329* 332 333* 348* 351 352* 355 356* 359 360* 364* 367 371 376* 379 380* 383 384* 387 388* 392* 395 399 410* 422* 434* 438* 450* 453 462* 476* 479 480* 488* 495* 500* 522* 535* 539 541 550* 554 559 561 571* 574 583* 587* 591* 595* 599* 605* 609* 613* 626* 629 629 640* 651* 659* 670* 685* 689* 714* 720* 734* 744* 755* anonymous 71 based fixed bin(17,0) level 2 dcl 1-50 ref 214 233 ap 000356 automatic pointer dcl 115 set ref 179* 182 183* 186 187* 190 199* 202 203* 206 207* 210 211* 214 215* 219 221 222* 225 226* 229 230* 233 235 244* 247 248* 251 252* 255 256* 259 260* 263 264* 267 276* 279 288* 291 302* 305 306* 309 310* 313 314* 317 321* 324 325* 328 329* 332 333* 336 348* 351 352* 355 356* 359 360* 363 364* 367 371 376* 379 380* 383 384* 387 388* 391 392* 395 399 410* 413 422* 425 434* 437 438* 441 450* 453 462* 465 467 476* 479 480* 487 488* 491 494 495* 498 500* 503 522* 535* 539 541 550* 554 559 561 571* 574 583* 586 587* 590 591* 594 595* 598 599* 603 605* 608 609* 612 613* 617 626* 629 640* 643 651* 654 657 659* 663 667 667 670* 674 676 685* 688 689* 699 703 711 714* 717 719 720* 723 725 734* 735 744* 746 747 755* 757 758 arg_count based fixed bin(17,0) level 2 dcl 1-136 ref 657 666 701 711 arg_info based structure level 1 dcl 1-136 arg_info_ptr 723 based fixed bin(18,0) level 2 unsigned dcl 1-50 ref 654 657 664 666 667 674 676 693 698 arg_infop 000100 automatic pointer dcl 86 set ref 695* 698* 701 709 711 719 arg_lengths 2 based fixed bin(17,0) array level 2 dcl 1-136 ref 667 709 719 arg_offset 000102 automatic fixed bin(17,0) dcl 87 set ref 707* 709* 709 711 args based char level 2 packed packed unaligned dcl 1-136 set ref 711 at 110 based structure level 2 dcl 1-50 set ref 525 525 atts parameter varying char dcl 518 set ref 515 526* authorization_range 376 based bit(72) array level 2 dcl 1-50 ref 512 bb36 based bit(36) packed unaligned dcl 115 set ref 441* bbit based bit(1) packed unaligned dcl 115 set ref 746* 747* 757* 758* bchr based char packed unaligned dcl 115 set ref 182* 186* 190* 202* 206* 210* 233* 235* 279* 291* 305* 313* 324* 332* 351* 355* 359* 367* 371* 379* 383* 387* 395* 399* 453* 479* 539* 541* 554* 559* 561* 574* 629* before builtin function dcl 128 ref 559 bf17 based fixed bin(17,0) dcl 115 set ref 643* 654* 657* 688 bf21 based fixed bin(21,0) dcl 115 set ref 663* 667* 667 674* 676* 717* 719* bf71 based fixed bin(71,0) dcl 115 set ref 229* 251* 255* 259* 263* 267* 437* 491* 498* 594* 735* bfix based fixed bin(35,0) dcl 115 set ref 214* 219* 221* 225* 247* 309* 317* 328* 336* 363* 391* 413* 425* 465* 467* 487* 494* 503* 598* 723* 725* bflt based float bin(27) dcl 115 set ref 586* 590* 608* 612* bftary based float bin(27) array dcl 115 set ref 603* 617* bptr based pointer dcl 115 set ref 699* 703* 711* cant_bump_until 572 based fixed bin(71,0) level 2 in structure "pit" dcl 1-50 in procedure "user_info_" ref 491 cant_bump_until 274 based fixed bin(71,0) array level 3 in structure "whotab" dcl 4-10 in procedure "user_info_" ref 498 charge 144 based float bin(27) array level 3 dcl 1-50 ref 617 charge_type 513 based fixed bin(17,0) level 2 dcl 1-50 ref 367 371 395 399 cu_$arg_ptr 000032 constant entry external dcl 88 ref 179 183 187 199 203 207 211 215 222 226 230 244 248 252 256 260 264 276 288 302 306 310 314 321 325 329 333 348 352 356 360 364 376 380 384 388 392 410 422 434 438 450 462 476 480 488 495 500 522 535 550 571 583 587 591 595 599 605 609 613 626 640 651 659 670 685 689 714 720 734 744 755 current_validation 000112 automatic fixed bin(3,0) dcl 88 set ref 148* 151* 160* 163* device_id 000114 automatic char(8) array level 2 packed packed unaligned dcl 109 set ref 371 399 dollar_charge 127 based float bin(27) level 2 dcl 1-50 ref 608 dollar_limit 130 based float bin(27) level 2 dcl 1-50 ref 586 dvt 000114 automatic structure array level 1 unaligned dcl 109 set ref 370 370 398 398 e 240 based structure array level 2 dcl 4-10 ec 000113 automatic fixed bin(35,0) dcl 88 set ref 150* 152* 162* 164* 179* 180 183* 184 187* 188 199* 200 203* 204 207* 208 211* 212 215* 216 222* 223 226* 227 230* 231 244* 245 248* 249 252* 253 256* 257 260* 261 264* 265 276* 277 288* 289 302* 303 306* 307 310* 311 314* 315 321* 322 325* 326 329* 330 333* 334 348* 349 352* 353 356* 357 360* 361 364* 365 376* 377 380* 381 384* 385 388* 389 392* 393 410* 411 422* 423 434* 435 438* 439 450* 451 462* 463 476* 477 480* 481 488* 489 495* 496 500* 501 522* 523 535* 536 550* 551 571* 572 583* 584 587* 588 591* 592 595* 596 599* 600 605* 606 609* 610 613* 614 626* 627 629* 630 630* 640* 641 651* 652 659* 660 670* 671 685* 686 689* 690 714* 715 720* 721 734* 735 744* 745 755* 756 error_table_$noarg 000034 external static fixed bin(35,0) dcl 107 ref 723 format_attributes_ 000022 constant entry external dcl 88 ref 525 get_pdir_ 000020 constant entry external dcl 88 ref 150 get_ring_ 000016 constant entry external dcl 88 ref 149 149 161 161 group 104 based char(8) level 2 packed packed unaligned dcl 1-50 ref 479 hcs_$initiate 000010 constant entry external dcl 88 ref 150 162 hcs_$level_get 000014 constant entry external dcl 88 ref 148 160 hcs_$level_set 000012 constant entry external dcl 88 ref 149 151 161 163 homedir 22 based char(64) level 2 packed packed unaligned dcl 1-50 ref 279 i 000110 automatic fixed bin(17,0) dcl 88 set ref 218* 219 221 484* 485 494 498 602* 603 603* 616* 617 617* 688* 696* 699 701 704* 708 717 719 723 ii 000111 automatic fixed bin(17,0) dcl 88 set ref 666* 667* 708* 709* input_seg 574 based char(168) level 2 packed packed unaligned dcl 1-50 ref 541 559 interactive 144 based structure array level 2 dcl 1-50 line_type 524 based fixed bin(17,0) level 2 dcl 1-50 ref 317 336 363 391 linkage_error 000100 stack reference condition dcl 143 ref 145 157 ln_args 1 based fixed bin(17,0) level 2 dcl 1-136 ref 676 711 login_line 533 based char(120) level 2 packed packed unaligned dcl 1-50 ref 453 login_name 72 based char(28) level 2 packed packed unaligned dcl 1-50 ref 182 202 login_responder 2 based char(64) level 2 packed packed unaligned dcl 1-50 ref 291 login_time 62 based fixed bin(71,0) level 2 dcl 1-50 ref 229 255 logout_channel 102 based fixed bin(71,0) level 2 dcl 1-50 ref 437 logout_pid 101 based bit(36) level 2 dcl 1-50 ref 441 max builtin function dcl 128 ref 667 max_ring 107 based fixed bin(17,0) level 2 dcl 1-50 ref 768 min_ring 106 based fixed bin(17,0) level 2 dcl 1-50 ref 767 n_processes 61 based fixed bin(17,0) level 2 dcl 1-50 ref 247 ndev 000354 automatic fixed bin(17,0) dcl 113 set ref 370* 398* null builtin function dcl 128 ref 152 152 152 164 164 164 630 630 695 699 703 old_proc_core 724 based fixed bin(71,0) level 2 dcl 1-50 ref 263 old_proc_cpu 66 based fixed bin(71,0) level 2 dcl 1-50 ref 251 old_proc_io_ops 726 based fixed bin(71,0) level 2 dcl 1-50 ref 267 outer_module 112 based char(32) level 2 packed packed unaligned dcl 1-50 ref 574 output_seg 646 based char(168) level 2 packed packed unaligned dcl 1-50 ref 557 561 pit based structure level 1 dcl 1-50 pit_$ 000036 external static bit(36) dcl 1-47 set ref 156 pp 000104 automatic pointer dcl 88 set ref 150* 152 156* 182 186 190 202 206 210 214 218 219 225 229 233 247 251 255 259 263 267 279 291 300 309 313 317 324 328 332 336 346 355 359 363 367 371 379 383 387 391 395 399 413 425 437 441 453 465 465 479 484 487 491 503 512 525 525 539 541 554 557 559 561 574 586 590 594 598 603 608 612 617 629 630 643 654 657 657 664 666 666 667 667 674 676 676 693 698 698 735 746 746 757 758 767 768 proc_creation_time 64 based fixed bin(71,0) level 2 dcl 1-50 ref 259 process_type 1 based fixed bin(17,0) level 2 dcl 1-50 ref 300 346 425 465 539 554 746 757 project 42 based char(28) level 2 packed packed unaligned dcl 1-50 ref 186 206 ptr builtin function dcl 128 ref 657 666 667 676 698 request_id 374 based fixed bin(71,0) level 2 dcl 1-50 ref 735 restarted 722(08) based bit(1) level 3 packed packed unaligned dcl 1-50 ref 758 rs_number 373 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-50 set ref 629 630* 643 service_type 526 based fixed bin(17,0) level 2 dcl 1-50 ref 413 shift_limit 131 based float bin(27) array level 2 dcl 1-50 ref 603 standby 532 based fixed bin(17,0) level 2 dcl 1-50 ref 219 487 stby 265 based fixed bin(17,0) array level 3 dcl 4-10 ref 221 494 sub_err_ 000024 constant entry external dcl 88 ref 152 164 630 substr builtin function dcl 128 ref 711 sysdir 000000 constant char(64) initial packed unaligned dcl 88 set ref 162* system_info_$device_prices 000026 constant entry external dcl 88 ref 370 398 system_info_$rs_name 000030 constant entry external dcl 88 ref 629 term_type_name 514 based char(32) level 2 packed packed unaligned dcl 1-50 ref 355 383 truncate_absout 722(07) based bit(1) level 3 packed packed unaligned dcl 1-50 ref 746 tty 730 based char(32) level 2 packed packed unaligned dcl 1-50 ref 313 332 359 387 tty_answerback 527 based char(4) level 2 packed packed unaligned dcl 1-50 ref 324 379 tty_type 525 based fixed bin(17,0) level 2 dcl 1-50 ref 309 328 tvcs 000361 automatic varying char(512) dcl 115 set ref 525* 526 user_abs_attributes based structure level 1 dcl 3-25 user_attributes based structure level 1 dcl 2-21 user_weight 70 based fixed bin(17,0) level 2 dcl 1-50 ref 225 503 whoptr 000106 automatic pointer dcl 88 set ref 162* 164 168* 221 494 498 whotab based structure level 1 dcl 4-10 whotab_$ 000040 external static bit(36) dcl 142 set ref 168 whox 111 based fixed bin(17,0) level 2 dcl 1-50 ref 218 484 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 3-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 2-77 PIT_version_3 internal static fixed bin(17,0) initial dcl 1-143 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 2-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 2-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 2-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 2-50 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 4-96 pit_ptr automatic pointer dcl 1-48 NAMES DECLARED BY EXPLICIT CONTEXT. absentee_queue 002253 constant entry external dcl 457 absentee_request_id 004152 constant entry external dcl 729 absentee_restarted 004262 constant entry external dcl 750 absin 002635 constant entry external dcl 530 absout 002710 constant entry external dcl 545 absout_truncation 004211 constant entry external dcl 739 attributes 002541 constant entry external dcl 515 authorization_range 002516 constant entry external dcl 506 fillpp 004357 constant entry internal dcl 139 ref 177 197 242 274 286 298 344 408 420 432 448 460 474 511 520 533 548 569 581 624 638 649 683 732 742 753 766 homedir 000772 constant entry external dcl 271 limits 003060 constant entry external dcl 578 load_ctl_info 002320 constant entry external dcl 471 login_arg_count 003560 constant entry external dcl 646 login_arg_ptr 003731 constant entry external dcl 680 login_data 000257 constant entry external dcl 194 login_line 002211 constant entry external dcl 446 logout_data 002124 constant entry external dcl 429 outer_module 003016 constant entry external dcl 566 process_type 002065 constant entry external dcl 417 responder 001034 constant entry external dcl 283 ring_range 004335 constant entry external dcl 761 rs_name 003354 constant entry external dcl 621 rs_number 003520 constant entry external dcl 635 service_type 002026 constant entry external dcl 405 terminal_data 001371 constant entry external dcl 341 tty_data 001076 constant entry external dcl 295 usage_data 000567 constant entry external dcl 239 user_info_ 000130 constant entry external dcl 15 whoami 000137 constant entry external dcl 174 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5464 5526 5014 5474 Length 6142 5014 42 377 450 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME user_info_ 448 external procedure is an external procedure. fillpp 70 internal procedure enables or reverts conditions. on unit on line 145 146 on unit on unit on line 157 104 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME user_info_ 000100 arg_infop user_info_ 000102 arg_offset user_info_ 000104 pp user_info_ 000106 whoptr user_info_ 000110 i user_info_ 000111 ii user_info_ 000112 current_validation user_info_ 000113 ec user_info_ 000114 dvt user_info_ 000354 ndev user_info_ 000356 ap user_info_ 000360 al user_info_ 000361 tvcs user_info_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this return_mac enable_op shorten_stack ext_entry ext_entry_desc int_entry set_chars_eis index_before_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_ptr format_attributes_ get_pdir_ get_ring_ hcs_$initiate hcs_$level_get hcs_$level_set sub_err_ system_info_$device_prices system_info_$rs_name THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noarg pit_$ whotab_$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000127 174 000135 177 000144 179 000150 180 000167 182 000171 183 000177 184 000216 186 000220 187 000226 188 000245 190 000247 192 000255 194 000256 197 000264 199 000270 200 000307 202 000311 203 000317 204 000336 206 000340 207 000346 208 000365 210 000367 211 000375 212 000414 214 000416 215 000421 216 000440 218 000442 219 000445 221 000451 222 000455 223 000474 225 000476 226 000501 227 000520 229 000522 230 000525 231 000544 233 000546 235 000560 237 000565 239 000566 242 000574 244 000600 245 000617 247 000621 248 000624 249 000643 251 000645 252 000650 253 000667 255 000671 256 000674 257 000713 259 000715 260 000720 261 000737 263 000741 264 000744 265 000763 267 000765 269 000770 271 000771 274 000777 276 001003 277 001022 279 001024 281 001032 283 001033 286 001041 288 001045 289 001064 291 001066 293 001074 295 001075 298 001103 300 001107 302 001113 303 001132 305 001134 306 001141 307 001160 309 001162 310 001165 311 001204 313 001206 314 001214 315 001233 317 001235 318 001240 321 001241 322 001260 324 001262 325 001270 326 001307 328 001311 329 001314 330 001333 332 001335 333 001343 334 001362 336 001364 339 001367 341 001370 344 001376 346 001402 348 001406 349 001425 351 001427 352 001434 353 001453 355 001455 356 001463 357 001502 359 001504 360 001512 361 001531 363 001533 364 001536 365 001555 367 001557 370 001570 371 001603 373 001614 376 001615 377 001634 379 001636 380 001644 381 001663 383 001665 384 001673 385 001712 387 001714 388 001722 389 001741 391 001743 392 001746 393 001765 395 001767 398 002000 399 002013 403 002024 405 002025 408 002033 410 002037 411 002056 413 002060 415 002063 417 002064 420 002072 422 002076 423 002115 425 002117 427 002122 429 002123 432 002131 434 002135 435 002154 437 002156 438 002161 439 002200 441 002202 443 002207 446 002210 448 002216 450 002222 451 002241 453 002243 455 002251 457 002252 460 002260 462 002264 463 002303 465 002305 467 002314 469 002316 471 002317 474 002325 476 002331 477 002350 479 002352 480 002360 481 002377 484 002401 485 002404 487 002405 488 002407 489 002426 491 002430 492 002433 494 002434 495 002440 496 002457 498 002461 500 002466 501 002505 503 002507 504 002512 506 002513 511 002523 512 002527 513 002535 515 002536 520 002554 522 002560 523 002577 525 002601 526 002621 528 002633 530 002634 533 002642 535 002646 536 002665 539 002667 541 002701 543 002706 545 002707 548 002715 550 002721 551 002740 554 002742 557 002754 559 002760 560 003005 561 003007 564 003014 566 003015 569 003023 571 003027 572 003046 574 003050 576 003056 578 003057 581 003065 583 003071 584 003110 586 003112 587 003115 588 003134 590 003136 591 003141 592 003160 594 003162 595 003165 596 003204 598 003206 599 003211 600 003230 602 003232 603 003237 604 003243 605 003245 606 003264 608 003266 609 003271 610 003310 612 003312 613 003315 614 003334 616 003336 617 003343 618 003350 619 003352 621 003353 624 003361 626 003365 627 003404 629 003406 630 003436 633 003516 635 003517 638 003525 640 003531 641 003550 643 003552 644 003556 646 003557 649 003565 651 003571 652 003610 654 003612 657 003617 659 003623 660 003642 663 003644 664 003645 666 003650 667 003661 668 003673 670 003675 671 003714 674 003716 676 003723 677 003727 680 003730 683 003736 685 003742 686 003761 688 003763 689 003765 690 004004 693 004006 695 004011 696 004013 697 004015 698 004016 699 004021 701 004027 703 004031 704 004033 705 004035 707 004036 708 004040 709 004051 710 004054 711 004056 714 004070 715 004107 717 004111 719 004115 720 004120 721 004137 723 004141 725 004147 726 004150 729 004151 732 004157 734 004163 735 004202 737 004207 739 004210 742 004216 744 004222 745 004241 746 004243 747 004254 748 004260 750 004261 753 004267 755 004273 756 004312 757 004314 758 004325 759 004331 761 004332 766 004342 767 004346 768 004352 769 004355 139 004356 145 004364 148 004400 149 004410 150 004426 151 004507 152 004520 154 004576 156 004577 157 004603 160 004617 161 004627 162 004645 163 004717 164 004730 166 005006 168 005007 170 005013 ----------------------------------------------------------- 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