COMPILATION LISTING OF SEGMENT iod_tables_compiler Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/23/89 1403.6 mst Mon Options: optimize map 1 2 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 4 /* */ 5 /* COMPILED OUTPUT OF SEGMENT iod_tables_compiler.rd */ 6 /* Compiled by: reduction_compiler, Version 2.5 of Oct 21, 1985 */ 7 /* Compiled on: 10/23/89 1403.6 mst Mon */ 8 /* */ 9 /* * * * * * * * * * * * * * * * * * * * * * * */ 10 11 /* *********************************************************** 12* * * 13* * Copyright, (C) Honeywell Bull Inc., 1988 * 14* * * 15* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 16* * * 17* * Copyright (c) 1972 by Massachusetts Institute of * 18* * Technology and Honeywell Information Systems, Inc. * 19* * * 20* *********************************************************** */ 21 22 /* HISTORY COMMENTS: 23* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 24* Written by J. Stern, January 1975 25* Modified by J. C. Whitmore, April 1978 for new RQT substatements 26* Modified by J. C. Whitmore, Oct 1978, for version 3 -> adding the 27* line_id table 28* Modified by J. C. Whitmore, Jan 1980, to remove warning 7 - ctl term 29* illegal with line variable construct. 30* Modified by R. McDonald May 1980 to add keywords card_charge and 31* page_charge. (UNCA) 32* Modified: 10 April 1981 by G. Palter to remove warning 4 -- 33* dprint/dpunch restricts request type names to < 9 characters 34* Modified by E. N. Kittlitz June 1981 for UNCA card_charge, page_charge 35* 2) change(88-01-27,Brunelle), approve(88-10-31,MCR7911), 36* audit(88-10-21,Wallman), install(89-10-23,MR12.3-1099): 37* Converted to reduction form. Add new statements. 38* 3) change(88-10-31,Brunelle), approve(88-10-31,MCR7911), 39* audit(88-11-01,Wallman), install(89-10-23,MR12.3-1099): 40* Add cross check to verify that any device defined as allowed for a 41* request_type has a forms_table entry if the request_type has a 42* forms_table entry. 43* 4) change(89-02-28,Brunelle), approve(89-10-17,MCR8140), 44* audit(89-10-23,Beattie), install(89-10-23,MR12.3-1099): 45* Correct problem of truncated output file because bitcount not being set 46* properly. 47* END HISTORY COMMENTS */ 48 49 50 /*++ 51*\" REDUCTIONS FOR iod_tables_compiler 52* 53*BEGIN / / ERROR (1) / RETURN \ 54* 55*\" Scan for main delimiting statements 56*2 / Time : ; / LEX (2) store_global_grace_time NEXT_STMT / BEGIN \ 57*3 / Time : / ERROR (3) NEXT_STMT / BEGIN \ 58* 59*4 / Max_queues : ; / LEX (2) store_global_max_queues NEXT_STMT / BEGIN \ 60*5 / Max_queues : / ERROR (5) NEXT_STMT / BEGIN \ 61* 62*\" now the main group delimiting statements 63*6 / Line : ; / LEX (2) line_create_table_entry LEX (2) / line_stmts \ 64*7 / Line : / ERROR (3) 65* LEX (2) line_create_table_entry NEXT_STMT / line_stmts \ 66* 67*8 / Device : ; / LEX (2) dev_create_table_entry LEX (2) / device_stmts \ 68*9 / Device : / ERROR (3) 69* LEX (2) dev_create_table_entry NEXT_STMT / device_stmts \ 70* 71*10 / Request_type : ; / LEX (2) rqt_create_table_entry LEX (2) / rqt_stmts \ 72*11 / Request_type : / ERROR (3) 73* LEX (2) rqt_create_table_entry NEXT_STMT / rqt_stmts \ 74* 75*12 / Forms_table : ; / LEX (2) forms_create_group_entry LEX (2) / forms_stmts \ 76*13 / Forms_table : / ERROR (3) 77* LEX (2) forms_create_group_entry NEXT_STMT / forms_stmts \ 78* 79*14 / End ; / LEX 80* [if token.Pnext ^= null () then 81* call statement_error ()] / RETURN \ 82* 83*15 / : / ERROR (2) NEXT_STMT / BEGIN \ 84*16 / / ERROR (3) NEXT_STMT / BEGIN \ 85*17 / / ERROR (1) / RETURN \ 86*\" 87* 88*\" section to decode Line statements 89*line_stmts 90* 91* / comment : ; / LEX (2) line_save_comment LEX (2) / line_stmts \ 92*19 / comment : ; / LEX (2) line_save_comment LEX (2) / line_stmts \ 93*20 / comment : / ERROR (3) NEXT_STMT / line_stmts \ 94* 95*21 / channel : ; / LEX (2) line_save_channel_id LEX (2) / line_stmts \ 96*22 / channel : / ERROR (3) NEXT_STMT / line_stmts \ 97* 98*23 / att_desc : ; / LEX (2) line_save_att_desc LEX (2) / line_stmts \ 99*24 / att_desc : ; / LEX (2) line_save_att_desc LEX (2) / line_stmts \ 100*25 / att_desc : / ERROR (3) NEXT_STMT / line_stmts \ 101* 102*26 / device : ; / LEX (2) line_save_device LEX (2) / line_stmts \ 103*27 / device : / ERROR (3) NEXT_STMT / line_stmts \ 104* 105*28 / / line_validate_entry / BEGIN \ 106* 107*\" 108* 109*\" section to decode Device statements 110*device_stmts 111*29 / comment : ; / LEX (2) dev_save_comment LEX (2) / device_stmts \ 112*30 / comment : ; / LEX (2) dev_save_comment LEX (2) / device_stmts \ 113*31 / comment : / ERROR (3) NEXT_STMT / device_stmts \ 114* 115*32 / prph : ; / LEX (2) 116* dev_save_attach_method (1, ATTACH_TYPE_IOM) 117* LEX (2) / device_stmts \ 118*33 / prph : / ERROR (3) NEXT_STMT / device_stmts \ 119* 120*34 / line : variable ; / LEX (2) 121* dev_save_attach_method (1, ATTACH_TYPE_VARIABLE_LINE) 122* LEX (2) / device_stmts \ 123*35 / line : ; / LEX (2) 124* dev_save_attach_method (1, ATTACH_TYPE_TTY) 125* LEX (2) / device_stmts \ 126*36 / line : / ERROR (3) NEXT_STMT / device_stmts \ 127* 128*37 / dial_id : ; / LEX (2) 129* dev_save_attach_method (1, ATTACH_TYPE_DIAL) 130* LEX (2) / device_stmts \ 131*38 / dial_id : / ERROR (3) NEXT_STMT / device_stmts \ 132* 133*39 / ctl_line : ; / LEX (2) 134* dev_save_attach_method (2, CTL_ATTACH_TYPE_TTY) 135* LEX (2) / device_stmts \ 136*40 / ctl_line : / ERROR (3) NEXT_STMT / device_stmts \ 137* 138*41 / ctl_dial_id : ; / LEX (2) 139* dev_save_attach_method (2, CTL_ATTACH_TYPE_DIAL) 140* LEX (2) / device_stmts \ 141*42 / ctl_dial_id : / ERROR (3) NEXT_STMT / device_stmts \ 142* 143*43 / ctl_source : ; / LEX (2) 144* dev_save_attach_method (2, CTL_ATTACH_TYPE_MC) 145* LEX (2) / device_stmts \ 146*44 / ctl_source : / ERROR (3) NEXT_STMT / device_stmts \ 147* 148*45 / driver_module : ; / LEX (2) dev_save_driver_module LEX (2) / device_stmts \ 149*46 / driver_module : / ERROR (3) NEXT_STMT / device_stmts \ 150* 151*47 / head_sheet : ; / LEX (2) dev_save_head_sheet LEX (2) / device_stmts \ 152*48 / head_sheet : / ERROR (3) NEXT_STMT / device_stmts \ 153* 154*49 / tail_sheet : ; / LEX (2) dev_save_tail_sheet LEX (2) / device_stmts \ 155*50 / tail_sheet : / ERROR (3) NEXT_STMT / device_stmts \ 156* 157*51 / paper_type : single ; / LEX (2) dev_save_paper_type LEX (2) / device_stmts \ 158*52 / paper_type : continuous ; / LEX (2) dev_save_paper_type LEX (2) / device_stmts \ 159*53 / paper_type : / ERROR (3) NEXT_STMT / device_stmts \ 160* 161*54 / forms_validation : ; / LEX (2) dev_save_forms_validation LEX (2) / device_stmts \ 162*55 / forms_validation : / ERROR (3) NEXT_STMT / device_stmts \ 163* 164*56 / default_form : / LEX (2) / dev_process_default_form_string \ 165* 166*57 / font_dir : ; / LEX (2) dev_save_font_dir LEX (2) / device_stmts \ 167*58 / font_dir : / ERROR (3) NEXT_STMT / device_stmts \ 168* 169*59 / forms_info : ; / LEX (2) dev_save_forms_table LEX (2) / device_stmts \ 170*60 / forms_info : / ERROR (3) NEXT_STMT / device_stmts \ 171* 172*61 / args : ; / LEX (2) dev_save_args LEX (2) / device_stmts \ 173*62 / args : ; / LEX (2) dev_save_args LEX (2) / device_stmts \ 174*63 / args : / ERROR (3) NEXT_STMT / device_stmts \ 175* 176*64 / minor_device : ; / LEX (2) 177* dev_create_minor_table_entry NEXT_STMT / device_stmts \ 178*65 / minor_device : / ERROR (3) LEX (2) 179* dev_create_minor_table_entry NEXT_STMT / device_stmts \ 180* 181*66 / minor_args : ; / LEX (2) dev_save_minor_args LEX (2) / device_stmts \ 182*67 / minor_args : ; / LEX (2) dev_save_minor_args LEX (2) / device_stmts \ 183*68 / minor_args : / ERROR (3) NEXT_STMT / device_stmts \ 184* 185*69 / default_type : ; / LEX (2) dev_save_default_type LEX (2) / device_stmts \ 186*70 / default_type : / ERROR (3) NEXT_STMT / device_stmts \ 187* 188*71 / / dev_validate_entry / BEGIN \ 189* 190*\" routine to handle default form string for device 191*dev_process_default_form_string 192*72 / / PUSH (dev_process_default_form_string1) / build_temp_token_value \ 193*dev_process_default_form_string1 194*73 / / dev_save_default_form / device_stmts \ 195* 196*build_temp_token_value 197*74 / / [temp_token_value = ""; 198* temp_token_value_used = TRUE] / \ 199*build_temp_token_value_loop 200*75 / ; / LEX / STACK_POP \ 201*76 / / [temp_token_value = temp_token_value || token_value] 202* LEX / build_temp_token_value_loop \ 203*\" 204* 205*\" section to decode Request_type statements 206*rqt_stmts 207*77 / comment : ; / LEX (2) rqt_save_comment LEX (2) / rqt_stmts \ 208*78 / comment : ; / LEX (2) rqt_save_comment LEX (2) / rqt_stmts \ 209*79 / comment : / ERROR (3) NEXT_STMT / rqt_stmts \ 210* 211*80 / driver_userid : ; / LEX (2) rqt_save_driver_id LEX (2) / rqt_stmts \ 212*81 / driver_userid : / ERROR (3) NEXT_STMT / rqt_stmts \ 213* 214*82 / accounting : ; / LEX (2) rqt_save_accounting LEX (2) / rqt_stmts \ 215*83 / accounting : / ERROR (3) NEXT_STMT / rqt_stmts \ 216* 217*84 / generic_type : ; / LEX (2) rqt_save_generic_type LEX (2) / rqt_stmts \ 218*85 / generic_type : / ERROR (3) NEXT_STMT / rqt_stmts \ 219* 220*86 / rqti_seg : ; / LEX (2) rqt_save_rqti_seg LEX (2) / rqt_stmts \ 221*87 / rqti_seg : / ERROR (3) NEXT_STMT / rqt_stmts \ 222* 223*88 / max_queues : ; / LEX (2) rqt_save_max_queues LEX (2) / rqt_stmts \ 224*89 / max_queues : / ERROR (3) NEXT_STMT / rqt_stmts \ 225* 226*90 / default_queue : ; / LEX (2) rqt_save_default_queue LEX (2) / rqt_stmts \ 227*91 / default_queue : / ERROR (3) NEXT_STMT / rqt_stmts \ 228* 229*92 / line_charge : / LEX (2) rqt_save_charge (1) LEX / rqt_save_charges \ 230* 231*93 / page_charge : / LEX (2) rqt_save_charge (2) LEX / rqt_save_charges \ 232* 233*94 / card_charge : / LEX (2) rqt_save_charge (3) LEX / rqt_save_charges \ 234* 235*95 / forms_validation : ; / LEX (2) rqt_save_forms_validation LEX (2) / rqt_stmts \ 236*96 / forms_validation : / ERROR (3) NEXT_STMT / rqt_stmts \ 237* 238*97 / default_form : / LEX (2) / rqt_process_default_form_string \ 239* 240*98 / font_dir : ; / LEX (2) rqt_save_font_dir LEX (2) / rqt_stmts \ 241*99 / font_dir : / ERROR (3) NEXT_STMT / rqt_stmts \ 242* 243*100 / forms_info : ; / LEX (2) rqt_save_forms_table LEX (2) / rqt_stmts \ 244*101 / forms_info : / ERROR (3) NEXT_STMT / rqt_stmts \ 245* 246*102 / device_class : ; / LEX (2) 247* rqt_create_device_class_entry NEXT_STMT / rqt_stmts \ 248*103 / device_class : / ERROR (3) LEX (2) 249* rqt_create_device_class_entry NEXT_STMT / rqt_stmts \ 250* 251*104 / max_access_class : ;/ LEX (2) rqt_save_access (1) NEXT_STMT / rqt_stmts \ 252*105 / max_access_class : / ERROR (3) NEXT_STMT / rqt_stmts \ 253* 254*106 / min_access_class : ;/ LEX (2) rqt_save_access (2) NEXT_STMT / rqt_stmts \ 255*107 / min_access_class : / ERROR (3) NEXT_STMT / rqt_stmts \ 256* 257*108 / min_banner : ; / LEX (2) rqt_save_access (3) NEXT_STMT / rqt_stmts \ 258*109 / min_banner : / ERROR (3) NEXT_STMT / rqt_stmts \ 259* 260*110 / device : ; / LEX (2) rqt_save_device LEX (2) / rqt_stmts \ 261*111 / device : / ERROR (3) NEXT_STMT / rqt_stmts \ 262* 263*112 / / rqt_validate_entry / BEGIN \ 264* 265*\" section to handle multiple values for line/page/card_charge statements 266*rqt_save_charges 267*113 / , / LEX / rqt_save_charges \ 268*114 / ; / LEX / rqt_stmts \ 269*115 / / rqt_save_charge_continue LEX / rqt_save_charges\ 270*116 / / / BEGIN \ 271* 272* 273*\" routine to handle default form string for request type 274*rqt_process_default_form_string 275*117 / / PUSH (rqt_process_default_form_string1) / build_temp_token_value \ 276*rqt_process_default_form_string1 277*118 / / rqt_save_default_form / rqt_stmts \ 278* 279*\" 280* 281*\" section to decode Forms_table statements 282*forms_stmts 283*119 / name : / LEX (2) forms_create_element_entry LEX / save_forms_name_synonyms \ 284* 285* 286*120 / comment : ; / LEX (2) forms_save_comment LEX (2) / forms_stmts \ 287*121 / comment : ; / LEX (2) forms_save_comment LEX (2) / forms_stmts \ 288*122 / comment : / ERROR (3) NEXT_STMT / forms_stmts \ 289* 290*123 / type : ; / LEX (2) forms_save_type LEX (2) / forms_stmts \ 291*124 / type : / ERROR (3) NEXT_STMT / forms_stmts \ 292* 293*125 / uses : / LEX (2) forms_save_uses_name LEX / save_forms_uses_names \ 294* 295* 296*126 / string : ; / LEX (2) forms_save_string_token LEX (2) / forms_stmts \ 297*127 / string : ; / LEX (3) / forms_stmts \ 298*128 / string : / LEX (2) 299* [forms_escape_string_index = 1; 300* forms_escape_string_n (*) = 0] 301* / forms_char_string \ 302* 303*129 / page_height : ; / LEX (2) forms_save_size (1) LEX (2) / forms_stmts \ 304*130 / page_height : / ERROR (3) NEXT_STMT / forms_stmts \ 305* 306*131 / page_width : ; / LEX (2) forms_save_size (2) LEX (2) / forms_stmts \ 307*132 / page_width : / ERROR (3) NEXT_STMT / forms_stmts \ 308* 309*133 / char_height : ; / LEX (2) forms_save_size (3) LEX (2) / forms_stmts \ 310*134 / char_height : / ERROR (3) NEXT_STMT / forms_stmts \ 311* 312*135 / char_width : ; / LEX (2) forms_save_size (4) LEX (2) / forms_stmts \ 313*136 / char_width : / ERROR (3) NEXT_STMT / forms_stmts \ 314* 315*137 / line_height : ; / LEX (2) forms_save_size (5) LEX (2) / forms_stmts \ 316*138 / line_height : / ERROR (3) NEXT_STMT / forms_stmts \ 317* 318*139 / / forms_validate_group / BEGIN \ 319* 320*\" section to handle multiple values for uses statement 321*save_forms_name_synonyms 322*140 / , / LEX / save_forms_name_synonyms \ 323*141 / ; / LEX / forms_stmts \ 324*142 / / forms_add_syn_element_name LEX / save_forms_name_synonyms \ 325*143 / / ERROR (3) forms_add_syn_element_name LEX / save_forms_name_synonyms \ 326*144 / / / BEGIN \ 327* 328* 329*save_forms_uses_names 330*145 / , / LEX / save_forms_uses_names \ 331*146 / ; / LEX / forms_stmts \ 332*147 / / forms_save_uses_name_continue LEX / save_forms_uses_names \ 333*148 / / ERROR (3) forms_save_uses_name_continue LEX / save_forms_uses_names \ 334*149 / / / BEGIN \ 335* 336* 337*\" section to handle string statements 338*forms_char_string 339*forms_string_item 340* / / append_token_value_string LEX / forms_string_item \ 341*151 / / insert_single_char ((token.Nvalue)) LEX / forms_string_item \ 342* 343*152 / ; / forms_save_string LEX / forms_stmts \ 344*153 / / ERROR (3) NEXT_STMT / forms_stmts \ 345*154 / / / RETURN \ 346* 347* ++*/ 348 349 350 /* format: style4 */ 351 iod_tables_compiler: iodtc: proc; 352 353 /* The iod_tables_compiler produces an encoded representation of the various 354* IO daemon tables from a source language description. Source segments are 355* assumed to have a name ending with the suffix ".iodt". An object segment 356* will be given the same name as its corresponding source segment with the 357* suffix removed. 358**/ 359 360 /* External Entries & Procedures */ 361 362 dcl cdt_mgr_$find_cdt_channel entry (ptr, char (32), fixed bin, bit (1) aligned, fixed bin (35)); 363 dcl clock_ entry () returns (fixed bin (71)); 364 dcl com_err_ entry () options (variable); 365 dcl com_err_$suppress_name entry () options (variable); 366 dcl convert_authorization_$from_string entry (bit (72) aligned, char (*), fixed bin (35)); 367 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 368 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 369 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 370 dcl cv_float_ entry (char (*), fixed bin (35)) returns (float bin (27)); 371 dcl cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 372 dcl error_table_$bad_conversion fixed bin (35) ext static; 373 dcl error_table_$bad_opt fixed bin (35) ext static; 374 dcl error_table_$noarg fixed bin (35) ext static; 375 dcl error_table_$too_many_args fixed bin (35) ext static; 376 dcl error_table_$zero_length_seg fixed bin (35) ext static; 377 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)); 378 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 379 dcl get_wdir_ entry () returns (char (168)); 380 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 381 dcl ioa_ entry () options (variable); 382 dcl lex_error_ entry () options (variable); 383 dcl lex_string_$init_lex_delims entry (char (*), char (*), char (*), char (*), char (*), bit (*), char (*) var, 384 char (*) var, char (*) var, char (*) var); 385 dcl lex_string_$lex entry (ptr, fixed bin (21), fixed bin (21), ptr, bit (*), char (*), char (*), char (*), char (*), 386 char (*), char (*) var, char (*) var, char (*) var, char (*) var, ptr, ptr, fixed bin (35)); 387 dcl release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 388 dcl suffixed_name_$new_suffix entry (char (*), char (*), char (*), char (32), fixed bin (35)); 389 dcl system_info_$resource_price entry (char (*), float bin (27), fixed bin (35)); 390 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 391 dcl translator_temp_$get_segment entry (char (*) aligned, ptr, fixed bin (35)); 392 dcl translator_temp_$release_all_segments entry (ptr, fixed bin (35)); 393 dcl tssi_$clean_up_segment entry (ptr); 394 dcl tssi_$finish_segment entry (ptr, fixed bin (24), bit (36) aligned, ptr, fixed bin (35)); 395 dcl tssi_$get_segment entry (char (*), char (*), ptr, ptr, fixed bin (35)); 396 397 /* Builtins */ 398 399 dcl (addr, addrel, after, before, bin, char, collate, convert, currentsize, 400 dimension, divide, fixed, hbound, index, lbound, length, max, mod, null, 401 rank, rel, rtrim, substr, translate, unspec, verify) builtin; 402 403 dcl cleanup condition; 404 405 /* External Static */ 406 407 dcl iod_tables_compiler_severity_ fixed bin (35) ext init (0); 408 dcl sc_stat_$sysdir char (168) aligned external; 409 410 /* Internal Static */ 411 412 dcl ALL_VALID_CHARS_AND_NUMERIC char (62) int static options (constant) 413 init ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); 414 415 dcl BREAKS char (35) varying int static; 416 dcl CTL_CHARS char (32) varying int static; 417 dcl FALSE bit (1) int static options (constant) init ("0"b); 418 dcl LEX_CHARS char (6) int static options (constant) init ("""/**/;"); 419 dcl LEX_COMMENT_CLOSE char (2) defined LEX_CHARS pos (4); 420 dcl LEX_COMMENT_OPEN char (2) defined LEX_CHARS pos (2); 421 dcl LEX_STATEMENT_DELIMITER char (1) defined LEX_CHARS pos (6); 422 dcl LEX_QUOTE_CLOSE char (1) defined LEX_CHARS pos (1); 423 dcl LEX_QUOTE_OPEN char (1) defined LEX_CHARS pos (1); 424 dcl LEXCTL char (80) varying int static; 425 dcl LEXDLM char (80) varying int static; 426 dcl TOKEN_BAD bit (1) int static options (constant) init ("0"b); 427 dcl TOKEN_GOOD bit (1) int static options (constant) init ("1"b); 428 dcl TRUE bit (1) int static options (constant) init ("1"b); 429 dcl already_called bit (1) int static init (FALSE); 430 dcl max_length_att_desc fixed bin int static options (constant) init (512); 431 dcl max_length_att_desc_char char (3) int static options (constant) init ("512"); 432 dcl max_length_comment fixed bin int static options (constant) init (256); 433 dcl max_length_comment_char char (3) int static options (constant) init ("256"); 434 dcl max_size fixed bin int static options (constant) init (360); 435 dcl max_size_char char (3) int static options (constant) init ("360"); 436 dcl prog_name char (32) int static options (constant) init ("new_iod_tables_compiler"); 437 438 /* Internal Automatic */ 439 440 dcl acl_info_ptr ptr; 441 dcl arg char (argl) based (argp); /* command argument */ 442 dcl argc fixed bin; /* input argument count */ 443 dcl argl fixed bin (21); /* length of arg */ 444 dcl argp ptr; /* ptr to arg */ 445 dcl argx fixed bin; /* current input arg being processed */ 446 dcl authorization_bits bit (72) aligned; /* converted authorization bits */ 447 dcl bit_count fixed bin (24); /* bit count */ 448 dcl cdtp ptr; /* Channel Definition Table ptr */ 449 dcl code fixed bin (35); /* error code */ 450 dcl copy_ptr ptr; 451 dcl debug bit (1); 452 dcl default_device_class_defined bit (1); 453 dcl default_minor_device_defined bit (1); 454 dcl default_print_defined bit (1); 455 dcl default_punch_defined bit (1); 456 dcl error_string char (128) varying; 457 dcl fb35 fixed bin (35); 458 dcl forms_size_info float bin; 459 dcl forms_size_type fixed bin; 460 dcl forms_element_validated bit (1); 461 dcl (i, j, k, l) fixed bin; 462 dcl input_dir_name char (168); /* input directory pathname */ 463 dcl input_ent_name char (32); /* input entry name */ 464 dcl input_ptr ptr; /* ptr to input segment */ 465 dcl item_ok bit (1); 466 dcl line_charge_keyword_used bit (1); 467 dcl minor_name char (32); 468 dcl output_dir_name char (168); /* output directory pathname */ 469 dcl output_ent_name char (32); /* output entry name */ 470 dcl output_ptr ptr; /* ptr to output segment */ 471 dcl page_charge_keyword_used bit (1); 472 dcl saved_charge_cntr fixed bin; 473 dcl saved_charge_type fixed bin; 474 dcl stmtp ptr; /* RDC statement ptr */ 475 dcl temp_ptrs (10) ptr; /* scratch segment ptrs */ 476 dcl text_strings_array (text_strings.length) char (1) unaligned based (text_strings_array_ptr); 477 dcl text_strings_array_ptr ptr; 478 dcl translator_temp_ptr ptr; 479 480 /* temp storage for forms elements & groups used while building the forms info tab */ 481 dcl forms_elements_ptr ptr; 482 dcl forms_elements (iod_forms_info_tab.n_words) fixed bin (35) based (forms_elements_ptr); 483 dcl forms_groups_ptr ptr; 484 dcl 1 forms_groups (iod_forms_info_tab.n_groups) like iod_forms_info_tab.groups based (forms_groups_ptr); 485 486 dcl 1 cn aligned, /* component names of a two-part name */ 487 2 first_name char (24), 488 2 second_name char (24); 489 490 /* the following are for device names and other data which must be saved as we go along */ 491 dcl misc_data_ptr ptr; 492 dcl 1 misc_data based (misc_data_ptr), 493 494 /* the following are for device names encountered while processing Line 495* statements */ 496 2 line_device_names_count fixed bin, 497 2 line_device_names (max_size) char (32), 498 2 line_device_index (max_size) fixed bin, 499 500 /* the following are for device names (major and/or minor) encountered while 501* processing Request_type statements */ 502 2 q_group_device_names_count fixed bin, 503 2 q_group (max_size), 504 3 device_name like cn, 505 3 is_default_minor bit (1), /* ON if this is default minor device */ 506 3 is_default_device_class bit (1), /* ON if this is default device class */ 507 3 device_index fixed bin, /* device index for this device */ 508 3 default_type like cn, 509 510 /* the following is used while processing Device statements where bit I is ON 511* if Device I uses "line: variable;" statement */ 512 2 var_line_list bit (max_size), 513 514 2 forms_escape_string_index fixed bin, 515 2 forms_escape_string_n (1024) fixed bin (8) unaligned, 516 517 2 parms_count fixed bin, 518 2 parms_indices_start (64) fixed bin, 519 2 parms_indices_length (64) fixed bin, 520 2 parms (11) char (32), 521 2 temp_token_value_used bit (1), 522 2 temp_token_value char (1024) varying, 523 524 /* the following two define those request type/device classes and 525* major/minor devices which have a forms_table string defined for them */ 526 2 device_class_forms bit (max_size), 527 2 minor_device_forms bit (max_size), 528 529 2 pad fixed bin; 530 531 532 /* Actual Program Begins Here */ 533 534 input_ptr, output_ptr, temp_ptrs (*), translator_temp_ptr, cdtp, 535 acl_info_ptr, copy_ptr = null; 536 537 on cleanup begin; 538 call clean_up; 539 iod_tables_compiler_severity_ = 5; 540 end; 541 542 call cu_$arg_count (argc, code); 543 if code ^= 0 then do; 544 call com_err_ (code, prog_name); 545 go to severity_5_failure; 546 end; 547 548 debug = FALSE; 549 SERROR_CONTROL = "00"b; 550 TRACING = FALSE; 551 552 if argc < 1 then do; 553 call com_err_$suppress_name (0, prog_name, 554 "Usage: iod_tables_compiler iod_tables_name [-brief | -long]"); 555 go to severity_5_failure; 556 end; 557 558 input_ent_name = ""; /* no input name yet */ 559 560 do argx = 1 to argc; 561 call cu_$arg_ptr (argx, argp, argl, code); 562 if char (arg, 1) ^= "-" then do; 563 if input_ent_name ^= "" then do; 564 call com_err_ (error_table_$too_many_args, prog_name, 565 "Only one pathname may be given. ^a was the second.", arg); 566 go to severity_5_failure; 567 end; 568 569 call expand_pathname_$add_suffix (arg, "iodt", input_dir_name, input_ent_name, code); 570 if code ^= 0 then do; 571 path_error: 572 call com_err_ (code, prog_name, "^a", arg); 573 go to severity_5_failure; 574 end; 575 576 /* if we get this far, how can we fail? */ 577 call suffixed_name_$new_suffix (input_ent_name, "iodt", "", output_ent_name, code); 578 if code ^= 0 then /* still, let's have a look */ 579 go to path_error; 580 581 end; /* Pathname case */ 582 else if arg = "-bf" | arg = "-brief" then 583 SERROR_CONTROL = "01"b; 584 585 else if arg = "-lg" | arg = "-long" then 586 SERROR_CONTROL = "10"b; 587 588 else if arg = "-severity" | arg = "-sv" then do; 589 if argx >= argc then do; 590 call com_err_ (error_table_$noarg, prog_name, "After ""^a"".", arg); 591 go to severity_5_failure; 592 end; 593 argx = argx + 1; 594 call cu_$arg_ptr (argx, argp, argl, code); 595 fb35 = cv_dec_check_ (arg, code); 596 if code ^= 0 | fb35 < 0 | fb35 > 5 then do; 597 call com_err_ (error_table_$bad_conversion, prog_name, 598 "Severity must be an integer in the range 0 - 5, not ""^a"".", arg); 599 go to severity_5_failure; 600 end; 601 MIN_PRINT_SEVERITY = fb35; 602 end; 603 604 else if arg = "-trace_on" | arg = "-tron" then 605 TRACING = TRUE; 606 else if arg = "-trace_off" | arg = "-trof" then 607 TRACING = FALSE; 608 else if arg = "-debug" | arg = "-db" then 609 debug = TRUE; 610 else do; 611 code = error_table_$bad_opt; 612 call com_err_ (code, prog_name, arg); 613 go to severity_5_failure; 614 end; 615 end; /* argument processing loop */ 616 617 if input_ent_name = "" then 618 go to path_error; 619 620 621 call initiate_file_ (input_dir_name, input_ent_name, R_ACCESS, input_ptr, bit_count, code); /* get ptr to input seg */ 622 if input_ptr = null then do; 623 call com_err_ (code, prog_name, "^a>^a", input_dir_name, input_ent_name); 624 return; 625 end; 626 if bit_count = 0 then do; 627 call com_err_ (error_table_$zero_length_seg, prog_name, "^a>^a", input_dir_name, input_ent_name); 628 go to finish; 629 end; 630 631 /* get ptr to channel definition table */ 632 call initiate_file_ ((sc_stat_$sysdir), "cdt", R_ACCESS, cdtp, (0), code); 633 if code ^= 0 then do; 634 call com_err_ (code, prog_name, 635 "Accessing cdt. Channel name checks will not be performed."); 636 end; 637 638 /* get scratch segments */ 639 call get_temp_segments_ (prog_name, temp_ptrs, code); /* make temp output seg */ 640 if code ^= 0 then do; 641 call com_err_ (code, prog_name, "Getting temp segments."); 642 go to finish; 643 end; 644 645 /* Get pointers to the various tables. For now let the table sizes be maximum. */ 646 647 ithp = temp_ptrs (1); /* set ptr to header */ 648 ltp = temp_ptrs (2); /* get ptr to line id table */ 649 idtp = temp_ptrs (3); /* get ptr to iod device table */ 650 mdtp = temp_ptrs (4); /* get ptr to minor device table */ 651 dctp = temp_ptrs (5); /* get ptr to device class table */ 652 qgtp = temp_ptrs (6); /* get ptr to queue group table */ 653 ifitp = temp_ptrs (7); /* get ptr to forms info tables */ 654 forms_groups_ptr = temp_ptrs (8); /* get ptr to temp storage for forms elements */ 655 iod_forms_info_tab.n_groups=101; 656 forms_elements_ptr = addr (forms_groups.name (101)); /* leave room for 100 Forms_info groups */ 657 iod_forms_info_tab.n_groups=0; 658 text_strings_ptr = temp_ptrs (9); /* get ptr to text strings area */ 659 text_strings_array_ptr = addr (text_strings.chars); 660 misc_data_ptr = temp_ptrs (10); 661 662 /* initialize to common state */ 663 664 iod_tables_hdr.max_queues = -1; 665 iod_tables_hdr.grace_time = -1; 666 667 line_device_names_count, q_group_device_names_count = 0; 668 idtep, mdtep, qgtep, dctep, ltep, fep = null (); 669 forms_element_validated, 670 q_group.is_default_minor (*), 671 q_group.is_default_device_class (*), 672 default_minor_device_defined, 673 default_print_defined, 674 default_punch_defined, 675 temp_token_value_used = FALSE; 676 device_class_forms, minor_device_forms = "0"b; 677 error_string = ""; 678 679 /* set up for lex_string_ */ 680 681 call translator_temp_$get_segment ((prog_name), translator_temp_ptr, code); 682 if translator_temp_ptr = null () then do; 683 call com_err_ (code, prog_name, "From translator_temp_$get_segment"); 684 go to severity_5_failure; 685 end; 686 687 if ^already_called then do; 688 CTL_CHARS = substr (collate (), 1, 8) || substr (collate (), 10, 24); 689 BREAKS = CTL_CHARS || ",:;"; 690 call lex_string_$init_lex_delims (LEX_QUOTE_OPEN, LEX_QUOTE_CLOSE, 691 LEX_COMMENT_OPEN, LEX_COMMENT_CLOSE, LEX_STATEMENT_DELIMITER, 692 "10"b, BREAKS, CTL_CHARS, LEXDLM, LEXCTL); 693 already_called = TRUE; 694 end; 695 696 if TRACING | debug then 697 call ioa_ ("calling lex_string_$lex"); 698 699 call lex_string_$lex (input_ptr, divide (bit_count, 9, 21, 0), 0, 700 translator_temp_ptr, "1000"b, LEX_QUOTE_OPEN, LEX_QUOTE_CLOSE, 701 LEX_COMMENT_OPEN, LEX_COMMENT_CLOSE, LEX_STATEMENT_DELIMITER, 702 BREAKS, CTL_CHARS, LEXDLM, LEXCTL, stmtp, Pthis_token, code); 703 704 if code ^= 0 then do; 705 call com_err_ (code, prog_name, "Lexing ^a>^a.", input_dir_name, input_ent_name); 706 go to finish; 707 end; 708 709 /* Go to it! */ 710 Pstmt = stmtp; 711 temp_token_value = stmt_value; 712 713 if TRACING | debug then 714 call ioa_ ("calling SEMANTIC_ANALYSYS"); 715 716 call SEMANTIC_ANALYSIS (); 717 718 if TRACING | debug then 719 call ioa_ ("SEMANTIC_ANALYSYS done"); 720 721 if MERROR_SEVERITY <= 2 then do; 722 if debug then 723 call ioa_ ("Cross checking table."); 724 call cross_check_table; 725 end; 726 if MERROR_SEVERITY <= 2 then do; 727 if debug then 728 call ioa_ ("Building forms table."); 729 if debug then 730 call ioa_ ("Building output table."); 731 call build_output_table; 732 end; 733 734 if MERROR_SEVERITY > 2 then 735 call com_err_ (0, prog_name, "Translation failed."); 736 iod_tables_compiler_severity_ = MERROR_SEVERITY; 737 738 go to finish; 739 740 severity_5_failure: 741 iod_tables_compiler_severity_ = 5; 742 finish: call clean_up; 743 return; 744 745 746 clean_up: proc; 747 748 /* cleanup handler -- makes sure anything we initiated gets terminated, anything we allocated gets freed */ 749 750 if input_ptr ^= null then 751 call terminate_file_ (input_ptr, (0), TERM_FILE_TERM, (0)); 752 input_ptr = null; 753 754 if acl_info_ptr ^= null then 755 call tssi_$clean_up_segment (acl_info_ptr); 756 acl_info_ptr = null; 757 758 if output_ptr ^= null then 759 call terminate_file_ (output_ptr, (0), TERM_FILE_TRUNC_BC_TERM, (0)); 760 output_ptr = null; 761 762 if translator_temp_ptr ^= null then 763 call translator_temp_$release_all_segments (translator_temp_ptr, (0)); 764 translator_temp_ptr = null; 765 766 if temp_ptrs (1) ^= null then 767 call release_temp_segments_ (prog_name, temp_ptrs, code); 768 temp_ptrs (*) = null; 769 770 if cdtp ^= null then 771 call terminate_file_ (cdtp, (0), TERM_FILE_TERM, (0)); 772 cdtp = null; 773 774 return; 775 776 end clean_up; 777 778 779 /* Since this is a single pass compiler, there is no guarantee that all names 780* of entries will be known when they are encountered in the input file. 781* Thus we will cross check all of the variables at the end of the input file. */ 782 783 cross_check_table: proc; 784 785 dcl (full_name, full_name2) char (32); /* for error display */ 786 dcl (minor_kw, minor_kw2) char (32); /* for error display */ 787 dcl major_name char (32); 788 dcl price_name char (32); 789 dcl price float bin; 790 dcl temp_list bit (360) aligned; /* a temporary copy of dcte.device_list */ 791 792 dcl starting_element_index fixed bin; 793 dcl error_statement_no fixed bin; 794 dcl error_device_name char (32); 795 dcl error_entry_type char (32); 796 dcl error_entry_type_id char (32); 797 798 /* validate that each 'device' referenced under the Line keywords is 799* a) defined as a Device 800* b) has a attach type of 'variable' 801**/ 802 803 line_device_index (*) = 0; /* mark all as invalid til found */ 804 805 do i = 1 to line_device_names_count; /* all names found */ 806 do j = 1 to iod_device_tab.n_devices; /* all available devices */ 807 808 /* If name matches and the device was defined with a variable line, save index 809* into device table for the entry. 810* 811* If the name matches but the device was not defined with a variable line, 812* save the index but negate it so we can tell later */ 813 814 if iod_device_tab.entries (j).dev_id = line_device_names (i) then do; 815 if iod_device_tab.entries (j).attach_type = ATTACH_TYPE_VARIABLE_LINE then 816 line_device_index (i) = j; 817 else line_device_index (i) = -j; 818 go to next_line_dev; 819 end; 820 end; 821 next_line_dev: 822 end; 823 824 do i = 1 to line_tab.n_lines; 825 ltep = addr (line_tab.entries (i)); 826 temp_list = lte.maj_dev_list; 827 lte.maj_dev_list = ""b; /* clear so we can put in correct order */ 828 j = index (temp_list, TRUE); 829 do while (j ^= 0); 830 if line_device_index (j) = 0 then /* not defined above */ 831 call semant_error (12, "device", line_device_names (j), "line", lte.line_id); 832 else do; 833 if line_device_index (j) < 0 then 834 call semant_error (25, idte.dev_id, lte.line_id); 835 else do; 836 substr (lte.maj_dev_list, line_device_index (j), 1) = TRUE; /* a good one */ 837 substr (var_line_list, line_device_index (j), 1) = FALSE; /* this one was used */ 838 end; 839 end; 840 substr (temp_list, j, 1) = FALSE; 841 j = index (temp_list, TRUE); 842 end; 843 end; 844 845 /* if any unused variable line keywords found, gripe */ 846 if var_line_list then do; 847 i = index (var_line_list, TRUE); 848 do while (i ^= 0); 849 call semant_error (26, iod_device_tab.dev_id (i)); 850 substr (var_line_list, j, 1) = FALSE; 851 i = index (var_line_list, TRUE); 852 end; 853 end; 854 855 /* Validate the devices specified in the Request_type and device_class entries. */ 856 /* Find the minor device index for each name in the device array. */ 857 858 q_group.device_index (*) = 0; /* mark all as not found until we find them */ 859 do i = 1 to q_group_device_names_count; /* loop thru devices */ 860 cn = q_group.device_name (i); 861 do j = 1 to iod_device_tab.n_devices; /* look for major device */ 862 idtep = addr (iod_device_tab.entries (j)); 863 if idte.dev_id = cn.first_name then do; /* found major device */ 864 if cn.second_name = "" then do; /* must have a default minor */ 865 if q_group.is_default_minor (idte.first_minor) then 866 q_group.device_index (i) = idte.first_minor; 867 else q_group.device_index (i) = -1; /* error, no default minor */ 868 go to next_device; 869 end; 870 else do k = idte.first_minor to idte.last_minor; 871 mdtep = addr (minor_device_tab.entries (k)); 872 if mdte.dev_id = cn.second_name then do; /* found minor device */ 873 q_group.device_index (i) = k; 874 go to next_device; 875 end; 876 end; 877 end; 878 end; 879 next_device: 880 end; 881 882 /* Transform the device_list of each device class so that each bit 883* in the device list corresponds to an entry in the minor device 884* table rather than an entry in the device array. */ 885 886 do i = 1 to dev_class_tab.n_classes; /* loop thru device classes */ 887 dctep = addr (dev_class_tab.entries (i)); 888 if dcte.device_list = ""b then 889 go to skip_this_entry; 890 temp_list = dcte.device_list; 891 dcte.device_list = ""b; 892 j = index (temp_list, TRUE); 893 do while (j ^= 0); 894 if q_group.device_index (j) <= 0 then do; /* error detected above */ 895 if q_group.device_index (j) = -1 then 896 error_statement_no = 33; /* set error number */ 897 else error_statement_no = 34; 898 error_device_name = q_group.device_name (j).first_name; 899 if q_group.device_name (j).second_name ^= "" then 900 error_device_name = rtrim (error_device_name) || "." || q_group.device_name (j).second_name; 901 error_entry_type_id = before (q_group_tab.name (dcte.qgte_index), " "); 902 if q_group.is_default_device_class (i) then 903 error_entry_type = "Request_type"; 904 else do; 905 error_entry_type = "device_class"; 906 error_entry_type_id = rtrim (error_entry_type_id) || "." || dcte.id; 907 end; 908 call semant_error (error_statement_no, error_device_name, error_entry_type, error_entry_type_id); 909 end; 910 else substr (dcte.device_list, q_group.device_index (j), 1) = TRUE; 911 substr (temp_list, j, 1) = FALSE; 912 j = index (temp_list, TRUE); 913 end; 914 skip_this_entry: 915 end; 916 917 /* Validate the default types optionally specified for each minor device. */ 918 919 do i = 1 to minor_device_tab.n_minor; /* loop thru minor devices */ 920 if q_group.default_type (i).first_name ^= "" then do; /* default class specified */ 921 cn = q_group.default_type (i); 922 mdtep = addr (minor_device_tab.entries (i)); 923 do j = 1 to q_group_tab.n_q_groups; /* look for the default_type */ 924 qgtep = addr (q_group_tab.entries (j)); 925 if cn.first_name = qgte.name then do; 926 if cn.second_name = "" then /* no device class specified */ 927 if q_group.is_default_device_class (qgte.first_dev_class) then /* ok, it's a default class */ 928 mdte.default_dev_class = qgte.first_dev_class; 929 else do; /* no default class for this q group */ 930 error_statement_no = 35; /* set up error number */ 931 go to bad_def_type; 932 end; 933 else do; /* look for second name of default_type */ 934 do k = qgte.first_dev_class to qgte.last_dev_class 935 while (dev_class_tab.id (k) ^= cn.second_name); 936 end; 937 if k > qgte.last_dev_class then 938 go to def_type_not_found; 939 mdte.default_dev_class = k; 940 end; 941 dctep = addr (dev_class_tab.entries (mdte.default_dev_class)); 942 if ^substr (dcte.device_list, i, 1) then do; /* device not specified for default type */ 943 error_statement_no = 36; 944 go to bad_def_type; 945 end; 946 go to next_minor; 947 end; 948 end; 949 950 def_type_not_found: error_statement_no = 37; 951 bad_def_type: 952 full_name2 = cn.first_name; 953 if cn.second_name ^= "" then do; 954 full_name2 = rtrim (full_name2) || "." || cn.second_name; 955 minor_kw2 = "device_class"; 956 end; 957 else minor_kw2 = "Request_type"; 958 full_name = before (iod_device_tab.dev_id (mdte.major_index), " "); 959 if q_group.is_default_minor (i) then 960 minor_kw = "Device"; 961 else do; 962 full_name = rtrim (full_name) || "." || mdte.dev_id; 963 minor_kw = "minor_device"; 964 end; 965 if error_statement_no ^= 36 then 966 call semant_error (error_statement_no, full_name2, minor_kw, full_name); 967 else call semant_error (error_statement_no, full_name2, minor_kw, full_name, full_name, minor_kw2, full_name2); 968 end; 969 next_minor: end; 970 971 /* make sure the optional request type parameters are defined correctly */ 972 973 do i = 1 to q_group_tab.n_q_groups; 974 qgtep = addr (q_group_tab.entries (i)); 975 976 if qgte.max_queues = -1 then /* if not defined, use the Global value */ 977 qgte.max_queues = iod_tables_hdr.max_queues; 978 979 if qgte.default_queue = -1 then do; /* if not defined, use highest up to 3 */ 980 if qgte.max_queues < 3 then 981 qgte.default_queue = qgte.max_queues; 982 else qgte.default_queue = 3; /* any queue 4 is low priority */ 983 end; 984 else if qgte.default_queue > qgte.max_queues then 985 call semant_error (38, qgte.name); 986 987 if qgte.page_charge.queue (1) ^= "" then do; /* was the page_charge keyword given? */ 988 do j = 1 to hbound (qgte.page_charge.queue, 1); /* look at each price name */ 989 price_name = qgte.page_charge.queue (j); 990 if price_name = "UNDEFINED_PRICE" then do; /* it was blank */ 991 if j > qgte.max_queues then 992 qgte.page_charge.queue (j) = ""; /* not used */ 993 else do; /* otherwise we need a real price name */ 994 call semant_error (39, qgte.name); 995 go to skip_charge1; 996 end; 997 end; 998 else do; 999 call system_info_$resource_price (price_name, price, code); 1000 if code ^= 0 then 1001 call semant_error (40, qgte.name, price_name); 1002 end; 1003 end; 1004 skip_charge1: end; 1005 1006 1007 if qgte.line_charge.queue (1) ^= "" then do; /* was the line_charge keyword given? */ 1008 do j = 1 to hbound (qgte.line_charge.queue, 1); /* look at each price name */ 1009 price_name = qgte.line_charge.queue (j); 1010 if price_name = "UNDEFINED_PRICE" then do; /* it was blank */ 1011 if j > qgte.max_queues then 1012 qgte.line_charge.queue (j) = ""; /* not used */ 1013 else do; /* otherwise we need a real price name */ 1014 call semant_error (39, qgte.name); 1015 go to skip_charge; 1016 end; 1017 end; 1018 else do; 1019 call system_info_$resource_price (price_name, price, code); 1020 if code ^= 0 then 1021 call semant_error (40, qgte.name, price_name); 1022 end; 1023 end; 1024 skip_charge: end; 1025 1026 /* now let's make sure any forms information references are available. 1027* make sure forms table is defined if they are using forms */ 1028 if qgte.forms_table.total_chars ^= 0 then do; 1029 major_name = return_string (qgte.forms_table); 1030 do j = 1 to iod_forms_info_tab.n_groups 1031 while (major_name ^= forms_groups.name (j)); 1032 end; 1033 if j > iod_forms_info_tab.n_groups then 1034 call semant_error (12, "Forms_table", major_name, "Request_type", qgte.name); 1035 else do; 1036 starting_element_index = forms_groups (j).first_element_index; 1037 if qgte.default_form.total_chars ^= 0 then do; 1038 call parse_parms_string (addr (qgte.default_form)); 1039 do k = 1 to parms_count; 1040 l = forms_scan_for_element_name (starting_element_index, parms (k)); 1041 if l = -1 then 1042 call semant_error (12, "default forms element", parms (k), "Request_type", qgte.name); 1043 end; 1044 end; 1045 end; 1046 1047 /* make sure any minor devices referred to by this request type also have 1048* forms tables defined for them */ 1049 do k = qgte.first_dev_class to qgte.last_dev_class; 1050 dctep = addr (dev_class_tab.entries (k)); 1051 do l = 1 to max_size; 1052 if substr (dcte.device_list, l, 1) then 1053 if ^substr (minor_device_forms, l, 1) then do; 1054 full_name = q_group_tab.entries.name (dcte.qgte_index); 1055 if q_group_tab.entries.name (dcte.qgte_index) ^= dcte.id then 1056 full_name = rtrim (full_name) || "." || dcte.id; 1057 mdtep = addr (minor_device_tab.entries (l)); 1058 idtep = addr (iod_device_tab.entries (mdte.major_index)); 1059 full_name2 = idte.dev_id; 1060 if full_name2 ^= mdte.dev_id then 1061 full_name2 = rtrim (full_name2) || "." || mdte.dev_id; 1062 call semant_error (53, full_name, full_name2); 1063 end; 1064 end; 1065 end; 1066 end; 1067 end; 1068 1069 /* make sure we've got one of everything we need */ 1070 1071 if iod_tables_hdr.max_queues = -1 then call semant_error (41); 1072 1073 if iod_tables_hdr.grace_time = -1 then call semant_error (42); 1074 1075 if iod_device_tab.n_devices = 0 then call semant_error (43); 1076 1077 if q_group_tab.n_q_groups = 0 then call semant_error (44); 1078 1079 if ^default_print_defined then call semant_error (45); 1080 if ^default_punch_defined then call semant_error (46); 1081 1082 end cross_check_table; 1083 1084 1085 build_output_table: proc; 1086 1087 /* create permanent output seg and copy in the temp seg */ 1088 output_dir_name = get_wdir_ (); /* put output seg in working directory */ 1089 call tssi_$get_segment (output_dir_name, output_ent_name, output_ptr, acl_info_ptr, code); 1090 if code ^= 0 then do; 1091 output_error: call com_err_ (code, prog_name, "^a>^a", output_dir_name, output_ent_name); 1092 go to finish; 1093 end; 1094 1095 /* copy the tables into the output seg */ 1096 1097 output_ptr -> iod_tables_hdr = iod_tables_hdr; 1098 ithp = output_ptr; 1099 iod_tables_hdr.version = ""; /* mark it inconsistent while we're copying */ 1100 1101 copy_ptr = adjust_ptr (addr (iod_tables_hdr.start_of_tables)); 1102 copy_ptr -> line_tab = line_tab; 1103 ltp = copy_ptr; 1104 1105 line_tab.n_lines = line_tab.n_lines + 1; 1106 copy_ptr = adjust_ptr (addr (line_tab.entries (line_tab.n_lines))); 1107 line_tab.n_lines = line_tab.n_lines - 1; 1108 copy_ptr -> iod_device_tab = iod_device_tab; 1109 idtp = copy_ptr; 1110 1111 iod_device_tab.n_devices = iod_device_tab.n_devices + 1; 1112 copy_ptr = adjust_ptr (addr (iod_device_tab.entries (iod_device_tab.n_devices))); 1113 iod_device_tab.n_devices = iod_device_tab.n_devices - 1; 1114 copy_ptr -> minor_device_tab = minor_device_tab; 1115 mdtp = copy_ptr; 1116 1117 minor_device_tab.n_minor = minor_device_tab.n_minor + 1; 1118 copy_ptr = adjust_ptr (addr (minor_device_tab.entries (minor_device_tab.n_minor))); 1119 minor_device_tab.n_minor = minor_device_tab.n_minor - 1; 1120 copy_ptr -> q_group_tab = q_group_tab; 1121 qgtp = copy_ptr; 1122 1123 q_group_tab.n_q_groups = q_group_tab.n_q_groups + 1; 1124 copy_ptr = adjust_ptr (addr (q_group_tab.entries (q_group_tab.n_q_groups))); 1125 q_group_tab.n_q_groups = q_group_tab.n_q_groups - 1; 1126 copy_ptr -> dev_class_tab = dev_class_tab; 1127 dctp = copy_ptr; 1128 1129 dev_class_tab.n_classes = dev_class_tab.n_classes + 1; 1130 copy_ptr = adjust_ptr (addr (dev_class_tab.entries (dev_class_tab.n_classes))); 1131 dev_class_tab.n_classes = dev_class_tab.n_classes - 1; 1132 iod_forms_info_tab.element_data_block = forms_elements; 1133 iod_forms_info_tab.groups = forms_groups; 1134 copy_ptr -> iod_forms_info_tab = iod_forms_info_tab; 1135 ifitp = copy_ptr; 1136 1137 iod_forms_info_tab.n_groups = iod_forms_info_tab.n_groups + 1; 1138 copy_ptr = adjust_ptr (addr (iod_forms_info_tab.groups (iod_forms_info_tab.n_groups))); 1139 iod_forms_info_tab.n_groups = iod_forms_info_tab.n_groups - 1; 1140 copy_ptr -> text_strings = text_strings; 1141 text_strings_ptr = copy_ptr; 1142 1143 /* now fill in the header */ 1144 1145 iod_tables_hdr.line_tab_offset = fixed (rel (ltp), 18); 1146 iod_tables_hdr.device_tab_offset = fixed (rel (idtp), 18); 1147 iod_tables_hdr.minor_device_tab_offset = fixed (rel (mdtp), 18); 1148 iod_tables_hdr.q_group_tab_offset = fixed (rel (qgtp), 18); 1149 iod_tables_hdr.dev_class_tab_offset = fixed (rel (dctp), 18); 1150 iod_tables_hdr.forms_info_tab_offset = fixed (rel (ifitp), 18); 1151 iod_tables_hdr.text_strings_offset = fixed (rel (text_strings_ptr), 18); 1152 iod_tables_hdr.date_time_compiled = clock_ (); 1153 iod_tables_hdr.version = IODT_VERSION_5; 1154 1155 text_strings_array_ptr = addr (text_strings.chars); 1156 text_strings.length = text_strings.length + 4; 1157 copy_ptr = addr (text_strings_array (text_strings.length)); /* get ptr 1 char beyond end of data */ 1158 bit_count = 36 * fixed (rel (copy_ptr), 18); /* compute bit count */ 1159 call tssi_$finish_segment (output_ptr, bit_count, "1000"b, acl_info_ptr, code); 1160 if code ^= 0 then go to output_error; 1161 output_ptr, acl_info_ptr = null; 1162 1163 /* internal routine to make sure pointer is on an even word boundary */ 1164 adjust_ptr: proc (ptr_to_adjust) returns (ptr); 1165 1166 dcl ptr_to_adjust ptr; 1167 1168 if mod (fixed (rel (ptr_to_adjust), 18), 2) ^= 0 then 1169 return (addrel (ptr_to_adjust, 1)); 1170 else return (ptr_to_adjust); 1171 1172 end adjust_ptr; 1173 1174 end build_output_table; 1175 1176 1177 /* Syntax Functions */ 1178 1179 /* General syntax functions */ 1180 1181 /* similar to the built-in syntax functions except they use different 1182* length limitations and special char strings */ 1183 1184 name_routines: proc; 1185 1186 dcl name_length fixed bin; 1187 dcl name_type fixed bin; 1188 1189 name_32: entry returns (bit (1)); /* allow upper/lower case alpha, numeric, - & _ */ 1190 name_length = 32; 1191 name_type = 1; 1192 go to name_routines_common; 1193 1194 name_24: entry returns (bit (1)); /* allow upper/lower case alpha, numeric, - & _ */ 1195 name_length = 24; 1196 name_type = 1; 1197 go to name_routines_common; 1198 1199 name_path: entry returns (bit (1)); /* allow upper/lower case alpha, numeric & -_$<> */ 1200 name_length = 256; 1201 name_type = 2; 1202 go to name_routines_common; 1203 1204 name_comm_line: entry returns (bit (1)); /* allow upper/lower case alpha, numeric & _.* / */ 1205 name_length = 32; 1206 name_type = 3; 1207 go to name_routines_common; 1208 1209 name_user_id: entry returns (bit (1)); /* allow upper/lower case alpha, numeric & -_.* */ 1210 name_length = 30; 1211 name_type = 4; 1212 go to name_routines_common; 1213 1214 name_32_multi: entry returns (bit (1)); /* allow upper/lower case alpha, numeric & _.- */ 1215 name_length = 32; 1216 name_type = 5; 1217 go to name_routines_common; 1218 1219 name_routines_common: 1220 if token.Lvalue > 0 then do; 1221 if token.Lvalue <= name_length then do; 1222 1223 if name_type = 1 then do; /* name_32 & name_24 */ 1224 if verify (token_value, ALL_VALID_CHARS_AND_NUMERIC || "_-") = 0 then 1225 return (TOKEN_GOOD); 1226 end; 1227 1228 else if name_type = 2 then do; /* name_path */ 1229 if verify (token_value, ALL_VALID_CHARS_AND_NUMERIC || "-_$<>") = 0 then 1230 return (TOKEN_GOOD); 1231 end; 1232 1233 else if name_type = 3 then do; /* name_comm_line */ 1234 if verify (token_value, ALL_VALID_CHARS_AND_NUMERIC || "_.*/") = 0 then 1235 return (TOKEN_GOOD); 1236 end; 1237 1238 else if name_type = 4 then do; /* name_user_id */ 1239 if verify (token_value, ALL_VALID_CHARS_AND_NUMERIC || "_.*") = 0 then 1240 return (TOKEN_GOOD); 1241 end; 1242 1243 else if name_type = 5 then do; /* name_32_multi */ 1244 if verify (token_value, ALL_VALID_CHARS_AND_NUMERIC || "_.-") = 0 then 1245 return (TOKEN_GOOD); 1246 end; 1247 end; 1248 end; 1249 return (TOKEN_BAD); 1250 1251 end name_routines; 1252 1253 1254 /* General action routines */ 1255 1256 /* routines to store various strings in the text_strings area */ 1257 1258 store_string_functions: proc; 1259 1260 dcl string_to_store char (*); 1261 1262 dcl 1 target unaligned like text_offset; 1263 1264 dcl source_string char (source_string_len) based (source_string_ptr); 1265 dcl source_string_len fixed bin; 1266 dcl source_string_ptr ptr; 1267 1268 dcl target_string char (source_string_len) based (target_string_ptr); 1269 dcl target_string_ptr ptr; 1270 dcl dupe_string_loc fixed bin; 1271 1272 store_forms_escape_string: entry (target); 1273 1274 /* copy the string in forms_escape_string_n into text_strings and save offset 1275* and length of the copied string in target structure values */ 1276 1277 source_string_ptr = addr (forms_escape_string_n); 1278 source_string_len = forms_escape_string_index - 1; 1279 go to common; 1280 1281 1282 store_temp_token_value_string: entry (target); 1283 1284 /* routine copies the temp_token_value string into text_strings and saves 1285* offset and length of the copied string in target structure values */ 1286 1287 source_string_ptr = addrel (addr (temp_token_value), 1); 1288 source_string_len = length (temp_token_value); 1289 go to common; 1290 1291 store_token_value_string: entry (target); 1292 1293 /* routine copies the token_value string into text_strings and saves offset 1294* and length of the copied string in target structure values */ 1295 1296 source_string_ptr = token.Pvalue; 1297 source_string_len = token.Lvalue; 1298 go to common; 1299 1300 store_direct_string: entry (target, string_to_store); 1301 1302 /* this routine stores the input string it is called with into text_strings 1303* and saves the offset and length of the string into target structure values */ 1304 1305 source_string_ptr = addr (string_to_store); 1306 source_string_len = length (rtrim (string_to_store)); 1307 1308 common: 1309 text_strings.length = text_strings.length + 1; 1310 target_string_ptr = addr (text_strings_array (text_strings.length)); 1311 text_strings.length = text_strings.length - 1; 1312 1313 /* eliminate dupe strings by seeing if this exact string is already in the 1314* text_strings area. If not, we will add it. If it is, we will just 1315* record the starting location of the string already in the text_strings area 1316* as the location of this copy */ 1317 1318 dupe_string_loc = index (text_strings.chars, source_string); 1319 if dupe_string_loc = 0 then do; /* new string */ 1320 target_string = source_string; /* copy string */ 1321 target.first_char = text_strings.length + 1; /* save where it starts */ 1322 text_strings.length = text_strings.length + source_string_len; /* bump count of string chars saved */ 1323 end; 1324 else do; /* dupe string */ 1325 target.first_char = dupe_string_loc; /* save where it starts */ 1326 end; 1327 target.total_chars = source_string_len; /* save length of string */ 1328 1329 return; 1330 1331 end store_string_functions; 1332 1333 1334 /* routine to return a string from the text string area */ 1335 1336 return_string: proc (source_offsets) returns (char (*)); 1337 1338 dcl 1 source_offsets unaligned like text_offset; 1339 1340 if source_offsets.total_chars = 0 then 1341 return (""); 1342 else return (substr (text_strings.chars, source_offsets.first_char, source_offsets.total_chars)); 1343 1344 end return_string; 1345 1346 1347 /* parse a comma delimited string into its components */ 1348 1349 parse_parms_string: proc (data_offset_ptr); 1350 1351 dcl data_offset_ptr ptr; /* ptr to text_offset data */ 1352 dcl 1 source_text_offsets unaligned like text_offset based (data_offset_ptr); 1353 1354 temp_token_value = return_string (source_text_offsets); 1355 parms_count = 0; 1356 parms (*) = ""; 1357 loop: parms_count = parms_count + 1; 1358 parms (parms_count) = before (temp_token_value, ","); 1359 temp_token_value = after (temp_token_value, ","); 1360 if temp_token_value ^= "" then 1361 go to loop; 1362 1363 end parse_parms_string; 1364 1365 1366 /* global action routines */ 1367 1368 store_global_grace_time: proc; 1369 1370 if iod_tables_hdr.grace_time ^= -1 then 1371 call statement_error (4, "Time"); 1372 else iod_tables_hdr.grace_time = token.Nvalue * 60000000; 1373 1374 end store_global_grace_time; 1375 1376 1377 store_global_max_queues: proc; 1378 1379 if iod_tables_hdr.max_queues ^= -1 then 1380 call statement_error (4, "Max_queues"); 1381 else do; 1382 if token.Nvalue < 1 | token.Nvalue > 4 then 1383 call statement_error (6, "Max_queues", "4"); 1384 else iod_tables_hdr.max_queues = token.Nvalue; 1385 end; 1386 1387 end store_global_max_queues; 1388 1389 1390 /* syntax functions and action routines for Line keyword 1391* and it's subordinate keywords */ 1392 1393 /* Syntax functions */ 1394 1395 /* Action Routines */ 1396 1397 /* create a new entry in the line table */ 1398 line_create_table_entry: proc; 1399 1400 /* first see if line is currently defined in the table */ 1401 do i = 1 to line_tab.n_lines /* is line currently defined */ 1402 while (line_tab.line_id (i) ^= token_value); 1403 end; 1404 if i <= line_tab.n_lines then /* in table so complain */ 1405 call statement_error (10, "Line", token_value); 1406 1407 /* Create entry in table for this line name. 1408* We will create a new entry for a duplicate name so we can check the rest 1409* of the substatements */ 1410 1411 line_tab.n_lines = line_tab.n_lines + 1; 1412 ltep = addr (line_tab.entries (line_tab.n_lines)); 1413 1414 /* now clear out the entry */ 1415 unspec (lte) = "0"b; 1416 lte.line_id = token_value; 1417 lte.chan_id = ""; 1418 lte.att_desc.first_char, 1419 lte.att_desc.total_chars = 0; 1420 lte.maj_dev_list = ""b; 1421 1422 end line_create_table_entry; 1423 1424 /* save line attach description */ 1425 line_save_att_desc: proc; 1426 1427 if token.Lvalue > max_length_att_desc then 1428 call statement_error (15, "att_desc", max_length_att_desc_char); 1429 if lte.att_desc.total_chars ^= 0 then 1430 call statement_error (13, "att_desc", "Line", token_value); 1431 call store_token_value_string (lte.att_desc); 1432 1433 end line_save_att_desc; 1434 1435 /* save line comment */ 1436 line_save_comment: proc; 1437 1438 if token.Lvalue > max_length_comment then 1439 call statement_error (15, "comment", max_length_comment_char); 1440 if lte.comment.total_chars ^= 0 then 1441 call statement_error (13, "comment", "Line", token_value); 1442 call store_token_value_string (lte.comment); 1443 1444 end line_save_comment; 1445 1446 /* make sure channel ID is valid and save it */ 1447 line_save_channel_id: proc; 1448 1449 dcl channel_id fixed bin; 1450 dcl fnp_sw bit (1) aligned; 1451 1452 /* validate that this is good channel ID */ 1453 if cdtp ^= null then do; 1454 call cdt_mgr_$find_cdt_channel (cdtp, (token_value), channel_id, fnp_sw, code); 1455 if code ^= 0 then 1456 call statement_error (14); 1457 end; 1458 if lte.chan_id ^= "" then 1459 call statement_error (13, "channel", "Line", (lte.line_id)); 1460 lte.chan_id = token_value; 1461 1462 end line_save_channel_id; 1463 1464 /* save line device name */ 1465 line_save_device: proc; 1466 1467 /* see if this device name is already used in a line statement */ 1468 do i = 1 to line_device_names_count while 1469 (line_device_names (i) ^= token_value); 1470 end; 1471 if i > line_device_names_count then do; /* new device name */ 1472 if i > max_size then do; /* table too big */ 1473 call statement_error (16, max_size_char, "devices"); 1474 end; 1475 1476 line_device_names_count = i; /* bump count of remembered devices */ 1477 line_device_names (i) = token_value; /* and save the new name */ 1478 end; 1479 1480 /* set the lte entry to point to the device name in the temp list. 1481* We will reset to to the true device entry later */ 1482 substr (lte.maj_dev_list, i, 1) = TRUE; 1483 1484 end line_save_device; 1485 1486 /* validate that line table entry is complete */ 1487 line_validate_entry: proc; 1488 1489 if lte.maj_dev_list = FALSE then 1490 call semant_error (18, "devices", "Line", lte.line_id); 1491 if lte.chan_id = "" then 1492 call semant_error (19, "channel", "Line", lte.line_id); 1493 if lte.att_desc.total_chars = 0 then 1494 call semant_error (19, "att_desc", "Line", lte.line_id); 1495 1496 end line_validate_entry; 1497 1498 1499 /* syntax functions for Device keyword and it's subordinate keywords */ 1500 1501 1502 /* the following action entries are for the Device keyword and it's device table */ 1503 1504 /* create a new minor device table entry */ 1505 dev_create_minor_table_entry: proc; 1506 1507 /* If we defined a default minor device because we already found some minor 1508* device statements, change its name from the default name to this name. 1509* 1510* If there is no default minor device defined yet, we start add this one to 1511* the chain of current minor devices */ 1512 1513 if default_minor_device_defined then do; 1514 default_minor_device_defined = FALSE; 1515 call revert_default_minor_device; 1516 end; 1517 else call init_minor_device; 1518 1519 end dev_create_minor_table_entry; 1520 1521 1522 /* create a new entry in the device table */ 1523 dev_create_table_entry: proc; 1524 1525 /* see if this is valid device name and is currently undefined */ 1526 do i = 1 to iod_device_tab.n_devices /* is device already defined */ 1527 while (iod_device_tab.dev_id (i) ^= token_value); 1528 end; 1529 if i <= iod_device_tab.n_devices then /* it is in table so complain */ 1530 call statement_error (10, "Device", token_value); 1531 1532 /* Create entry in table for this line name. 1533* We will create a new entry for a duplicate name so we can check the rest 1534* of the substatements */ 1535 1536 iod_device_tab.n_devices = iod_device_tab.n_devices + 1; 1537 idtep = addr (iod_device_tab.entries (iod_device_tab.n_devices)); 1538 1539 /* now clear out the entry */ 1540 unspec (idte) = "0"b; 1541 default_minor_device_defined = FALSE; 1542 idte.dev_id = token_value; 1543 idte.attach_name, 1544 idte.ctl_attach_name = ""; 1545 idte.driver_module.first_char, 1546 idte.driver_module.total_chars, 1547 idte.args.first_char, 1548 idte.args.total_chars, 1549 idte.head_sheet.first_char, 1550 idte.head_sheet.total_chars, 1551 idte.tail_sheet.first_char, 1552 idte.tail_sheet.total_chars = 0; 1553 idte.attach_type, 1554 idte.ctl_attach_type, 1555 idte.first_minor, 1556 idte.last_minor, 1557 idte.paper_type = -1; 1558 mdtep = null; 1559 1560 end dev_create_table_entry; 1561 1562 dev_save_args: proc; 1563 1564 if idte.args.total_chars ^= 0 then 1565 call statement_error (13, "args", "Device", idte.dev_id); 1566 call store_token_value_string (idte.args); 1567 1568 end dev_save_args; 1569 1570 dev_save_attach_method: proc (device_or_terminal, type_attach); 1571 1572 dcl device_or_terminal fixed bin; /* 1 = device entry */ 1573 /* 2 = control terminal attachment */ 1574 dcl type_attach fixed bin; 1575 dcl item_names (2, 4) char (13) int static options (constant) init ( 1576 "prph", "line", "dial_id", "variable line", 1577 "ctl_line", "ctl_dial_id", "ctl_source", ""); 1578 1579 if device_or_terminal = 1 then do; /* device */ 1580 if idte.attach_type ^= -1 then do; /* already have attachment for this entry */ 1581 if idte.attach_type = type_attach then 1582 call statement_error (13, item_names (device_or_terminal, type_attach), "Device", idte.dev_id); 1583 else call statement_error (22, idte.dev_id); 1584 end; 1585 else do; 1586 if type_attach = ATTACH_TYPE_DIAL then 1587 call check_dial_id (token_value, "dial_id"); 1588 idte.attach_name = token_value; 1589 idte.attach_type = type_attach; 1590 if type_attach = ATTACH_TYPE_VARIABLE_LINE then 1591 substr (var_line_list, iod_device_tab.n_devices, 1) = TRUE; 1592 end; 1593 end; 1594 else do; /* control terminal attachment */ 1595 if idte.ctl_attach_type ^= -1 then do; /* already have attachment for this entry */ 1596 if idte.ctl_attach_type = type_attach then 1597 call statement_error (13, item_names (device_or_terminal, type_attach), "Device", idte.dev_id); 1598 else call statement_error (24, idte.dev_id); 1599 end; 1600 else do; 1601 if type_attach = CTL_ATTACH_TYPE_DIAL then 1602 call check_dial_id (token_value, "ctl_dial_id"); 1603 idte.ctl_attach_name = token_value; 1604 idte.ctl_attach_type = type_attach; 1605 if type_attach = CTL_ATTACH_TYPE_MC then 1606 substr (var_line_list, iod_device_tab.n_devices, 1) = TRUE; 1607 end; 1608 end; 1609 1610 /* checks if a dial id is unique */ 1611 check_dial_id: proc (value_to_check, keyword_name); 1612 1613 dcl value_to_check char (*); 1614 dcl keyword_name char (*); 1615 1616 do i = 1 to iod_device_tab.n_devices; 1617 if iod_device_tab.attach_type (i) = ATTACH_TYPE_DIAL then 1618 if iod_device_tab.attach_name (i) = value_to_check then 1619 go to dial_id_dup; 1620 if iod_device_tab.ctl_attach_type (i) = CTL_ATTACH_TYPE_DIAL then 1621 if iod_device_tab.ctl_attach_name (i) = value_to_check then 1622 go to dial_id_dup; 1623 end; 1624 return; 1625 1626 dial_id_dup: 1627 call statement_error (23, keyword_name, value_to_check, idte.dev_id); 1628 1629 end check_dial_id; 1630 1631 end dev_save_attach_method; 1632 1633 /* save device or minor device comment */ 1634 dev_save_comment: proc; 1635 1636 if token.Lvalue > max_length_comment then 1637 call statement_error (15, "comment", max_length_comment_char); 1638 1639 /* if there is no minor device entry, the comment belongs in the device entry */ 1640 if mdtep = null () then do; 1641 if idte.comment.total_chars ^= 0 then 1642 call statement_error (13, "comment", "Device", idte.dev_id); 1643 call store_token_value_string (idte.comment); 1644 end; 1645 else do; 1646 if mdte.comment.total_chars ^= 0 then 1647 call statement_error (13, "comment", "minor_device", mdte.dev_id); 1648 call store_token_value_string (mdte.comment); 1649 end; 1650 1651 end dev_save_comment; 1652 1653 dev_save_default_form: proc; 1654 1655 /* if no minor devices defined, then define the default */ 1656 if idte.first_minor = -1 then 1657 call init_default_minor_device; 1658 1659 /* validate that this is the first default form entry for this minor device */ 1660 if mdte.default_form.total_chars ^= 0 then 1661 call statement_error (49, "default_form", "minor_device", mdte.dev_id, "Device", idte.dev_id); 1662 1663 if temp_token_value_used then do; 1664 temp_token_value_used = FALSE; 1665 call store_temp_token_value_string (mdte.default_form); 1666 end; 1667 else call store_token_value_string (mdte.default_form); 1668 1669 end dev_save_default_form; 1670 1671 1672 dev_save_default_type: proc; 1673 1674 /* parse default_type name into it's two possible parts */ 1675 cn.first_name = before (token_value, "."); 1676 cn.second_name = after (token_value, "."); 1677 1678 /* if there are no minor devices, create the default entry */ 1679 if idte.first_minor = -1 then 1680 call init_default_minor_device; 1681 1682 /* otherwise check for duplicate entry for this device */ 1683 else do; 1684 if q_group.default_type (minor_device_tab.n_minor).first_name ^= "" then 1685 call statement_error (49, "default_type", "minor_device", mdte.dev_id, 1686 "Device", idte.dev_id); 1687 end; 1688 1689 /* save the minor device name in temp storage for later use */ 1690 q_group.default_type (minor_device_tab.n_minor).first_name = cn.first_name; 1691 q_group.default_type (minor_device_tab.n_minor).second_name = cn.second_name; 1692 1693 end dev_save_default_type; 1694 1695 1696 dev_save_driver_module: proc; 1697 1698 if idte.driver_module.total_chars ^= 0 then do; 1699 call statement_error (13, "driver_module", "Device", idte.dev_id); 1700 end; 1701 call store_token_value_string (idte.driver_module); 1702 1703 end dev_save_driver_module; 1704 1705 1706 dev_save_forms_validation: proc; 1707 1708 if idte.forms_validation.total_chars ^= 0 then 1709 call statement_error (13, "forms_validation", "Device", idte.dev_id); 1710 call store_token_value_string (idte.forms_validation); 1711 end dev_save_forms_validation; 1712 1713 1714 dev_save_font_dir: proc; 1715 1716 if idte.font_dir.total_chars ^= 0 then 1717 call statement_error (13, "font_dir", "Device", idte.dev_id); 1718 call store_token_value_string (idte.font_dir); 1719 end dev_save_font_dir; 1720 1721 1722 dev_save_forms_table: proc; 1723 1724 if idte.forms_table.total_chars ^= 0 then 1725 call statement_error (13, "forms_table", "Device", idte.dev_id); 1726 call store_token_value_string (idte.forms_table); 1727 end dev_save_forms_table; 1728 1729 1730 dev_save_head_sheet: proc; 1731 1732 if idte.head_sheet.total_chars ^= 0 then 1733 call statement_error (13, "head_sheet", "Device", idte.dev_id); 1734 call store_token_value_string (idte.head_sheet); 1735 end dev_save_head_sheet; 1736 1737 1738 dev_save_minor_args: proc; 1739 1740 /* if no minor devices defined, then define the default */ 1741 if idte.first_minor = -1 then 1742 call init_default_minor_device; 1743 1744 /* validate that this is the first minor args entry for this minor device */ 1745 if mdte.args.total_chars ^= 0 then 1746 call statement_error (49, "minor_args", "minor_device", mdte.dev_id, "Device", idte.dev_id); 1747 1748 call store_token_value_string (mdte.args); 1749 1750 end dev_save_minor_args; 1751 1752 1753 dev_save_paper_type: proc; 1754 1755 if idte.paper_type ^= -1 then 1756 call statement_error (13, "paper_type", "Device", idte.dev_id); 1757 1758 if token_value = "continuous" then 1759 idte.paper_type = PAPER_TYPE_CONTINUOUS; 1760 else if token_value = "single" then 1761 idte.paper_type = PAPER_TYPE_SINGLE; 1762 end dev_save_paper_type; 1763 1764 1765 dev_save_tail_sheet: proc; 1766 1767 if idte.tail_sheet.total_chars ^= 0 then 1768 call statement_error (13, "tail_sheet", "Device", idte.dev_id); 1769 call store_token_value_string (idte.tail_sheet); 1770 end dev_save_tail_sheet; 1771 1772 1773 /* validate that a device entry is complete */ 1774 dev_validate_entry: proc; 1775 1776 /* create a default minor device if none explicitely defined */ 1777 if idte.first_minor = -1 then 1778 call init_default_minor_device; 1779 1780 /* make sure required elements are defined */ 1781 if idte.driver_module.total_chars = 0 then 1782 call semant_error (47, idte.dev_id); 1783 if idte.attach_type = 0 then 1784 call semant_error (48, idte.dev_id); 1785 1786 /* make sure there is a cross-check between forms_table and default forms */ 1787 do i = idte.first_minor to idte.last_minor; 1788 mdtep = addr (minor_device_tab.entries (i)); 1789 if mdte.default_form.total_chars = 0 then do;/* no default form defined */ 1790 if idte.forms_table.total_chars ^= 0 then do; /* but a forms table defined */ 1791 if mdte.dev_id = idte.dev_id then 1792 call semant_error (19, "default_form", "Device", idte.dev_id); 1793 else call semant_error (19, "default_form", "minor_device", mdte.dev_id); 1794 end; 1795 end; 1796 else do; /* have default form defined */ 1797 if idte.forms_table.total_chars = 0 then/* but no forms table defined */ 1798 call semant_error (19, "forms_table", "Device", idte.dev_id); 1799 1800 /* turn on bits for any minor devices which have forms_table entries defined */ 1801 substr (minor_device_forms, i, 1) = TRUE; 1802 end; 1803 end; 1804 end dev_validate_entry; 1805 1806 1807 init_default_minor_device: proc; 1808 1809 default_minor_device_defined = TRUE; 1810 1811 init_minor_device: entry; 1812 1813 minor_device_tab.n_minor = minor_device_tab.n_minor + 1; 1814 if minor_device_tab.n_minor > max_size then do; 1815 call statement_error (16, max_size_char, "minor_device"); 1816 end; 1817 mdtep = addr (minor_device_tab.entries (minor_device_tab.n_minor)); 1818 unspec (mdte) = "0"b; 1819 if idte.first_minor = -1 then 1820 idte.first_minor = minor_device_tab.n_minor; 1821 idte.last_minor = minor_device_tab.n_minor; 1822 mdte.default_dev_class = 0; 1823 mdte.major_index = iod_device_tab.n_devices; 1824 mdte.args.first_char, 1825 mdte.args.total_chars, 1826 mdte.default_form.first_char, 1827 mdte.default_form.total_chars = 0; 1828 q_group.default_type (minor_device_tab.n_minor) = ""; 1829 if default_minor_device_defined then 1830 minor_name = idte.dev_id; 1831 else do; 1832 revert_default_minor_device: entry; 1833 minor_name = token_value; 1834 end; 1835 mdte.dev_id = substr (minor_name, 1, length (mdte.dev_id)); 1836 q_group.is_default_minor (minor_device_tab.n_minor) = default_minor_device_defined; 1837 1838 end init_default_minor_device; 1839 1840 1841 /* syntax and action functions for Request_type keyword 1842* and it's subordinate keywords */ 1843 1844 /* Syntax */ 1845 1846 access_class_ok: proc returns (bit (1)); 1847 1848 /* validate authorization for validity. leave the validated result in the 1849* authorization_bits variable for later use */ 1850 call convert_authorization_$from_string (authorization_bits, token_value, code); 1851 1852 return (code = 0); 1853 1854 end access_class_ok; 1855 1856 1857 /* Action routines */ 1858 1859 /* create a new entry in the request type table */ 1860 rqt_create_table_entry: proc; 1861 1862 /* see if this is valid request type name and is currently undefined */ 1863 do i = 1 to q_group_tab.n_q_groups /* is line in table */ 1864 while (q_group_tab.name (i) ^= token_value); 1865 end; 1866 if i <= q_group_tab.n_q_groups then /* it is in table so complain */ 1867 call statement_error (10, "Request_Type", token_value); 1868 1869 /* Create entry in table for this line name. 1870* We will create a new entry for a duplicate name so we can check the rest 1871* of the substatements */ 1872 1873 q_group_tab.n_q_groups = q_group_tab.n_q_groups + 1; 1874 qgtep = addr (q_group_tab.entries (q_group_tab.n_q_groups)); 1875 1876 /* now clear out the entry */ 1877 unspec (qgte) = "0"b; 1878 default_device_class_defined = FALSE; /* OFF until default class is defined by implication */ 1879 qgte.name = token_value; 1880 qgte.driver_id, 1881 qgte.generic_type, 1882 qgte.rqti_seg_name, 1883 qgte.line_charge.queue (*), 1884 qgte.page_charge.queue (*) = ""; 1885 qgte.accounting.first_char, 1886 qgte.accounting.total_chars, 1887 qgte.forms_validation.first_char, 1888 qgte.forms_validation.total_chars, 1889 qgte.default_form.first_char, 1890 qgte.default_form.total_chars, 1891 qgte.forms_table.first_char, 1892 qgte.forms_table.total_chars, 1893 qgte.font_dir.first_char, 1894 qgte.font_dir.total_chars = 0; 1895 qgte.default_generic_queue, 1896 qgte.default_queue, 1897 qgte.max_queues, 1898 qgte.first_dev_class, 1899 qgte.last_dev_class = -1; 1900 line_charge_keyword_used, page_charge_keyword_used = FALSE; 1901 dctep = null; 1902 end rqt_create_table_entry; 1903 1904 rqt_save_access: proc (type); 1905 1906 dcl type fixed bin; 1907 dcl error_string_names (3) char (16) int static options (constant) 1908 init ("max_access_class", "min_access_class", "min_banner"); 1909 1910 /* create default access class if there is no class currently defined */ 1911 if qgte.first_dev_class = -1 then 1912 call rqt_create_default_device_class_entry; 1913 1914 /* validate for dupe entry for this storage value */ 1915 if (type = 1 & dcte.max_access ^= (72)"1"b) 1916 | (type = 2 & dcte.min_access ^= (72)"1"b) 1917 | (type = 3 & dcte.min_banner ^= (72)"1"b) then do; 1918 call statement_error (13, 1919 error_string_names (type), "Request_type", qgte.name); 1920 end; 1921 1922 /* the authorization_bits variable was set by an immediately preceeding call 1923* to access_class_ok. now store it. */ 1924 1925 if type = 1 then /* max_access_class */ 1926 dcte.max_access = authorization_bits; 1927 else if type = 2 then /* min_access_class */ 1928 dcte.min_access = authorization_bits; 1929 else dcte.min_banner = authorization_bits; /* min_banner */ 1930 1931 end rqt_save_access; 1932 1933 rqt_save_accounting: proc; 1934 1935 if qgte.accounting.total_chars ^= 0 then 1936 call statement_error (13, "accounting", "Request_type", qgte.name); 1937 call store_token_value_string (qgte.accounting); 1938 1939 end rqt_save_accounting; 1940 1941 1942 rqt_save_charge: proc (type); 1943 1944 dcl type fixed bin; 1945 1946 dcl charge_type (3) char (11) int static options (constant) 1947 init ("line_charge", "page_charge", "card_charge"); 1948 1949 if type = 1 | type = 3 then do; 1950 if line_charge_keyword_used then 1951 call statement_error (13, charge_type (type), "Request_type", qgte.name); 1952 qgte.line_charge.queue (*) = "UNDEFINED_PRICE"; 1953 line_charge_keyword_used = TRUE; 1954 end; 1955 else if type = 2 then do; 1956 if qgte.generic_type = "punch" then 1957 call statement_error (2, charge_type (type)); 1958 if page_charge_keyword_used then 1959 call statement_error (13, charge_type (type), "Request_type", qgte.name); 1960 qgte.page_charge.queue (*) = "UNDEFINED_PRICE"; 1961 page_charge_keyword_used = TRUE; 1962 end; 1963 saved_charge_type = type; 1964 saved_charge_cntr = 1; 1965 1966 rqt_save_charge_continue: entry; 1967 1968 if saved_charge_type = 1 | saved_charge_type = 3 then 1969 qgte.line_charge.queue (saved_charge_cntr) = token_value; 1970 else qgte.page_charge.queue (saved_charge_cntr) = token_value; 1971 if saved_charge_cntr < 4 then 1972 saved_charge_cntr = saved_charge_cntr + 1; 1973 1974 end rqt_save_charge; 1975 1976 1977 /* save Request_type comment */ 1978 rqt_save_comment: proc; 1979 1980 if token.Lvalue > max_length_comment then 1981 call statement_error (15, "comment", max_length_comment_char); 1982 1983 if qgte.comment.total_chars ^= 0 then 1984 call statement_error (13, "comment", "Device", qgte.name); 1985 call store_token_value_string (qgte.comment); 1986 1987 end rqt_save_comment; 1988 1989 rqt_save_default_form: proc; 1990 1991 /* look for dupe entry */ 1992 if qgte.default_form.total_chars ^= 0 then 1993 call statement_error (13, "default_form", "Request_type", qgte.name); 1994 1995 if temp_token_value_used then do; 1996 temp_token_value_used = FALSE; 1997 call store_temp_token_value_string (qgte.default_form); 1998 end; 1999 else call store_token_value_string (qgte.default_form); 2000 2001 end rqt_save_default_form; 2002 2003 rqt_save_default_queue: proc; 2004 2005 if qgte.default_queue ^= -1 then 2006 call statement_error (13, "default_queue", "Request_type", qgte.name); 2007 if token.Nvalue < 1 | token.Nvalue > 3 then 2008 call statement_error (6, "default_queue", "3"); 2009 else qgte.default_queue = token.Nvalue; 2010 2011 end rqt_save_default_queue; 2012 2013 2014 rqt_save_device: proc; 2015 2016 /* parse device name into it's two possible parts */ 2017 cn.first_name = before (token_value, "."); 2018 cn.second_name = after (token_value, "."); 2019 2020 /* see device is already defined */ 2021 do i = 1 to q_group_device_names_count while 2022 (q_group.device_name (i).first_name ^= cn.first_name 2023 | q_group.device_name (i).second_name ^= cn.second_name); 2024 end; 2025 if qgte.first_dev_class = -1 then 2026 call rqt_create_default_device_class_entry; 2027 else do; 2028 if substr (dcte.device_list, i, 1) then 2029 call statement_error (17, token_value, "request_type", qgte.name); 2030 end; 2031 2032 /* save the data */ 2033 substr (dcte.device_list, i, 1) = TRUE; 2034 if i > q_group_device_names_count then do; 2035 q_group_device_names_count = i; 2036 q_group.device_name.first_name (i) = cn.first_name; 2037 q_group.device_name.second_name (i) = cn.second_name; 2038 end; 2039 2040 end rqt_save_device; 2041 2042 2043 rqt_save_driver_id: proc; 2044 2045 dcl (person, project, instance) char (32) varying; 2046 2047 if qgte.driver_id ^= "" then do; 2048 call statement_error (13, "driver_id", "Request_type", qgte.name); 2049 end; 2050 person = before (token_value, "."); 2051 project = after (token_value, "."); 2052 if project = "" then 2053 call statement_error (20); 2054 instance = after (project, "."); 2055 project = before (project, "."); 2056 if instance ^= "" then 2057 call statement_error (21); 2058 qgte.driver_id = person || "." || project || ".*"; 2059 2060 end rqt_save_driver_id; 2061 2062 rqt_save_forms_validation: proc; 2063 2064 if qgte.forms_validation.total_chars ^= 0 then 2065 call statement_error (13, "forms_validation", "Request_type", qgte.name); 2066 call store_token_value_string (qgte.forms_validation); 2067 end rqt_save_forms_validation; 2068 2069 2070 rqt_save_font_dir: proc; 2071 2072 if qgte.font_dir.total_chars ^= 0 then 2073 call statement_error (13, "font_dir", "Device", qgte.name); 2074 call store_token_value_string (qgte.font_dir); 2075 end rqt_save_font_dir; 2076 2077 2078 rqt_save_forms_table: proc; 2079 2080 if qgte.forms_table.total_chars ^= 0 then 2081 call statement_error (13, "forms_table", "Device", qgte.name); 2082 call store_token_value_string (qgte.forms_table); 2083 end rqt_save_forms_table; 2084 2085 2086 rqt_save_generic_type: proc; 2087 2088 if qgte.generic_type ^= "" then 2089 call statement_error (13, "generic_type", "Request_type", qgte.name); 2090 qgte.generic_type = token_value; 2091 if token_value = qgte.name then do; 2092 qgte.default_generic_queue = 1; 2093 if token_value = "printer" then 2094 default_print_defined = TRUE; 2095 else if token_value = "punch" then 2096 default_punch_defined = TRUE; 2097 end; 2098 end rqt_save_generic_type; 2099 2100 rqt_save_max_queues: proc; 2101 2102 if qgte.max_queues ^= -1 then 2103 call statement_error (13, "max_queues", "Request_type", qgte.name); 2104 if token.Nvalue < 1 | token.Nvalue > 4 then 2105 call statement_error (6, "max_queues", "4"); 2106 else qgte.max_queues = token.Nvalue; 2107 2108 end rqt_save_max_queues; 2109 2110 2111 rqt_save_rqti_seg: proc; 2112 2113 if qgte.rqti_seg_name ^= "" then 2114 call statement_error (13, "rqti_seg_name", "Request_type", qgte.name); 2115 qgte.rqti_seg_name = token_value; 2116 2117 end rqt_save_rqti_seg; 2118 2119 2120 /* validate that a request type entry is complete */ 2121 rqt_validate_entry: proc; 2122 2123 if qgte.first_dev_class = -1 then 2124 call rqt_create_default_device_class_entry; 2125 call rqt_check_device_class; 2126 2127 if qgte.driver_id = "" then 2128 qgte.driver_id = "IO.SysDaemon.*"; 2129 2130 if qgte.accounting.total_chars = 0 then 2131 call store_direct_string (qgte.accounting, "system"); 2132 2133 if return_string (qgte.accounting) ^= "system" then do; 2134 if qgte.driver_id = "IO.SysDaemon" then 2135 call semant_error (28, qgte.name); 2136 end; 2137 else if after (qgte.driver_id, ".") ^= "SysDaemon.*" then 2138 call semant_error (29, qgte.name); 2139 2140 if qgte.generic_type = "" then 2141 call semant_error (19, "generic_type", "Request_type", qgte.name); 2142 2143 if qgte.forms_table.total_chars = 0 then do; /* no forms table defined */ 2144 if qgte.default_form.total_chars ^= 0 then /* but default form defined */ 2145 call semant_error (19, "forms_table", "Request_type", qgte.name); 2146 end; 2147 else do; /* forms table is defined */ 2148 if qgte.default_form.total_chars = 0 then /* but no default form defined */ 2149 call semant_error (19, "default_form", "Request_type", qgte.name); 2150 2151 /* turn on bits to show which device classes have forms table entries */ 2152 do i = qgte.first_dev_class to qgte.last_dev_class; 2153 substr (device_class_forms, i, 1) = TRUE; 2154 end; 2155 end; 2156 end rqt_validate_entry; 2157 2158 2159 rqt_check_device_class: proc; /* fills in defaults if necessary */ 2160 2161 if dcte.min_access = (72)"1"b then 2162 dcte.min_access = ""b; 2163 if dcte.min_banner = (72)"1"b then 2164 dcte.min_banner = dcte.min_access; 2165 if dcte.max_access = (72)"1"b then 2166 dcte.max_access = dcte.min_access; 2167 if dcte.device_list = ""b then 2168 call semant_error (18, "devices", "Request_type", qgte.name); 2169 2170 end rqt_check_device_class; 2171 2172 2173 rqt_create_default_device_class_entry: proc; 2174 2175 default_device_class_defined = TRUE; 2176 2177 rqt_create_device_class_entry: entry; 2178 2179 dev_class_tab.n_classes = dev_class_tab.n_classes + 1; 2180 if dev_class_tab.n_classes > max_size then do; 2181 call statement_error (16, max_size_char, "device_class"); 2182 end; 2183 dctep = addr (dev_class_tab.entries (dev_class_tab.n_classes)); 2184 unspec (dcte) = "0"b; 2185 if qgte.first_dev_class = -1 then 2186 qgte.first_dev_class = dev_class_tab.n_classes; 2187 qgte.last_dev_class = dev_class_tab.n_classes; 2188 dcte.qgte_index = q_group_tab.n_q_groups; 2189 dcte.max_access, 2190 dcte.min_access, 2191 dcte.min_banner = (72)"1"b; 2192 dcte.device_list = ""b; 2193 if default_device_class_defined then 2194 minor_name = qgte.name; 2195 else do; 2196 revert_default_class: entry; 2197 minor_name = token_value; 2198 end; 2199 dcte.id = minor_name; 2200 q_group.is_default_device_class (dev_class_tab.n_classes) = default_device_class_defined; 2201 2202 end rqt_create_default_device_class_entry; 2203 2204 2205 2206 /* syntax functions for the Forms_table keyword and it's subordinate keywords */ 2207 2208 forms_size_ok: proc returns (bit (1)); 2209 2210 dcl number_float float bin (27); 2211 dcl type char (12); 2212 2213 item_ok = TOKEN_GOOD; 2214 number_float = cv_float_ (token_value, code); /* try to convert */ 2215 forms_size_type = 1; /* assume inches */ 2216 2217 /* if it didn't like the number to convert, probabily contains alpha chars 2218* defining the type of number specified. Reconvert the data up to the bad 2219* char and test the bad chars for valid conversion types. */ 2220 if code ^= 0 then do; 2221 number_float = convert (number_float, substr (token_value, 1, code - 1)); 2222 type = substr (token_value, code); 2223 if type = "in" | type = "i" | type = "inches" then 2224 forms_size_type = FACTOR_INCHES; 2225 else if type = "cm" | type = "c" | type = "centimeters" then 2226 forms_size_type = FACTOR_CENTIMETERS; 2227 else if type = "pt" | type = "p" | type = "points" then 2228 forms_size_type = FACTOR_POINTS; 2229 else if type = "lpi" | type = "LPI" then 2230 forms_size_type = FACTOR_LPI; 2231 else item_ok = TOKEN_BAD; 2232 end; 2233 if item_ok then do; 2234 if forms_size_type ^= FACTOR_LPI then 2235 forms_size_info = SIZE_FACTORS (forms_size_type) * number_float; 2236 else forms_size_info = SIZE_FACTORS (forms_size_type) / number_float; 2237 end; 2238 return (item_ok); 2239 2240 end forms_size_ok; 2241 2242 2243 forms_type: proc returns (bit (1)); 2244 2245 item_ok = TOKEN_GOOD; 2246 do i = lbound (FORMS_TYPE_STRINGS, 1) to hbound (FORMS_TYPE_STRINGS, 1) 2247 while (token_value ^= FORMS_TYPE_STRINGS (i)); 2248 end; 2249 if i > hbound (FORMS_TYPE_STRINGS, 1) then do; 2250 item_ok = TOKEN_BAD; 2251 token.Nvalue = 0; 2252 end; 2253 else token.Nvalue = i; 2254 return (item_ok); 2255 end forms_type; 2256 2257 2258 forms_tty_char_ok: proc returns (bit (1) aligned); 2259 2260 dcl ALL_LOWERCASE char (26) defined ALL_VALID_CHARS_AND_NUMERIC pos (27); 2261 dcl ALL_UPPERCASE char (26) defined ALL_VALID_CHARS_AND_NUMERIC pos (1); 2262 dcl asc_mnemonic char (3); 2263 dcl i fixed bin; 2264 2265 dcl asc_value (0:32) char (3) static options (constant) init 2266 ("nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel", 2267 "bs ", "tab", "lf ", "vt ", "ff ", "cr ", "so ", "si ", 2268 "dle", "dc1", "dc2", "dc3", "dc4", "nak", "syn", "etb", 2269 "can", "em ", "sub", "esc", "fs ", "gs ", "rs ", "us ", "sp "); 2270 2271 if token.quoted_string & token.Lvalue = 1 then 2272 call return_tty_char (bin (unspec (token_value))); 2273 2274 if token.Lvalue = 1 then do; 2275 if index (BREAKS, token_value) = 0 then 2276 call return_tty_char (bin (unspec (token_value))); 2277 end; 2278 if octal_char_ok () then return (TOKEN_GOOD); 2279 if token.Lvalue = 2 & substr (token_value, 1, 1) = "^" then do; 2280 i = index ("@abcdefghijklmnopqrstuvwxyz[\]^_", substr (token_value, 2, 1)); 2281 if i = 0 then 2282 i = index ("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_", substr (token_value, 2, 1)); 2283 if i = 0 then return (TOKEN_BAD); 2284 call return_tty_char (i - 1); 2285 end; 2286 if token.Lvalue <= 3 then do; 2287 asc_mnemonic = translate (token_value, ALL_LOWERCASE, ALL_UPPERCASE); 2288 if asc_mnemonic = "del" then call return_tty_char (127); 2289 if asc_mnemonic = "nl " then call return_tty_char (10); 2290 if asc_mnemonic = "pad" then call return_tty_char (0); 2291 if asc_mnemonic = "ht" then call return_tty_char (9); 2292 do i = lbound (asc_value, 1) to hbound (asc_value, 1); 2293 if asc_value (i) = asc_mnemonic then call return_tty_char (i); 2294 end; 2295 2296 end; 2297 return (TOKEN_BAD); 2298 2299 return_tty_char: proc (a_value); 2300 2301 dcl a_value fixed bin; 2302 2303 token.Nvalue = a_value; 2304 go to nlret; 2305 end return_tty_char; 2306 2307 nlret: return (TOKEN_GOOD); 2308 2309 octal_char_ok: proc returns (bit (1) aligned); 2310 2311 if token.Lvalue > 3 then 2312 return (TOKEN_BAD); 2313 2314 token.Nvalue = cv_oct_check_ (token_value, code); 2315 return (code = 0); 2316 end octal_char_ok; 2317 2318 end forms_tty_char_ok; 2319 2320 2321 /* the following entries are for the Forms_table keyword and it's table */ 2322 2323 /* add a synonym name to the current element entry */ 2324 forms_add_syn_element_name: proc; 2325 2326 element_common.n_names = element_common.n_names + 1; 2327 call store_token_value_string (element_common.names (element_common.n_names)); 2328 2329 end forms_add_syn_element_name; 2330 2331 /* create a new element entry. since we are creating these entries in a temp 2332* segment, we know that the entire entry is zeros when we start */ 2333 forms_create_element_entry: proc; 2334 2335 dcl element_offset fixed bin; 2336 dcl temp_fep ptr; 2337 2338 call forms_validate_entry; /* validate last entry */ 2339 2340 /* see if this name is already defined within the forms group. We will save 2341* the current element ptr (fep), then scan through the current element names 2342* to see if this one is unique; if not we will complain. In any case, we 2343* will create a new element ptr at the end of the current elements */ 2344 element_offset = forms_groups (iod_forms_info_tab.n_groups).first_element_index; 2345 i = forms_scan_for_element_name (element_offset, token_value); 2346 if i ^= -1 then 2347 call statement_error (50, token_value, return_string (element_common.names (i))); 2348 2349 /* Create entry in table for this line name. 2350* We will create a new entry for a duplicate name so we can check the rest 2351* of the substatements */ 2352 temp_fep = addrel (addr (forms_elements (iod_forms_info_tab.n_words)), 1); 2353 if fep ^= null then 2354 element_common.next_element_index = iod_forms_info_tab.n_words + 1; 2355 else forms_groups (iod_forms_info_tab.n_groups).first_element_index = iod_forms_info_tab.n_words + 1; 2356 fep = temp_fep; 2357 2358 /* now clear out the entry */ 2359 unspec (element_common) = "0"b; 2360 element_common.n_names = 1; 2361 call store_token_value_string (element_common.names (1)); 2362 element_common.type, 2363 element_common.next_element_index = -1; 2364 element_common.comment.first_char, 2365 element_common.comment.total_chars = 0; 2366 forms_element_validated = FALSE; 2367 2368 end forms_create_element_entry; 2369 2370 /* create a new entry in the group table */ 2371 forms_create_group_entry: proc; 2372 2373 /* validate the last forms group if there is one */ 2374 call forms_validate_group; 2375 2376 /* first see if line is currently defined in the table */ 2377 do i = 1 to iod_forms_info_tab.n_groups /* is forms group already defined */ 2378 while (forms_groups (i).name ^= token_value); 2379 end; 2380 if i <= iod_forms_info_tab.n_groups then /* it is in table so complain */ 2381 call statement_error (10, "Forms_table", token_value); 2382 2383 /* Create entry in table for this line name. 2384* We will create a new entry for a duplicate name so we can check the rest 2385* of the substatements */ 2386 iod_forms_info_tab.n_groups = iod_forms_info_tab.n_groups + 1; 2387 2388 /* now initialize the entry */ 2389 forms_groups (i).name = token_value; 2390 forms_groups (i).comment.first_char, 2391 forms_groups (i).comment.total_chars = 0; 2392 forms_groups (i).first_element_index = -1; 2393 fep = null; 2394 2395 end forms_create_group_entry; 2396 2397 2398 forms_save_comment: proc; 2399 2400 /* if there is an element entry open, save the comment there; 2401* else save in the group entry */ 2402 if fep ^= null () then do; 2403 if element_common.comment.first_char ^= 0 then 2404 call statement_error (13, "comment", "name", return_string (element_common.names (1))); 2405 call store_token_value_string (element_common.comment); 2406 end; 2407 else do; 2408 if forms_groups (iod_forms_info_tab.n_groups).comment.first_char ^= 0 then 2409 call statement_error (13, "comment", "Forms_info", forms_groups (iod_forms_info_tab.n_groups).name); 2410 call store_token_value_string (forms_groups (iod_forms_info_tab.n_groups).comment); 2411 end; 2412 2413 end forms_save_comment; 2414 2415 2416 forms_save_size: proc (type); 2417 2418 dcl type fixed bin; 2419 dcl type_strings (5) char (11) int static options (constant) init 2420 ("page_height", "page_width", "char_height", "char_width", "line_height"); 2421 2422 dcl got_dupe bit (1); 2423 2424 got_dupe = FALSE; 2425 if type = 1 | type = 3 | type = 5 then do; 2426 if orientation_element.height ^= 0 then 2427 got_dupe = TRUE; 2428 orientation_element.height = forms_size_info; 2429 orientation_element.factors (1) = forms_size_type; 2430 end; 2431 if type = 2 | type = 4 then do; 2432 if orientation_element.width ^= 0 then 2433 got_dupe = TRUE; 2434 orientation_element.width = forms_size_info; 2435 orientation_element.factors (2) = forms_size_type; 2436 end; 2437 2438 if got_dupe then 2439 call statement_error (13, type_strings, "name", return_string (element_common.names (1))); 2440 2441 end forms_save_size; 2442 2443 forms_save_string: proc; 2444 2445 dcl got_dupe bit (1); 2446 dcl use_token bit (1); 2447 2448 use_token = "0"b; 2449 go to forms_save_string_common; 2450 2451 forms_save_string_token: entry; 2452 2453 use_token = "1"b; 2454 2455 forms_save_string_common: 2456 got_dupe = "0"b; 2457 if element_common.type = TYPE_ORIENTATION /* orientation */ 2458 | element_common.type = TYPE_FONT_DESC /* font desc */ 2459 | element_common.type = TYPE_FONT_SIZE 2460 | element_common.type = TYPE_LINE_DESC /* line desc */ 2461 | element_common.type = TYPE_HOLES 2462 then do; 2463 if orientation_element.escape_string.total_chars ^= 0 then 2464 got_dupe = "1"b; 2465 if use_token then 2466 call store_token_value_string (orientation_element.escape_string); 2467 else call store_forms_escape_string (orientation_element.escape_string); 2468 end; 2469 2470 else if element_common.type = TYPE_SPECIAL then do; /* special */ 2471 if special_element.special_string.total_chars ^= 0 then 2472 got_dupe = "1"b; 2473 if use_token then 2474 call store_token_value_string (special_element.special_string); 2475 else call store_forms_escape_string (special_element.special_string); 2476 end; 2477 2478 else if element_common.type = TYPE_FONT_NAME 2479 | element_common.type = TYPE_PREAMBLE 2480 | element_common.type = TYPE_POSTAMBLE then do; 2481 if font_name_element.escape_string.total_chars ^= 0 then 2482 got_dupe = "1"b; 2483 if use_token then 2484 call store_token_value_string (font_name_element.escape_string); 2485 call store_forms_escape_string (font_name_element.escape_string); 2486 end; 2487 else if element_common.type = TYPE_USES then do; 2488 end; 2489 2490 if got_dupe then 2491 call statement_error (13, "string", "name ", return_string (element_common.names (1))); 2492 2493 end forms_save_string; 2494 2495 2496 forms_save_type: proc; 2497 2498 if element_common.type ^= -1 then do; 2499 call statement_error (13, "type", "name", return_string (element_common.names (1))); 2500 return; 2501 end; 2502 2503 element_common.type = token.Nvalue; 2504 2505 end forms_save_type; 2506 2507 2508 forms_save_uses_name: proc; 2509 2510 if element_common.type ^= -1 then 2511 call statement_error (13, "uses", "name", return_string (element_common.names (1))); 2512 element_common.type = TYPE_USES; 2513 uses_element.n_indices = 0; 2514 2515 forms_save_uses_name_continue: entry; 2516 2517 uses_element.n_indices = uses_element.n_indices + 1; 2518 call store_token_value_string (uses_element.name (uses_element.n_indices)); 2519 uses_element.index (uses_element.n_indices) = -1; 2520 2521 end forms_save_uses_name; 2522 2523 /* scan through the given forms table looking for specific element name */ 2524 forms_scan_for_element_name: proc (starting_index, seek_name) returns (fixed bin (17)); 2525 2526 dcl starting_index fixed bin; 2527 dcl seek_name char (*); 2528 2529 dcl element_index fixed bin; 2530 dcl element_name char (32); 2531 dcl i fixed bin; 2532 dcl my_fep ptr; 2533 2534 element_index = starting_index; 2535 do while (element_index ^= -1); 2536 my_fep = addr (forms_elements (element_index)); 2537 do i = 1 to my_fep -> element_common.n_names; 2538 element_name = return_string (my_fep -> element_common.names (i)); 2539 if element_name = rtrim (seek_name) then 2540 go to return_element_index; 2541 end; 2542 element_index = my_fep -> element_common.next_element_index; 2543 end; 2544 return_element_index: 2545 return (element_index); 2546 2547 end forms_scan_for_element_name; 2548 2549 /* validate that the current element entry isn't missing any required items */ 2550 forms_validate_entry: proc; 2551 2552 dcl element_words fixed bin; 2553 2554 if fep = null then return; /* no current element */ 2555 if forms_element_validated then return; /* already validated this element */ 2556 2557 /* validate the element entry */ 2558 if element_common.type = -1 then do; 2559 call semant_error (19, "type", "name", return_string (element_common.names (1))); 2560 element_words = currentsize (element_common); 2561 end; 2562 else do; 2563 if element_common.type = TYPE_USES then do; /* check out "uses" */ 2564 if uses_element.n_indices = 0 then 2565 call semant_error (19, "uses", "name", return_string (element_common.names (1))); 2566 element_words = currentsize (uses_element); 2567 end; 2568 else if element_common.type = TYPE_ORIENTATION then do; /* check out "orientation" */ 2569 if orientation_element.height = 0 then 2570 call semant_error (19, "page_height", "name", return_string (element_common.names (1))); 2571 if orientation_element.width = 0 then 2572 call semant_error (19, "page_width", "name", return_string (element_common.names (1))); 2573 if orientation_element.escape_string.total_chars = 0 then 2574 call semant_error (19, "string", "name", return_string (element_common.names (1))); 2575 element_words = currentsize (orientation_element); 2576 end; 2577 else if element_common.type = TYPE_FONT_DESC then do; /* check out "font_name" */ 2578 if font_element.height = 0 then 2579 call semant_error (19, "char_height", "name", return_string (element_common.names (1))); 2580 if font_element.width = 0 then 2581 call semant_error (19, "char_width", "name", return_string (element_common.names (1))); 2582 if font_element.escape_string.total_chars = 0 then 2583 call semant_error (19, "string", "name", return_string (element_common.names (1))); 2584 element_words = currentsize (font_element); 2585 end; 2586 else if element_common.type = TYPE_FONT_SIZE then do; /* check out "font_name" */ 2587 if font_size_element.height = 0 then 2588 call semant_error (19, "char_height", "name", return_string (element_common.names (1))); 2589 if font_size_element.width = 0 then 2590 call semant_error (19, "char_width", "name", return_string (element_common.names (1))); 2591 if font_size_element.escape_string.total_chars = 0 then 2592 call semant_error (19, "string", "name", return_string (element_common.names (1))); 2593 element_words = currentsize (font_size_element); 2594 end; 2595 else if element_common.type = TYPE_LINE_DESC then do; /* check out "line_height" */ 2596 if line_element.height = 0 then 2597 call semant_error (19, "line_height", "name", return_string (element_common.names (1))); 2598 if line_element.escape_string.total_chars = 0 then 2599 call semant_error (19, "string", "name", return_string (element_common.names (1))); 2600 element_words = currentsize (line_element); 2601 end; 2602 else if element_common.type = TYPE_HOLES then do; /* check out "font_name" */ 2603 if holes_element.height = 0 & holes_element.width = 0 then 2604 call semant_error (52, return_string (element_common.names (1))); 2605 if holes_element.escape_string.total_chars = 0 then 2606 call semant_error (19, "string", "name", return_string (element_common.names (1))); 2607 element_words = currentsize (holes_element); 2608 end; 2609 else if element_common.type = TYPE_SPECIAL then do; /* check out "special" */ 2610 if special_element.special_string.total_chars = 0 then 2611 call semant_error (19, "string", "name", return_string (element_common.names (1))); 2612 element_words = currentsize (special_element); 2613 end; 2614 else if element_common.type = TYPE_FONT_NAME then do; 2615 if font_name_element.escape_string.total_chars = 0 then 2616 call semant_error (19, "string", "name", return_string (element_common.names (1))); 2617 element_words = currentsize (font_name_element); 2618 end; 2619 else if element_common.type = TYPE_PREAMBLE then do; 2620 element_words = currentsize (preamble_element); 2621 end; 2622 else if element_common.type = TYPE_POSTAMBLE then do; 2623 element_words = currentsize (postamble_element); 2624 end; 2625 end; 2626 iod_forms_info_tab.n_words = iod_forms_info_tab.n_words + element_words; 2627 forms_element_validated = TRUE; 2628 2629 end forms_validate_entry; 2630 2631 2632 /* validate the current group of forms elements */ 2633 forms_validate_group: proc; 2634 2635 dcl (element_index, starting_element_index) fixed bin; 2636 dcl my_fep ptr; 2637 dcl i fixed bin; 2638 2639 /* nothing to do if no groups defined yet */ 2640 if iod_forms_info_tab.n_groups = 0 then return; 2641 2642 /* first validate the last element entry if there is one */ 2643 call forms_validate_entry; 2644 2645 /* now validate all the forms elements within this group */ 2646 if forms_groups (iod_forms_info_tab.n_groups).first_element_index = -1 then do; 2647 call semant_error (18, "forms elements", "Forms_table", forms_groups (iod_forms_info_tab.n_groups).name); 2648 end; 2649 else do; 2650 element_index, 2651 starting_element_index = forms_groups (iod_forms_info_tab.n_groups).first_element_index; 2652 do while (element_index ^= -1); 2653 my_fep = addr (forms_elements (element_index)); 2654 if my_fep -> element_common.type = TYPE_USES then do; 2655 do i = 1 to my_fep -> uses_element.n_indices; 2656 my_fep -> uses_element.index (i) = forms_scan_for_element_name (starting_element_index, 2657 return_string (my_fep -> uses_element.name (i))); 2658 if my_fep -> uses_element.index (i) = -1 then 2659 call semant_error (12, "uses element", my_fep -> uses_element.name (i), "name", return_string (my_fep -> element_common.names (1))); 2660 end; 2661 end; 2662 element_index = my_fep -> element_common.next_element_index; 2663 end; 2664 end; 2665 2666 end forms_validate_group; 2667 2668 2669 append_token_value_string: proc; 2670 2671 dcl i fixed bin; 2672 dcl c char (1); 2673 2674 do i = 1 to token.Lvalue; 2675 c = substr (token_value, i, 1); 2676 call insert_single_char (rank (c)); 2677 end; 2678 return; 2679 2680 end append_token_value_string; 2681 2682 insert_single_char: proc (n); 2683 2684 dcl n fixed bin (18); 2685 2686 forms_escape_string_n (forms_escape_string_index) = n; 2687 forms_escape_string_index = forms_escape_string_index + 1; 2688 return; 2689 2690 end insert_single_char; 2691 2692 2693 statement_error: proc options (variable); 2694 2695 dcl arg_count fixed bin; 2696 dcl arg_lens (7) fixed bin (21); 2697 dcl arg_ptrs (7) ptr; 2698 dcl error_num fixed bin based (arg_ptrs (1)); 2699 dcl i fixed bin; 2700 dcl parm1 char (arg_lens (2)) based (arg_ptrs (2)); 2701 dcl parm2 char (arg_lens (3)) based (arg_ptrs (3)); 2702 dcl parm3 char (arg_lens (4)) based (arg_ptrs (4)); 2703 dcl parm4 char (arg_lens (5)) based (arg_ptrs (5)); 2704 dcl parm5 char (arg_lens (6)) based (arg_ptrs (6)); 2705 dcl parm6 char (arg_lens (7)) based (arg_ptrs (7)); 2706 dcl dummy_string char (1); 2707 dcl (stmt_ptr, token_ptr) ptr; 2708 2709 stmt_ptr = token.Pstmt; 2710 token_ptr = Pthis_token; 2711 go to error_common; 2712 2713 /* semant_error: entry (error_num, parm1, ..., parm6); */ 2714 semant_error: entry options (variable); 2715 2716 stmt_ptr, token_ptr = null; 2717 2718 error_common: arg_lens (*) = 0; 2719 arg_ptrs (*) = addr (dummy_string); 2720 2721 call cu_$arg_count (arg_count, code); 2722 do i = 1 to arg_count; 2723 call cu_$arg_ptr (i, arg_ptrs (i), arg_lens (i), code); 2724 end; 2725 2726 if error_control_table (error_num).severity >= MIN_PRINT_SEVERITY 2727 then call lex_error_ (error_num, SERROR_PRINTED (error_num), (error_control_table.severity (error_num)), 2728 MERROR_SEVERITY, stmt_ptr, token_ptr, SERROR_CONTROL, 2729 (error_control_table.message (error_num)), (error_control_table.brief_message (error_num)), 2730 parm1, parm2, parm3, parm4, parm5, parm6); 2731 else do; 2732 MERROR_SEVERITY = max (MERROR_SEVERITY, error_control_table (error_num).severity); 2733 SERROR_PRINTED (error_num) = TRUE; 2734 end; 2735 return; 2736 2737 end statement_error; 2738 2739 2740 dcl 1 error_control_table (53) aligned int static options (constant), 2741 2742 2 severity fixed bin (17) unal init ( 2743 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2744 3, 3, 3, 1, 2, 4, 3, 2, 3, 3, 2745 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 2746 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2747 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 2748 3, 3, 3 2749 ), 2750 2751 2 Soutput_stmt bit (1) unal init ( 2752 "0"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, 2753 "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "1"b, 2754 "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b, 2755 "1"b, "1"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, 2756 "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, "1"b, "1"b, "1"b, "1"b, 2757 "1"b, "1"b, "0"b 2758 ), 2759 2760 2 message char (120) varying init ( 2761 "End of input encountered before End statement.", /* 1 */ 2762 "Keyword ""^a"" unrecognized or out of order.", /* 2 */ 2763 "Syntax error.", /* 3 */ 2764 "Global ""^a"" keyword appears more than once.",/* 4 */ 2765 "Bad numeric parameter (^a).", /* 5 */ 2766 "^a must be between 1 and ^a.", /* 6 */ 2767 "Grace time must be positive.", /* 7 */ 2768 "The name ""^a"" contains an invalid char.", /* 8 */ 2769 "Name ""^a"" is too long.", /* 9 */ 2770 "^a ""^a"" has already been defined.", /* 10 */ 2771 "^a ""^a"" has not been defined.", /* 11 */ 2772 "The ^a ""^a"" specified for ""^a: ^a;"" has not been defined.", /* 12 */ 2773 "Keyword ""^a"" appears more than once for ""^a: ^a;"".", /* 13 < */ 2774 "Channel not found in CDT. Possible error.", /* 14 */ 2775 "Data for ""^a"" exceeds ^a chars.", /* 15 */ 2776 "Limit of ^a ^a exceeded. Translation aborted.", /* 16 */ 2777 "The ^a device has been specified more that once for ^a.", /* 17 */ 2778 "No ^a specified for ""^a: ^a""", /* 18 */ 2779 "No ^a keyword found for ""^a: ^a;"".", /* 19 */ 2780 "Specified driver userid doesn't contain project name.", /* 20 */ 2781 "Specified driver userid contains more than two components.", /* 21 */ 2782 "Two of the mutually exclusive prph, line and dial_id keywords have been specified for device ""^a"".", /* 22 */ 2783 "Specified ""^a: ^a;"" for Device ""^a"" matches a previous dial_id or ctl_dial_id.", /* 23 */ 2784 "Two of the mutually exclusive ctl_line, ctl_dial_id and ctl_source keywords have been specified for device ""^a"".", /* 24 */ 2785 "Device ""^a"" does not have the ""line: variable;"" statement needed for line ""^a"".", /* 25 */ 2786 "Device ""^a"" uses a ""line: variable;"" statement, but has no corresponding Line entry.", /* 26 */ 2787 "The full name of ^a ""^a.^a"" exceeds 32 characters.", /* 27 */ 2788 "Non-system accounting specified for IO.SysDaemon in Request_type ""^a"".", /* 28 */ 2789 "System accounting specified for other than *.SysDaemon in Request_type ""^a"".", /* 29 */ 2790 "", /* 30 */ 2791 "One or more device class subkeywords appeared before the first device_class keyword for ""Request_type: ^a;"".", /* 31 */ 2792 "^a name ""^a"" appears more than once for ^a ""^a"".", /* 32 */ 2793 "The device ""^a"" specified for ""^a: ^a;"" is missing a minor device component.", /* 33 */ 2794 "The device ""^a"" specified for ""^a: ^a;"" has not been defined.", /* 34 */ 2795 "The default_type ""^a"" specified for ""^a: ^a;"" is missing a minor device component.", /* 35 */ 2796 "The default_type ""^a"" has been specified for ""^a: ^a;"" but device ""^a"" has not been specified for ""^a: ^a;"".", /* 36 */ 2797 "The default_type ""^a"" specified for ""^a: ^a;"" has not been defined.", /* 37 */ 2798 "Specified default_queue is greater than max_queues for Request_type ""^a"".", /* 38 */ 2799 "There must be one price name defined for each possible queue. Request_type ""^a"".", /* 39 */ 2800 "Request_type ""^a"". There is no price defined for ""^a"" in the system price table.", /* 40 */ 2801 "Max_queues not specified.", /* 41 */ 2802 "Time has not been specified.", /* 42 */ 2803 "No Device keywords have been specified.", /* 43 */ 2804 "No Request_type keywords have been specified.",/* 44 */ 2805 "No default Request_type has been specified for the ""printer"" generic type.", /* 45 */ 2806 "No default Request_type has been specified for the ""punch"" generic type.", /* 46 */ 2807 "No driver_module has been specified for Device ""^a"".", /* 47 */ 2808 "No prph, line or dial_id has been specified for Device ""^a"".", /* 48 */ 2809 "Keyword ""^a"" appears more than once for ""^a: ^a;"", ""^a: ^a;"".", /* 49 */ 2810 "The ""name: ^a;"" statement has already been used in ""Forms_table: ^a;"".", /* 50 */ 2811 "The ^a statement has too many elements, only ^a allowed.", /* 51 */ 2812 "Either page_height and/or page_width must be specified for ""name: ^a"".", /* 52 */ 2813 "Request_type ""^a"" cannot be used by Device ""^a"" since Device entry is missing a forms_table entry." /* 53 */ 2814 ), 2815 2816 2 brief_message char (36) varying init ( 2817 "", /* 1 */ 2818 "^a", /* 2 */ 2819 "", /* 3 */ 2820 "^a", /* 4 */ 2821 "^a", /* 5 */ 2822 "^a", /* 6 */ 2823 "", /* 7 */ 2824 "^a", /* 8 */ 2825 "^a", /* 9 */ 2826 "^a ^a", /* 10 */ 2827 "^a ^a", /* 11 */ 2828 "^a of ""^a"" for ""^a: ^a"" not defined.", /* 12 */ 2829 "Multiple ^a for ""^a: ^a;""", /* 13 */ 2830 "", /* 14 */ 2831 "^a too long", /* 15 */ 2832 "", /* 16 */ 2833 "^a ^a", /* 17 */ 2834 "^a ""^a: ^a""", /* 18 */ 2835 "^a ""^a: ^a;""", /* 19 */ 2836 "", /* 20 */ 2837 "", /* 21 */ 2838 "^a", /* 22 */ 2839 """^a: ^a"" ""^a""", /* 23 */ 2840 "^a", /* 24 */ 2841 """^a"" for Line ""^a"".", /* 25 */ 2842 """^a"" for Line ""^a"".", /* 26 */ 2843 "^a name ""^a.^a"".", /* 27 */ 2844 """^a""", /* 28 */ 2845 """^a""", /* 29 */ 2846 "", /* 30 */ 2847 "^a ""^a""", /* 31 */ 2848 "^a ""^a"" ^a ""^a""", /* 32 */ 2849 """^a"" ""^a:^a;""", /* 33 */ 2850 """^a"" ""^a:^a;""", /* 34 */ 2851 """^a"" ""^a:^a;""", /* 35 */ 2852 "^a ""^a: ^a;"" ^a ""^a: ^a;""", /* 36 */ 2853 "^a ""^a: ^a;""", /* 37 */ 2854 """^a""", /* 38 */ 2855 """^a""", /* 39 */ 2856 """^a"" ""^a""", /* 40 */ 2857 "", /* 41 */ 2858 "", /* 42 */ 2859 "", /* 43 */ 2860 "", /* 44 */ 2861 "", /* 45 */ 2862 "", /* 46 */ 2863 """^a""", /* 47 */ 2864 """^a""", /* 48 */ 2865 """^a"" ""^a: ^a;"" ""^a: ^a;""", /* 49 */ 2866 """name: ^a;"" ""Forms_table: ^a;""", /* 50 */ 2867 "^a", /* 51 */ 2868 "name: ^a", /* 52 */ 2869 "Request_type ""^a"", Device ""^a""" /* 53 */ 2870 ); 2871 2872 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 2872 2873 /* BEGIN INCLUDE FILE...device_class.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* Coded by R.S.Coren August 1973 2 9* Modified by J. Stern, 1/8/75 2 10* Modified by J. C. Whitmore, 5/78, to extent the size of the device list 2 11* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 2 12* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 2 13* Added comment field in dcte. 2 14* END HISTORY COMMENTS */ 2 15 2 16 2 17 /* format: style4 */ 2 18 2 19 dcl dctp ptr; /* ptr to device class table */ 2 20 dcl 1 dev_class_tab aligned based (dctp), /* the device class table */ 2 21 2 n_classes fixed bin, /* number of device classes */ 2 22 2 pad fixed bin, 2 23 2 entries (1 refer (dev_class_tab.n_classes)) like dcte; 2 24 2 25 dcl dctep ptr; /* device class table entry ptr */ 2 26 2 27 dcl 1 dcte aligned based (dctep), /* device class table entry */ 2 28 2 29 /* following items are initialized before daemon is run */ 2 30 2 31 2 id char (32), /* device class name for this entry */ 2 32 2 comment unaligned like text_offset, /* comment to apply to the device class */ 2 33 2 qgte_index fixed bin, /* index of queue group table entry */ 2 34 2 pad1 fixed bin, 2 35 2 max_access bit (72), /* max request access class */ 2 36 2 min_access bit (72), /* min request access class */ 2 37 2 min_banner bit (72), /* min access class to be placed on output banner */ 2 38 2 device_list bit (360), /* bit _i ON => minor device _i is valid for device class */ 2 39 2 40 /* remaining info is dynamic */ 2 41 2 42 2 pending_request fixed bin (18), /* descriptor offset for allocated but unassigned request */ 2 43 2 restart_req fixed bin (18), /* offset of next (or last) descriptor to be restarted */ 2 44 2 pad2 (3) fixed bin, 2 45 2 n_waiting fixed bin, /* number of waiting requests for device class */ 2 46 2 per_queue_info (4), /* one copy of this for each queue */ 2 47 3 first_waiting fixed bin, /* index of first waiting list entry */ 2 48 3 last_waiting fixed bin; /* index of last waiting list entry */ 2 49 2 50 2 51 /* END INCLUDE FILE...device_class.incl.pl1 */ 2873 2874 /* 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 */ 2874 2875 /* BEGIN INCLUDE FILE ... iod_constants.incl.pl1 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(88-08-31,Brunelle), approve(88-08-31,MCR7911), 4 6* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 4 7* Created. 4 8* END HISTORY COMMENTS */ 4 9 4 10 /* This file contains constants used by the I/O Daemon software in various tables */ 4 11 4 12 /* format: style4 */ 4 13 4 14 /* literals for use with idte.attach_type & iodd_static.attach_type */ 4 15 dcl (ATTACH_TYPE_IOM init (1), 4 16 ATTACH_TYPE_TTY init (2), 4 17 ATTACH_TYPE_DIAL init (3), 4 18 ATTACH_TYPE_VARIABLE_LINE init (4)) fixed bin int static options (constant); 4 19 4 20 /* literals for use with idte.ctl_attach_type & iodd_static.ctl_attach_type */ 4 21 dcl (CTL_ATTACH_TYPE_TTY init (1), 4 22 CTL_ATTACH_TYPE_DIAL init (2), 4 23 CTL_ATTACH_TYPE_MC init (3)) fixed bin int static options (constant); 4 24 4 25 /* literals for use with idte.paper_type & iodd_static.paper_type */ 4 26 dcl (PAPER_TYPE_DEFAULT init (-1), 4 27 PAPER_TYPE_SINGLE init (1), 4 28 PAPER_TYPE_CONTINUOUS init (2)) fixed bin int static options (constant); 4 29 4 30 /* END INCLUDE FILE ... iod_constants.incl.pl1 */ 2875 2876 /* BEGIN INCLUDE FILE...iod_device_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, January 1975 5 9* Modified by J. C. Whitmore April 1978 5 10* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 5 11* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 5 12* Added comment, head_sheet, tail_sheet, paper_type, forms_table, 5 13* forms_validation, font_dir variables to device entries in support of laser 5 14* printers. Changed driver_module, args to text_offset instead of strings. 5 15* Added comment, default_form to minor device entries. Changed args in 5 16* minor device entry to text_offset instead of string. 5 17* END HISTORY COMMENTS */ 5 18 5 19 5 20 /* format: style4 */ 5 21 5 22 dcl idtp ptr; /* ptr to device table */ 5 23 dcl 1 iod_device_tab aligned based (idtp), /* IO daemon device table */ 5 24 2 n_devices fixed bin, /* number of major devices */ 5 25 2 pad fixed bin, 5 26 2 entries (1 refer (iod_device_tab.n_devices)) like idte; /* entries for major devices */ 5 27 5 28 dcl idtep ptr; /* major device entry pointer */ 5 29 dcl 1 idte aligned based (idtep), /* major device entry */ 5 30 5 31 /* static info associated with device from the parms file */ 5 32 5 33 2 dev_id char (24), /* major device name */ 5 34 2 comment unaligned like text_offset, /* comment to apply to the major device */ 5 35 2 attach_name char (32), /* channel name or dial id for device attachment */ 5 36 2 attach_type fixed bin, /* indicates meaning of attach_name */ 5 37 /* see ATTACH_TYPE_XX in iod_constants.incl.pl1 */ 5 38 2 ctl_attach_name char (32), /* channel, dial id, or source for control terminal attachment */ 5 39 2 ctl_attach_type fixed bin, /* indicates meaning of ctl_attach_name */ 5 40 /* see CTL_ATTACH_TYPE_XX in iod_constants.incl.pl1 */ 5 41 2 driver_module unaligned like text_offset, /* offset to pathname of program to drive device */ 5 42 2 head_sheet unaligned like text_offset, /* offset to name of head_sheet program to use */ 5 43 2 tail_sheet unaligned like text_offset, /* offset to name of tail_sheet program to use */ 5 44 2 paper_type fixed bin, /* -1=default , 1=continuous form, 2=single sheet */ 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 font_dir unaligned like text_offset, /* offset to location of downloadable fonts */ 5 48 2 args unaligned like text_offset, /* offset to arguments to driver program */ 5 49 2 first_minor fixed bin, /* index of first minor device for this major device */ 5 50 2 last_minor fixed bin, /* index of last minor device for this major device */ 5 51 5 52 /* dynamic info associated with driver of this device */ 5 53 5 54 2 lock bit (36), /* lock id of current driver */ 5 55 2 process_id bit (36); /* process id of current driver */ 5 56 5 57 dcl mdtp ptr; 5 58 dcl 1 minor_device_tab aligned based (mdtp), 5 59 2 n_minor fixed bin, /* number of minor devices */ 5 60 2 pad fixed bin, 5 61 2 entries (1 refer (minor_device_tab.n_minor)) like mdte; 5 62 5 63 dcl mdtep ptr; /* minor device entry pointer */ 5 64 dcl 1 mdte aligned based (mdtep), /* minor device entry */ 5 65 5 66 /* static info associated with device from the parms file */ 5 67 5 68 2 dev_id char (24), /* minor device name */ 5 69 2 comment unaligned like text_offset, /* comment to apply to the minor device */ 5 70 2 default_form unaligned like text_offset, /* offset to default -form string for minor device */ 5 71 2 default_dev_class fixed bin, /* default device class index */ 5 72 2 major_index fixed bin, /* subscript of corresponding major device entry */ 5 73 2 args unaligned like text_offset, /* offset to arguments to driver program */ 5 74 5 75 /* dynamic info associated with driver of this device */ 5 76 5 77 2 dev_class_index fixed bin, /* index of device class table entry */ 5 78 2 current_request fixed bin (18), /* offset of current request descriptor */ 5 79 2 driver_ptr ptr, /* ptr to driver status segment */ 5 80 2 active fixed bin, /* 1 if active, 0 if not active */ 5 81 2 seq_id fixed bin (35); /* sequence number of last request */ 5 82 5 83 /* named constants for attach_type, ctl_attach_type and paper_type are found 5 84* in iod_constants.incl.pl1 */ 5 85 5 86 /* END INCLUDE FILE...iod_device_tab.incl.pl1 */ 2876 2877 /* BEGIN INCLUDE FILE iod_line_tab.incl.pl1 */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 6 7* Ancient History 6 8* Created by J. C. Whitmore Oct 1978 6 9* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 6 10* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 6 11* Upgraded to version 5. Added comment field and changed att_desc from 6 12* string to text_offset. 6 13* END HISTORY COMMENTS */ 6 14 6 15 6 16 /* format: style4 */ 6 17 6 18 dcl ltp ptr; 6 19 dcl 1 line_tab aligned based (ltp), /* the line id table */ 6 20 2 n_lines fixed bin, /* number of line id entries */ 6 21 2 pad fixed bin, /* for the future */ 6 22 2 entries (1 refer (line_tab.n_lines)) like lte; 6 23 6 24 dcl ltep ptr; /* line table entry pointer */ 6 25 dcl 1 lte aligned based (ltep), /* line table entry */ 6 26 2 line_id char (24), /* logical id for a tty line */ 6 27 2 comment unaligned like text_offset, /* comment to apply to the line */ 6 28 2 chan_id char (32), /* the physical channel name for attachment */ 6 29 2 att_desc unaligned like text_offset, /* the attach description to use */ 6 30 2 maj_dev_list bit (360); /* bit i ON => major device i is valid for this line id */ 6 31 6 32 6 33 /* END INCLUDE FILE iod_line_tab.incl.pl1 */ 2877 2878 /* BEGIN INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 7 2 7 3 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 7 7* Ancient History 7 8* Created by J. Stern, 1/20/75 7 9* Modified by J. C. Whitmore April 1978 for enhancements 7 10* Modified by J. C. Whitmore, 10/78, for version 3 iod_tables format. 7 11* Modified by E. N. Kittlitz, 6/81, for version 4 iod_tables with expanded 7 12* q_group_tab 7 13* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 7 14* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 7 15* Change version number to reflect changes in q_group_tab and 7 16* iod_device_tab for laser printer support. Added font tables. 7 17* END HISTORY COMMENTS */ 7 18 7 19 7 20 /* format: style4 */ 7 21 7 22 dcl ithp ptr; /* ptr to io daemon dables and it's header */ 7 23 dcl 1 iod_tables_hdr aligned based (ithp), /* header of data segment compiled by iod_table_compiler */ 7 24 2 version char (8), /* version of this structure */ 7 25 2 date_time_compiled fixed bin (71), 7 26 2 grace_time fixed bin (71), /* grace time before deleting finished segment */ 7 27 2 max_queues fixed bin (17), /* default number of priority queues per queue group */ 7 28 2 line_tab_offset fixed bin (18), /* offset of line id table */ 7 29 2 device_tab_offset fixed bin (18), /* offset of device table */ 7 30 2 minor_device_tab_offset fixed bin (18), /* offset of minor device table */ 7 31 2 dev_class_tab_offset fixed bin (18), /* offset of device class table */ 7 32 2 q_group_tab_offset fixed bin (18), /* offset of queue group table */ 7 33 2 forms_info_tab_offset fixed bin (18), /* offset of forms info tables */ 7 34 2 text_strings_offset fixed bin (18), 7 35 2 start_of_tables fixed bin; /* beginning of above tables, MUST start on even word boundry */ 7 36 7 37 /* Defines common text block to store virtually all text in the I/O daemon tables */ 7 38 dcl text_strings_ptr ptr; 7 39 dcl 1 text_strings aligned based (text_strings_ptr), 7 40 2 length fixed bin, 7 41 2 chars char (1 refer (text_strings.length)) unaligned; 7 42 7 43 /* this defines text offsets used to locate i/o daemon tables strings in 7 44* the text_strings structure */ 7 45 dcl 1 text_offset based, 7 46 2 first_char fixed bin (18) unsigned unaligned, 7 47 2 total_chars fixed bin (18) unsigned unaligned; 7 48 7 49 dcl IODT_VERSION_5 char (8) int static options (constant) init ("IODT0005"); /* current version number */ 7 50 7 51 7 52 /* END INCLUDE FILE ... iod_tables_hdr.incl.pl1 */ 2878 2879 /* BEGIN INCLUDE FILE...q_group_tab.incl.pl1 */ 8 2 8 3 8 4 8 5 /****^ HISTORY COMMENTS: 8 6* 1) change(88-01-27,Brunelle), approve(), audit(), install(): 8 7* Ancient History 8 8* Created by J. Stern, December 1974 8 9* Modified by J. Whitmore April 1978 8 10* Modified by R. McDonald May 1980 to include page charges (UNCA) 8 11* Modified by E. N. Kittlitz June 1981 for UNCA changes 8 12* 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 8 13* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 8 14* Add forms_validation, default_form and font_dir variables for laser 8 15* printer support. 8 16* END HISTORY COMMENTS */ 8 17 8 18 8 19 /* format: style4 */ 8 20 8 21 dcl qgtp ptr; /* ptr to queue group table */ 8 22 dcl 1 q_group_tab aligned based (qgtp), 8 23 2 n_q_groups fixed bin, /* number of queue groups */ 8 24 2 pad fixed bin, 8 25 2 entries (1 refer (q_group_tab.n_q_groups)) like qgte; /* entries of queue group table */ 8 26 8 27 dcl qgtep ptr; /* queue group table entry pointer */ 8 28 dcl 1 qgte aligned based (qgtep), /* queue group table entry */ 8 29 8 30 /* static info from the parms file */ 8 31 8 32 2 name char (24), /* queue group name */ 8 33 2 comment unaligned like text_offset, /* comment to apply to the request_type */ 8 34 2 driver_id char (32), /* person.project name of drivers for this q group */ 8 35 2 accounting unaligned like text_offset, /* offset to accounting routine pathname, "system" => charge_user_ */ 8 36 2 generic_type char (32), /* generic type of requests in this queue */ 8 37 2 default_generic_queue fixed bin (1), /* 1 if this is default queue for above generic type, else 0 */ 8 38 2 rqti_seg_name char (32), /* name of rqti seg, if required, else blank */ 8 39 2 max_queues fixed bin, /* number of queues for this request type */ 8 40 2 default_queue fixed bin, /* number of the default queue */ 8 41 2 line_charge, /* price names for line charges */ 8 42 3 queue (4) char (32), /* one name for each queue */ 8 43 2 page_charge, /* price names for page charges */ 8 44 3 queue (4) char (32), /* one name for each queue */ 8 45 2 forms_table unaligned like text_offset, /* offset to forms table to apply to this queue group */ 8 46 2 forms_validation unaligned like text_offset, /* offset to name of routine for forms validation */ 8 47 2 default_form unaligned like text_offset, /* offset to default -form string if none given */ 8 48 2 font_dir unaligned like text_offset, /* offset to location of downloadable fonts */ 8 49 2 first_dev_class fixed bin, /* index of first device class entry of queue group */ 8 50 2 last_dev_class fixed bin, /* index of last device class entry of queue group */ 8 51 8 52 /* dynamic info reflecting current status of queues */ 8 53 8 54 2 open fixed bin, /* 1 if queues have been opened, else 0 */ 8 55 2 per_queue_info (4), 8 56 3 last_read bit (72), /* ID of last message read */ 8 57 3 mseg_index fixed bin, /* message segment index */ 8 58 3 pad fixed bin; /* pad to even word boundary */ 8 59 8 60 /* END INCLUDE FILE...q_group_tab.incl.pl1 */ 2879 2880 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 9 2 /* format: style2,^inddcls,idind32 */ 9 3 9 4 declare 1 terminate_file_switches based, 9 5 2 truncate bit (1) unaligned, 9 6 2 set_bc bit (1) unaligned, 9 7 2 terminate bit (1) unaligned, 9 8 2 force_write bit (1) unaligned, 9 9 2 delete bit (1) unaligned; 9 10 9 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 9 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 9 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 9 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 9 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 9 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 9 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 9 18 9 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 2880 2881 2882 2883 dcl TRACING bit(1) aligned int static init("0"b); 2884 2885 10 1 /* START OF: rdc_start_.incl.pl1 * * * * * * */ 10 2 10 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 10 4 /* */ 10 5 /* N__a_m_e: rdc_start_.incl.pl1 */ 10 6 /* */ 10 7 /* This include segment is used by compilers generated by the */ 10 8 /* reduction_compiler. Such compilers include a SEMANTIC_ANALYSIS */ 10 9 /* subroutine generated by the reduction_compiler. This subroutine */ 10 10 /* compares a chain of input tokens with token requirements */ 10 11 /* specified in reductions. This include segment declares the */ 10 12 /* structure of the input tokens (which are generated by lex_string_),*/ 10 13 /* defines the beginning of the SEMANTIC_ANALYSIS procedure, and */ 10 14 /* declares Pthis_token, a global pointer variable which points to */ 10 15 /* the "current" token being referenced by SEMANTIC_ANALYSIS. */ 10 16 /* */ 10 17 /* S__t_a_t_u_s */ 10 18 /* */ 10 19 /* 0) Created: April, 1974 by G. C. Dixon */ 10 20 /* */ 10 21 /* * * * * * * * * * * * * * * * * * * * * * * */ 10 22 10 23 dcl Pthis_token ptr; /* ptr to the "current" token being acted upon. */ 10 24 11 1 /* START OF: lex_descriptors_.incl.pl1 * * * * * * */ 11 2 11 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 11 4 /* */ 11 5 /* Name: lex_descriptors_.incl.pl1 */ 11 6 /* */ 11 7 /* This include segment defines the structure of the token */ 11 8 /* descriptor, statement descriptor, and comment descriptor created */ 11 9 /* by the lex_string_ program. */ 11 10 /* */ 11 11 /* Status: */ 11 12 /* */ 11 13 /* 0) Created: Dec, 1973 by G. C. Dixon */ 11 14 /* */ 11 15 /* * * * * * * * * * * * * * * * * * * * * * * */ 11 16 11 17 11 18 11 19 11 20 dcl 11 21 1 comment aligned based (Pcomment), 11 22 /* descriptor for a comment. */ 11 23 2 group1 unaligned, 11 24 3 version fixed bin(17), /* comment descriptor version. */ 11 25 3 size fixed bin(17), /* comment descriptor size (in words). */ 11 26 2 Pnext ptr unal, /* ptr to next comment descriptor. */ 11 27 2 Plast ptr unal, /* ptr to last comment descriptor. */ 11 28 2 Pvalue ptr unal, /* ptr to comment. */ 11 29 2 Lvalue fixed bin(18), /* length of comment. */ 11 30 2 group2 unaligned, 11 31 3 line_no fixed bin(17), /* line no of line containing comment. */ 11 32 3 S, /* switches: */ 11 33 4 before_stmt bit(1), /* comment is before 1st token of stmt. */ 11 34 4 contiguous bit(1), /* no tokens between this and last comment. */ 11 35 4 pad bit(16), 11 36 comment_value char(comment.Lvalue) based (comment.Pvalue), 11 37 /* body of comment. */ 11 38 Pcomment ptr; /* ptr to comment descriptor. */ 11 39 11 40 dcl 11 41 1 stmt aligned based (Pstmt), 11 42 /* descriptor for a statement. */ 11 43 2 group1 unaligned, 11 44 3 version fixed bin(17), /* statement descriptor version. */ 11 45 3 size fixed bin(17), /* statement descriptor size (in words). */ 11 46 2 Pnext ptr unal, /* ptr to next statement descriptor. */ 11 47 2 Plast ptr unal, /* ptr to last statement descriptor. */ 11 48 2 Pvalue ptr unal, /* ptr to statement. */ 11 49 2 Lvalue fixed bin(18), /* length of statement. */ 11 50 2 Pfirst_token ptr unal, /* ptr to 1st token of statement. */ 11 51 2 Plast_token ptr unal, /* ptr to last token of statement. */ 11 52 2 Pcomments ptr unal, /* ptr to comments in statement. */ 11 53 2 Puser ptr unal, /* user-defined ptr. */ 11 54 2 group2 unaligned, 11 55 3 Ntokens fixed bin(17), /* number of tokens in statement. */ 11 56 3 line_no fixed bin(17), /* line no of line on which statement begins. */ 11 57 3 Istmt_in_line fixed bin(17), /* number of stmts in line containing this stmt. */ 11 58 /* (the number includes this stmt.) */ 11 59 3 semant_type fixed bin(17), /* semantic type of the statement. */ 11 60 3 S, /* switches: */ 11 61 4 error_in_stmt bit(1), /* stmt contains a syntactic error. */ 11 62 4 output_in_err_msg bit(1), /* stmt has been output in previous error message.*/ 11 63 4 pad bit(34), 11 64 stmt_value char(stmt.Lvalue) based (stmt.Pvalue), 11 65 /* text of the statement. */ 11 66 Pstmt ptr; /* ptr to a stmt descriptor. */ 11 67 11 68 dcl 11 69 1 token aligned based (Ptoken), 11 70 /* descriptor for a token. */ 11 71 2 group1 unaligned, 11 72 3 version fixed bin(17), /* token descriptor version. */ 11 73 3 size fixed bin(17), /* token descriptor size (in words). */ 11 74 2 Pnext ptr unal, /* ptr to next token descriptor. */ 11 75 2 Plast ptr unal, /* ptr to last token descriptor. */ 11 76 2 Pvalue ptr unal, /* ptr to token. */ 11 77 2 Lvalue fixed bin(18), /* length of token. */ 11 78 2 Pstmt ptr unal, /* ptr to descriptor of stmt containing token. */ 11 79 2 Psemant ptr unal, /* ptr to descriptor(s) of token's semantic value.*/ 11 80 2 group2 unaligned, 11 81 3 Itoken_in_stmt fixed bin(17), /* position of token within its statement. */ 11 82 3 line_no fixed bin(17), /* line number of the line containing the token. */ 11 83 3 Nvalue fixed bin(35), /* numeric value of decimal-integer tokens. */ 11 84 3 S, /* switches: */ 11 85 4 end_of_stmt bit(1), /* token is an end-of-stmt token. */ 11 86 4 quoted_string bit(1), /* token is a quoted string. */ 11 87 4 quotes_in_string bit(1), /* on if quote-close delimiters appear in quoted */ 11 88 /* string (as doubled quotes on input.) */ 11 89 4 quotes_doubled bit(1), /* on if quotes in the string are doubled after */ 11 90 /* string has been lexed into a token. */ 11 91 4 pad2 bit(32), 11 92 token_value char(token.Lvalue) based (token.Pvalue), 11 93 /* value of the token. */ 11 94 Ptoken ptr; /* ptr to a token descriptor. */ 11 95 11 96 /* END OF: lex_descriptors_.incl.pl1 * * * * * * */ 10 25 10 26 10 27 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 10 28 10 29 10 30 SEMANTIC_ANALYSIS: procedure; /* procedure which analyzes the syntax and */ 10 31 /* semantics of the tokens in the input list. */ 10 32 10 33 dcl /* automatic variables */ 10 34 LTOKEN_REQD_VALUE fixed bin(18), /* length of a token requirement. */ 10 35 NRED fixed bin, /* number of the reduction tokens are being */ 10 36 /* compared to. */ 10 37 PRED ptr, /* ptr to the reduction tokens are being */ 10 38 /* compared to. */ 10 39 PTOKEN_REQD ptr, /* ptr to token requirement descriptor associated */ 10 40 /* with reduction tokens are being compared to. */ 10 41 PTOKEN_REQD_VALUE ptr, /* ptr to a token requirement. */ 10 42 STOKEN_FCN bit(1) aligned, /* return value from a relative syntax function. */ 10 43 CODE fixed bin(35), /* an error code. */ 10 44 I fixed bin, /* a do-group index. */ 10 45 NUMBER fixed bin(35); /* fixed binary representation of a decimal */ 10 46 /* number character string. */ 10 47 10 48 dcl /* based variables */ 10 49 1 RED aligned based (PRED), 10 50 /* descriptor for reduction tokens are being */ 10 51 /* compared to. */ 10 52 2 TOKEN_REQD unaligned, 10 53 3 IFIRST fixed bin(17) unal, /* index of first token requirement. */ 10 54 3 ILAST fixed bin(17) unal, /* index of last token requirement associated */ 10 55 /* with this reduction. */ 10 56 1 TOKEN_REQD aligned based (PTOKEN_REQD), 10 57 /* a token requirement descriptor. */ 10 58 2 FORM fixed bin(17) unal, /* form of the token requirement: */ 10 59 /* -1 = relative token requirement function; */ 10 60 /* TYPE = index of the particular token */ 10 61 /* function in the token_fcn array. */ 10 62 /* 0 = built-in token requirement function; */ 10 63 /* TYPE = as defined below. */ 10 64 /* >0 = absolute token requirement: */ 10 65 /* FORM = index(TOKEN_STRINGS,TOKEN_REQD); */ 10 66 /* TYPE = length(TOKEN_REQD); */ 10 67 2 TYPE fixed bin(17) unal, /* TYPE of built-in token requirement function: */ 10 68 /* 1 = compile test to see if input token */ 10 69 /* chain is exhausted (). */ 10 70 /* 2 = compile test for any token value */ 10 71 /* (). */ 10 72 /* 3 = compile test for a PL/I identifier */ 10 73 /* () of 32 or fewer characters. */ 10 74 /* 4 = compile test for token which is a */ 10 75 /* . */ 10 76 /* 5 = compile test for token which is a single */ 10 77 /* backspace character (). */ 10 78 /* 6 = compile test for a token which is a */ 10 79 /* . */ 10 80 10 81 1 TOKEN_REQD_STRING aligned based (PTOKEN_REQD), 10 82 /* overlay for an absolute token requirement */ 10 83 /* descriptor. */ 10 84 2 I fixed bin(17) unal, /* index into list of token strings of the */ 10 85 /* absolute token string assoc w/ descriptor. */ 10 86 2 L fixed bin(17) unal, /* length of the absolute token string. */ 10 87 TOKEN_REQD_VALUE char(LTOKEN_REQD_VALUE) based (PTOKEN_REQD_VALUE); 10 88 /* absolute token string which token is reqd */ 10 89 /* to match in order for tokens which are */ 10 90 /* "current" on the list to match the reduction. */ 10 91 10 92 dcl /* builtin functions */ 10 93 (addr, max, null, search, substr, verify) 10 94 builtin; 10 95 10 96 dcl /* entries */ 10 97 cv_dec_check_ entry (char(*), fixed bin(35)) returns (fixed bin(35)); 10 98 10 99 dcl /* static variables */ 10 100 BACKSPACE char(1) aligned int static init (""); 10 101 10 102 /* END OF: rdc_start_.incl.pl1 * * * * * * */ 2886 2887 2888 dcl DIRECTION fixed bin init(+1); /* direction in which tokens compared. */ 2889 dcl STACK (10) fixed bin, /* reduction label stack. */ 2890 STACK_DEPTH fixed bin init (0); /* index into STACK. */ 2891 2892 2893 dcl 1 REDUCTION (154) unaligned based (addr (REDUCTIONS)), 2894 /* object reductions. */ 2895 2 TOKEN_REQD, 2896 3 IFIRST fixed bin(17), /* index of first required token. */ 2897 3 ILAST fixed bin(17), /* index of last required token. */ 2898 2899 REDUCTIONS (308) fixed bin(17) unaligned internal static options(constant) initial ( 2900 1, 1, /* 1/ */ 2901 2, 5, /* 2/ Time : ; */ 2902 6, 8, /* 3/ Time : */ 2903 9, 12, /* 4/ Max_queues : ; */ 2904 13, 15, /* 5/ Max_queues : */ 2905 16, 19, /* 6/ Line : ; */ 2906 20, 22, /* 7/ Line : */ 2907 23, 26, /* 8/ Device : ; */ 2908 27, 29, /* 9/ Device : */ 2909 30, 33, /* 10/ Request_type : ; */ 2910 34, 36, /* 11/ Request_type : */ 2911 37, 40, /* 12/ Forms_table : ; */ 2912 41, 43, /* 13/ Forms_table : */ 2913 44, 45, /* 14/ End ; */ 2914 46, 47, /* 15/ : */ 2915 8, 8, /* 16/ */ 2916 1, 1, /* 17/ */ 2917 48, 51, /* 18/ comment : ; */ 2918 52, 55, /* 19/ comment : ; */ 2919 52, 54, /* 20/ comment : */ 2920 56, 59, /* 21/ channel : ; */ 2921 60, 62, /* 22/ channel : */ 2922 63, 66, /* 23/ att_desc : ; */ 2923 67, 70, /* 24/ att_desc : ; */ 2924 67, 69, /* 25/ att_desc : */ 2925 71, 74, /* 26/ device : ; */ 2926 75, 77, /* 27/ device : */ 2927 8, 8, /* 28/ */ 2928 48, 51, /* 29/ comment : ; */ 2929 52, 55, /* 30/ comment : ; */ 2930 52, 54, /* 31/ comment : */ 2931 78, 81, /* 32/ prph : ; */ 2932 82, 84, /* 33/ prph : */ 2933 85, 88, /* 34/ line : variable ; */ 2934 89, 92, /* 35/ line : ; */ 2935 93, 95, /* 36/ line : */ 2936 96, 99, /* 37/ dial_id : ; */ 2937 100, 102, /* 38/ dial_id : */ 2938 103, 106, /* 39/ ctl_line : ; */ 2939 107, 109, /* 40/ ctl_line : */ 2940 110, 113, /* 41/ ctl_dial_id : ; */ 2941 114, 116, /* 42/ ctl_dial_id : */ 2942 117, 120, /* 43/ ctl_source : ; */ 2943 121, 123, /* 44/ ctl_source : */ 2944 124, 127, /* 45/ driver_module : ; */ 2945 128, 130, /* 46/ driver_module : */ 2946 131, 134, /* 47/ head_sheet : ; */ 2947 135, 137, /* 48/ head_sheet : */ 2948 138, 141, /* 49/ tail_sheet : ; */ 2949 142, 144, /* 50/ tail_sheet : */ 2950 145, 148, /* 51/ paper_type : single ; */ 2951 149, 152, /* 52/ paper_type : continuous ; */ 2952 153, 155, /* 53/ paper_type : */ 2953 156, 159, /* 54/ forms_validation : ; */ 2954 160, 162, /* 55/ forms_validation : */ 2955 163, 164, /* 56/ default_form : */ 2956 165, 168, /* 57/ font_dir : ; */ 2957 169, 171, /* 58/ font_dir : */ 2958 172, 175, /* 59/ forms_info : ; */ 2959 176, 178, /* 60/ forms_info : */ 2960 179, 182, /* 61/ args : ; */ 2961 183, 186, /* 62/ args : ; */ 2962 183, 185, /* 63/ args : */ 2963 187, 190, /* 64/ minor_device : ; */ 2964 191, 193, /* 65/ minor_device : */ 2965 194, 197, /* 66/ minor_args : ; */ 2966 198, 201, /* 67/ minor_args : ; */ 2967 198, 200, /* 68/ minor_args : */ 2968 202, 205, /* 69/ default_type : ; */ 2969 206, 208, /* 70/ default_type : */ 2970 8, 8, /* 71/ */ 2971 209, 208, /* 72/ */ 2972 209, 208, /* 73/ */ 2973 209, 208, /* 74/ */ 2974 5, 5, /* 75/ ; */ 2975 8, 8, /* 76/ */ 2976 48, 51, /* 77/ comment : ; */ 2977 52, 55, /* 78/ comment : ; */ 2978 52, 54, /* 79/ comment : */ 2979 209, 212, /* 80/ driver_userid : ; */ 2980 213, 215, /* 81/ driver_userid : */ 2981 216, 219, /* 82/ accounting : ; */ 2982 220, 222, /* 83/ accounting : */ 2983 223, 226, /* 84/ generic_type : ; */ 2984 227, 229, /* 85/ generic_type : */ 2985 230, 233, /* 86/ rqti_seg : ; */ 2986 234, 236, /* 87/ rqti_seg : */ 2987 237, 240, /* 88/ max_queues : ; */ 2988 241, 243, /* 89/ max_queues : */ 2989 244, 247, /* 90/ default_queue : ; */ 2990 248, 250, /* 91/ default_queue : */ 2991 251, 253, /* 92/ line_charge : */ 2992 254, 256, /* 93/ page_charge : */ 2993 257, 259, /* 94/ card_charge : */ 2994 156, 159, /* 95/ forms_validation : ; */ 2995 160, 162, /* 96/ forms_validation : */ 2996 163, 164, /* 97/ default_form : */ 2997 165, 168, /* 98/ font_dir : ; */ 2998 169, 171, /* 99/ font_dir : */ 2999 172, 175, /* 100/ forms_info : ; */ 3000 176, 178, /* 101/ forms_info : */ 3001 260, 263, /* 102/ device_class : ; */ 3002 264, 266, /* 103/ device_class : */ 3003 267, 270, /* 104/ max_access_class : ; */ 3004 271, 273, /* 105/ max_access_class : */ 3005 274, 277, /* 106/ min_access_class : ; */ 3006 278, 280, /* 107/ min_access_class : */ 3007 281, 284, /* 108/ min_banner : ; */ 3008 285, 287, /* 109/ min_banner : */ 3009 288, 291, /* 110/ device : ; */ 3010 75, 77, /* 111/ device : */ 3011 8, 8, /* 112/ */ 3012 292, 292, /* 113/ , */ 3013 5, 5, /* 114/ ; */ 3014 8, 8, /* 115/ */ 3015 1, 1, /* 116/ */ 3016 293, 292, /* 117/ */ 3017 293, 292, /* 118/ */ 3018 293, 295, /* 119/ name : */ 3019 48, 51, /* 120/ comment : ; */ 3020 52, 55, /* 121/ comment : ; */ 3021 52, 54, /* 122/ comment : */ 3022 296, 299, /* 123/ type : ; */ 3023 300, 302, /* 124/ type : */ 3024 303, 305, /* 125/ uses : */ 3025 306, 309, /* 126/ string : ; */ 3026 310, 312, /* 127/ string : ; */ 3027 306, 307, /* 128/ string : */ 3028 313, 316, /* 129/ page_height : ; */ 3029 317, 319, /* 130/ page_height : */ 3030 320, 323, /* 131/ page_width : ; */ 3031 324, 326, /* 132/ page_width : */ 3032 327, 330, /* 133/ char_height : ; */ 3033 331, 333, /* 134/ char_height : */ 3034 334, 337, /* 135/ char_width : ; */ 3035 338, 340, /* 136/ char_width : */ 3036 341, 344, /* 137/ line_height : ; */ 3037 345, 347, /* 138/ line_height : */ 3038 8, 8, /* 139/ */ 3039 292, 292, /* 140/ , */ 3040 5, 5, /* 141/ ; */ 3041 18, 18, /* 142/ */ 3042 8, 8, /* 143/ */ 3043 1, 1, /* 144/ */ 3044 292, 292, /* 145/ , */ 3045 5, 5, /* 146/ ; */ 3046 18, 18, /* 147/ */ 3047 8, 8, /* 148/ */ 3048 1, 1, /* 149/ */ 3049 50, 50, /* 150/ */ 3050 348, 348, /* 151/ */ 3051 5, 5, /* 152/ ; */ 3052 8, 8, /* 153/ */ 3053 1, 1); /* 154/ */ 3054 3055 dcl 1 TOKEN_REQUIREMENT (348) unaligned based (addr (TOKEN_REQUIREMENTS)), 3056 /* object token requirements. */ 3057 2 FORM fixed bin(17), /* form of the token requirement: */ 3058 /* -1 = relative token requirement function; */ 3059 /* TYPE = index of the particular token */ 3060 /* function in the token_fcn array. */ 3061 /* 0 = built-in token requirement function; */ 3062 /* TYPE = as defined below. */ 3063 /* >0 = absolute token requirement: */ 3064 /* FORM = index(TOKEN_STRINGS,TOKEN_REQD); */ 3065 /* TYPE = length(TOKEN_REQD); */ 3066 2 TYPE fixed bin(17) unal, /* type of the built-in token requirement */ 3067 /* function: */ 3068 /* 1 = compile test to see if input token */ 3069 /* chain is exhausted (). */ 3070 /* 2 = compile test for any token value */ 3071 /* (). */ 3072 /* 3 = compile test for a PL/I identifier */ 3073 /* () of 32 or fewer characters. */ 3074 /* 4 = compile test for token which is a */ 3075 /* . */ 3076 /* 5 = compile test for token which is a single */ 3077 /* backspace character (). */ 3078 /* 6 = compile test for a token which is a */ 3079 /* . */ 3080 3081 TOKEN_REQUIREMENTS (696) fixed bin(17) unaligned internal static options(constant) initial ( 3082 0, 1, 1, 4, 5, 1, 0, 4, 6, 1, 1, 4, 5, 1, 3083 0, 2, 7, 10, 5, 1, 0, 4, 6, 1, 7, 10, 5, 1, 3084 0, 2, 17, 4, 5, 1, -1, 1, 6, 1, 17, 4, 5, 1, 3085 0, 2, 21, 6, 5, 1, -1, 2, 6, 1, 21, 6, 5, 1, 3086 0, 2, 27, 12, 5, 1, -1, 2, 6, 1, 27, 12, 5, 1, 3087 0, 2, 39, 11, 5, 1, -1, 1, 6, 1, 39, 11, 5, 1, 3088 0, 2, 50, 3, 6, 1, 0, 2, 5, 1, 53, 7, 5, 1, 3089 0, 6, 6, 1, 53, 7, 5, 1, 0, 2, 6, 1, 60, 7, 3090 5, 1, -1, 3, 6, 1, 60, 7, 5, 1, 0, 2, 67, 8, 3091 5, 1, 0, 6, 6, 1, 67, 8, 5, 1, 0, 2, 6, 1, 3092 75, 6, 5, 1, -1, 2, 6, 1, 75, 6, 5, 1, 0, 2, 3093 81, 4, 5, 1, -1, 1, 6, 1, 81, 4, 5, 1, 0, 2, 3094 85, 4, 5, 1, 89, 8, 6, 1, 85, 4, 5, 1, -1, 3, 3095 6, 1, 85, 4, 5, 1, 0, 2, 97, 7, 5, 1, -1, 1, 3096 6, 1, 97, 7, 5, 1, 0, 2, 104, 8, 5, 1, -1, 1, 3097 6, 1, 104, 8, 5, 1, 0, 2, 112, 11, 5, 1, -1, 1, 3098 6, 1, 112, 11, 5, 1, 0, 2, 123, 10, 5, 1, -1, 1, 3099 6, 1, 123, 10, 5, 1, 0, 2, 133, 13, 5, 1, -1, 4, 3100 6, 1, 133, 13, 5, 1, 0, 2, 146, 10, 5, 1, -1, 4, 3101 6, 1, 146, 10, 5, 1, 0, 2, 156, 10, 5, 1, -1, 4, 3102 6, 1, 156, 10, 5, 1, 0, 2, 166, 10, 5, 1, 176, 6, 3103 6, 1, 166, 10, 5, 1, 182, 10, 6, 1, 166, 10, 5, 1, 3104 0, 2, 192, 16, 5, 1, -1, 4, 6, 1, 192, 16, 5, 1, 3105 0, 2, 208, 12, 5, 1, 220, 8, 5, 1, -1, 4, 6, 1, 3106 220, 8, 5, 1, 0, 2, 228, 10, 5, 1, -1, 4, 6, 1, 3107 228, 10, 5, 1, 0, 2, 238, 4, 5, 1, 0, 6, 6, 1, 3108 238, 4, 5, 1, 0, 2, 6, 1, 242, 12, 5, 1, -1, 2, 3109 6, 1, 242, 12, 5, 1, 0, 2, 254, 10, 5, 1, 0, 6, 3110 6, 1, 254, 10, 5, 1, 0, 2, 6, 1, 264, 12, 5, 1, 3111 -1, 5, 6, 1, 264, 12, 5, 1, 0, 2, 276, 13, 5, 1, 3112 -1, 6, 6, 1, 276, 13, 5, 1, 0, 2, 289, 10, 5, 1, 3113 -1, 4, 6, 1, 289, 10, 5, 1, 0, 2, 299, 12, 5, 1, 3114 -1, 2, 6, 1, 299, 12, 5, 1, 0, 2, 311, 8, 5, 1, 3115 -1, 1, 6, 1, 311, 8, 5, 1, 0, 2, 319, 10, 5, 1, 3116 0, 4, 6, 1, 319, 10, 5, 1, 0, 2, 329, 13, 5, 1, 3117 0, 4, 6, 1, 329, 13, 5, 1, 0, 2, 342, 11, 5, 1, 3118 0, 2, 353, 11, 5, 1, 0, 2, 364, 11, 5, 1, 0, 2, 3119 375, 12, 5, 1, -1, 2, 6, 1, 375, 12, 5, 1, 0, 2, 3120 387, 16, 5, 1, -1, 7, 6, 1, 387, 16, 5, 1, 0, 2, 3121 403, 16, 5, 1, -1, 7, 6, 1, 403, 16, 5, 1, 0, 2, 3122 419, 10, 5, 1, -1, 7, 6, 1, 419, 10, 5, 1, 0, 2, 3123 75, 6, 5, 1, -1, 5, 6, 1, 429, 1, 430, 4, 5, 1, 3124 -1, 1, 35, 4, 5, 1, -1, 8, 6, 1, 35, 4, 5, 1, 3125 0, 2, 434, 4, 5, 1, -1, 1, 438, 6, 5, 1, 0, 6, 3126 6, 1, 438, 6, 5, 1, 6, 1, 444, 11, 5, 1, -1, 9, 3127 6, 1, 444, 11, 5, 1, 0, 2, 455, 10, 5, 1, -1, 9, 3128 6, 1, 455, 10, 5, 1, 0, 2, 465, 11, 5, 1, -1, 9, 3129 6, 1, 465, 11, 5, 1, 0, 2, 476, 10, 5, 1, -1, 9, 3130 6, 1, 476, 10, 5, 1, 0, 2, 486, 11, 5, 1, -1, 9, 3131 6, 1, 486, 11, 5, 1, 0, 2, -1, 10); 3132 3133 3134 dcl TOKEN_STRINGS char(496) aligned based (addr (TOKEN_STRING_ARRAYS)), 3135 /* object token values. */ 3136 TOKEN_STRING_ARRAYS (5) char(100) aligned internal static options(constant) initial ( 3137 "Time:;Max_queuesLineDeviceRequest_typeForms_tableEndcommentchannelatt_descdeviceprphlinevariabledial", 3138 "_idctl_linectl_dial_idctl_sourcedriver_modulehead_sheettail_sheetpaper_typesinglecontinuousforms_val", 3139 "idationdefault_formfont_dirforms_infoargsminor_deviceminor_argsdefault_typedriver_useridaccountingge", 3140 "neric_typerqti_segmax_queuesdefault_queueline_chargepage_chargecard_chargedevice_classmax_access_cla", 3141 "ssmin_access_classmin_banner,nameusesstringpage_heightpage_widthchar_heightchar_widthline_height"); 3142 3143 /* START OF: rdc_end_.incl.pl1 * * * * * * * * * * * * * * * * */ 12 2 12 3 12 4 /****^ HISTORY COMMENTS: 12 5* 1) change(86-02-14,GWMay), approve(), audit(), install(): 12 6* old history comments: 12 7* 0) Created: April, 1974 by G. C. Dixon 12 8* 1) Modified: Feb, 1975 by G. C. Dixon 12 9* a) support for Version 2.0 of reduction_compiler. 12 10* 2) Modified: Feb, 1981 by G. C. Dixon 12 11* a) support for Version 2.2 of reduction_compiler 12 12* 3) Modified: Aug, 1983 by G. C. Dixon - support for Version 2.3 of 12 13* reductions command. 12 14* 2) change(86-03-04,GDixon), approve(86-03-04,MCR7362), audit(86-03-17,GWMay), 12 15* install(86-03-17,MR12.0-1032): 12 16* Changed how the PUSH DOWN LANGUAGE (SPDL) definition of is 12 17* implemented to avoid references through a null pointer. The two 12 18* accepted uses are: 12 19* 12 20* / / ... / ... \ 12 21* A 12 22* | 12 23* Pthis_token (points to top of push down stack) 12 24* 12 25* which checks to see if the push down stack is totally exhausted (ie, 12 26* Ptoken = null); and: 12 27* 12 28* / SPEC1 ... SPECN / ... / ... \ 12 29* A 12 30* | 12 31* Pthis_token (points to top of push down stack) 12 32* 12 33* which checks to see whether SPECN is topmost on the push down stack 12 34* AND is the final token in the input list. 12 35* END HISTORY COMMENTS */ 12 36 12 37 12 38 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 39 /* */ 12 40 /* NAME: rdc_end_.incl.pl1 */ 12 41 /* */ 12 42 /* This include segment is used by compilers generated by the reduction_compiler. */ 12 43 /* Such compilers include a SEMANTIC_ANALYSIS subroutine generated by the */ 12 44 /* reduction_compiler. This subroutine compares a chain of input tokens with token */ 12 45 /* requirements specified in reductions. The code in this include segment performs the */ 12 46 /* actual comparisons. This code is the middle part of the SEMANTIC_ANALYSIS procedure. */ 12 47 /* */ 12 48 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 49 12 50 TRACING = TRACING; /* Kludge to prevent pl1 from making TRACING */ 12 51 /* options(constant) because it is never set. */ 12 52 NRED = 1; 12 53 go to RD_TEST_REDUCTION; 12 54 12 55 RD_NEXT_REDUCTION: 12 56 NRED = NRED + 1; 12 57 12 58 RD_TEST_REDUCTION: 12 59 PRED = addr(REDUCTION(NRED)); 12 60 Ptoken = Pthis_token; 12 61 12 62 do I = RED.TOKEN_REQD.IFIRST to RED.TOKEN_REQD.ILAST by DIRECTION; 12 63 PTOKEN_REQD = addr(TOKEN_REQUIREMENT(I)); 12 64 if Ptoken = null then do; 12 65 if TOKEN_REQD.FORM = 0 then /* No more tokens. Only matches spec. */ 12 66 if TOKEN_REQD.TYPE = 1 then 12 67 go to RD_TEST_TOKEN(1); 12 68 go to RD_NEXT_REDUCTION; 12 69 end; 12 70 if TOKEN_REQD.FORM = 0 then do; /* built-in syntax function. */ 12 71 go to RD_TEST_TOKEN(TOKEN_REQD.TYPE); 12 72 12 73 RD_TEST_TOKEN(1): if SPDL then /* */ 12 74 /* In push-down-language, there are 2 */ 12 75 /* interpretations of . */ 12 76 if RED.TOKEN_REQD.IFIRST = RED.TOKEN_REQD.ILAST & 12 77 Ptoken = null then /* When is only spec, the spec asks */ 12 78 go to RD_MATCH_NO_TOKEN; /* "Is push down stack empty (all input gone)?" */ 12 79 else if RED.TOKEN_REQD.IFIRST^= RED.TOKEN_REQD.ILAST & 12 80 RED.TOKEN_REQD.IFIRST = I & 12 81 token.Pnext = null then /* For SPEC1 ... SPECN , the spec asks */ 12 82 go to RD_MATCH_NO_TOKEN; /* "Are the topmost tokens on stack SPEC1 - SPECN,*/ 12 83 /* and is SPECN the final input token?" */ 12 84 else go to RD_NEXT_REDUCTION; /* Those are the only two defs allowed in push */ 12 85 /* down language mode for . */ 12 86 else if Ptoken = null then 12 87 go to RD_MATCH_NO_TOKEN; 12 88 go to RD_NEXT_REDUCTION; 12 89 12 90 RD_TEST_TOKEN(2): go to RD_MATCH; /* */ 12 91 12 92 RD_TEST_TOKEN(3): if token.Lvalue > 0 & /* */ 12 93 token.Lvalue <= 32 & ^token.S.quoted_string then 12 94 if search(substr(token_value,1,1),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") 12 95 > 0 then 12 96 if verify(token_value,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_$") 12 97 = 0 then 12 98 go to RD_MATCH; 12 99 go to RD_NEXT_REDUCTION; 12 100 12 101 RD_TEST_TOKEN(4): /* */ 12 102 if token.Nvalue ^= 0 then /* token already determined to be a number. */ 12 103 go to RD_MATCH; 12 104 if token.S.quoted_string then 12 105 go to RD_NEXT_REDUCTION; 12 106 NUMBER = cv_dec_check_ (token_value, CODE); 12 107 if CODE = 0 then do; 12 108 token.Nvalue = NUMBER; 12 109 go to RD_MATCH; 12 110 end; 12 111 go to RD_NEXT_REDUCTION; 12 112 12 113 RD_TEST_TOKEN(5): if token.Lvalue = 1 then /* */ 12 114 if token_value = BACKSPACE & ^token.S.quoted_string then 12 115 go to RD_MATCH; 12 116 go to RD_NEXT_REDUCTION; 12 117 12 118 RD_TEST_TOKEN(6): if token.S.quoted_string then /* */ 12 119 go to RD_MATCH; 12 120 go to RD_NEXT_REDUCTION; 12 121 end; 12 122 12 123 else if TOKEN_REQD.FORM > 0 then do; /* absolute syntax specification. */ 12 124 if token.S.quoted_string then 12 125 go to RD_NEXT_REDUCTION; 12 126 PTOKEN_REQD_VALUE = addr(substr(TOKEN_STRINGS,TOKEN_REQD_STRING.I)); 12 127 LTOKEN_REQD_VALUE = TOKEN_REQD_STRING.L; 12 128 if token_value = TOKEN_REQD_VALUE then 12 129 go to RD_MATCH; 12 130 go to RD_NEXT_REDUCTION; 12 131 end; 12 132 12 133 /* END OF: rdc_end_.incl.pl1 * * * * * * * * * * * * * * * * */ 3143 3144 3145 else do; /* relative syntax function. */ 3146 go to RD_TOKEN_FCN(TOKEN_REQD.TYPE); 3147 3148 RD_TOKEN_FCN(1): STOKEN_FCN = name_32(); 3149 go to RD_TEST_RESULT; 3150 RD_TOKEN_FCN(2): STOKEN_FCN = name_24(); 3151 go to RD_TEST_RESULT; 3152 RD_TOKEN_FCN(3): STOKEN_FCN = name_comm_line(); 3153 go to RD_TEST_RESULT; 3154 RD_TOKEN_FCN(4): STOKEN_FCN = name_path(); 3155 go to RD_TEST_RESULT; 3156 RD_TOKEN_FCN(5): STOKEN_FCN = name_32_multi(); 3157 go to RD_TEST_RESULT; 3158 RD_TOKEN_FCN(6): STOKEN_FCN = name_user_id(); 3159 go to RD_TEST_RESULT; 3160 RD_TOKEN_FCN(7): STOKEN_FCN = access_class_ok(); 3161 go to RD_TEST_RESULT; 3162 RD_TOKEN_FCN(8): STOKEN_FCN = forms_type(); 3163 go to RD_TEST_RESULT; 3164 RD_TOKEN_FCN(9): STOKEN_FCN = forms_size_ok(); 3165 go to RD_TEST_RESULT; 3166 RD_TOKEN_FCN(10): STOKEN_FCN = forms_tty_char_ok(); 3167 go to RD_TEST_RESULT; 3168 3169 RD_TEST_RESULT: if STOKEN_FCN then go to RD_MATCH; 3170 else go to RD_NEXT_REDUCTION; 3171 end; 3172 3173 RD_MATCH: Ptoken = token.Pnext; 3174 RD_MATCH_NO_TOKEN: 3175 end; 3176 Ptoken = Pthis_token; 3177 go to RD_ACTION(NRED); 3178 3179 /* START OF: rdc_stack_fcns_.incl.pl1 * * * * * * */ 13 2 13 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 13 4 /* */ 13 5 /* N__a_m_e: rdc_stack_fcns_.incl.pl1 */ 13 6 /* */ 13 7 /* This include segment is used by compilers generated by the */ 13 8 /* reduction_compiler. It includes code for manipulating the */ 13 9 /* reduction label stack. */ 13 10 /* */ 13 11 /* S__t_a_t_u_s */ 13 12 /* */ 13 13 /* 0) Created: April, 1974 by G. C. Dixon */ 13 14 /* */ 13 15 /* * * * * * * * * * * * * * * * * * * * * * * */ 13 16 13 17 RD_STACK: if STACK_DEPTH > 0 then do; 13 18 NRED = STACK (STACK_DEPTH); 13 19 go to RD_TEST_REDUCTION; 13 20 end; 13 21 else 13 22 go to RD_NEXT_REDUCTION; 13 23 13 24 RD_STACK_POP: 13 25 if STACK_DEPTH > 0 then do; 13 26 NRED = STACK (STACK_DEPTH); 13 27 STACK_DEPTH = max (STACK_DEPTH-1, 0); 13 28 go to RD_TEST_REDUCTION; 13 29 end; 13 30 else 13 31 go to RD_NEXT_REDUCTION; 13 32 13 33 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 13 34 13 35 13 36 PUSH: procedure (N); /* invoked to push reduction number 'N' onto */ 13 37 /* the reduction stack. */ 13 38 dcl N fixed bin; 13 39 13 40 dcl (addr, dimension, length, null) 13 41 builtin; 13 42 13 43 dcl cu_$cl entry, 13 44 iox_$put_chars entry (ptr, ptr, fixed bin, fixed bin(35)), 13 45 iox_$error_output ptr ext static, 13 46 lex_error_ entry options(variable); 13 47 13 48 dcl brief_error char(4) varying initial ("") int static, 13 49 long_error char(234) varying int static init( 13 50 "An internal stack (the reduction stack) has overflowed. 13 51 The translation has failed. Contact translator maintenance 13 52 personnel for assistance. 13 53 Processing reduction: ^d 13 54 Reduction being stacked: ^d 13 55 Maximum stack depth: ^d"), 13 56 non_restart_error char(33) int static init ("Translation cannot be restarted. 13 57 "); 13 58 13 59 if STACK_DEPTH >= dimension (STACK, 1) then do; 13 60 call lex_error_ (0, "0"b, 4, 0, null, null, "11"b, long_error, brief_error, NRED, N, 13 61 dimension(STACK,1)); 13 62 get_to_cl: call cu_$cl(); 13 63 call iox_$put_chars (iox_$error_output, addr(non_restart_error), length(non_restart_error), 0); 13 64 go to get_to_cl; 13 65 end; /* stack overflow is a non-recoverable error. */ 13 66 else 13 67 STACK_DEPTH = STACK_DEPTH + 1; 13 68 STACK (STACK_DEPTH) = N; 13 69 13 70 end PUSH; 13 71 13 72 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 13 73 13 74 /* END OF: rdc_stack_fcns_.incl.pl1 * * * * * * */ 3179 3180 3181 3182 RD_ACTION(1): /* / */ 3183 call ERROR ( 1 ); 3184 return; /* / RETURN \ */ 3185 3186 RD_ACTION(2): /* / */ 3187 call LEX ( 2 ); 3188 call store_global_grace_time(); 3189 call NEXT_STMT(); 3190 NRED = 1; 3191 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3192 3193 RD_ACTION(3): /* / */ 3194 call ERROR ( 3 ); 3195 call NEXT_STMT(); 3196 NRED = 1; 3197 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3198 3199 RD_ACTION(4): /* / */ 3200 call LEX ( 2 ); 3201 call store_global_max_queues(); 3202 call NEXT_STMT(); 3203 NRED = 1; 3204 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3205 3206 RD_ACTION(5): /* / */ 3207 call ERROR ( 5 ); 3208 call NEXT_STMT(); 3209 NRED = 1; 3210 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3211 3212 RD_ACTION(6): /* / */ 3213 call LEX ( 2 ); 3214 call line_create_table_entry(); 3215 call LEX ( 2 ); 3216 NRED = 18; 3217 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3218 3219 RD_ACTION(7): /* / */ 3220 call ERROR ( 3 ); 3221 call LEX ( 2 ); 3222 call line_create_table_entry(); 3223 call NEXT_STMT(); 3224 NRED = 18; 3225 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3226 3227 RD_ACTION(8): /* / */ 3228 call LEX ( 2 ); 3229 call dev_create_table_entry(); 3230 call LEX ( 2 ); 3231 NRED = 29; 3232 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3233 3234 RD_ACTION(9): /* / */ 3235 call ERROR ( 3 ); 3236 call LEX ( 2 ); 3237 call dev_create_table_entry(); 3238 call NEXT_STMT(); 3239 NRED = 29; 3240 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3241 3242 RD_ACTION(10): /* / */ 3243 call LEX ( 2 ); 3244 call rqt_create_table_entry(); 3245 call LEX ( 2 ); 3246 NRED = 77; 3247 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3248 3249 RD_ACTION(11): /* / */ 3250 call ERROR ( 3 ); 3251 call LEX ( 2 ); 3252 call rqt_create_table_entry(); 3253 call NEXT_STMT(); 3254 NRED = 77; 3255 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3256 3257 RD_ACTION(12): /* / */ 3258 call LEX ( 2 ); 3259 call forms_create_group_entry(); 3260 call LEX ( 2 ); 3261 NRED = 119; 3262 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3263 3264 RD_ACTION(13): /* / */ 3265 call ERROR ( 3 ); 3266 call LEX ( 2 ); 3267 call forms_create_group_entry(); 3268 call NEXT_STMT(); 3269 NRED = 119; 3270 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3271 3272 RD_ACTION(14): /* / */ 3273 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3274 if token.Pnext ^= null ( ) then call statement_error ( ); 3275 return; /* / RETURN \ */ 3276 3277 RD_ACTION(15): /* / */ 3278 call ERROR ( 2 ); 3279 call NEXT_STMT(); 3280 NRED = 1; 3281 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3282 3283 RD_ACTION(16): /* / */ 3284 call ERROR ( 3 ); 3285 call NEXT_STMT(); 3286 NRED = 1; 3287 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3288 3289 RD_ACTION(17): /* / */ 3290 call ERROR ( 1 ); 3291 return; /* / RETURN \ */ 3292 3293 RD_ACTION(18): /* / */ 3294 call LEX ( 2 ); 3295 call line_save_comment(); 3296 call LEX ( 2 ); 3297 NRED = 18; 3298 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3299 3300 RD_ACTION(19): /* / */ 3301 call LEX ( 2 ); 3302 call line_save_comment(); 3303 call LEX ( 2 ); 3304 NRED = 18; 3305 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3306 3307 RD_ACTION(20): /* / */ 3308 call ERROR ( 3 ); 3309 call NEXT_STMT(); 3310 NRED = 18; 3311 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3312 3313 RD_ACTION(21): /* / */ 3314 call LEX ( 2 ); 3315 call line_save_channel_id(); 3316 call LEX ( 2 ); 3317 NRED = 18; 3318 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3319 3320 RD_ACTION(22): /* / */ 3321 call ERROR ( 3 ); 3322 call NEXT_STMT(); 3323 NRED = 18; 3324 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3325 3326 RD_ACTION(23): /* / */ 3327 call LEX ( 2 ); 3328 call line_save_att_desc(); 3329 call LEX ( 2 ); 3330 NRED = 18; 3331 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3332 3333 RD_ACTION(24): /* / */ 3334 call LEX ( 2 ); 3335 call line_save_att_desc(); 3336 call LEX ( 2 ); 3337 NRED = 18; 3338 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3339 3340 RD_ACTION(25): /* / */ 3341 call ERROR ( 3 ); 3342 call NEXT_STMT(); 3343 NRED = 18; 3344 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3345 3346 RD_ACTION(26): /* / */ 3347 call LEX ( 2 ); 3348 call line_save_device(); 3349 call LEX ( 2 ); 3350 NRED = 18; 3351 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3352 3353 RD_ACTION(27): /* / */ 3354 call ERROR ( 3 ); 3355 call NEXT_STMT(); 3356 NRED = 18; 3357 go to RD_TEST_REDUCTION; /* / line_stmts \ */ 3358 3359 RD_ACTION(28): /* / */ 3360 call line_validate_entry(); 3361 NRED = 1; 3362 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3363 3364 RD_ACTION(29): /* / */ 3365 call LEX ( 2 ); 3366 call dev_save_comment(); 3367 call LEX ( 2 ); 3368 NRED = 29; 3369 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3370 3371 RD_ACTION(30): /* / */ 3372 call LEX ( 2 ); 3373 call dev_save_comment(); 3374 call LEX ( 2 ); 3375 NRED = 29; 3376 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3377 3378 RD_ACTION(31): /* / */ 3379 call ERROR ( 3 ); 3380 call NEXT_STMT(); 3381 NRED = 29; 3382 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3383 3384 RD_ACTION(32): /* / */ 3385 call LEX ( 2 ); 3386 call dev_save_attach_method ( 1, ATTACH_TYPE_IOM ); 3387 call LEX ( 2 ); 3388 NRED = 29; 3389 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3390 3391 RD_ACTION(33): /* / */ 3392 call ERROR ( 3 ); 3393 call NEXT_STMT(); 3394 NRED = 29; 3395 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3396 3397 RD_ACTION(34): /* / */ 3398 call LEX ( 2 ); 3399 call dev_save_attach_method ( 1, ATTACH_TYPE_VARIABLE_LINE ); 3400 call LEX ( 2 ); 3401 NRED = 29; 3402 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3403 3404 RD_ACTION(35): /* / */ 3405 call LEX ( 2 ); 3406 call dev_save_attach_method ( 1, ATTACH_TYPE_TTY ); 3407 call LEX ( 2 ); 3408 NRED = 29; 3409 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3410 3411 RD_ACTION(36): /* / */ 3412 call ERROR ( 3 ); 3413 call NEXT_STMT(); 3414 NRED = 29; 3415 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3416 3417 RD_ACTION(37): /* / */ 3418 call LEX ( 2 ); 3419 call dev_save_attach_method ( 1, ATTACH_TYPE_DIAL ); 3420 call LEX ( 2 ); 3421 NRED = 29; 3422 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3423 3424 RD_ACTION(38): /* / */ 3425 call ERROR ( 3 ); 3426 call NEXT_STMT(); 3427 NRED = 29; 3428 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3429 3430 RD_ACTION(39): /* / */ 3431 call LEX ( 2 ); 3432 call dev_save_attach_method ( 2, CTL_ATTACH_TYPE_TTY ); 3433 call LEX ( 2 ); 3434 NRED = 29; 3435 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3436 3437 RD_ACTION(40): /* / */ 3438 call ERROR ( 3 ); 3439 call NEXT_STMT(); 3440 NRED = 29; 3441 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3442 3443 RD_ACTION(41): /* / */ 3444 call LEX ( 2 ); 3445 call dev_save_attach_method ( 2, CTL_ATTACH_TYPE_DIAL ); 3446 call LEX ( 2 ); 3447 NRED = 29; 3448 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3449 3450 RD_ACTION(42): /* / */ 3451 call ERROR ( 3 ); 3452 call NEXT_STMT(); 3453 NRED = 29; 3454 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3455 3456 RD_ACTION(43): /* / */ 3457 call LEX ( 2 ); 3458 call dev_save_attach_method ( 2, CTL_ATTACH_TYPE_MC ); 3459 call LEX ( 2 ); 3460 NRED = 29; 3461 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3462 3463 RD_ACTION(44): /* / */ 3464 call ERROR ( 3 ); 3465 call NEXT_STMT(); 3466 NRED = 29; 3467 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3468 3469 RD_ACTION(45): /* / */ 3470 call LEX ( 2 ); 3471 call dev_save_driver_module(); 3472 call LEX ( 2 ); 3473 NRED = 29; 3474 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3475 3476 RD_ACTION(46): /* / */ 3477 call ERROR ( 3 ); 3478 call NEXT_STMT(); 3479 NRED = 29; 3480 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3481 3482 RD_ACTION(47): /* / */ 3483 call LEX ( 2 ); 3484 call dev_save_head_sheet(); 3485 call LEX ( 2 ); 3486 NRED = 29; 3487 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3488 3489 RD_ACTION(48): /* / */ 3490 call ERROR ( 3 ); 3491 call NEXT_STMT(); 3492 NRED = 29; 3493 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3494 3495 RD_ACTION(49): /* / */ 3496 call LEX ( 2 ); 3497 call dev_save_tail_sheet(); 3498 call LEX ( 2 ); 3499 NRED = 29; 3500 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3501 3502 RD_ACTION(50): /* / */ 3503 call ERROR ( 3 ); 3504 call NEXT_STMT(); 3505 NRED = 29; 3506 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3507 3508 RD_ACTION(51): /* / */ 3509 call LEX ( 2 ); 3510 call dev_save_paper_type(); 3511 call LEX ( 2 ); 3512 NRED = 29; 3513 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3514 3515 RD_ACTION(52): /* / */ 3516 call LEX ( 2 ); 3517 call dev_save_paper_type(); 3518 call LEX ( 2 ); 3519 NRED = 29; 3520 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3521 3522 RD_ACTION(53): /* / */ 3523 call ERROR ( 3 ); 3524 call NEXT_STMT(); 3525 NRED = 29; 3526 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3527 3528 RD_ACTION(54): /* / */ 3529 call LEX ( 2 ); 3530 call dev_save_forms_validation(); 3531 call LEX ( 2 ); 3532 NRED = 29; 3533 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3534 3535 RD_ACTION(55): /* / */ 3536 call ERROR ( 3 ); 3537 call NEXT_STMT(); 3538 NRED = 29; 3539 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3540 3541 RD_ACTION(56): /* / */ 3542 call LEX ( 2 ); 3543 NRED = 72; 3544 go to RD_TEST_REDUCTION; /* / dev_process_default_form_string \ */ 3545 3546 RD_ACTION(57): /* / */ 3547 call LEX ( 2 ); 3548 call dev_save_font_dir(); 3549 call LEX ( 2 ); 3550 NRED = 29; 3551 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3552 3553 RD_ACTION(58): /* / */ 3554 call ERROR ( 3 ); 3555 call NEXT_STMT(); 3556 NRED = 29; 3557 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3558 3559 RD_ACTION(59): /* / */ 3560 call LEX ( 2 ); 3561 call dev_save_forms_table(); 3562 call LEX ( 2 ); 3563 NRED = 29; 3564 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3565 3566 RD_ACTION(60): /* / */ 3567 call ERROR ( 3 ); 3568 call NEXT_STMT(); 3569 NRED = 29; 3570 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3571 3572 RD_ACTION(61): /* / */ 3573 call LEX ( 2 ); 3574 call dev_save_args(); 3575 call LEX ( 2 ); 3576 NRED = 29; 3577 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3578 3579 RD_ACTION(62): /* / */ 3580 call LEX ( 2 ); 3581 call dev_save_args(); 3582 call LEX ( 2 ); 3583 NRED = 29; 3584 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3585 3586 RD_ACTION(63): /* / */ 3587 call ERROR ( 3 ); 3588 call NEXT_STMT(); 3589 NRED = 29; 3590 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3591 3592 RD_ACTION(64): /* / */ 3593 call LEX ( 2 ); 3594 call dev_create_minor_table_entry(); 3595 call NEXT_STMT(); 3596 NRED = 29; 3597 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3598 3599 RD_ACTION(65): /* / */ 3600 call ERROR ( 3 ); 3601 call LEX ( 2 ); 3602 call dev_create_minor_table_entry(); 3603 call NEXT_STMT(); 3604 NRED = 29; 3605 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3606 3607 RD_ACTION(66): /* / */ 3608 call LEX ( 2 ); 3609 call dev_save_minor_args(); 3610 call LEX ( 2 ); 3611 NRED = 29; 3612 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3613 3614 RD_ACTION(67): /* / */ 3615 call LEX ( 2 ); 3616 call dev_save_minor_args(); 3617 call LEX ( 2 ); 3618 NRED = 29; 3619 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3620 3621 RD_ACTION(68): /* / */ 3622 call ERROR ( 3 ); 3623 call NEXT_STMT(); 3624 NRED = 29; 3625 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3626 3627 RD_ACTION(69): /* / */ 3628 call LEX ( 2 ); 3629 call dev_save_default_type(); 3630 call LEX ( 2 ); 3631 NRED = 29; 3632 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3633 3634 RD_ACTION(70): /* / */ 3635 call ERROR ( 3 ); 3636 call NEXT_STMT(); 3637 NRED = 29; 3638 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3639 3640 RD_ACTION(71): /* / */ 3641 call dev_validate_entry(); 3642 NRED = 1; 3643 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3644 3645 RD_ACTION(72): /* / */ 3646 call PUSH(73); /* PUSH(dev_process_default_form_string1) */ 3647 NRED = 74; 3648 go to RD_TEST_REDUCTION; /* / build_temp_token_value \ */ 3649 3650 RD_ACTION(73): /* / */ 3651 call dev_save_default_form(); 3652 NRED = 29; 3653 go to RD_TEST_REDUCTION; /* / device_stmts \ */ 3654 3655 RD_ACTION(74): /* / */ 3656 temp_token_value = ""; 3657 temp_token_value_used = TRUE; 3658 go to RD_NEXT_REDUCTION; /* / \ */ 3659 3660 RD_ACTION(75): /* / */ 3661 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3662 go to RD_STACK_POP; /* / STACK_POP \ */ 3663 3664 RD_ACTION(76): /* / */ 3665 temp_token_value = temp_token_value || token_value; 3666 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3667 NRED = 75; 3668 go to RD_TEST_REDUCTION; /* / build_temp_token_value_loop \ */ 3669 3670 RD_ACTION(77): /* / */ 3671 call LEX ( 2 ); 3672 call rqt_save_comment(); 3673 call LEX ( 2 ); 3674 NRED = 77; 3675 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3676 3677 RD_ACTION(78): /* / */ 3678 call LEX ( 2 ); 3679 call rqt_save_comment(); 3680 call LEX ( 2 ); 3681 NRED = 77; 3682 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3683 3684 RD_ACTION(79): /* / */ 3685 call ERROR ( 3 ); 3686 call NEXT_STMT(); 3687 NRED = 77; 3688 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3689 3690 RD_ACTION(80): /* / */ 3691 call LEX ( 2 ); 3692 call rqt_save_driver_id(); 3693 call LEX ( 2 ); 3694 NRED = 77; 3695 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3696 3697 RD_ACTION(81): /* / */ 3698 call ERROR ( 3 ); 3699 call NEXT_STMT(); 3700 NRED = 77; 3701 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3702 3703 RD_ACTION(82): /* / */ 3704 call LEX ( 2 ); 3705 call rqt_save_accounting(); 3706 call LEX ( 2 ); 3707 NRED = 77; 3708 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3709 3710 RD_ACTION(83): /* / */ 3711 call ERROR ( 3 ); 3712 call NEXT_STMT(); 3713 NRED = 77; 3714 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3715 3716 RD_ACTION(84): /* / */ 3717 call LEX ( 2 ); 3718 call rqt_save_generic_type(); 3719 call LEX ( 2 ); 3720 NRED = 77; 3721 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3722 3723 RD_ACTION(85): /* / */ 3724 call ERROR ( 3 ); 3725 call NEXT_STMT(); 3726 NRED = 77; 3727 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3728 3729 RD_ACTION(86): /* / */ 3730 call LEX ( 2 ); 3731 call rqt_save_rqti_seg(); 3732 call LEX ( 2 ); 3733 NRED = 77; 3734 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3735 3736 RD_ACTION(87): /* / */ 3737 call ERROR ( 3 ); 3738 call NEXT_STMT(); 3739 NRED = 77; 3740 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3741 3742 RD_ACTION(88): /* / */ 3743 call LEX ( 2 ); 3744 call rqt_save_max_queues(); 3745 call LEX ( 2 ); 3746 NRED = 77; 3747 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3748 3749 RD_ACTION(89): /* / */ 3750 call ERROR ( 3 ); 3751 call NEXT_STMT(); 3752 NRED = 77; 3753 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3754 3755 RD_ACTION(90): /* / */ 3756 call LEX ( 2 ); 3757 call rqt_save_default_queue(); 3758 call LEX ( 2 ); 3759 NRED = 77; 3760 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3761 3762 RD_ACTION(91): /* / */ 3763 call ERROR ( 3 ); 3764 call NEXT_STMT(); 3765 NRED = 77; 3766 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3767 3768 RD_ACTION(92): /* / */ 3769 call LEX ( 2 ); 3770 call rqt_save_charge ( 1 ); 3771 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3772 NRED = 113; 3773 go to RD_TEST_REDUCTION; /* / rqt_save_charges \ */ 3774 3775 RD_ACTION(93): /* / */ 3776 call LEX ( 2 ); 3777 call rqt_save_charge ( 2 ); 3778 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3779 NRED = 113; 3780 go to RD_TEST_REDUCTION; /* / rqt_save_charges \ */ 3781 3782 RD_ACTION(94): /* / */ 3783 call LEX ( 2 ); 3784 call rqt_save_charge ( 3 ); 3785 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3786 NRED = 113; 3787 go to RD_TEST_REDUCTION; /* / rqt_save_charges \ */ 3788 3789 RD_ACTION(95): /* / */ 3790 call LEX ( 2 ); 3791 call rqt_save_forms_validation(); 3792 call LEX ( 2 ); 3793 NRED = 77; 3794 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3795 3796 RD_ACTION(96): /* / */ 3797 call ERROR ( 3 ); 3798 call NEXT_STMT(); 3799 NRED = 77; 3800 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3801 3802 RD_ACTION(97): /* / */ 3803 call LEX ( 2 ); 3804 NRED = 117; 3805 go to RD_TEST_REDUCTION; /* / rqt_process_default_form_string \ */ 3806 3807 RD_ACTION(98): /* / */ 3808 call LEX ( 2 ); 3809 call rqt_save_font_dir(); 3810 call LEX ( 2 ); 3811 NRED = 77; 3812 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3813 3814 RD_ACTION(99): /* / */ 3815 call ERROR ( 3 ); 3816 call NEXT_STMT(); 3817 NRED = 77; 3818 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3819 3820 RD_ACTION(100): /* / */ 3821 call LEX ( 2 ); 3822 call rqt_save_forms_table(); 3823 call LEX ( 2 ); 3824 NRED = 77; 3825 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3826 3827 RD_ACTION(101): /* / */ 3828 call ERROR ( 3 ); 3829 call NEXT_STMT(); 3830 NRED = 77; 3831 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3832 3833 RD_ACTION(102): /* / */ 3834 call LEX ( 2 ); 3835 call rqt_create_device_class_entry(); 3836 call NEXT_STMT(); 3837 NRED = 77; 3838 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3839 3840 RD_ACTION(103): /* / */ 3841 call ERROR ( 3 ); 3842 call LEX ( 2 ); 3843 call rqt_create_device_class_entry(); 3844 call NEXT_STMT(); 3845 NRED = 77; 3846 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3847 3848 RD_ACTION(104): /* / */ 3849 call LEX ( 2 ); 3850 call rqt_save_access ( 1 ); 3851 call NEXT_STMT(); 3852 NRED = 77; 3853 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3854 3855 RD_ACTION(105): /* / */ 3856 call ERROR ( 3 ); 3857 call NEXT_STMT(); 3858 NRED = 77; 3859 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3860 3861 RD_ACTION(106): /* / */ 3862 call LEX ( 2 ); 3863 call rqt_save_access ( 2 ); 3864 call NEXT_STMT(); 3865 NRED = 77; 3866 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3867 3868 RD_ACTION(107): /* / */ 3869 call ERROR ( 3 ); 3870 call NEXT_STMT(); 3871 NRED = 77; 3872 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3873 3874 RD_ACTION(108): /* / */ 3875 call LEX ( 2 ); 3876 call rqt_save_access ( 3 ); 3877 call NEXT_STMT(); 3878 NRED = 77; 3879 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3880 3881 RD_ACTION(109): /* / */ 3882 call ERROR ( 3 ); 3883 call NEXT_STMT(); 3884 NRED = 77; 3885 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3886 3887 RD_ACTION(110): /* / */ 3888 call LEX ( 2 ); 3889 call rqt_save_device(); 3890 call LEX ( 2 ); 3891 NRED = 77; 3892 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3893 3894 RD_ACTION(111): /* / */ 3895 call ERROR ( 3 ); 3896 call NEXT_STMT(); 3897 NRED = 77; 3898 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3899 3900 RD_ACTION(112): /* / */ 3901 call rqt_validate_entry(); 3902 NRED = 1; 3903 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3904 3905 RD_ACTION(113): /* / */ 3906 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3907 NRED = 113; 3908 go to RD_TEST_REDUCTION; /* / rqt_save_charges \ */ 3909 3910 RD_ACTION(114): /* / */ 3911 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3912 NRED = 77; 3913 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3914 3915 RD_ACTION(115): /* / */ 3916 call rqt_save_charge_continue(); 3917 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3918 NRED = 113; 3919 go to RD_TEST_REDUCTION; /* / rqt_save_charges \ */ 3920 3921 RD_ACTION(116): /* / */ 3922 NRED = 1; 3923 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 3924 3925 RD_ACTION(117): /* / */ 3926 call PUSH(118); /* PUSH(rqt_process_default_form_string1) */ 3927 NRED = 74; 3928 go to RD_TEST_REDUCTION; /* / build_temp_token_value \ */ 3929 3930 RD_ACTION(118): /* / */ 3931 call rqt_save_default_form(); 3932 NRED = 77; 3933 go to RD_TEST_REDUCTION; /* / rqt_stmts \ */ 3934 3935 RD_ACTION(119): /* / */ 3936 call LEX ( 2 ); 3937 call forms_create_element_entry(); 3938 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3939 NRED = 140; 3940 go to RD_TEST_REDUCTION; /* / save_forms_name_synonyms \ */ 3941 3942 RD_ACTION(120): /* / */ 3943 call LEX ( 2 ); 3944 call forms_save_comment(); 3945 call LEX ( 2 ); 3946 NRED = 119; 3947 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3948 3949 RD_ACTION(121): /* / */ 3950 call LEX ( 2 ); 3951 call forms_save_comment(); 3952 call LEX ( 2 ); 3953 NRED = 119; 3954 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3955 3956 RD_ACTION(122): /* / */ 3957 call ERROR ( 3 ); 3958 call NEXT_STMT(); 3959 NRED = 119; 3960 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3961 3962 RD_ACTION(123): /* / */ 3963 call LEX ( 2 ); 3964 call forms_save_type(); 3965 call LEX ( 2 ); 3966 NRED = 119; 3967 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3968 3969 RD_ACTION(124): /* / */ 3970 call ERROR ( 3 ); 3971 call NEXT_STMT(); 3972 NRED = 119; 3973 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3974 3975 RD_ACTION(125): /* / */ 3976 call LEX ( 2 ); 3977 call forms_save_uses_name(); 3978 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 3979 NRED = 145; 3980 go to RD_TEST_REDUCTION; /* / save_forms_uses_names \ */ 3981 3982 RD_ACTION(126): /* / */ 3983 call LEX ( 2 ); 3984 call forms_save_string_token(); 3985 call LEX ( 2 ); 3986 NRED = 119; 3987 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3988 3989 RD_ACTION(127): /* / */ 3990 call LEX ( 3 ); 3991 NRED = 119; 3992 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 3993 3994 RD_ACTION(128): /* / */ 3995 call LEX ( 2 ); 3996 forms_escape_string_index = 1; 3997 forms_escape_string_n ( * ) = 0; 3998 NRED = 150; 3999 go to RD_TEST_REDUCTION; /* / forms_char_string \ */ 4000 4001 RD_ACTION(129): /* / */ 4002 call LEX ( 2 ); 4003 call forms_save_size ( 1 ); 4004 call LEX ( 2 ); 4005 NRED = 119; 4006 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4007 4008 RD_ACTION(130): /* / */ 4009 call ERROR ( 3 ); 4010 call NEXT_STMT(); 4011 NRED = 119; 4012 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4013 4014 RD_ACTION(131): /* / */ 4015 call LEX ( 2 ); 4016 call forms_save_size ( 2 ); 4017 call LEX ( 2 ); 4018 NRED = 119; 4019 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4020 4021 RD_ACTION(132): /* / */ 4022 call ERROR ( 3 ); 4023 call NEXT_STMT(); 4024 NRED = 119; 4025 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4026 4027 RD_ACTION(133): /* / */ 4028 call LEX ( 2 ); 4029 call forms_save_size ( 3 ); 4030 call LEX ( 2 ); 4031 NRED = 119; 4032 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4033 4034 RD_ACTION(134): /* / */ 4035 call ERROR ( 3 ); 4036 call NEXT_STMT(); 4037 NRED = 119; 4038 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4039 4040 RD_ACTION(135): /* / */ 4041 call LEX ( 2 ); 4042 call forms_save_size ( 4 ); 4043 call LEX ( 2 ); 4044 NRED = 119; 4045 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4046 4047 RD_ACTION(136): /* / */ 4048 call ERROR ( 3 ); 4049 call NEXT_STMT(); 4050 NRED = 119; 4051 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4052 4053 RD_ACTION(137): /* / */ 4054 call LEX ( 2 ); 4055 call forms_save_size ( 5 ); 4056 call LEX ( 2 ); 4057 NRED = 119; 4058 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4059 4060 RD_ACTION(138): /* / */ 4061 call ERROR ( 3 ); 4062 call NEXT_STMT(); 4063 NRED = 119; 4064 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4065 4066 RD_ACTION(139): /* / */ 4067 call forms_validate_group(); 4068 NRED = 1; 4069 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 4070 4071 RD_ACTION(140): /* / */ 4072 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4073 NRED = 140; 4074 go to RD_TEST_REDUCTION; /* / save_forms_name_synonyms \ */ 4075 4076 RD_ACTION(141): /* / */ 4077 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4078 NRED = 119; 4079 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4080 4081 RD_ACTION(142): /* / */ 4082 call forms_add_syn_element_name(); 4083 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4084 NRED = 140; 4085 go to RD_TEST_REDUCTION; /* / save_forms_name_synonyms \ */ 4086 4087 RD_ACTION(143): /* / */ 4088 call ERROR ( 3 ); 4089 call forms_add_syn_element_name(); 4090 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4091 NRED = 140; 4092 go to RD_TEST_REDUCTION; /* / save_forms_name_synonyms \ */ 4093 4094 RD_ACTION(144): /* / */ 4095 NRED = 1; 4096 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 4097 4098 RD_ACTION(145): /* / */ 4099 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4100 NRED = 145; 4101 go to RD_TEST_REDUCTION; /* / save_forms_uses_names \ */ 4102 4103 RD_ACTION(146): /* / */ 4104 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4105 NRED = 119; 4106 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4107 4108 RD_ACTION(147): /* / */ 4109 call forms_save_uses_name_continue(); 4110 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4111 NRED = 145; 4112 go to RD_TEST_REDUCTION; /* / save_forms_uses_names \ */ 4113 4114 RD_ACTION(148): /* / */ 4115 call ERROR ( 3 ); 4116 call forms_save_uses_name_continue(); 4117 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4118 NRED = 145; 4119 go to RD_TEST_REDUCTION; /* / save_forms_uses_names \ */ 4120 4121 RD_ACTION(149): /* / */ 4122 NRED = 1; 4123 go to RD_TEST_REDUCTION; /* / BEGIN \ */ 4124 4125 RD_ACTION(150): /* / */ 4126 call append_token_value_string(); 4127 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4128 NRED = 150; 4129 go to RD_TEST_REDUCTION; /* / forms_string_item \ */ 4130 4131 RD_ACTION(151): /* / */ 4132 call insert_single_char ( ( token.Nvalue ) ); 4133 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4134 NRED = 150; 4135 go to RD_TEST_REDUCTION; /* / forms_string_item \ */ 4136 4137 RD_ACTION(152): /* / */ 4138 call forms_save_string(); 4139 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 4140 NRED = 119; 4141 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4142 4143 RD_ACTION(153): /* / */ 4144 call ERROR ( 3 ); 4145 call NEXT_STMT(); 4146 NRED = 119; 4147 go to RD_TEST_REDUCTION; /* / forms_stmts \ */ 4148 4149 RD_ACTION(154): /* / */ 4150 return; /* / RETURN \ */ 4151 4152 4153 end SEMANTIC_ANALYSIS; 4154 4155 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 4156 4157 dcl SPDL bit(1) aligned init ("0"b); 4158 /* off: This compiler parses a non-PUSH DOWN */ 4159 /* LANGUAGE. */ 4160 /* START OF: rdc_lex_.incl.pl1 * * * * * * * * * * * * * * * * */ 14 2 14 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 4 /* */ 14 5 /* N__a_m_e: rdc_lex_.incl.pl1 */ 14 6 /* */ 14 7 /* This include segment is used by compilers generated by the reduction_compiler. */ 14 8 /* It contains the LEX subroutine which is used to manipulate the pointer to the */ 14 9 /* "current" token, Pthis_token. */ 14 10 /* */ 14 11 /* E__n_t_r_y: LEX */ 14 12 /* */ 14 13 /* This entry makes the |_nth|-next (or -preceding) token the "current" token, where */ 14 14 /* _n is its positive (or negative) input argument. */ 14 15 /* */ 14 16 /* U__s_a_g_e */ 14 17 /* */ 14 18 /* call LEX(n); */ 14 19 /* */ 14 20 /* 1) n is the number of the token to be made the "current" token, relative to the */ 14 21 /* token identified by Pthis_token (the present "current" token). If n is */ 14 22 /* positive, the nth token following the "current" token made "current". If n */ 14 23 /* is negative, the nth token preceding the "current" token is made "current". */ 14 24 /* */ 14 25 /* S__t_a_t_u_s */ 14 26 /* */ 14 27 /* 0) Created by: G. C. Dixon in February, 1975 */ 14 28 /* */ 14 29 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 30 14 31 LEX: procedure (n); 14 32 14 33 dcl n fixed bin, 14 34 i fixed bin; 14 35 14 36 Ptoken = Pthis_token; /* do everything relative to "current" token. */ 14 37 if Ptoken = null then return; /* can't lex if token list exhausted. */ 14 38 if n >= 0 then do; /* new "current" token will follow present one. */ 14 39 do i = 1 to n while (token.Pnext ^= null); /* find new "current" token, taking care not to */ 14 40 Ptoken = token.Pnext; /* run off end of token list. */ 14 41 end; 14 42 if ^SPDL then if i <= n then Ptoken = null; /* if not in 'PUSH DOWN LANGUAGE' mode, allow */ 14 43 /* running off end of token list. */ 14 44 end; 14 45 else /* new "current" token precedes present one. */ 14 46 do i = -1 to n by -1 while (token.Plast ^= null); 14 47 Ptoken = token.Plast; 14 48 end; 14 49 Pthis_token = Ptoken; /* simple wasn't it. */ 14 50 14 51 end LEX; 14 52 14 53 /* END OF: rdc_lex_.incl.pl1 * * * * * * * * * * * * * * * * */ 4160 4161 4162 /* START OF: rdc_error_.incl.pl1 * * * * * * * * * * * * * * * * */ 15 2 15 3 dcl MERROR_SEVERITY fixed bin init (0), /* Severity of highest-severity error. */ 15 4 SERROR_CONTROL bit(2) init ("00"b),/* Global switches control error message format. */ 15 5 SERROR_PRINTED (dimension (error_control_table,1)) 15 6 bit(1) unaligned init ((dimension (error_control_table,1))(1)"0"b), 15 7 /* Array bit is on if corresponding error message */ 15 8 /* in error_control_table has already been printed*/ 15 9 MIN_PRINT_SEVERITY fixed bin init (0), /* Mimimum severity message that will be printed */ 15 10 PRINT_SEVERITY_CONTROL bit(2) init ("11"b);/* Action if severity < MIN_PRINT_SEVERITY */ 15 11 15 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 13 /* */ 15 14 /* N__a_m_e: rdc_error_.incl.pl1 */ 15 15 /* */ 15 16 /* This include segment is used by compilers generated by the reduction_compiler. */ 15 17 /* It defines a procedure which the compilers can use to print error messages. */ 15 18 /* */ 15 19 /* E__n_t_r_y: ERROR */ 15 20 /* */ 15 21 /* Given an error number, this procedure prints a corresponding error message. */ 15 22 /* The message is stored in a compiler-defined error_control_table, along with an integer */ 15 23 /* which specifies the severity level of the error, and a switch which specifies whether */ 15 24 /* the source statement in which the error occurred (if any) should be printed after the */ 15 25 /* error message. The printing of the error message may be supressed for all messages */ 15 26 /* having a severity less than a specified (MIN_PRINT_SEVERITY) value. The ERROR */ 15 27 /* procedure calls the lex_error_ subroutine to perform the formatting and printing of */ 15 28 /* the error message. */ 15 29 /* */ 15 30 /* U__s_a_g_e */ 15 31 /* */ 15 32 /* call ERROR (error_number); */ 15 33 /* */ 15 34 /* 1) error_number is the index of one of the structures in the error_control_table */ 15 35 /* which defines the error message to be printed. */ 15 36 /* */ 15 37 /* N__o_t_e_s */ 15 38 /* */ 15 39 /* The format of the error_control_table is shown below. */ 15 40 /* */ 15 41 /* dcl 1 error_control_table (2) aligned internal static, */ 15 42 /* 2 severity fixed bin(17) unaligned init (2,3), */ 15 43 /* 2 Soutput_stmt bit(1) unaligned initial ("0"b,"1"b), */ 15 44 /* 2 message char(252) varying initial ( */ 15 45 /* "The reduction source segment does not contain any reductions.", */ 15 46 /* "Reduction label '^a' is invalid."), */ 15 47 /* 2 brief_message char(100) varying initial ( */ 15 48 /* "", "'^a'"); */ 15 49 /* */ 15 50 /* error_control_table is an array of structures, with one array element per error. */ 15 51 /* Each structure contains: a severity level for the error; a switch which specifies */ 15 52 /* whether the source statement being processed should be output after the error message; */ 15 53 /* the long form of the error message text; and the brief form of the error message text.*/ 15 54 /* The dimension of the error_control_table array of structures, and the lengths of */ 15 55 /* message (long message) and brief_message (brief message), are compiler-defined. */ 15 56 /* structures and the lengths of the message and brief_message are compiler-defined. */ 15 57 /* The only requirement is that the messages be 256 characters or less in length. */ 15 58 /* (Remember that the longest character string which can be used in an initial attribute */ 15 59 /* is 254 characters in length.) */ 15 60 /* */ 15 61 /* The severity number causes the error message to be preceded by a herald which */ 15 62 /* includes one of the following prefixes: */ 15 63 /* */ 15 64 /* _s_e_v _p_r_e_f_i_x _e_x_p_l_a_n_a_t_i_o_n */ 15 65 /* 0 = COMMENT - this is a comment. */ 15 66 /* 1 = WARNING - a possible error has been detected. The */ 15 67 /* compiler will still generate an object segment. */ 15 68 /* 2 = ERROR - a probable error has been detected. The */ 15 69 /* compiler will still generate an object segment. */ 15 70 /* 3 = FATAL ERROR - an error has been detected which is so severe */ 15 71 /* that no object segment will be generated. */ 15 72 /* 4 = TRANSLATOR ERROR - an error has been detected in the operation of */ 15 73 /* the compiler or translator. No object segment */ 15 74 /* will be generated. */ 15 75 /* */ 15 76 /* Full error messages are of the form: */ 15 77 /* */ 15 78 /* _p_r_e_f_i_x _e_r_r_o_r__n_u_m_b_e_r, SEVERITY _s_e_v_e_r_i_t_y IN STATEMENT _n OF LINE _m */ 15 79 /* _t_e_x_t__o_f__e_r_r_o_r__m_e_s_s_a_g_e */ 15 80 /* SOURCE: */ 15 81 /* _s_o_u_r_c_e__s_t_a_t_e_m_e_n_t */ 15 82 /* */ 15 83 /* If only one statement appears in line _m, then "STATEMENT _n OF" is omitted. */ 15 84 /* If the source statement has been printed in a previous error message, it is omitted. */ 15 85 /* */ 15 86 /* The reduction compiler declares a bit string, SERROR_CONTROL, which controls the */ 15 87 /* text of an error message. The compiler may set this bit string, as shown below. */ 15 88 /* */ 15 89 /* SERROR_CONTROL _m_e_a_n_i_n_g */ 15 90 /* "00"b the first time a particular error occurs, the long message */ 15 91 /* is printed; the brief message is used in subsequent */ 15 92 /* occurrences of that error. */ 15 93 /* "10"b or "11"b the long error message is always used. */ 15 94 /* "01"b the brief error message is always used. */ 15 95 /* The initial value of SERROR_CONTROL is "00"b. */ 15 96 /* */ 15 97 /* The reduction_compiler creates a declaration for SERROR_PRINTED, an array */ 15 98 /* of switches (one per error). The switch corresponding to a particular error is */ 15 99 /* turned on whenever the error message is printed. This allows lex_error_ to detect */ 15 100 /* subsequent occurrences of that same error. */ 15 101 /* */ 15 102 /* The reduction_compiler creates MERROR_SEVERITY, a fixed bin(17) integer */ 15 103 /* in which the severity of the highest-severity error encountered is maintained. */ 15 104 /* The compiler may reference this integer. */ 15 105 /* */ 15 106 /* The reduction_compiler creates MIN_PRINT_SEVERITY, a fixed bin (17) integer */ 15 107 /* which controls the printing of error messages by the ERROR procedure. */ 15 108 /* Errors having a severity less than MIN_PRINT_SEVERITY will not cause lex_error_ to be */ 15 109 /* and no error will be printed. The behaviour of the ERROR procedure for such errors */ 15 110 /* is controlled by the value of PRINT_SEVERITY_CONTROL, described below. */ 15 111 /* The compiler may set the value of MIN_PRINT_SEVERITY; its initial value is 0. */ 15 112 15 113 /* */ 15 114 /* The reduction_compiler declares a bit string, PRINT_SEVERITY_CONTROL, which */ 15 115 /* controls the updating of MERROR_SEVERITY and SERROR_PRINTED when the severity of an */ 15 116 /* error is less than MIN_PRINT_SEVERITY. In such cases, the lex_error_ procedure is not */ 15 117 /* invoked, and the ERROR procedure must update these values as though lex_error_ were */ 15 118 /* called. The compiler may set this bit string, as shown below. */ 15 119 /* */ 15 120 /* PRINT_SEVERITY_CONTROL _m_e_a_n_i_n_g */ 15 121 /* "00"b update neither SERROR_PRINTED nor MERROR_SEVERITY. */ 15 122 /* "01"b update SERROR_PRINTED to reflect the error. */ 15 123 /* "10"b update MERROR_SEVERITY to reflect the error severity. */ 15 124 /* "11"b update SERROR_PRINTED and MERROR_SEVERITY appropriately. */ 15 125 /*The initial value of PRINT_SEVERITY_CONTROL is "11"b. */ 15 126 /* */ 15 127 /* The ERROR procedure is simple to use, but it does limit the flexibility of the */ 15 128 /* error message. A compiler action routine can output more flexible error messages */ 15 129 /* by calling lex_error_ directly. See lex_error_ documentation for more details. */ 15 130 /* */ 15 131 /* S__t_a_t_u_s */ 15 132 /* */ 15 133 /* 0) Created: April, 1974 by G. C. Dixon */ 15 134 /* 1) Modified: April, 1982 by E. N. Kittlitz. Added MIN_PRINT_SEVERITY, */ 15 135 /* PRINT_SEVERITY_CONTROL. */ 15 136 /* */ 15 137 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 138 15 139 ERROR: procedure (Nerror); 15 140 15 141 dcl Nerror fixed bin; /* Number of the error which was detected. (In) */ 15 142 15 143 dcl Pstmt ptr, 15 144 1 erring_token aligned based (Perring_token) like token, 15 145 Perring_token ptr, 15 146 erring_token_value char(erring_token.Lvalue) based (erring_token.Pvalue); 15 147 15 148 dcl (max, null) builtin; 15 149 15 150 dcl lex_error_ entry options (variable); 15 151 15 152 15 153 if error_control_table.severity(Nerror) < MIN_PRINT_SEVERITY then do; /* don't print */ 15 154 if PRINT_SEVERITY_CONTROL & "1"b then /* update MERROR_SEVERITY */ 15 155 MERROR_SEVERITY = max (MERROR_SEVERITY, error_control_table.severity(Nerror)); 15 156 if PRINT_SEVERITY_CONTROL & "01"b then /* update SERROR_PRINTED */ 15 157 SERROR_PRINTED(Nerror) = "1"b; 15 158 return; 15 159 end; 15 160 Perring_token = Pthis_token; /* address the current erring_token. */ 15 161 if error_control_table.Soutput_stmt(Nerror) then 15 162 if Perring_token = null then 15 163 Pstmt = null; 15 164 else 15 165 Pstmt = erring_token.Pstmt; /* address the statement descriptor. */ 15 166 else 15 167 Pstmt = null; 15 168 if Perring_token = null then 15 169 call lex_error_ (Nerror, SERROR_PRINTED(Nerror), (error_control_table.severity(Nerror)), 15 170 MERROR_SEVERITY, Pstmt, Perring_token, SERROR_CONTROL, (error_control_table.message(Nerror)), 15 171 (error_control_table.brief_message(Nerror))); 15 172 else 15 173 call lex_error_ (Nerror, SERROR_PRINTED(Nerror), (error_control_table.severity(Nerror)), 15 174 MERROR_SEVERITY, Pstmt, Perring_token, SERROR_CONTROL, (error_control_table.message(Nerror)), 15 175 (error_control_table.brief_message(Nerror)), erring_token_value, erring_token_value, erring_token_value); 15 176 15 177 end ERROR; 15 178 15 179 /* END OF: rdc_error_.incl.pl1 * * * * * * * * * * * * * * * * */ 4162 4163 4164 /* START OF: rdc_next_stmt_.incl.pl1 * * * * * * */ 16 2 16 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 16 4 /* */ 16 5 /* N__a_m_e: rdc_next_stmt_.incl.pl1 */ 16 6 /* */ 16 7 /* This include segment is used by compilers generated by the */ 16 8 /* reduction_compiler. It includes a procedure which shifts the */ 16 9 /* compilation process to the next source statement. */ 16 10 /* */ 16 11 /* S__t_a_t_u_s */ 16 12 /* */ 16 13 /* 0) Created: April, 1974 by G. C. Dixon */ 16 14 /* */ 16 15 /* * * * * * * * * * * * * * * * * * * * * * * */ 16 16 16 17 16 18 NEXT_STMT: procedure; /* invoked to begin parsing the next statement of */ 16 19 /* the input tokens. */ 16 20 16 21 dcl null builtin, 16 22 Ssearching bit(1) aligned; 16 23 16 24 Ptoken = Pthis_token; /* make sure these pointers are the same. */ 16 25 Pstmt = token.Pstmt; /* address "current" statement's descriptor. */ 16 26 Ssearching = "1"b; /* start scanning forward for next statement. */ 16 27 do while (Ssearching & token.Pnext ^= null); 16 28 Ptoken = token.Pnext; 16 29 if token.Pstmt = Pstmt then; 16 30 else Ssearching = "0"b; 16 31 end; 16 32 if token.Pstmt = Pstmt then /* if there is no next statement, and */ 16 33 if SPDL then /* in PUSH DOWN LANGUAGE mode, can't run off */ 16 34 Ptoken = Ptoken; /* end of input list. */ 16 35 else Ptoken, Pthis_token = null; /* otherwise, input list exhausted. */ 16 36 else Pthis_token = Ptoken; /* normally, next statement exists and Ptoken */ 16 37 /* points to its 1st _n_o_n-__d_e_l_e_t_e_d token. */ 16 38 16 39 end NEXT_STMT; 16 40 16 41 /* END OF: rdc_next_stmt_.incl.pl1 * * * * * * */ 4164 4165 4166 end iod_tables_compiler; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/23/89 1403.6 iod_tables_compiler.pl1 >spec>install>1099>iod_tables_compiler.pl1 2872 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 2873 2 11/09/88 0759.7 device_class.incl.pl1 >ldd>include>device_class.incl.pl1 2874 3 11/09/88 0759.7 iod_forms_info_tab.incl.pl1 >ldd>include>iod_forms_info_tab.incl.pl1 2875 4 11/09/88 0759.7 iod_constants.incl.pl1 >ldd>include>iod_constants.incl.pl1 2876 5 11/09/88 0759.7 iod_device_tab.incl.pl1 >ldd>include>iod_device_tab.incl.pl1 2877 6 11/09/88 0759.7 iod_line_tab.incl.pl1 >ldd>include>iod_line_tab.incl.pl1 2878 7 11/09/88 0759.7 iod_tables_hdr.incl.pl1 >ldd>include>iod_tables_hdr.incl.pl1 2879 8 11/09/88 0759.7 q_group_tab.incl.pl1 >ldd>include>q_group_tab.incl.pl1 2880 9 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 2886 10 04/18/75 1242.4 rdc_start_.incl.pl1 >ldd>include>rdc_start_.incl.pl1 10-25 11 04/18/75 1242.4 lex_descriptors_.incl.pl1 >ldd>include>lex_descriptors_.incl.pl1 3143 12 03/17/86 1534.3 rdc_end_.incl.pl1 >ldd>include>rdc_end_.incl.pl1 3179 13 04/18/75 1242.4 rdc_stack_fcns_.incl.pl1 >ldd>include>rdc_stack_fcns_.incl.pl1 4160 14 04/18/75 1242.4 rdc_lex_.incl.pl1 >ldd>include>rdc_lex_.incl.pl1 4162 15 08/15/83 1511.7 rdc_error_.incl.pl1 >ldd>include>rdc_error_.incl.pl1 4164 16 04/18/75 1242.4 rdc_next_stmt_.incl.pl1 >ldd>include>rdc_next_stmt_.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. ALL_LOWERCASE defined char(26) packed unaligned dcl 2260 ref 2287 ALL_UPPERCASE defined char(26) packed unaligned dcl 2261 ref 2287 ALL_VALID_CHARS_AND_NUMERIC 006130 constant char(62) initial packed unaligned dcl 412 ref 1224 1229 1234 1239 1244 2287 2287 2287 2287 ATTACH_TYPE_DIAL constant fixed bin(17,0) initial dcl 4-15 set ref 1586 1617 3419* ATTACH_TYPE_IOM constant fixed bin(17,0) initial dcl 4-15 set ref 3386* ATTACH_TYPE_TTY constant fixed bin(17,0) initial dcl 4-15 set ref 3406* ATTACH_TYPE_VARIABLE_LINE constant fixed bin(17,0) initial dcl 4-15 set ref 815 1590 3399* BACKSPACE 036475 constant char(1) initial dcl 10-99 ref 12-113 BREAKS 000010 internal static varying char(35) dcl 415 set ref 689* 690* 699* 2275 CODE 001743 automatic fixed bin(35,0) dcl 10-33 set ref 12-106* 12-107 CTL_ATTACH_TYPE_DIAL constant fixed bin(17,0) initial dcl 4-21 set ref 1601 1620 3445* CTL_ATTACH_TYPE_MC constant fixed bin(17,0) initial dcl 4-21 set ref 1605 3458* CTL_ATTACH_TYPE_TTY constant fixed bin(17,0) initial dcl 4-21 set ref 3432* CTL_CHARS 000022 internal static varying char(32) dcl 416 set ref 688* 689 690* 699* DIRECTION 001746 automatic fixed bin(17,0) initial dcl 2888 set ref 12-62 2888* FACTOR_CENTIMETERS constant fixed bin(17,0) initial dcl 3-87 ref 2225 FACTOR_INCHES constant fixed bin(17,0) initial dcl 3-87 ref 2223 FACTOR_LPI constant fixed bin(17,0) initial dcl 3-87 ref 2229 2234 FACTOR_POINTS constant fixed bin(17,0) initial dcl 3-87 ref 2227 FALSE constant bit(1) initial packed unaligned dcl 417 ref 429 548 550 606 669 837 840 850 911 1489 1514 1541 1664 1878 1900 1996 2366 2424 FORM based fixed bin(17,0) level 2 packed packed unaligned dcl 10-48 ref 12-65 12-70 12-123 FORMS_TYPE_STRINGS 006056 constant char(11) initial array packed unaligned dcl 3-65 ref 2246 2246 2246 2249 I based fixed bin(17,0) level 2 in structure "TOKEN_REQD_STRING" packed packed unaligned dcl 10-48 in procedure "SEMANTIC_ANALYSIS" ref 12-126 I 001744 automatic fixed bin(17,0) dcl 10-33 in procedure "SEMANTIC_ANALYSIS" set ref 12-62* 12-63 12-79* IFIRST based fixed bin(17,0) level 3 packed packed unaligned dcl 10-48 ref 12-62 12-73 12-79 12-79 ILAST 0(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 10-48 ref 12-62 12-73 12-79 IODT_VERSION_5 006050 constant char(8) initial packed unaligned dcl 7-49 ref 1153 L 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 10-48 ref 12-127 LEXCTL 000033 internal static varying char(80) dcl 424 set ref 690* 699* LEXDLM 000060 internal static varying char(80) dcl 425 set ref 690* 699* LEX_CHARS 006126 constant char(6) initial packed unaligned dcl 418 ref 690 690 690 690 690 690 690 690 690 690 699 699 699 699 699 699 699 699 699 699 LEX_COMMENT_CLOSE defined char(2) packed unaligned dcl 419 set ref 690* 699* LEX_COMMENT_OPEN defined char(2) packed unaligned dcl 420 set ref 690* 699* LEX_QUOTE_CLOSE defined char(1) packed unaligned dcl 422 set ref 690* 699* LEX_QUOTE_OPEN defined char(1) packed unaligned dcl 423 set ref 690* 699* LEX_STATEMENT_DELIMITER defined char(1) packed unaligned dcl 421 set ref 690* 699* LTOKEN_REQD_VALUE 001732 automatic fixed bin(18,0) dcl 10-33 set ref 12-127* 12-128 Lvalue 4 based fixed bin(18,0) level 2 in structure "stmt" dcl 11-40 in procedure "iodtc" ref 711 Lvalue 4 based fixed bin(18,0) level 2 in structure "token" dcl 11-68 in procedure "iodtc" ref 1219 1221 1224 1229 1234 1239 1244 1297 1401 1404 1404 1416 1427 1429 1429 1438 1440 1440 1454 1460 1468 1477 1526 1529 1529 1542 1586 1586 1588 1601 1601 1603 1636 1675 1676 1758 1760 1833 1850 1850 1863 1866 1866 1879 1968 1970 1980 2017 2018 2028 2028 2050 2051 2090 2091 2093 2095 2115 2197 2214 2214 2221 2222 2246 2271 2271 2271 2274 2275 2275 2275 2279 2279 2280 2281 2286 2287 2311 2314 2314 2345 2345 2346 2346 2377 2380 2380 2389 2674 2675 12-92 12-92 12-92 12-92 12-106 12-106 12-113 12-113 12-128 3664 Lvalue 4 based fixed bin(18,0) level 2 in structure "erring_token" dcl 15-143 in procedure "ERROR" ref 15-172 15-172 15-172 15-172 15-172 15-172 MERROR_SEVERITY 000513 automatic fixed bin(17,0) initial dcl 15-3 set ref 721 726 734 736 15-3* 2726* 2732* 2732 15-154* 15-154 15-168* 15-172* MIN_PRINT_SEVERITY 000515 automatic fixed bin(17,0) initial dcl 15-3 set ref 601* 15-3* 2726 15-153 N parameter fixed bin(17,0) dcl 13-38 set ref 13-36 13-60* 13-68 NRED 001733 automatic fixed bin(17,0) dcl 10-33 set ref 12-52* 12-55* 12-55 12-58 3177 13-18* 13-26* 3190* 3196* 3203* 3209* 3216* 3224* 3231* 3239* 3246* 3254* 3261* 3269* 3280* 3286* 3297* 3304* 3310* 3317* 3323* 3330* 3337* 3343* 3350* 3356* 3361* 3368* 3375* 3381* 3388* 3394* 3401* 3408* 3414* 3421* 3427* 3434* 3440* 3447* 3453* 3460* 3466* 3473* 3479* 3486* 3492* 3499* 3505* 3512* 3519* 3525* 3532* 3538* 3543* 3550* 3556* 3563* 3569* 3576* 3583* 3589* 3596* 3604* 3611* 3618* 3624* 3631* 3637* 3642* 3647* 3652* 3667* 3674* 3681* 3687* 3694* 3700* 3707* 3713* 3720* 3726* 3733* 3739* 3746* 3752* 3759* 3765* 3772* 3779* 3786* 3793* 3799* 3804* 3811* 3817* 3824* 3830* 3837* 3845* 3852* 3858* 3865* 3871* 3878* 3884* 3891* 3897* 3902* 3907* 3912* 3918* 3921* 3927* 3932* 3939* 3946* 3953* 3959* 3966* 3972* 3979* 3986* 3991* 3998* 4005* 4011* 4018* 4024* 4031* 4037* 4044* 4050* 4057* 4063* 4068* 4073* 4078* 4084* 4091* 4094* 4100* 4105* 4111* 4118* 4121* 4128* 4134* 4140* 4146* 13-60* NUMBER 001745 automatic fixed bin(35,0) dcl 10-33 set ref 12-106* 12-108 Nerror parameter fixed bin(17,0) dcl 15-141 set ref 15-139 15-153 15-154 15-156 15-161 15-168* 15-168 15-168 15-168 15-168 15-172* 15-172 15-172 15-172 15-172 Nvalue 10 based fixed bin(35,0) level 3 packed packed unaligned dcl 11-68 set ref 1372 1382 1382 1384 2007 2007 2009 2104 2104 2106 2251* 2253* 2303* 2314* 2503 12-101 12-108* 4131 PAPER_TYPE_CONTINUOUS constant fixed bin(17,0) initial dcl 4-26 ref 1758 PAPER_TYPE_SINGLE constant fixed bin(17,0) initial dcl 4-26 ref 1760 PRED 001734 automatic pointer dcl 10-33 set ref 12-58* 12-62 12-62 12-73 12-73 12-79 12-79 12-79 PRINT_SEVERITY_CONTROL 000516 automatic bit(2) initial packed unaligned dcl 15-3 set ref 15-3* 15-154 15-156 PTOKEN_REQD 001736 automatic pointer dcl 10-33 set ref 12-63* 12-65 12-65 12-70 12-71 12-123 12-126 12-127 3146 PTOKEN_REQD_VALUE 001740 automatic pointer dcl 10-33 set ref 12-126* 12-128 Perring_token 002036 automatic pointer dcl 15-143 set ref 15-160* 15-161 15-164 15-168 15-168* 15-172* 15-172 15-172 15-172 15-172 15-172 15-172 15-172 15-172 15-172 Plast 2 based pointer level 2 packed packed unaligned dcl 11-68 ref 14-45 14-47 Pnext 1 based pointer level 2 packed packed unaligned dcl 11-68 ref 12-79 3173 3272 3274 3660 3666 3771 3778 3785 3905 3910 3917 3938 3978 4071 4076 4083 4090 4098 4103 4110 4117 4127 4133 4139 14-39 14-40 16-27 16-28 Pstmt 002034 automatic pointer dcl 15-143 in procedure "ERROR" set ref 15-161* 15-164* 15-166* 15-168* 15-172* Pstmt 5 based pointer level 2 in structure "token" packed packed unaligned dcl 11-68 in procedure "iodtc" ref 2709 16-25 16-29 16-32 Pstmt 5 based pointer level 2 in structure "erring_token" packed packed unaligned dcl 15-143 in procedure "ERROR" ref 15-164 Pstmt 000506 automatic pointer dcl 11-40 in procedure "iodtc" set ref 710* 711 711 16-25* 16-29 16-32 Pthis_token 000504 automatic pointer dcl 10-23 set ref 699* 2710 12-60 3176 3272 3272* 3660 3660* 3666 3666* 3771 3771* 3778 3778* 3785 3785* 3905 3905* 3910 3910* 3917 3917* 3938 3938* 3978 3978* 4071 4071* 4076 4076* 4083 4083* 4090 4090* 4098 4098* 4103 4103* 4110 4110* 4117 4117* 4127 4127* 4133 4133* 4139 4139* 14-36 14-49* 15-160 16-24 16-35* 16-36* Ptoken 000510 automatic pointer dcl 11-68 set ref 1219 1221 1224 1224 1229 1229 1234 1234 1239 1239 1244 1244 1296 1297 1372 1382 1382 1384 1401 1401 1404 1404 1404 1416 1416 1427 1429 1429 1429 1438 1440 1440 1440 1454 1454 1460 1460 1468 1468 1477 1477 1526 1526 1529 1529 1529 1542 1542 1586 1586 1586 1588 1588 1601 1601 1601 1603 1603 1636 1675 1675 1676 1676 1758 1758 1760 1760 1833 1833 1850 1850 1850 1863 1863 1866 1866 1866 1879 1879 1968 1968 1970 1970 1980 2007 2007 2009 2017 2017 2018 2018 2028 2028 2028 2050 2050 2051 2051 2090 2090 2091 2091 2093 2093 2095 2095 2104 2104 2106 2115 2115 2197 2197 2214 2214 2214 2221 2221 2222 2222 2246 2246 2251 2253 2271 2271 2271 2271 2271 2271 2274 2275 2275 2275 2275 2275 2275 2279 2279 2279 2280 2280 2281 2281 2286 2287 2287 2303 2311 2314 2314 2314 2314 2345 2345 2345 2346 2346 2346 2377 2377 2380 2380 2380 2389 2389 2503 2674 2675 2675 2709 12-60* 12-64 12-73 12-79 12-86 12-92 12-92 12-92 12-92 12-92 12-92 12-92 12-101 12-104 12-106 12-106 12-106 12-108 12-113 12-113 12-113 12-113 12-118 12-124 12-128 12-128 3173* 3173 3176* 3272* 3274 3660* 3664 3664 3666* 3771* 3778* 3785* 3905* 3910* 3917* 3938* 3978* 4071* 4076* 4083* 4090* 4098* 4103* 4110* 4117* 4127* 4131 4133* 4139* 14-36* 14-37 14-39 14-40* 14-40 14-42* 14-45 14-47* 14-47 14-49 16-24* 16-25 16-27 16-28* 16-28 16-29 16-32 16-32* 16-32 16-35* 16-36 Pvalue 3 based pointer level 2 in structure "token" packed packed unaligned dcl 11-68 in procedure "iodtc" ref 1224 1229 1234 1239 1244 1296 1401 1404 1416 1429 1440 1454 1460 1468 1477 1526 1529 1542 1586 1588 1601 1603 1675 1676 1758 1760 1833 1850 1863 1866 1879 1968 1970 2017 2018 2028 2050 2051 2090 2091 2093 2095 2115 2197 2214 2221 2222 2246 2271 2271 2275 2275 2275 2279 2280 2281 2287 2314 2345 2346 2377 2380 2389 2675 12-92 12-92 12-106 12-113 12-128 3664 Pvalue 3 based pointer level 2 in structure "stmt" packed packed unaligned dcl 11-40 in procedure "iodtc" ref 711 Pvalue 3 based pointer level 2 in structure "erring_token" packed packed unaligned dcl 15-143 in procedure "ERROR" ref 15-172 15-172 15-172 RED based structure level 1 dcl 10-48 REDUCTION based structure array level 1 packed packed unaligned dcl 2893 set ref 12-58 REDUCTIONS 005465 constant fixed bin(17,0) initial array packed unaligned dcl 2893 set ref 12-58 R_ACCESS 006261 constant bit(3) initial packed unaligned dcl 1-11 set ref 621* 632* S 11 based structure level 3 packed packed unaligned dcl 11-68 SERROR_CONTROL 000514 automatic bit(2) initial packed unaligned dcl 15-3 set ref 549* 582* 585* 15-3* 2726* 15-168* 15-172* SERROR_PRINTED 000515 automatic bit(1) initial array packed unaligned dcl 15-3 set ref 15-3* 2726* 2733* 15-156* 15-168* 15-172* SIZE_FACTORS 006052 constant float bin(27) initial array dcl 3-84 ref 2234 2236 SPDL 000512 automatic bit(1) initial dcl 4157 set ref 4157* 12-73 14-42 16-32 STACK 001747 automatic fixed bin(17,0) array dcl 2889 set ref 13-18 13-26 13-59 13-60 13-60 13-68* STACK_DEPTH 001761 automatic fixed bin(17,0) initial dcl 2889 set ref 13-17 13-18 13-24 13-26 13-27* 13-27 2889* 13-59 13-66* 13-66 13-68 STOKEN_FCN 001742 automatic bit(1) dcl 10-33 set ref 3148* 3150* 3152* 3154* 3156* 3158* 3160* 3162* 3164* 3166* 3169 Soutput_stmt 0(18) 000000 constant bit(1) initial array level 2 packed packed unaligned dcl 2740 ref 15-161 Ssearching 002046 automatic bit(1) dcl 16-21 set ref 16-26* 16-27 16-30* TERM_FILE_TERM 006046 constant bit(3) initial packed unaligned dcl 9-14 set ref 750* 770* TERM_FILE_TRUNC_BC_TERM 006045 constant bit(3) initial packed unaligned dcl 9-15 set ref 758* TOKEN_BAD constant bit(1) initial packed unaligned dcl 426 ref 1249 2231 2250 2283 2297 2311 TOKEN_GOOD constant bit(1) initial packed unaligned dcl 427 ref 1224 1229 1234 1239 1244 2213 2245 2278 2307 TOKEN_REQD based structure level 2 in structure "RED" packed packed unaligned dcl 10-48 in procedure "SEMANTIC_ANALYSIS" TOKEN_REQD based structure level 1 dcl 10-48 in procedure "SEMANTIC_ANALYSIS" TOKEN_REQD_STRING based structure level 1 dcl 10-48 TOKEN_REQD_VALUE based char packed unaligned dcl 10-48 ref 12-128 TOKEN_REQUIREMENT based structure array level 1 packed packed unaligned dcl 3055 set ref 12-63 TOKEN_REQUIREMENTS 004731 constant fixed bin(17,0) initial array packed unaligned dcl 3055 set ref 12-63 TOKEN_STRINGS based char(496) dcl 3134 set ref 12-126 TOKEN_STRING_ARRAYS 004534 constant char(100) initial array dcl 3134 set ref 12-126 TRACING 000106 internal static bit(1) initial dcl 2883 set ref 550* 604* 606* 696 713 718 12-50* 12-50 TRUE constant bit(1) initial packed unaligned dcl 428 ref 604 608 693 828 836 841 847 851 892 910 912 1482 1590 1605 1801 1809 1953 1961 2033 2093 2095 2153 2175 2426 2432 2627 2733 3657 TYPE 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 10-48 ref 12-65 12-71 3146 TYPE_FONT_DESC constant fixed bin(17,0) initial dcl 3-70 ref 2457 2577 TYPE_FONT_NAME constant fixed bin(17,0) initial dcl 3-70 ref 2478 2614 TYPE_FONT_SIZE constant fixed bin(17,0) initial dcl 3-70 ref 2457 2586 TYPE_HOLES constant fixed bin(17,0) initial dcl 3-70 ref 2457 2602 TYPE_LINE_DESC constant fixed bin(17,0) initial dcl 3-70 ref 2457 2595 TYPE_ORIENTATION constant fixed bin(17,0) initial dcl 3-70 ref 2457 2568 TYPE_POSTAMBLE constant fixed bin(17,0) initial dcl 3-70 ref 2478 2622 TYPE_PREAMBLE constant fixed bin(17,0) initial dcl 3-70 ref 2478 2619 TYPE_SPECIAL constant fixed bin(17,0) initial dcl 3-70 ref 2470 2609 TYPE_USES constant fixed bin(17,0) initial dcl 3-70 ref 2487 2512 2563 2654 a_value parameter fixed bin(17,0) dcl 2301 ref 2299 2303 accounting 17 based structure level 2 packed packed unaligned dcl 8-28 set ref 1937* 2130* 2133* acl_info_ptr 000106 automatic pointer dcl 440 set ref 534* 754 754* 756* 1089* 1159* 1161* addr builtin function dcl 399 in procedure "iodtc" ref 656 659 825 862 871 887 922 924 941 974 1038 1038 1050 1057 1058 1101 1101 1106 1106 1112 1112 1118 1118 1124 1124 1130 1130 1138 1138 1155 1157 1277 1287 1305 1310 1412 1537 1788 1817 1874 2183 2352 2536 2653 2719 addr builtin function dcl 13-40 in procedure "PUSH" ref 13-63 13-63 addr builtin function dcl 10-92 in procedure "SEMANTIC_ANALYSIS" ref 12-58 12-58 12-63 12-63 12-126 12-126 addrel builtin function dcl 399 ref 1168 1287 2352 after builtin function dcl 399 ref 1359 1676 2018 2051 2054 2137 already_called 000105 internal static bit(1) initial packed unaligned dcl 429 set ref 687 693* arg based char packed unaligned dcl 441 set ref 562 564* 569* 571* 582 582 585 585 588 588 590* 595* 597* 604 604 606 606 608 608 612* arg_count 000100 automatic fixed bin(17,0) dcl 2695 set ref 2721* 2722 arg_lens 000101 automatic fixed bin(21,0) array dcl 2696 set ref 2718* 2723* 2726 2726 2726 2726 2726 2726 2726 2726 2726 2726 2726 2726 arg_ptrs 000110 automatic pointer array dcl 2697 set ref 2719* 2723* 2726 2726 2726 2726 2726 2726 2726 2726 2726 2726 2726 2726 2732 2733 argc 000110 automatic fixed bin(17,0) dcl 442 set ref 542* 552 560 589 argl 000111 automatic fixed bin(21,0) dcl 443 set ref 561* 562 564 564 569 569 571 571 582 582 585 585 588 588 590 590 594* 595 595 597 597 604 604 606 606 608 608 612 612 argp 000112 automatic pointer dcl 444 set ref 561* 562 564 569 571 582 582 585 585 588 588 590 594* 595 597 604 604 606 606 608 608 612 args 40 based structure level 2 in structure "idte" packed packed unaligned dcl 5-29 in procedure "iodtc" set ref 1566* args 12 based structure level 2 in structure "mdte" packed packed unaligned dcl 5-64 in procedure "iodtc" set ref 1748* argx 000114 automatic fixed bin(17,0) dcl 445 set ref 560* 561* 589 593* 593 594* asc_mnemonic 001530 automatic char(3) packed unaligned dcl 2262 set ref 2287* 2288 2289 2290 2291 2293 asc_value 005735 constant char(3) initial array packed unaligned dcl 2265 ref 2292 2292 2293 att_desc 17 based structure level 2 packed packed unaligned dcl 6-25 set ref 1431* attach_name 7 based char(32) level 2 in structure "idte" dcl 5-29 in procedure "iodtc" set ref 1543* 1588* attach_name 11 based char(32) array level 3 in structure "iod_device_tab" dcl 5-23 in procedure "iodtc" set ref 1617 attach_type 21 based fixed bin(17,0) array level 3 in structure "iod_device_tab" dcl 5-23 in procedure "iodtc" set ref 815 1617 attach_type 17 based fixed bin(17,0) level 2 in structure "idte" dcl 5-29 in procedure "iodtc" set ref 1553* 1580 1581 1589* 1783 authorization_bits 000116 automatic bit(72) dcl 446 set ref 1850* 1925 1927 1929 before builtin function dcl 399 ref 901 958 1358 1675 2017 2050 2055 bin builtin function dcl 399 ref 2271 2271 2275 2275 bit_count 000120 automatic fixed bin(24,0) dcl 447 set ref 621* 626 699 699 1158* 1159* brief_error 000110 internal static varying char(4) initial dcl 13-48 set ref 13-60* brief_message 40 000000 constant varying char(36) initial array level 2 dcl 2740 ref 2726 15-168 15-172 c 001713 automatic char(1) packed unaligned dcl 2672 set ref 2675* 2676 2676 cdt_mgr_$find_cdt_channel 000220 constant entry external dcl 362 ref 1454 cdtp 000122 automatic pointer dcl 448 set ref 534* 632* 770 770* 772* 1453 1454* chan_id 7 based char(32) level 2 dcl 6-25 set ref 1417* 1458 1460* 1491 channel_id 001052 automatic fixed bin(17,0) dcl 1449 set ref 1454* char builtin function dcl 399 ref 562 charge_type 005766 constant char(11) initial array packed unaligned dcl 1946 set ref 1950* 1956* 1958* chars 1 based char level 2 packed packed unaligned dcl 7-39 set ref 659 1155 1318 1342 cleanup 000100 stack reference condition dcl 403 ref 537 clock_ 000222 constant entry external dcl 363 ref 1152 cn 000432 automatic structure level 1 dcl 486 set ref 860* 921* code 000124 automatic fixed bin(35,0) dcl 449 set ref 542* 543 544* 561* 569* 570 571* 577* 578 594* 595* 596 611* 612* 621* 623* 632* 633 634* 639* 640 641* 681* 683* 699* 704 705* 766* 999* 1000 1019* 1020 1089* 1090 1091* 1159* 1160 1454* 1455 1850* 1852 2214* 2220 2221 2222 2314* 2315 2721* 2723* collate builtin function dcl 399 ref 688 688 com_err_ 000224 constant entry external dcl 364 ref 544 564 571 590 597 612 623 627 634 641 683 705 734 1091 com_err_$suppress_name 000226 constant entry external dcl 365 ref 553 comment 10 based structure array level 2 in structure "forms_groups" packed packed unaligned dcl 484 in procedure "iodtc" set ref 2410* comment 6 based structure level 2 in structure "qgte" packed packed unaligned dcl 8-28 in procedure "iodtc" set ref 1985* comment 6 based structure level 2 in structure "mdte" packed packed unaligned dcl 5-64 in procedure "iodtc" set ref 1648* comment 1 based structure level 2 in structure "element_common" packed packed unaligned dcl 3-22 in procedure "iodtc" set ref 2405* comment 6 based structure level 2 in structure "lte" packed packed unaligned dcl 6-25 in procedure "iodtc" set ref 1442* comment 6 based structure level 2 in structure "idte" packed packed unaligned dcl 5-29 in procedure "iodtc" set ref 1643* convert builtin function dcl 399 ref 2221 convert_authorization_$from_string 000230 constant entry external dcl 366 ref 1850 copy_ptr 000126 automatic pointer dcl 450 set ref 534* 1101* 1102 1103 1106* 1108 1109 1112* 1114 1115 1118* 1120 1121 1124* 1126 1127 1130* 1134 1135 1138* 1140 1141 1157* 1158 ctl_attach_name 22 based char(32) array level 3 in structure "iod_device_tab" dcl 5-23 in procedure "iodtc" set ref 1620 ctl_attach_name 20 based char(32) level 2 in structure "idte" dcl 5-29 in procedure "iodtc" set ref 1543* 1603* ctl_attach_type 32 based fixed bin(17,0) array level 3 in structure "iod_device_tab" dcl 5-23 in procedure "iodtc" set ref 1620 ctl_attach_type 30 based fixed bin(17,0) level 2 in structure "idte" dcl 5-29 in procedure "iodtc" set ref 1553* 1595 1596 1604* cu_$arg_count 000232 constant entry external dcl 367 ref 542 2721 cu_$arg_ptr 000234 constant entry external dcl 368 ref 561 594 2723 cu_$cl 000326 constant entry external dcl 13-43 ref 13-62 currentsize builtin function dcl 399 ref 2560 2566 2575 2584 2593 2600 2607 2612 2617 2620 2623 cv_dec_check_ 000236 constant entry external dcl 369 in procedure "iodtc" ref 595 cv_dec_check_ 000324 constant entry external dcl 10-96 in procedure "SEMANTIC_ANALYSIS" ref 12-106 cv_float_ 000240 constant entry external dcl 370 ref 2214 cv_oct_check_ 000242 constant entry external dcl 371 ref 2314 data_offset_ptr parameter pointer dcl 1351 ref 1349 1354 date_time_compiled 2 based fixed bin(71,0) level 2 dcl 7-23 set ref 1152* dcte based structure level 1 dcl 2-27 set ref 2184* dctep 000452 automatic pointer dcl 2-25 set ref 668* 887* 888 890 891 901 906 910 941* 942 1050* 1052 1054 1055 1055 1055 1901* 1915 1915 1915 1925 1927 1929 2028 2033 2161 2161 2163 2163 2163 2165 2165 2165 2167 2183* 2184 2188 2189 2189 2189 2192 2199 dctp 000450 automatic pointer dcl 2-19 set ref 651* 886 887 934 941 1050 1126 1127* 1129 1129 1130 1130 1130 1130 1131 1131 1149 2179 2179 2180 2183 2183 2185 2187 2200 debug 000130 automatic bit(1) packed unaligned dcl 451 set ref 548* 608* 696 713 718 722 727 729 default_dev_class 10 based fixed bin(17,0) level 2 dcl 5-64 set ref 926* 939* 941 1822* default_device_class_defined 000131 automatic bit(1) packed unaligned dcl 452 set ref 1878* 2175* 2193 2200 default_form 145 based structure level 2 in structure "qgte" packed packed unaligned dcl 8-28 in procedure "iodtc" set ref 1038 1038 1997* 1999* default_form 7 based structure level 2 in structure "mdte" packed packed unaligned dcl 5-64 in procedure "iodtc" set ref 1665* 1667* default_generic_queue 30 based fixed bin(1,0) level 2 dcl 8-28 set ref 1895* 2092* default_minor_device_defined 000132 automatic bit(1) packed unaligned dcl 453 set ref 669* 1513 1514* 1541* 1809* 1829 1836 default_print_defined 000133 automatic bit(1) packed unaligned dcl 454 set ref 669* 1079 2093* default_punch_defined 000134 automatic bit(1) packed unaligned dcl 455 set ref 669* 1080 2095* default_queue 42 based fixed bin(17,0) level 2 dcl 8-28 set ref 979 980* 982* 984 1895* 2005 2009* default_type 6270 based structure array level 3 packed packed unaligned dcl 492 set ref 921 1828* dev_class_tab based structure level 1 dcl 2-20 set ref 1126* 1126 dev_class_tab_offset 12 based fixed bin(18,0) level 2 dcl 7-23 set ref 1149* dev_id based char(24) level 2 in structure "mdte" dcl 5-64 in procedure "iodtc" set ref 872 962 1060 1060 1646* 1660* 1684* 1745* 1791 1793* 1835* 1835 dev_id based char(24) level 2 in structure "idte" dcl 5-29 in procedure "iodtc" set ref 833* 863 1059 1542* 1564* 1581* 1583* 1596* 1598* 1626* 1641* 1660* 1684* 1699* 1708* 1716* 1724* 1732* 1745* 1755* 1767* 1781* 1783* 1791 1791* 1797* 1829 dev_id 2 based char(24) array level 3 in structure "iod_device_tab" dcl 5-23 in procedure "iodtc" set ref 814 849* 958 1526 device_class_forms 32040 based bit(360) level 2 packed packed unaligned dcl 492 set ref 676* 2153* device_index 6267 based fixed bin(17,0) array level 3 dcl 492 set ref 858* 865* 867* 873* 894 895 910 device_list 21 based bit(360) level 2 dcl 2-27 set ref 888 890 891* 910* 942 1052 2028 2033* 2167 2192* device_name 6252 based structure array level 3 packed packed unaligned dcl 492 set ref 860 device_or_terminal parameter fixed bin(17,0) dcl 1572 ref 1570 1579 1581 1596 device_tab_offset 10 based fixed bin(18,0) level 2 dcl 7-23 set ref 1146* dimension builtin function dcl 13-40 in procedure "PUSH" ref 13-59 13-60 13-60 dimension builtin function dcl 399 in procedure "iodtc" ref 15-3 15-3 divide builtin function dcl 399 ref 699 699 driver_id 7 based char(32) level 2 dcl 8-28 set ref 1880* 2047 2058* 2127 2127* 2134 2137 driver_module 31 based structure level 2 packed packed unaligned dcl 5-29 set ref 1701* dummy_string 000127 automatic char(1) packed unaligned dcl 2706 set ref 2719 dupe_string_loc 000772 automatic fixed bin(17,0) dcl 1270 set ref 1318* 1319 1325 element_common based structure level 1 dcl 3-22 set ref 2359* 2560 element_data_block 1 based fixed bin(35,0) array level 2 dcl 3-12 set ref 1132* element_index 001676 automatic fixed bin(17,0) dcl 2635 in procedure "forms_validate_group" set ref 2650* 2652 2653 2662* element_index 000100 automatic fixed bin(17,0) dcl 2529 in procedure "forms_scan_for_element_name" set ref 2534* 2535 2536 2542* 2544 element_name 000101 automatic char(32) packed unaligned dcl 2530 set ref 2538* 2539 element_offset 001562 automatic fixed bin(17,0) dcl 2335 set ref 2344* 2345* element_words 001666 automatic fixed bin(17,0) dcl 2552 set ref 2560* 2566* 2575* 2584* 2593* 2600* 2607* 2612* 2617* 2620* 2623* 2626 entries 2 based structure array level 2 in structure "q_group_tab" dcl 8-22 in procedure "iodtc" set ref 924 974 1124 1124 1874 entries 2 based structure array level 2 in structure "minor_device_tab" dcl 5-58 in procedure "iodtc" set ref 871 922 1057 1118 1118 1788 1817 entries 2 based structure array level 2 in structure "line_tab" dcl 6-19 in procedure "iodtc" set ref 825 1106 1106 1412 entries 2 based structure array level 2 in structure "iod_device_tab" dcl 5-23 in procedure "iodtc" set ref 862 1058 1112 1112 1537 entries 2 based structure array level 2 in structure "dev_class_tab" dcl 2-20 in procedure "iodtc" set ref 887 941 1050 1130 1130 2183 erring_token based structure level 1 dcl 15-143 erring_token_value based char packed unaligned dcl 15-143 set ref 15-172* 15-172* 15-172* error_control_table 000000 constant structure array level 1 dcl 2740 ref 15-3 15-3 error_device_name 000635 automatic char(32) packed unaligned dcl 794 set ref 898* 899* 899 908* error_entry_type 000645 automatic char(32) packed unaligned dcl 795 set ref 902* 905* 908* error_entry_type_id 000655 automatic char(32) packed unaligned dcl 796 set ref 901* 906* 906 908* error_num based fixed bin(17,0) dcl 2698 set ref 2726 2726* 2726 2726 2726 2726 2732 2733 error_statement_no 000634 automatic fixed bin(17,0) dcl 793 set ref 895* 897* 908* 930* 943* 950* 965 965* 967* error_string 000135 automatic varying char(128) dcl 456 set ref 677* error_string_names 005777 constant char(16) initial array packed unaligned dcl 1907 set ref 1918* error_table_$bad_conversion 000244 external static fixed bin(35,0) dcl 372 set ref 597* error_table_$bad_opt 000246 external static fixed bin(35,0) dcl 373 ref 611 error_table_$noarg 000250 external static fixed bin(35,0) dcl 374 set ref 590* error_table_$too_many_args 000252 external static fixed bin(35,0) dcl 375 set ref 564* error_table_$zero_length_seg 000254 external static fixed bin(35,0) dcl 376 set ref 627* escape_string based structure level 2 in structure "holes_element" packed packed unaligned dcl 3-42 in procedure "iodtc" escape_string based structure level 2 in structure "font_name_element" packed packed unaligned dcl 3-44 in procedure "iodtc" set ref 2483* 2485* escape_string based structure level 2 in structure "font_size_element" packed packed unaligned dcl 3-38 in procedure "iodtc" escape_string based structure level 2 in structure "orientation_element" packed packed unaligned dcl 3-29 in procedure "iodtc" set ref 2465* 2467* escape_string based structure level 2 in structure "line_element" packed packed unaligned dcl 3-40 in procedure "iodtc" escape_string based structure level 2 in structure "font_element" packed packed unaligned dcl 3-36 in procedure "iodtc" expand_pathname_$add_suffix 000256 constant entry external dcl 377 ref 569 factors based fixed bin(17,0) array level 2 packed packed unaligned dcl 3-29 set ref 2429* 2435* fb35 000176 automatic fixed bin(35,0) dcl 457 set ref 595* 596 596 601 fep 000456 automatic pointer dcl 3-21 set ref 668* 2326 2326 2327 2327 2346 2353 2353 2356* 2359 2360 2361 2362 2362 2364 2364 2393* 2402 2403 2403 2405 2426 2428 2429 2432 2434 2435 2438 2457 2457 2457 2457 2457 2463 2465 2467 2470 2471 2473 2475 2478 2478 2478 2481 2483 2485 2487 2490 2498 2499 2503 2510 2510 2512 2513 2517 2517 2518 2518 2519 2519 2554 2558 2559 2560 2563 2564 2564 2566 2568 2569 2569 2571 2571 2573 2573 2575 2577 2578 2578 2580 2580 2582 2582 2584 2586 2587 2587 2589 2589 2591 2591 2593 2595 2596 2596 2598 2598 2600 2602 2603 2603 2603 2605 2605 2607 2609 2610 2610 2612 2614 2615 2615 2617 2619 2620 2622 2623 first_char 145 based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1885* first_char 31 based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1545* first_char 12 based fixed bin(18,0) level 3 in structure "mdte" packed packed unsigned unaligned dcl 5-64 in procedure "iodtc" set ref 1824* first_char parameter fixed bin(18,0) level 2 in structure "target" packed packed unsigned unaligned dcl 1262 in procedure "store_string_functions" set ref 1321* 1325* first_char 32 based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1545* first_char 33 based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1545* first_char 7 based fixed bin(18,0) level 3 in structure "mdte" packed packed unsigned unaligned dcl 5-64 in procedure "iodtc" set ref 1824* first_char 17 based fixed bin(18,0) level 3 in structure "lte" packed packed unsigned unaligned dcl 6-25 in procedure "iodtc" set ref 1418* first_char 1 based fixed bin(18,0) level 3 in structure "element_common" packed packed unsigned unaligned dcl 3-22 in procedure "iodtc" set ref 2364* 2403 first_char 146 based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1885* first_char 143 based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1885* first_char parameter fixed bin(18,0) level 2 in structure "source_offsets" packed packed unsigned unaligned dcl 1338 in procedure "return_string" ref 1342 first_char 17 based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1885* first_char 144 based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1885* first_char 10 based fixed bin(18,0) array level 3 in structure "forms_groups" packed packed unsigned unaligned dcl 484 in procedure "iodtc" set ref 2390* 2408 first_char 40 based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1545* first_dev_class 147 based fixed bin(17,0) level 2 dcl 8-28 set ref 926 926 934 1049 1895* 1911 2025 2123 2152 2185 2185* first_element_index 11 based fixed bin(17,0) array level 2 packed packed unaligned dcl 484 set ref 1036 2344 2355* 2392* 2646 2650 first_minor 41 based fixed bin(17,0) level 2 dcl 5-29 set ref 865 865 870 1553* 1656 1679 1741 1777 1787 1819 1819* first_name 6252 based char(24) array level 4 in structure "misc_data" packed packed unaligned dcl 492 in procedure "iodtc" set ref 898 2021 2036* first_name 000432 automatic char(24) level 2 in structure "cn" dcl 486 in procedure "iodtc" set ref 863 925 951 1675* 1690 2017* 2021 2036 first_name 6270 based char(24) array level 4 in structure "misc_data" packed packed unaligned dcl 492 in procedure "iodtc" set ref 920 1684 1690* fixed builtin function dcl 399 ref 1145 1146 1147 1148 1149 1150 1151 1158 1168 fnp_sw 001053 automatic bit(1) dcl 1450 set ref 1454* font_dir 146 based structure level 2 in structure "qgte" packed packed unaligned dcl 8-28 in procedure "iodtc" set ref 2074* font_dir 37 based structure level 2 in structure "idte" packed packed unaligned dcl 5-29 in procedure "iodtc" set ref 1718* font_element based structure level 1 dcl 3-36 ref 2584 font_name_element based structure level 1 dcl 3-44 set ref 2617 font_size_element based structure level 1 dcl 3-38 ref 2593 forms_element_validated 000201 automatic bit(1) packed unaligned dcl 460 set ref 669* 2366* 2555 2627* forms_elements based fixed bin(35,0) array dcl 482 set ref 1132 2352 2536 2653 forms_elements_ptr 000426 automatic pointer dcl 481 set ref 656* 1132 2352 2536 2653 forms_escape_string_index 30504 based fixed bin(17,0) level 2 dcl 492 set ref 1278 2686 2687* 2687 3996* forms_escape_string_n 30505 based fixed bin(8,0) array level 2 packed packed unaligned dcl 492 set ref 1277 2686* 3997* forms_groups based structure array level 1 packed packed unaligned dcl 484 set ref 1133 forms_groups_ptr 000430 automatic pointer dcl 483 set ref 654* 656 1030 1036 1133 2344 2355 2377 2389 2390 2390 2392 2408 2408 2410 2646 2647 2650 forms_info_tab_offset 14 based fixed bin(18,0) level 2 dcl 7-23 set ref 1150* forms_size_info 000177 automatic float bin(27) dcl 458 set ref 2234* 2236* 2428 2434 forms_size_type 000200 automatic fixed bin(17,0) dcl 459 set ref 2215* 2223* 2225* 2227* 2229* 2234 2234 2236 2429 2435 forms_table 35 based structure level 2 in structure "idte" packed packed unaligned dcl 5-29 in procedure "iodtc" set ref 1726* forms_table 143 based structure level 2 in structure "qgte" packed packed unaligned dcl 8-28 in procedure "iodtc" set ref 1029* 2082* forms_validation 36 based structure level 2 in structure "idte" packed packed unaligned dcl 5-29 in procedure "iodtc" set ref 1710* forms_validation 144 based structure level 2 in structure "qgte" packed packed unaligned dcl 8-28 in procedure "iodtc" set ref 2066* full_name 000540 automatic char(32) packed unaligned dcl 785 set ref 958* 962* 962 965* 967* 967* 1054* 1055* 1055 1062* full_name2 000550 automatic char(32) packed unaligned dcl 785 set ref 951* 954* 954 965* 967* 967* 1059* 1060 1060* 1060 1062* generic_type 20 based char(32) level 2 dcl 8-28 set ref 1880* 1956 2088 2090* 2140 get_temp_segments_ 000260 constant entry external dcl 378 ref 639 get_wdir_ 000262 constant entry external dcl 379 ref 1088 got_dupe 001642 automatic bit(1) packed unaligned dcl 2445 in procedure "forms_save_string" set ref 2455* 2463* 2471* 2481* 2490 got_dupe 001632 automatic bit(1) packed unaligned dcl 2422 in procedure "forms_save_size" set ref 2424* 2426* 2432* 2438 grace_time 4 based fixed bin(71,0) level 2 dcl 7-23 set ref 665* 1073 1370 1372* group2 7 based structure level 2 packed packed unaligned dcl 11-68 groups based structure array level 2 dcl 3-12 set ref 1133* 1138 1138 hbound builtin function dcl 399 ref 988 1008 2246 2249 2292 head_sheet 32 based structure level 2 packed packed unaligned dcl 5-29 set ref 1734* height based float bin(27) level 2 in structure "line_element" packed packed unaligned dcl 3-40 in procedure "iodtc" ref 2596 height based float bin(27) level 2 in structure "holes_element" packed packed unaligned dcl 3-42 in procedure "iodtc" ref 2603 height based float bin(27) level 2 in structure "orientation_element" packed packed unaligned dcl 3-29 in procedure "iodtc" set ref 2426 2428* 2569 height based float bin(27) level 2 in structure "font_size_element" packed packed unaligned dcl 3-38 in procedure "iodtc" ref 2587 height based float bin(27) level 2 in structure "font_element" packed packed unaligned dcl 3-36 in procedure "iodtc" ref 2578 holes_element based structure level 1 dcl 3-42 ref 2607 i 000126 automatic fixed bin(17,0) dcl 2699 in procedure "statement_error" set ref 2722* 2723* 2723 2723* i 001702 automatic fixed bin(17,0) dcl 2637 in procedure "forms_validate_group" set ref 2655* 2656 2656 2658 2658* i 001712 automatic fixed bin(17,0) dcl 2671 in procedure "append_token_value_string" set ref 2674* 2675* i 000202 automatic fixed bin(17,0) dcl 461 in procedure "iodtc" set ref 805* 814 815 817* 824* 825* 847* 848 849 851* 859* 860 860 865 867 873* 886* 887 902* 919* 920 921 921 922 942 959* 973* 974* 1401* 1401* 1404 1468* 1468* 1471 1472 1476 1477 1482 1526* 1526* 1529 1616* 1617 1617 1620 1620* 1787* 1788 1801* 1863* 1863* 1866 2021* 2021 2021* 2028 2033 2034 2035 2036 2037 2152* 2153* 2246* 2246* 2249 2253 2345* 2346 2346 2377* 2377* 2380 2389 2390 2390 2392 i 000111 automatic fixed bin(17,0) dcl 2531 in procedure "forms_scan_for_element_name" set ref 2537* 2538* i 002022 automatic fixed bin(17,0) dcl 14-33 in procedure "LEX" set ref 14-39* 14-42 14-45* i 001531 automatic fixed bin(17,0) dcl 2263 in procedure "forms_tty_char_ok" set ref 2280* 2281 2281* 2283 2284 2292* 2293 2293* id based char(32) level 2 in structure "dcte" dcl 2-27 in procedure "iodtc" set ref 906 1055 1055 2199* id 2 based char(32) array level 3 in structure "dev_class_tab" dcl 2-20 in procedure "iodtc" set ref 934 idte based structure level 1 dcl 5-29 set ref 1540* idtep 000462 automatic pointer dcl 5-28 set ref 668* 833 862* 863 865 865 870 870 1058* 1059 1537* 1540 1542 1543 1543 1545 1545 1545 1545 1545 1545 1545 1545 1553 1553 1553 1553 1553 1564 1564 1566 1580 1581 1581 1583 1588 1589 1595 1596 1596 1598 1603 1604 1626 1641 1641 1643 1656 1660 1679 1684 1698 1699 1701 1708 1708 1710 1716 1716 1718 1724 1724 1726 1732 1732 1734 1741 1745 1755 1755 1758 1760 1767 1767 1769 1777 1781 1781 1783 1783 1787 1787 1790 1791 1791 1797 1797 1819 1819 1821 1829 idtp 000460 automatic pointer dcl 5-22 set ref 649* 806 814 815 849 861 862 958 1058 1075 1108 1109* 1111 1111 1112 1112 1112 1112 1113 1113 1146 1526 1526 1529 1536 1536 1537 1537 1590 1605 1616 1617 1617 1620 1620 1823 ifitp 000454 automatic pointer dcl 3-11 set ref 653* 655 657 1030 1033 1132 1132 1133 1133 1134 1135* 1137 1137 1138 1138 1138 1138 1139 1139 1150 2344 2352 2353 2355 2355 2377 2380 2386 2386 2408 2408 2410 2626 2626 2640 2646 2647 2650 index builtin function dcl 399 in procedure "iodtc" ref 828 841 847 851 892 912 1318 2275 2280 2281 index based fixed bin(35,0) array level 3 in structure "uses_element" packed packed unaligned dcl 3-52 in procedure "iodtc" set ref 2519* 2656* 2658 index_blocks based structure array level 2 packed packed unaligned dcl 3-52 initiate_file_ 000264 constant entry external dcl 380 ref 621 632 input_dir_name 000206 automatic char(168) packed unaligned dcl 462 set ref 569* 621* 623* 627* 705* input_ent_name 000260 automatic char(32) packed unaligned dcl 463 set ref 558* 563 569* 577* 617 621* 623* 627* 705* input_ptr 000270 automatic pointer dcl 464 set ref 534* 621* 622 699* 750 750* 752* instance 001400 automatic varying char(32) dcl 2045 set ref 2054* 2056 ioa_ 000266 constant entry external dcl 381 ref 696 713 718 722 727 729 iod_device_tab based structure level 1 dcl 5-23 set ref 1108* 1108 iod_forms_info_tab based structure level 1 dcl 3-12 set ref 1134* 1134 iod_tables_compiler_severity_ 000320 external static fixed bin(35,0) initial dcl 407 set ref 539* 736* 740* iod_tables_hdr based structure level 1 dcl 7-23 set ref 1097* 1097 iox_$error_output 000332 external static pointer dcl 13-43 set ref 13-63* iox_$put_chars 000330 constant entry external dcl 13-43 ref 13-63 is_default_device_class 6266(01) based bit(1) array level 3 packed packed unaligned dcl 492 set ref 669* 902 926 2200* is_default_minor 6266 based bit(1) array level 3 packed packed unaligned dcl 492 set ref 669* 865 959 1836* item_names 006013 constant char(13) initial array packed unaligned dcl 1575 set ref 1581* 1596* item_ok 000272 automatic bit(1) packed unaligned dcl 465 set ref 2213* 2231* 2233 2238 2245* 2250* 2254 ithp 000474 automatic pointer dcl 7-22 set ref 647* 664 665 976 1071 1073 1097 1098* 1099 1101 1101 1145 1146 1147 1148 1149 1150 1151 1152 1153 1370 1372 1379 1384 j 000203 automatic fixed bin(17,0) dcl 461 set ref 806* 814 815 815 817* 828* 829 830 830 833 836 837 840 841* 850 861* 862* 892* 893 894 895 898 899 899 910 911 912* 923* 924* 988* 989 991 991* 1008* 1009 1011 1011* 1030* 1030* 1033 1036 k 000204 automatic fixed bin(17,0) dcl 461 set ref 870* 871 873* 934* 934* 937 939 1039* 1040 1041* 1049* 1050* keyword_name parameter char packed unaligned dcl 1614 set ref 1611 1626* l 000205 automatic fixed bin(17,0) dcl 461 set ref 1040* 1041 1051* 1052 1052 1057* last_dev_class 150 based fixed bin(17,0) level 2 dcl 8-28 set ref 934 937 1049 1895* 2152 2187* last_minor 42 based fixed bin(17,0) level 2 dcl 5-29 set ref 870 1553* 1787 1821* lbound builtin function dcl 399 ref 2246 2292 length builtin function dcl 13-40 in procedure "PUSH" ref 13-63 13-63 length based fixed bin(17,0) level 2 in structure "text_strings" dcl 7-39 in procedure "iodtc" set ref 659 1140 1155 1156* 1156 1157 1308* 1308 1310 1311* 1311 1318 1321 1322* 1322 1342 length builtin function dcl 399 in procedure "iodtc" ref 1288 1306 1835 lex_error_ 000270 constant entry external dcl 382 in procedure "iodtc" ref 2726 lex_error_ 000336 constant entry external dcl 15-150 in procedure "ERROR" ref 15-168 15-172 lex_error_ 000334 constant entry external dcl 13-43 in procedure "PUSH" ref 13-60 lex_string_$init_lex_delims 000272 constant entry external dcl 383 ref 690 lex_string_$lex 000274 constant entry external dcl 385 ref 699 line_charge 43 based structure level 2 dcl 8-28 line_charge_keyword_used 000273 automatic bit(1) packed unaligned dcl 466 set ref 1900* 1950 1953* line_device_index 5501 based fixed bin(17,0) array level 2 dcl 492 set ref 803* 815* 817* 830 833 836 837 line_device_names 1 based char(32) array level 2 packed packed unaligned dcl 492 set ref 814 830* 1468 1477* line_device_names_count based fixed bin(17,0) level 2 dcl 492 set ref 667* 805 1468 1471 1476* line_element based structure level 1 dcl 3-40 ref 2600 line_id based char(24) level 2 in structure "lte" dcl 6-25 in procedure "iodtc" set ref 830* 833* 1416* 1458 1489* 1491* 1493* line_id 2 based char(24) array level 3 in structure "line_tab" dcl 6-19 in procedure "iodtc" set ref 1401 line_tab based structure level 1 dcl 6-19 set ref 1102* 1102 line_tab_offset 7 based fixed bin(18,0) level 2 dcl 7-23 set ref 1145* long_error 000112 internal static varying char(234) initial dcl 13-48 set ref 13-60* lte based structure level 1 dcl 6-25 set ref 1415* ltep 000472 automatic pointer dcl 6-24 set ref 668* 825* 826 827 830 833 836 1412* 1415 1416 1417 1418 1418 1420 1429 1431 1440 1442 1458 1458 1460 1482 1489 1489 1491 1491 1493 1493 ltp 000470 automatic pointer dcl 6-18 set ref 648* 824 825 1102 1103* 1105 1105 1106 1106 1106 1106 1107 1107 1145 1401 1401 1404 1411 1411 1412 1412 maj_dev_list 20 based bit(360) level 2 dcl 6-25 set ref 826 827* 836* 1420* 1482* 1489 major_index 11 based fixed bin(17,0) level 2 dcl 5-64 set ref 958 1058 1823* major_name 000600 automatic char(32) packed unaligned dcl 787 set ref 1029* 1030 1033* max builtin function dcl 10-92 in procedure "SEMANTIC_ANALYSIS" ref 13-27 max builtin function dcl 15-148 in procedure "ERROR" ref 15-154 max builtin function dcl 399 in procedure "iodtc" ref 2732 max_access 13 based bit(72) level 2 dcl 2-27 set ref 1915 1925* 2165 2165* 2189* max_length_att_desc constant fixed bin(17,0) initial dcl 430 ref 1427 max_length_att_desc_char 006124 constant char(3) initial packed unaligned dcl 431 set ref 1427* max_length_comment constant fixed bin(17,0) initial dcl 432 ref 1438 1636 1980 max_length_comment_char 006123 constant char(3) initial packed unaligned dcl 433 set ref 1438* 1636* 1980* max_queues 6 based fixed bin(17,0) level 2 in structure "iod_tables_hdr" dcl 7-23 in procedure "iodtc" set ref 664* 976 1071 1379 1384* max_queues 41 based fixed bin(17,0) level 2 in structure "qgte" dcl 8-28 in procedure "iodtc" set ref 976 976* 980 980 984 991 1011 1895* 2102 2106* max_size constant fixed bin(17,0) initial dcl 434 ref 492 492 492 492 492 492 1051 1472 1814 2180 max_size_char 006122 constant char(3) initial packed unaligned dcl 435 set ref 1473* 1815* 2181* mdte based structure level 1 dcl 5-64 set ref 1818* mdtep 000466 automatic pointer dcl 5-63 set ref 668* 871* 872 922* 926 939 941 958 962 1057* 1058 1060 1060 1558* 1640 1646 1646 1648 1660 1660 1665 1667 1684 1745 1745 1748 1788* 1789 1791 1793 1817* 1818 1822 1823 1824 1824 1824 1824 1835 1835 mdtp 000464 automatic pointer dcl 5-57 set ref 650* 871 919 922 1057 1114 1115* 1117 1117 1118 1118 1118 1118 1119 1119 1147 1684 1690 1691 1788 1813 1813 1814 1817 1817 1819 1821 1828 1828 1836 message 1 000000 constant varying char(120) initial array level 2 dcl 2740 ref 2726 15-168 15-172 min_access 15 based bit(72) level 2 dcl 2-27 set ref 1915 1927* 2161 2161* 2163 2165 2189* min_banner 17 based bit(72) level 2 dcl 2-27 set ref 1915 1929* 2163 2163* 2189* minor_device_forms 32052 based bit(360) level 2 packed packed unaligned dcl 492 set ref 676* 1052 1801* minor_device_tab based structure level 1 dcl 5-58 set ref 1114* 1114 minor_device_tab_offset 11 based fixed bin(18,0) level 2 dcl 7-23 set ref 1147* minor_kw 000560 automatic char(32) packed unaligned dcl 786 set ref 959* 963* 965* 967* minor_kw2 000570 automatic char(32) packed unaligned dcl 786 set ref 955* 957* 967* minor_name 000274 automatic char(32) packed unaligned dcl 467 set ref 1829* 1833* 1835 2193* 2197* 2199 misc_data based structure level 1 unaligned dcl 492 misc_data_ptr 000446 automatic pointer dcl 491 set ref 660* 667 667 669 669 669 676 676 711 803 805 814 815 817 830 830 833 836 837 837 846 847 850 851 858 859 860 865 865 867 873 894 895 898 899 899 902 910 920 921 926 959 1039 1040 1041 1052 1277 1278 1287 1288 1354 1355 1356 1357 1357 1358 1358 1358 1359 1359 1360 1468 1468 1471 1476 1477 1590 1605 1663 1664 1684 1690 1691 1801 1828 1836 1995 1996 2021 2021 2021 2034 2035 2036 2037 2153 2200 2686 2686 2687 2687 3655 3657 3664 3664 3996 3997 mod builtin function dcl 399 ref 1168 my_fep 001700 automatic pointer dcl 2636 in procedure "forms_validate_group" set ref 2653* 2654 2655 2656 2656 2658 2658 2658 2662 my_fep 000112 automatic pointer dcl 2532 in procedure "forms_scan_for_element_name" set ref 2536* 2537 2538 2542 n parameter fixed bin(17,0) dcl 14-33 in procedure "LEX" ref 14-31 14-38 14-39 14-42 14-45 n parameter fixed bin(18,0) dcl 2684 in procedure "insert_single_char" ref 2682 2686 n_classes based fixed bin(17,0) level 2 dcl 2-20 set ref 886 1126 1129* 1129 1130 1130 1131* 1131 2179* 2179 2180 2183 2185 2187 2200 n_devices based fixed bin(17,0) level 2 dcl 5-23 set ref 806 861 1075 1108 1111* 1111 1112 1112 1113* 1113 1526 1529 1536* 1536 1537 1590 1605 1616 1823 n_groups based fixed bin(17,0) level 2 packed packed unaligned dcl 3-12 set ref 655* 657* 1030 1033 1133 1133 1134 1137* 1137 1138 1138 1139* 1139 2344 2355 2377 2380 2386* 2386 2408 2408 2410 2640 2646 2647 2650 n_indices based fixed bin(35,0) level 2 packed packed unaligned dcl 3-52 set ref 2513* 2517* 2517 2518 2519 2564 2566 2655 n_lines based fixed bin(17,0) level 2 dcl 6-19 set ref 824 1102 1105* 1105 1106 1106 1107* 1107 1401 1404 1411* 1411 1412 n_minor based fixed bin(17,0) level 2 dcl 5-58 set ref 919 1114 1117* 1117 1118 1118 1119* 1119 1684 1690 1691 1813* 1813 1814 1817 1819 1821 1828 1828 1836 n_names 0(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 3-22 set ref 2326* 2326 2327 2359 2360* 2426 2428 2429 2432 2434 2435 2463 2465 2467 2471 2473 2475 2481 2483 2485 2513 2517 2517 2518 2518 2519 2519 2537 2560 2564 2566 2566 2569 2571 2573 2575 2578 2580 2582 2584 2587 2589 2591 2593 2596 2598 2600 2603 2603 2605 2607 2610 2612 2615 2617 2620 2623 2655 2656 2656 2658 2658 n_q_groups based fixed bin(17,0) level 2 dcl 8-22 set ref 923 973 1077 1120 1123* 1123 1124 1124 1125* 1125 1863 1866 1873* 1873 1874 2188 n_words 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-12 set ref 1132 1132 1133 1133 1133 1133 1133 1133 1134 1138 1138 2352 2353 2355 2626* 2626 name 2 based char(24) array level 3 in structure "q_group_tab" dcl 8-22 in procedure "iodtc" set ref 901 1054 1055 1863 name based char(32) array level 2 in structure "forms_groups" packed packed unaligned dcl 484 in procedure "iodtc" set ref 656 1030 2377 2389* 2408* 2647* name based char(24) level 2 in structure "qgte" dcl 8-28 in procedure "iodtc" set ref 925 984* 994* 1000* 1014* 1020* 1033* 1041* 1879* 1918* 1935* 1950* 1958* 1983* 1992* 2005* 2028* 2048* 2064* 2072* 2080* 2088* 2091 2102* 2113* 2134* 2137* 2140* 2144* 2148* 2167* 2193 name based structure array level 3 in structure "uses_element" packed packed unaligned dcl 3-52 in procedure "iodtc" set ref 2518* 2656* 2658* name_length 000752 automatic fixed bin(17,0) dcl 1186 set ref 1190* 1195* 1200* 1205* 1210* 1215* 1221 name_type 000753 automatic fixed bin(17,0) dcl 1187 set ref 1191* 1196* 1201* 1206* 1211* 1216* 1223 1228 1233 1238 1243 names 2 based structure array level 2 packed packed unaligned dcl 3-22 set ref 2327* 2346* 2361* 2403* 2438* 2490* 2499* 2510* 2538* 2559* 2564* 2569* 2571* 2573* 2578* 2580* 2582* 2587* 2589* 2591* 2596* 2598* 2603* 2605* 2610* 2615* 2658* next_element_index 0(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-22 set ref 2353* 2362* 2542 2662 non_restart_error 000206 internal static char(33) initial packed unaligned dcl 13-48 set ref 13-63 13-63 13-63 13-63 null builtin function dcl 15-148 in procedure "ERROR" ref 15-161 15-161 15-166 15-168 null builtin function dcl 16-21 in procedure "NEXT_STMT" ref 16-27 16-35 null builtin function dcl 13-40 in procedure "PUSH" ref 13-60 13-60 13-60 13-60 null builtin function dcl 10-92 in procedure "SEMANTIC_ANALYSIS" ref 12-64 12-73 12-79 12-86 3274 null builtin function dcl 399 in procedure "iodtc" ref 534 622 668 682 750 752 754 756 758 760 762 764 766 768 770 772 1161 1453 1558 1640 1901 2353 2393 2402 2554 2716 14-37 14-39 14-42 14-45 number_float 001510 automatic float bin(27) dcl 2210 set ref 2214* 2221* 2221 2234 2236 orientation_element based structure level 1 dcl 3-29 set ref 2575 output_dir_name 000304 automatic char(168) packed unaligned dcl 468 set ref 1088* 1089* 1091* output_ent_name 000356 automatic char(32) packed unaligned dcl 469 set ref 577* 1089* 1091* output_ptr 000366 automatic pointer dcl 470 set ref 534* 758 758* 760* 1089* 1097 1098 1159* 1161* page_charge 103 based structure level 2 dcl 8-28 page_charge_keyword_used 000370 automatic bit(1) packed unaligned dcl 471 set ref 1900* 1958 1961* paper_type 34 based fixed bin(17,0) level 2 dcl 5-29 set ref 1553* 1755 1758* 1760* parm1 based char packed unaligned dcl 2700 set ref 2726* parm2 based char packed unaligned dcl 2701 set ref 2726* parm3 based char packed unaligned dcl 2702 set ref 2726* parm4 based char packed unaligned dcl 2703 set ref 2726* parm5 based char packed unaligned dcl 2704 set ref 2726* parm6 based char packed unaligned dcl 2705 set ref 2726* parms 31306 based char(32) array level 2 packed packed unaligned dcl 492 set ref 1040* 1041* 1356* 1358* parms_count 31105 based fixed bin(17,0) level 2 dcl 492 set ref 1039 1355* 1357* 1357 1358 person 001356 automatic varying char(32) dcl 2045 set ref 2050* 2058 postamble_element based structure level 1 dcl 3-50 ref 2623 preamble_element based structure level 1 dcl 3-48 ref 2620 price 000620 automatic float bin(27) dcl 789 set ref 999* 1019* price_name 000610 automatic char(32) packed unaligned dcl 788 set ref 989* 990 999* 1000* 1009* 1010 1019* 1020* prog_name 006112 constant char(32) initial packed unaligned dcl 436 set ref 544* 553* 564* 571* 590* 597* 612* 623* 627* 634* 639* 641* 681 683* 705* 734* 766* 1091* project 001367 automatic varying char(32) dcl 2045 set ref 2051* 2052 2054 2055* 2055 2058 ptr_to_adjust parameter pointer dcl 1166 ref 1164 1168 1168 1170 q_group 6252 based structure array level 2 unaligned dcl 492 q_group_device_names_count 6251 based fixed bin(17,0) level 2 dcl 492 set ref 667* 859 2021 2034 2035* q_group_tab based structure level 1 dcl 8-22 set ref 1120* 1120 q_group_tab_offset 13 based fixed bin(18,0) level 2 dcl 7-23 set ref 1148* qgte based structure level 1 dcl 8-28 set ref 1877* qgte_index 11 based fixed bin(17,0) level 2 dcl 2-27 set ref 901 1054 1055 2188* qgtep 000502 automatic pointer dcl 8-27 set ref 668* 924* 925 926 926 934 934 937 974* 976 976 979 980 980 980 982 984 984 984 987 988 989 991 991 994 1000 1007 1008 1009 1011 1011 1014 1020 1028 1029 1033 1037 1038 1038 1041 1049 1049 1874* 1877 1879 1880 1880 1880 1880 1880 1885 1885 1885 1885 1885 1885 1885 1885 1885 1885 1895 1895 1895 1895 1895 1911 1918 1935 1935 1937 1950 1952 1956 1958 1960 1968 1970 1983 1983 1985 1992 1992 1997 1999 2005 2005 2009 2025 2028 2047 2048 2058 2064 2064 2066 2072 2072 2074 2080 2080 2082 2088 2088 2090 2091 2092 2102 2102 2106 2113 2113 2115 2123 2127 2127 2130 2130 2133 2134 2134 2137 2137 2140 2140 2143 2144 2144 2148 2148 2152 2152 2167 2185 2185 2187 2193 qgtp 000500 automatic pointer dcl 8-21 set ref 652* 901 923 924 973 974 1054 1055 1077 1120 1121* 1123 1123 1124 1124 1124 1124 1125 1125 1148 1863 1863 1866 1873 1873 1874 1874 2188 queue 103 based char(32) array level 3 in structure "qgte" dcl 8-28 in procedure "iodtc" set ref 987 988 989 991* 1880* 1960* 1970* queue 43 based char(32) array level 3 in structure "qgte" dcl 8-28 in procedure "iodtc" set ref 1007 1008 1009 1011* 1880* 1952* 1968* quoted_string 11(01) based bit(1) level 4 packed packed unaligned dcl 11-68 ref 2271 12-92 12-104 12-113 12-118 12-124 rank builtin function dcl 399 ref 2676 2676 rel builtin function dcl 399 ref 1145 1146 1147 1148 1149 1150 1151 1158 1168 release_temp_segments_ 000276 constant entry external dcl 387 ref 766 rqti_seg_name 31 based char(32) level 2 dcl 8-28 set ref 1880* 2113 2115* rtrim builtin function dcl 399 ref 899 906 954 962 1055 1060 1306 2539 saved_charge_cntr 000371 automatic fixed bin(17,0) dcl 472 set ref 1964* 1968 1970 1971 1971* 1971 saved_charge_type 000372 automatic fixed bin(17,0) dcl 473 set ref 1963* 1968 1968 sc_stat_$sysdir 000322 external static char(168) dcl 408 ref 632 search builtin function dcl 10-92 ref 12-92 second_name 6276 based char(24) array level 4 in structure "misc_data" packed packed unaligned dcl 492 in procedure "iodtc" set ref 1691* second_name 6 000432 automatic char(24) level 2 in structure "cn" dcl 486 in procedure "iodtc" set ref 864 872 926 934 953 954 1676* 1691 2018* 2021 2037 second_name 6260 based char(24) array level 4 in structure "misc_data" packed packed unaligned dcl 492 in procedure "iodtc" set ref 899 899 2021 2037* seek_name parameter char packed unaligned dcl 2527 ref 2524 2539 severity 000000 constant fixed bin(17,0) initial array level 2 packed packed unaligned dcl 2740 ref 2726 2726 2732 15-153 15-154 15-168 15-172 source_offsets parameter structure level 1 packed packed unaligned dcl 1338 ref 1336 source_string based char packed unaligned dcl 1264 ref 1318 1320 source_string_len 000764 automatic fixed bin(17,0) dcl 1265 set ref 1278* 1288* 1297* 1306* 1318 1320 1320 1322 1327 source_string_ptr 000766 automatic pointer dcl 1266 set ref 1277* 1287* 1296* 1305* 1318 1320 source_text_offsets based structure level 1 packed packed unaligned dcl 1352 set ref 1354* special_element based structure level 1 dcl 3-59 set ref 2612 special_string based structure level 2 packed packed unaligned dcl 3-59 set ref 2473* 2475* start_of_tables 16 based fixed bin(17,0) level 2 dcl 7-23 set ref 1101 1101 starting_element_index 000633 automatic fixed bin(17,0) dcl 792 in procedure "cross_check_table" set ref 1036* 1040* starting_element_index 001677 automatic fixed bin(17,0) dcl 2635 in procedure "forms_validate_group" set ref 2650* 2656* starting_index parameter fixed bin(17,0) dcl 2526 ref 2524 2534 stmt based structure level 1 dcl 11-40 stmt_ptr 000130 automatic pointer dcl 2707 set ref 2709* 2716* 2726* stmt_value based char packed unaligned dcl 11-40 ref 711 stmtp 000374 automatic pointer dcl 474 set ref 699* 710 string_to_store parameter char packed unaligned dcl 1260 set ref 1300 1305 1306 substr builtin function dcl 10-92 in procedure "SEMANTIC_ANALYSIS" ref 12-92 12-126 substr builtin function dcl 399 in procedure "iodtc" set ref 688 688 836* 837* 840* 850* 910* 911* 942 1052 1052 1342 1482* 1590* 1605* 1801* 1835 2028 2033* 2153* 2221 2222 2279 2280 2281 2675 suffixed_name_$new_suffix 000300 constant entry external dcl 388 ref 577 system_info_$resource_price 000302 constant entry external dcl 389 ref 999 1019 tail_sheet 33 based structure level 2 packed packed unaligned dcl 5-29 set ref 1769* target parameter structure level 1 packed packed unaligned dcl 1262 set ref 1272 1282 1291 1300 target_string based char packed unaligned dcl 1268 set ref 1320* target_string_ptr 000770 automatic pointer dcl 1269 set ref 1310* 1320 temp_fep 001564 automatic pointer dcl 2336 set ref 2352* 2356 temp_list 000621 automatic bit(360) dcl 790 set ref 826* 828 840* 841 890* 892 911* 912 temp_ptrs 000376 automatic pointer array dcl 475 set ref 534* 639* 647 648 649 650 651 652 653 654 658 660 766 766* 768* temp_token_value 31437 based varying char(1024) level 2 dcl 492 set ref 711* 1287 1288 1354* 1358 1359* 1359 1360 3655* 3664* 3664 temp_token_value_used 31436 based bit(1) level 2 packed packed unaligned dcl 492 set ref 669* 1663 1664* 1995 1996* 3657* terminate_file_ 000304 constant entry external dcl 390 ref 750 758 770 text_offset based structure level 1 packed packed unaligned dcl 7-45 text_strings based structure level 1 dcl 7-39 set ref 1140* 1140 text_strings_array based char(1) array packed unaligned dcl 476 set ref 1157 1310 text_strings_array_ptr 000422 automatic pointer dcl 477 set ref 659* 1155* 1157 1310 text_strings_offset 15 based fixed bin(18,0) level 2 dcl 7-23 set ref 1151* text_strings_ptr 000476 automatic pointer dcl 7-38 set ref 658* 659 1140 1141* 1151 1155 1156 1156 1157 1308 1308 1310 1311 1311 1318 1321 1322 1322 1342 token based structure level 1 dcl 11-68 token_ptr 000132 automatic pointer dcl 2707 set ref 2710* 2716* 2726* token_value based char packed unaligned dcl 11-68 set ref 1224 1229 1234 1239 1244 1401 1404* 1416 1429* 1440* 1454 1460 1468 1477 1526 1529* 1542 1586* 1588 1601* 1603 1675 1676 1758 1760 1833 1850* 1863 1866* 1879 1968 1970 2017 2018 2028* 2050 2051 2090 2091 2093 2095 2115 2197 2214* 2221 2222 2246 2271 2271 2275 2275 2275 2279 2280 2281 2287 2314* 2345* 2346* 2377 2380* 2389 2675 12-92 12-92 12-106* 12-113 12-128 3664 total_chars 32(18) based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1545* 1732 total_chars 145(18) based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1037 1885* 1992 2144 2148 total_chars 0(18) parameter fixed bin(18,0) level 2 in structure "source_offsets" packed packed unsigned unaligned dcl 1338 in procedure "return_string" ref 1340 1342 total_chars based fixed bin(18,0) level 3 in structure "line_element" packed packed unsigned unaligned dcl 3-40 in procedure "iodtc" ref 2598 total_chars based fixed bin(18,0) level 3 in structure "font_name_element" packed packed unsigned unaligned dcl 3-44 in procedure "iodtc" set ref 2481 2615 total_chars 40(18) based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1545* 1564 total_chars 33(18) based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1545* 1767 total_chars 37(18) based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1716 total_chars 1(18) based fixed bin(18,0) level 3 in structure "element_common" packed packed unsigned unaligned dcl 3-22 in procedure "iodtc" set ref 2364* total_chars 0(18) parameter fixed bin(18,0) level 2 in structure "target" packed packed unsigned unaligned dcl 1262 in procedure "store_string_functions" set ref 1327* total_chars 31(18) based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1545* 1698 1781 total_chars 146(18) based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1885* 2072 total_chars 35(18) based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1724 1790 1797 total_chars 36(18) based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1708 total_chars 10(18) based fixed bin(18,0) array level 3 in structure "forms_groups" packed packed unsigned unaligned dcl 484 in procedure "iodtc" set ref 2390* total_chars 6(18) based fixed bin(18,0) level 3 in structure "idte" packed packed unsigned unaligned dcl 5-29 in procedure "iodtc" set ref 1641 total_chars based fixed bin(18,0) level 3 in structure "special_element" packed packed unsigned unaligned dcl 3-59 in procedure "iodtc" set ref 2471 2610 total_chars 143(18) based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1028 1885* 2080 2143 total_chars based fixed bin(18,0) level 3 in structure "font_element" packed packed unsigned unaligned dcl 3-36 in procedure "iodtc" ref 2582 total_chars 12(18) based fixed bin(18,0) level 3 in structure "mdte" packed packed unsigned unaligned dcl 5-64 in procedure "iodtc" set ref 1745 1824* total_chars based fixed bin(18,0) level 3 in structure "font_size_element" packed packed unsigned unaligned dcl 3-38 in procedure "iodtc" ref 2591 total_chars 6(18) based fixed bin(18,0) level 3 in structure "lte" packed packed unsigned unaligned dcl 6-25 in procedure "iodtc" set ref 1440 total_chars 6(18) based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1983 total_chars 7(18) based fixed bin(18,0) level 3 in structure "mdte" packed packed unsigned unaligned dcl 5-64 in procedure "iodtc" set ref 1660 1789 1824* total_chars based fixed bin(18,0) level 3 in structure "orientation_element" packed packed unsigned unaligned dcl 3-29 in procedure "iodtc" set ref 2463 2573 total_chars 17(18) based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1885* 1935 2130 total_chars 17(18) based fixed bin(18,0) level 3 in structure "lte" packed packed unsigned unaligned dcl 6-25 in procedure "iodtc" set ref 1418* 1429 1493 total_chars 144(18) based fixed bin(18,0) level 3 in structure "qgte" packed packed unsigned unaligned dcl 8-28 in procedure "iodtc" set ref 1885* 2064 total_chars 6(18) based fixed bin(18,0) level 3 in structure "mdte" packed packed unsigned unaligned dcl 5-64 in procedure "iodtc" set ref 1646 total_chars based fixed bin(18,0) level 3 in structure "holes_element" packed packed unsigned unaligned dcl 3-42 in procedure "iodtc" ref 2605 translate builtin function dcl 399 ref 2287 translator_temp_$get_segment 000306 constant entry external dcl 391 ref 681 translator_temp_$release_all_segments 000310 constant entry external dcl 392 ref 762 translator_temp_ptr 000424 automatic pointer dcl 478 set ref 534* 681* 682 699* 762 762* 764* tssi_$clean_up_segment 000312 constant entry external dcl 393 ref 754 tssi_$finish_segment 000314 constant entry external dcl 394 ref 1159 tssi_$get_segment 000316 constant entry external dcl 395 ref 1089 type parameter fixed bin(17,0) dcl 2418 in procedure "forms_save_size" ref 2416 2425 2425 2425 2431 2431 type based fixed bin(8,0) level 2 in structure "element_common" packed packed unaligned dcl 3-22 in procedure "iodtc" set ref 2362* 2457 2457 2457 2457 2457 2470 2478 2478 2478 2487 2498 2503* 2510 2512* 2558 2563 2568 2577 2586 2595 2602 2609 2614 2619 2622 2654 type parameter fixed bin(17,0) dcl 1906 in procedure "rqt_save_access" ref 1904 1915 1915 1915 1918 1925 1927 type 001511 automatic char(12) packed unaligned dcl 2211 in procedure "forms_size_ok" set ref 2222* 2223 2223 2223 2225 2225 2225 2227 2227 2227 2229 2229 type parameter fixed bin(17,0) dcl 1944 in procedure "rqt_save_charge" ref 1942 1949 1949 1950 1955 1956 1958 1963 type_attach parameter fixed bin(17,0) dcl 1574 ref 1570 1581 1581 1586 1589 1590 1596 1596 1601 1604 1605 type_strings 005717 constant char(11) initial array packed unaligned dcl 2419 set ref 2438* unspec builtin function dcl 399 set ref 1415* 1540* 1818* 1877* 2184* 2271 2271 2275 2275 2359* use_token 001643 automatic bit(1) packed unaligned dcl 2446 set ref 2448* 2453* 2465 2473 2483 uses_element based structure level 1 dcl 3-52 set ref 2566 value_to_check parameter char packed unaligned dcl 1613 set ref 1611 1617 1620 1626* var_line_list 30472 based bit(360) level 2 packed packed unaligned dcl 492 set ref 837* 846 847 850* 851 1590* 1605* verify builtin function dcl 10-92 in procedure "SEMANTIC_ANALYSIS" ref 12-92 verify builtin function dcl 399 in procedure "iodtc" ref 1224 1229 1234 1239 1244 version based char(8) level 2 dcl 7-23 set ref 1099* 1153* width based float bin(27) level 2 in structure "font_size_element" packed packed unaligned dcl 3-38 in procedure "iodtc" ref 2589 width based float bin(27) level 2 in structure "holes_element" packed packed unaligned dcl 3-42 in procedure "iodtc" ref 2603 width based float bin(27) level 2 in structure "orientation_element" packed packed unaligned dcl 3-29 in procedure "iodtc" set ref 2432 2434* 2571 width based float bin(27) level 2 in structure "font_element" packed packed unaligned dcl 3-36 in procedure "iodtc" ref 2580 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 LANDSCAPE_ORIENTATION internal static fixed bin(17,0) initial dcl 3-94 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 ORIENTATION_STRINGS internal static char(9) initial array packed unaligned dcl 3-92 PAPER_TYPE_DEFAULT internal static fixed bin(17,0) initial dcl 4-26 PORTRAIT_ORIENTATION internal static fixed bin(17,0) initial dcl 3-94 Pcomment automatic pointer dcl 11-20 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 9-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 9-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 9-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 9-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 9-13 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 comment based structure level 1 dcl 11-20 comment_value based char packed unaligned dcl 11-20 terminate_file_switches based structure level 1 packed packed unaligned dcl 9-4 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR 035621 constant entry internal dcl 15-139 ref 3182 3193 3206 3219 3234 3249 3264 3277 3283 3289 3307 3320 3340 3353 3378 3391 3411 3424 3437 3450 3463 3476 3489 3502 3522 3535 3553 3566 3586 3599 3621 3634 3684 3697 3710 3723 3736 3749 3762 3796 3814 3827 3840 3855 3868 3881 3894 3956 3969 4008 4021 4034 4047 4060 4087 4114 4143 LEX 035534 constant entry internal dcl 14-31 ref 3186 3199 3212 3215 3221 3227 3230 3236 3242 3245 3251 3257 3260 3266 3293 3296 3300 3303 3313 3316 3326 3329 3333 3336 3346 3349 3364 3367 3371 3374 3384 3387 3397 3400 3404 3407 3417 3420 3430 3433 3443 3446 3456 3459 3469 3472 3482 3485 3495 3498 3508 3511 3515 3518 3528 3531 3541 3546 3549 3559 3562 3572 3575 3579 3582 3592 3601 3607 3610 3614 3617 3627 3630 3670 3673 3677 3680 3690 3693 3703 3706 3716 3719 3729 3732 3742 3745 3755 3758 3768 3775 3782 3789 3792 3802 3807 3810 3820 3823 3833 3842 3848 3861 3874 3887 3890 3935 3942 3945 3949 3952 3962 3965 3975 3982 3985 3989 3994 4001 4004 4014 4017 4027 4030 4040 4043 4053 4056 NEXT_STMT 036132 constant entry internal dcl 16-18 ref 3189 3195 3202 3208 3223 3238 3253 3268 3279 3285 3309 3322 3342 3355 3380 3393 3413 3426 3439 3452 3465 3478 3491 3504 3524 3537 3555 3568 3588 3595 3603 3623 3636 3686 3699 3712 3725 3738 3751 3764 3798 3816 3829 3836 3844 3851 3857 3864 3870 3877 3883 3896 3958 3971 4010 4023 4036 4049 4062 4145 PUSH 035373 constant entry internal dcl 13-36 ref 3645 3925 RD_ACTION 004302 constant label array(154) dcl 3182 ref 3177 RD_MATCH 032357 constant label dcl 3173 ref 12-90 12-92 12-101 12-109 12-113 12-118 12-128 3169 RD_MATCH_NO_TOKEN 032362 constant label dcl 3174 ref 12-73 12-79 12-86 RD_NEXT_REDUCTION 031774 constant label dcl 12-55 ref 12-68 12-84 12-88 12-99 12-104 12-111 12-116 12-120 12-124 12-130 3170 13-17 13-24 3658 RD_STACK 032371 constant label dcl 13-17 RD_STACK_POP 032376 constant label dcl 13-24 ref 3662 RD_TEST_REDUCTION 031775 constant label dcl 12-58 ref 12-53 13-19 13-28 3191 3197 3204 3210 3217 3225 3232 3240 3247 3255 3262 3270 3281 3287 3298 3305 3311 3318 3324 3331 3338 3344 3351 3357 3362 3369 3376 3382 3389 3395 3402 3409 3415 3422 3428 3435 3441 3448 3454 3461 3467 3474 3480 3487 3493 3500 3506 3513 3520 3526 3533 3539 3544 3551 3557 3564 3570 3577 3584 3590 3597 3605 3612 3619 3625 3632 3638 3643 3648 3653 3668 3675 3682 3688 3695 3701 3708 3714 3721 3727 3734 3740 3747 3753 3760 3766 3773 3780 3787 3794 3800 3805 3812 3818 3825 3831 3838 3846 3853 3859 3866 3872 3879 3885 3892 3898 3903 3908 3913 3919 3923 3928 3933 3940 3947 3954 3960 3967 3973 3980 3987 3992 3999 4006 4012 4019 4025 4032 4038 4045 4051 4058 4064 4069 4074 4079 4085 4092 4096 4101 4106 4112 4119 4123 4129 4135 4141 4147 RD_TEST_RESULT 032353 constant label dcl 3169 ref 3149 3151 3153 3155 3157 3159 3161 3163 3165 3167 RD_TEST_TOKEN 004262 constant label array(6) dcl 12-73 ref 12-65 12-71 RD_TOKEN_FCN 004270 constant label array(10) dcl 3148 ref 3146 SEMANTIC_ANALYSIS 031763 constant entry internal dcl 10-30 ref 716 access_class_ok 021466 constant entry internal dcl 1846 ref 3160 adjust_ptr 015060 constant entry internal dcl 1164 ref 1101 1106 1112 1118 1124 1130 1138 append_token_value_string 031402 constant entry internal dcl 2669 ref 4125 bad_def_type 012667 constant label dcl 951 ref 931 944 build_output_table 014272 constant entry internal dcl 1085 ref 731 check_dial_id 017563 constant entry internal dcl 1611 ref 1586 1601 clean_up 011333 constant entry internal dcl 746 ref 538 742 common 015512 constant label dcl 1308 ref 1279 1289 1298 cross_check_table 011567 constant entry internal dcl 783 ref 724 def_type_not_found 012665 constant label dcl 950 ref 937 dev_create_minor_table_entry 017026 constant entry internal dcl 1505 ref 3594 3602 dev_create_table_entry 017036 constant entry internal dcl 1523 ref 3229 3237 dev_save_args 017200 constant entry internal dcl 1562 ref 3574 3581 dev_save_attach_method 017247 constant entry internal dcl 1570 ref 3386 3399 3406 3419 3432 3445 3458 dev_save_comment 017677 constant entry internal dcl 1634 ref 3366 3373 dev_save_default_form 020052 constant entry internal dcl 1653 ref 3650 dev_save_default_type 020156 constant entry internal dcl 1672 ref 3629 dev_save_driver_module 020313 constant entry internal dcl 1696 ref 3471 dev_save_font_dir 020435 constant entry internal dcl 1714 ref 3548 dev_save_forms_table 020504 constant entry internal dcl 1722 ref 3561 dev_save_forms_validation 020364 constant entry internal dcl 1706 ref 3530 dev_save_head_sheet 020555 constant entry internal dcl 1730 ref 3484 dev_save_minor_args 020627 constant entry internal dcl 1738 ref 3609 3616 dev_save_paper_type 020720 constant entry internal dcl 1753 ref 3510 3517 dev_save_tail_sheet 021007 constant entry internal dcl 1765 ref 3497 dev_validate_entry 021061 constant entry internal dcl 1774 ref 3640 dial_id_dup 017647 constant label dcl 1626 ref 1617 1620 error_common 031476 constant label dcl 2718 ref 2711 finish 011325 constant label dcl 742 ref 628 642 706 738 1092 forms_add_syn_element_name 025356 constant entry internal dcl 2324 ref 4081 4089 forms_create_element_entry 025401 constant entry internal dcl 2333 ref 3937 forms_create_group_entry 025623 constant entry internal dcl 2371 ref 3259 3267 forms_save_comment 025746 constant entry internal dcl 2398 ref 3944 3951 forms_save_size 026136 constant entry internal dcl 2416 ref 4003 4016 4029 4042 4055 forms_save_string 026276 constant entry internal dcl 2443 ref 4137 forms_save_string_common 026304 constant label dcl 2455 ref 2449 forms_save_string_token 026301 constant entry internal dcl 2451 ref 3984 forms_save_type 026552 constant entry internal dcl 2496 ref 3964 forms_save_uses_name 026642 constant entry internal dcl 2508 ref 3977 forms_save_uses_name_continue 026736 constant entry internal dcl 2515 ref 4108 4116 forms_scan_for_element_name 027004 constant entry internal dcl 2524 ref 1040 2345 2656 forms_size_ok 024602 constant entry internal dcl 2208 ref 3164 forms_tty_char_ok 025052 constant entry internal dcl 2258 ref 3166 forms_type 025005 constant entry internal dcl 2243 ref 3162 forms_validate_entry 027133 constant entry internal dcl 2550 ref 2338 2643 forms_validate_group 031060 constant entry internal dcl 2633 ref 2374 4066 get_to_cl 035477 constant label dcl 13-62 ref 13-64 init_default_minor_device 021325 constant entry internal dcl 1807 ref 1656 1679 1741 1777 init_minor_device 021331 constant entry internal dcl 1811 ref 1517 insert_single_char 031431 constant entry internal dcl 2682 ref 2676 4131 iod_tables_compiler 007202 constant entry external dcl 351 iodtc 007172 constant entry external dcl 351 line_create_table_entry 016120 constant entry internal dcl 1398 ref 3214 3222 line_save_att_desc 016235 constant entry internal dcl 1425 ref 3328 3335 line_save_channel_id 016445 constant entry internal dcl 1447 ref 3315 line_save_comment 016341 constant entry internal dcl 1436 ref 3295 3302 line_save_device 016567 constant entry internal dcl 1465 ref 3348 line_validate_entry 016670 constant entry internal dcl 1487 ref 3359 loop 015721 constant label dcl 1357 ref 1360 name_24 015115 constant entry internal dcl 1194 ref 3150 name_32 015105 constant entry internal dcl 1189 ref 3148 name_32_multi 015155 constant entry internal dcl 1214 ref 3156 name_comm_line 015135 constant entry internal dcl 1204 ref 3152 name_path 015125 constant entry internal dcl 1199 ref 3154 name_routines 015101 constant entry internal dcl 1184 name_routines_common 015165 constant label dcl 1219 ref 1192 1197 1202 1207 1212 1217 name_user_id 015145 constant entry internal dcl 1209 ref 3158 next_device 012232 constant label dcl 879 ref 868 874 next_line_dev 011657 constant label dcl 821 ref 818 next_minor 013126 constant label dcl 969 ref 946 nlret 025301 constant label dcl 2307 ref 2304 octal_char_ok 025313 constant entry internal dcl 2309 ref 2278 output_error 014334 constant label dcl 1091 ref 1160 parse_parms_string 015646 constant entry internal dcl 1349 ref 1038 path_error 007505 constant label dcl 571 ref 578 617 return_element_index 027127 constant label dcl 2544 ref 2539 return_string 015576 constant entry internal dcl 1336 ref 1029 1354 2133 2346 2403 2438 2490 2499 2510 2538 2559 2564 2569 2571 2573 2578 2580 2582 2587 2589 2591 2596 2598 2603 2605 2610 2615 2656 2658 return_tty_char 025305 constant entry internal dcl 2299 ref 2271 2275 2284 2288 2289 2290 2291 2293 revert_default_class 024555 constant entry internal dcl 2196 revert_default_minor_device 021442 constant entry internal dcl 1832 ref 1515 rqt_check_device_class 024360 constant entry internal dcl 2159 ref 2125 rqt_create_default_device_class_entry 024452 constant entry internal dcl 2173 ref 1911 2025 2123 rqt_create_device_class_entry 024456 constant entry internal dcl 2177 ref 3835 3843 rqt_create_table_entry 021527 constant entry internal dcl 1860 ref 3244 3252 rqt_save_access 021741 constant entry internal dcl 1904 ref 3850 3863 3876 rqt_save_accounting 022063 constant entry internal dcl 1933 ref 3705 rqt_save_charge 022137 constant entry internal dcl 1942 ref 3770 3777 3784 rqt_save_charge_continue 022351 constant entry internal dcl 1966 ref 3915 rqt_save_comment 022413 constant entry internal dcl 1978 ref 3672 3679 rqt_save_default_form 022512 constant entry internal dcl 1989 ref 3930 rqt_save_default_queue 022600 constant entry internal dcl 2003 ref 3757 rqt_save_device 022705 constant entry internal dcl 2014 ref 3889 rqt_save_driver_id 023072 constant entry internal dcl 2043 ref 3692 rqt_save_font_dir 023412 constant entry internal dcl 2070 ref 3809 rqt_save_forms_table 023461 constant entry internal dcl 2078 ref 3822 rqt_save_forms_validation 023337 constant entry internal dcl 2062 ref 3791 rqt_save_generic_type 023532 constant entry internal dcl 2086 ref 3718 rqt_save_max_queues 023632 constant entry internal dcl 2100 ref 3744 rqt_save_rqti_seg 023741 constant entry internal dcl 2111 ref 3731 rqt_validate_entry 024016 constant entry internal dcl 2121 ref 3900 semant_error 031466 constant entry internal dcl 2714 ref 830 833 849 908 965 967 984 994 1000 1014 1020 1033 1041 1062 1071 1073 1075 1077 1079 1080 1489 1491 1493 1781 1783 1791 1793 1797 2134 2137 2140 2144 2148 2167 2559 2564 2569 2571 2573 2578 2580 2582 2587 2589 2591 2596 2598 2603 2605 2610 2615 2647 2658 severity_5_failure 011322 constant label dcl 740 ref 545 555 566 573 591 599 613 684 skip_charge 013461 constant label dcl 1024 ref 1015 skip_charge1 013333 constant label dcl 1004 ref 995 skip_this_entry 012516 constant label dcl 914 ref 888 statement_error 031450 constant entry internal dcl 2693 ref 1370 1379 1382 1404 1427 1429 1438 1440 1455 1458 1473 1529 1564 1581 1583 1596 1598 1626 1636 1641 1646 1660 1684 1699 1708 1716 1724 1732 1745 1755 1767 1815 1866 1918 1935 1950 1956 1958 1980 1983 1992 2005 2007 2028 2048 2052 2056 2064 2072 2080 2088 2102 2104 2113 2181 2346 2380 2403 2408 2438 2490 2499 2510 3274 store_direct_string 015462 constant entry internal dcl 1300 ref 2130 store_forms_escape_string 015424 constant entry internal dcl 1272 ref 2467 2475 2485 store_global_grace_time 015772 constant entry internal dcl 1368 ref 3188 store_global_max_queues 016027 constant entry internal dcl 1377 ref 3201 store_string_functions 015422 constant entry internal dcl 1258 store_temp_token_value_string 015436 constant entry internal dcl 1282 ref 1665 1997 store_token_value_string 015451 constant entry internal dcl 1291 ref 1431 1442 1566 1643 1648 1667 1701 1710 1718 1726 1734 1748 1769 1937 1985 1999 2066 2074 2082 2327 2361 2405 2410 2465 2473 2483 2518 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 37264 37624 36512 37274 Length 40510 36512 340 647 552 210 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME iodtc 3580 external procedure is an external procedure. on unit on line 537 64 on unit clean_up 86 internal procedure is called by several nonquick procedures. cross_check_table internal procedure shares stack frame of external procedure iodtc. build_output_table internal procedure shares stack frame of external procedure iodtc. adjust_ptr internal procedure shares stack frame of external procedure iodtc. name_routines internal procedure shares stack frame of external procedure iodtc. store_string_functions internal procedure shares stack frame of external procedure iodtc. return_string 66 internal procedure uses returns(char(*)) or returns(bit(*)). parse_parms_string internal procedure shares stack frame of external procedure iodtc. store_global_grace_time internal procedure shares stack frame of external procedure iodtc. store_global_max_queues internal procedure shares stack frame of external procedure iodtc. line_create_table_entry internal procedure shares stack frame of external procedure iodtc. line_save_att_desc internal procedure shares stack frame of external procedure iodtc. line_save_comment internal procedure shares stack frame of external procedure iodtc. line_save_channel_id internal procedure shares stack frame of external procedure iodtc. line_save_device internal procedure shares stack frame of external procedure iodtc. line_validate_entry internal procedure shares stack frame of external procedure iodtc. dev_create_minor_table_entry internal procedure shares stack frame of external procedure iodtc. dev_create_table_entry internal procedure shares stack frame of external procedure iodtc. dev_save_args internal procedure shares stack frame of external procedure iodtc. dev_save_attach_method internal procedure shares stack frame of external procedure iodtc. check_dial_id internal procedure shares stack frame of external procedure iodtc. dev_save_comment internal procedure shares stack frame of external procedure iodtc. dev_save_default_form internal procedure shares stack frame of external procedure iodtc. dev_save_default_type internal procedure shares stack frame of external procedure iodtc. dev_save_driver_module internal procedure shares stack frame of external procedure iodtc. dev_save_forms_validation internal procedure shares stack frame of external procedure iodtc. dev_save_font_dir internal procedure shares stack frame of external procedure iodtc. dev_save_forms_table internal procedure shares stack frame of external procedure iodtc. dev_save_head_sheet internal procedure shares stack frame of external procedure iodtc. dev_save_minor_args internal procedure shares stack frame of external procedure iodtc. dev_save_paper_type internal procedure shares stack frame of external procedure iodtc. dev_save_tail_sheet internal procedure shares stack frame of external procedure iodtc. dev_validate_entry internal procedure shares stack frame of external procedure iodtc. init_default_minor_device internal procedure shares stack frame of external procedure iodtc. access_class_ok internal procedure shares stack frame of external procedure iodtc. rqt_create_table_entry internal procedure shares stack frame of external procedure iodtc. rqt_save_access internal procedure shares stack frame of external procedure iodtc. rqt_save_accounting internal procedure shares stack frame of external procedure iodtc. rqt_save_charge internal procedure shares stack frame of external procedure iodtc. rqt_save_comment internal procedure shares stack frame of external procedure iodtc. rqt_save_default_form internal procedure shares stack frame of external procedure iodtc. rqt_save_default_queue internal procedure shares stack frame of external procedure iodtc. rqt_save_device internal procedure shares stack frame of external procedure iodtc. rqt_save_driver_id internal procedure shares stack frame of external procedure iodtc. rqt_save_forms_validation internal procedure shares stack frame of external procedure iodtc. rqt_save_font_dir internal procedure shares stack frame of external procedure iodtc. rqt_save_forms_table internal procedure shares stack frame of external procedure iodtc. rqt_save_generic_type internal procedure shares stack frame of external procedure iodtc. rqt_save_max_queues internal procedure shares stack frame of external procedure iodtc. rqt_save_rqti_seg internal procedure shares stack frame of external procedure iodtc. rqt_validate_entry internal procedure shares stack frame of external procedure iodtc. rqt_check_device_class internal procedure shares stack frame of external procedure iodtc. rqt_create_default_device_class_entry internal procedure shares stack frame of external procedure iodtc. forms_size_ok internal procedure shares stack frame of external procedure iodtc. forms_type internal procedure shares stack frame of external procedure iodtc. forms_tty_char_ok internal procedure shares stack frame of external procedure iodtc. return_tty_char internal procedure shares stack frame of external procedure iodtc. octal_char_ok internal procedure shares stack frame of external procedure iodtc. forms_add_syn_element_name internal procedure shares stack frame of external procedure iodtc. forms_create_element_entry internal procedure shares stack frame of external procedure iodtc. forms_create_group_entry internal procedure shares stack frame of external procedure iodtc. forms_save_comment internal procedure shares stack frame of external procedure iodtc. forms_save_size internal procedure shares stack frame of external procedure iodtc. forms_save_string internal procedure shares stack frame of external procedure iodtc. forms_save_type internal procedure shares stack frame of external procedure iodtc. forms_save_uses_name internal procedure shares stack frame of external procedure iodtc. forms_scan_for_element_name 104 internal procedure is called during a stack extension. forms_validate_entry internal procedure shares stack frame of external procedure iodtc. forms_validate_group internal procedure shares stack frame of external procedure iodtc. append_token_value_string internal procedure shares stack frame of external procedure iodtc. insert_single_char internal procedure shares stack frame of external procedure iodtc. statement_error 206 internal procedure is called during a stack extension, and is declared options(variable). SEMANTIC_ANALYSIS internal procedure shares stack frame of external procedure iodtc. PUSH internal procedure shares stack frame of external procedure iodtc. LEX internal procedure shares stack frame of external procedure iodtc. ERROR internal procedure shares stack frame of external procedure iodtc. NEXT_STMT internal procedure shares stack frame of external procedure iodtc. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 BREAKS iodtc 000022 CTL_CHARS iodtc 000033 LEXCTL iodtc 000060 LEXDLM iodtc 000105 already_called iodtc 000106 TRACING iodtc 000110 brief_error PUSH 000112 long_error PUSH 000206 non_restart_error PUSH STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME forms_scan_for_element_name 000100 element_index forms_scan_for_element_name 000101 element_name forms_scan_for_element_name 000111 i forms_scan_for_element_name 000112 my_fep forms_scan_for_element_name iodtc 000106 acl_info_ptr iodtc 000110 argc iodtc 000111 argl iodtc 000112 argp iodtc 000114 argx iodtc 000116 authorization_bits iodtc 000120 bit_count iodtc 000122 cdtp iodtc 000124 code iodtc 000126 copy_ptr iodtc 000130 debug iodtc 000131 default_device_class_defined iodtc 000132 default_minor_device_defined iodtc 000133 default_print_defined iodtc 000134 default_punch_defined iodtc 000135 error_string iodtc 000176 fb35 iodtc 000177 forms_size_info iodtc 000200 forms_size_type iodtc 000201 forms_element_validated iodtc 000202 i iodtc 000203 j iodtc 000204 k iodtc 000205 l iodtc 000206 input_dir_name iodtc 000260 input_ent_name iodtc 000270 input_ptr iodtc 000272 item_ok iodtc 000273 line_charge_keyword_used iodtc 000274 minor_name iodtc 000304 output_dir_name iodtc 000356 output_ent_name iodtc 000366 output_ptr iodtc 000370 page_charge_keyword_used iodtc 000371 saved_charge_cntr iodtc 000372 saved_charge_type iodtc 000374 stmtp iodtc 000376 temp_ptrs iodtc 000422 text_strings_array_ptr iodtc 000424 translator_temp_ptr iodtc 000426 forms_elements_ptr iodtc 000430 forms_groups_ptr iodtc 000432 cn iodtc 000446 misc_data_ptr iodtc 000450 dctp iodtc 000452 dctep iodtc 000454 ifitp iodtc 000456 fep iodtc 000460 idtp iodtc 000462 idtep iodtc 000464 mdtp iodtc 000466 mdtep iodtc 000470 ltp iodtc 000472 ltep iodtc 000474 ithp iodtc 000476 text_strings_ptr iodtc 000500 qgtp iodtc 000502 qgtep iodtc 000504 Pthis_token iodtc 000506 Pstmt iodtc 000510 Ptoken iodtc 000512 SPDL iodtc 000513 MERROR_SEVERITY iodtc 000514 SERROR_CONTROL iodtc 000515 SERROR_PRINTED iodtc 000515 MIN_PRINT_SEVERITY iodtc 000516 PRINT_SEVERITY_CONTROL iodtc 000540 full_name cross_check_table 000550 full_name2 cross_check_table 000560 minor_kw cross_check_table 000570 minor_kw2 cross_check_table 000600 major_name cross_check_table 000610 price_name cross_check_table 000620 price cross_check_table 000621 temp_list cross_check_table 000633 starting_element_index cross_check_table 000634 error_statement_no cross_check_table 000635 error_device_name cross_check_table 000645 error_entry_type cross_check_table 000655 error_entry_type_id cross_check_table 000752 name_length name_routines 000753 name_type name_routines 000764 source_string_len store_string_functions 000766 source_string_ptr store_string_functions 000770 target_string_ptr store_string_functions 000772 dupe_string_loc store_string_functions 001052 channel_id line_save_channel_id 001053 fnp_sw line_save_channel_id 001356 person rqt_save_driver_id 001367 project rqt_save_driver_id 001400 instance rqt_save_driver_id 001510 number_float forms_size_ok 001511 type forms_size_ok 001530 asc_mnemonic forms_tty_char_ok 001531 i forms_tty_char_ok 001562 element_offset forms_create_element_entry 001564 temp_fep forms_create_element_entry 001632 got_dupe forms_save_size 001642 got_dupe forms_save_string 001643 use_token forms_save_string 001666 element_words forms_validate_entry 001676 element_index forms_validate_group 001677 starting_element_index forms_validate_group 001700 my_fep forms_validate_group 001702 i forms_validate_group 001712 i append_token_value_string 001713 c append_token_value_string 001732 LTOKEN_REQD_VALUE SEMANTIC_ANALYSIS 001733 NRED SEMANTIC_ANALYSIS 001734 PRED SEMANTIC_ANALYSIS 001736 PTOKEN_REQD SEMANTIC_ANALYSIS 001740 PTOKEN_REQD_VALUE SEMANTIC_ANALYSIS 001742 STOKEN_FCN SEMANTIC_ANALYSIS 001743 CODE SEMANTIC_ANALYSIS 001744 I SEMANTIC_ANALYSIS 001745 NUMBER SEMANTIC_ANALYSIS 001746 DIRECTION SEMANTIC_ANALYSIS 001747 STACK SEMANTIC_ANALYSIS 001761 STACK_DEPTH SEMANTIC_ANALYSIS 002022 i LEX 002034 Pstmt ERROR 002036 Perring_token ERROR 002046 Ssearching NEXT_STMT statement_error 000100 arg_count statement_error 000101 arg_lens statement_error 000110 arg_ptrs statement_error 000126 i statement_error 000127 dummy_string statement_error 000130 stmt_ptr statement_error 000132 token_ptr statement_error THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp unpk_to_pk cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac longbs_to_fx2 alloc_auto_adj mdfx1 signal_op enable_op shorten_stack ext_entry int_entry int_entry_desc set_chars_eis set_bits_eis index_chars_eis index_bs_1_eis return_chars_eis verify_eis any_to_any_round_ translate_3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cdt_mgr_$find_cdt_channel clock_ com_err_ com_err_$suppress_name convert_authorization_$from_string cu_$arg_count cu_$arg_ptr cu_$cl cv_dec_check_ cv_dec_check_ cv_float_ cv_oct_check_ expand_pathname_$add_suffix get_temp_segments_ get_wdir_ initiate_file_ ioa_ iox_$put_chars lex_error_ lex_error_ lex_error_ lex_string_$init_lex_delims lex_string_$lex release_temp_segments_ suffixed_name_$new_suffix system_info_$resource_price terminate_file_ translator_temp_$get_segment translator_temp_$release_all_segments tssi_$clean_up_segment tssi_$finish_segment tssi_$get_segment THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$bad_opt error_table_$noarg error_table_$too_many_args error_table_$zero_length_seg iod_tables_compiler_severity_ iox_$error_output sc_stat_$sysdir LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 4157 007133 15 3 007134 2726 007165 351 007171 534 007210 537 007232 538 007246 539 007253 540 007256 542 007257 543 007270 544 007272 545 007307 548 007310 549 007311 550 007313 552 007315 553 007320 555 007344 558 007345 560 007350 561 007357 562 007374 563 007405 564 007411 566 007444 569 007445 570 007503 571 007505 573 007537 577 007540 578 007572 581 007574 582 007575 585 007613 588 007630 589 007640 590 007643 591 007700 593 007701 594 007702 595 007717 596 007742 597 007750 599 010003 601 010004 602 010005 604 010006 606 010022 608 010035 611 010050 612 010053 613 010076 615 010077 617 010101 621 010105 622 010142 623 010146 624 010200 626 010201 627 010203 628 010235 632 010236 633 010302 634 010304 639 010330 640 010351 641 010353 642 010377 647 010400 648 010402 649 010404 650 010406 651 010410 652 010412 653 010414 654 010416 655 010420 656 010422 657 010424 658 010426 659 010430 660 010432 664 010434 665 010437 667 010441 668 010443 669 010452 676 010517 677 010525 681 010526 682 010552 683 010556 684 010602 687 010603 688 010606 689 010622 690 010645 693 010725 696 010730 699 010747 704 011063 705 011065 706 011121 710 011122 711 011124 713 011140 716 011160 718 011161 721 011201 722 011204 724 011222 726 011223 727 011226 729 011244 731 011262 734 011263 736 011316 738 011321 740 011322 742 011325 743 011331 746 011332 750 011340 752 011373 754 011376 756 011410 758 011413 760 011445 762 011450 764 011465 766 011470 768 011514 770 011530 772 011563 774 011566 783 011567 803 011570 805 011601 806 011611 814 011621 815 011637 817 011650 818 011654 820 011655 821 011657 824 011661 825 011671 826 011675 827 011700 828 011703 829 011710 830 011712 833 011756 836 012001 837 012005 840 012010 841 012014 842 012021 843 012022 846 012024 847 012031 848 012036 849 012040 850 012063 851 012070 852 012075 858 012076 859 012110 860 012117 861 012132 862 012141 863 012145 864 012151 865 012155 867 012172 868 012177 870 012200 871 012207 872 012213 873 012217 874 012225 876 012226 878 012230 879 012232 886 012234 887 012243 888 012247 890 012253 891 012256 892 012261 893 012266 894 012270 895 012275 897 012302 898 012304 899 012311 901 012355 902 012400 905 012412 906 012415 907 012454 908 012455 909 012477 910 012500 911 012504 912 012510 913 012515 914 012516 919 012520 920 012527 921 012536 922 012547 923 012554 924 012563 925 012567 926 012573 930 012612 931 012614 932 012615 934 012616 936 012634 937 012636 939 012642 941 012644 942 012652 943 012657 944 012661 946 012662 948 012663 950 012665 951 012667 953 012672 954 012676 955 012735 956 012741 957 012742 958 012745 959 012770 962 013003 963 013042 965 013046 967 013074 969 013126 973 013130 974 013137 976 013143 979 013151 980 013154 982 013161 983 013163 984 013164 987 013204 988 013211 989 013217 990 013225 991 013232 994 013244 995 013262 997 013263 999 013264 1000 013305 1003 013331 1007 013333 1008 013340 1009 013345 1010 013353 1011 013360 1014 013372 1015 013410 1017 013411 1019 013412 1020 013433 1023 013457 1028 013461 1029 013465 1030 013511 1032 013531 1033 013533 1036 013603 1037 013615 1038 013621 1039 013625 1040 013635 1041 013656 1043 013726 1049 013730 1050 013741 1051 013745 1052 013755 1054 013767 1055 013776 1057 014042 1058 014050 1059 014055 1060 014060 1062 014123 1064 014145 1065 014147 1067 014151 1071 014153 1073 014171 1075 014211 1077 014225 1079 014241 1080 014255 1082 014271 1085 014272 1088 014273 1089 014302 1090 014332 1091 014334 1092 014366 1097 014367 1098 014374 1099 014375 1101 014401 1102 014405 1103 014416 1105 014417 1106 014420 1107 014427 1108 014431 1109 014442 1111 014443 1112 014444 1113 014453 1114 014455 1115 014466 1117 014467 1118 014470 1119 014477 1120 014501 1121 014512 1123 014513 1124 014514 1125 014523 1126 014525 1127 014536 1129 014537 1130 014540 1131 014547 1132 014551 1133 014570 1134 014666 1135 014704 1137 014705 1138 014713 1139 014731 1140 014737 1141 014751 1145 014752 1146 014756 1147 014761 1148 014764 1149 014767 1150 014772 1151 014775 1152 015000 1153 015007 1155 015013 1156 015016 1157 015020 1158 015025 1159 015031 1160 015052 1161 015054 1174 015057 1164 015060 1168 015062 1170 015076 1184 015101 1189 015104 1190 015110 1191 015112 1192 015114 1194 015115 1195 015120 1196 015122 1197 015124 1199 015125 1200 015130 1201 015132 1202 015134 1204 015135 1205 015140 1206 015142 1207 015144 1209 015145 1210 015150 1211 015152 1212 015154 1214 015155 1215 015160 1216 015162 1217 015164 1219 015165 1221 015170 1223 015172 1224 015175 1226 015226 1228 015227 1229 015231 1231 015262 1233 015263 1234 015265 1236 015316 1238 015317 1239 015321 1241 015352 1243 015353 1244 015355 1249 015406 1258 015422 1272 015423 1277 015426 1278 015431 1279 015435 1282 015436 1287 015440 1288 015445 1289 015450 1291 015451 1296 015453 1297 015456 1298 015461 1300 015462 1305 015473 1306 015476 1308 015512 1310 015513 1311 015521 1318 015523 1319 015533 1320 015534 1321 015541 1322 015552 1323 015554 1325 015555 1327 015564 1329 015574 1336 015575 1340 015603 1342 015624 1349 015646 1354 015650 1355 015702 1356 015704 1357 015721 1358 015723 1359 015741 1360 015764 1363 015771 1368 015772 1370 015773 1372 016022 1374 016026 1377 016027 1379 016030 1382 016057 1384 016116 1387 016117 1398 016120 1401 016121 1403 016144 1404 016146 1411 016202 1412 016203 1415 016210 1416 016213 1417 016222 1418 016225 1420 016231 1422 016234 1425 016235 1427 016236 1429 016266 1431 016331 1433 016340 1436 016341 1438 016342 1440 016372 1442 016435 1444 016444 1447 016445 1453 016446 1454 016452 1455 016500 1458 016514 1460 016556 1462 016566 1465 016567 1468 016570 1470 016612 1471 016614 1472 016617 1473 016621 1476 016645 1477 016647 1482 016662 1484 016667 1487 016670 1489 016671 1491 016730 1493 016767 1496 017025 1505 017026 1513 017027 1514 017031 1515 017032 1516 017033 1517 017034 1519 017035 1523 017036 1526 017037 1528 017062 1529 017064 1536 017120 1537 017121 1540 017126 1541 017131 1542 017132 1543 017141 1545 017147 1553 017167 1558 017175 1560 017177 1562 017200 1564 017201 1566 017237 1568 017246 1570 017247 1579 017251 1580 017254 1581 017260 1583 017325 1584 017343 1586 017344 1588 017372 1589 017402 1590 017405 1593 017415 1595 017416 1596 017422 1598 017467 1599 017505 1601 017506 1603 017537 1604 017547 1605 017552 1631 017562 1611 017563 1616 017601 1617 017611 1620 017630 1623 017644 1624 017646 1626 017647 1629 017676 1634 017677 1636 017700 1640 017730 1641 017734 1643 017772 1644 020001 1646 020002 1648 020042 1651 020051 1653 020052 1656 020053 1660 020060 1663 020132 1664 020135 1665 020136 1666 020145 1667 020146 1669 020155 1672 020156 1675 020157 1676 020173 1679 020211 1684 020217 1690 020276 1691 020306 1693 020312 1696 020313 1698 020314 1699 020320 1701 020354 1703 020363 1706 020364 1708 020365 1710 020425 1711 020434 1714 020435 1716 020436 1718 020474 1719 020503 1722 020504 1724 020505 1726 020545 1727 020554 1730 020555 1732 020556 1734 020617 1735 020626 1738 020627 1741 020630 1745 020635 1748 020710 1750 020717 1753 020720 1755 020721 1758 020762 1760 020777 1762 021006 1765 021007 1767 021010 1769 021051 1770 021060 1774 021061 1777 021062 1781 021067 1783 021111 1787 021132 1788 021143 1789 021147 1790 021152 1791 021156 1793 021217 1795 021254 1797 021255 1801 021315 1803 021322 1804 021324 1807 021325 1809 021326 1811 021330 1813 021332 1814 021333 1815 021336 1817 021364 1818 021371 1819 021374 1821 021402 1822 021404 1823 021405 1824 021407 1828 021417 1829 021433 1832 021441 1833 021443 1835 021452 1836 021456 1838 021465 1846 021466 1850 021470 1852 021516 1860 021527 1863 021530 1865 021552 1866 021554 1873 021612 1874 021613 1877 021620 1878 021623 1879 021624 1880 021633 1885 021677 1895 021724 1900 021733 1901 021736 1902 021740 1904 021741 1911 021743 1915 021750 1918 022001 1925 022036 1927 022047 1929 022056 1931 022062 1933 022063 1935 022064 1937 022127 1939 022136 1942 022137 1949 022141 1950 022146 1952 022210 1953 022225 1954 022227 1955 022230 1956 022232 1958 022261 1960 022324 1961 022341 1963 022343 1964 022346 1966 022350 1968 022352 1970 022373 1971 022406 1974 022412 1978 022413 1980 022414 1983 022444 1985 022502 1987 022511 1989 022512 1992 022513 1995 022554 1996 022557 1997 022560 1998 022567 1999 022570 2001 022577 2003 022600 2005 022601 2007 022643 2009 022702 2011 022704 2014 022705 2017 022706 2018 022722 2021 022740 2024 022767 2025 022771 2028 022777 2033 023044 2034 023051 2035 023055 2036 023056 2037 023065 2040 023071 2043 023072 2047 023073 2048 023100 2050 023137 2051 023157 2052 023201 2054 023220 2055 023243 2056 023255 2058 023274 2060 023335 2062 023337 2064 023340 2066 023402 2067 023411 2070 023412 2072 023413 2074 023451 2075 023460 2078 023461 2080 023462 2082 023522 2083 023531 2086 023532 2088 023533 2090 023575 2091 023605 2092 023612 2093 023614 2095 023623 2098 023631 2100 023632 2102 023633 2104 023676 2106 023736 2108 023740 2111 023741 2113 023742 2115 024005 2117 024015 2121 024016 2123 024017 2125 024024 2127 024025 2130 024035 2133 024056 2134 024105 2136 024131 2137 024132 2140 024170 2143 024232 2144 024236 2146 024277 2148 024300 2152 024340 2153 024351 2154 024355 2156 024357 2159 024360 2161 024361 2163 024371 2165 024401 2167 024411 2170 024451 2173 024452 2175 024453 2177 024455 2179 024457 2180 024460 2181 024463 2183 024512 2184 024517 2185 024522 2187 024530 2188 024532 2189 024534 2192 024543 2193 024546 2196 024554 2197 024556 2199 024565 2200 024571 2202 024601 2208 024602 2213 024604 2214 024606 2215 024634 2220 024636 2221 024640 2222 024653 2223 024672 2225 024711 2227 024730 2229 024747 2231 024762 2233 024763 2234 024765 2236 024774 2238 024777 2243 025005 2245 025007 2246 025011 2248 025030 2249 025032 2250 025035 2251 025036 2252 025041 2253 025042 2254 025044 2258 025052 2271 025054 2274 025073 2275 025077 2278 025120 2279 025131 2280 025143 2281 025154 2283 025167 2284 025173 2286 025177 2287 025203 2288 025223 2289 025233 2290 025242 2291 025250 2292 025261 2293 025265 2294 025274 2297 025276 2307 025301 2299 025305 2303 025307 2304 025312 2309 025313 2311 025315 2314 025323 2315 025351 2324 025356 2326 025357 2327 025366 2329 025400 2333 025401 2338 025402 2344 025403 2345 025416 2346 025442 2352 025520 2353 025531 2355 025544 2356 025562 2359 025563 2360 025576 2361 025600 2362 025606 2364 025614 2366 025621 2368 025622 2371 025623 2374 025624 2377 025625 2379 025647 2380 025651 2386 025711 2389 025717 2390 025731 2392 025740 2393 025743 2395 025745 2398 025746 2402 025747 2403 025753 2405 026032 2406 026042 2408 026043 2410 026120 2413 026135 2416 026136 2424 026140 2425 026141 2426 026150 2428 026161 2429 026164 2431 026170 2432 026175 2434 026210 2435 026212 2438 026220 2441 026274 2443 026276 2448 026277 2449 026300 2451 026301 2453 026302 2455 026304 2457 026305 2463 026322 2465 026335 2467 026350 2468 026360 2470 026361 2471 026363 2473 026376 2475 026411 2476 026421 2478 026422 2481 026430 2483 026443 2485 026455 2486 026467 2487 026470 2490 026472 2493 026550 2496 026552 2498 026553 2499 026557 2500 026632 2503 026634 2505 026641 2508 026642 2510 026643 2512 026722 2513 026726 2515 026735 2517 026737 2518 026751 2519 026764 2521 027002 2524 027003 2534 027017 2535 027022 2536 027025 2537 027031 2538 027043 2539 027077 2541 027120 2542 027122 2543 027126 2544 027127 2550 027133 2554 027134 2555 027141 2558 027144 2559 027151 2560 027224 2561 027232 2563 027233 2564 027235 2566 027315 2567 027331 2568 027332 2569 027334 2571 027420 2573 027504 2575 027570 2576 027576 2577 027577 2578 027601 2580 027665 2582 027751 2584 030035 2585 030043 2586 030044 2587 030046 2589 030132 2591 030216 2593 030302 2594 030310 2595 030311 2596 030313 2598 030377 2600 030463 2601 030471 2602 030472 2603 030474 2605 030545 2607 030631 2608 030637 2609 030640 2610 030642 2612 030725 2613 030733 2614 030734 2615 030736 2617 031021 2618 031027 2619 031030 2620 031032 2621 031037 2622 031040 2623 031042 2626 031047 2627 031055 2629 031057 2633 031060 2640 031061 2643 031065 2646 031066 2647 031105 2648 031151 2650 031152 2652 031154 2653 031157 2654 031162 2655 031166 2656 031201 2658 031267 2660 031371 2662 031374 2663 031400 2666 031401 2669 031402 2674 031403 2675 031413 2676 031421 2677 031426 2678 031430 2682 031431 2686 031433 2687 031445 2688 031446 2693 031447 2709 031455 2710 031461 2711 031464 2714 031465 2716 031473 2718 031476 2719 031506 2721 031522 2722 031534 2723 031543 2724 031563 2726 031565 2731 031750 2732 031751 2733 031755 2735 031762 10 30 031763 2888 031764 2889 031766 12 50 031767 12 52 031772 12 53 031773 12 55 031774 12 58 031775 12 60 032000 12 62 032002 12 63 032026 12 64 032031 12 65 032035 12 68 032045 12 70 032046 12 71 032052 12 73 032054 12 79 032073 12 84 032104 12 86 032105 12 88 032111 12 90 032112 12 92 032113 12 99 032147 12 101 032150 12 104 032153 12 106 032156 12 107 032202 12 108 032204 12 109 032207 12 111 032210 12 113 032211 12 116 032225 12 118 032226 12 120 032232 12 123 032233 12 124 032234 12 126 032240 12 127 032245 12 128 032251 12 130 032257 3146 032260 3148 032262 3149 032267 3150 032270 3151 032275 3152 032276 3153 032303 3154 032304 3155 032311 3156 032312 3157 032317 3158 032320 3159 032325 3160 032326 3161 032333 3162 032334 3163 032341 3164 032342 3165 032347 3166 032350 3167 032352 3169 032353 3170 032356 3173 032357 3174 032362 3176 032365 3177 032367 13 17 032371 13 18 032373 13 19 032375 13 24 032376 13 26 032400 13 27 032402 13 28 032410 3182 032411 3184 032415 3186 032416 3188 032422 3189 032423 3190 032424 3191 032426 3193 032427 3195 032433 3196 032434 3197 032436 3199 032437 3201 032443 3202 032444 3203 032445 3204 032447 3206 032450 3208 032454 3209 032455 3210 032457 3212 032460 3214 032464 3215 032465 3216 032471 3217 032473 3219 032474 3221 032500 3222 032504 3223 032505 3224 032506 3225 032510 3227 032511 3229 032515 3230 032516 3231 032522 3232 032524 3234 032525 3236 032531 3237 032535 3238 032536 3239 032537 3240 032541 3242 032542 3244 032546 3245 032547 3246 032553 3247 032555 3249 032556 3251 032562 3252 032566 3253 032567 3254 032570 3255 032572 3257 032573 3259 032577 3260 032600 3261 032604 3262 032606 3264 032607 3266 032613 3267 032617 3268 032620 3269 032621 3270 032623 3272 032624 3274 032627 3275 032637 3277 032640 3279 032644 3280 032645 3281 032647 3283 032650 3285 032654 3286 032655 3287 032657 3289 032660 3291 032664 3293 032665 3295 032671 3296 032672 3297 032676 3298 032700 3300 032701 3302 032705 3303 032706 3304 032712 3305 032714 3307 032715 3309 032721 3310 032722 3311 032724 3313 032725 3315 032731 3316 032732 3317 032736 3318 032740 3320 032741 3322 032745 3323 032746 3324 032750 3326 032751 3328 032755 3329 032756 3330 032762 3331 032764 3333 032765 3335 032771 3336 032772 3337 032776 3338 033000 3340 033001 3342 033005 3343 033006 3344 033010 3346 033011 3348 033015 3349 033016 3350 033022 3351 033024 3353 033025 3355 033031 3356 033032 3357 033034 3359 033035 3361 033036 3362 033040 3364 033041 3366 033045 3367 033046 3368 033052 3369 033054 3371 033055 3373 033061 3374 033062 3375 033066 3376 033070 3378 033071 3380 033075 3381 033076 3382 033100 3384 033101 3386 033105 3387 033111 3388 033115 3389 033117 3391 033120 3393 033124 3394 033125 3395 033127 3397 033130 3399 033134 3400 033140 3401 033144 3402 033146 3404 033147 3406 033153 3407 033157 3408 033163 3409 033165 3411 033166 3413 033172 3414 033173 3415 033175 3417 033176 3419 033202 3420 033206 3421 033212 3422 033214 3424 033215 3426 033221 3427 033222 3428 033224 3430 033225 3432 033231 3433 033235 3434 033241 3435 033243 3437 033244 3439 033250 3440 033251 3441 033253 3443 033254 3445 033260 3446 033264 3447 033270 3448 033272 3450 033273 3452 033277 3453 033300 3454 033302 3456 033303 3458 033307 3459 033313 3460 033317 3461 033321 3463 033322 3465 033326 3466 033327 3467 033331 3469 033332 3471 033336 3472 033337 3473 033343 3474 033345 3476 033346 3478 033352 3479 033353 3480 033355 3482 033356 3484 033362 3485 033363 3486 033367 3487 033371 3489 033372 3491 033376 3492 033377 3493 033401 3495 033402 3497 033406 3498 033407 3499 033413 3500 033415 3502 033416 3504 033422 3505 033423 3506 033425 3508 033426 3510 033432 3511 033433 3512 033437 3513 033441 3515 033442 3517 033446 3518 033447 3519 033453 3520 033455 3522 033456 3524 033462 3525 033463 3526 033465 3528 033466 3530 033472 3531 033473 3532 033477 3533 033501 3535 033502 3537 033506 3538 033507 3539 033511 3541 033512 3543 033516 3544 033520 3546 033521 3548 033525 3549 033526 3550 033532 3551 033534 3553 033535 3555 033541 3556 033542 3557 033544 3559 033545 3561 033551 3562 033552 3563 033556 3564 033560 3566 033561 3568 033565 3569 033566 3570 033570 3572 033571 3574 033575 3575 033576 3576 033602 3577 033604 3579 033605 3581 033611 3582 033612 3583 033616 3584 033620 3586 033621 3588 033625 3589 033626 3590 033630 3592 033631 3594 033635 3595 033636 3596 033637 3597 033641 3599 033642 3601 033646 3602 033652 3603 033653 3604 033654 3605 033656 3607 033657 3609 033663 3610 033664 3611 033670 3612 033672 3614 033673 3616 033677 3617 033700 3618 033704 3619 033706 3621 033707 3623 033713 3624 033714 3625 033716 3627 033717 3629 033723 3630 033724 3631 033730 3632 033732 3634 033733 3636 033737 3637 033740 3638 033742 3640 033743 3642 033744 3643 033746 3645 033747 3647 033753 3648 033755 3650 033756 3652 033757 3653 033761 3655 033762 3657 033764 3658 033766 3660 033767 3662 033772 3664 033773 3666 034011 3667 034014 3668 034016 3670 034017 3672 034023 3673 034024 3674 034030 3675 034032 3677 034033 3679 034037 3680 034040 3681 034044 3682 034046 3684 034047 3686 034053 3687 034054 3688 034056 3690 034057 3692 034063 3693 034064 3694 034070 3695 034072 3697 034073 3699 034077 3700 034100 3701 034102 3703 034103 3705 034107 3706 034110 3707 034114 3708 034116 3710 034117 3712 034123 3713 034124 3714 034126 3716 034127 3718 034133 3719 034134 3720 034140 3721 034142 3723 034143 3725 034147 3726 034150 3727 034152 3729 034153 3731 034157 3732 034160 3733 034164 3734 034166 3736 034167 3738 034173 3739 034174 3740 034176 3742 034177 3744 034203 3745 034204 3746 034210 3747 034212 3749 034213 3751 034217 3752 034220 3753 034222 3755 034223 3757 034227 3758 034230 3759 034234 3760 034236 3762 034237 3764 034243 3765 034244 3766 034246 3768 034247 3770 034253 3771 034257 3772 034263 3773 034265 3775 034266 3777 034272 3778 034276 3779 034302 3780 034304 3782 034305 3784 034311 3785 034315 3786 034321 3787 034323 3789 034324 3791 034330 3792 034331 3793 034335 3794 034337 3796 034340 3798 034344 3799 034345 3800 034347 3802 034350 3804 034354 3805 034356 3807 034357 3809 034363 3810 034364 3811 034370 3812 034372 3814 034373 3816 034377 3817 034400 3818 034402 3820 034403 3822 034407 3823 034410 3824 034414 3825 034416 3827 034417 3829 034423 3830 034424 3831 034426 3833 034427 3835 034433 3836 034434 3837 034435 3838 034437 3840 034440 3842 034444 3843 034450 3844 034451 3845 034452 3846 034454 3848 034455 3850 034461 3851 034465 3852 034466 3853 034470 3855 034471 3857 034475 3858 034476 3859 034500 3861 034501 3863 034505 3864 034511 3865 034512 3866 034514 3868 034515 3870 034521 3871 034522 3872 034524 3874 034525 3876 034531 3877 034535 3878 034536 3879 034540 3881 034541 3883 034545 3884 034546 3885 034550 3887 034551 3889 034555 3890 034556 3891 034562 3892 034564 3894 034565 3896 034571 3897 034572 3898 034574 3900 034575 3902 034576 3903 034600 3905 034601 3907 034604 3908 034606 3910 034607 3912 034612 3913 034614 3915 034615 3917 034616 3918 034622 3919 034624 3921 034625 3923 034627 3925 034630 3927 034634 3928 034636 3930 034637 3932 034640 3933 034642 3935 034643 3937 034647 3938 034650 3939 034654 3940 034656 3942 034657 3944 034663 3945 034664 3946 034670 3947 034672 3949 034673 3951 034677 3952 034700 3953 034704 3954 034706 3956 034707 3958 034713 3959 034714 3960 034716 3962 034717 3964 034723 3965 034724 3966 034730 3967 034732 3969 034733 3971 034737 3972 034740 3973 034742 3975 034743 3977 034747 3978 034750 3979 034754 3980 034756 3982 034757 3984 034763 3985 034764 3986 034770 3987 034772 3989 034773 3991 034777 3992 035001 3994 035002 3996 035006 3997 035011 3998 035026 3999 035030 4001 035031 4003 035035 4004 035041 4005 035045 4006 035047 4008 035050 4010 035054 4011 035055 4012 035057 4014 035060 4016 035064 4017 035070 4018 035074 4019 035076 4021 035077 4023 035103 4024 035104 4025 035106 4027 035107 4029 035113 4030 035117 4031 035123 4032 035125 4034 035126 4036 035132 4037 035133 4038 035135 4040 035136 4042 035142 4043 035146 4044 035152 4045 035154 4047 035155 4049 035161 4050 035162 4051 035164 4053 035165 4055 035171 4056 035175 4057 035201 4058 035203 4060 035204 4062 035210 4063 035211 4064 035213 4066 035214 4068 035215 4069 035217 4071 035220 4073 035223 4074 035225 4076 035226 4078 035231 4079 035233 4081 035234 4083 035235 4084 035241 4085 035243 4087 035244 4089 035250 4090 035251 4091 035255 4092 035257 4094 035260 4096 035262 4098 035263 4100 035266 4101 035270 4103 035271 4105 035274 4106 035276 4108 035277 4110 035300 4111 035304 4112 035306 4114 035307 4116 035313 4117 035314 4118 035320 4119 035322 4121 035323 4123 035325 4125 035326 4127 035327 4128 035333 4129 035335 4131 035336 4133 035343 4134 035347 4135 035351 4137 035352 4139 035353 4140 035357 4141 035361 4143 035362 4145 035366 4146 035367 4147 035371 4149 035372 13 36 035373 13 59 035375 13 60 035400 13 62 035477 13 63 035504 13 64 035526 13 66 035527 13 68 035530 13 70 035533 14 31 035534 14 36 035536 14 37 035540 14 38 035545 14 39 035547 14 40 035561 14 41 035563 14 42 035565 14 44 035575 14 45 035576 14 47 035611 14 48 035613 14 49 035616 14 51 035620 15 139 035621 15 153 035623 15 154 035633 15 156 035642 15 158 035651 15 160 035652 15 161 035654 15 164 035667 15 166 035673 15 168 035675 15 172 036001 15 177 036130 16 18 036132 16 24 036133 16 25 036135 16 26 036140 16 27 036142 16 28 036150 16 29 036152 16 30 036157 16 31 036160 16 32 036161 16 35 036172 16 36 036176 16 39 036177 ----------------------------------------------------------- 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