COMPILATION LISTING OF SEGMENT linus_set_format_options Compiled by: Multics PL/I Compiler, Release 28b, of April 11, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 09/16/83 1804.3 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* format: off */ 7 8 /* 9* 10* This is the main level procedure called by ssu_ to implement the 11* linus set_format_options request. Description and usage follows. 12* 13* Description: 14* 15* This request does one or more of the following actions. 16* 17* 1) Sets INDIVIDUAL formatting option values to USER SPECIFIED 18* VALUES. 19* 20* 2) Sets INDIVIDUAL formatting option values to SYSTEM DEFAULTS. 21* 22* 3) Sets ALL of the formatting option values to SYSTEM DEFAULTS. 23* 24* Usage: 25* 26* set_format_options {-format_option_args} {-control_args} 27* 28* 29* Both parameters are passed to this request by ssu_. 30* 31* 32* Known Bugs: 33* 34* Other Problems: 35* 36* History: 37* 38* Written - Al Dupuis - August 1983 39* 40**/ 41 42 linus_set_format_options: proc (sci_ptr_parm, lcb_ptr_parm); 43 44 dcl sci_ptr_parm ptr parm; /* ptr to the subsystem control info structure */ 45 dcl lcb_ptr_parm ptr parm; /* ptr to the linus control block info structure */ 46 47 /* 48* Mainline Processing Overview. 49* 50* (1) Go through the control args once setting the long and 51* reset flags. 52* 53* (2) Reset all values to system defaults if -reset is in effect. 54* 55* (3) Process the format option args, prompting for value if 56* requested, then setting the value to user provided or 57* system default value. 58**/ 59 60 61 call initialize; 62 63 if reset_flag 64 then do; 65 call linus_options$set_all_to_system_defaults (lcb_ptr, code); 66 if code ^= 0 67 then call ssu_$abort_line (sci_ptr, code); 68 if number_of_control_args = number_of_args_supplied 69 then return; 70 end; 71 72 current_arg_number = 1; 73 still_processing_format_option_args = ON; 74 75 do while (still_processing_format_option_args); 76 call get_argument_set; 77 call get_and_or_set_the_value; 78 end; 79 80 return; 81 82 get_accumulated_input: proc; 83 84 /* 85* Keep picking up pieces of the value concatenating each piece 86* to the one before with a blank separating each one. The value is 87* complete when we see the next format option name, which is 88* recognizable by the leading hyphen. If the arg before the 89* next format option name was -string then conceal the special 90* meaning of "-". The value is also complete when we exhaust the 91* format option arguments. 92**/ 93 94 still_adding_chunks_of_the_value = ON; 95 96 do while (still_adding_chunks_of_the_value); 97 98 call get_next_format_arg (code); 99 if code = NO_MORE_FORMAT_ARGS_LEFT 100 then return; 101 102 if substr (arg, 1, 1) = "-" 103 & ^this_is_a_string_arg (save_arg_number_for_hyphen_string) 104 then do; 105 still_adding_chunks_of_the_value = OFF; 106 current_arg_number = save_arg_number_for_hyphen_string + 1; 107 still_processing_format_option_args = ON; 108 end; 109 else option_value 110 = option_value || " " || substr (arg, 1, arg_length); 111 112 end; 113 114 return; 115 116 end get_accumulated_input; 117 118 get_and_or_set_the_value: proc; 119 120 /* 121* Pick up the rest of the value if necessary. If the 122* previous argument was -string then conceal the 123* special meaning of -prompt and -default. If the value contains 124* a trailing newline only then remove it. If the value contains 125* imedded newlines then make sure it ends with a newline. 126**/ 127 128 if option_value = "-default" 129 & ^this_is_a_string_arg (save_arg_number_for_hyphen_string) 130 then call linus_options$set_and_check (lcb_ptr, long_option_name, 131 option_identifier, option_value, SYSTEM_DEFAULT, code); 132 else do; 133 if option_value = "-prompt" 134 & ^this_is_a_string_arg (save_arg_number_for_hyphen_string) 135 then call get_prompted_input; 136 else call get_accumulated_input; 137 if length (option_value) > 0 138 then do; 139 if index (substr (option_value, 1, length (option_value) - 1), NEWLINE) ^= 0 140 then if substr (option_value, length (option_value)) ^= NEWLINE 141 then option_value = option_value || NEWLINE; 142 else; 143 else if substr (option_value, length (option_value)) = NEWLINE 144 then option_value = substr (option_value, 1, length (option_value) - 1); 145 else; 146 end; 147 call linus_options$set_and_check (lcb_ptr, long_option_name, 148 option_identifier, option_value, NOT_SYSTEM_DEFAULT, code); 149 end; 150 151 /* Report various errors. */ 152 153 if code ^= 0 154 then if code = linus_error_$bad_option_value 155 then if identifier_needed 156 then call ssu_$abort_line (sci_ptr, code, 157 "^/^a is not a valid value for ^a.", 158 option_value, normalized_option_name); 159 else call ssu_$abort_line (sci_ptr, code, 160 "^/^a is not a valid value for ^a.", 161 option_value, long_option_name); 162 else if code = error_table_$nomatch 163 then call ssu_$abort_line (sci_ptr, code, 164 "^/The column identifier ^a did not match any column names.", 165 option_identifier); 166 else call ssu_$abort_line (sci_ptr, code); 167 else; 168 169 return; 170 171 end get_and_or_set_the_value; 172 173 get_argument_set: proc; 174 175 /* Get the option name. */ 176 177 call get_next_format_arg (code); 178 if code ^= 0 179 then call ssu_$abort_line (sci_ptr, 0, 180 "Logic error while processing the request arguments."); 181 182 /* Translate the short or long name into a long name 183* and find out if a column identifier is needed. */ 184 185 option_name = arg; 186 call linus_options$check_name (lcb_ptr, option_name, 187 long_option_name, identifier_needed, code); 188 if code ^= 0 189 then if code = linus_error_$no_lila_expr_processed 190 then call ssu_$abort_line (sci_ptr, code, 191 "^/There must be columns defined before the value of ^a can be set.", 192 long_option_name); 193 else if code = linus_error_$bad_option_name 194 then call ssu_$abort_line (sci_ptr, code, 195 "^/^a is not a valid option name.", option_name); 196 else call ssu_$abort_line (sci_ptr, code); 197 else; 198 199 /* Get the identifier if its required and check to make sure it's 200* valid so that we never prompt the user for the value when the 201* option identifier is invalid. */ 202 203 if identifier_needed 204 then do; 205 call get_next_format_arg (code); 206 if code = NO_MORE_FORMAT_ARGS_LEFT 207 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 208 "The option name ^a was not followed by an identifier.", 209 long_option_name); 210 else; 211 option_identifier = arg; 212 call linus_options$check_identifier (lcb_ptr, long_option_name, 213 option_identifier, normalized_option_name, code); 214 if code ^= 0 215 then if code = linus_error_$bad_option_identifier 216 then call ssu_$abort_line (sci_ptr, code, 217 "^/^a is not a valid identifier for ^a.", 218 option_identifier, long_option_name); 219 else if code ^= error_table_$nostars 220 then call ssu_$abort_line (sci_ptr, code); 221 else; 222 else; 223 end; 224 else; 225 226 /* 227* Get the first part of the option value which might be the complete 228* value, part of the value, or the control args -default or -prompt. 229**/ 230 231 call get_next_format_arg (code); 232 if code = NO_MORE_FORMAT_ARGS_LEFT 233 then call ssu_$abort_line (sci_ptr, linus_error_$bad_option_value, 234 "^/The format option ^a did not have a value supplied.", 235 long_option_name); 236 237 option_value = arg; 238 239 return; 240 241 end get_argument_set; 242 243 get_next_format_arg: proc (code_parm); 244 245 /* 246* Ignore control args and get straight to the format option arg. 247* Save the number of the arg preceding the format option arg so 248* -string processing can be done. Make sure that there is another 249* format option arg for the next pass through and set an indicator 250* if we've exhausted them. 251**/ 252 253 dcl code_parm fixed bin (35) parm; 254 255 code_parm = 0; 256 257 /* Skip over the control args and get to the format args. */ 258 259 do while (this_is_a_control_arg (current_arg_number)); 260 current_arg_number = current_arg_number + 1; 261 end; 262 263 if current_arg_number > number_of_args_supplied 264 then do; 265 code = NO_MORE_FORMAT_ARGS_LEFT; 266 still_processing_format_option_args = OFF; 267 return; 268 end; 269 call ssu_$arg_ptr (sci_ptr, current_arg_number, 270 arg_ptr, arg_length); 271 save_arg_number_for_hyphen_string = current_arg_number - 1; 272 current_arg_number = current_arg_number + 1; 273 274 /* Make sure there is another format option arg. */ 275 276 do while (this_is_a_control_arg (current_arg_number)); 277 current_arg_number = current_arg_number + 1; 278 end; 279 280 if current_arg_number > number_of_args_supplied 281 then still_processing_format_option_args = OFF; 282 283 return; 284 285 end get_next_format_arg; 286 287 get_prompted_input: proc; 288 289 /* 290* Keep collecting lines from user_input until we hit a line which 291* consists of the single character ".". Don't prompt before collecting 292* if we are in brief mode. If the value is more than one line then 293* leave the newline character after each line. If the value is one 294* line then remove the newline from the end. 295**/ 296 297 input_buffer = ""; 298 option_value = ""; 299 300 if ^brief_flag 301 then if identifier_needed 302 then call ioa_ ("Enter ^a.", normalized_option_name); 303 else call ioa_ ("Enter ^a.", long_option_name); 304 else; 305 306 number_of_input_lines = 0; 307 more_input = ON; 308 309 do while (more_input); 310 call iox_$get_line (iox_$user_input, 311 input_buffer_ptr, input_buffer_length, 312 number_of_chars_read, code); 313 if code ^= 0 314 then call ssu_$abort_line (sci_ptr, code); 315 else; 316 number_of_input_lines = number_of_input_lines + 1; 317 if number_of_chars_read = 2 318 then if substr (input_buffer, 1, 1) = "." 319 then more_input = OFF; 320 else; 321 else; 322 if more_input 323 then option_value = option_value 324 || substr (input_buffer, 1, number_of_chars_read); 325 end; 326 327 if number_of_input_lines = 2 328 then option_value = substr (option_value, 1, 329 length (option_value) - 1); 330 331 return; 332 333 end get_prompted_input; 334 335 initialize: proc; 336 337 sci_ptr = sci_ptr_parm; 338 lcb_ptr = lcb_ptr_parm; 339 340 reset_flag = OFF; 341 brief_flag = OFF; 342 343 /* Make sure the format options are up to date. */ 344 345 call linus_options$initialize (lcb_ptr, code); 346 if code ^= 0 347 then call ssu_$abort_line (sci_ptr, code); 348 349 /* If no args are given it is an error. */ 350 351 call ssu_$arg_count (sci_ptr, number_of_args_supplied); 352 if number_of_args_supplied = 0 353 then call ssu_$abort_line (sci_ptr, error_table_$noarg, 354 "^/Usage: set_format_options {-format_option_args} {-control_args}"); 355 356 /* 357* Go through the control args once setting the flags and flagging 358* the control args we should ignore on our next pass through. 359* This is done with a map of bits for the control args 360* and another map of bits for the string args. 361**/ 362 363 unspec (this_is_a_control_arg) = OFF; 364 unspec (this_is_a_string_arg) = OFF; 365 number_of_control_args = 0; 366 current_arg_number = 1; 367 still_processing_control_args = ON; 368 369 do while (still_processing_control_args); 370 371 call ssu_$arg_ptr (sci_ptr, current_arg_number, 372 arg_ptr, arg_length); 373 374 if arg = "-string" | arg = "-str" 375 then do; 376 this_is_a_control_arg (current_arg_number) = ON; 377 this_is_a_string_arg (current_arg_number) = ON; 378 number_of_control_args = number_of_control_args + 1; 379 current_arg_number = current_arg_number + 1; 380 if current_arg_number > number_of_args_supplied 381 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 382 "^/-string must be followed by a format option value."); 383 else; 384 end; 385 else if arg = "-reset" | arg = "-rs" 386 | arg = "-no_reset" | arg = "-nrs" 387 then do; 388 this_is_a_control_arg (current_arg_number) = ON; 389 number_of_control_args = number_of_control_args + 1; 390 if arg = "-reset" | arg = "-rs" 391 then reset_flag = ON; 392 else reset_flag = OFF; 393 end; 394 else if arg = "-brief" | arg = "-bf" 395 | arg = "-long" | arg = "-lg" 396 then do; 397 this_is_a_control_arg (current_arg_number) = ON; 398 number_of_control_args = number_of_control_args + 1; 399 if arg = "-brief" | arg = "-bf" 400 then brief_flag = ON; 401 else brief_flag = OFF; 402 end; 403 else; 404 405 current_arg_number = current_arg_number + 1; 406 if current_arg_number > number_of_args_supplied 407 then still_processing_control_args = OFF; 408 409 end; 410 411 /* If no format option args were given (only control args were 412* given), then -reset must be in effect or there's nothing to do. */ 413 414 if number_of_control_args = number_of_args_supplied 415 then if ^reset_flag 416 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 417 "^/-reset was not specified and there are no format option values to set."); 418 else; 419 else; 420 421 /* Used as the buffer to hold prompted input lines. */ 422 423 input_buffer_ptr = addr (input_buffer); 424 input_buffer_length = MAXIMUM_OPTION_VALUE_LENGTH; 425 option_identifier = ""; 426 427 return; 428 429 end initialize; 430 431 dcl NEWLINE char (1) static int options (constant) init (" 432 "); 433 dcl NO_MORE_FORMAT_ARGS_LEFT fixed bin (35) static int options (constant) init (1); 434 dcl NOT_SYSTEM_DEFAULT bit (1) aligned static int options (constant) init ("0"b); 435 dcl OFF bit (1) aligned static int options (constant) init ("0"b); 436 dcl ON bit (1) aligned static int options (constant) init ("1"b); 437 dcl SYSTEM_DEFAULT bit (1) aligned static int options (constant) init ("1"b); 438 439 dcl addr builtin; 440 dcl arg char (arg_length) based (arg_ptr); 441 dcl arg_length fixed bin (21); 442 dcl arg_ptr ptr; 443 444 dcl brief_flag bit (1) aligned; 445 446 dcl code fixed bin (35); 447 dcl current_arg_number fixed bin; 448 449 dcl error_table_$inconsistent fixed bin(35) ext static; 450 dcl error_table_$noarg fixed bin(35) ext static; 451 dcl error_table_$nomatch fixed bin(35) ext static; 452 dcl error_table_$nostars fixed bin(35) ext static; 453 454 dcl identifier_needed bit (1) aligned; 455 dcl index builtin; 456 dcl input_buffer char (MAXIMUM_OPTION_VALUE_LENGTH); 457 dcl input_buffer_length fixed bin (21); 458 dcl input_buffer_ptr ptr; 459 dcl ioa_ entry() options(variable); 460 dcl iox_$get_line entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 461 dcl iox_$user_input ptr ext static; 462 463 dcl lcb_ptr ptr; 464 dcl length builtin; 465 dcl linus_error_$bad_option_identifier fixed bin (35) ext static; 466 dcl linus_error_$bad_option_name fixed bin(35) ext static; 467 dcl linus_error_$bad_option_value fixed bin (35) static ext; 468 dcl linus_error_$no_lila_expr_processed fixed bin(35) ext static; 469 dcl linus_options$check_name entry (ptr, char(*) var, char(*) var, bit(1) aligned, fixed bin(35)); 470 dcl linus_options$initialize entry (ptr, fixed bin(35)); 471 dcl linus_options$check_identifier entry (ptr, char(*) var, char(*) var, char(*) var, fixed bin(35)); 472 dcl linus_options$set_all_to_system_defaults entry (ptr, fixed bin(35)); 473 dcl linus_options$set_and_check entry (ptr, char(*) var, char(*) var, char(*) var, bit(1) aligned, fixed bin(35)); 474 dcl long_option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 475 476 dcl more_input bit (1) aligned; 477 478 dcl number_of_chars_read fixed bin (21); 479 dcl number_of_args_supplied fixed bin; 480 dcl number_of_control_args fixed bin; 481 dcl number_of_input_lines fixed bin; 482 dcl normalized_option_name char (MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH) varying; 483 484 dcl option_identifier char (MAXIMUM_OPTION_IDENTIFIER_LENGTH) varying; 485 dcl option_name char (MAXIMUM_OPTION_NAME_LENGTH) varying; 486 dcl option_value char (MAXIMUM_OPTION_VALUE_LENGTH) varying; 487 488 dcl reset_flag bit (1) aligned; 489 490 dcl save_arg_number_for_hyphen_string fixed bin; 491 dcl sci_ptr ptr; 492 dcl ssu_$abort_line entry() options(variable); 493 dcl ssu_$arg_count entry (ptr, fixed bin); 494 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin(21)); 495 dcl still_adding_chunks_of_the_value bit (1) aligned; 496 dcl still_processing_format_option_args bit (1) aligned; 497 dcl still_processing_control_args bit (1) aligned; 498 dcl substr builtin; 499 500 dcl this_is_a_control_arg (360) bit (1) unaligned; 501 dcl this_is_a_string_arg (360) bit (1) unaligned; 502 503 dcl unspec builtin; 504 1 1 /* BEGIN INCLUDE FILE linus_options_extents.incl.pl1 1 2* 1 3* Extents for the formatting options used for producing reports. 1 4* Kept as a separate include so that some programs may include this 1 5* file without including linus_format_options.incl.pl1 1 6* 1 7* Al Dupuis - August 1983 1 8* 1 9**/ 1 10 /* format: off */ 1 11 1 12 /* The three types of format options that we have. */ 1 13 1 14 dcl GENERAL_REPORT_OPTION fixed bin static int options (constant) init (1); 1 15 dcl GENERAL_COLUMN_OPTION fixed bin static int options (constant) init (2); 1 16 dcl SPECIFIC_COLUMN_OPTION fixed bin static int options (constant) init (3); 1 17 1 18 /* Used to determine how big the tables are without doing a hbound on it. */ 1 19 1 20 dcl NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE fixed bin static int options (constant) init (15); 1 21 dcl NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE fixed bin static int options (constant) init (9); 1 22 dcl NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE fixed bin static int options (constant) init (6); 1 23 1 24 /* Used to determine how much space is needed to list them. */ 1 25 1 26 dcl LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH fixed bin static int options (constant) init (10); /* -alignment */ 1 27 dcl LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH fixed bin static int options (constant) init (25); /* -format_document_controls */ 1 28 dcl LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH fixed bin static int options (constant) init (21); /* -group_footer_trigger */ 1 29 1 30 /* MAXIMUM_OPTION_IDENTIFIER_LENGTH + MAXIMUM_OPTION_NAME_LENGTH */ 1 31 1 32 dcl MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH fixed bin static int options (constant) init (101); 1 33 1 34 dcl MAXIMUM_OPTION_IDENTIFIER_LENGTH fixed bin static int options (constant) init (69); 1 35 dcl MAXIMUM_OPTION_NAME_LENGTH fixed bin static int options (constant) init (32); 1 36 dcl MAXIMUM_OPTION_VALUE_LENGTH fixed bin static int options (constant) init (4096); 1 37 1 38 /* Used to index into the OPTIONS tables defined in linus_format_options.incl.pl1. */ 1 39 1 40 dcl INDEX_FOR_DELIMITER fixed bin static int options (constant) init (1); 1 41 dcl INDEX_FOR_FORMAT_DOCUMENT_CONTROLS fixed bin static int options (constant) init (2); 1 42 dcl INDEX_FOR_HYPHENATION fixed bin static int options (constant) init (3); 1 43 dcl INDEX_FOR_PAGE_FOOTER_VALUE fixed bin static int options (constant) init (4); 1 44 dcl INDEX_FOR_PAGE_HEADER_VALUE fixed bin static int options (constant) init (5); 1 45 dcl INDEX_FOR_PAGE_LENGTH fixed bin static int options (constant) init (6); 1 46 dcl INDEX_FOR_PAGE_WIDTH fixed bin static int options (constant) init (7); 1 47 dcl INDEX_FOR_TITLE_LINE fixed bin static int options (constant) init (8); 1 48 dcl INDEX_FOR_TRUNCATION fixed bin static int options (constant) init (9); 1 49 1 50 dcl INDEX_FOR_COLUMN_ORDER fixed bin static int options (constant) init (1); 1 51 dcl INDEX_FOR_COUNT fixed bin static int options (constant) init (2); 1 52 dcl INDEX_FOR_EXCLUDE fixed bin static int options (constant) init (3); 1 53 dcl INDEX_FOR_GROUP fixed bin static int options (constant) init (4); 1 54 dcl INDEX_FOR_GROUP_FOOTER_TRIGGER fixed bin static int options (constant) init (5); 1 55 dcl INDEX_FOR_GROUP_FOOTER_VALUE fixed bin static int options (constant) init (6); 1 56 dcl INDEX_FOR_GROUP_HEADER_TRIGGER fixed bin static int options (constant) init (7); 1 57 dcl INDEX_FOR_GROUP_HEADER_VALUE fixed bin static int options (constant) init (8); 1 58 dcl INDEX_FOR_OUTLINE fixed bin static int options (constant) init (9); 1 59 dcl INDEX_FOR_PAGE_BREAK fixed bin static int options (constant) init (10); 1 60 dcl INDEX_FOR_ROW_FOOTER_VALUE fixed bin static int options (constant) init (11); 1 61 dcl INDEX_FOR_ROW_HEADER_VALUE fixed bin static int options (constant) init (12); 1 62 dcl INDEX_FOR_SUBCOUNT fixed bin static int options (constant) init (13); 1 63 dcl INDEX_FOR_SUBTOTAL fixed bin static int options (constant) init (14); 1 64 dcl INDEX_FOR_TOTAL fixed bin static int options (constant) init (15); 1 65 1 66 dcl INDEX_FOR_ALIGNMENT fixed bin static int options (constant) init (1); 1 67 dcl INDEX_FOR_EDITING fixed bin static int options (constant) init (2); 1 68 dcl INDEX_FOR_FOLDING fixed bin static int options (constant) init (3); 1 69 dcl INDEX_FOR_SEPARATOR fixed bin static int options (constant) init (4); 1 70 dcl INDEX_FOR_TITLE fixed bin static int options (constant) init (5); 1 71 dcl INDEX_FOR_WIDTH fixed bin static int options (constant) init (6); 1 72 1 73 /* END INCLUDE FILE linus_options_extents */ 505 506 507 end linus_set_format_options; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/16/83 1740.3 linus_set_format_options.pl1 >spec>on>09/16/83-linus>linus_set_format_options.pl1 505 1 09/16/83 1029.5 linus_options_extents.incl.pl1 >spec>on>09/16/83-linus>linus_options_extents.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. MAXIMUM_NORMALIZED_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 1-32 ref 482 MAXIMUM_OPTION_IDENTIFIER_LENGTH constant fixed bin(17,0) initial dcl 1-34 ref 484 MAXIMUM_OPTION_NAME_LENGTH constant fixed bin(17,0) initial dcl 1-35 ref 474 485 MAXIMUM_OPTION_VALUE_LENGTH constant fixed bin(17,0) initial dcl 1-36 ref 424 456 486 NEWLINE 002512 constant char(1) initial unaligned dcl 431 ref 139 139 139 143 NOT_SYSTEM_DEFAULT 000024 constant bit(1) initial dcl 434 set ref 147* NO_MORE_FORMAT_ARGS_LEFT constant fixed bin(35,0) initial dcl 433 ref 99 206 232 265 OFF constant bit(1) initial dcl 435 ref 105 266 280 317 340 341 363 364 392 401 406 ON 000000 constant bit(1) initial dcl 436 ref 73 94 107 307 367 376 377 388 390 397 399 SYSTEM_DEFAULT 000000 constant bit(1) initial dcl 437 set ref 128* addr builtin function dcl 439 ref 423 arg based char unaligned dcl 440 ref 102 109 185 211 237 374 374 385 385 385 385 390 390 394 394 394 394 399 399 arg_length 000100 automatic fixed bin(21,0) dcl 441 set ref 102 109 109 185 211 237 269* 371* 374 374 385 385 385 385 390 390 394 394 394 394 399 399 arg_ptr 000102 automatic pointer dcl 442 set ref 102 109 185 211 237 269* 371* 374 374 385 385 385 385 390 390 394 394 394 394 399 399 brief_flag 000104 automatic bit(1) dcl 444 set ref 300 341* 399* 401* code 000105 automatic fixed bin(35,0) dcl 446 set ref 65* 66 66* 98* 99 128* 147* 153 153 153* 159* 162 162* 166* 177* 178 186* 188 188 188* 193 193* 196* 205* 206 212* 214 214 214* 219 219* 231* 232 265* 310* 313 313* 345* 346 346* code_parm parameter fixed bin(35,0) dcl 253 set ref 243 255* current_arg_number 000106 automatic fixed bin(17,0) dcl 447 set ref 72* 106* 259 260* 260 263 269* 271 272* 272 276 277* 277 280 366* 371* 376 377 379* 379 380 388 397 405* 405 406 error_table_$inconsistent 000010 external static fixed bin(35,0) dcl 449 set ref 206* 380* 414* error_table_$noarg 000012 external static fixed bin(35,0) dcl 450 set ref 352* error_table_$nomatch 000014 external static fixed bin(35,0) dcl 451 ref 162 error_table_$nostars 000016 external static fixed bin(35,0) dcl 452 ref 219 identifier_needed 000107 automatic bit(1) dcl 454 set ref 153 186* 203 300 index builtin function dcl 455 ref 139 input_buffer 000110 automatic char unaligned dcl 456 set ref 297* 317 322 423 input_buffer_length 000110 automatic fixed bin(21,0) dcl 457 set ref 310* 424* input_buffer_ptr 000112 automatic pointer dcl 458 set ref 310* 423* ioa_ 000020 constant entry external dcl 459 ref 300 303 iox_$get_line 000022 constant entry external dcl 460 ref 310 iox_$user_input 000024 external static pointer dcl 461 set ref 310* lcb_ptr 000114 automatic pointer dcl 463 set ref 65* 128* 147* 186* 212* 338* 345* lcb_ptr_parm parameter pointer dcl 45 ref 42 338 length builtin function dcl 464 ref 137 139 139 143 143 327 linus_error_$bad_option_identifier 000026 external static fixed bin(35,0) dcl 465 ref 214 linus_error_$bad_option_name 000030 external static fixed bin(35,0) dcl 466 ref 193 linus_error_$bad_option_value 000032 external static fixed bin(35,0) dcl 467 set ref 153 232* linus_error_$no_lila_expr_processed 000034 external static fixed bin(35,0) dcl 468 ref 188 linus_options$check_identifier 000042 constant entry external dcl 471 ref 212 linus_options$check_name 000036 constant entry external dcl 469 ref 186 linus_options$initialize 000040 constant entry external dcl 470 ref 345 linus_options$set_all_to_system_defaults 000044 constant entry external dcl 472 ref 65 linus_options$set_and_check 000046 constant entry external dcl 473 ref 128 147 long_option_name 000116 automatic varying char dcl 474 set ref 128* 147* 159* 186* 188* 206* 212* 214* 232* 303* more_input 000116 automatic bit(1) dcl 476 set ref 307* 309 317* 322 normalized_option_name 000123 automatic varying char dcl 482 set ref 153* 212* 300* number_of_args_supplied 000120 automatic fixed bin(17,0) dcl 479 set ref 68 263 280 351* 352 380 406 414 number_of_chars_read 000117 automatic fixed bin(21,0) dcl 478 set ref 310* 317 322 number_of_control_args 000121 automatic fixed bin(17,0) dcl 480 set ref 68 365* 378* 378 389* 389 398* 398 414 number_of_input_lines 000122 automatic fixed bin(17,0) dcl 481 set ref 306* 316* 316 327 option_identifier 000123 automatic varying char dcl 484 set ref 128* 147* 162* 211* 212* 214* 425* option_name 000123 automatic varying char dcl 485 set ref 185* 186* 193* option_value 000123 automatic varying char dcl 486 set ref 109* 109 128 128* 133 137 139 139 139 139 139* 139 143 143 143* 143 143 147* 153* 159* 237* 298* 322* 322 327* 327 327 reset_flag 000123 automatic bit(1) dcl 488 set ref 63 340* 390* 392* 414 save_arg_number_for_hyphen_string 000124 automatic fixed bin(17,0) dcl 490 set ref 102 106 128 133 271* sci_ptr 000126 automatic pointer dcl 491 set ref 66* 153* 159* 162* 166* 178* 188* 193* 196* 206* 214* 219* 232* 269* 313* 337* 346* 351* 352* 371* 380* 414* sci_ptr_parm parameter pointer dcl 44 ref 42 337 ssu_$abort_line 000050 constant entry external dcl 492 ref 66 153 159 162 166 178 188 193 196 206 214 219 232 313 346 352 380 414 ssu_$arg_count 000052 constant entry external dcl 493 ref 351 ssu_$arg_ptr 000054 constant entry external dcl 494 ref 269 371 still_adding_chunks_of_the_value 000130 automatic bit(1) dcl 495 set ref 94* 96 105* still_processing_control_args 000132 automatic bit(1) dcl 497 set ref 367* 369 406* still_processing_format_option_args 000131 automatic bit(1) dcl 496 set ref 73* 75 107* 266* 280* substr builtin function dcl 498 ref 102 109 139 139 143 143 317 322 327 this_is_a_control_arg 000133 automatic bit(1) array unaligned dcl 500 set ref 259 276 363* 376* 388* 397* this_is_a_string_arg 000145 automatic bit(1) array unaligned dcl 501 set ref 102 128 133 364* 377* unspec builtin function dcl 503 set ref 363* 364* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. GENERAL_COLUMN_OPTION internal static fixed bin(17,0) initial dcl 1-15 GENERAL_REPORT_OPTION internal static fixed bin(17,0) initial dcl 1-14 INDEX_FOR_ALIGNMENT internal static fixed bin(17,0) initial dcl 1-66 INDEX_FOR_COLUMN_ORDER internal static fixed bin(17,0) initial dcl 1-50 INDEX_FOR_COUNT internal static fixed bin(17,0) initial dcl 1-51 INDEX_FOR_DELIMITER internal static fixed bin(17,0) initial dcl 1-40 INDEX_FOR_EDITING internal static fixed bin(17,0) initial dcl 1-67 INDEX_FOR_EXCLUDE internal static fixed bin(17,0) initial dcl 1-52 INDEX_FOR_FOLDING internal static fixed bin(17,0) initial dcl 1-68 INDEX_FOR_FORMAT_DOCUMENT_CONTROLS internal static fixed bin(17,0) initial dcl 1-41 INDEX_FOR_GROUP internal static fixed bin(17,0) initial dcl 1-53 INDEX_FOR_GROUP_FOOTER_TRIGGER internal static fixed bin(17,0) initial dcl 1-54 INDEX_FOR_GROUP_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 1-55 INDEX_FOR_GROUP_HEADER_TRIGGER internal static fixed bin(17,0) initial dcl 1-56 INDEX_FOR_GROUP_HEADER_VALUE internal static fixed bin(17,0) initial dcl 1-57 INDEX_FOR_HYPHENATION internal static fixed bin(17,0) initial dcl 1-42 INDEX_FOR_OUTLINE internal static fixed bin(17,0) initial dcl 1-58 INDEX_FOR_PAGE_BREAK internal static fixed bin(17,0) initial dcl 1-59 INDEX_FOR_PAGE_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 1-43 INDEX_FOR_PAGE_HEADER_VALUE internal static fixed bin(17,0) initial dcl 1-44 INDEX_FOR_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 1-45 INDEX_FOR_PAGE_WIDTH internal static fixed bin(17,0) initial dcl 1-46 INDEX_FOR_ROW_FOOTER_VALUE internal static fixed bin(17,0) initial dcl 1-60 INDEX_FOR_ROW_HEADER_VALUE internal static fixed bin(17,0) initial dcl 1-61 INDEX_FOR_SEPARATOR internal static fixed bin(17,0) initial dcl 1-69 INDEX_FOR_SUBCOUNT internal static fixed bin(17,0) initial dcl 1-62 INDEX_FOR_SUBTOTAL internal static fixed bin(17,0) initial dcl 1-63 INDEX_FOR_TITLE internal static fixed bin(17,0) initial dcl 1-70 INDEX_FOR_TITLE_LINE internal static fixed bin(17,0) initial dcl 1-47 INDEX_FOR_TOTAL internal static fixed bin(17,0) initial dcl 1-64 INDEX_FOR_TRUNCATION internal static fixed bin(17,0) initial dcl 1-48 INDEX_FOR_WIDTH internal static fixed bin(17,0) initial dcl 1-71 LONGEST_GENERAL_COLUMN_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 1-28 LONGEST_GENERAL_REPORT_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 1-27 LONGEST_SPECIFIC_COLUMN_OPTION_NAME_LENGTH internal static fixed bin(17,0) initial dcl 1-26 NUMBER_OF_GENERAL_COLUMN_OPTIONS_IN_TABLE internal static fixed bin(17,0) initial dcl 1-20 NUMBER_OF_GENERAL_REPORT_OPTIONS_IN_TABLE internal static fixed bin(17,0) initial dcl 1-21 NUMBER_OF_SPECIFIC_COLUMN_OPTIONS_IN_TABLE internal static fixed bin(17,0) initial dcl 1-22 SPECIFIC_COLUMN_OPTION internal static fixed bin(17,0) initial dcl 1-16 NAMES DECLARED BY EXPLICIT CONTEXT. get_accumulated_input 000544 constant entry internal dcl 82 ref 136 get_and_or_set_the_value 000641 constant entry internal dcl 118 ref 77 get_argument_set 001220 constant entry internal dcl 173 ref 76 get_next_format_arg 001663 constant entry internal dcl 243 ref 98 177 205 231 get_prompted_input 001742 constant entry internal dcl 287 ref 133 initialize 002132 constant entry internal dcl 335 ref 61 linus_set_format_options 000300 constant entry external dcl 42 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2764 3042 2515 2774 Length 3304 2515 56 226 246 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_set_format_options 436 external procedure is an external procedure. get_accumulated_input internal procedure shares stack frame of external procedure linus_set_format_options. get_and_or_set_the_value internal procedure shares stack frame of external procedure linus_set_format_options. get_argument_set internal procedure shares stack frame of external procedure linus_set_format_options. get_next_format_arg internal procedure shares stack frame of external procedure linus_set_format_options. get_prompted_input internal procedure shares stack frame of external procedure linus_set_format_options. initialize internal procedure shares stack frame of external procedure linus_set_format_options. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_set_format_options 000100 arg_length linus_set_format_options 000102 arg_ptr linus_set_format_options 000104 brief_flag linus_set_format_options 000105 code linus_set_format_options 000106 current_arg_number linus_set_format_options 000107 identifier_needed linus_set_format_options 000110 input_buffer linus_set_format_options 000110 input_buffer_length linus_set_format_options 000112 input_buffer_ptr linus_set_format_options 000114 lcb_ptr linus_set_format_options 000116 long_option_name linus_set_format_options 000116 more_input linus_set_format_options 000117 number_of_chars_read linus_set_format_options 000120 number_of_args_supplied linus_set_format_options 000121 number_of_control_args linus_set_format_options 000122 number_of_input_lines linus_set_format_options 000123 normalized_option_name linus_set_format_options 000123 option_identifier linus_set_format_options 000123 option_name linus_set_format_options 000123 option_value linus_set_format_options 000123 reset_flag linus_set_format_options 000124 save_arg_number_for_hyphen_string linus_set_format_options 000126 sci_ptr linus_set_format_options 000130 still_adding_chunks_of_the_value linus_set_format_options 000131 still_processing_format_option_args linus_set_format_options 000132 still_processing_control_args linus_set_format_options 000133 this_is_a_control_arg linus_set_format_options 000145 this_is_a_string_arg linus_set_format_options THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return alloc_auto_adj shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_ iox_$get_line linus_options$check_identifier linus_options$check_name linus_options$initialize linus_options$set_all_to_system_defaults linus_options$set_and_check ssu_$abort_line ssu_$arg_count ssu_$arg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$inconsistent error_table_$noarg error_table_$nomatch error_table_$nostars iox_$user_input linus_error_$bad_option_identifier linus_error_$bad_option_name linus_error_$bad_option_value linus_error_$no_lila_expr_processed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 42 000274 456 000305 474 000314 482 000324 484 000334 485 000344 486 000354 128 000364 147 000375 153 000406 159 000414 162 000422 186 000425 188 000433 193 000436 206 000441 212 000444 214 000455 232 000463 300 000466 303 000471 61 000474 63 000475 65 000477 66 000510 68 000527 72 000532 73 000534 75 000536 76 000540 77 000541 78 000542 80 000543 82 000544 94 000545 96 000547 98 000552 99 000554 102 000560 105 000572 106 000573 107 000576 108 000600 109 000601 112 000636 114 000640 118 000641 128 000642 133 000720 136 000732 137 000733 139 000735 142 000767 143 000770 147 001004 153 001044 159 001112 162 001150 166 001203 169 001217 173 001220 177 001221 178 001223 185 001252 186 001264 188 001316 193 001354 196 001407 203 001423 205 001426 206 001430 211 001464 212 001476 214 001531 219 001574 231 001612 232 001614 237 001650 239 001662 243 001663 255 001665 259 001666 260 001673 261 001674 263 001675 265 001700 266 001702 267 001703 269 001704 271 001721 272 001724 276 001725 277 001733 278 001734 280 001735 283 001741 287 001742 297 001743 298 001750 300 001751 303 002002 306 002025 307 002026 309 002030 310 002032 313 002051 316 002070 317 002071 322 002101 325 002117 327 002120 331 002131 335 002132 337 002133 338 002137 340 002142 341 002143 345 002144 346 002155 351 002174 352 002205 363 002233 364 002236 365 002241 366 002242 367 002244 369 002246 371 002250 374 002265 376 002277 377 002303 378 002306 379 002307 380 002310 384 002337 385 002340 388 002365 389 002371 390 002372 392 002377 393 002400 394 002401 397 002425 398 002431 399 002432 401 002437 405 002440 406 002441 409 002445 414 002446 423 002477 424 002501 425 002503 427 002504 ----------------------------------------------------------- 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