COMPILATION LISTING OF SEGMENT gcos_user Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/19/82 1005.5 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 /* 13* 14* Modified: R.H. Morrison November 1974 15* Modified: S.C. Akers November 1981 Rewrite to support 16* more versatile ctl_args 17* and multiple IDs. 18* 19* Change ios_ calls to 20* command_query_. 21* 22**/ 23 24 gcos_user: proc; 25 26 /* 27****** ***** 28****** At present, this is not a legal entry point. As time ***** 29****** goes by, it will become a legal entry. ***** 30****** ***** 31**/ 32 33 call com_err_ (error_table_$bad_command_name, proc_id); 34 goto gu_ret; 35 36 /* * * * * * * * * * * * * * * * * * * */ 37 38 add: entry; /* Add an entry */ 39 40 call gu_add; 41 goto gu_ret; 42 43 /* * * * * * * * * * * * * * * * * * * */ 44 45 delete: entry; /* Delete an entry */ 46 47 call gu_delete; 48 goto gu_ret; 49 50 /* * * * * * * * * * * * * * * * * * * */ 51 52 init_table: entry; /* Build a new table */ 53 54 call gu_init; 55 goto gu_ret; 56 57 /* * * * * * * * * * * * * * * * * * * */ 58 59 print: entry; /* Print entry info */ 60 61 call gu_print; 62 goto gu_ret; 63 64 /* * * * * * * * * * * * * * * * * * * */ 65 66 gu_ret: ; 67 68 return; 69 70 get_acct_id: proc; /* Prompts user for account ID */ 71 72 legal_arg = "0"b; 73 74 do while (^legal_arg); 75 call command_query_ (info_ptr, answer, proc_id, "GCOS Account ID?"); 76 if length (answer) > 12 77 | length (answer) < 1 78 then call ioa_ ("Account ID must be 1 to 12 characters."); 79 else if verify (answer, valid_chars) ^= 0 80 then call ioa_ ("Account ID can contain only the following characters:^/""^a""", 81 valid_chars); 82 else do; 83 legal_arg = "1"b; 84 gcos_account_id = answer; 85 end; 86 end; 87 88 return; 89 90 end get_acct_id; 91 92 get_person_id: proc; /* Prompt user for person ID */ 93 94 legal_arg = "0"b; 95 96 do while (^legal_arg); 97 call command_query_ (info_ptr, answer, proc_id, "Multics Person Name?"); 98 if length (answer) > 23 99 | length (answer) < 1 100 then call ioa_ ("Person Name must be 1 to 23 characters."); 101 else do; 102 legal_arg = "1"b; 103 m_person = answer; 104 end; 105 end; 106 107 return; 108 109 end get_person_id; 110 111 get_project_id: proc; /* Prompt user for project ID */ 112 113 legal_arg = "0"b; 114 115 do while (^legal_arg); 116 call command_query_ (info_ptr, answer, proc_id, "Multics Project ID?"); 117 if length (answer) > 9 118 | length (answer) < 1 119 then call ioa_ ("Project ID must be 1 to 9 characters."); 120 else do; 121 legal_arg = "1"b; 122 m_project = answer; 123 end; 124 end; 125 126 return; 127 128 end get_project_id; 129 130 gu_add: proc; /* Add an entry to the GCOS user table */ 131 132 call initializer; 133 call get_acct_id; 134 call get_person_id; 135 call get_project_id; 136 137 temp_entry_ptr -> gute_gcos_account_id = gcos_account_id; 138 temp_entry_ptr -> gute_multics_person = m_person; 139 temp_entry_ptr -> gute_multics_project = m_project; 140 temp_entry_ptr -> gute_ctl_filler = 0; 141 142 call gcos_user_$add (temp_entry_ptr, gut_code); 143 if gut_code = 0 144 then call ioa_ ("^a added to table", gcos_account_id); 145 else call gu_error (gut); 146 147 return; 148 149 end gu_add; 150 151 gu_delete: proc; /* Delete an entry from the GCOS user table */ 152 153 call initializer; 154 call cu_$arg_count (count); 155 156 if count = 0 157 then do; 158 gut_code = error_table_$noarg; 159 call gu_error (et); 160 end; 161 else do i = 1 to count; 162 call cu_$arg_ptr (i, ptr, cc, gut_code); 163 if gut_code ^= 0 164 then do; 165 call gu_error (et); 166 end; 167 else do; 168 gcos_account_id = arg; 169 call gcos_user_$find_entry (gcos_account_id, gut_index, gutep, gut_code); 170 171 if gut_code ^= 0 172 then do; 173 if gut_code = 1 174 | gut_code = 9 175 then do; 176 call com_err_ (0, proc_id, 177 """^a"" ^a", gcos_account_id, 178 gut_et (gut_code)); 179 end; 180 else call gu_error (gut); 181 end; 182 183 else do; 184 call gcos_user_$delete (gcos_account_id, gut_index, gut_code); 185 if gut_code ^= 0 186 then call com_err_ (0, proc_id, 187 """^a"" ^a", gcos_account_id, 188 gut_et (gut_code)); 189 end; 190 end; 191 end; 192 193 return; 194 195 end gu_delete; 196 197 gu_error: proc (which_error); /* Prints error messages */ 198 199 dcl which_error fixed bin parm; 200 201 202 if gut_code <= gut_et_count 203 & which_error = gut 204 then call com_err_ (0, proc_id, gut_et (gut_code)); 205 else call com_err_ (gut_code, proc_id); 206 207 return; 208 209 end gu_error; 210 211 gu_init: proc; 212 213 call initializer; 214 call gcos_user_$init_table (gut_code); 215 if gut_code ^= 0 216 then call gu_error (gut); 217 218 return; 219 220 end gu_init; 221 222 gu_print: proc; /* Print requested user information */ 223 224 call initializer; 225 call cu_$arg_count (count); 226 227 if count = 0 228 then call com_err_ (error_table_$noarg, proc_id); 229 else do; 230 call cu_$arg_ptr (1, ptr, cc, gut_code); 231 if gut_code ^= 0 232 then call gu_error (et); 233 234 else do; 235 236 if arg = "-header" 237 | arg = "-hdr" 238 then do; 239 call print_gut_header; 240 if count > 1 241 then do; 242 call cu_$arg_ptr (2, ptr, cc, gut_code); 243 if gut_code ^= 0 244 then call gu_error (et); 245 246 else do; 247 if arg = "-gcos_account_id" 248 | arg = "-gaid" 249 then do; 250 if count < 3 251 then do; 252 gut_code = error_table_$noarg; 253 call gu_error (et); 254 end; 255 else call print_entry_info (3); 256 end; 257 end; 258 end; 259 end; 260 261 else if arg = "-gcos_account_id" 262 | arg = "-gaid" 263 then do; 264 if count < 2 265 then do; 266 gut_code = error_table_$noarg; 267 call gu_error (et); 268 end; 269 else call print_entry_info (2); 270 end; 271 272 else call com_err_ (error_table_$badopt, proc_id, 273 "^/""^a""", arg); 274 end; 275 end; 276 277 return; 278 279 end gu_print; 280 281 initializer: proc; 282 283 buff_ptr = addr (buffer); /* Initialize pointers */ 284 temp_entry_ptr = addr (temp_entry); 285 info_ptr = addr (query_info); 286 287 query_info.version = query_info_version_5; /* Initialize query info */ 288 query_info.switches.yes_or_no_sw = "0"b; 289 query_info.switches.suppress_name_sw = "1"b; 290 query_info.switches.cp_escape_control = "10"b; 291 query_info.switches.suppress_spacing = "0"b; 292 query_info.status_code = 0; 293 294 return; 295 296 end initializer; 297 298 print_entry_info: proc (starting_arg); /* Prints information about 299* GCOS user table entries */ 300 301 dcl starting_arg fixed bin parm; 302 303 do i = starting_arg to count; 304 call cu_$arg_ptr (i, ptr, cc, gut_code); 305 if gut_code ^= 0 306 then call gu_error (et); 307 else do; 308 if cc > 12 309 then do; 310 call com_err_ (error_table_$bigarg, proc_id, arg); 311 end; 312 313 else do; 314 if arg = "-hdr" 315 then call print_gut_header; 316 else do; 317 gcos_account_id = arg; 318 call gcos_user_$find_entry (gcos_account_id, 319 gut_index, 320 gutep, gut_code); 321 322 if gut_code ^= 0 323 then do; 324 if gut_code ^= 1 325 then call gu_error (gut); 326 call com_err_ (0, proc_id, "^a:""^a""", gut_et (1), gcos_account_id); 327 end; 328 else do; 329 330 call ioa_ ("^/gut_entry:"); 331 call ioa_ ("gute_gcos_account_id^1-^a", 332 gutep -> gute_gcos_account_id); 333 call ioa_ ("gute_multics_person^2-^a", 334 gutep -> gute_multics_person); 335 call ioa_ ("gute_multics_project^1-^a^/", 336 gutep -> gute_multics_project); 337 end; 338 end; 339 end; 340 end; 341 end; 342 343 return; 344 345 end print_entry_info; 346 347 print_gut_header: proc; /* Print header info from GCOS user table */ 348 349 gut_code = 0; 350 351 if gutp = null 352 then do; 353 call gcos_user_$get_table_ptr (gutp, gut_code); 354 if gut_code ^= 0 355 then call gu_error (gut); 356 end; 357 if gut_code = 0 358 then do; 359 360 call date_time_ (gut_last_update, date); 361 call ioa_ ("^/gut_header:"); 362 call ioa_ ("gut_version_no^2-^d", gut_version_no); 363 call ioa_ ("gut_hdr_len^2-^d", gut_hdr_len); 364 call ioa_ ("gut_global_ctl_len^2-^d", gut_global_ctl_len); 365 call ioa_ ("gut_entry_len^2-^d", gut_entry_len); 366 call ioa_ ("gut_last_update^2-^a", date); 367 call ioa_ ("gut_updater_id^2-^a", gut_updater_id); 368 call ioa_ ("gut_max_count^2-^d", gut_max_count); 369 call ioa_ ("gut_active_count^2-^d^/", gut_active_count); 370 371 end; 372 373 return; 374 375 end print_gut_header; 376 377 dcl 378 proc_id char (9) init ("gcos_user"), 379 gcos_pswd char (12), 380 m_person char (22), 381 m_project char (9), 382 date_time_ entry (fixed bin (71), char (*)), 383 count fixed bin, 384 gut_index fixed bin; 385 386 dcl i fixed bin, 387 gut_code fixed bin (35), 388 ptr ptr, 389 cc fixed bin, 390 arg char (cc) based (ptr), 391 gcos_account_id char (12), 392 date char (24), 393 valid_chars char (37) init (".0123456789abcdefghijklmnopqrstuvwxyz"); 394 395 dcl answer char (132) varying, 396 legal_arg bit (1), 397 info_ptr ptr; 398 399 dcl buff_ptr ptr, 400 buffer char (32); 401 402 dcl (gut init(1), 403 et init(2) 404 ) fixed bin internal static options (constant); 405 406 dcl temp_entry_ptr ptr, 407 temp_entry (32) fixed bin; /* "32" MUST be changed if "gut_entry_len" is changed */ 408 409 dcl ( 410 com_err_ entry options (variable), 411 command_query_ entry options(variable), 412 cu_$arg_count entry (fixed bin), 413 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 414 gcos_user_$add entry (ptr, fixed bin (35)), 415 gcos_user_$delete entry (char (12), fixed bin, fixed bin (35)), 416 gcos_user_$find_entry entry (char (12), fixed bin, ptr, fixed bin (35)), 417 gcos_user_$get_table_ptr entry (ptr, fixed bin (35)), 418 gcos_user_$init_table entry (fixed bin (35)), 419 ioa_ entry() options(variable) 420 421 ) external; 422 423 dcl (addr, null, substr, verify) builtin; 424 425 dcl (error_table_$noarg, 426 error_table_$bigarg, 427 error_table_$badopt, 428 error_table_$bad_command_name) fixed bin (35) external; 429 1 1 /* BEGIN INCLUDE FILE...gcos_user_table_.incl.pl1 */ 1 2 2 1 /* BEGIN INCLUDE FILE...gcos_user_table_hdr_.incl.pl1 */ 2 2 2 3 dcl gutp ptr internal static init (null), /* pointer to table origin */ 2 4 2 5 1 gcos_user_table_ based (gutp), 2 6 2 gut_version_no fixed bin, /* to identify table format */ 2 7 2 gut_hdr_len fixed bin,/* currently 128, includes global_ctl */ 2 8 2 9 2 gut_global_ctl_len fixed bin,/* currently 64 */ 2 10 2 gut_entry_len fixed bin,/* currently 32 */ 2 11 2 gut_last_update fixed bin (71), 2 12 2 gut_updater_id char (32), 2 13 2 gut_max_count fixed bin, 2 14 2 gut_active_count fixed bin, 2 15 2 gut_first_entry_index fixed bin, 2 16 2 gut_last_entry_index fixed bin, 2 17 2 gut_filler (46) fixed bin, /* rounds hdr to 64 words */ 2 18 2 19 2 gut_global_ctl,/* currently 64 words total */ 2 20 3 gut_global_ctl_filler (64) fixed bin, 2 21 2 22 2 gut_entry (gut_max_count), 2 23 3 gut_entry_status fixed bin, /* 0 => inactive, 1 => active */ 2 24 3 gut_entry_filler (31) fixed bin; 2 25 2 26 /* END INCLUDE FILE...gcos_user_table_hdr_.incl.pl1 */ 1 3 3 1 /* BEGIN INCLUDE FILE gcos_user_table_entry_.incl.pl1 November 1974 RHM */ 3 2 3 3 dcl gutep ptr, /* pointer to origin of based entry */ 3 4 3 5 1 gcos_user_table_entry_ based, 3 6 2 gute_status fixed bin, /* 0 => inactive, 1 => active */ 3 7 2 gute_filler_1 fixed bin, 3 8 2 gute_gcos_account_id char (12), /* probably 8 or fewer chars */ 3 9 2 gute_multics_person char (22), 3 10 2 gute_multics_project char (9), 3 11 2 gute_ctl, 3 12 3 gute_ctl_filler (18) fixed bin; 3 13 3 14 /* END INCLUDE FILE...gcos_user_table_entry_.incl.pl1 */ 1 4 1 5 1 6 /* END INCLUDE FILE...gcos_user_table_.incl.pl1 */ 430 431 4 1 /* BEGIN INCLUDE FILE gut_error_table_.incl.pl1 November 1974 RHM */ 4 2 4 3 dcl gut_et_count fixed bin (35) init (10); 4 4 4 5 dcl gut_et (10) char (32) init 4 6 ("gcos_account_id not in table", 4 7 "", 4 8 "gcos_user_table_ destroyed", 4 9 "gu table full. Entry not added", 4 10 "gcos_account_id already in table", 4 11 "gcos_user_table_ not found", 4 12 "gcos_user_table_ is empty", 4 13 "gcos_user_table_ has zero bitct", 4 14 "gcos_account_id/index disagree", 4 15 "Table bitct > 0. Can't init"); 4 16 4 17 /* END INCLUDE FILE...gut_error_table_.incl.pl1 */ 432 433 5 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 5 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 5 3 /* version number changed to 4, 08/10/78 WOS */ 5 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 5 5 5 6 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 5 7 2 version fixed bin, /* version of this structure - must be set, see below */ 5 8 2 switches aligned, /* various bit switch values */ 5 9 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 5 10 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 5 11 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 5 12 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 5 13 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 5 14 3 padding bit (31) unaligned init (""b), /* pads it out to t word */ 5 15 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 5 16 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 5 17 5 18 /* Limit of data defined for version 2 */ 5 19 5 20 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 5 21 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 5 22 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 5 23 /* minimum of 30 seconds required for repeat */ 5 24 /* otherwise, no repeat will occur */ 5 25 /* Limit of data defined for version 4 */ 5 26 5 27 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 5 28 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 5 29 5 30 dcl query_info_version_3 fixed bin int static options (constant) init (3); 5 31 dcl query_info_version_4 fixed bin int static options (constant) init (4); 5 32 dcl query_info_version_5 fixed bin int static options (constant) init (5); /* the current version number */ 5 33 5 34 /* END INCLUDE FILE query_info.incl.pl1 */ 434 435 436 /* * * * * * * * * * * * * * * * * * * */ 437 438 end gcos_user; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/19/82 0930.9 gcos_user.pl1 >spec>on>11/19/82>gcos_user.pl1 430 1 03/27/82 0439.3 gcos_user_table_.incl.pl1 >ldd>include>gcos_user_table_.incl.pl1 1-3 2 03/27/82 0439.3 gcos_user_table_hdr_.incl.pl1 >ldd>include>gcos_user_table_hdr_.incl.pl1 1-4 3 03/27/82 0439.3 gcos_user_table_entry_.incl.pl1 >ldd>include>gcos_user_table_entry_.incl.pl1 432 4 12/04/74 1303.1 gut_error_table_.incl.pl1 >ldd>include>gut_error_table_.incl.pl1 434 5 08/12/81 0911.2 query_info.incl.pl1 >ldd>include>query_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. addr builtin function dcl 423 ref 283 284 285 answer 000146 automatic varying char(132) dcl 395 set ref 75* 76 76 79 84 97* 98 98 103 116* 117 117 122 answer_iocbp 6 000414 automatic pointer initial level 2 dcl 5-6 set ref 5-6* arg based char unaligned dcl 386 set ref 168 236 236 247 247 261 261 272* 310* 314 317 buff_ptr 000214 automatic pointer dcl 399 set ref 283* buffer 000216 automatic char(32) unaligned dcl 399 set ref 283 cc 000122 automatic fixed bin(17,0) dcl 386 set ref 162* 168 230* 236 236 242* 247 247 261 261 272 272 304* 308 310 310 314 317 com_err_ 000014 constant entry external dcl 409 ref 33 176 185 202 205 227 272 310 326 command_query_ 000016 constant entry external dcl 409 ref 75 97 116 count 000114 automatic fixed bin(17,0) dcl 377 set ref 154* 156 161 225* 227 240 250 264 303 cp_escape_control 1(02) 000414 automatic bit(2) initial level 3 packed unaligned dcl 5-6 set ref 5-6* 290* cu_$arg_count 000020 constant entry external dcl 409 ref 154 225 cu_$arg_ptr 000022 constant entry external dcl 409 ref 162 230 242 304 date 000126 automatic char(24) unaligned dcl 386 set ref 360* 366* date_time_ 000012 constant entry external dcl 377 ref 360 error_table_$bad_command_name 000046 external static fixed bin(35,0) dcl 425 set ref 33* error_table_$badopt 000044 external static fixed bin(35,0) dcl 425 set ref 272* error_table_$bigarg 000042 external static fixed bin(35,0) dcl 425 set ref 310* error_table_$noarg 000040 external static fixed bin(35,0) dcl 425 set ref 158 227* 252 266 et constant fixed bin(17,0) initial dcl 402 set ref 159* 165* 231* 243* 253* 267* 305* explanation_len 14 000414 automatic fixed bin(21,0) initial level 2 dcl 5-6 set ref 5-6* explanation_ptr 12 000414 automatic pointer initial level 2 dcl 5-6 set ref 5-6* gcos_account_id 000123 automatic char(12) unaligned dcl 386 set ref 84* 137 143* 168* 169* 176* 184* 185* 317* 318* 326* gcos_user_$add 000024 constant entry external dcl 409 ref 142 gcos_user_$delete 000026 constant entry external dcl 409 ref 184 gcos_user_$find_entry 000030 constant entry external dcl 409 ref 169 318 gcos_user_$get_table_ptr 000032 constant entry external dcl 409 ref 353 gcos_user_$init_table 000034 constant entry external dcl 409 ref 214 gcos_user_table_ based structure level 1 unaligned dcl 2-3 gcos_user_table_entry_ based structure level 1 unaligned dcl 3-3 gut constant fixed bin(17,0) initial dcl 402 set ref 145* 180* 202 215* 324* 354* gut_active_count 17 based fixed bin(17,0) level 2 dcl 2-3 set ref 369* gut_code 000117 automatic fixed bin(35,0) dcl 386 set ref 142* 143 158* 162* 163 169* 171 173 173 176 184* 185 185 202 202 205* 214* 215 230* 231 242* 243 252* 266* 304* 305 318* 322 324 349* 353* 354 357 gut_entry_len 3 based fixed bin(17,0) level 2 dcl 2-3 set ref 365* gut_et 000273 automatic char(32) initial array unaligned dcl 4-5 set ref 4-5* 4-5* 4-5* 4-5* 4-5* 4-5* 4-5* 4-5* 4-5* 4-5* 176* 185* 202* 326* gut_et_count 000272 automatic fixed bin(35,0) initial dcl 4-3 set ref 4-3* 202 gut_global_ctl_len 2 based fixed bin(17,0) level 2 dcl 2-3 set ref 364* gut_hdr_len 1 based fixed bin(17,0) level 2 dcl 2-3 set ref 363* gut_index 000115 automatic fixed bin(17,0) dcl 377 set ref 169* 184* 318* gut_last_update 4 based fixed bin(71,0) level 2 dcl 2-3 set ref 360* gut_max_count 16 based fixed bin(17,0) level 2 dcl 2-3 set ref 368* gut_updater_id 6 based char(32) level 2 packed unaligned dcl 2-3 set ref 367* gut_version_no based fixed bin(17,0) level 2 dcl 2-3 set ref 362* gute_ctl 15 based structure level 2 unaligned dcl 3-3 gute_ctl_filler 15 based fixed bin(17,0) array level 3 dcl 3-3 set ref 140* gute_gcos_account_id 2 based char(12) level 2 packed unaligned dcl 3-3 set ref 137* 331* gute_multics_person 5 based char(22) level 2 packed unaligned dcl 3-3 set ref 138* 333* gute_multics_project 12(18) based char(9) level 2 packed unaligned dcl 3-3 set ref 139* 335* gutep 000270 automatic pointer dcl 3-3 set ref 169* 318* 331 333 335 gutp 000010 internal static pointer initial dcl 2-3 set ref 351 353* 360 362 363 364 365 367 368 369 i 000116 automatic fixed bin(17,0) dcl 386 set ref 161* 162* 303* 304* info_ptr 000212 automatic pointer dcl 395 set ref 75* 97* 116* 285* ioa_ 000036 constant entry external dcl 409 ref 76 79 98 117 143 330 331 333 335 361 362 363 364 365 366 367 368 369 legal_arg 000210 automatic bit(1) unaligned dcl 395 set ref 72* 74 83* 94* 96 102* 113* 115 121* m_person 000103 automatic char(22) unaligned dcl 377 set ref 103* 138 m_project 000111 automatic char(9) unaligned dcl 377 set ref 122* 139 null builtin function dcl 423 ref 5-6 5-6 5-6 351 padding 1(05) 000414 automatic bit(31) initial level 3 packed unaligned dcl 5-6 set ref 5-6* proc_id 000100 automatic char(9) initial unaligned dcl 377 set ref 33* 75* 97* 116* 176* 185* 202* 205* 227* 272* 310* 326* 377* ptr 000120 automatic pointer dcl 386 set ref 162* 168 230* 236 236 242* 247 247 261 261 272 304* 310 314 317 query_code 3 000414 automatic fixed bin(35,0) initial level 2 dcl 5-6 set ref 5-6* query_info 000414 automatic structure level 1 dcl 5-6 set ref 285 query_info_version_5 constant fixed bin(17,0) initial dcl 5-32 ref 287 question_iocbp 4 000414 automatic pointer initial level 2 dcl 5-6 set ref 5-6* repeat_time 10 000414 automatic fixed bin(71,0) initial level 2 dcl 5-6 set ref 5-6* starting_arg parameter fixed bin(17,0) dcl 301 ref 298 303 status_code 2 000414 automatic fixed bin(35,0) initial level 2 dcl 5-6 set ref 5-6* 292* suppress_name_sw 1(01) 000414 automatic bit(1) initial level 3 packed unaligned dcl 5-6 set ref 5-6* 289* suppress_spacing 1(04) 000414 automatic bit(1) initial level 3 packed unaligned dcl 5-6 set ref 5-6* 291* switches 1 000414 automatic structure level 2 dcl 5-6 temp_entry 000230 automatic fixed bin(17,0) array dcl 406 set ref 284 temp_entry_ptr 000226 automatic pointer dcl 406 set ref 137 138 139 140 142* 284* valid_chars 000134 automatic char(37) initial unaligned dcl 386 set ref 79 79* 386* verify builtin function dcl 423 ref 79 version 000414 automatic fixed bin(17,0) level 2 dcl 5-6 set ref 287* which_error parameter fixed bin(17,0) dcl 199 ref 197 202 yes_or_no_sw 1 000414 automatic bit(1) initial level 3 packed unaligned dcl 5-6 set ref 5-6* 288* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. gcos_pswd automatic char(12) unaligned dcl 377 query_info_version_3 internal static fixed bin(17,0) initial dcl 5-30 query_info_version_4 internal static fixed bin(17,0) initial dcl 5-31 substr builtin function dcl 423 NAMES DECLARED BY EXPLICIT CONTEXT. add 000606 constant entry external dcl 38 delete 000617 constant entry external dcl 45 gcos_user 000561 constant entry external dcl 24 get_acct_id 000653 constant entry internal dcl 70 ref 133 get_person_id 000770 constant entry internal dcl 92 ref 134 get_project_id 001056 constant entry internal dcl 111 ref 135 gu_add 001147 constant entry internal dcl 130 ref 40 gu_delete 001241 constant entry internal dcl 151 ref 47 gu_error 001462 constant entry internal dcl 197 ref 145 159 165 180 215 231 243 253 267 305 324 354 gu_init 001535 constant entry internal dcl 211 ref 54 gu_print 001553 constant entry internal dcl 222 ref 61 gu_ret 000651 constant label dcl 66 ref 34 41 48 55 62 init_table 000630 constant entry external dcl 52 initializer 002003 constant entry internal dcl 281 ref 132 153 213 224 print 000641 constant entry external dcl 59 print_entry_info 002030 constant entry internal dcl 298 ref 255 269 print_gut_header 002314 constant entry internal dcl 347 ref 239 314 NAME DECLARED BY CONTEXT OR IMPLICATION. length builtin function ref 76 76 98 98 117 117 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3044 3114 2644 3054 Length 3446 2644 50 316 200 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gcos_user 642 external procedure is an external procedure. get_acct_id internal procedure shares stack frame of external procedure gcos_user. get_person_id internal procedure shares stack frame of external procedure gcos_user. get_project_id internal procedure shares stack frame of external procedure gcos_user. gu_add internal procedure shares stack frame of external procedure gcos_user. gu_delete internal procedure shares stack frame of external procedure gcos_user. gu_error internal procedure shares stack frame of external procedure gcos_user. gu_init internal procedure shares stack frame of external procedure gcos_user. gu_print internal procedure shares stack frame of external procedure gcos_user. initializer internal procedure shares stack frame of external procedure gcos_user. print_entry_info internal procedure shares stack frame of external procedure gcos_user. print_gut_header internal procedure shares stack frame of external procedure gcos_user. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 gutp gcos_user STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gcos_user 000100 proc_id gcos_user 000103 m_person gcos_user 000111 m_project gcos_user 000114 count gcos_user 000115 gut_index gcos_user 000116 i gcos_user 000117 gut_code gcos_user 000120 ptr gcos_user 000122 cc gcos_user 000123 gcos_account_id gcos_user 000126 date gcos_user 000134 valid_chars gcos_user 000146 answer gcos_user 000210 legal_arg gcos_user 000212 info_ptr gcos_user 000214 buff_ptr gcos_user 000216 buffer gcos_user 000226 temp_entry_ptr gcos_user 000230 temp_entry gcos_user 000270 gutep gcos_user 000272 gut_et_count gcos_user 000273 gut_et gcos_user 000414 query_info gcos_user THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry verify_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ command_query_ cu_$arg_count cu_$arg_ptr date_time_ gcos_user_$add gcos_user_$delete gcos_user_$find_entry gcos_user_$get_table_ptr gcos_user_$init_table ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_command_name error_table_$badopt error_table_$bigarg error_table_$noarg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 377 000411 386 000416 4 3 000421 4 5 000423 5 6 000532 24 000560 33 000567 34 000604 38 000605 40 000614 41 000615 45 000616 47 000625 48 000626 52 000627 54 000636 55 000637 59 000640 61 000647 62 000650 66 000651 68 000652 70 000653 72 000654 74 000655 75 000657 76 000710 79 000732 83 000760 84 000762 86 000766 88 000767 92 000770 94 000771 96 000772 97 000774 98 001024 102 001046 103 001050 105 001054 107 001055 111 001056 113 001057 115 001060 116 001062 117 001115 121 001137 122 001141 124 001145 126 001146 130 001147 132 001150 133 001151 134 001152 135 001153 137 001154 138 001163 139 001166 140 001171 142 001202 143 001213 145 001236 147 001240 151 001241 153 001242 154 001243 156 001252 158 001254 159 001257 160 001261 161 001262 162 001270 163 001305 165 001307 166 001311 168 001312 169 001317 171 001334 173 001336 176 001342 179 001400 180 001401 181 001403 184 001404 185 001417 191 001457 193 001461 197 001462 202 001464 205 001517 207 001534 211 001535 213 001536 214 001537 215 001546 218 001552 222 001553 224 001554 225 001555 227 001564 230 001604 231 001623 236 001630 239 001642 240 001643 242 001646 243 001665 247 001672 250 001704 252 001707 253 001712 254 001714 255 001715 259 001721 261 001722 264 001732 266 001735 267 001740 268 001742 269 001743 270 001747 272 001750 277 002002 281 002003 283 002004 284 002006 285 002010 287 002012 288 002014 289 002016 290 002020 291 002024 292 002026 294 002027 298 002030 303 002032 304 002041 305 002056 308 002063 310 002066 311 002111 314 002112 317 002121 318 002124 322 002141 324 002143 326 002147 327 002203 330 002204 331 002221 333 002242 335 002266 341 002311 343 002313 347 002314 349 002315 351 002316 353 002323 354 002333 357 002337 360 002341 361 002357 362 002374 363 002417 364 002441 365 002465 366 002506 367 002531 368 002552 369 002576 373 002622 ----------------------------------------------------------- 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