COMPILATION LISTING OF SEGMENT format_attributes_ 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.7 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 format_attributes_: proc (input_attribute_ptr, output_attribute_string); 14 15 /* Written October 1979 by T. Casey to merge the old format_attributes_ and lookup_attribute_ 16* subroutines and centralize the mapping between attribute names and bits in the attributes word. */ 17 18 19 /****^ HISTORY COMMENTS: 20* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1055): 22* Eliminate use of attribute_names.incl.pl1, in favor of a similar array 23* placed directly in user_attributes.incl.pl1. 24* END HISTORY COMMENTS */ 25 26 27 /* DECLARATIONS */ 28 29 /* Parameters */ 30 31 /* format_attributes_ parameters */ 32 33 dcl input_attribute_ptr ptr; /* ptr to input attributes word to be formatted */ 34 dcl output_attribute_string char (*) varying; /* output string to return names of attributes that are on */ 35 36 /* lookup_attribute_ parameters */ 37 38 dcl input_attribute_name char (*); /* name of single attribute to be looked up */ 39 dcl output_attribute_ptr ptr; /* ptr to output attributes word in which we're to 40* turn on the bit corresponding to input_attribute_name */ 41 dcl output_code fixed bin (35); /* error code, set if input_attribute_name is invalid */ 42 43 /* Automatic */ 44 45 dcl atp ptr; /* ptr to attributes word */ 46 dcl attr_word bit (36); /* place to copy the input attributes word */ 47 dcl i fixed bin; /* do loop index */ 48 dcl vstr char (300) varying; /* place to build output string for format_attributes_ */ 49 50 /* Builtin */ 51 52 dcl (addr, hbound, length, rtrim, substr) builtin; 53 54 /* Based structures */ 55 56 57 dcl b36 bit (36) aligned based (atp); /* alternate way to access attributes word */ 58 59 60 /* MAIN ENTRY POINT format_attributes_: proc (input_attribute_ptr, output_attribute_string); */ 61 62 attr_word = input_attribute_ptr -> b36; /* copy attributes word into temporary */ 63 atp = addr (attr_word); /* point our working pointer at the temporary */ 64 /* flip the secondary, primary, and edit_only bits, since 65* the names are no_secondary, no_primary, and no_edit_only */ 66 atp -> user_attributes.sb_ok = ^atp -> user_attributes.sb_ok; 67 atp -> user_attributes.pm_ok = ^atp -> user_attributes.pm_ok; 68 atp -> user_attributes.eo_ok = ^atp -> user_attributes.eo_ok; 69 atp -> user_attributes.vdim = ""b; /* don't print vdim because it's obsolete */ 70 vstr = ""; /* start with empty string */ 71 72 do i = 1 to hbound (USER_ATTRIBUTE_NAMES, 1); /* look at all the bits whose names we know */ 73 if substr (b36, i, 1) then do; /* if the bit is on */ 74 vstr = vstr || rtrim (USER_ATTRIBUTE_NAMES (i)); 75 /* add its name to the string, followed by comma-space */ 76 vstr = vstr || ", "; /* separate concatenation statements produce better code */ 77 end; 78 end; 79 80 i = length (vstr); 81 if i > 0 then do; /* if any of the bits were on */ 82 vstr = substr (vstr, 1, i - 2); /* chop off the trailing comma-space */ 83 vstr = vstr || ";"; /* and replace it with a semicolon */ 84 end; 85 else vstr = rtrim (USER_ATTRIBUTE_NAMES (0)); /* should be "none" */ 86 87 output_attribute_string = vstr; /* copy string into return argument */ 88 89 return; 90 91 lookup_attribute_: entry (input_attribute_name, output_attribute_ptr, output_code); 92 93 atp = output_attribute_ptr; /* copy ptr to attributes word */ 94 output_code = 0; /* assume there will be no error */ 95 96 if input_attribute_name = "" then return; /* avoid match on a null alternate name */ 97 98 do i = 0 to hbound (USER_ATTRIBUTE_NAMES, 1) /* search list of names */ 99 while (input_attribute_name ^= USER_ATTRIBUTE_NAMES (i) 100 /* until we find a match with a primary name */ 101 & input_attribute_name ^= ALT_USER_ATTRIBUTE_NAMES (i)); 102 /* or with an alternate name */ 103 end; 104 105 if i > hbound (USER_ATTRIBUTE_NAMES, 1) then output_code = 1; 106 /* tell caller if name was invalid */ 107 else if i > 0 then /* if name was other than "null" or "none" */ 108 substr (b36, i, 1) = "1"b; /* turn on the bit corresponding to that attribute */ 109 110 return; 111 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 */ 112 113 114 115 end format_attributes_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0940.2 format_attributes_.pl1 >special_ldd>install>MR12.2-1047>format_attributes_.pl1 112 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 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ALT_USER_ATTRIBUTE_NAMES 000000 constant char(20) initial array packed unaligned dcl 1-77 ref 98 USER_ATTRIBUTE_NAMES 000175 constant char(20) initial array packed unaligned dcl 1-50 ref 72 74 85 98 98 105 addr builtin function dcl 52 ref 63 atp 000100 automatic pointer dcl 45 set ref 63* 66 66 67 67 68 68 69 73 93* 107 attr_word 000102 automatic bit(36) packed unaligned dcl 46 set ref 62* 63 b36 based bit(36) dcl 57 set ref 62 73 107* eo_ok 0(16) based bit(1) level 2 packed packed unaligned dcl 1-21 set ref 68* 68 hbound builtin function dcl 52 ref 72 98 105 i 000103 automatic fixed bin(17,0) dcl 47 set ref 72* 73 74* 80* 81 82 98* 98 98* 105 107 107 input_attribute_name parameter char packed unaligned dcl 38 ref 91 96 98 98 input_attribute_ptr parameter pointer dcl 33 ref 13 62 length builtin function dcl 52 ref 80 output_attribute_ptr parameter pointer dcl 39 ref 91 93 output_attribute_string parameter varying char dcl 34 set ref 13 87* output_code parameter fixed bin(35,0) dcl 41 set ref 91 94* 105* pm_ok 0(15) based bit(1) level 2 packed packed unaligned dcl 1-21 set ref 67* 67 rtrim builtin function dcl 52 ref 74 85 sb_ok 0(14) based bit(1) level 2 packed packed unaligned dcl 1-21 set ref 66* 66 substr builtin function dcl 52 set ref 73 82 107* user_attributes based structure level 1 dcl 1-21 vdim 0(18) based bit(1) level 2 packed packed unaligned dcl 1-21 set ref 69* vstr 000104 automatic varying char(300) dcl 48 set ref 70* 74* 74 76* 76 80 82* 82 83* 83 85* 87 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 2-38 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_abs_attributes based structure level 1 dcl 2-25 NAMES DECLARED BY EXPLICIT CONTEXT. format_attributes_ 000402 constant entry external dcl 13 lookup_attribute_ 000615 constant entry external dcl 91 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 746 756 710 756 Length 1172 710 10 200 36 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME format_attributes_ 148 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME format_attributes_ 000100 atp format_attributes_ 000102 attr_word format_attributes_ 000103 i format_attributes_ 000104 vstr format_attributes_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return_mac ext_entry_desc NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000376 62 000415 63 000421 66 000423 67 000433 68 000443 69 000453 70 000455 72 000456 73 000463 74 000470 76 000522 78 000534 80 000536 81 000540 82 000541 83 000546 84 000555 85 000556 87 000576 89 000610 91 000611 93 000630 94 000634 96 000635 98 000643 103 000665 105 000667 107 000676 110 000704 ----------------------------------------------------------- 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