COMPILATION LISTING OF SEGMENT linus_list_scope Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/29/86 0952.6 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 /* 8* This is the main level procedure called by ssu_ to implement the 9* linus list_scope request. It lists the current scope settings 10* for permanent tables. Usage: "list_scope {-control_arg}", where 11* -control_arg is -table (-tb) TABLE_NAME_1 ... TABLE_NAME_N. If this 12* isn't supplied, all scope settings are displayed. */ 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-01-13,Dupuis), approve(86-01-13,MCR7188), audit(86-07-23,GWMay), 17* install(86-07-29,MR12.0-1106): 18* Written by Al Dupuis in December 1984, as part of the rewrite of all 19* linus scope modules. 20* 2) change(86-01-13,Dupuis), approve(86-05-23,MCR7404), audit(86-07-23,GWMay), 21* install(86-07-29,MR12.0-1106): 22* Changed to also work as an active request. 23* END HISTORY COMMENTS */ 24 25 /* format: off */ 26 27 linus_list_scope: proc ( 28 29 sci_ptr_parm, /* input: ptr to the subsystem control info structure */ 30 lcb_ptr_parm /* input: ptr to the linus control block info structure */ 31 ); 32 33 dcl sci_ptr_parm ptr parm; 34 dcl lcb_ptr_parm ptr parm; 35 36 call initialize; 37 on cleanup call terminate; 38 call process_args; 39 if no_scope_is_defined 40 then if active_request_flag 41 then return_value = "false"; 42 else call ssu_$print_message (sci_ptr, linus_error_$no_scope); 43 else call list_scope; 44 call terminate; 45 46 return; 47 48 initialize: proc; 49 50 sci_ptr = sci_ptr_parm; 51 lcb_ptr = lcb_ptr_parm; 52 53 call ssu_$return_arg (sci_ptr, number_of_args_supplied, 54 active_request_flag, return_value_ptr, return_value_length); 55 if active_request_flag 56 then return_value = ""; 57 58 if lcb.db_index = 0 59 then call ssu_$abort_line (sci_ptr, linus_error_$no_db); 60 61 work_area_ptr = lcb.general_work_area_ptr; 62 scope_ptr = null; 63 scope_array_ptr = null; 64 65 return; 66 67 end initialize; 68 69 list_scope: proc; 70 71 dcl ls_buffer char (64); 72 dcl ls_buffer_as_an_array (64) char (1) based (ls_buffer_as_an_array_ptr); 73 dcl ls_buffer_as_an_array_ptr ptr; 74 dcl ls_index fixed bin; 75 dcl ls_loop fixed bin; 76 dcl ls_permits char (10) defined (ls_buffer_as_an_array) position (36); 77 dcl ls_prevents char (4) defined (ls_buffer_as_an_array) position (46); 78 dcl ls_table_name char (35) defined (ls_buffer); 79 dcl ls_temporary_table_message char (29) defined (ls_buffer_as_an_array) position (36); 80 81 if ^active_request_flag 82 then do; 83 ls_buffer_as_an_array_ptr = addr (ls_buffer); 84 ls_buffer = ""; 85 call ioa_ ("^/Table^28xPermitted^xPrevented^/"); 86 end; 87 88 if all_scope_has_been_requested 89 then do ls_loop = 1 to scope_info.nfiles; 90 if scope_info.scope.flags.touched (ls_loop) 91 then call emit_value (ls_loop); 92 end; 93 else do ls_loop = 1 to scope_array.number_of_relations; 94 ls_index = scope_array.relations.indexes (ls_loop); 95 if ^active_request_flag 96 then ls_buffer = ""; 97 if ^scope_array.relations.temporary_table_name (ls_loop) 98 then call emit_value (ls_index); 99 else do; 100 if active_request_flag 101 then return_value = return_value || "temporary_table_with_no_scope" || " r " || "rsdm "; 102 else do; 103 ls_table_name = temporary_table_names (ls_index); 104 ls_temporary_table_message = "Temporary table with no scope"; 105 call ioa_ ("^a", ls_buffer); 106 end; 107 end; 108 end; 109 110 return; 111 112 emit_value: proc ( 113 114 ev_index_parm /* input: index of relation we're working on */ 115 ); 116 dcl ev_index_parm fixed bin parm; 117 118 if active_request_flag 119 then return_value = return_value 120 || rtrim (scope_info.scope.sm_name (ev_index_parm)) || " " 121 || get_permits (addr (scope_info.scope.flags.permits (ev_index_parm))) || " " 122 || get_permits (addr (scope_info.scope.flags.prevents (ev_index_parm))) || " "; 123 else do; 124 ls_table_name = scope_info.scope.sm_name (ev_index_parm); 125 ls_permits = get_permits (addr (scope_info.scope.flags.permits (ev_index_parm))); 126 ls_prevents = get_permits (addr (scope_info.scope.flags.prevents (ev_index_parm))); 127 call ioa_ ("^a", ls_buffer); 128 end; 129 130 return; 131 132 get_permits: proc (gp_permissions_ptr_parm) returns (char (4) varying); 133 134 dcl gp_permits char (4) varying; 135 dcl gp_permissions bit (4) unaligned based (gp_permissions_ptr_parm); 136 dcl gp_permissions_ptr_parm ptr parm; 137 138 gp_permits = ""; 139 if substr (gp_permissions, 1, 1) 140 then gp_permits = "r"; 141 if substr (gp_permissions, 3, 1) 142 then gp_permits = gp_permits || "d"; 143 if substr (gp_permissions, 4, 1) 144 then gp_permits = gp_permits || "m"; 145 if substr (gp_permissions, 2, 1) 146 then gp_permits = gp_permits || "s"; 147 if gp_permits = "" 148 then gp_permits = "n"; 149 150 return (gp_permits); 151 152 end get_permits; 153 154 end emit_value; 155 156 end list_scope; 157 158 process_args: proc; 159 160 dcl pa_code fixed bin (35); 161 dcl pa_current_arg_number fixed bin; 162 dcl pa_loop fixed bin; 163 dcl pa_not_found bit (1) aligned; 164 dcl pa_scope_index fixed bin; 165 166 if number_of_args_supplied = 1 167 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, USAGE_MESSAGE); 168 all_scope_has_been_requested = (number_of_args_supplied = 0); 169 call dsl_$get_scope_info (lcb.db_index, work_area_ptr, scope_ptr, pa_code); 170 if pa_code ^= 0 171 then call ssu_$abort_line (sci_ptr, pa_code); 172 no_scope_is_defined = (scope_info.active_scopes = 0); 173 if no_scope_is_defined | all_scope_has_been_requested 174 then return; 175 176 call ssu_$arg_ptr (sci_ptr, 1, arg_ptr, arg_length); 177 if arg ^= "-table" & arg ^= "-tb" 178 then call ssu_$abort_line (sci_ptr, error_table_$badopt, 179 "^/Expecting the ""-table"" or ""-tb"" control argument, not ^a." 180 || USAGE_MESSAGE, arg); 181 182 temporary_table_names_ptr = lcb.ttn_ptr; 183 scope_array_init_number_of_relations = number_of_args_supplied - 1; 184 allocate scope_array in (work_area) set (scope_array_ptr); 185 unspec (scope_array.relations) = OFF; 186 pa_scope_index = 1; 187 188 do pa_current_arg_number = 2 to number_of_args_supplied; 189 call ssu_$arg_ptr (sci_ptr, pa_current_arg_number, arg_ptr, arg_length); 190 if arg = " " 191 then call ssu_$abort_line (sci_ptr, linus_error_$inv_table, 192 "^/A table name of only blanks is invalid."); 193 pa_not_found = ON; 194 do pa_loop = 1 to scope_info.nfiles while (pa_not_found); 195 if scope_info.sm_name (pa_loop) = arg 196 then do; 197 pa_not_found = OFF; 198 scope_array.relations.indexes (pa_scope_index) = pa_loop; 199 end; 200 else; 201 end; 202 if pa_not_found & temporary_table_names_ptr ^= null 203 then do pa_loop = 1 to mrds_data_$max_temp_rels while (pa_not_found); 204 if temporary_table_names (pa_loop) = arg 205 then do; 206 pa_not_found = OFF; 207 scope_array.relations.temporary_table_name (pa_scope_index) = ON; 208 scope_array.relations.indexes (pa_scope_index) = pa_loop; 209 end; 210 else; 211 end; 212 if pa_not_found 213 then call ssu_$abort_line (sci_ptr, linus_error_$undef_tab, "^x^a", arg); 214 pa_scope_index = pa_scope_index + 1; 215 end; 216 217 return; 218 219 end process_args; 220 221 terminate: proc; 222 223 if scope_ptr ^= null 224 then free scope_info; 225 if scope_array_ptr ^= null 226 then free scope_array; 227 228 return; 229 230 end terminate; 231 232 233 dcl OFF bit (1) aligned internal static options (constant) init ("0"b); 234 dcl ON bit (1) aligned internal static options (constant) init ("1"b); 235 dcl USAGE_MESSAGE char (49) internal static options (constant) init ( 236 "^/Usage: list_scope {-table TABLE_1 ... TABLE_N}"); 237 238 dcl active_request_flag bit (1) aligned; 239 dcl addr builtin; 240 dcl all_scope_has_been_requested bit (1) aligned; 241 dcl arg char (arg_length) based (arg_ptr); 242 dcl arg_length fixed bin (21); 243 dcl arg_ptr ptr; 244 245 dcl cleanup condition; 246 247 dcl dsl_$get_scope_info entry (fixed bin (35), ptr, ptr, fixed bin (35)); 248 249 dcl error_table_$badopt fixed bin(35) ext static; 250 dcl error_table_$inconsistent fixed bin(35) ext static; 251 252 dcl fixed builtin; 253 254 dcl ioa_ entry() options(variable); 255 256 dcl linus_error_$inv_table fixed bin(35) ext static; 257 dcl linus_error_$no_db fixed bin(35) ext static; 258 dcl linus_error_$no_scope fixed bin(35) ext static; 259 dcl linus_error_$undef_tab fixed bin(35) ext static; 260 261 dcl mrds_data_$max_temp_rels fixed bin (35) external; 262 263 dcl no_scope_is_defined bit (1) aligned; 264 dcl null builtin; 265 dcl number_of_args_supplied fixed bin; 266 267 dcl rel builtin; 268 dcl return_value char (return_value_length) varying based (return_value_ptr); 269 dcl return_value_length fixed bin (21); 270 dcl return_value_ptr ptr; 271 dcl rtrim builtin; 272 273 dcl sci_ptr ptr; 274 dcl 1 scope_array aligned based (scope_array_ptr), 275 2 number_of_relations fixed bin, 276 2 relations (scope_array_init_number_of_relations refer ( 277 scope_array.number_of_relations)), 278 3 temporary_table_name bit (1), 279 3 indexes fixed bin; 280 dcl scope_array_init_number_of_relations fixed bin; 281 dcl scope_array_ptr ptr; 282 dcl ssu_$abort_line entry() options(variable); 283 dcl ssu_$return_arg entry (ptr, fixed bin, bit(1) aligned, ptr, fixed bin(21)); 284 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin(21)); 285 dcl ssu_$print_message entry() options(variable); 286 dcl substr builtin; 287 dcl sys_info$max_seg_size fixed bin(35) ext static; 288 289 dcl temporary_table_names (mrds_data_$max_temp_rels) char (32) based (temporary_table_names_ptr); 290 dcl temporary_table_names_ptr ptr; 291 292 dcl unspec builtin; 293 294 dcl work_area area (sys_info$max_seg_size) based (work_area_ptr); 295 dcl work_area_ptr ptr; 296 1 1 /* BEGIN INCLUDE FILE linus_lcb.incl.pl1 -- jaw 8/30/77 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-04-23,Dupuis), approve(86-05-23,MCR7188), audit(86-07-23,GWMay), 1 7* install(86-07-29,MR12.0-1106): 1 8* Added general_work_area_ptr and renamed sfr_ptr to 1 9* force_retrieve_scope_ptr. 1 10* END HISTORY COMMENTS */ 1 11 1 12 1 13 /* HISTORY: 1 14* 1 15* 78-09-29 J. C. C. Jagernauth: Modified for MR7.0. 1 16* 1 17* 81-05-11 Rickie E. Brinegar: added security bit and andministrator bit as 1 18* a part of the attribute level control work. 1 19* 1 20* 81-06-17 Rickie E. Brinegar: deleted the sd_ptr as a part of removing the 1 21* scope_data structure from LINUS. LINUS now depends totally on MRDS for 1 22* scope information. 1 23* 1 24* 81-11-11 Rickie E. Brinegar: added the timing bit and three fields for 1 25* retaining various vcpu times to be collected when in timing mode. The 1 26* times to be collected are: LINUS parsing time, LINUS processing time, and 1 27* MRDS processing time. 1 28* 1 29* 82-01-15 DJ Schimke: Added the build_increment and build_start fields as 1 30* part of the line numbering implementation. This allows for possible later 1 31* LINUS control of the build defaults. 1 32* 1 33* 82-03-01 Paul W. Benjamin: Removed linus_prompt_chars_ptr, as that 1 34* information is now retained by ssu_. Removed parse_timer as no longer 1 35* meaningful. Added linus_version. Added iteration bit. Added 6 entry 1 36* variables for ssu_ replaceable procedures. Added actual_input_iocbp. 1 37* 1 38* 82-06-23 Al Dupuis: Added subsystem_control_info_ptr, 1 39* subsystem_invocation_level, and selection_expression_identifier. 1 40* 1 41* 82-08-26 DJ Schimke: Added report_control_info_ptr, and 1 42* table_control_info_ptr. 1 43* 1 44* 82-10-19 DJ Schimke: Added ssu_abort_line. 1 45* 1 46* 83-06-06 Bert Moberg: Added print_search_order (pso) and no_optimize (no_ot) 1 47* 1 48* 83-04-07 DJ Schimke: Added temp_seg_info_ptr. 1 49* 1 50* 83-08-26 Al Dupuis: Added query_temp_segment_ptr. 1 51**/ 1 52 1 53 dcl 1 lcb aligned based (lcb_ptr), /* LINUS control block */ 1 54 2 db_index fixed bin (35), /* index of open data base, or 0 */ 1 55 2 rb_len fixed bin (21), /* length of request buffer */ 1 56 2 lila_count fixed bin (35), /* number of LILA text lines */ 1 57 2 lila_chars fixed bin (35), /* number of LILA source test chars */ 1 58 2 trans_id fixed bin (35), /* used by checkpoint and rollback facilities (MR7.0) */ 1 59 2 lila_fn char (32) unal, /* entry name of lila data file */ 1 60 2 prompt_flag bit (1) unal, /* on if in prompt mode */ 1 61 2 test_flag bit (1) unal, /* on if in test mode */ 1 62 2 new_version bit (1) unal init (1), /* on for new version data base (MR7.0) */ 1 63 2 secured_db bit (1) unal, /* on if the db is in a secure state */ 1 64 2 administrator bit (1) unal, /* on if the user is a db administrator */ 1 65 2 timing_mode bit (1) unal, /* on if timing is to be done */ 1 66 2 iteration bit (1) unal, /* interpret parens as iteration sets */ 1 67 2 pso_flag bit (1) unal, /* add print_search_order to select */ 1 68 2 no_ot_flag bit (1) unal, /* add no_optimize to select */ 1 69 2 reserved bit (27) unal, 1 70 2 liocb_ptr ptr, /* iocb ptr for lila file */ 1 71 2 rb_ptr ptr, /* ptr to request buffer */ 1 72 2 is_ptr ptr, /* iocb ptr for currentinput stream switch */ 1 73 2 cal_ptr ptr, /* ptr to current arg list for invoke (or null) */ 1 74 2 ttn_ptr ptr, /* pointer to table info structure */ 1 75 2 force_retrieve_scope_info_ptr ptr, /* structure pointer to force retrieve scope operation */ 1 76 2 lv_ptr ptr, /* pointer linus variables */ 1 77 2 si_ptr ptr, /* pointer to select_info structure */ 1 78 2 setfi_ptr ptr, /* pointer to set function information */ 1 79 2 sclfi_ptr ptr, /* pointer to user declared scalar fun. names */ 1 80 2 ivs_ptr ptr, /* pointer to stack of invoke iocb pointers */ 1 81 2 lit_ptr ptr, /* pointer to literal pool */ 1 82 2 lvv_ptr ptr, /* pointer to linus variable alloc. pool */ 1 83 2 rd_ptr ptr, /* point to readied files mode information (MR7.0) */ 1 84 2 rt_ptr ptr, /* point to table of relation names and their readied modes 1 85* (MR7.0) */ 1 86 2 actual_input_iocbp ptr, /* ptr to input while in macros */ 1 87 2 lila_promp_chars_ptr ptr, /* pointer to the prompt characters for lila */ 1 88 2 linus_area_ptr ptr, /* LINUS temporary segment pointer */ 1 89 2 lila_area_ptr ptr, /* LILA temporary segment pointer */ 1 90 2 i_o_area_ptr ptr, /* temporary segment pointer used by write, print, create_list */ 1 91 2 rel_array_ptr ptr, /* ptr to array of names rslt info structure 1 92* for current lila expression */ 1 93 2 unused_timer float bin (63), /* future expansion */ 1 94 2 request_time float bin (63), /* How much request time was spent 1 95* in LINUS. (-1 = user has just enabled 1 96* timing, do not report) */ 1 97 2 mrds_time float bin (63), /* How much time was spent in MRDS */ 1 98 2 build_increment fixed bin, /* default increment for build mode */ 1 99 2 build_start fixed bin, /* default start count for build mode */ 1 100 2 linus_version char (4), /* current version of LINUS */ 1 101 2 subsystem_control_info_ptr ptr, /* the same ptr passed by ssu_ to each request procedure */ 1 102 2 subsystem_invocation_level fixed bin, /* identifies this invocation of LINUS */ 1 103 2 selection_expression_identifier fixed bin, /* identifies the current processed selection expression */ 1 104 2 report_control_info_ptr ptr, /* pointer to linus_report_control_info structure */ 1 105 2 table_control_info_ptr ptr, /* pointer to linus_table control structure */ 1 106 2 temp_seg_info_ptr ptr, /* pointer to linus_temp_seg_mgr control structure */ 1 107 2 query_temp_segment_ptr ptr, /* points to temp seg used for manipulating query */ 1 108 2 general_work_area_ptr ptr, /* a freeing area for general use */ 1 109 2 word_pad (6) bit (36) unal, 1 110 /* procedures that will be optionally */ 1 111 /* replaced by the user. Saved so they */ 1 112 /* can be reinstated if desired. */ 1 113 2 ssu_abort_line entry options (variable), 1 114 2 ssu_post_request_line variable entry (ptr), 1 115 2 ssu_pre_request_line variable entry (ptr), 1 116 1 117 2 curr_lit_offset fixed bin (35), /* index of first free bit in lit. pool */ 1 118 2 curr_lv_val_offset fixed bin (35), /* index of first free bit lv. val. pool */ 1 119 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (lcb.static_area))) + 1); 1 120 1 121 dcl lcb_ptr ptr; 1 122 1 123 /* END INCLUDE FILE linus_lcb.incl.pl1 */ 297 298 2 1 /* BEGIN mdbm_scope_info.incl.pl1 -- odf 8/8/78 */ 2 2 2 3 /* WARNING 2 4* If the scope_info or scope_flags structure is changed then the 2 5* mrds_data_ item saved_res_version MUST be incremented to invalidate 2 6* all existing saved resultants 2 7**/ 2 8 2 9 /* Modified by Jim Gray - - 80-11-17, to add back store/delete/modify permissions */ 2 10 2 11 /* 80-12-10 Jim Gray : change name of store to append_tuple, delete to delete_tuple, 2 12* modify to modify_attr, retrieve to read_attr, remvoe update, put level 4 2 13* qualifiers for permit/prevent modes and to put pads in standard format */ 2 14 2 15 /* 80-12-11 Jim Gray : added submodel version of file/rel name for convenience */ 2 16 2 17 /* 80-12-22 Jim Gray : added like referenced structure so linus_scope_data.incl 2 18* could make use of it for compatibility. */ 2 19 2 20 /* 81-1-11 Jim Gray : added touched bit to scope_flags, so that 2 21* the fact that null scope has been set can be displayed */ 2 22 2 23 /* 85-04-14 Thanh Nguyen: Made scope_flags to be aligned so we could access the 2 24* prevent flags from any pointer which directly pointed to scope_flags itself 2 25* (i.e rm_rel_info.scope_flags_ptr). */ 2 26 2 27 /* this structure is to be allocated in the mrds_dbcb.incl.pl1 static area, 2 28* and is used to maintain the scope mechanism for file access. 2 29* It contains the scope permit/prevent operations that this user 2 30* has set in his view for this opening instance. */ 2 31 2 32 dcl 1 scope_info aligned based (scope_ptr), /* array of scope tuples for this user */ 2 33 2 mbz1 bit (144), /* Reserved for future use */ 2 34 2 nfiles fixed bin, /* Number of scope tuples in user's scope */ 2 35 2 active_scopes fixed bin, /* number of scopes currently active for a given user */ 2 36 2 scope (max_file_init refer (scope_info.nfiles)), /* defines user's scope of access to files */ 2 37 3 name char (30) aligned, /* filename */ 2 38 3 sm_name char (32), /* name of file(rel) in submodel */ 2 39 3 flags like scope_flags ; 2 40 2 41 2 42 declare 1 scope_flags aligned based, /* common layout of scope flag bits */ 2 43 2 permits, /* modes to permit this user */ 2 44 3 read_attr bit (1) unal, /* read_attr access to this file in scope */ 2 45 3 append_tuple bit (1) unal, /* append_tuple concnrrency permission */ 2 46 3 delete_tuple bit (1) unal, /* delete_tuple concurrency permission on rel */ 2 47 3 modify_attr bit (1) unal, /* modify_attr concurrency permission */ 2 48 3 mbz2 bit (10) unal, /* for expansion of permit ops */ 2 49 2 prevents, /* modes to be denyed to other users */ 2 50 3 read_attr bit (1) unal, /* on if user has prevent on read_attr for this file */ 2 51 3 append_tuple bit (1) unal, /* prevent of append_tuple concurrency */ 2 52 3 delete_tuple bit (1) unal, /* prevent of delete_tuple concurrency */ 2 53 3 modify_attr bit (1) unal, /* prevent of modify_attr concurrency */ 2 54 3 mbz3 bit (10) unal, /* for future prevent concurrency modes */ 2 55 2 touched bit (1) unal, /* on => scope set for this relation */ 2 56 2 mbz4 bit (7) unal ; /* for future flags */ 2 57 2 58 dcl max_file_init fixed bin; /* nbr. of files in data base */ 2 59 dcl scope_ptr ptr init (null ()); /* points to scope_info array */ 2 60 dcl scope_rdy bit (6) unal init ("000011"b) int static options (constant); /* scope file ready modes (5 or 6) */ 2 61 dcl scope_rdy_array (6) bit (1) unal based; /* array format of scope_rdy string */ 2 62 2 63 /* END mdbm_scope_info.incl.pl1 */ 299 300 301 end linus_list_scope; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/29/86 0937.1 linus_list_scope.pl1 >special_ldd>install>MR12.0-1106>linus_list_scope.pl1 297 1 07/29/86 0937.8 linus_lcb.incl.pl1 >special_ldd>install>MR12.0-1106>linus_lcb.incl.pl1 299 2 04/18/85 1628.1 mdbm_scope_info.incl.pl1 >ldd>include>mdbm_scope_info.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. OFF constant bit(1) initial dcl 233 ref 185 197 206 ON constant bit(1) initial dcl 234 ref 193 207 USAGE_MESSAGE 000000 constant char(49) initial unaligned dcl 235 set ref 166* 177 active_request_flag 000100 automatic bit(1) dcl 238 set ref 39 53* 55 81 95 100 118 active_scopes 5 based fixed bin(17,0) level 2 dcl 2-32 ref 172 addr builtin function dcl 239 ref 83 118 118 118 118 125 125 126 126 all_scope_has_been_requested 000101 automatic bit(1) dcl 240 set ref 88 168* 173 arg based char unaligned dcl 241 set ref 177 177 177* 190 195 204 212* arg_length 000102 automatic fixed bin(21,0) dcl 242 set ref 176* 177 177 177 177 189* 190 195 204 212 212 arg_ptr 000104 automatic pointer dcl 243 set ref 176* 177 177 177 189* 190 195 204 212 cleanup 000106 stack reference condition dcl 245 ref 37 db_index based fixed bin(35,0) level 2 dcl 1-53 set ref 58 169* dsl_$get_scope_info 000010 constant entry external dcl 247 ref 169 error_table_$badopt 000012 external static fixed bin(35,0) dcl 249 set ref 177* error_table_$inconsistent 000014 external static fixed bin(35,0) dcl 250 set ref 166* ev_index_parm parameter fixed bin(17,0) dcl 116 ref 112 118 118 118 118 118 124 125 125 126 126 flags 26 based structure array level 3 dcl 2-32 general_work_area_ptr 116 based pointer level 2 dcl 1-53 ref 61 gp_permissions based bit(4) unaligned dcl 135 ref 139 141 143 145 gp_permissions_ptr_parm parameter pointer dcl 136 ref 132 139 141 143 145 gp_permits 000216 automatic varying char(4) dcl 134 set ref 138* 139* 141* 141 143* 143 145* 145 147 147* 150 indexes 2 based fixed bin(17,0) array level 3 dcl 274 set ref 94 198* 208* ioa_ 000016 constant entry external dcl 254 ref 85 105 127 lcb based structure level 1 dcl 1-53 lcb_ptr 000134 automatic pointer dcl 1-121 set ref 51* 58 61 169 182 lcb_ptr_parm parameter pointer dcl 34 ref 27 51 linus_error_$inv_table 000020 external static fixed bin(35,0) dcl 256 set ref 190* linus_error_$no_db 000022 external static fixed bin(35,0) dcl 257 set ref 58* linus_error_$no_scope 000024 external static fixed bin(35,0) dcl 258 set ref 42* linus_error_$undef_tab 000026 external static fixed bin(35,0) dcl 259 set ref 212* ls_buffer 000154 automatic char(64) unaligned dcl 71 set ref 83 84* 95* 103* 103 105* 124* 124 127* ls_buffer_as_an_array based char(1) array unaligned dcl 72 set ref 104* 104 125* 125 126* 126 ls_buffer_as_an_array_ptr 000174 automatic pointer dcl 73 set ref 83* 104 125 126 ls_index 000176 automatic fixed bin(17,0) dcl 74 set ref 94* 97* 103 ls_loop 000177 automatic fixed bin(17,0) dcl 75 set ref 88* 90 90* 93* 94 97* ls_permits defined char(10) unaligned dcl 76 set ref 125* ls_prevents defined char(4) unaligned dcl 77 set ref 126* ls_table_name defined char(35) unaligned dcl 78 set ref 103* 124* ls_temporary_table_message defined char(29) unaligned dcl 79 set ref 104* mrds_data_$max_temp_rels 000030 external static fixed bin(35,0) dcl 261 ref 202 nfiles 4 based fixed bin(17,0) level 2 dcl 2-32 ref 88 194 223 no_scope_is_defined 000114 automatic bit(1) dcl 263 set ref 39 172* 173 null builtin function dcl 264 ref 2-59 62 63 202 223 225 number_of_args_supplied 000115 automatic fixed bin(17,0) dcl 265 set ref 53* 166 168 183 188 number_of_relations based fixed bin(17,0) level 2 dcl 274 set ref 93 184* 185 225 pa_code 000226 automatic fixed bin(35,0) dcl 160 set ref 169* 170 170* pa_current_arg_number 000227 automatic fixed bin(17,0) dcl 161 set ref 188* 189* pa_loop 000230 automatic fixed bin(17,0) dcl 162 set ref 194* 195 198* 202* 204 208* pa_not_found 000231 automatic bit(1) dcl 163 set ref 193* 194 197* 202 202 206* 212 pa_scope_index 000232 automatic fixed bin(17,0) dcl 164 set ref 186* 198 207 208 214* 214 permits 26 based structure array level 4 dcl 2-32 set ref 118 118 125 125 prevents 27 based structure array level 4 dcl 2-32 set ref 118 118 126 126 relations 1 based structure array level 2 dcl 274 set ref 185* return_value based varying char dcl 268 set ref 39* 55* 100* 100 118* 118 return_value_length 000116 automatic fixed bin(21,0) dcl 269 set ref 39 53* 55 100 118 return_value_ptr 000120 automatic pointer dcl 270 set ref 39 53* 55 100 100 118 118 rtrim builtin function dcl 271 ref 118 sci_ptr 000122 automatic pointer dcl 273 set ref 42* 50* 53* 58* 166* 170* 176* 177* 189* 190* 212* sci_ptr_parm parameter pointer dcl 33 ref 27 50 scope 6 based structure array level 2 dcl 2-32 scope_array based structure level 1 dcl 274 set ref 184 225 scope_array_init_number_of_relations 000124 automatic fixed bin(17,0) dcl 280 set ref 183* 184 184 scope_array_ptr 000126 automatic pointer dcl 281 set ref 63* 93 94 97 184* 185 198 207 208 225 225 scope_flags based structure level 1 dcl 2-42 scope_info based structure level 1 dcl 2-32 set ref 223 scope_ptr 000136 automatic pointer initial dcl 2-59 set ref 2-59* 62* 88 90 118 118 118 118 118 124 125 125 126 126 169* 172 194 195 223 223 sm_name 16 based char(32) array level 3 dcl 2-32 ref 118 124 195 ssu_$abort_line 000032 constant entry external dcl 282 ref 58 166 170 177 190 212 ssu_$arg_ptr 000036 constant entry external dcl 284 ref 176 189 ssu_$print_message 000040 constant entry external dcl 285 ref 42 ssu_$return_arg 000034 constant entry external dcl 283 ref 53 substr builtin function dcl 286 ref 139 141 143 145 temporary_table_name 1 based bit(1) array level 3 dcl 274 set ref 97 207* temporary_table_names based char(32) array unaligned dcl 289 ref 103 204 temporary_table_names_ptr 000130 automatic pointer dcl 290 set ref 103 182* 202 204 touched 30 based bit(1) array level 4 packed unaligned dcl 2-32 ref 90 ttn_ptr 26 based pointer level 2 dcl 1-53 ref 182 unspec builtin function dcl 292 set ref 185* work_area based area dcl 294 ref 184 work_area_ptr 000132 automatic pointer dcl 295 set ref 61* 169* 184 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. fixed builtin function dcl 252 max_file_init automatic fixed bin(17,0) dcl 2-58 rel builtin function dcl 267 scope_rdy internal static bit(6) initial unaligned dcl 2-60 scope_rdy_array based bit(1) array unaligned dcl 2-61 sys_info$max_seg_size external static fixed bin(35,0) dcl 287 NAMES DECLARED BY EXPLICIT CONTEXT. emit_value 000523 constant entry internal dcl 112 ref 90 97 get_permits 000756 constant entry internal dcl 132 ref 118 118 125 126 initialize 000233 constant entry internal dcl 48 ref 36 linus_list_scope 000135 constant entry external dcl 27 list_scope 000314 constant entry internal dcl 69 ref 43 process_args 001054 constant entry internal dcl 158 ref 38 terminate 001512 constant entry internal dcl 221 ref 37 44 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2012 2054 1612 2022 Length 2316 1612 42 225 177 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_list_scope 290 external procedure is an external procedure. on unit on line 37 64 on unit initialize internal procedure shares stack frame of external procedure linus_list_scope. list_scope internal procedure shares stack frame of external procedure linus_list_scope. emit_value internal procedure shares stack frame of external procedure linus_list_scope. get_permits internal procedure shares stack frame of external procedure linus_list_scope. process_args internal procedure shares stack frame of external procedure linus_list_scope. terminate 64 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_list_scope 000100 active_request_flag linus_list_scope 000101 all_scope_has_been_requested linus_list_scope 000102 arg_length linus_list_scope 000104 arg_ptr linus_list_scope 000114 no_scope_is_defined linus_list_scope 000115 number_of_args_supplied linus_list_scope 000116 return_value_length linus_list_scope 000120 return_value_ptr linus_list_scope 000122 sci_ptr linus_list_scope 000124 scope_array_init_number_of_relations linus_list_scope 000126 scope_array_ptr linus_list_scope 000130 temporary_table_names_ptr linus_list_scope 000132 work_area_ptr linus_list_scope 000134 lcb_ptr linus_list_scope 000136 scope_ptr linus_list_scope 000154 ls_buffer list_scope 000174 ls_buffer_as_an_array_ptr list_scope 000176 ls_index list_scope 000177 ls_loop list_scope 000216 gp_permits get_permits 000226 pa_code process_args 000227 pa_current_arg_number process_args 000230 pa_loop process_args 000231 pa_not_found process_args 000232 pa_scope_index process_args THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry int_entry alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. dsl_$get_scope_info ioa_ ssu_$abort_line ssu_$arg_ptr ssu_$print_message ssu_$return_arg THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent linus_error_$inv_table linus_error_$no_db linus_error_$no_scope linus_error_$undef_tab mrds_data_$max_temp_rels LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000131 2 59 000142 36 000144 37 000145 38 000167 39 000170 42 000207 43 000225 44 000226 46 000232 48 000233 50 000234 51 000240 53 000243 55 000262 58 000266 61 000305 62 000310 63 000312 65 000313 69 000314 81 000315 83 000320 84 000322 85 000325 88 000341 90 000353 92 000362 93 000365 94 000375 95 000401 97 000407 100 000416 102 000466 103 000467 104 000475 105 000501 108 000520 110 000522 112 000523 118 000525 123 000677 124 000700 125 000707 126 000721 127 000736 130 000755 132 000756 138 000760 139 000761 141 000773 143 001006 145 001021 147 001034 150 001045 158 001054 166 001055 168 001101 169 001104 170 001121 172 001140 173 001144 176 001150 177 001167 182 001237 183 001242 184 001245 185 001256 186 001265 188 001267 189 001277 190 001314 193 001346 194 001350 195 001363 197 001374 198 001375 201 001402 202 001404 204 001425 206 001436 207 001437 208 001444 211 001447 212 001451 214 001505 215 001506 217 001510 221 001511 223 001517 225 001532 228 001544 ----------------------------------------------------------- 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