COMPILATION LISTING OF SEGMENT ssu_misc_requests_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1639.5 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 /* Standard subsystem requests quit, self_identify (.), subsystem_name, subsystem_version, abbrev, ready, ready_on, 9* ready_off, and execute; also a utility to make implementation of the apply request simpler */ 10 11 /* Created: 11 May 1980 by W. Olin Sibert */ 12 /* Modified: 14 September 1980 by W. Olin Sibert to fix bug in quit request (not copying sci_ptr) */ 13 /* Modified: 23 July 1982 by Jay Pattin to add abbrev request */ 14 /* Modified: 16 December 1981 by Jay Pattin to add summarize_requests and implement new definition of list_requests */ 15 /* Modified: 12 February 1982 by G. Palter to move summarize_requests and list_requests to ssu_request_mgr_ and changed to 16* call cu_$evaluate_active_string rather than cu_$af */ 17 /* Modified: 24 February 1982 by G. Palter to add subsystem_name and subsystem_version */ 18 /* Modified: 19 June 1982 by G. Palter to make the self_identify request work as advertised */ 19 /* Modified: 30 July 1982 by G. Palter to make the abbrev request work as an active request by returning true/false if 20* request line expansion is enabled/disabled, respectively */ 21 22 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 23 24 25 ssu_misc_requests_: 26 procedure (); 27 28 return; /* not an entrypoint */ 29 30 31 /* Parameters */ 32 33 dcl P_sci_ptr pointer parameter; 34 35 dcl P_info_ptr pointer parameter; /* all requests */ 36 37 dcl P_first_argument fixed binary parameter; /* apply_request_util: first argument of the command line */ 38 dcl P_seg_ptr pointer parameter; /* apply_request_util: -> data being manipulated */ 39 dcl P_input_lth fixed binary (21) parameter; /* apply_request_util: >0 => set bit count before call */ 40 dcl P_output_lth fixed binary (21) parameter; /* apply_request_util: length of data returned by call */ 41 42 43 /* Remaining declarations */ 44 45 dcl argument character (argument_lth) based (argument_ptr); 46 dcl argument_lth fixed binary (21); 47 dcl argument_ptr pointer; 48 49 dcl af_sw bit (1) aligned; 50 dcl return_string character (return_string_lth) varying based (return_string_ptr); 51 dcl return_string_lth fixed binary (21); 52 dcl return_string_ptr pointer; 53 54 dcl (arg_idx, n_arguments) fixed binary; 55 56 dcl command_line_buffer character (2048); 57 dcl command_line char (command_line_lth) based (command_line_ptr); 58 dcl (command_line_lth, command_line_max_lth) fixed binary (21); 59 dcl command_line_ptr pointer; 60 61 dcl code fixed binary (35); 62 63 dcl level fixed binary; 64 65 dcl abbrev_switch bit (1) aligned; 66 dcl (default_profile_ptr, profile_ptr) pointer; 67 68 dcl ready_procedure entry (pointer) variable; 69 dcl ready_mode bit (1) aligned; 70 71 dcl temp_seg_ptr pointer; 72 dcl temp_seg_comment character (32); 73 74 dcl dirname character (168); 75 dcl ename character (32); 76 dcl pathname character (204); 77 78 dcl seg_ptr pointer; 79 dcl (old_seg_bc, new_seg_bc) fixed binary (24); 80 81 /* format: off */ 82 dcl (error_table_$badopt, error_table_$command_line_overflow, error_table_$fatal_error, error_table_$noarg) 83 fixed binary (35) external; 84 /* format: on */ 85 1 1 /* BEGIN INCLUDE FILE ... cp_active_string_types.incl.pl1 */ 1 2 /* Created: 5 May 1980 by G. Palter */ 1 3 1 4 /* Types of active strings recognized by active string evaluation entries of the Multics command processor */ 1 5 1 6 dcl (DEFAULT_ACTIVE_STRING initial (0), /* default type: same as NORMAL_ACTIVE_STRING */ 1 7 NORMAL_ACTIVE_STRING initial (1), /* normal active string: [...] */ 1 8 TOKENS_ONLY_ACTIVE_STRING initial (2), /* rescan active string for whitespace and quotes: |[...] */ 1 9 ATOMIC_ACTIVE_STRING initial (3)) /* do not rescan anything in value: ||[...] */ 1 10 fixed binary static options (constant); 1 11 1 12 /* END INCLUDE FILE ... cp_active_string_types.incl.pl1 */ 86 87 88 dcl sys_info$max_seg_size fixed binary (19) external; 89 90 dcl cu_$evaluate_active_string entry (pointer, character (*), fixed binary, character (*) varying, fixed binary (35)); 91 dcl cu_$cp entry (pointer, fixed binary (21), fixed binary (35)); 92 dcl expand_pathname_$add_suffix entry (character (*), character (*), character (*), character (*), fixed binary (35)); 93 dcl hcs_$fs_get_path_name entry (pointer, character (*), fixed binary, character (*), fixed binary (35)); 94 dcl hcs_$set_bc_seg entry (pointer, fixed binary (24), fixed binary (35)); 95 dcl hcs_$status_mins entry (pointer, fixed binary (2), fixed binary (24), fixed binary (35)); 96 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), fixed binary (35)); 97 dcl ioa_ entry () options (variable); 98 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 99 dcl ssu_$abort_line entry () options (variable); 100 dcl ssu_$abort_subsystem entry () options (variable); 101 dcl ssu_$arg_count entry (pointer, fixed binary); 102 dcl ssu_$arg_ptr entry (pointer, fixed binary, pointer, fixed binary (21)); 103 dcl ssu_$get_abbrev_info entry (pointer, pointer, pointer, bit (1) aligned); 104 dcl ssu_$get_invocation_count entry (pointer, fixed binary, fixed binary); 105 dcl ssu_$get_procedure entry (pointer, character (*), entry, fixed binary (35)); 106 dcl ssu_$get_request_name entry (pointer) returns (character (32)); 107 dcl ssu_$get_subsystem_and_request_name entry (pointer) returns (character (72) varying); 108 dcl ssu_$get_subsystem_name entry (pointer) returns (character (32)); 109 dcl ssu_$get_subsystem_version entry (pointer) returns (character (32)); 110 dcl ssu_$get_temp_segment entry (pointer, character (*), pointer); 111 dcl ssu_$release_temp_segment entry (pointer, pointer); 112 dcl ssu_$return_arg entry (pointer, fixed binary, bit (1) aligned, pointer, fixed binary (21)); 113 dcl ssu_$set_abbrev_info entry (pointer, pointer, pointer, bit (1) aligned); 114 dcl ssu_$set_debug_mode entry (pointer, bit (1) aligned); 115 dcl ssu_$set_ready_mode entry (pointer, bit (1) aligned); 116 dcl sub_err_ entry () options (variable); 117 118 dcl CANT_RESTART character (1) static options (constant) initial ("s"); 119 120 dcl LONG_PDD_NAME character (32) varying static options (constant) initial (">process_dir_dir>"); 121 122 dcl cleanup condition; 123 124 dcl (addr, divide, index, length, maxlength, null, rtrim, substr) builtin; 125 126 /* */ 127 128 NO_ARGS_EXIT: 129 call ssu_$abort_line (sci_ptr, 0, "No arguments may be given."); 130 131 132 133 /* Abort the current subsystem */ 134 135 quit: 136 entry (P_sci_ptr, P_info_ptr); 137 138 sci_ptr = P_sci_ptr; 139 140 call ssu_$arg_count (sci_ptr, n_arguments); 141 if n_arguments ^= 0 then go to NO_ARGS_EXIT; 142 143 RETRY_QUIT: 144 call ssu_$abort_subsystem (sci_ptr, 0); 145 146 call sub_err_ (error_table_$fatal_error, ssu_$get_subsystem_and_request_name (sci_ptr), CANT_RESTART, null (), 147 (0), "Attempt to abort subsystem failed."); 148 149 go to RETRY_QUIT; /* in case he somehow restarts */ 150 151 152 153 /* Standard self-identification request */ 154 155 self_identify: 156 entry (P_sci_ptr, P_info_ptr); 157 158 sci_ptr = P_sci_ptr; 159 160 call ssu_$arg_count (sci_ptr, n_arguments); 161 if n_arguments ^= 0 then go to NO_ARGS_EXIT; 162 163 call ssu_$get_abbrev_info (sci_ptr, (null ()), (null ()), abbrev_switch); 164 call ssu_$get_invocation_count (sci_ptr, level, (0)); 165 166 call ioa_ ("^a ^a^[ (abbrev)^]^[ (level ^d)^]", ssu_$get_subsystem_name (sci_ptr), 167 ssu_$get_subsystem_version (sci_ptr), abbrev_switch, (level > 1), level); 168 169 return; 170 171 /* */ 172 173 /* Standard subsystem_name request: prints/returns the name of the current subsystem */ 174 175 subsystem_name: 176 entry (P_sci_ptr, P_info_ptr); 177 178 sci_ptr = P_sci_ptr; 179 180 call ssu_$return_arg (sci_ptr, n_arguments, af_sw, return_string_ptr, return_string_lth); 181 if n_arguments ^= 0 then go to NO_ARGS_EXIT; 182 183 if af_sw then 184 return_string = rtrim (ssu_$get_subsystem_name (sci_ptr)); 185 else call ioa_ ("^a", ssu_$get_subsystem_name (sci_ptr)); 186 187 return; 188 189 190 191 /* Standard subsystem_version request: prints/returns the version of the current subsystem */ 192 193 subsystem_version: 194 entry (P_sci_ptr, P_info_ptr); 195 196 sci_ptr = P_sci_ptr; 197 198 call ssu_$return_arg (sci_ptr, n_arguments, af_sw, return_string_ptr, return_string_lth); 199 if n_arguments ^= 0 then go to NO_ARGS_EXIT; 200 201 if af_sw then 202 return_string = rtrim (ssu_$get_subsystem_version (sci_ptr)); 203 else call ioa_ ("^a", ssu_$get_subsystem_version (sci_ptr)); 204 205 return; 206 207 /* */ 208 209 /* Standard abbrev request/active request: As a request, allows the user to enable/disable abbreviation processing and 210* set the profile; as an active request, returns true/false if request line expansion is enabled/disabled respectively */ 211 212 abbrev: 213 entry (P_sci_ptr, P_info_ptr); 214 215 sci_ptr = P_sci_ptr; 216 217 call ssu_$return_arg (sci_ptr, n_arguments, af_sw, return_string_ptr, return_string_lth); 218 219 if af_sw then do; /* tell user is abbrev is enabled/disabled */ 220 if n_arguments ^= 0 then go to NO_ARGS_EXIT; 221 call ssu_$get_abbrev_info (sci_ptr, (null ()), (null ()), abbrev_switch); 222 if abbrev_switch then return_string = "true"; 223 else return_string = "false"; 224 return; 225 end; 226 227 abbrev_switch = "1"b; /* default is to turn on abbrev with current profile */ 228 call ssu_$get_abbrev_info (sci_ptr, default_profile_ptr, profile_ptr, ("0"b)); 229 230 do arg_idx = 1 to n_arguments; 231 call ssu_$arg_ptr (sci_ptr, arg_idx, argument_ptr, argument_lth); 232 if index (argument, "-") = 1 then do; 233 if (argument = "-off") then abbrev_switch = "0"b; 234 else if (argument = "-on") then abbrev_switch = "1"b; 235 else if (argument = "-profile") then do; 236 abbrev_switch = "1"b; 237 arg_idx = arg_idx + 1; 238 call get_profile (); 239 end; 240 else call ssu_$abort_line (sci_ptr, error_table_$badopt, """^a""", argument); 241 end; 242 else call ssu_$abort_line (sci_ptr, 0, "Usage: ^a {-control_args}", ssu_$get_request_name (sci_ptr)); 243 end; 244 245 call ssu_$set_abbrev_info (sci_ptr, default_profile_ptr, profile_ptr, abbrev_switch); 246 247 return; 248 249 250 /* Pickup and initiate the desired profile segment */ 251 252 get_profile: 253 procedure (); 254 255 dcl profile_dirname character (168); 256 dcl profile_ename character (32); 257 258 if arg_idx > n_arguments then 259 call ssu_$abort_line (sci_ptr, error_table_$noarg, "Profile pathname after ""-profile""."); 260 261 call ssu_$arg_ptr (sci_ptr, arg_idx, argument_ptr, argument_lth); 262 263 call expand_pathname_$add_suffix (argument, "profile", profile_dirname, profile_ename, code); 264 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, argument); 265 266 call initiate_file_ (profile_dirname, profile_ename, R_ACCESS, profile_ptr, (0), code); 267 if code ^= 0 then 268 call ssu_$abort_line (sci_ptr, code, "Initiating ^a.", pathname_ (profile_dirname, profile_ename)); 269 270 return; 271 272 end get_profile; 273 274 /* */ 275 276 /* Standard request to print a ready message (actually invoke the ready procedure) */ 277 278 ready: 279 entry (P_sci_ptr, P_info_ptr); 280 281 sci_ptr = P_sci_ptr; 282 283 call ssu_$arg_count (sci_ptr, n_arguments); 284 if n_arguments ^= 0 then go to NO_ARGS_EXIT; 285 286 call ssu_$get_procedure (sci_ptr, "ready", ready_procedure, code); 287 288 if code = 0 then /* found the ready procedure all right */ 289 call ready_procedure (sci_ptr); 290 else call ssu_$abort_line (sci_ptr, code, "Attempting to invoke the ready procedure."); 291 292 return; 293 294 295 296 /* Standard request to enable printing of ready messages after executing request lines */ 297 298 ready_on: 299 entry (P_sci_ptr, P_info_ptr); 300 301 ready_mode = "1"b; 302 go to READY_ON_OFF_COMMON; 303 304 305 /* Standard request to disable printing of ready messages after executing request lines */ 306 307 ready_off: 308 entry (P_sci_ptr, P_info_ptr); 309 310 ready_mode = "0"b; 311 go to READY_ON_OFF_COMMON; 312 313 READY_ON_OFF_COMMON: 314 sci_ptr = P_sci_ptr; 315 316 call ssu_$arg_count (sci_ptr, n_arguments); 317 if n_arguments ^= 0 then go to NO_ARGS_EXIT; 318 319 call ssu_$set_ready_mode (sci_ptr, ready_mode); 320 321 return; 322 323 /* */ 324 325 /* Standard request to enable/disable debug mode */ 326 327 debug_mode: 328 entry (P_sci_ptr, P_info_ptr); 329 330 sci_ptr = P_sci_ptr; 331 332 call ssu_$arg_count (sci_ptr, n_arguments); 333 334 if n_arguments ^= 1 then 335 call ssu_$abort_line (sci_ptr, 0, "Usage: ^a [on | off]", ssu_$get_request_name (sci_ptr)); 336 337 call ssu_$arg_ptr (sci_ptr, 1, argument_ptr, argument_lth); 338 339 if (argument = "on") | (argument = "-on") then call ssu_$set_debug_mode (sci_ptr, "1"b); 340 else if (argument = "off") | (argument = "-off") then call ssu_$set_debug_mode (sci_ptr, "0"b); 341 else call ssu_$abort_line (sci_ptr, 0, "Usage: ^a [on | off]", ssu_$get_request_name (sci_ptr)); 342 343 return; 344 345 /* */ 346 347 /* Standard execute request: executes a Multics command line; as an active request, evaluates a Multics active string and 348* returns the result to the request line processor */ 349 350 execute: 351 entry (P_sci_ptr, P_info_ptr); 352 353 sci_ptr = P_sci_ptr; 354 355 call ssu_$return_arg (sci_ptr, n_arguments, af_sw, return_string_ptr, return_string_lth); 356 357 if af_sw & (n_arguments = 0) then 358 call ssu_$abort_line (sci_ptr, 0, "The ^a active request must have at least one argument.", 359 ssu_$get_request_name (sci_ptr)); 360 361 command_line_ptr = addr (command_line_buffer); /* prepare to construct it in automatic storage */ 362 command_line_lth = 0; 363 command_line_max_lth = maxlength (command_line_buffer); 364 365 temp_seg_ptr = null (); /* for cleanup handler */ 366 temp_seg_comment = ssu_$get_request_name (sci_ptr); 367 368 on condition (cleanup) 369 begin; 370 if temp_seg_ptr ^= null () then call ssu_$release_temp_segment (sci_ptr, temp_seg_ptr); 371 end; 372 373 do arg_idx = 1 to n_arguments; 374 call ssu_$arg_ptr (sci_ptr, arg_idx, argument_ptr, argument_lth); 375 376 call add_to_command_line (argument); 377 end; 378 379 if af_sw then /* now, do it! */ 380 call cu_$evaluate_active_string (null (), command_line, NORMAL_ACTIVE_STRING, return_string, code); 381 else call cu_$cp (command_line_ptr, command_line_lth, code); 382 383 if temp_seg_ptr ^= null () then /* if we got one, get rid of it */ 384 call ssu_$release_temp_segment (sci_ptr, temp_seg_ptr); 385 386 if code = 100 then /* and ignore this one */ 387 code = 0; 388 389 if code ^= 0 then /* punt the request line if it failed */ 390 call ssu_$abort_line (sci_ptr, code); 391 392 return; 393 394 /* */ 395 396 /* Utility for implementing subsystem apply requests: it constructs the command line (or active string) starting with the 397* specified argument, catenates the pahtname of the segment (identified by P_seg_ptr) to the line, and executes the 398* command line or evaluates the active string. If requested, the bit count of the segment will be set before execution 399* and restored on completion; the character count of the segment after executing the command line will be returned */ 400 401 apply_request_util: 402 entry (P_sci_ptr, P_first_argument, P_seg_ptr, P_input_lth, P_output_lth); 403 404 call ssu_check_sci (P_sci_ptr); 405 406 sci_ptr = P_sci_ptr; 407 seg_ptr = P_seg_ptr; 408 409 call ssu_$return_arg (sci_ptr, n_arguments, af_sw, return_string_ptr, return_string_lth); 410 411 command_line_ptr = addr (command_line_buffer); /* prepare to construct it in automatic storage */ 412 command_line_lth = 0; 413 command_line_max_lth = maxlength (command_line_buffer); 414 temp_seg_ptr = null (); 415 temp_seg_comment = ssu_$get_request_name (sci_ptr); 416 417 on condition (cleanup) 418 begin; 419 if temp_seg_ptr ^= null () then call ssu_$release_temp_segment (sci_ptr, temp_seg_ptr); 420 end; 421 422 call hcs_$fs_get_path_name (seg_ptr, dirname, (0), ename, code); 423 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Cannot determine pathname of temporary segment."); 424 425 pathname = pathname_ (dirname, ename); 426 if substr (pathname, 1, length (LONG_PDD_NAME)) = LONG_PDD_NAME then 427 pathname = ">pdd>" || substr (pathname, length (LONG_PDD_NAME) + 1); 428 429 if P_input_lth >= 0 then do; /* set the bitcount of the segment before going on */ 430 call hcs_$status_mins (seg_ptr, (0), old_seg_bc, code); 431 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Cannot get original bitcount of ^a.", pathname); 432 call hcs_$set_bc_seg (seg_ptr, (9 * P_input_lth), code); 433 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Cannot set bitcount of ^a.", pathname); 434 end; 435 436 do arg_idx = P_first_argument to n_arguments; 437 call ssu_$arg_ptr (sci_ptr, arg_idx, argument_ptr, argument_lth); 438 439 call add_to_command_line (argument); 440 end; 441 442 call add_to_command_line (pathname); /* and add the pathname, too */ 443 444 if af_sw then /* now, do it! */ 445 call cu_$evaluate_active_string (null (), command_line, NORMAL_ACTIVE_STRING, return_string, code); 446 else call cu_$cp (command_line_ptr, command_line_lth, code); 447 448 if temp_seg_ptr ^= null () then /* if we got one, get rid of it */ 449 call ssu_$release_temp_segment (sci_ptr, temp_seg_ptr); 450 451 if code = 100 then /* and ignore this one */ 452 code = 0; 453 454 if code ^= 0 then /* punt the request line if it failed */ 455 call ssu_$abort_line (sci_ptr, code); 456 457 call hcs_$status_mins (seg_ptr, (0), new_seg_bc, code); 458 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Cannot determine bitcount of ^a.", pathname); 459 460 P_output_lth = divide (new_seg_bc, 9, 21, 0); /* return the new length */ 461 462 if P_input_lth >= 0 then do; /* now, re-set the bitcount of the segment before returning */ 463 call hcs_$set_bc_seg (seg_ptr, old_seg_bc, code); 464 if code ^= 0 then call ssu_$abort_line (sci_ptr, code, "Cannot restore old bitcount of ^a.", pathname); 465 end; 466 467 return; 468 469 /* */ 470 471 /* Add the string to the command line expanding into a temporary segment if necessary */ 472 473 add_to_command_line: 474 procedure (p_string); 475 476 dcl p_string character (*) parameter; 477 dcl str_lth fixed binary (21); 478 479 str_lth = length (p_string); 480 481 if (command_line_lth + str_lth + 1) > command_line_max_lth then do; 482 if temp_seg_ptr ^= null () then call ssu_$abort_line (sci_ptr, error_table_$command_line_overflow); 483 call ssu_$get_temp_segment (sci_ptr, temp_seg_comment, temp_seg_ptr); 484 485 temp_seg_ptr -> command_line = command_line; /* copy what we already have */ 486 command_line_ptr = temp_seg_ptr; /* and then update the command_line_XXX values */ 487 command_line_max_lth = 4 * sys_info$max_seg_size; 488 end; 489 490 if command_line_lth > 0 then do; /* put a space between tokens */ 491 command_line_lth = command_line_lth + 1; 492 substr (command_line, command_line_lth, 1) = " "; 493 end; 494 495 substr (command_line, command_line_lth + 1, str_lth) = p_string; 496 command_line_lth = command_line_lth + str_lth; /* copy in the argument */ 497 498 return; 499 500 end add_to_command_line; 501 502 /* */ 503 2 1 /* BEGIN: _ssu_check_sci.incl.pl1 * * * * * */ 2 2 2 3 /* Created: 25 February 1982 by G. Palter */ 2 4 /* Modified: 6 November 1984 by G. Palter for version 3 and new sub_err_ 2 5* calling sequence */ 2 6 2 7 2 8 /****^ HISTORY COMMENTS: 2 9* 1) change(87-02-07,GDixon), approve(87-05-25,MCR7680), 2 10* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 2 11* Modified to verify that p_sci_ptr has proper its modifier by overlaying it 2 12* with the structure in its.incl.pl1, rather than assuming knowledge of 2 13* pointer format. 2 14* END HISTORY COMMENTS */ 2 15 2 16 2 17 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 2 18 2 19 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 20 /* */ 2 21 /* Validates that the caller's sci_ptr acutally references a valid */ 2 22 /* subsystem control info structure. */ 2 23 /* */ 2 24 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 25 2 26 ssu_check_sci: 2 27 procedure (p_sci_ptr); 2 28 2 29 dcl p_sci_ptr pointer parameter; 2 30 2 31 dcl SSU_ character (32) static options (constant) initial ("ssu_"); 2 32 2 33 dcl error_table_$bad_ptr fixed binary (35) external; 2 34 dcl error_table_$null_info_ptr fixed binary (35) external; 2 35 dcl error_table_$unimplemented_version fixed binary (35) external; 2 36 2 37 dcl sub_err_ entry () options (variable); 2 38 2 39 dcl (null, substr, unspec) builtin; 2 40 2 41 if addr(p_sci_ptr) -> its.its_mod ^= ITS_MODIFIER then do; 2 42 RESIGNAL_BAD_POINTER: 2 43 call sub_err_ (error_table_$bad_ptr, SSU_, ACTION_CANT_RESTART, null (), (0), "^24.3b", unspec (p_sci_ptr)); 2 44 go to RESIGNAL_BAD_POINTER; 2 45 end; 2 46 2 47 if p_sci_ptr = null () then do; 2 48 RESIGNAL_NULL_POINTER: 2 49 call sub_err_ (error_table_$null_info_ptr, SSU_, ACTION_CANT_RESTART, null (), (0), "sci_ptr"); 2 50 go to RESIGNAL_NULL_POINTER; 2 51 end; 2 52 2 53 if p_sci_ptr -> sci.version = SCI_VERSION_3 then /* all is well */ 2 54 return; 2 55 2 56 RESIGNAL_BAD_VERSION: 2 57 call sub_err_ (error_table_$unimplemented_version, SSU_, ACTION_CANT_RESTART, null (), (0), "^24.3b", 2 58 unspec (p_sci_ptr -> sci.version)); 2 59 go to RESIGNAL_BAD_VERSION; 2 60 3 1 /* BEGIN INCLUDE FILE its.incl.pl1 3 2* modified 27 July 79 by JRDavis to add its_unsigned 3 3* Internal format of ITS pointer, including ring-number field for follow-on processor */ 3 4 3 5 dcl 1 its based aligned, /* declaration for ITS type pointer */ 3 6 2 pad1 bit (3) unaligned, 3 7 2 segno bit (15) unaligned, /* segment number within the pointer */ 3 8 2 ringno bit (3) unaligned, /* ring number within the pointer */ 3 9 2 pad2 bit (9) unaligned, 3 10 2 its_mod bit (6) unaligned, /* should be 43(8) */ 3 11 3 12 2 offset bit (18) unaligned, /* word offset within the addressed segment */ 3 13 2 pad3 bit (3) unaligned, 3 14 2 bit_offset bit (6) unaligned, /* bit offset within the word */ 3 15 2 pad4 bit (3) unaligned, 3 16 2 mod bit (6) unaligned; /* further modification */ 3 17 3 18 dcl 1 itp based aligned, /* declaration for ITP type pointer */ 3 19 2 pr_no bit (3) unaligned, /* number of pointer register to use */ 3 20 2 pad1 bit (27) unaligned, 3 21 2 itp_mod bit (6) unaligned, /* should be 41(8) */ 3 22 3 23 2 offset bit (18) unaligned, /* word offset from pointer register word offset */ 3 24 2 pad2 bit (3) unaligned, 3 25 2 bit_offset bit (6) unaligned, /* bit offset relative to new word offset */ 3 26 2 pad3 bit (3) unaligned, 3 27 2 mod bit (6) unaligned; /* further modification */ 3 28 3 29 3 30 dcl 1 its_unsigned based aligned, /* just like its, but with unsigned binary */ 3 31 2 pad1 bit (3) unaligned, 3 32 2 segno fixed bin (15) unsigned unaligned, 3 33 2 ringno fixed bin (3) unsigned unaligned, 3 34 2 pad2 bit (9) unaligned, 3 35 2 its_mod bit (6) unaligned, 3 36 3 37 2 offset fixed bin (18) unsigned unaligned, 3 38 2 pad3 bit (3) unaligned, 3 39 2 bit_offset fixed bin (6) unsigned unaligned, 3 40 2 pad4 bit (3) unaligned, 3 41 2 mod bit (6) unaligned; 3 42 3 43 dcl 1 itp_unsigned based aligned, /* just like itp, but with unsigned binary where appropriate */ 3 44 2 pr_no fixed bin (3) unsigned unaligned, 3 45 2 pad1 bit (27) unaligned, 3 46 2 itp_mod bit (6) unaligned, 3 47 3 48 2 offset fixed bin (18) unsigned unaligned, 3 49 2 pad2 bit (3) unaligned, 3 50 2 bit_offset fixed bin (6) unsigned unaligned, 3 51 2 pad3 bit (3) unaligned, 3 52 2 mod bit (6) unaligned; 3 53 3 54 3 55 dcl ITS_MODIFIER bit (6) unaligned internal static options (constant) init ("43"b3); 3 56 dcl ITP_MODIFIER bit (6) unaligned internal static options (constant) init ("41"b3); 3 57 3 58 /* END INCLUDE FILE its.incl.pl1 */ 2 61 2 62 4 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 4 2 /* format: style3 */ 4 3 4 4 /* These constants are to be used for the flags argument of sub_err_ */ 4 5 /* They are just "string (condition_info_header.action_flags)" */ 4 6 4 7 declare ( 4 8 ACTION_CAN_RESTART init (""b), 4 9 ACTION_CANT_RESTART init ("1"b), 4 10 ACTION_DEFAULT_RESTART 4 11 init ("01"b), 4 12 ACTION_QUIET_RESTART 4 13 init ("001"b), 4 14 ACTION_SUPPORT_SIGNAL 4 15 init ("0001"b) 4 16 ) bit (36) aligned internal static options (constant); 4 17 4 18 /* End include file */ 2 63 2 64 2 65 end ssu_check_sci; 2 66 2 67 2 68 /* END OF: _ssu_check_sci.incl.pl1 * * * * * */ 504 505 5 1 /* BEGIN INCLUDE FILE ... _ssu_sci.incl.pl1 */ 5 2 /* Created: 31 April 1980 by W. Olin Sibert */ 5 3 /* Modified: 17 November 1981 by Jay Pattin to add info_prefix */ 5 4 /* Modified: 10 December 1981 by G. Palter to make arg_count, arg_ptr, return_arg, and arg_list_ptr replaceable */ 5 5 /* Modified: 10 February 1982 by G. Palter to reorganize and make changes required for installation */ 5 6 /* Modified: June 1982 by G. Palter for version 2 (new request processor options and replaceable procedures) */ 5 7 /* Modified: 6 November 1984 by G. Palter for version 3 (get_subsystem_and_request_name is now replaceable) */ 5 8 5 9 /* format: style4,^delnl */ 5 10 5 11 5 12 /* Structure used internally by subsystem utilities to contain control information about a single invocation */ 5 13 5 14 dcl 1 sci aligned based (sci_ptr), 5 15 2 version character (8), 5 16 2 parent_area_ptr pointer, /* -> area holding this data and referenced structures */ 5 17 5 18 2 global_info, /* global information about this subsystem ... */ 5 19 3 subsystem_name char (32) unaligned, /* ... its name (eg: read_mail) */ 5 20 3 subsystem_version char (32) unaligned, /* ... its version numer (eg: 4.3j) */ 5 21 3 info_ptr pointer, /* ... -> data maintained by the subsystem */ 5 22 3 standalone_abort_entry entry () variable, /* ... for standalone invocations: called by ssu_$abort_* */ 5 23 3 flags, 5 24 4 standalone_invocation bit (1) unaligned, /* ... ON => ssu_$standalone_invocation was used */ 5 25 4 in_listener bit (1) unaligned, /* ... ON => in subsystem listener loop */ 5 26 4 executing_request bit (1) unaligned, /* ... ON => executing a request */ 5 27 4 debug_mode bit (1) unaligned, /* ... ON => debugging the subsystem */ 5 28 4 pad bit (32) unaligned, 5 29 5 30 2 recursion_info, /* describes relationship of this invocation to other active 5 31* invocations of the same subsystem ... */ 5 32 3 invocation_data_idx fixed binary, /* ... locates the list of active invocations */ 5 33 3 level fixed binary, /* ... # of active invocations when this one created + 1 */ 5 34 3 previous_sci_ptr pointer, /* ... -> description of previous invocation */ 5 35 3 next_sci_ptr pointer, /* ... -> description of next invocation */ 5 36 5 37 2 request_processor_info, /* information related to request line processing ... */ 5 38 3 request_tables_ptr pointer, /* ... -> list of request tables in use */ 5 39 3 rp_options_ptr pointer, /* ... -> options controlling the processor */ 5 40 3 abort_line_label label variable, 5 41 3 request_data_ptr pointer, /* ... -> request_data structure for current request */ 5 42 5 43 2 prompt_and_ready_info, /* information related to prompts and ready messages ... */ 5 44 3 prompt character (64) varying, /* the prompt (if any): an ioa_ control string */ 5 45 3 prompt_mode, /* controls prompting ... */ 5 46 4 dont_prompt bit (1) unaligned, /* ... ON => never prompt */ 5 47 4 prompt_after_null_lines bit (1) unaligned, /* ... ON => prompt after a blank line if prompts enabled */ 5 48 4 dont_prompt_if_typeahead bit (1) unaligned, /* ... ON => suppress prompts if request line available */ 5 49 4 pad bit (33) unaligned, 5 50 3 ready_enabled bit (1) aligned, /* ... ON => ready procedure should be invoked */ 5 51 5 52 2 listener_info, /* information used by the listener ... */ 5 53 3 abort_subsystem_label label variable, 5 54 3 temp_seg_ptr pointer, /* ... -> temporary segment used for long request lines */ 5 55 5 56 2 temp_info_ptr pointer, /* pointer to data used by ssu_temp_mgr_ */ 5 57 5 58 2 info_info, /* information related to self-documentation ... */ 5 59 3 info_dirs_ptr pointer, /* ... -> list of info directories */ 5 60 3 info_prefix character (32), /* ... prefix used to form info segment names */ 5 61 5 62 2 ec_info, /* data for subsystem exec_com processing ... */ 5 63 3 ec_suffix char (32) unaligned, /* ... suffix of exec_com segments */ 5 64 3 ec_search_list char (32) unaligned, /* ... search list used to find exec_coms */ 5 65 3 subsystem_dir_ptr pointer, /* ... defines referencing_dir rule for above search list */ 5 66 5 67 2 entries, /* all replaceable entries ... */ 5 68 ( 5 69 3 abort_line, /* ... invoked by ssu_$abort_line */ 5 70 3 abort_subsystem, /* ... invoked by ssu_$abort_subsystem */ 5 71 3 print_message, /* ... invoked by ssu_$print_message */ 5 72 3 program_interrupt, /* ... cannot be called externally */ 5 73 3 pre_request_line, /* ... cannot be called externally */ 5 74 3 post_request_line, /* ... cannot be called externally */ 5 75 3 ready, /* ... invoked by ssu_$ready_proc */ 5 76 3 cpescape, /* ... cannot be called externally */ 5 77 3 unknown_request, /* ... invoked by ssu_$unknown_request */ 5 78 3 listen, /* ... invoked by ssu_$listen */ 5 79 3 execute_line, /* ... invoked by ssu_$execute_line */ 5 80 3 evaluate_active_string, /* ... invoked by ssu_$evaluate_active_string */ 5 81 3 invoke_request, /* ... invoked by ssu_$invoke_request */ 5 82 3 locate_request, /* ... invoked by ssu_$locate_request */ 5 83 3 arg_count, /* ... invoked by ssu_$arg_count */ 5 84 3 arg_ptr, /* ... invoked by ssu_$arg_ptr */ 5 85 3 return_arg, /* ... invoked by ssu_$return_arg */ 5 86 3 arg_list_ptr, /* ... invoked by ssu_$arg_list_ptr */ 5 87 3 get_default_rp_options, /* ... invoked by ssu_$get_default_rp_options */ 5 88 3 get_rp_options, /* ... invoked by ssu_$get_request_processor_options */ 5 89 3 set_rp_options, /* ... invoked by ssu_$set_request_processor_options */ 5 90 3 reset_rp_options, /* ... invoked by ssu_$reset_request_processor_options */ 5 91 3 get_subsys_and_request_name /* ... invoked by ssu_$get_subsystem_and_request_name */ 5 92 ) entry () variable options (variable); 5 93 5 94 dcl sci_ptr pointer; 5 95 5 96 dcl sci_parent_area area based (sci.parent_area_ptr); 5 97 5 98 dcl SCI_VERSION_3 character (8) static options (constant) init ("sci_0003"); 5 99 5 100 /* END INCLUDE FILE ... _ssu_sci.incl.pl1 */ 506 507 6 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 6 2* 6 3* Values for the "access mode" argument so often used in hardcore 6 4* James R. Davis 26 Jan 81 MCR 4844 6 5* Added constants for SM access 4/28/82 Jay Pattin 6 6* Added text strings 03/19/85 Chris Jones 6 7**/ 6 8 6 9 6 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 6 11 dcl ( 6 12 N_ACCESS init ("000"b), 6 13 R_ACCESS init ("100"b), 6 14 E_ACCESS init ("010"b), 6 15 W_ACCESS init ("001"b), 6 16 RE_ACCESS init ("110"b), 6 17 REW_ACCESS init ("111"b), 6 18 RW_ACCESS init ("101"b), 6 19 S_ACCESS init ("100"b), 6 20 M_ACCESS init ("010"b), 6 21 A_ACCESS init ("001"b), 6 22 SA_ACCESS init ("101"b), 6 23 SM_ACCESS init ("110"b), 6 24 SMA_ACCESS init ("111"b) 6 25 ) bit (3) internal static options (constant); 6 26 6 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 6 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 6 29 6 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 6 31 static options (constant); 6 32 6 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 6 34 static options (constant); 6 35 6 36 dcl ( 6 37 N_ACCESS_BIN init (00000b), 6 38 R_ACCESS_BIN init (01000b), 6 39 E_ACCESS_BIN init (00100b), 6 40 W_ACCESS_BIN init (00010b), 6 41 RW_ACCESS_BIN init (01010b), 6 42 RE_ACCESS_BIN init (01100b), 6 43 REW_ACCESS_BIN init (01110b), 6 44 S_ACCESS_BIN init (01000b), 6 45 M_ACCESS_BIN init (00010b), 6 46 A_ACCESS_BIN init (00001b), 6 47 SA_ACCESS_BIN init (01001b), 6 48 SM_ACCESS_BIN init (01010b), 6 49 SMA_ACCESS_BIN init (01011b) 6 50 ) fixed bin (5) internal static options (constant); 6 51 6 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 508 509 510 end ssu_misc_requests_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1539.3 ssu_misc_requests_.pl1 >special_ldd>install>MR12.1-1054>ssu_misc_requests_.pl1 86 1 09/22/80 1256.7 cp_active_string_types.incl.pl1 >ldd>include>cp_active_string_types.incl.pl1 504 2 08/04/87 1140.5 _ssu_check_sci.incl.pl1 >spec>install>1056>_ssu_check_sci.incl.pl1 2-61 3 11/26/79 1320.6 its.incl.pl1 >ldd>include>its.incl.pl1 2-63 4 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 506 5 01/21/85 0912.2 _ssu_sci.incl.pl1 >ldd>include>_ssu_sci.incl.pl1 508 6 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.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. ACTION_CANT_RESTART 000054 constant bit(36) initial dcl 4-7 set ref 2-42* 2-48* 2-56* CANT_RESTART 000023 constant char(1) initial unaligned dcl 118 set ref 146* ITS_MODIFIER constant bit(6) initial unaligned dcl 3-55 ref 2-41 LONG_PDD_NAME 000012 constant varying char(32) initial dcl 120 ref 426 426 426 NORMAL_ACTIVE_STRING 000074 constant fixed bin(17,0) initial dcl 1-6 set ref 379* 444* P_first_argument parameter fixed bin(17,0) dcl 37 ref 401 436 P_info_ptr parameter pointer dcl 35 ref 135 155 175 193 212 278 298 307 327 350 P_input_lth parameter fixed bin(21,0) dcl 39 ref 401 429 432 462 P_output_lth parameter fixed bin(21,0) dcl 40 set ref 401 460* P_sci_ptr parameter pointer dcl 33 set ref 135 138 155 158 175 178 193 196 212 215 278 281 298 307 313 327 330 350 353 401 404* 406 P_seg_ptr parameter pointer dcl 38 ref 401 407 R_ACCESS 000054 constant bit(3) initial unaligned dcl 6-11 set ref 266* SCI_VERSION_3 000010 constant char(8) initial unaligned dcl 5-98 ref 2-53 SSU_ 000000 constant char(32) initial unaligned dcl 2-31 set ref 2-42* 2-48* 2-56* abbrev_switch 001120 automatic bit(1) dcl 65 set ref 163* 166* 221* 222 227* 233* 234* 236* 245* addr builtin function dcl 124 ref 361 411 2-41 af_sw 000104 automatic bit(1) dcl 49 set ref 180* 183 198* 201 217* 219 355* 357 379 409* 444 arg_idx 000110 automatic fixed bin(17,0) dcl 54 set ref 230* 231* 237* 237* 258 261* 373* 374* 436* 437* argument based char unaligned dcl 45 set ref 232 233 234 235 240* 263* 264* 339 339 340 340 376* 439* argument_lth 000100 automatic fixed bin(21,0) dcl 46 set ref 231* 232 233 234 235 240 240 261* 263 263 264 264 337* 339 339 340 340 374* 376 376 437* 439 439 argument_ptr 000102 automatic pointer dcl 47 set ref 231* 232 233 234 235 240 261* 263 264 337* 339 339 340 340 374* 376 437* 439 cleanup 001320 stack reference condition dcl 122 ref 368 417 code 001116 automatic fixed bin(35,0) dcl 61 set ref 263* 264 264* 266* 267 267* 286* 288 290* 379* 381* 386 386* 389 389* 422* 423 423* 430* 431 431* 432* 433 433* 444* 446* 451 451* 454 454* 457* 458 458* 463* 464 464* command_line based char unaligned dcl 57 set ref 379* 444* 485* 485 492* 495* command_line_buffer 000112 automatic char(2048) unaligned dcl 56 set ref 361 363 411 413 command_line_lth 001112 automatic fixed bin(21,0) dcl 58 set ref 362* 379 379 381* 412* 444 444 446* 481 485 485 490 491* 491 492 492 495 495 496* 496 command_line_max_lth 001113 automatic fixed bin(21,0) dcl 58 set ref 363* 413* 481 487* command_line_ptr 001114 automatic pointer dcl 59 set ref 361* 379 381* 411* 444 446* 485 486* 492 495 cu_$cp 000024 constant entry external dcl 91 ref 381 446 cu_$evaluate_active_string 000022 constant entry external dcl 90 ref 379 444 default_profile_ptr 001122 automatic pointer dcl 66 set ref 228* 245* dirname 001146 automatic char(168) unaligned dcl 74 set ref 422* 425* divide builtin function dcl 124 ref 460 ename 001220 automatic char(32) unaligned dcl 75 set ref 422* 425* error_table_$bad_ptr 000110 external static fixed bin(35,0) dcl 2-33 set ref 2-42* error_table_$badopt 000010 external static fixed bin(35,0) dcl 82 set ref 240* error_table_$command_line_overflow 000012 external static fixed bin(35,0) dcl 82 set ref 482* error_table_$fatal_error 000014 external static fixed bin(35,0) dcl 82 set ref 146* error_table_$noarg 000016 external static fixed bin(35,0) dcl 82 set ref 258* error_table_$null_info_ptr 000112 external static fixed bin(35,0) dcl 2-34 set ref 2-48* error_table_$unimplemented_version 000114 external static fixed bin(35,0) dcl 2-35 set ref 2-56* expand_pathname_$add_suffix 000026 constant entry external dcl 92 ref 263 hcs_$fs_get_path_name 000030 constant entry external dcl 93 ref 422 hcs_$set_bc_seg 000032 constant entry external dcl 94 ref 432 463 hcs_$status_mins 000034 constant entry external dcl 95 ref 430 457 index builtin function dcl 124 ref 232 initiate_file_ 000036 constant entry external dcl 96 ref 266 ioa_ 000040 constant entry external dcl 97 ref 166 185 203 its based structure level 1 dcl 3-5 its_mod 0(30) based bit(6) level 2 packed unaligned dcl 3-5 ref 2-41 length builtin function dcl 124 ref 426 426 479 level 001117 automatic fixed bin(17,0) dcl 63 set ref 164* 166 166* maxlength builtin function dcl 124 ref 363 413 n_arguments 000111 automatic fixed bin(17,0) dcl 54 set ref 140* 141 160* 161 180* 181 198* 199 217* 220 230 258 283* 284 316* 317 332* 334 355* 357 373 409* 436 new_seg_bc 001317 automatic fixed bin(24,0) dcl 79 set ref 457* 460 null builtin function dcl 2-39 in procedure "ssu_check_sci" ref 2-42 2-42 2-47 2-48 2-48 2-56 2-56 null builtin function dcl 124 in procedure "ssu_misc_requests_" ref 146 146 163 163 221 221 365 370 379 379 383 414 419 444 444 448 482 old_seg_bc 001316 automatic fixed bin(24,0) dcl 79 set ref 430* 463* p_sci_ptr parameter pointer dcl 2-29 set ref 2-26 2-41 2-42 2-42 2-47 2-53 2-56 2-56 p_string parameter char unaligned dcl 476 ref 473 479 495 pathname 001230 automatic char(204) unaligned dcl 76 set ref 425* 426 426* 426 431* 433* 442* 458* 464* pathname_ 000042 constant entry external dcl 98 ref 267 267 425 profile_dirname 001342 automatic char(168) unaligned dcl 255 set ref 263* 266* 267* 267* profile_ename 001414 automatic char(32) unaligned dcl 256 set ref 263* 266* 267* 267* profile_ptr 001124 automatic pointer dcl 66 set ref 228* 245* 266* ready_mode 001132 automatic bit(1) dcl 69 set ref 301* 310* 319* ready_procedure 001126 automatic entry variable dcl 68 set ref 286* 288 return_string based varying char dcl 50 set ref 183* 201* 222* 223* 379* 444* return_string_lth 000105 automatic fixed bin(21,0) dcl 51 set ref 180* 183 198* 201 217* 222 223 355* 379 409* 444 return_string_ptr 000106 automatic pointer dcl 52 set ref 180* 183 198* 201 217* 222 223 355* 379 409* 444 rtrim builtin function dcl 124 ref 183 201 sci based structure level 1 dcl 5-14 sci_ptr 001326 automatic pointer dcl 5-94 set ref 128* 138* 140* 143* 146* 158* 160* 163* 164* 166* 166* 166* 166* 178* 180* 183* 185* 185* 196* 198* 201* 203* 203* 215* 217* 221* 228* 231* 240* 242* 242* 242* 245* 258* 261* 264* 267* 281* 283* 286* 288* 290* 313* 316* 319* 330* 332* 334* 334* 334* 337* 339* 340* 341* 341* 341* 353* 355* 357* 357* 357* 366* 370* 374* 383* 389* 406* 409* 415* 419* 423* 431* 433* 437* 448* 454* 458* 464* 482* 483* seg_ptr 001314 automatic pointer dcl 78 set ref 407* 422* 430* 432* 457* 463* ssu_$abort_line 000044 constant entry external dcl 99 ref 128 240 242 258 264 267 290 334 341 357 389 423 431 433 454 458 464 482 ssu_$abort_subsystem 000046 constant entry external dcl 100 ref 143 ssu_$arg_count 000050 constant entry external dcl 101 ref 140 160 283 316 332 ssu_$arg_ptr 000052 constant entry external dcl 102 ref 231 261 337 374 437 ssu_$get_abbrev_info 000054 constant entry external dcl 103 ref 163 221 228 ssu_$get_invocation_count 000056 constant entry external dcl 104 ref 164 ssu_$get_procedure 000060 constant entry external dcl 105 ref 286 ssu_$get_request_name 000062 constant entry external dcl 106 ref 242 242 334 334 341 341 357 357 366 415 ssu_$get_subsystem_and_request_name 000064 constant entry external dcl 107 ref 146 ssu_$get_subsystem_name 000066 constant entry external dcl 108 ref 166 166 183 185 185 ssu_$get_subsystem_version 000070 constant entry external dcl 109 ref 166 166 201 203 203 ssu_$get_temp_segment 000072 constant entry external dcl 110 ref 483 ssu_$release_temp_segment 000074 constant entry external dcl 111 ref 370 383 419 448 ssu_$return_arg 000076 constant entry external dcl 112 ref 180 198 217 355 409 ssu_$set_abbrev_info 000100 constant entry external dcl 113 ref 245 ssu_$set_debug_mode 000102 constant entry external dcl 114 ref 339 340 ssu_$set_ready_mode 000104 constant entry external dcl 115 ref 319 str_lth 001432 automatic fixed bin(21,0) dcl 477 set ref 479* 481 495 496 sub_err_ 000106 constant entry external dcl 116 in procedure "ssu_misc_requests_" ref 146 sub_err_ 000116 constant entry external dcl 2-37 in procedure "ssu_check_sci" ref 2-42 2-48 2-56 substr builtin function dcl 124 set ref 426 426 492* 495* sys_info$max_seg_size 000020 external static fixed bin(19,0) dcl 88 ref 487 temp_seg_comment 001136 automatic char(32) unaligned dcl 72 set ref 366* 415* 483* temp_seg_ptr 001134 automatic pointer dcl 71 set ref 365* 370 370* 383 383* 414* 419 419* 448 448* 482 483* 485 486 unspec builtin function dcl 2-39 ref 2-42 2-42 2-56 2-56 version based char(8) level 2 dcl 5-14 ref 2-53 2-56 2-56 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 4-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 4-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 4-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 4-7 ATOMIC_ACTIVE_STRING internal static fixed bin(17,0) initial dcl 1-6 A_ACCESS internal static bit(3) initial unaligned dcl 6-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 DEFAULT_ACTIVE_STRING internal static fixed bin(17,0) initial dcl 1-6 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 6-33 E_ACCESS internal static bit(3) initial unaligned dcl 6-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 ITP_MODIFIER internal static bit(6) initial unaligned dcl 3-56 M_ACCESS internal static bit(3) initial unaligned dcl 6-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 N_ACCESS internal static bit(3) initial unaligned dcl 6-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 REW_ACCESS internal static bit(3) initial unaligned dcl 6-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 RE_ACCESS internal static bit(3) initial unaligned dcl 6-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 RW_ACCESS internal static bit(3) initial unaligned dcl 6-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SA_ACCESS internal static bit(3) initial unaligned dcl 6-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 6-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 6-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SM_ACCESS internal static bit(3) initial unaligned dcl 6-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 S_ACCESS internal static bit(3) initial unaligned dcl 6-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 TOKENS_ONLY_ACTIVE_STRING internal static fixed bin(17,0) initial dcl 1-6 W_ACCESS internal static bit(3) initial unaligned dcl 6-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 itp based structure level 1 dcl 3-18 itp_unsigned based structure level 1 dcl 3-43 its_unsigned based structure level 1 dcl 3-30 sci_parent_area based area(1024) dcl 5-96 substr builtin function dcl 2-39 NAMES DECLARED BY EXPLICIT CONTEXT. NO_ARGS_EXIT 000317 constant label dcl 128 ref 141 161 181 199 220 284 317 READY_ON_OFF_COMMON 001575 constant label dcl 313 ref 302 311 RESIGNAL_BAD_POINTER 003715 constant label dcl 2-42 ref 2-44 RESIGNAL_BAD_VERSION 004047 constant label dcl 2-56 set ref 2-59 RESIGNAL_NULL_POINTER 003775 constant label dcl 2-48 ref 2-50 RETRY_QUIT 000375 constant label dcl 143 ref 149 abbrev 001107 constant entry external dcl 212 add_to_command_line 003570 constant entry internal dcl 473 ref 376 439 442 apply_request_util 002424 constant entry external dcl 401 debug_mode 001630 constant entry external dcl 327 execute 002063 constant entry external dcl 350 get_profile 003325 constant entry internal dcl 252 ref 238 quit 000351 constant entry external dcl 135 ready 001441 constant entry external dcl 278 ready_off 001566 constant entry external dcl 307 ready_on 001554 constant entry external dcl 298 self_identify 000472 constant entry external dcl 155 ssu_check_sci 003707 constant entry internal dcl 2-26 ref 404 ssu_misc_requests_ 000311 constant entry external dcl 25 subsystem_name 000641 constant entry external dcl 175 subsystem_version 000764 constant entry external dcl 193 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4710 5030 4133 4720 Length 5470 4133 120 424 555 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ssu_misc_requests_ 1124 external procedure is an external procedure. get_profile internal procedure shares stack frame of external procedure ssu_misc_requests_. on unit on line 368 70 on unit on unit on line 417 70 on unit add_to_command_line internal procedure shares stack frame of external procedure ssu_misc_requests_. ssu_check_sci internal procedure shares stack frame of external procedure ssu_misc_requests_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ssu_misc_requests_ 000100 argument_lth ssu_misc_requests_ 000102 argument_ptr ssu_misc_requests_ 000104 af_sw ssu_misc_requests_ 000105 return_string_lth ssu_misc_requests_ 000106 return_string_ptr ssu_misc_requests_ 000110 arg_idx ssu_misc_requests_ 000111 n_arguments ssu_misc_requests_ 000112 command_line_buffer ssu_misc_requests_ 001112 command_line_lth ssu_misc_requests_ 001113 command_line_max_lth ssu_misc_requests_ 001114 command_line_ptr ssu_misc_requests_ 001116 code ssu_misc_requests_ 001117 level ssu_misc_requests_ 001120 abbrev_switch ssu_misc_requests_ 001122 default_profile_ptr ssu_misc_requests_ 001124 profile_ptr ssu_misc_requests_ 001126 ready_procedure ssu_misc_requests_ 001132 ready_mode ssu_misc_requests_ 001134 temp_seg_ptr ssu_misc_requests_ 001136 temp_seg_comment ssu_misc_requests_ 001146 dirname ssu_misc_requests_ 001220 ename ssu_misc_requests_ 001230 pathname ssu_misc_requests_ 001314 seg_ptr ssu_misc_requests_ 001316 old_seg_bc ssu_misc_requests_ 001317 new_seg_bc ssu_misc_requests_ 001326 sci_ptr ssu_misc_requests_ 001342 profile_dirname get_profile 001414 profile_ename get_profile 001432 str_lth add_to_command_line THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a alloc_char_temp call_ent_var call_ext_out_desc call_ext_out return_mac enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$cp cu_$evaluate_active_string expand_pathname_$add_suffix hcs_$fs_get_path_name hcs_$set_bc_seg hcs_$status_mins initiate_file_ ioa_ pathname_ ssu_$abort_line ssu_$abort_subsystem ssu_$arg_count ssu_$arg_ptr ssu_$get_abbrev_info ssu_$get_invocation_count ssu_$get_procedure ssu_$get_request_name ssu_$get_subsystem_and_request_name ssu_$get_subsystem_name ssu_$get_subsystem_version ssu_$get_temp_segment ssu_$release_temp_segment ssu_$return_arg ssu_$set_abbrev_info ssu_$set_debug_mode ssu_$set_ready_mode sub_err_ sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_ptr error_table_$badopt error_table_$command_line_overflow error_table_$fatal_error error_table_$noarg error_table_$null_info_ptr error_table_$unimplemented_version sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000310 28 000316 128 000317 135 000344 138 000356 140 000362 141 000373 143 000375 146 000413 149 000467 155 000470 158 000477 160 000503 161 000514 163 000516 164 000536 166 000552 169 000636 175 000637 178 000646 180 000652 181 000671 183 000673 185 000731 187 000761 193 000762 196 000771 198 000775 199 001014 201 001016 203 001054 205 001104 212 001105 215 001114 217 001120 219 001137 220 001142 221 001144 222 001164 223 001201 224 001212 227 001213 228 001215 230 001234 231 001243 232 001260 233 001274 234 001302 235 001311 236 001315 237 001317 238 001320 239 001321 240 001322 241 001354 242 001355 243 001417 245 001421 247 001436 278 001437 281 001446 283 001452 284 001463 286 001465 288 001514 290 001525 292 001551 298 001552 301 001561 302 001563 307 001564 310 001573 311 001574 313 001575 316 001601 317 001612 319 001614 321 001625 327 001626 330 001635 332 001641 334 001652 337 001722 339 001741 340 001767 341 002013 343 002060 350 002061 353 002070 355 002074 357 002113 361 002162 362 002164 363 002165 365 002167 366 002171 368 002202 370 002216 371 002233 373 002234 374 002243 376 002260 377 002273 379 002275 381 002343 383 002356 386 002373 389 002377 392 002416 401 002417 404 002431 406 002440 407 002444 409 002447 411 002466 412 002470 413 002471 414 002473 415 002475 417 002506 419 002522 420 002537 422 002540 423 002572 425 002620 426 002643 429 002665 430 002671 431 002707 432 002741 433 002760 436 003012 437 003023 439 003040 440 003053 442 003055 444 003060 446 003126 448 003141 451 003156 454 003162 457 003201 458 003217 460 003251 462 003255 463 003257 464 003272 467 003324 252 003325 258 003326 261 003355 263 003372 264 003430 266 003456 267 003514 270 003567 473 003570 479 003601 481 003602 482 003606 483 003627 485 003647 486 003655 487 003656 490 003662 491 003664 492 003665 495 003672 496 003705 498 003706 2 26 003707 2 41 003711 2 42 003715 2 44 003770 2 47 003771 2 48 003775 2 50 004037 2 53 004040 2 56 004047 2 59 004123 ----------------------------------------------------------- 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