COMPILATION LISTING OF SEGMENT iod_forms_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 11/14/88 1104.3 mst Mon Options: optimize map 1 /****^ ******************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* ******************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(88-02-25,Brunelle), approve(88-06-09,MCR7911), 10* audit(88-10-25,Wallman), install(88-11-08,MR12.2-1199): 11* Created. 12* 2) change(88-11-03,Brunelle), approve(88-11-03,MCR7911), 13* audit(88-11-03,Wallman), install(88-11-08,MR12.2-1199): 14* Corrected case where mode_string_$parse broke a mode of elite6 into two 15* parts, "elite" and "6". Put the pieces back together. 16* 3) change(88-11-11,Brunelle), approve(88-11-11,MCR7911), 17* audit(88-11-11,Wallman), install(88-11-14,MR12.2-1212): 18* Corrected error messages for both a bad forms string and an invalid forms 19* option. 20* END HISTORY COMMENTS */ 21 22 /* format: style4 */ 23 24 iod_forms_: proc; 25 return; /* no entry here */ 26 27 /* this module contains the common routines to evaluate a given forms option 28* and to return forms information for a given request type */ 29 30 /* Arguments */ 31 32 dcl a_area_ptr ptr parameter; /* ptr to user area */ 33 dcl a_code fixed bin (35) parameter; /* error code */ 34 dcl a_input_ptr ptr parameter; /* ptr to input data structure */ 35 dcl a_output_ptr ptr parameter; /* ptr to allocated return data structure */ 36 37 /* External Procedures and Variables */ 38 39 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 40 dcl error_table_$bad_arg fixed bin (35) ext static; 41 dcl error_table_$bad_forms_option fixed bin (35) ext static; 42 dcl error_table_$bad_mode_syntax fixed bin (35) ext static; 43 dcl error_table_$no_table fixed bin (35) ext static; 44 dcl error_table_$no_forms_table_defined fixed bin (35) ext static; 45 dcl error_table_$notalloc fixed bin (35) ext static; 46 dcl error_table_$null_info_ptr fixed bin (35) ext static; 47 dcl ioa_$rsnpnnl entry () options (variable); 48 dcl mode_string_$parse entry (char (*), ptr, ptr, fixed bin (35)); 49 50 dcl (addr, char, hbound, length, ltrim, null, ptr, rtrim, substr, unspec) builtin; 51 52 dcl (area, cleanup) condition; 53 54 /* Internal Static */ 55 56 /* Automatic */ 57 58 dcl code fixed bin (35); /* error code */ 59 dcl element_index fixed bin; 60 dcl i fixed bin; /* misc indices */ 61 dcl return_error_string char (1024) varying; 62 dcl return_escape_string char (1024) varying; 63 dcl return_forms_string char (512) varying; 64 dcl return_special_string char (1024) varying; 65 dcl user_area area based (user_area_ptr); 66 dcl user_area_ptr ptr; 67 68 /* the following structure defines the following data elements 69* 1) The start index for the first forms element in the forms table defined 70* . by either the device or request type entries in the I/O daemon tables 71* 2) indices within the forms elements in the forms table for each of the 72* . types of forms elements currently allowed. These indices are for both 73* . the default forms string and the user supplied forms string. */ 74 75 dcl 1 parse_info, 76 2 forms_table_start_index fixed bin, 77 2 default_type_indices (hbound (FORMS_TYPE_STRINGS, 1)) fixed bin, 78 2 user_type_indices (hbound (FORMS_TYPE_STRINGS, 1)) fixed bin; 79 80 dcl 1 size_info, 81 2 page_height float bin, 82 2 page_width float bin, 83 2 char_height float bin, 84 2 char_width float bin, 85 2 line_height float bin, 86 2 pagelength fixed bin, 87 2 linelength fixed bin, 88 2 lpi fixed bin; 89 90 91 /* given pointers to a request type and major/minor device entries in the i/o 92* daemon tables and a user supplied forms string, evaluate the the elements 93* in the string are legal and return the max line & page length to the user 94**/ 95 96 evaluate: entry (a_input_ptr, a_output_ptr, a_code); 97 98 /* copy args */ 99 evaluate_forms_info_input_ptr = a_input_ptr; 100 a_output_ptr = null; 101 a_code = 0; 102 103 /* get ptrs to appropriate places in the i/o daemon tables */ 104 ithp = evaluate_forms_info_input.ithp; 105 qgtep = evaluate_forms_info_input.qgtep; 106 idtep = evaluate_forms_info_input.idtep; 107 mdtep = evaluate_forms_info_input.mdtep; 108 text_strings_ptr = ptr (ithp, iod_tables_hdr.text_strings_offset); 109 ifitp = ptr (ithp, iod_tables_hdr.forms_info_tab_offset); 110 111 /* initialize internal version of output variables */ 112 size_info.page_height, 113 size_info.page_width, 114 size_info.char_height, 115 size_info.char_width, 116 size_info.line_height = 0e0; 117 size_info.pagelength, 118 size_info.linelength, 119 size_info.lpi = 0; 120 return_error_string, 121 return_escape_string, 122 return_forms_string, 123 return_special_string = ""; 124 125 unspec (parse_info) = "0"b; 126 127 /* locate the forms table to use to evaluate the default and user forms string */ 128 call locate_forms_table; 129 if code ^= 0 then go to evaluate_forms_option_return; 130 131 /* evaluate the default forms string. the default forms string for the 132* device/minor device takes precedence but if there is none and the request 133* type has one then use it. */ 134 parse_info.default_type_indices (*) = 0; 135 if idtep ^= null then do; 136 if mdtep ^= null then do; 137 if mdte.default_form.total_chars > 0 then do; 138 call process_forms_string (return_string (mdte.default_form), 139 parse_info.default_type_indices, code); 140 end; 141 end; 142 end; 143 else if qgtep ^= null then do; 144 if qgte.default_form.total_chars > 0 then do; 145 call process_forms_string (return_string (qgte.default_form), 146 parse_info.default_type_indices, code); 147 end; 148 end; 149 else code = error_table_$no_table; 150 if code ^= 0 then go to evaluate_forms_option_return; 151 152 /* evaluate the user forms string */ 153 parse_info.user_type_indices (*) = 0; 154 call process_forms_string ((evaluate_forms_info_input.forms_string), 155 parse_info.user_type_indices, code); 156 if code ^= 0 then go to evaluate_forms_option_return; 157 158 /* now let's do something with the values we've found. Evaluate elements to 159* get the dimensions and set up the return strings */ 160 call evaluate_the_form_type (TYPE_SPECIAL); 161 call evaluate_the_form_type (TYPE_PREAMBLE); 162 call evaluate_the_form_type (TYPE_FONT_DESC); 163 call evaluate_the_form_type (TYPE_FONT_NAME); 164 call evaluate_the_form_type (TYPE_FONT_SIZE); 165 call evaluate_the_form_type (TYPE_ORIENTATION); 166 call evaluate_the_form_type (TYPE_LINE_DESC); 167 call evaluate_the_form_type (TYPE_HOLES); 168 call evaluate_the_form_type (TYPE_POSTAMBLE); 169 170 /* now compute lines per page and chars per line */ 171 if size_info.line_height = 0 then do; 172 if size_info.char_height > 0 then do; 173 size_info.pagelength = size_info.page_height / size_info.char_height; 174 size_info.lpi = 72 / size_info.char_height; 175 end; 176 end; 177 else do; 178 size_info.pagelength = size_info.page_height / size_info.line_height; 179 size_info.lpi = 72 / size_info.line_height; 180 end; 181 if size_info.char_width > 0 then 182 size_info.linelength = size_info.page_width / size_info.char_width; 183 184 evaluate_forms_option_return: 185 user_area_ptr = evaluate_forms_info_input.area_ptr; /* area to put output in */ 186 187 /* set up lengths of all strings we will be returning */ 188 system_returned_forms_length = length (return_forms_string); 189 system_error_string_length = length (return_error_string); 190 system_escape_string_length = length (return_escape_string); 191 system_special_string_length = length (return_special_string); 192 allocate evaluate_forms_info_output in (user_area); 193 194 evaluate_forms_info_output.version = EVALUATE_FORMS_INFO_OUTPUT_VERSION_1; 195 evaluate_forms_info_output.lines_per_page = size_info.pagelength; 196 evaluate_forms_info_output.chars_per_line = size_info.linelength; 197 evaluate_forms_info_output.lines_per_inch = size_info.lpi; 198 evaluate_forms_info_output.error_string = return_error_string; 199 evaluate_forms_info_output.escape_string = return_escape_string; 200 evaluate_forms_info_output.special_string = return_special_string; 201 202 a_output_ptr = evaluate_forms_info_output_ptr; 203 a_code = code; 204 return; 205 206 207 /* given a request type name, return all forms entries allowed for the given 208* request type in a user supplied area */ 209 210 info: entry (a_input_ptr, a_area_ptr, a_code); 211 212 /* copy args */ 213 evaluate_forms_info_input_ptr = a_input_ptr; 214 a_area_ptr = null; 215 a_code = 0; 216 217 /* get ptrs to appropriate places in the i/o daemon tables */ 218 ithp = evaluate_forms_info_input.ithp; 219 qgtep = evaluate_forms_info_input.qgtep; 220 idtep = evaluate_forms_info_input.idtep; 221 mdtep = evaluate_forms_info_input.mdtep; 222 text_strings_ptr = ptr (ithp, iod_tables_hdr.text_strings_offset); 223 ifitp = ptr (ithp, iod_tables_hdr.forms_info_tab_offset); 224 225 user_area_ptr = evaluate_forms_info_input.area_ptr; 226 227 if user_area_ptr = null then do; /* no place to put the data */ 228 a_code = error_table_$null_info_ptr; 229 return; 230 end; 231 232 /* locate the forms table */ 233 call locate_forms_table; 234 if code ^= 0 then do; 235 a_code = code; 236 return; 237 end; 238 239 /* loop through all the entries in the table so we can get counts to define 240* size of the allocation structure */ 241 forms_info_entry_count, 242 forms_info_name_count, 243 forms_info_comment_count, 244 forms_info_types_count, 245 forms_info_uses_count, 246 forms_info_specials_count = 0; 247 248 element_index = parse_info.forms_table_start_index; 249 do while (element_index > 0); 250 fep = addr (iod_forms_info_tab.element_data_block (element_index)); 251 252 forms_info_entry_count = forms_info_entry_count + 1; 253 forms_info_name_count = forms_info_name_count + element_common.n_names; 254 if element_common.comment.total_chars ^= 0 then 255 forms_info_comment_count = forms_info_comment_count + 1; 256 if element_common.type = TYPE_USES then 257 forms_info_uses_count = forms_info_uses_count + 1; 258 if element_common.type = TYPE_SPECIAL then 259 forms_info_specials_count = forms_info_specials_count + 1; 260 element_index = element_common.next_element_index; 261 end; 262 forms_info_types_count = forms_info_entry_count; 263 forms_info_default_forms_length = qgte.default_form.total_chars; 264 265 /* allocate the return info structure & clear the beastie out */ 266 on area go to no_allocation; 267 268 allocate forms_info in (user_area); 269 270 revert area; 271 272 forms_info.entry (*) = 0; 273 forms_info.names (*), 274 forms_info.comments (*), 275 forms_info.uses (*), 276 forms_info.specials (*) = ""; 277 forms_info.types (*) = -1; 278 forms_info.default_form = return_string (qgte.default_form); 279 280 /* now loop through the entries again, copying out the data for the user */ 281 forms_info_entry_count, 282 forms_info_name_count, 283 forms_info_comment_count, 284 forms_info_types_count, 285 forms_info_uses_count, 286 forms_info_specials_count = 0; 287 288 element_index = parse_info.forms_table_start_index; 289 do while (element_index > 0); 290 fep = addr (iod_forms_info_tab.element_data_block (element_index)); 291 292 forms_info_entry_count = forms_info_entry_count + 1; /* processing next entry */ 293 294 /* save name information for the element */ 295 forms_info.entry (forms_info_entry_count).first_name_index = forms_info_name_count + 1; 296 do i = 1 to element_common.n_names; 297 forms_info_name_count = forms_info_name_count + 1; 298 forms_info.names (forms_info_name_count) = return_string (element_common.names (i)); 299 end; 300 forms_info.entry (forms_info_entry_count).last_name_index = forms_info_name_count; 301 302 /* if the element has comments, save them; else return 0 */ 303 if element_common.comment.total_chars ^= 0 then do; 304 forms_info_comment_count = forms_info_comment_count + 1; 305 forms_info.entry (forms_info_entry_count).comment_index = forms_info_comment_count; 306 forms_info.comments (forms_info_comment_count) = return_string (element_common.comment); 307 end; 308 else forms_info.entry (forms_info_entry_count).comment_index = 0; 309 310 /* save the string describing the type of element this is */ 311 forms_info_types_count = forms_info_types_count + 1; 312 forms_info.types (forms_info_types_count) = element_common.type; 313 forms_info.entry (forms_info_entry_count).type_index = forms_info_types_count; 314 315 /* if this is a uses element, build & save the uses name string; else return 0 */ 316 if element_common.type = TYPE_USES then do; 317 forms_info_uses_count = forms_info_uses_count + 1; 318 forms_info.entry (forms_info_entry_count).uses_index = forms_info_uses_count; 319 do i = 1 to uses_element.n_indices; 320 forms_info.uses (forms_info_uses_count) = rtrim (forms_info.uses (forms_info_uses_count)) 321 || return_string (uses_element.index_blocks (i).name); 322 if i ^= uses_element.n_indices then 323 forms_info.uses (forms_info_uses_count) = rtrim (forms_info.uses (forms_info_uses_count)) || ","; 324 end; 325 end; 326 else forms_info.entry (forms_info_entry_count).uses_index = 0; 327 328 /* if this is a special element, return the special string; else 0 */ 329 if element_common.type = TYPE_SPECIAL then do; 330 forms_info_specials_count = forms_info_specials_count + 1; 331 forms_info.entry (forms_info_entry_count).special_index = forms_info_specials_count; 332 forms_info.specials (forms_info_specials_count) = return_string (special_element.special_string); 333 end; 334 else forms_info.entry (forms_info_entry_count).special_index = 0; 335 element_index = element_common.next_element_index; 336 end; 337 338 /* tell user where we put the data */ 339 a_area_ptr = forms_info_ptr; 340 341 return; 342 343 /* when we can't allocate in the supplied area */ 344 no_allocation: 345 a_code = error_table_$notalloc; 346 return; 347 348 349 process_forms_string: proc (string_to_process, parse_indices, parse_error); 350 351 /* subroutine to parse the forms string and locate matching data in the 352* forms table starting at parse_info.start_index */ 353 354 dcl string_to_process char (*) parameter; /* forms string to parse out */ 355 dcl parse_indices (*) fixed bin parameter; /* type indices to fill in */ 356 dcl parse_error fixed bin (35) parameter; /* my error code */ 357 358 dcl element_index fixed bin; 359 dcl error_string_long char (100) aligned; 360 dcl error_string_short char (8) aligned; 361 dcl got_a_match bit (1); 362 dcl (i, j) fixed bin; 363 dcl parsed_element_name char (64) varying; 364 365 /* initialize things */ 366 parse_indices (*) = 0; 367 mode_string_info_ptr = null; 368 on cleanup go to process_forms_string_cleanup; 369 370 /* now parse the given mode string */ 371 call mode_string_$parse (string_to_process, null, mode_string_info_ptr, parse_error); 372 if parse_error ^= 0 then do; 373 if parse_error = error_table_$bad_mode_syntax then 374 parse_error = error_table_$bad_arg; 375 go to process_forms_string_cleanup; 376 end; 377 378 /* now let's see what we got. loop for each forms element parsed */ 379 do i = 1 to mode_string_info.number; 380 mode_value_ptr = addr (mode_string_info.modes (i)); /* get info for parsed element */ 381 382 /* if there were any problems, add descriprive error comment to error string 383* and continue to next parsed forms element */ 384 if mode_value.code ^= 0 then do; 385 parse_error = mode_value.code; 386 call convert_status_code_ (parse_error, error_string_short, error_string_long); 387 call ioa_$rsnpnnl ("^a^/^a: option ^a", 388 return_error_string, (0), 389 return_error_string, 390 error_string_long, mode_value.mode_name); 391 goto skip_this_mode_entry; 392 end; 393 394 /* scan through all the forms elements defined for the forms table looking for 395* an element which matches the parsed element name (this includes looking at 396* any additional names each forms element may have). 397* 398* If we find a match, we save the elements index within the forms table in 399* the parse indices in the slot corresponding to the type of element defined 400* by the element index. 401* 402* If the element is a USES element (made up of one or more other elements), 403* call another routine to expand the USES element into its component types */ 404 got_a_match = "0"b; 405 element_index = parse_info.forms_table_start_index; 406 parsed_element_name = rtrim (mode_value.mode_name); 407 if mode_value.char_valuep then 408 parsed_element_name = parsed_element_name || mode_value.char_value; 409 else if mode_value.numeric_valuep then 410 parsed_element_name = parsed_element_name || ltrim (rtrim (char (mode_value.numeric_value))); 411 do while (element_index > 0 & ^got_a_match); 412 fep = addr (iod_forms_info_tab.element_data_block (element_index)); 413 do j = 1 to element_common.n_names; 414 if return_string (element_common.names (j)) = parsed_element_name then do; 415 parse_indices (element_common.type) = element_index; 416 if element_common.type = TYPE_USES then /* expand 'uses' if found */ 417 call expand_uses_definitions (parse_indices (TYPE_USES), parse_indices); 418 got_a_match = "1"b; 419 end; 420 end; 421 element_index = element_common.next_element_index; 422 end; 423 424 /* if no element was found matching the parsed element, add a descriptive 425* error string to the error string we are going to return to the user */ 426 if ^got_a_match then do; 427 parse_error = error_table_$bad_forms_option; 428 call ioa_$rsnpnnl ("^a^/Option ^a invalid.", 429 return_error_string, (0), 430 return_error_string, mode_value.mode_name); 431 end; 432 433 skip_this_mode_entry: 434 end; 435 436 process_forms_string_cleanup: /* clean up after ourselves */ 437 if mode_string_info_ptr ^= null then do; 438 free mode_string_info; 439 mode_string_info_ptr = null; 440 end; 441 442 end process_forms_string; 443 444 locate_forms_table: proc; 445 446 /* locate the default forms table and return the starting index of the forms 447* entries to use. The logic it will use to find the table is 448* 1. if there is a device entry defined 449* . 1a. if there is a forms_table string defined, use that. 450* . 1b. if no forms string defined, go to step 2. 451* 2. if there is a request type entry defined and it has a forms_table string 452* . defined, use that. 453* 3. return no table error */ 454 455 dcl forms_table_name char (32); 456 457 /* first locate the name of the forms table to use */ 458 forms_table_name = ""; 459 code = 0; 460 if idtep ^= null then 461 forms_table_name = return_string (idte.forms_table); 462 if forms_table_name = "" then 463 if qgtep ^= null then 464 forms_table_name = return_string (qgte.forms_table); 465 466 if forms_table_name = "" then do; 467 code = error_table_$no_forms_table_defined; 468 return; 469 end; 470 471 /* locate the given forms table */ 472 do i = 1 to iod_forms_info_tab.n_groups 473 while (forms_table_name ^= iod_forms_info_tab.groups.name (i)); 474 end; 475 if i > iod_forms_info_tab.n_groups then do; /* not there! */ 476 code = error_table_$no_table; 477 return; 478 end; 479 480 /* remember where the table starts for this forms table */ 481 parse_info.forms_table_start_index = iod_forms_info_tab.groups.first_element_index (i); 482 483 end locate_forms_table; 484 485 486 evaluate_the_form_type: proc (type_index); 487 488 /* given a particular type index, take the element index from parse_info for 489* that type index slot and evaluate it. This evaluation will set one or more 490* of the size parameters and the return_escape or return_special strings */ 491 492 dcl type_index fixed bin parameter; 493 494 /* if the user specified this type of element, use it; else use the default */ 495 element_index = parse_info.user_type_indices (type_index); 496 if element_index <= 0 then 497 element_index = parse_info.default_type_indices (type_index); 498 499 /* if this type of element was specified, set up the information for it */ 500 if element_index > 0 then do; 501 fep = addr (iod_forms_info_tab.element_data_block (element_index)); 502 if type_index = TYPE_PREAMBLE then do; 503 return_escape_string = return_escape_string 504 || return_string (preamble_element.escape_string); 505 end; 506 else if type_index = TYPE_ORIENTATION then do; 507 return_escape_string = return_escape_string 508 || return_string (orientation_element.escape_string); 509 size_info.page_height = orientation_element.height; 510 size_info.page_width = orientation_element.width; 511 end; 512 else if type_index = TYPE_FONT_DESC then do; 513 return_escape_string = return_escape_string 514 || return_string (font_element.escape_string); 515 size_info.char_height = font_element.height; 516 size_info.char_width = font_element.width; 517 end; 518 else if type_index = TYPE_FONT_NAME then do; 519 return_escape_string = return_escape_string 520 || return_string (font_element.escape_string); 521 end; 522 else if type_index = TYPE_FONT_SIZE then do; 523 return_escape_string = return_escape_string 524 || return_string (font_element.escape_string); 525 size_info.char_height = font_element.height; 526 size_info.char_width = font_element.width; 527 end; 528 else if type_index = TYPE_LINE_DESC then do; 529 return_escape_string = return_escape_string 530 || return_string (line_element.escape_string); 531 size_info.line_height = line_element.height; 532 end; 533 else if type_index = TYPE_HOLES then do; 534 return_escape_string = return_escape_string 535 || return_string (holes_element.escape_string); 536 size_info.page_height = size_info.page_height - orientation_element.height; 537 size_info.page_width = size_info.page_width - orientation_element.width; 538 end; 539 else if type_index = TYPE_POSTAMBLE then do; 540 return_escape_string = return_escape_string 541 || return_string (postamble_element.escape_string); 542 end; 543 else if type_index = TYPE_SPECIAL then do; 544 return_special_string = return_special_string 545 || return_string (special_element.special_string); 546 end; 547 end; 548 549 end evaluate_the_form_type; 550 551 552 expand_uses_definitions: proc (element_to_use, save_elements); 553 554 /* Expand the given uses element by going through the indices stored in the 555* uses element to get the indices and types of the elements referred to by 556* the uses element. */ 557 558 dcl element_to_use fixed bin parameter; 559 dcl save_elements (*) fixed bin parameter; 560 561 dcl i fixed bin; 562 dcl temp_fep ptr; 563 564 fep = addr (iod_forms_info_tab.element_data_block (element_to_use)); 565 do i = 1 to uses_element.n_indices; 566 temp_fep = addr (iod_forms_info_tab.element_data_block (uses_element.index (i))); 567 if temp_fep -> element_common.type = TYPE_USES then 568 call expand_uses_definitions ((temp_fep -> uses_element.index (i)), save_elements); 569 else save_elements (temp_fep -> element_common.type) = uses_element.index (i); 570 end; 571 572 end expand_uses_definitions; 573 574 575 return_string: proc (target) returns (char (*)); 576 577 /* small procedure to extract a string from text_strings.chars in the I/O daemon tables */ 578 579 dcl 1 target like text_offset parameter; 580 581 if target.total_chars = 0 then 582 return (""); 583 else return (substr (text_strings.chars, target.first_char, target.total_chars)); 584 end return_string; 585 /* BEGIN INCLUDE FILE...iod_device_tab.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 1 7* Ancient History 1 8* Created by J. Stern, January 1975 1 9* Modified by J. C. Whitmore April 1978 1 10* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 1 11* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 1 12* Added comment, head_sheet, tail_sheet, paper_type, forms_table, 1 13* forms_validation, font_dir variables to device entries in support of laser 1 14* printers. Changed driver_module, args to text_offset instead of strings. 1 15* Added comment, default_form to minor device entries. Changed args in 1 16* minor device entry to text_offset instead of string. 1 17* END HISTORY COMMENTS */ 1 18 1 19 1 20 /* format: style4 */ 1 21 1 22 dcl idtp ptr; /* ptr to device table */ 1 23 dcl 1 iod_device_tab aligned based (idtp), /* IO daemon device table */ 1 24 2 n_devices fixed bin, /* number of major devices */ 1 25 2 pad fixed bin, 1 26 2 entries (1 refer (iod_device_tab.n_devices)) like idte; /* entries for major devices */ 1 27 1 28 dcl idtep ptr; /* major device entry pointer */ 1 29 dcl 1 idte aligned based (idtep), /* major device entry */ 1 30 1 31 /* static info associated with device from the parms file */ 1 32 1 33 2 dev_id char (24), /* major device name */ 1 34 2 comment unaligned like text_offset, /* comment to apply to the major device */ 1 35 2 attach_name char (32), /* channel name or dial id for device attachment */ 1 36 2 attach_type fixed bin, /* indicates meaning of attach_name */ 1 37 /* see ATTACH_TYPE_XX in iod_constants.incl.pl1 */ 1 38 2 ctl_attach_name char (32), /* channel, dial id, or source for control terminal attachment */ 1 39 2 ctl_attach_type fixed bin, /* indicates meaning of ctl_attach_name */ 1 40 /* see CTL_ATTACH_TYPE_XX in iod_constants.incl.pl1 */ 1 41 2 driver_module unaligned like text_offset, /* offset to pathname of program to drive device */ 1 42 2 head_sheet unaligned like text_offset, /* offset to name of head_sheet program to use */ 1 43 2 tail_sheet unaligned like text_offset, /* offset to name of tail_sheet program to use */ 1 44 2 paper_type fixed bin, /* -1=default , 1=continuous form, 2=single sheet */ 1 45 2 forms_table unaligned like text_offset, /* offset to forms table to apply to this queue group */ 1 46 2 forms_validation unaligned like text_offset, /* offset to name of routine for forms validation */ 1 47 2 font_dir unaligned like text_offset, /* offset to location of downloadable fonts */ 1 48 2 args unaligned like text_offset, /* offset to arguments to driver program */ 1 49 2 first_minor fixed bin, /* index of first minor device for this major device */ 1 50 2 last_minor fixed bin, /* index of last minor device for this major device */ 1 51 1 52 /* dynamic info associated with driver of this device */ 1 53 1 54 2 lock bit (36), /* lock id of current driver */ 1 55 2 process_id bit (36); /* process id of current driver */ 1 56 1 57 dcl mdtp ptr; 1 58 dcl 1 minor_device_tab aligned based (mdtp), 1 59 2 n_minor fixed bin, /* number of minor devices */ 1 60 2 pad fixed bin, 1 61 2 entries (1 refer (minor_device_tab.n_minor)) like mdte; 1 62 1 63 dcl mdtep ptr; /* minor device entry pointer */ 1 64 dcl 1 mdte aligned based (mdtep), /* minor device entry */ 1 65 1 66 /* static info associated with device from the parms file */ 1 67 1 68 2 dev_id char (24), /* minor device name */ 1 69 2 comment unaligned like text_offset, /* comment to apply to the minor device */ 1 70 2 default_form unaligned like text_offset, /* offset to default -form string for minor device */ 1 71 2 default_dev_class fixed bin, /* default device class index */ 1 72 2 major_index fixed bin, /* subscript of corresponding major device entry */ 1 73 2 args unaligned like text_offset, /* offset to arguments to driver program */ 1 74 1 75 /* dynamic info associated with driver of this device */ 1 76 1 77 2 dev_class_index fixed bin, /* index of device class table entry */ 1 78 2 current_request fixed bin (18), /* offset of current request descriptor */ 1 79 2 driver_ptr ptr, /* ptr to driver status segment */ 1 80 2 active fixed bin, /* 1 if active, 0 if not active */ 1 81 2 seq_id fixed bin (35); /* sequence number of last request */ 1 82 1 83 /* named constants for attach_type, ctl_attach_type and paper_type are found 1 84* in iod_constants.incl.pl1 */ 1 85 1 86 /* END INCLUDE FILE...iod_device_tab.incl.pl1 */ 585 586 /* BEGIN INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 2 7* Ancient History 2 8* Created by J. Stern, 1/20/75 2 9* Modified by J. C. Whitmore April 1978 for enhancements 2 10* Modified by J. C. Whitmore, 10/78, for version 3 iod_tables format. 2 11* Modified by E. N. Kittlitz, 6/81, for version 4 iod_tables with expanded 2 12* q_group_tab 2 13* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 2 14* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 2 15* Change version number to reflect changes in q_group_tab and 2 16* iod_device_tab for laser printer support. Added font tables. 2 17* END HISTORY COMMENTS */ 2 18 2 19 2 20 /* format: style4 */ 2 21 2 22 dcl ithp ptr; /* ptr to io daemon dables and it's header */ 2 23 dcl 1 iod_tables_hdr aligned based (ithp), /* header of data segment compiled by iod_table_compiler */ 2 24 2 version char (8), /* version of this structure */ 2 25 2 date_time_compiled fixed bin (71), 2 26 2 grace_time fixed bin (71), /* grace time before deleting finished segment */ 2 27 2 max_queues fixed bin (17), /* default number of priority queues per queue group */ 2 28 2 line_tab_offset fixed bin (18), /* offset of line id table */ 2 29 2 device_tab_offset fixed bin (18), /* offset of device table */ 2 30 2 minor_device_tab_offset fixed bin (18), /* offset of minor device table */ 2 31 2 dev_class_tab_offset fixed bin (18), /* offset of device class table */ 2 32 2 q_group_tab_offset fixed bin (18), /* offset of queue group table */ 2 33 2 forms_info_tab_offset fixed bin (18), /* offset of forms info tables */ 2 34 2 text_strings_offset fixed bin (18), 2 35 2 start_of_tables fixed bin; /* beginning of above tables, MUST start on even word boundry */ 2 36 2 37 /* Defines common text block to store virtually all text in the I/O daemon tables */ 2 38 dcl text_strings_ptr ptr; 2 39 dcl 1 text_strings aligned based (text_strings_ptr), 2 40 2 length fixed bin, 2 41 2 chars char (1 refer (text_strings.length)) unaligned; 2 42 2 43 /* this defines text offsets used to locate i/o daemon tables strings in 2 44* the text_strings structure */ 2 45 dcl 1 text_offset based, 2 46 2 first_char fixed bin (18) unsigned unaligned, 2 47 2 total_chars fixed bin (18) unsigned unaligned; 2 48 2 49 dcl IODT_VERSION_5 char (8) int static options (constant) init ("IODT0005"); /* current version number */ 2 50 2 51 2 52 /* END INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 586 587 /* BEGIN INCLUDE FILE ... iod_forms_info_tab.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 3 5* audit(88-10-12,Wallman), install(88-10-28,MR12.2-1199): 3 6* Created. 3 7* END HISTORY COMMENTS */ 3 8 3 9 /* format: style4 */ 3 10 3 11 dcl ifitp ptr; 3 12 dcl 1 iod_forms_info_tab aligned based (ifitp), 3 13 2 n_groups fixed bin (17) unaligned, /* number of forms_info groups defined */ 3 14 2 n_words fixed bin (17) unaligned, /* number of words in forms element data area */ 3 15 2 element_data_block (1 refer (iod_forms_info_tab.n_words)) fixed bin (35), 3 16 2 groups (1 refer (iod_forms_info_tab.n_groups)), 3 17 3 name char (32) unaligned, /* forms info group name */ 3 18 3 comment unaligned like text_offset, /* offset to comment string in text_strings */ 3 19 3 first_element_index fixed bin (17) unaligned; /* index in element_data_block of 1st element in group */ 3 20 3 21 dcl fep ptr; /* forms element ptr */ 3 22 dcl 1 element_common aligned based (fep), 3 23 2 type fixed bin (8) unaligned, /* type of element */ 3 24 2 n_names fixed bin (8) unaligned, /* number of names on element */ 3 25 2 next_element_index fixed bin (17) unaligned, /* index in element_data_block of next element in group */ 3 26 2 comment unaligned like text_offset, /* comment for element */ 3 27 2 names (1 refer (element_common.n_names)) unaligned like text_offset; /* names assigned to the element */ 3 28 3 29 dcl 1 orientation_element aligned based (fep), 3 30 2 common like element_common, 3 31 2 escape_string unaligned like text_offset, /* escape string for the element */ 3 32 2 factors (2) fixed bin (17) unaligned, /* 1=in, 2=cm, 3=pt, 4=lpi */ 3 33 2 height float bin unaligned, /* height in points (1/72s inch) */ 3 34 2 width float bin unaligned; /* width in points (1/72s inch) */ 3 35 3 36 dcl 1 font_element aligned like orientation_element based (fep); 3 37 3 38 dcl 1 font_size_element aligned like orientation_element based (fep); 3 39 3 40 dcl 1 line_element aligned like orientation_element based (fep); 3 41 3 42 dcl 1 holes_element aligned like orientation_element based (fep); 3 43 3 44 dcl 1 font_name_element aligned based (fep), 3 45 2 common like element_common, 3 46 2 escape_string unaligned like text_offset; 3 47 3 48 dcl 1 preamble_element aligned like font_name_element based (fep); 3 49 3 50 dcl 1 postamble_element aligned like font_name_element based (fep); 3 51 3 52 dcl 1 uses_element aligned based (fep), 3 53 2 common like element_common, 3 54 2 n_indices fixed bin (35) unaligned, 3 55 2 index_blocks (1 refer (uses_element.n_indices)) unaligned, 3 56 3 name unaligned like text_offset, 3 57 3 index fixed bin (35) unaligned; 3 58 3 59 dcl 1 special_element aligned based (fep), 3 60 2 common like element_common, 3 61 2 special_string unaligned like text_offset; 3 62 3 63 /* strings for use with element_common.type in forms_info_tab and 3 64* forms_info.types in forms_info */ 3 65 dcl FORMS_TYPE_STRINGS (10) char (11) int static options (constant) init ( 3 66 "uses", "font", "font_name", "font_size", "orientation", 3 67 "line_height", "preamble", "postamble", "holes", "special"); 3 68 3 69 /* strings for each of these types are found in FORMS_TYPE_STRINGS */ 3 70 dcl (TYPE_USES init (1), 3 71 TYPE_FONT_DESC init (2), 3 72 TYPE_FONT_NAME init (3), 3 73 TYPE_FONT_SIZE init (4), 3 74 TYPE_ORIENTATION init (5), 3 75 TYPE_LINE_DESC init (6), 3 76 TYPE_PREAMBLE init (7), 3 77 TYPE_POSTAMBLE init (8), 3 78 TYPE_HOLES init (9), 3 79 TYPE_SPECIAL init (10) 3 80 ) fixed bin int static options (constant); 3 81 3 82 /* factors for computing points (1/72 inch) 3 83* 1 = inches, 2 = centimeters, 3 = points, 4 = lines/inch */ 3 84 dcl SIZE_FACTORS (4) float bin (27) int static options (constant) 3 85 init (72, 28.34646, 1, 72); 3 86 3 87 dcl (FACTOR_INCHES init (1), 3 88 FACTOR_CENTIMETERS init (2), 3 89 FACTOR_POINTS init (3), 3 90 FACTOR_LPI init (4)) fixed bin int static options (constant); 3 91 3 92 dcl ORIENTATION_STRINGS (2) char (9) int static options (constant) init ("portrait", "landscape"); 3 93 3 94 dcl (PORTRAIT_ORIENTATION init (1), 3 95 LANDSCAPE_ORIENTATION init (2)) fixed bin int static options (constant); 3 96 3 97 /* END INCLUDE FILE ... iod_forms_info_tab.incl.pl1 */ 587 588 /* BEGIN INCLUDE FILE mode_string_info.incl.pl1 */ 4 2 4 3 /* Structure for parse_mode_string_ JRDavis 20 October 1980 4 4* Last modified 12 January 1981 by J. Spencer Love for version 2, make char_value varying string */ 4 5 4 6 declare mode_value_ptr ptr, 4 7 number_of_modes fixed bin; 4 8 4 9 declare 1 mode_string_info aligned based (mode_string_info_ptr), 4 10 2 version fixed bin, 4 11 2 number fixed bin, 4 12 2 modes (number_of_modes refer (mode_string_info.number)) like mode_value; 4 13 4 14 declare mode_string_info_ptr ptr; 4 15 4 16 declare 1 mode_value aligned based (mode_value_ptr), 4 17 2 version fixed bin, 4 18 2 mode_name char (32) unaligned, 4 19 2 flags, 4 20 3 boolean_valuep bit (1) unaligned, 4 21 3 numeric_valuep bit (1) unaligned, 4 22 3 char_valuep bit (1) unaligned, 4 23 3 boolean_value bit (1) unaligned, 4 24 3 pad1 bit (32) unaligned, 4 25 2 numeric_value fixed bin (35), 4 26 2 char_value char (32) varying, 4 27 2 code fixed bin (35), 4 28 2 pad2 bit (36); 4 29 4 30 declare mode_string_info_version_2 fixed bin static options (constant) initial (2), 4 31 mode_value_version_3 fixed bin static options (constant) initial (3); 4 32 4 33 /* END INCLUDE FILE mode_string_info.incl.pl1 */ 588 589 /* BEGIN INCLUDE FILE...q_group_tab.incl.pl1 */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 5 7* Ancient History 5 8* Created by J. Stern, December 1974 5 9* Modified by J. Whitmore April 1978 5 10* Modified by R. McDonald May 1980 to include page charges (UNCA) 5 11* Modified by E. N. Kittlitz June 1981 for UNCA changes 5 12* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 5 13* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 5 14* Add forms_validation, default_form and font_dir variables for laser 5 15* printer support. 5 16* END HISTORY COMMENTS */ 5 17 5 18 5 19 /* format: style4 */ 5 20 5 21 dcl qgtp ptr; /* ptr to queue group table */ 5 22 dcl 1 q_group_tab aligned based (qgtp), 5 23 2 n_q_groups fixed bin, /* number of queue groups */ 5 24 2 pad fixed bin, 5 25 2 entries (1 refer (q_group_tab.n_q_groups)) like qgte; /* entries of queue group table */ 5 26 5 27 dcl qgtep ptr; /* queue group table entry pointer */ 5 28 dcl 1 qgte aligned based (qgtep), /* queue group table entry */ 5 29 5 30 /* static info from the parms file */ 5 31 5 32 2 name char (24), /* queue group name */ 5 33 2 comment unaligned like text_offset, /* comment to apply to the request_type */ 5 34 2 driver_id char (32), /* person.project name of drivers for this q group */ 5 35 2 accounting unaligned like text_offset, /* offset to accounting routine pathname, "system" => charge_user_ */ 5 36 2 generic_type char (32), /* generic type of requests in this queue */ 5 37 2 default_generic_queue fixed bin (1), /* 1 if this is default queue for above generic type, else 0 */ 5 38 2 rqti_seg_name char (32), /* name of rqti seg, if required, else blank */ 5 39 2 max_queues fixed bin, /* number of queues for this request type */ 5 40 2 default_queue fixed bin, /* number of the default queue */ 5 41 2 line_charge, /* price names for line charges */ 5 42 3 queue (4) char (32), /* one name for each queue */ 5 43 2 page_charge, /* price names for page charges */ 5 44 3 queue (4) char (32), /* one name for each queue */ 5 45 2 forms_table unaligned like text_offset, /* offset to forms table to apply to this queue group */ 5 46 2 forms_validation unaligned like text_offset, /* offset to name of routine for forms validation */ 5 47 2 default_form unaligned like text_offset, /* offset to default -form string if none given */ 5 48 2 font_dir unaligned like text_offset, /* offset to location of downloadable fonts */ 5 49 2 first_dev_class fixed bin, /* index of first device class entry of queue group */ 5 50 2 last_dev_class fixed bin, /* index of last device class entry of queue group */ 5 51 5 52 /* dynamic info reflecting current status of queues */ 5 53 5 54 2 open fixed bin, /* 1 if queues have been opened, else 0 */ 5 55 2 per_queue_info (4), 5 56 3 last_read bit (72), /* ID of last message read */ 5 57 3 mseg_index fixed bin, /* message segment index */ 5 58 3 pad fixed bin; /* pad to even word boundary */ 5 59 5 60 /* END INCLUDE FILE...q_group_tab.incl.pl1 */ 589 590 /* BEGIN INCLUDE FILE ... system_forms_info.incl.pl1 */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(88-02-26,Brunelle), approve(88-06-08,MCR7911), 6 5* audit(88-10-12,Wallman), install(88-10-28,MR12.2-1199): 6 6* Created. 6 7* END HISTORY COMMENTS */ 6 8 6 9 /* format: style4 */ 6 10 6 11 /* input structure for call to iod_info_$evaluate_forms_info */ 6 12 6 13 dcl evaluate_forms_info_input_ptr ptr; 6 14 dcl 1 evaluate_forms_info_input aligned based (evaluate_forms_info_input_ptr), 6 15 2 version char (8), 6 16 2 ithp ptr, /* ptr to io daemon tables */ 6 17 2 qgtep ptr, /* request type entry ptr */ 6 18 2 idtep ptr, /* major device entry ptr */ 6 19 2 mdtep ptr, /* minor device entry ptr */ 6 20 2 max_forms_string_length fixed bin, /* max allowed size of forms string */ 6 21 2 forms_string_length fixed bin, /* # of chars in forms string */ 6 22 2 forms_string char (system_input_forms_string_length/* forms string to evaluate */ 6 23 refer (evaluate_forms_info_input.forms_string_length)), 6 24 2 area_ptr ptr; /* ptr to user area */ 6 25 dcl system_input_forms_string_length fixed bin; 6 26 dcl EVALUATE_FORMS_INFO_INPUT_VERSION_1 char (8) int static options (constant) init ("EFII0001"); 6 27 6 28 6 29 /* output structure for call to iod_info_$evaluate_forms_info */ 6 30 6 31 dcl evaluate_forms_info_output_ptr ptr; 6 32 dcl 1 evaluate_forms_info_output aligned based (evaluate_forms_info_output_ptr), 6 33 2 version char (8), 6 34 2 lines_per_page fixed bin, 6 35 2 chars_per_line fixed bin, 6 36 2 lines_per_inch fixed bin, 6 37 2 forms_length fixed bin, 6 38 2 error_length fixed bin, 6 39 2 escape_length fixed bin, 6 40 2 special_length fixed bin, 6 41 2 returned_forms char (system_returned_forms_length 6 42 refer (evaluate_forms_info_output.forms_length)), 6 43 2 error_string char (system_error_string_length 6 44 refer (evaluate_forms_info_output.error_length)), 6 45 2 escape_string char (system_escape_string_length 6 46 refer (evaluate_forms_info_output.escape_length)), 6 47 2 special_string char (system_special_string_length 6 48 refer (evaluate_forms_info_output.special_length)); 6 49 6 50 dcl (system_returned_forms_length, system_error_string_length, 6 51 system_escape_string_length, system_special_string_length) fixed bin; 6 52 6 53 dcl EVALUATE_FORMS_INFO_OUTPUT_VERSION_1 char (8) int static options (constant) init ("EFIO0001"); 6 54 6 55 /* END INCLUDE FILE ... system_forms_info.incl.pl1 */ 590 591 /* BEGIN INCLUDE FILE ... user_forms_info.incl.pl1 */ 7 2 7 3 7 4 /****^ HISTORY COMMENTS: 7 5* 1) change(88-02-26,Brunelle), approve(88-06-08,MCR7911), 7 6* audit(88-10-12,Wallman), install(88-10-28,MR12.2-1199): 7 7* Created. 7 8* END HISTORY COMMENTS */ 7 9 7 10 /* format: style4 */ 7 11 7 12 /* structure used to return information for iod_info_$forms_info call */ 7 13 7 14 dcl forms_info_ptr ptr; 7 15 dcl 1 forms_info based (forms_info_ptr), 7 16 2 version char (8), 7 17 2 no_entries fixed bin, /* # entries in table */ 7 18 2 no_names fixed bin, /* # of names in table */ 7 19 2 no_comments fixed bin, /* # of comments in table */ 7 20 2 no_types fixed bin, /* # of type names in table */ 7 21 2 no_uses fixed bin, /* # of uses entries in table */ 7 22 2 no_specials fixed bin, /* # of special entries in table */ 7 23 2 default_forms_length fixed bin, 7 24 2 default_form char (forms_info_default_forms_length refer (forms_info.default_forms_length)), 7 25 2 entry (forms_info_entry_count refer (forms_info.no_entries)), 7 26 3 first_name_index fixed bin, /* index into names for first name for this entry */ 7 27 3 last_name_index fixed bin, /* index into names for last name for this entry */ 7 28 3 comment_index fixed bin, /* index into comments for this entry */ 7 29 3 type_index fixed bin, /* index into types for this entry */ 7 30 3 uses_index fixed bin, /* index into uses for this entry */ 7 31 3 special_index fixed bin, /* index into specials for this entry */ 7 32 2 names (forms_info_name_count refer (forms_info.no_names)) char (32), 7 33 2 comments (forms_info_comment_count refer (forms_info.no_comments)) char (128), 7 34 2 types (forms_info_types_count refer (forms_info.no_types)) fixed bin, 7 35 2 uses (forms_info_uses_count refer (forms_info.no_uses)) char (128), 7 36 2 specials (forms_info_specials_count refer (forms_info.no_specials)) char (64); 7 37 7 38 dcl (forms_info_entry_count, 7 39 forms_info_name_count, 7 40 forms_info_comment_count, 7 41 forms_info_types_count, 7 42 forms_info_uses_count, 7 43 forms_info_specials_count, 7 44 forms_info_default_forms_length) fixed bin; 7 45 dcl FORMS_INFO_VERSION_1 char (8) int static options (constant) init ("FIxx0001"); 7 46 7 47 7 48 /* input structure for call to iod_info_$validate_forms_info */ 7 49 7 50 dcl validate_forms_info_input_ptr ptr; 7 51 dcl 1 validate_forms_info_input aligned based (validate_forms_info_input_ptr), 7 52 2 version char (8), 7 53 2 request_type char (32), /* request_type to use to evaluate the forms string */ 7 54 2 user_area_ptr ptr, /* ptr to user area to allocate return structure in */ 7 55 2 max_forms_string_length fixed bin, /* max allowed size of returned forms string */ 7 56 2 forms_string_length fixed bin, /* # of chars in input forms string to validate */ 7 57 2 forms_string char (input_forms_string_length /* forms string to validate */ 7 58 refer (validate_forms_info_input.forms_string_length)); 7 59 7 60 dcl input_forms_string_length fixed bin; 7 61 dcl VALIDATE_FORMS_INFO_INPUT_VERSION_1 char (8) int static options (constant) init ("VFII0001"); 7 62 7 63 7 64 /* output structure returned for call to iod_info_$validate_forms_info */ 7 65 7 66 dcl validate_forms_info_output_ptr ptr; 7 67 dcl 1 validate_forms_info_output aligned based (validate_forms_info_output_ptr), 7 68 2 version char (8), 7 69 2 lines_per_page fixed bin, 7 70 2 chars_per_line fixed bin, 7 71 2 lines_per_inch fixed bin, 7 72 2 forms_allowed bit (1), 7 73 2 forms_length fixed bin, 7 74 2 error_length fixed bin, 7 75 2 returned_forms char (returned_forms_length 7 76 refer (validate_forms_info_output.forms_length)), 7 77 2 error_string char (error_string_length 7 78 refer (validate_forms_info_output.error_length)); 7 79 7 80 dcl (returned_forms_length, error_string_length) fixed bin; 7 81 7 82 dcl VALIDATE_FORMS_INFO_OUTPUT_VERSION_1 char (8) int static options (constant) init ("VFIO0001"); 7 83 7 84 /* END INCLUDE FILE ... user_forms_info.incl.pl1 */ 591 592 593 end iod_forms_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/14/88 1100.1 iod_forms_.pl1 >spec>install>1212>iod_forms_.pl1 585 1 11/09/88 0759.7 iod_device_tab.incl.pl1 >ldd>include>iod_device_tab.incl.pl1 586 2 11/09/88 0759.7 iod_tables_hdr.incl.pl1 >ldd>include>iod_tables_hdr.incl.pl1 587 3 11/09/88 0759.7 iod_forms_info_tab.incl.pl1 >ldd>include>iod_forms_info_tab.incl.pl1 588 4 03/19/81 1206.8 mode_string_info.incl.pl1 >ldd>include>mode_string_info.incl.pl1 589 5 11/09/88 0759.7 q_group_tab.incl.pl1 >ldd>include>q_group_tab.incl.pl1 590 6 11/09/88 0759.7 system_forms_info.incl.pl1 >ldd>include>system_forms_info.incl.pl1 591 7 11/09/88 0759.7 user_forms_info.incl.pl1 >ldd>include>user_forms_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. EVALUATE_FORMS_INFO_OUTPUT_VERSION_1 000000 constant char(8) initial packed unaligned dcl 6-53 ref 194 FORMS_TYPE_STRINGS 000003 constant char(11) initial array packed unaligned dcl 3-65 ref 75 75 125 125 134 138 145 153 153 154 154 495 TYPE_FONT_DESC constant fixed bin(17,0) initial dcl 3-70 set ref 162* 512 TYPE_FONT_NAME constant fixed bin(17,0) initial dcl 3-70 set ref 163* 518 TYPE_FONT_SIZE constant fixed bin(17,0) initial dcl 3-70 set ref 164* 522 TYPE_HOLES constant fixed bin(17,0) initial dcl 3-70 set ref 167* 533 TYPE_LINE_DESC constant fixed bin(17,0) initial dcl 3-70 set ref 166* 528 TYPE_ORIENTATION constant fixed bin(17,0) initial dcl 3-70 set ref 165* 506 TYPE_POSTAMBLE constant fixed bin(17,0) initial dcl 3-70 set ref 168* 539 TYPE_PREAMBLE 000002 constant fixed bin(17,0) initial dcl 3-70 set ref 161* 502 TYPE_SPECIAL constant fixed bin(17,0) initial dcl 3-70 set ref 160* 258 329 543 TYPE_USES constant fixed bin(17,0) initial dcl 3-70 ref 256 316 416 416 567 a_area_ptr parameter pointer dcl 32 set ref 210 214* 339* a_code parameter fixed bin(35,0) dcl 33 set ref 96 101* 203* 210 215* 228* 235* 344* a_input_ptr parameter pointer dcl 34 ref 96 99 210 213 a_output_ptr parameter pointer dcl 35 set ref 96 100* 202* addr builtin function dcl 50 ref 250 290 380 412 501 564 566 area 000100 stack reference condition dcl 52 ref 266 270 area_ptr based pointer level 2 dcl 6-14 ref 184 225 char builtin function dcl 50 ref 409 char_height 2 001720 automatic float bin(27) level 2 dcl 80 set ref 112* 172 173 174 515* 525* char_value 13 based varying char(32) level 2 dcl 4-16 ref 407 char_valuep 11(02) based bit(1) level 3 packed packed unaligned dcl 4-16 ref 407 char_width 3 001720 automatic float bin(27) level 2 dcl 80 set ref 112* 181 181 516* 526* chars 1 based char level 2 packed packed unaligned dcl 2-39 ref 583 chars_per_line 3 based fixed bin(17,0) level 2 dcl 6-32 set ref 196* cleanup 000000 stack reference condition dcl 52 ref 368 code 000106 automatic fixed bin(35,0) dcl 58 in procedure "iod_forms_" set ref 129 138* 145* 149* 150 154* 156 203 234 235 459* 467* 476* code 24 based fixed bin(35,0) level 2 in structure "mode_value" dcl 4-16 in procedure "iod_forms_" ref 384 385 comment 1 based structure level 2 packed packed unaligned dcl 3-22 set ref 306* comment_index based fixed bin(17,0) array level 3 dcl 7-15 set ref 305* 308* comments based char(128) array level 2 packed packed unaligned dcl 7-15 set ref 273* 306* convert_status_code_ 000010 constant entry external dcl 39 ref 386 default_form 11 based char level 2 in structure "forms_info" packed packed unaligned dcl 7-15 in procedure "iod_forms_" set ref 278* default_form 7 based structure level 2 in structure "mdte" packed packed unaligned dcl 1-64 in procedure "iod_forms_" set ref 138* default_form 145 based structure level 2 in structure "qgte" packed packed unaligned dcl 5-28 in procedure "iod_forms_" set ref 145* 278* default_forms_length 10 based fixed bin(17,0) level 2 dcl 7-15 set ref 268* 272 272 272 272 272 272 273 273 273 273 277 278 295 298 300 305 306 308 312 313 318 320 320 322 322 326 331 332 334 default_type_indices 1 001720 automatic fixed bin(17,0) array level 2 dcl 75 set ref 134* 138* 145* 496 element_common based structure level 1 dcl 3-22 element_data_block 1 based fixed bin(35,0) array level 2 dcl 3-12 set ref 250 290 412 501 564 566 element_index 000107 automatic fixed bin(17,0) dcl 59 in procedure "iod_forms_" set ref 248* 249 250 260* 288* 289 290 335* 495* 496 496* 500 501 element_index 000100 automatic fixed bin(17,0) dcl 358 in procedure "process_forms_string" set ref 405* 411 412 415 421* element_to_use parameter fixed bin(17,0) dcl 558 ref 552 564 entry based structure array level 2 unaligned dcl 7-15 set ref 272* error_length 6 based fixed bin(17,0) level 2 dcl 6-32 set ref 192* 198 199 200 error_string based char level 2 dcl 6-32 set ref 198* error_string_long 000101 automatic char(100) dcl 359 set ref 386* 387* error_string_short 000132 automatic char(8) dcl 360 set ref 386* error_table_$bad_arg 000012 external static fixed bin(35,0) dcl 40 ref 373 error_table_$bad_forms_option 000014 external static fixed bin(35,0) dcl 41 ref 427 error_table_$bad_mode_syntax 000016 external static fixed bin(35,0) dcl 42 ref 373 error_table_$no_forms_table_defined 000022 external static fixed bin(35,0) dcl 44 ref 467 error_table_$no_table 000020 external static fixed bin(35,0) dcl 43 ref 149 476 error_table_$notalloc 000024 external static fixed bin(35,0) dcl 45 ref 344 error_table_$null_info_ptr 000026 external static fixed bin(35,0) dcl 46 ref 228 escape_length 7 based fixed bin(17,0) level 2 dcl 6-32 set ref 192* 199 200 escape_string based structure level 2 in structure "orientation_element" packed packed unaligned dcl 3-29 in procedure "iod_forms_" set ref 507* escape_string based structure level 2 in structure "postamble_element" packed packed unaligned dcl 3-50 in procedure "iod_forms_" set ref 540* escape_string based structure level 2 in structure "holes_element" packed packed unaligned dcl 3-42 in procedure "iod_forms_" set ref 534* escape_string based structure level 2 in structure "line_element" packed packed unaligned dcl 3-40 in procedure "iod_forms_" set ref 529* escape_string based structure level 2 in structure "preamble_element" packed packed unaligned dcl 3-48 in procedure "iod_forms_" set ref 503* escape_string based char level 2 in structure "evaluate_forms_info_output" dcl 6-32 in procedure "iod_forms_" set ref 199* escape_string based structure level 2 in structure "font_element" packed packed unaligned dcl 3-36 in procedure "iod_forms_" set ref 513* 519* 523* evaluate_forms_info_input based structure level 1 dcl 6-14 evaluate_forms_info_input_ptr 001752 automatic pointer dcl 6-13 set ref 99* 104 105 106 107 154 184 213* 218 219 220 221 225 evaluate_forms_info_output based structure level 1 dcl 6-32 set ref 192 evaluate_forms_info_output_ptr 001754 automatic pointer dcl 6-31 set ref 192* 194 195 196 197 198 199 200 202 fep 001742 automatic pointer dcl 3-21 set ref 250* 253 254 256 258 260 290* 296 298 303 306 312 316 319 320 322 329 332 335 412* 413 414 415 416 421 501* 503 507 509 510 513 515 516 519 523 525 526 529 531 534 536 537 540 544 564* 565 566 569 first_char parameter fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 579 ref 583 first_element_index based fixed bin(17,0) array level 3 packed packed unaligned dcl 3-12 ref 481 first_name_index based fixed bin(17,0) array level 3 dcl 7-15 set ref 295* flags 11 based structure level 2 dcl 4-16 font_element based structure level 1 dcl 3-36 font_name_element based structure level 1 dcl 3-44 forms_info based structure level 1 unaligned dcl 7-15 set ref 268 forms_info_comment_count 001766 automatic fixed bin(17,0) dcl 7-38 set ref 241* 254* 254 268 268 281* 304* 304 305 306 forms_info_default_forms_length 001772 automatic fixed bin(17,0) dcl 7-38 set ref 263* 268 268 forms_info_entry_count 001764 automatic fixed bin(17,0) dcl 7-38 set ref 241* 252* 252 262 268 268 281* 292* 292 295 300 305 308 313 318 326 331 334 forms_info_name_count 001765 automatic fixed bin(17,0) dcl 7-38 set ref 241* 253* 253 268 268 281* 295 297* 297 298 300 forms_info_ptr 001762 automatic pointer dcl 7-14 set ref 268* 272 273 273 273 273 277 278 295 298 300 305 306 308 312 313 318 320 320 322 322 326 331 332 334 339 forms_info_specials_count 001771 automatic fixed bin(17,0) dcl 7-38 set ref 241* 258* 258 268 268 281* 330* 330 331 332 forms_info_tab_offset 14 based fixed bin(18,0) level 2 dcl 2-23 ref 109 223 forms_info_types_count 001767 automatic fixed bin(17,0) dcl 7-38 set ref 241* 262* 268 268 281* 311* 311 312 313 forms_info_uses_count 001770 automatic fixed bin(17,0) dcl 7-38 set ref 241* 256* 256 268 268 281* 317* 317 318 320 320 322 322 forms_length 5 based fixed bin(17,0) level 2 dcl 6-32 set ref 192* 198 199 200 forms_string 14 based char level 2 dcl 6-14 ref 154 forms_string_length 13 based fixed bin(17,0) level 2 dcl 6-14 ref 154 184 225 forms_table 143 based structure level 2 in structure "qgte" packed packed unaligned dcl 5-28 in procedure "iod_forms_" set ref 462* forms_table 35 based structure level 2 in structure "idte" packed packed unaligned dcl 1-29 in procedure "iod_forms_" set ref 460* forms_table_name 002034 automatic char(32) packed unaligned dcl 455 set ref 458* 460* 462 462* 466 472 forms_table_start_index 001720 automatic fixed bin(17,0) level 2 dcl 75 set ref 248 288 405 481* got_a_match 000134 automatic bit(1) packed unaligned dcl 361 set ref 404* 411 418* 426 groups based structure array level 2 dcl 3-12 hbound builtin function dcl 50 ref 75 75 125 125 134 138 145 153 153 154 154 495 height based float bin(27) level 2 in structure "line_element" packed packed unaligned dcl 3-40 in procedure "iod_forms_" ref 531 height based float bin(27) level 2 in structure "orientation_element" packed packed unaligned dcl 3-29 in procedure "iod_forms_" ref 509 536 height based float bin(27) level 2 in structure "font_element" packed packed unaligned dcl 3-36 in procedure "iod_forms_" ref 515 525 holes_element based structure level 1 dcl 3-42 i 000110 automatic fixed bin(17,0) dcl 60 in procedure "iod_forms_" set ref 296* 298* 319* 320 322* 472* 472* 475 481 i 000135 automatic fixed bin(17,0) dcl 362 in procedure "process_forms_string" set ref 379* 380* i 000100 automatic fixed bin(17,0) dcl 561 in procedure "expand_uses_definitions" set ref 565* 566 567 569* idte based structure level 1 dcl 1-29 idtep 6 based pointer level 2 in structure "evaluate_forms_info_input" dcl 6-14 in procedure "iod_forms_" ref 106 220 idtep 001730 automatic pointer dcl 1-28 in procedure "iod_forms_" set ref 106* 135 220* 460 460 ifitp 001740 automatic pointer dcl 3-11 set ref 109* 223* 250 290 412 472 472 475 481 501 564 566 index based fixed bin(35,0) array level 3 packed packed unaligned dcl 3-52 ref 566 567 569 index_blocks based structure array level 2 packed packed unaligned dcl 3-52 ioa_$rsnpnnl 000030 constant entry external dcl 47 ref 387 428 iod_forms_info_tab based structure level 1 dcl 3-12 iod_tables_hdr based structure level 1 dcl 2-23 ithp 2 based pointer level 2 in structure "evaluate_forms_info_input" dcl 6-14 in procedure "iod_forms_" ref 104 218 ithp 001734 automatic pointer dcl 2-22 in procedure "iod_forms_" set ref 104* 108 108 109 109 218* 222 222 223 223 j 000136 automatic fixed bin(17,0) dcl 362 set ref 413* 414* last_name_index based fixed bin(17,0) array level 3 dcl 7-15 set ref 300* length based fixed bin(17,0) level 2 in structure "text_strings" dcl 2-39 in procedure "iod_forms_" ref 583 length builtin function dcl 50 in procedure "iod_forms_" ref 188 189 190 191 line_element based structure level 1 dcl 3-40 line_height 4 001720 automatic float bin(27) level 2 dcl 80 set ref 112* 171 178 179 531* linelength 6 001720 automatic fixed bin(17,0) level 2 dcl 80 set ref 117* 181* 196 lines_per_inch 4 based fixed bin(17,0) level 2 dcl 6-32 set ref 197* lines_per_page 2 based fixed bin(17,0) level 2 dcl 6-32 set ref 195* lpi 7 001720 automatic fixed bin(17,0) level 2 dcl 80 set ref 117* 174* 179* 197 ltrim builtin function dcl 50 ref 409 mdte based structure level 1 dcl 1-64 mdtep 001732 automatic pointer dcl 1-63 in procedure "iod_forms_" set ref 107* 136 137 138 221* mdtep 10 based pointer level 2 in structure "evaluate_forms_info_input" dcl 6-14 in procedure "iod_forms_" ref 107 221 mode_name 1 based char(32) level 2 packed packed unaligned dcl 4-16 set ref 387* 406 428* mode_string_$parse 000032 constant entry external dcl 48 ref 371 mode_string_info based structure level 1 dcl 4-9 set ref 438 mode_string_info_ptr 001746 automatic pointer dcl 4-14 set ref 367* 371* 379 380 436 438 439* mode_value based structure level 1 dcl 4-16 mode_value_ptr 001744 automatic pointer dcl 4-6 set ref 380* 384 385 387 406 407 407 409 409 428 modes 2 based structure array level 2 dcl 4-9 set ref 380 n_groups based fixed bin(17,0) level 2 packed packed unaligned dcl 3-12 ref 472 475 n_indices based fixed bin(35,0) level 2 packed packed unaligned dcl 3-52 ref 319 322 565 n_names 0(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 3-22 ref 253 296 319 320 322 332 413 503 507 509 510 513 515 516 519 523 525 526 529 531 534 536 537 540 544 565 566 567 569 n_words 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-12 ref 472 481 name based structure array level 3 in structure "uses_element" packed packed unaligned dcl 3-52 in procedure "iod_forms_" set ref 320* name based char(32) array level 3 in structure "iod_forms_info_tab" packed packed unaligned dcl 3-12 in procedure "iod_forms_" ref 472 names based char(32) array level 2 in structure "forms_info" packed packed unaligned dcl 7-15 in procedure "iod_forms_" set ref 273* 298* names 2 based structure array level 2 in structure "element_common" packed packed unaligned dcl 3-22 in procedure "iod_forms_" set ref 298* 414* next_element_index 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-22 ref 260 335 421 no_comments 4 based fixed bin(17,0) level 2 dcl 7-15 set ref 268* 273 273 273 277 312 320 320 322 322 332 no_entries 2 based fixed bin(17,0) level 2 dcl 7-15 set ref 268* 272 273 273 273 273 277 298 306 312 320 320 322 322 332 no_names 3 based fixed bin(17,0) level 2 dcl 7-15 set ref 268* 273 273 273 273 277 306 312 320 320 322 322 332 no_specials 7 based fixed bin(17,0) level 2 dcl 7-15 set ref 268* 273 no_types 5 based fixed bin(17,0) level 2 dcl 7-15 set ref 268* 273 273 277 320 320 322 322 332 no_uses 6 based fixed bin(17,0) level 2 dcl 7-15 set ref 268* 273 273 332 null builtin function dcl 50 ref 100 135 136 143 214 227 367 371 371 436 439 460 462 number 1 based fixed bin(17,0) level 2 dcl 4-9 ref 379 438 numeric_value 12 based fixed bin(35,0) level 2 dcl 4-16 ref 409 numeric_valuep 11(01) based bit(1) level 3 packed packed unaligned dcl 4-16 ref 409 orientation_element based structure level 1 dcl 3-29 page_height 001720 automatic float bin(27) level 2 dcl 80 set ref 112* 173 178 509* 536* 536 page_width 1 001720 automatic float bin(27) level 2 dcl 80 set ref 112* 181 510* 537* 537 pagelength 5 001720 automatic fixed bin(17,0) level 2 dcl 80 set ref 117* 173* 178* 195 parse_error parameter fixed bin(35,0) dcl 356 set ref 349 371* 372 373 373* 385* 386* 427* parse_indices parameter fixed bin(17,0) array dcl 355 set ref 349 366* 415* 416* 416* parse_info 001720 automatic structure level 1 unaligned dcl 75 set ref 125* parsed_element_name 000137 automatic varying char(64) dcl 363 set ref 406* 407* 407 409* 409 414 postamble_element based structure level 1 dcl 3-50 preamble_element based structure level 1 dcl 3-48 ptr builtin function dcl 50 ref 108 109 222 223 qgte based structure level 1 dcl 5-28 qgtep 4 based pointer level 2 in structure "evaluate_forms_info_input" dcl 6-14 in procedure "iod_forms_" ref 105 219 qgtep 001750 automatic pointer dcl 5-27 in procedure "iod_forms_" set ref 105* 143 144 145 219* 263 278 462 462 return_error_string 000111 automatic varying char(1024) dcl 61 set ref 120* 189 198 387* 387* 428* 428* return_escape_string 000512 automatic varying char(1024) dcl 62 set ref 120* 190 199 503* 503 507* 507 513* 513 519* 519 523* 523 529* 529 534* 534 540* 540 return_forms_string 001113 automatic varying char(512) dcl 63 set ref 120* 188 return_special_string 001314 automatic varying char(1024) dcl 64 set ref 120* 191 200 544* 544 rtrim builtin function dcl 50 ref 320 322 406 409 save_elements parameter fixed bin(17,0) array dcl 559 set ref 552 567* 569* size_info 001720 automatic structure level 1 unaligned dcl 80 special_element based structure level 1 dcl 3-59 special_index based fixed bin(17,0) array level 3 dcl 7-15 set ref 331* 334* special_length 10 based fixed bin(17,0) level 2 dcl 6-32 set ref 192* 200 special_string based char level 2 in structure "evaluate_forms_info_output" dcl 6-32 in procedure "iod_forms_" set ref 200* special_string based structure level 2 in structure "special_element" packed packed unaligned dcl 3-59 in procedure "iod_forms_" set ref 332* 544* specials based char(64) array level 2 packed packed unaligned dcl 7-15 set ref 273* 332* string_to_process parameter char packed unaligned dcl 354 set ref 349 371* substr builtin function dcl 50 ref 583 system_error_string_length 001757 automatic fixed bin(17,0) dcl 6-50 set ref 189* 192 192 system_escape_string_length 001760 automatic fixed bin(17,0) dcl 6-50 set ref 190* 192 192 system_returned_forms_length 001756 automatic fixed bin(17,0) dcl 6-50 set ref 188* 192 192 system_special_string_length 001761 automatic fixed bin(17,0) dcl 6-50 set ref 191* 192 192 target parameter structure level 1 packed packed unaligned dcl 579 ref 575 temp_fep 000102 automatic pointer dcl 562 set ref 566* 567 567 569 text_offset based structure level 1 packed packed unaligned dcl 2-45 text_strings based structure level 1 dcl 2-39 text_strings_offset 15 based fixed bin(18,0) level 2 dcl 2-23 ref 108 222 text_strings_ptr 001736 automatic pointer dcl 2-38 set ref 108* 222* 583 total_chars 145(18) based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 5-28 in procedure "iod_forms_" set ref 144 263 total_chars 1(18) based fixed bin(18,0) level 3 in structure "element_common" packed packed unsigned unaligned dcl 3-22 in procedure "iod_forms_" set ref 254 303 total_chars 7(18) based fixed bin(18,0) level 3 in structure "mdte" packed packed unsigned unaligned dcl 1-64 in procedure "iod_forms_" set ref 137 total_chars 0(18) parameter fixed bin(18,0) level 2 in structure "target" packed packed unsigned unaligned dcl 579 in procedure "return_string" ref 581 583 type based fixed bin(8,0) level 2 packed packed unaligned dcl 3-22 ref 256 258 312 316 329 415 416 567 569 type_index based fixed bin(17,0) array level 3 in structure "forms_info" dcl 7-15 in procedure "iod_forms_" set ref 313* type_index parameter fixed bin(17,0) dcl 492 in procedure "evaluate_the_form_type" ref 486 495 496 502 506 512 518 522 528 533 539 543 types based fixed bin(17,0) array level 2 dcl 7-15 set ref 277* 312* unspec builtin function dcl 50 set ref 125* user_area based area(1024) dcl 65 ref 192 268 user_area_ptr 001716 automatic pointer dcl 66 set ref 184* 192 225* 227 268 user_type_indices 001720 automatic fixed bin(17,0) array level 2 dcl 75 set ref 153* 154* 495 uses based char(128) array level 2 packed packed unaligned dcl 7-15 set ref 273* 320* 320 322* 322 uses_element based structure level 1 dcl 3-52 uses_index based fixed bin(17,0) array level 3 dcl 7-15 set ref 318* 326* version based char(8) level 2 dcl 6-32 set ref 194* width based float bin(27) level 2 in structure "font_element" packed packed unaligned dcl 3-36 in procedure "iod_forms_" ref 516 526 width based float bin(27) level 2 in structure "orientation_element" packed packed unaligned dcl 3-29 in procedure "iod_forms_" ref 510 537 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. EVALUATE_FORMS_INFO_INPUT_VERSION_1 internal static char(8) initial packed unaligned dcl 6-26 FACTOR_CENTIMETERS internal static fixed bin(17,0) initial dcl 3-87 FACTOR_INCHES internal static fixed bin(17,0) initial dcl 3-87 FACTOR_LPI internal static fixed bin(17,0) initial dcl 3-87 FACTOR_POINTS internal static fixed bin(17,0) initial dcl 3-87 FORMS_INFO_VERSION_1 internal static char(8) initial packed unaligned dcl 7-45 IODT_VERSION_5 internal static char(8) initial packed unaligned dcl 2-49 LANDSCAPE_ORIENTATION internal static fixed bin(17,0) initial dcl 3-94 ORIENTATION_STRINGS internal static char(9) initial array packed unaligned dcl 3-92 PORTRAIT_ORIENTATION internal static fixed bin(17,0) initial dcl 3-94 SIZE_FACTORS internal static float bin(27) initial array dcl 3-84 VALIDATE_FORMS_INFO_INPUT_VERSION_1 internal static char(8) initial packed unaligned dcl 7-61 VALIDATE_FORMS_INFO_OUTPUT_VERSION_1 internal static char(8) initial packed unaligned dcl 7-82 error_string_length automatic fixed bin(17,0) dcl 7-80 font_size_element based structure level 1 dcl 3-38 idtp automatic pointer dcl 1-22 input_forms_string_length automatic fixed bin(17,0) dcl 7-60 iod_device_tab based structure level 1 dcl 1-23 mdtp automatic pointer dcl 1-57 minor_device_tab based structure level 1 dcl 1-58 mode_string_info_version_2 internal static fixed bin(17,0) initial dcl 4-30 mode_value_version_3 internal static fixed bin(17,0) initial dcl 4-30 number_of_modes automatic fixed bin(17,0) dcl 4-6 q_group_tab based structure level 1 dcl 5-22 qgtp automatic pointer dcl 5-21 returned_forms_length automatic fixed bin(17,0) dcl 7-80 system_input_forms_string_length automatic fixed bin(17,0) dcl 6-25 validate_forms_info_input based structure level 1 dcl 7-51 validate_forms_info_input_ptr automatic pointer dcl 7-50 validate_forms_info_output based structure level 1 dcl 7-67 validate_forms_info_output_ptr automatic pointer dcl 7-66 NAMES DECLARED BY EXPLICIT CONTEXT. evaluate 000166 constant entry external dcl 96 evaluate_forms_option_return 000532 constant label dcl 184 set ref 129 150 156 evaluate_the_form_type 003371 constant entry internal dcl 486 ref 160 161 162 163 164 165 166 167 168 expand_uses_definitions 004160 constant entry internal dcl 552 ref 416 567 info 000674 constant entry external dcl 210 iod_forms_ 000153 constant entry external dcl 24 locate_forms_table 003207 constant entry internal dcl 444 ref 128 233 no_allocation 002405 constant label dcl 344 set ref 266 process_forms_string 002413 constant entry internal dcl 349 ref 138 145 154 process_forms_string_cleanup 003170 constant label dcl 436 ref 368 375 return_string 004300 constant entry internal dcl 575 ref 138 145 278 298 306 320 332 414 460 462 503 507 513 519 523 529 534 540 544 skip_this_mode_entry 003166 constant label dcl 433 ref 391 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4640 4674 4417 4650 Length 5230 4417 34 320 220 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME iod_forms_ 1154 external procedure is an external procedure. on unit on line 266 64 on unit process_forms_string 180 internal procedure is called during a stack extension, and enables or reverts conditions. on unit on line 368 64 on unit locate_forms_table internal procedure shares stack frame of external procedure iod_forms_. evaluate_the_form_type internal procedure shares stack frame of external procedure iod_forms_. expand_uses_definitions 84 internal procedure calls itself recursively. return_string 66 internal procedure uses returns(char(*)) or returns(bit(*)). STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME expand_uses_definitions 000100 i expand_uses_definitions 000102 temp_fep expand_uses_definitions iod_forms_ 000106 code iod_forms_ 000107 element_index iod_forms_ 000110 i iod_forms_ 000111 return_error_string iod_forms_ 000512 return_escape_string iod_forms_ 001113 return_forms_string iod_forms_ 001314 return_special_string iod_forms_ 001716 user_area_ptr iod_forms_ 001720 parse_info iod_forms_ 001720 size_info iod_forms_ 001730 idtep iod_forms_ 001732 mdtep iod_forms_ 001734 ithp iod_forms_ 001736 text_strings_ptr iod_forms_ 001740 ifitp iod_forms_ 001742 fep iod_forms_ 001744 mode_value_ptr iod_forms_ 001746 mode_string_info_ptr iod_forms_ 001750 qgtep iod_forms_ 001752 evaluate_forms_info_input_ptr iod_forms_ 001754 evaluate_forms_info_output_ptr iod_forms_ 001756 system_returned_forms_length iod_forms_ 001757 system_error_string_length iod_forms_ 001760 system_escape_string_length iod_forms_ 001761 system_special_string_length iod_forms_ 001762 forms_info_ptr iod_forms_ 001764 forms_info_entry_count iod_forms_ 001765 forms_info_name_count iod_forms_ 001766 forms_info_comment_count iod_forms_ 001767 forms_info_types_count iod_forms_ 001770 forms_info_uses_count iod_forms_ 001771 forms_info_specials_count iod_forms_ 001772 forms_info_default_forms_length iod_forms_ 002034 forms_table_name locate_forms_table process_forms_string 000100 element_index process_forms_string 000101 error_string_long process_forms_string 000132 error_string_short process_forms_string 000134 got_a_match process_forms_string 000135 i process_forms_string 000136 j process_forms_string 000137 parsed_element_name process_forms_string THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc return_mac fl2_to_fx1 tra_ext_1 alloc_auto_adj enable_op shorten_stack ext_entry int_entry int_entry_desc return_chars_eis op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_status_code_ ioa_$rsnpnnl mode_string_$parse THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_forms_option error_table_$bad_mode_syntax error_table_$no_forms_table_defined error_table_$no_table error_table_$notalloc error_table_$null_info_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 75 000115 138 000120 145 000130 154 000140 24 000152 25 000161 96 000162 99 000174 100 000200 101 000202 104 000203 105 000205 106 000207 107 000211 108 000213 109 000220 112 000224 117 000232 120 000235 125 000241 128 000250 129 000251 134 000253 135 000264 136 000270 137 000274 138 000300 140 000335 142 000336 143 000337 144 000343 145 000347 147 000404 148 000405 149 000406 150 000411 153 000413 154 000425 156 000455 160 000460 161 000462 162 000464 163 000466 164 000470 165 000472 166 000474 167 000476 168 000500 171 000502 172 000504 173 000506 174 000511 176 000515 178 000516 179 000521 181 000525 184 000532 188 000543 189 000545 190 000547 191 000551 192 000553 194 000612 195 000615 196 000617 197 000621 198 000623 199 000634 200 000652 202 000665 203 000667 204 000671 210 000672 213 000702 214 000706 215 000710 218 000711 219 000713 220 000715 221 000717 222 000721 223 000726 225 000732 227 000742 228 000746 229 000751 233 000752 234 000753 235 000755 236 000757 241 000760 248 000766 249 000770 250 000772 252 000774 253 000775 254 001001 256 001005 258 001013 260 001016 261 001022 262 001023 263 001025 266 001031 268 001050 270 001123 272 001124 273 001207 277 001400 278 001433 281 001462 288 001471 289 001473 290 001476 292 001500 295 001501 296 001516 297 001527 298 001530 299 001602 300 001605 303 001622 304 001626 305 001627 306 001640 307 001707 308 001711 311 001720 312 001721 313 001746 316 001763 317 001766 318 001767 319 002000 320 002013 322 002164 324 002236 325 002241 326 002242 329 002251 330 002255 331 002256 332 002273 333 002357 334 002361 335 002374 336 002400 339 002401 341 002404 344 002405 346 002411 349 002412 366 002426 367 002460 368 002463 371 002502 372 002533 373 002536 375 002543 379 002544 380 002555 384 002563 385 002565 386 002567 387 002602 391 002644 404 002645 405 002646 406 002650 407 002670 409 002706 411 002757 412 002766 413 002772 414 003003 415 003042 416 003062 418 003106 420 003110 421 003112 422 003117 426 003120 427 003122 428 003126 433 003166 436 003170 438 003175 439 003203 442 003206 444 003207 458 003210 459 003213 460 003214 462 003245 466 003303 467 003310 468 003313 472 003314 474 003342 475 003344 476 003350 477 003353 481 003354 483 003370 486 003371 495 003373 496 003400 500 003404 501 003405 502 003407 503 003412 505 003451 506 003453 507 003455 509 003514 510 003524 511 003526 512 003527 513 003531 515 003570 516 003600 517 003602 518 003603 519 003605 521 003644 522 003646 523 003650 525 003707 526 003717 527 003721 528 003722 529 003724 531 003763 532 003772 533 003773 534 003775 536 004034 537 004045 538 004050 539 004051 540 004053 542 004112 543 004114 544 004116 546 004155 549 004156 552 004157 564 004165 565 004172 566 004205 567 004222 569 004256 570 004274 572 004276 575 004277 581 004305 583 004326 ----------------------------------------------------------- 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