COMPILATION LISTING OF SEGMENT cobol_exp3 Compiled by: Multics PL/I Compiler, Release 31b, of April 24, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 05/24/89 0933.9 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(89-04-23,Zimmerman), approve(89-04-23,MCR8060), 17* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 18* MCR8060 cobol_exp3.pl1 Added Trace statements. 19* END HISTORY COMMENTS */ 20 21 22 /* Modified on 10/19/85 by FCH, [5.3-1], BUG563(phx18381), new cobol_addr_tokens.incl.pl1 */ 23 /* Modified on 10/21/82 by FCH, [5.1-1], incorrect dimensions corrected */ 24 /* Modified on 01/25/77 by Bob Chang to implement profile option. */ 25 /* Modified on 1/17/77 by Bob Chang to change offset for real_to_real operator. */ 26 /* Modified since Version 2.0. */ 27 /* format: style3 */ 28 cobol_exp3: 29 proc (lop_ptr, rop_ptr, result_ptr, imperative_stmt_tag); 30 31 /* 32*This procedure is called to generate code to perform the 33*exponentiation of one numeric variable by another. Certain 34*conversions are performed by calling PL1 operator routines. 35*The exponentiation, itself, is done by an internal 36*procedure which is emitted into the Cobol object program. 37**/ 38 39 /* DECLARATION OF THE PARAMETERS */ 40 41 dcl lop_ptr ptr; 42 dcl rop_ptr ptr; 43 dcl result_ptr ptr; 44 dcl imperative_stmt_tag fixed bin; 45 46 47 /* DESCRIPTION OF THE PARAMETERS */ 48 49 /* 50*PARAMETER DESCRIPTION 51* 52*lop_ptr Pointer to the data name token (type 9) 53* that describes the numeric variable to be 54* exponentiated. (input) This token can 55* describe one of the following types of 56* numeric variables. 57* 58* 1. floating decimal 59* 2. numeric decimal, unsigned 60* 3. numeric decimal,leading 61* sign 62* 4. numeric decimal, trailing 63* sign 64* 65*rop_ptr Pointer to the data name token (type 9) 66* that describes the numeric variable to 67* be used as the exponent. (input) 68* This token can be one of the types described 69* above for lop_ptr. 70* 71*result_ptr Pointer to a data name token (type 9) 72* that describes the temporary numeric 73* variable into whhich the result of the 74* exponentation is to be stored. 75* (output) This token always describes 76* a floating decimal temporary. 77* 78*imperative_stmt_tag a tag (label) number defined by the calling 79* procedure (cobol_compute_gen) and which will 80* be defined at the imperative statement of 81* the COMPUTE statement containing exponent- 82* iation, if the COMPUTE statement has an 83* ON SIZE ERROR clause. If no ON SIZE ERROR 84* clause appeared in the compute statement, 85* then this parameter is zero. (input) 86**/ 87 88 /* 89* IMPLEMENTATION DETAILS 90* 91*The following sequence of code is generated by this 92*procedure. 93* 94*1. If either of the tokens pointed at by lop_ptr or rop_ptr 95*describes a numeric variable that is unsigned, or has trailing 96*sign, then code is generated to convert the numeric to a 97*numeric with leading sign. This is done because the PL1 98*operator conversion routine used requires that fixed decimal 99*data have the following format: 100* 1. 9 bit representation 101* 2. leading sign 102* 103*2. Code is generated to convert the numeric variable to be 104*exponentiated to a double precision, real floating binary 105*value. This is done by a call to the PL1 operator procedure 106*"real_to_real_rd". 107* 108*3. Code is generated to convert the numeric variable serving 109*as the exponent to a double precision, real floating binary value. 110*This is also done by calling the PL1 operator procedure 111*"real_to_real_rd". 112* 113*4. Code is generated to perform the exponentation. The 114*exponentation is preformed by the internal procedure emitted 115*into the Cobol object program. 116*The result of the exponentation is returned in 117*the EAQ register, as a double precision floating binary value. 118* 119*5. Code is generated to store the EAQ into a temporary 120*variable. 121* 122*6. Code is generated to convert the result of the exponentiation 123*to a floating decimal, and store the converted value into 124*the variable described by the token pointed at by the 125*parameter "result_ptr". 126* 127**/ 128 129 /* DECLARATIONS OF EXTERNAL ENTRIES */ 130 131 dcl cobol_move_gen ext entry (ptr); 132 dcl cobol_call_op entry (fixed bin, fixed bin); 133 dcl cobol_reset_r$after_call 134 ext entry; 135 dcl cobol_make_type9$copy 136 ext entry (ptr, ptr); 137 dcl cobol_pool ext entry (char (*), fixed bin, fixed bin); 138 dcl cobol_make_fixup entry (ptr); 139 dcl cobol_emit ext entry (ptr, ptr, fixed bin); 140 dcl cobol_register$load ext entry (ptr); 141 dcl cobol_addr ext entry (ptr, ptr, ptr); 142 dcl cobol_alloc$stack ext entry (fixed bin, fixed bin, fixed bin); 143 dcl cobol_process_error ext entry (fixed bin, fixed bin, fixed bin); 144 dcl cobol_make_link$type_4 145 ext entry (fixed bin, char (*)); 146 dcl cobol_define_tag_nc ext entry (fixed bin, fixed bin); 147 dcl cobol_define_tag ext entry (fixed bin); 148 dcl cobol_make_tagref ext entry (fixed bin, fixed bin, ptr); 149 150 151 /* DECLARATIONS OF INTERNAL STATIC DATA */ 152 153 /* Definitions of internal static variables that define 6180 opcodes needed to generate code. */ 154 155 dcl ldq_op bit (10) int static init ("0100111100"b /* 236(0) */); 156 dcl lxl7_op bit (10) int static init ("1110101110"b /*727(0) */); 157 dcl lda_op bit (10) int static init ("0100111010"b /* 235(0) */); 158 dcl lxl6_op bit (10) int static init ("1110101100"b /* 726(0) */); 159 dcl tsx0_op bit (10) int static init ("1110000000"b /* 700(0) */); 160 dcl dfld_op bit (10) int static init ("1000110110"b /* 433(0) */); 161 dcl tsp3_op bit (10) int static init ("0101110110"b /* 273(0) */); 162 dcl dfst_op bit (10) int static init ("1001011110"b /* 457(0) */); 163 164 165 /* Definitions of static code sequences. */ 166 167 dcl lda_63_dl bit (36) int static init ("000000000000111111010011101000000111"b); 168 /* LDA 63,DL */ 169 170 171 /* Definition of static variables that contain offset values into PL! operator segment */ 172 173 dcl cobol_op_real_to_real_rd 174 fixed bin (15) int static init (15); 175 dcl pl1_op_dbl_p_dbl fixed bin (15) int static init (741); 176 177 dcl exp_proc_emitted fixed bin int static init (0); 178 dcl exp_proc_tag fixed bin int static; 179 180 /* fixup directive for link, used when profile options is specified. */ 181 dcl 1 fixup_directive aligned static, 182 2 operation bit (1) unal init ("0"b), 183 2 type bit (4) unal init ("1111"b), 184 2 reserved bit (9) unal init ("000000000"b), 185 2 location unal, 186 3 half bit (1) unal init ("0"b), 187 3 base bit (3) unal init ("001"b), 188 3 offset fixed bin unal, 189 2 tag_number fixed bin aligned; 190 191 /* DECLARATION OF INTERNAL VARIABLES */ 192 dcl dn_ptr ptr; 193 194 /* Structure used to communicate with the pointer register routines. */ 195 196 dcl 1 pr_struc, 197 2 what_pointer fixed bin, 198 2 pointer_no bit (3), 199 2 lock fixed bin, 200 2 switch fixed bin, 201 2 segno fixed bin, 202 2 offset fixed bin (24), 203 2 reset fixed bin; 204 dcl pr_struc_ptr ptr; 205 206 /* Structure used to communicate with the A,Q, and XR register routines. */ 207 208 dcl 1 reg_struc, 209 2 what_reg fixed bin, 210 2 reg_no bit (4), 211 2 lock fixed bin, 212 2 already_there fixed bin, 213 2 contains fixed bin, 214 2 pointer ptr, 215 2 literal bit (36); 216 217 dcl reg_struc_ptr ptr; 218 219 220 221 dcl work_lop_ptr ptr; 222 dcl work_rop_ptr ptr; 223 224 dcl restore_pointer_regs 225 bit (1); 226 227 dcl lop_seg fixed bin; 228 dcl lop_offset fixed bin (24); 229 230 dcl rop_seg fixed bin; 231 dcl rop_offset fixed bin (24); 232 233 dcl result_seg fixed bin; 234 dcl result_offset fixed bin (24); 235 dcl restart_tag fixed bin; 236 237 /* Buffers used to communicate with the addressability utility */ 238 239 dcl inst_buff (1:10) fixed bin; 240 dcl reloc_buff (1:10) fixed bin; 241 dcl input_buff (1:10) fixed bin; 242 243 /**************************************************/ 244 /* START OF EXECUTION */ 245 /* EXTERNAL PROCEDURE cobol_exp3 */ 246 /**************************************************/ 247 248 start: 249 if exp_proc_emitted ^= cobol_$compile_count 250 then do; /* Emit the internal procedure that performs exponentiation. */ 251 252 call emit_exp_proc (exp_proc_tag); 253 exp_proc_emitted = cobol_$compile_count; 254 255 end; /* Emit the internal procedure that performs the exponentiation. */ 256 257 258 /* If no ON SIZE ERROR clause was present in the statement, then define the tag 259* at which to restart the execution of the exponentiation code if an execution time error 260* is detected, and the user hits "start" */ 261 262 if imperative_stmt_tag = 0 263 then do; /* No OSE clause present, define the restart tag. */ 264 restart_tag = cobol_$next_tag; 265 call cobol_define_tag (restart_tag); 266 cobol_$next_tag = cobol_$next_tag + 1; 267 268 end; /* NO OSE clause present, define the restart tagl */ 269 270 /* Determine whether the value to be exponentiated needs to be 271* 1. converted to float dec or fixed dec, leading sign, or 272* 2. moved to a temporary on a word boundary. 273* 274**/ 275 276 dn_ptr = lop_ptr; 277 278 if (data_name.sign_type = "000"b /* UNSIGNED */ 279 | data_name.sign_type = "011"b /* TRAILING SEPARATE SIGN */ 280 | data_name.occurs_ptr ^= 0 /* member of an array */ 281 | mod (data_name.offset, 4) ^= 0 /* Not aligned on a word boundary. */ 282 | data_name.ascii_packed_dec /* packed decimal data */) 283 then call convert_or_move (lop_ptr, work_lop_ptr);/* Move or convert the value */ 284 285 286 else work_lop_ptr = lop_ptr; /* No move or convert necessary. :/ 287* 288*/* Determine whether the exponent value needs to be 289* 1. converted to floating decimal or fixed decimal, leading sign 290* 2. or moved to a temporary on an even word boundary. 291**/ 292 293 dn_ptr = rop_ptr; 294 restore_pointer_regs = "0"b; 295 296 if (data_name.sign_type = "000"b /* UNSIGNED */ 297 | data_name.sign_type = "011"b /* TRAILING SEPARATE SIGN */ 298 | data_name.occurs_ptr ^= 0 /* member of an array */ 299 | mod (data_name.offset, 4) ^= 0 /* Not aligned on a word boundary. */ 300 | data_name.ascii_packed_dec /* packed decimal data */) 301 then call convert_or_move (rop_ptr, work_rop_ptr); 302 303 else do; /* No move or convert necessary for the exponent */ 304 work_rop_ptr = rop_ptr; 305 restore_pointer_regs = "1"b; 306 end; /* No move or convert necessary for exponent. */ 307 308 /* Generate code to convert the value being exponentiated to double precision floating binary. */ 309 310 call con_to_float_bin (work_lop_ptr, lop_seg, lop_offset); 311 312 /* If the exponent was not converted or moved, that means that it was properly signed and aligned 313* so that the conversion routine could handle it. However, the call to convert the value being exponentiated 314* has resulted in the setting of PR3 and PR5 to unknown values, and to properly access the exponent, 315* which is in the cobol data segment, we must now restore PR3 and PR5 so that the exponent 316* will be accessed correctly. */ 317 318 if restore_pointer_regs 319 then call cobol_reset_r$after_call; /* Restore pointer register 320* (especially pointer registers 3 and 5. */ 321 322 /* Generate code to convert the exponent to double precision floating binary. */ 323 324 call con_to_float_bin (work_rop_ptr, rop_seg, rop_offset); 325 326 /* Generate code to perform the exponentation of the two floating binary values. */ 327 call do_exponentiation (lop_seg, lop_offset, rop_seg, rop_offset, result_seg, result_offset, 328 imperative_stmt_tag, exp_proc_tag, restart_tag); 329 330 331 /* Generate code to move and convert the floating binary result to the resultant operand. */ 332 333 call con_from_float_bin (result_seg, result_offset, result_ptr); 334 335 /* Restore the pointer registers */ 336 337 call cobol_reset_r$after_call; 338 339 exit: 340 return; 341 342 343 /**************************************************/ 344 /* INTERNAL PROCEDURE */ 345 /* emit_exp_proc */ 346 /**************************************************/ 347 emit_exp_proc: 348 proc (exp_proc_tag); 349 350 351 /* 352*This internal procedure emits the "internal" procedure that 353*performs exponentiation, into the cobol object segment. 354**/ 355 356 /* DECLARATION OF THE PARAMETERS */ 357 358 dcl exp_proc_tag fixed bin; 359 360 /* DESCRIPTION OF THE PARAMETERS */ 361 362 /* 363*PARAMETER DESCRIPTION 364* 365*exp_proc_tag A tag (label) number reserved by this 366* procedure and defined by this procedure 367* at the "entry point" instruction of the 368* internal procedure which performs 369* exponentiation. (output) 370* 371**/ 372 373 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 374 /* DEFINITION OF THE "INTERNAL" PROCEDURE THAT PERFORMS EXPONENTIATION. */ 375 376 /* NOTE: This internal procedure was derived from the Multics system routine power_. */ 377 378 /* The code sequence defined by this declaration is described by three headings. 379* 1. "Raw" binary instruction is the bit (36) representation of the instruction. 380* 2. Meaning of raw instruction gives the opcode, address, etc of the instruction. 381* 3. "Final" instruction gives the interpretation of those instructions that are modified 382* from the contents of the declaration. There are two types of modification that are made 383* to the raw instructions: 384* 385* a. instructions are fixed up for forward references. 386* b. instructions are modified to reference type 4 links to external procedures. 387* 388**/ 389 390 /* 5.2-1 */ 391 dcl code1_instr (0:29) bit (36) static 392 init ( 393 /* "RAW" binary instruction Meaning "FINAL" instruction */ 394 "000000000000000000111001000000000000"b, 395 /* tra 0 */ 396 /* tra over the internal procedure. */ 397 "000000000000000011111000101000000100"b, 398 /* tsx5 3,ic */ 399 "001000000000000000100110011001000000"b, 400 /* dfmp 1|0 */ 401 "001000000000000000100011011001000000"b, 402 /* dfld 1|0 */ 403 "100000000000000000101001101000000011"b, 404 /* fcmp =0.0,du */ 405 "000000000000010101110000000000000100"b, 406 /* tze 25,ic */ 407 "010000000000000000100101111001000000"b, 408 /* dfst 2|0 */ 409 "000000000000000001111001110000001101"b, 410 /* xec 1,5 */ 411 "000000000000010000110000000000000100"b, 412 /* tze 20,ic */ 413 "000111000100000000100010101000000011"b, 414 /* fcmg 28*1024+256,du */ 415 "000000000000000110110000101000000100"b, 416 /* tpl 6,ic */ 417 "001000110000000000100011101000000011"b, 418 /* ufa =35b25,du */ 419 "000000000000000000001001110000000111"b, 420 /* cmpq 0,dl */ 421 "000000000000000011110000001000000100"b, 422 /* tnz 3,ic */ 423 "000000000000000000001001101000000111"b, 424 /* cmpa 0,dl */ 425 "100000000000000000111001000001010000"b, 426 /* tra 0 */ 427 /* power_integer_$power_integer_ */ 428 "010000000000000000100011011001000000"b, 429 /* dfld 2|0 */ 430 "000000000000000000110000100000000000"b, 431 /* tmi 0 */ 432 /* tra to (neg)**(non-integer) code */ 433 "010000000000000010011101010001000000"b, 434 /* epp2 2|2 */ 435 "010111111111111110010101011101000000"b, 436 /* spri3 2|-2 */ 437 "100000000000000000010111011001010000"b, 438 /* tsp3 0 */ 439 /* double_logarithm_$double_log_base_e_ */ 440 "000000000000000000111001110000001101"b, 441 /* xec 0,5 */ 442 "010111111111111110011101011101010000"b, 443 /* epp3 2|-2,* */ 444 "100000000000000000111001000001010000"b, 445 /* tra 0 */ 446 /* double_exponential_$double_exponential_ */ 447 "000000010100000000100011001000000011"b, 448 /* fld =1.0,du */ 449 "011000000000000000111001000001000000"b, 450 /* tra 3|0 */ 451 "001000000000000000100011000001000000"b, 452 /* fszn 1|0 */ 453 "000000000000000000110000000000000000"b, 454 /* tze 0 */ 455 /* tra to (zero)**(zero) code */ 456 "011000000000000000110000101001000000"b, 457 /* tpl 3|0 */ 458 "000000000000000000111001000000000000"b); 459 /* tra 0 */ 460 /* tra to (zero)**(negative) code */ 461 /* 5.2-1 */ 462 dcl rel_code1 (0:59) bit (5) static aligned 463 init ("00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, 464 "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, 465 "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, 466 "00000"b, "00000"b, "00000"b, "00000"b, "10100"b, "00000"b, "00000"b, "00000"b, "00000"b, 467 "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "10100"b, "00000"b, "00000"b, "00000"b, 468 "00000"b, "00000"b, "10100"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, 469 "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b, "00000"b); 470 dcl code2_instr (2) bit (36) static init ("000000000000000001001000111000000011"b, 471 /* cmpx7 1,du */ 472 "011000000000000001110000000001000000"b); 473 /* tze 3|1 */ 474 475 dcl err_ret_inst bit (36) int static init ("010000000000000001111001000001000000"b); 476 /* tra 2|1 */ 477 dcl epp2_inst bit (36) int static init ("011000000000000000011101010001000000"b); 478 /* epp2 3|0 */ 479 480 481 dcl neg_non_int_code fixed bin int static init (47); 482 /* (negative) ** (non-integer) object-time error code */ 483 484 dcl zero_zero_code fixed bin int static init (48); 485 /* (zero) ** (zero) object time error code. */ 486 487 dcl zero_neg_code fixed bin int static init (49); 488 /* (zero) ** (negative) object time error code. */ 489 490 dcl neg_non_int_offset fixed bin int static init (17); 491 /* Offset from the first word of code1_inst of the 492* instruction that transfers to the (negative) ** (non_integer) error code, and which must 493* be fixed up to reference this error code. */ 494 495 dcl zero_zero_offset fixed bin int static init (27); 496 497 dcl zero_neg_offset fixed bin int static init (29); 498 dcl SPRP3 bit (10) int static init ("1011000110"b); 499 /* 543(0) */ 500 dcl LPRP2 bit (10) int static init ("1111100100"b); 501 /* 762(0) */ 502 503 /* DECLARATION OF INTERNAL AUTOMATIC VARIABLES */ 504 505 dcl temp_ptr ptr; 506 dcl temp_tag fixed bin; 507 dcl save_offset fixed bin; 508 dcl linkoff fixed bin; 509 dcl ret_offset fixed bin; 510 dcl pr3_save_load_inst bit (36) init ("0"b); 511 dcl inst_index fixed bin; 512 513 514 /**************************************************/ 515 /* START OF EXECUTION */ 516 /* emit_exp_proc */ 517 /**************************************************/ 518 519 start_exit_emit_exp_proc: /* Make a type 4 link to "power_integer_$power_integer_" */ 520 call cobol_make_link$type_4 (linkoff, "power_integer_$power_integer_"); 521 522 temp_ptr = addr (code1_instr (15)); 523 524 /* Insert the link offset into the instruction in the internal procedure to be emitted. */ 525 temp_ptr -> inst_struc_basic.wd_offset = bit (fixed (linkoff, 15)); 526 527 /* Make a type 4 link to "double_logarithm_$double_log_base_e_" */ 528 call cobol_make_link$type_4 (linkoff, "double_logarithm_$double_log_base_e_"); 529 530 temp_ptr = addr (code1_instr (20)); 531 532 /* Insert the link offset into the instruction in the internal procedure to be emitted. */ 533 temp_ptr -> inst_struc_basic.wd_offset = bit (fixed (linkoff, 15)); 534 535 /* Make a type 4 link to "double_exponential_$double_exponential_" */ 536 call cobol_make_link$type_4 (linkoff, "double_exponential_$double_exponential_"); 537 538 temp_ptr = addr (code1_instr (23)); 539 540 /* Insert the link offset into the instruction in the internal procedure. */ 541 temp_ptr -> inst_struc_basic.wd_offset = bit (fixed (linkoff, 15)); 542 543 544 /* Define the exp_proc_tag at the 2nd instruction in the internal procedure. ( The first 545* instruction is an unconditional transfer over the internal procedure. */ 546 547 548 save_offset = cobol_$text_wd_off; 549 550 /* Reserve a tag. */ 551 exp_proc_tag = cobol_$next_tag; 552 cobol_$next_tag = cobol_$next_tag + 1; 553 554 /* Define the tag */ 555 call cobol_define_tag_nc (exp_proc_tag, save_offset + 1); 556 557 /* Emit the first stream of code. */ 558 if fixed_common.options.profile 559 then do inst_index = 15, 20, 23; 560 fixup_directive.location.offset = cobol_$text_wd_off + inst_index; 561 call cobol_make_fixup (addr (fixup_directive)); 562 end; 563 call cobol_emit (addr (code1_instr (0)), addr (rel_code1 (0)), 30); 564 565 566 567 /* Allocate 4 bytes of storage in the stack to receive PR3. (which is the pointer to 568* the return location from this procedure. ) */ 569 570 call cobol_alloc$stack (4, 0, ret_offset); 571 572 /* Establish basic addressability to the temporary. */ 573 inst_ptr = addr (pr3_save_load_inst); 574 input_ptr = addr (input_buff (1)); 575 reloc_ptr = addr (reloc_buff (1)); 576 577 input_struc_basic.type = 1; 578 input_struc_basic.operand_no = 0; 579 input_struc_basic.lock = 0; 580 input_struc_basic.segno = 1000; /* stack */ 581 input_struc_basic.char_offset = ret_offset; 582 call cobol_addr (input_ptr, inst_ptr, reloc_ptr); 583 584 /* EMIT error code for handling (negative) ** (non-integer) errors. */ 585 586 /* Reserve a tag. */ 587 temp_tag = cobol_$next_tag; 588 cobol_$next_tag = cobol_$next_tag + 1; 589 590 /* Define this tag at the next instruction location. */ 591 call cobol_define_tag (temp_tag); 592 593 /* Make a reference to this tag in the code1 stream already emitted. */ 594 call cobol_make_tagref (temp_tag, save_offset + neg_non_int_offset, null ()); 595 596 /* Emit two instructions of pre-packaged code. 597* The instructions are: 598* cmpx7 1,du 599* tze 3|1 600* */ 601 602 call cobol_emit (addr (code2_instr (1)), null (), 2); 603 604 605 /* Emit an instruction to store PR3 into the stack. This is necessary because the 606* execution time error routine resets pr3 to point to cobol data. */ 607 inst_ptr -> inst_struc_basic.fill1_op = SPRP3; 608 call cobol_emit (inst_ptr, reloc_ptr, 1); 609 610 /* Emit code to signal an object time error. */ 611 call cobol_process_error (neg_non_int_code, 0, 0); 612 613 /* Emit an instruction to load PR3 from the stack temporary. */ 614 615 inst_ptr -> inst_struc_basic.fill1_op = LPRP2; 616 call cobol_emit (inst_ptr, reloc_ptr, 1); 617 618 619 /* Emit an instruction to return to the error return instruction of the 620* calling code. (This instruction is executed only if the user hits restart after 621* an execution time error is detected) */ 622 623 624 call cobol_emit (addr (err_ret_inst), null (), 1);/* tra 2|1 */ 625 /* Emit error code for handling (zero) ** (zero) error. */ 626 627 temp_tag = cobol_$next_tag; 628 cobol_$next_tag = cobol_$next_tag + 1; 629 call cobol_define_tag (temp_tag); 630 631 call cobol_make_tagref (temp_tag, save_offset + zero_zero_offset, null ()); 632 call cobol_emit (addr (code2_instr (1)), null (), 2); 633 /* Emit code to store PR3 into the stack temporary. */ 634 inst_ptr -> inst_struc_basic.fill1_op = SPRP3; 635 call cobol_emit (inst_ptr, reloc_ptr, 1); 636 637 call cobol_process_error (zero_zero_code, 0, 0); 638 639 inst_ptr -> inst_struc_basic.fill1_op = LPRP2; 640 641 call cobol_emit (inst_ptr, reloc_ptr, 1); /* Emit an instruction to return to the error return instruction of the 642* calling code. (This instruction is executed only if the user hits restart after 643* an execution time error is detected) */ 644 645 646 call cobol_emit (addr (err_ret_inst), null (), 1);/* tra 2|1 */ 647 /* Emit code for handling (zero) ** (negative) error. */ 648 649 temp_tag = cobol_$next_tag; 650 cobol_$next_tag = cobol_$next_tag + 1; 651 call cobol_define_tag (temp_tag); 652 653 call cobol_make_tagref (temp_tag, save_offset + zero_neg_offset, null ()); 654 call cobol_emit (addr (code2_instr (1)), null (), 2); 655 656 /* Emit code to store PR3 into the stack temporary. */ 657 inst_ptr -> inst_struc_basic.fill1_op = SPRP3; 658 call cobol_emit (inst_ptr, reloc_ptr, 1); 659 660 661 call cobol_process_error (zero_neg_code, 0, 0); 662 663 /* Emit code to load PR3 from the stack temporary. */ 664 inst_ptr -> inst_struc_basic.fill1_op = LPRP2; 665 call cobol_emit (inst_ptr, reloc_ptr, 1); /* Emit an instruction to return to the error return instruction of the 666* calling code. (This instruction is executed only if the user hits restart after 667* an execution time error is detected) */ 668 669 670 call cobol_emit (addr (err_ret_inst), null (), 1);/* tra 2|1 */ 671 /* Define a tag at the next instruction location, and make a reference to it at the first 672* instruction of the code stream generated so far. ( The transfer over the code. ) */ 673 674 temp_tag = cobol_$next_tag; 675 cobol_$next_tag = cobol_$next_tag + 1; 676 677 call cobol_define_tag (temp_tag); 678 call cobol_make_tagref (temp_tag, save_offset, null ()); 679 680 681 exit_emit_exp_proc: 682 return; 683 end emit_exp_proc; 684 685 /*{*/ 686 convert_or_move: 687 proc (source_token_ptr, dest_token_ptr); 688 689 /* 690*This internal procedure generates code to either 691* 1. convert an unsigned decimal or trailing sign 692* decimal value to a leading sign decimal value, and 693* store the converted result in a word-aligned 694* temporary, or 695* 2. move a leading signed decimal or a floating 696* decimal value from a byte-aligned address to a word- 697* aligned temporary. 698* 699**/ 700 701 /* DECLARATION OF THE PARAMETERS */ 702 703 dcl source_token_ptr ptr; 704 dcl dest_token_ptr ptr; 705 706 /* DESCRIPTION OF THE PARAMETERS */ 707 708 /* 709*PARAMETER DESCRIPTION 710* 711*source_token_ptr Pointer to a data name (type 9) token 712* that describes the value to be converted 713* or moved. (input) 714*dest_token_ptr Pointer to a data name (type 9) token 715* that describes the value that has been 716* converted or moved. (output) 717* 718**/ 719 720 /*}*/ 721 722 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 723 724 dcl 1 move_eos_token int static, 725 2 size fixed bin (15) init (40), 726 2 line fixed bin (15) init (0), 727 2 column fixed bin (15) init (0), 728 2 type fixed bin (15) init (19), /* EOS TOKEN */ 729 2 verb fixed bin (15) init (18), /* MOVE */ 730 2 e fixed bin (15) init (1); /* number of receiving operands */ 731 732 733 /* DECLARATION OF INTERNAL VARIABLES */ 734 735 dcl ret_offset fixed bin; 736 dcl token_buff (1:10) ptr; 737 738 /**************************************************/ 739 /* START OF EXECUTION */ 740 /* INTERNAL PROCEDURE: */ 741 /* convert_or_move */ 742 /**************************************************/ 743 744 745 start_convert_or_move: 746 dest_token_ptr = null (); /* Utility (make type 9) will provide buffer for the destination token */ 747 748 749 /* Make a token for the destination field */ 750 751 /* Make a copy of the source data name token. */ 752 call cobol_make_type9$copy (dest_token_ptr, source_token_ptr); 753 754 dn_ptr = dest_token_ptr; 755 data_name.occurs_ptr = 0; 756 data_name.edit_ptr = 0; 757 data_name.ascii_packed_dec = "0"b; 758 data_name.subscripted = "0"b; 759 data_name.display = "1"b; 760 761 if (data_name.sign_type = "000"b /* UNSIGNED */ | data_name.sign_type = "011"b /* TRAILING SEPERATE SIGN */) 762 then do; /* Sign type not acceptable to pl1 operator routine. */ 763 764 if data_name.sign_type = "000"b /* UNSIGNED */ 765 then data_name.item_length = data_name.item_length + 1; 766 /* Add one byte to hold sign */ 767 768 data_name.sign_type = "100"b; /* Change sign type to leading separate. */ 769 770 end; /* Sign type not acceptable to pl1 operator routine. */ 771 772 /* Allocate space on the run-time stack, on a word boundary, into which the move 773* and/or convert the source value. */ 774 call cobol_alloc$stack (fixed (data_name.item_length, 35), 0 /* Word boundary, return char offset */, 775 ret_offset); 776 777 /* Update the destination token to address the stack temporary. */ 778 data_name.seg_num = 1000; /* STACK */ 779 data_name.offset = ret_offset; /* From cobol_alloc$stack */ 780 781 /* Build the input token structure to pass to cobol_move_gen. */ 782 in_token_ptr = addr (token_buff (1)); 783 in_token.n = 4; 784 in_token.token_ptr (in_token.n) = addr (move_eos_token); 785 in_token.token_ptr (1) = null (); 786 in_token.token_ptr (2) = source_token_ptr; /* Source for the move */ 787 in_token.token_ptr (3) = dest_token_ptr; /* Destination of the move */ 788 789 /* Call the move generator to generate code to move/convert */ 790 call cobol_move_gen (in_token_ptr); 791 792 793 exit_convert_or_move: 794 return; 795 end convert_or_move; 796 797 /*{*/ 798 con_to_float_bin: 799 proc (source_token_ptr, result_seg, result_offset); 800 801 /* 802*This internal procedure generates code to convert a scaled, 803*leading sign decimal value, or a floating decimal value to a 804*double precision floating binary value. 805*The code that is generated, builds a "calling sequence" and 806*then "calls" the PL1 operator "real_to_real_rd". The 807*"calling sequence" is described in the paragraphs following 808*the declaration and description of the parameters. 809**/ 810 811 /* DECLARATION OF THE PARAMETERS */ 812 813 dcl source_token_ptr ptr; 814 dcl result_seg fixed bin; 815 dcl result_offset fixed bin (24); 816 817 /* DESCRIPTION OF THE PARAMETERS */ 818 819 /* 820*PARAMETER DESCRIPTION 821* 822*source_token_ptr Pointer to a data name token that describes 823* the value to be converted to double 824* precision floating binary. (input) This 825* value is assumed to be aligned on a word 826* boundary, and to be either a leading sign 827* scaled or floating decimal value. 828* 829*result_seg Segment number of the segment in which 830* the floating binary result of the conversion 831* is stored by the code generated by this 832* procedure. (output) 833* 834*result_offset Word offset, within the segment specified 835* by result_seg, of the result of the conversion. 836* This procedure allocates space for the 837* result such that the result_offset value 838* is always aligned on a double word 839* boundary. (output) 840* 841**/ 842 843 844 /* 845*ENTRY CONDITIONS for PL1 Operators Procedure 846* "real_to_real_rd" 847* 848*1. PR3 points to the value to be converted. 849* 850*2. PR1 points to storage into which the result of the conversion 851*is to be placed. If the result of the conversion is to 852*be a double-precision, floating binary value, then the pointer 853*register MUST point to a pair of 6180 words, aligned on a 854*double-word boundary. 855* 856*3. PR5 points to a block of work storage to be used by the 857*conversion routine. In this implementation, PR5 will always 858*point to the top of the run-time stack. 859* 860*4. Q-register contains the precision of the value to be 861*converted. (source of conversion) See details below. 862* 863*5. X7 contains a code that identifies the type of the value 864*to be converted. See details below. 865* 866*6. A-register contains the precision to which the value is to 867*be converted. (destination of conversion) See details below. 868* 869*7. X6 contains a code that identifies the type to which the 870*value is to be converted. See details below. 871* 872*DETAILS CONCERNING THE PRECISION AND TYPE CODES. 873* 874*The precision of the source and destination of the conversion 875*is specified in the Q and A registers, respectively. The precision 876*that may appear in this implementation are specified as follows: 877* 878* 1. If the source or destination of the conversion 879* is a numeric decimal, leading sign value, then bits 880* 0-17 of the Q or A contain the scale factor (in two's 881* complement format if negative) and bits 18-35 882* contain the precision. These values are obtained 883* from the data name token (type 9) of the source 884* or destination of conversion. 885* 886* a. scale factor is equal to the contents 887* of data_name.places_right. 888* 889* b. precision is equal to data_name.item_length 890* minus one. (one must be subtracted because 891* the value of item_length includes one byte 892* to hold the leading sign.) 893* 894* 2. If the source or destination of the conversion is 895* floating decimal, then the Q or A register contains 896* the precision, right justified. The precision 897* is obtained from the data name token as follows: 898* 899* precision = data_name.item_length - 2 900* 901* Two must be subtracted because item_length contains 902* one byte for sign, and one byte for the exponent. 903* 904* 905* 3. The codes that are specified in the index register 906* 6 or 7 for this implementation can be any of the 907* following: 908* 909* ------------------------------------------------- 910* code | meaning 911* -------------------------------------------------- 912* 8 | real, floating binary, double precision 913* 18 | real fixed decimal (leading sign) 914* 20 | real floating decimal 915* -------------------------------------------------- 916* 917**/ 918 /*}*/ 919 920 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 921 922 dcl lda_63_dl_const bit (36) int static init ("000000000000111111010011101000000111"b); 923 /* LDA 63,DL */ 924 925 /* DECLARATION OF INTERNAL VARIABLES */ 926 927 928 dcl 1 precision aligned, 929 2 scale_factor bit (18) unaligned, 930 2 precision bit (18) unaligned; 931 932 dcl precision_constant_ptr 933 ptr; 934 dcl precision_constant char (4) based (precision_constant_ptr); 935 936 dcl precision_offset fixed bin; 937 dcl source_type fixed bin; 938 dcl ret_offset fixed bin; 939 940 941 942 /**************************************************/ 943 /* START OF EXECUTION */ 944 /* INTERNAL PROCEDURE */ 945 /* con_to_float_bin */ 946 /**************************************************/ 947 948 949 /* Initialize pointers used in calls to the addressability utility */ 950 951 952 inst_ptr = addr (inst_buff (1)); 953 reloc_ptr = addr (reloc_buff (1)); 954 input_ptr = addr (input_buff (1)); 955 956 start_con_to_float_bin: /* Initialize pointers used in calls to the register handling procedures */ 957 pr_struc_ptr = addr (pr_struc); 958 reg_struc_ptr = addr (reg_struc); 959 960 /* Generate code to load PR3 with the address of the value being converted to floating binary. */ 961 962 pr_struc.what_pointer = 3; /* PR3 */ 963 pr_struc.lock = 0; /* Don't change locks */ 964 pr_struc.switch = 2; /* Segment number and character offset supplied. */ 965 pr_struc.segno = source_token_ptr -> data_name.seg_num; 966 /* Segment number of source. */ 967 pr_struc.offset = source_token_ptr -> data_name.offset; 968 /* Offset of source (in characters) */ 969 970 call pointer_register_load (pr_struc_ptr); /* Code is generated by this call */ 971 972 /* Get the Q register. */ 973 974 reg_struc.what_reg = 2; /* Q register */ 975 reg_struc.lock = 0; /* No locks */ 976 reg_struc.contains = 0; /* No meaningful data passed to register utility. */ 977 978 call cobol_register$load (reg_struc_ptr); 979 980 /* Generate code to load the Q register with the precision of the value being converted. */ 981 982 inst_buff (1) = 0; 983 984 if source_token_ptr -> data_name.sign_type ^= "111"b 985 then do; /* Not floating decimal, must be scaled decimal. */ 986 987 /* Build a constant containing the scale factor and precision. */ 988 precision_constant_ptr = addr (precision.scale_factor); 989 precision.scale_factor = bit (fixed (source_token_ptr -> data_name.places_right, 18, 0)); 990 precision.precision = bit (fixed (source_token_ptr -> data_name.item_length - 1, 18, 0)); 991 992 /* Pool the constant */ 993 call cobol_pool (precision_constant, 0 /* Word boundary, return character offset */, 994 precision_offset); 995 996 /* Set up input structure to the addressability utility. */ 997 998 input_struc_basic.type = 1; 999 input_struc_basic.operand_no = 0; 1000 input_struc_basic.lock = 0; 1001 input_struc_basic.segno = 3000; /* Constant section */ 1002 input_struc_basic.char_offset = precision_offset; 1003 input_struc_basic.send_receive = 0; /* Sending */ 1004 1005 /* Get the address of the pooled constant. */ 1006 call cobol_addr (input_ptr, inst_ptr, reloc_ptr); 1007 1008 source_type = 18; /* Real, scaled decimal */ 1009 1010 end; /* Not floating decimal, must be scaled decimal. */ 1011 1012 else do; /* Input value is floating decimal. */ 1013 1014 inst_struc_basic.wd_offset = bit (fixed (source_token_ptr -> data_name.item_length - 2, 15, 0)); 1015 inst_struc_basic.td = "0111"b; /* dl */ 1016 source_type = 20; /* Real, floating decimal */ 1017 1018 end; /* Input value is floating decimal. */ 1019 1020 /* Insert the LDQ opcode into the instruction */ 1021 1022 inst_struc_basic.fill1_op = ldq_op; 1023 1024 /* Emit the LDQ instruction. */ 1025 call cobol_emit (inst_ptr, reloc_ptr, 1); 1026 1027 /* Generate code to load index register 7 with a code that identifies the type of the value being converted. */ 1028 1029 /* Get index register 7 */ 1030 1031 reg_struc.what_reg = 17; /* Index register 7 */ 1032 reg_struc.lock = 0; 1033 reg_struc.contains = 0; 1034 call cobol_register$load (reg_struc_ptr); 1035 1036 1037 /* Complete the instruction */ 1038 inst_buff (1) = 0; 1039 inst_struc_basic.fill1_op = lxl7_op; 1040 inst_struc_basic.td = "0111"b; /* dl */ 1041 inst_struc_basic.wd_offset = bit (fixed (source_type, 15)); 1042 /* Code that identifies the type of the value 1043* being converted. */ 1044 1045 /* Emit the lxl7 instruction */ 1046 1047 reloc_buff (1) = 0; 1048 reloc_buff (2) = 0; 1049 call cobol_emit (inst_ptr, reloc_ptr, 1); 1050 1051 1052 /* Generate code to load the A register with the precision to which the value is to be conveerted. */ 1053 1054 /* Get the A register. */ 1055 reg_struc.what_reg = 1; /* A register. */ 1056 reg_struc.lock = 0; 1057 reg_struc.contains = 0; /* Register contents not meaningful for optimization. */ 1058 1059 call cobol_register$load (reg_struc_ptr); 1060 1061 reloc_buff (1) = 0; 1062 reloc_buff (2) = 0; 1063 1064 /* Since we're always converting to double precision floating binary, the LDA instruction to 1065* be emitted is a constant. */ 1066 1067 call cobol_emit (addr (lda_63_dl_const), reloc_ptr, 1); 1068 1069 /* Get index register 6 */ 1070 1071 reg_struc.what_reg = 16; /* Index register 6 */ 1072 call cobol_register$load (reg_struc_ptr); 1073 1074 /* Build the instruction. */ 1075 1076 inst_buff (1) = 0; 1077 inst_struc_basic.fill1_op = lxl6_op; 1078 inst_struc_basic.td = "0111"b; /* dl */ 1079 inst_struc_basic.wd_offset = bit (fixed (binary (8), 15)); 1080 /* Double precision, real floating binary code. */ 1081 1082 /* Emit the instruction. */ 1083 1084 call cobol_emit (inst_ptr, reloc_ptr, 1); 1085 1086 /* Generate code to load PR1 with the address of the variable to receive the converted value. */ 1087 1088 /* Get a temporary to receive the converted value. Note that the temporary must be aligned 1089* on a double_word boundary. */ 1090 1091 call cobol_alloc$stack (8, 2, ret_offset); 1092 result_offset = ret_offset; 1093 result_seg = 1000; /* STACK */ 1094 1095 /* Generate code to load PR1. */ 1096 1097 pr_struc.what_pointer = 1; /* PR1 */ 1098 pr_struc.switch = 1; /* Segment number and word offset suppolied. */ 1099 pr_struc.segno = result_seg; 1100 pr_struc.offset = result_offset; 1101 1102 call pointer_register_load (pr_struc_ptr); /* This called procedure generates the code. */ 1103 1104 /* Generate code to load PR 5 with a pointer to some work space (at the top of the run-time stack) 1105*for the PL1 operator procedure's use. Note that the temporary space must be aligned on a double 1106*word boundary. */ 1107 1108 /* Allocate some space on an even-word boundary. */ 1109 call cobol_alloc$stack (8, 2, ret_offset); 1110 1111 /* Generate code to load PR5. */ 1112 1113 pr_struc.what_pointer = 5; /* PR5 */ 1114 pr_struc.switch = 1; /* Segment number and word offset supplied. */ 1115 pr_struc.segno = 1000; /* Stack */ 1116 pr_struc.offset = ret_offset; /* From cobol_alloc$stack */ 1117 call pointer_register_load (pr_struc_ptr); /* This call generates code. */ 1118 1119 reloc_buff (1) = 0; 1120 reloc_buff (2) = 0; 1121 1122 /* Generate code to transfer to the PL1 operator "real_to_real_rd" */ 1123 1124 inst_buff (1) = 0; 1125 inst_struc_basic.fill1_op = tsx0_op; 1126 inst_struc_basic.wd_offset = bit (fixed (cobol_op_real_to_real_rd, 15, 0)); 1127 inst_struc_basic.pr_spec = "1"b; /* Pointer register specified in the instruction */ 1128 1129 1130 /* Emit the tsx0 instruction. */ 1131 call cobol_emit (inst_ptr, reloc_ptr, 1); 1132 1133 1134 exit_con_to_float_bin: 1135 return; 1136 end con_to_float_bin; 1137 1138 /*{*/ 1139 do_exponentiation: 1140 proc (lop_seg, lop_offset, rop_seg, rop_offset, result_seg, result_offset, imperative_stmt_tag, exp_proc_tag, 1141 restart_tag); 1142 1143 /* 1144*This procedure generates code that does the exponentiation of 1145*a value. The exponentiation is performed by the PL1 operators 1146*procedure "dbl_p_dbl". A description of the calling sequence 1147*and returned results of "dbl_p_dbl" follows the declaration 1148*and description of the parameters . 1149**/ 1150 1151 /* DECLARATION OF THE PARAMETERS */ 1152 1153 dcl lop_seg fixed bin; 1154 dcl lop_offset fixed bin (24); 1155 dcl rop_seg fixed bin; 1156 dcl rop_offset fixed bin (24); 1157 dcl result_seg fixed bin; 1158 dcl result_offset fixed bin (24); 1159 dcl imperative_stmt_tag fixed bin; 1160 dcl exp_proc_tag fixed bin; 1161 dcl restart_tag fixed bin; 1162 1163 /* DESCRIPTION OF THE PARAMETERS */ 1164 1165 /* 1166*PARAMETER DESCRIPTION 1167* 1168*lop_seg Contains the segment number of the double 1169* precision floating binary value to be 1170* exponentiated. (input) 1171*lop_offset Contains the word offset of the value 1172* to be exponentiated. (input) 1173*rop_seg Contains the segment number of the double 1174* precision floating binary value of the 1175* exponent. (input) 1176*rop_offset Contains the word offset of the exopnent 1177* in the segment specified by rop_seg. (input) 1178*result_seg Contains the segment number of a 1179* double-word aligned temporary into which 1180* the result of the exponentiation is stored. 1181* (output) 1182*result_offset Contains the word offset, in the segment 1183* specified by result_seg, of the result 1184* of the exponentiation. (output) 1185*imperative_stmt_tag A tag (label) number reserved and defined 1186* by the calling procedure at the imperative 1187* statement, if an ON SIZE ERROR clause was 1188* present in the source statement. (input) 1189* If this input value is zero, then no ON 1190* SIZE ERROR clause was present in the source 1191* statement being processed. 1192* 1193*exp_proc_tag a tag (label) defined at the "entry" inst- 1194* ruction of the internal procedure that does 1195* the exponentiation. (input) 1196*restart_tag A tag (label) defined at the first instruction 1197* of the code sequence that does the 1198* exponentiation. This tag , if not zero, is the 1199* tag to which to transfer if an execution time 1200* error is detected, and the user chooses to 1201* restart. (input) 1202* 1203* 1204* 1205**/ 1206 1207 /*}*/ 1208 1209 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 1210 1211 dcl tra_insts (2) bit (36) int static init ("000000000000000010111001000000000100"b, 1212 /* tra 2,ic */ 1213 "000000000000000000111001000000000000"b); 1214 /* tra 0 */ 1215 1216 /* DECLARATION OF INTERNAL VARIABLES */ 1217 1218 dcl temp_offset fixed bin; 1219 dcl temp_seg fixed bin; 1220 dcl temp_tag fixed bin; 1221 1222 1223 /**************************************************/ 1224 /* START OF EXECUTION */ 1225 /* INTERNAL PROCEDURE */ 1226 /* do_exponentiation */ 1227 /**************************************************/ 1228 start_do_exponentiation: /* Initialize pointers used in calls to the addressability utility */ 1229 inst_ptr = addr (inst_buff (1)); 1230 input_ptr = addr (input_buff (1)); 1231 reloc_ptr = addr (reloc_buff (1)); 1232 1233 /* Generate code to load the value being exponentiated into the EAQ registers. */ 1234 1235 /* Get the A and Q registers. */ 1236 1237 reg_struc.what_reg = 3; /* A and Q */ 1238 reg_struc.lock = 0; 1239 reg_struc.contains = 0; /* No register optimization possible. */ 1240 1241 call cobol_register$load (reg_struc_ptr); 1242 1243 /* Build the DFLD instruction */ 1244 1245 inst_buff (1) = 0; 1246 input_struc_basic.type = 1; 1247 input_struc_basic.operand_no = 0; 1248 input_struc_basic.lock = 0; 1249 input_struc_basic.segno = lop_seg; 1250 input_struc_basic.char_offset = lop_offset * 4; 1251 1252 /* Get the address of the value being exponentiated. */ 1253 call cobol_addr (input_ptr, inst_ptr, reloc_ptr); 1254 1255 /* Insert the dfld opcode */ 1256 inst_struc_basic.fill1_op = dfld_op; 1257 1258 /* Emit the instruction */ 1259 call cobol_emit (inst_ptr, reloc_ptr, 1); 1260 1261 /* Generate code to load PR1 with the address of the exponent. */ 1262 1263 pr_struc.what_pointer = 1; /* PR1 */ 1264 pr_struc.lock = 0; 1265 pr_struc.switch = 1; /* Segment number and word offset supplied. */ 1266 pr_struc.segno = rop_seg; 1267 pr_struc.offset = rop_offset; 1268 1269 call pointer_register_load (pr_struc_ptr); /* This procedure generates code to load the pr1 */ 1270 1271 /* Generate code to load PR2 with the address of some temporary storage for use by the PL1 operator 1272*procedure. The temporary storage must be aligned on a double word boundary. */ 1273 1274 /* Get some space on a double word boundary. */ 1275 call cobol_alloc$stack (8, 2, temp_offset); 1276 temp_seg = 1000; /* STACK */ 1277 1278 /* Set up the input structure to the pointer register routine. */ 1279 pr_struc.what_pointer = 2; /* PR2 */ 1280 pr_struc.segno = temp_seg; /* STACK, remember. */ 1281 pr_struc.offset = temp_offset; /* From cobol_alloc$stack */ 1282 1283 call pointer_register_load (pr_struc_ptr); 1284 1285 1286 /* Generate code to load X7 with 0 if no OSE was present, and with 1 if OSE was present. */ 1287 1288 inst_buff (1) = 0; 1289 inst_struc_basic.fill1_op = lxl7_op; 1290 inst_struc_basic.td = "0111"b; /* dl */ 1291 if imperative_stmt_tag = 0 1292 then inst_struc_basic.wd_offset = "0"b; /* lxl7 0,dl NO OSE PRESENT */ 1293 else inst_struc_basic.wd_offset = bit (fixed (binary (1), 15)); 1294 /* lxl7 binary(1),dl OSE WAS PRESENT */ 1295 call cobol_emit (inst_ptr, null (), 1); 1296 1297 /* Generate code to transfer to the PL1 operator procedure "dbl_p_dbl". */ 1298 1299 /* Generate code to transfer to the PL1 operator procedure "dbl_p_dbl". */ 1300 1301 inst_buff (1) = 0; 1302 inst_struc_basic.fill1_op = tsp3_op; 1303 inst_struc_basic.pr_spec = "0"b; /* No PR specified in this instruction */ 1304 inst_struc_basic.wd_offset = "0"b; 1305 1306 reloc_buff (1) = 0; 1307 reloc_buff (2) = 0; 1308 1309 /* Emit the TSP3 instruction */ 1310 call cobol_emit (inst_ptr, reloc_ptr, 1); 1311 1312 /* Make a refernece to exp_proc_tag at the instruction just emitted. */ 1313 call cobol_make_tagref (exp_proc_tag, cobol_$text_wd_off - 1, null ()); 1314 1315 1316 /* Emit the error return instruction. The error return instruction is always a 1317* transfer instruction, that transfers to one of two places: 1318* 1. If an ON SIZE ERROR clause was present, then the transfer instruction 1319* transfers to the on size clause. 1320* 2. If no OSE clause was present, then control will be returned to this instruction 1321* only if an execution time exponentiation error is detected, and the user 1322* hits restart. (hopefully after using debug to fix the cause of the execution 1323* time_error). Under these conditions, the transfer instruction returns to the 1324* first instruction of the code sequence that performs the exponentiation. */ 1325 1326 call cobol_emit (addr (tra_insts), null (), 2); 1327 1328 1329 if imperative_stmt_tag ^= 0 1330 then temp_tag = imperative_stmt_tag; /* ON SIZE ERROR clause was present. */ 1331 else temp_tag = restart_tag; /* no OSE clause present in the source statement. */ 1332 1333 1334 1335 /* Fixup the transfer instruction just emitted to reference the proper tag. */ 1336 call cobol_make_tagref (temp_tag, cobol_$text_wd_off - 1, null ()); 1337 1338 1339 /* On returning from "dbl_p_dbl", the result of the exponentiation is contained as a double precision 1340*floating binnary value in the EAQ. Now we generate code to store the EAQ into a temporary. */ 1341 1342 /* Allocate some space to receive the result. Note that the temporary must be aligned on a 1343*double word boundary. */ 1344 1345 call cobol_alloc$stack (8, 2, temp_offset); 1346 result_offset = temp_offset; 1347 result_seg = 1000; /* STACK */ 1348 1349 inst_buff (1) = 0; 1350 inst_struc_basic.fill1_op = dfst_op; 1351 inst_struc_basic.pr_spec = "1"b; 1352 inst_struc_basic.pr = "110"b; /* PR6 */ 1353 inst_struc_basic.wd_offset = bit (fixed (result_offset, 15, 0)); 1354 1355 reloc_buff (1) = 0; 1356 reloc_buff (2) = 0; 1357 1358 1359 call cobol_emit (inst_ptr, reloc_ptr, 1); 1360 1361 exit_do_exponentiation: 1362 return; 1363 end do_exponentiation; 1364 1365 /*{*/ 1366 con_from_float_bin: 1367 proc (source_seg, source_offset, result_ptr); 1368 1369 /* 1370*This procedure generates code to convert a value from double 1371*precision floating binary to floating decimal. The actual 1372*conversion is performed by the PL1 operators procedure 1373*"real_to_real_rd". A description of the "calling sequence" 1374*to this PL1 operators procedure follows the declaration and 1375*description of the parameters. 1376**/ 1377 1378 /* DECLARATION OF THE PARAMETERS */ 1379 1380 dcl source_seg fixed bin; 1381 dcl source_offset fixed bin (24); 1382 dcl result_ptr ptr; 1383 1384 /* DESCRIPTION OF THE PARAMETERS */ 1385 /* 1386*PARAMETER DESCRIPTION 1387* 1388*source_seg Segment number of the double precision 1389* floating binary value to be converted. 1390* (input) 1391*source_offset Word offset of the value, within the 1392* segment specified by result_seg, of the 1393* value to be converted. (input) 1394*result_ptr Pointer to a data name token (type 9) 1395* that describes where the converted value 1396* is to be stored. (input) 1397* 1398**/ 1399 1400 1401 /* 1402*ENTRY CONDITIONS for PL1 Operators Procedure 1403* "real_to_real_rd" 1404* 1405*1. PR3 points to the value to be converted. 1406* 1407*2. PR1 points to storage into which the result of the conversion 1408*is to be placed. If the result of the conversion is to 1409*be a double-precision, floating binary value, then the pointer 1410*register MUST point to a pair of 6180 words, aligned on a 1411*double-word boundary. 1412* 1413*3. PR5 points to a block of work storage to be used by the 1414*conversion routine. In this implementation, PR5 will always 1415*point to the top of the run-time stack. 1416* 1417*4. Q-register contains the precision of the value to be 1418*converted. (source of conversion) See details below. 1419* 1420*5. X7 contains a code that identifies the type of the value 1421*to be converted. See details below. 1422* 1423*6. A-register contains the precision to which the value is to 1424*be converted. (destination of conversion) See details below. 1425* 1426*7. X6 contains a code that identifies the type to which the 1427*value is to be converted. See details below. 1428* 1429*DETAILS CONCERNING THE PRECISION AND TYPE CODES. 1430* 1431*The precision of the source and destination of the conversion 1432*is specified in the Q and A registers, respectively. The precision 1433*that may appear in this implementation are specified as follows: 1434* 1435* 1. If the source or destination of the conversion 1436* is a numeric decimal, leading sign value, then bits 1437* 0-17 of the Q or A contain the scale factor (in two's 1438* complement format if negative) and bits 18-35 1439* contain the precision. These values are obtained 1440* from the data name token (type 9) of the source 1441* or destination of conversion. 1442* 1443* a. scale factor is equal to the contents 1444* of data_name.places_right. 1445* 1446* b. precision is equal to data_name.item_length 1447* minus one. (one must be subtracted because 1448* the value of item_length includes one byte 1449* to hold the leading sign.) 1450* 1451* 2. If the source or destination of the conversion is 1452* floating decimal, then the Q or A register contains 1453* the precision, right justified. The precision 1454* is obtained from the data name token as follows: 1455* 1456* precision = data_name.item_length - 2 1457* 1458* Two must be subtracted because item_length contains 1459* one byte for sign, and one byte for the exponent. 1460* 1461* 1462* 3. The codes that are specified in the index register 1463* 6 or 7 for this implementation can be any of the 1464* following: 1465* 1466* ------------------------------------------------- 1467* code | meaning 1468* -------------------------------------------------- 1469* 8 | real, floating binary, double precision 1470* 18 | real fixed decimal (leading sign) 1471* 20 | real floating decimal 1472* -------------------------------------------------- 1473* 1474**/ 1475 /*}*/ 1476 1477 /* DECLARATIONS OF INTERNAL STATIC VARIABLES */ 1478 1479 dcl a_and_x7 (2) bit (36) int static init ("000000000000111111010011110000000111"b, 1480 /* LDQ 63,DL */ 1481 "000000000000001000111010111000000111"b /* LXL7 8,DL */); 1482 1483 dcl lxl6_20_dl bit (36) int static init ("000000000000010100111010110000000111"b /* LXL6 20,DL */); 1484 /* DECLARATION OF INTERNAL VARIABLES */ 1485 1486 dcl ret_offset fixed bin; 1487 1488 1489 1490 1491 /**************************************************/ 1492 /* START OF EXECUTION */ 1493 /* INTERNAL PROCEDURE */ 1494 /* con_from_float_bin */ 1495 /**************************************************/ 1496 1497 1498 1499 start_con_from_float_bin: /* Initialize pointers used to communicate with the addressability utility */ 1500 input_ptr = addr (input_buff (1)); 1501 inst_ptr = addr (inst_buff (1)); 1502 reloc_ptr = addr (reloc_buff (1)); 1503 1504 /* Generate code to load the address of the value to be converted into PR3. */ 1505 1506 pr_struc.what_pointer = 3; /* PR3 */ 1507 pr_struc.lock = 0; 1508 pr_struc.switch = 1; /* Segment number and word offset are supplied. */ 1509 pr_struc.segno = source_seg; 1510 pr_struc.offset = source_offset; 1511 1512 call pointer_register_load (pr_struc_ptr); 1513 1514 /* Generate code to load the Q register with the precision of the value being converted, and index register 1515*7 with a code that identifies the type code of the value being converted. Since this procedure always converts 1516*from double precision floating binary, both values are known, and are always constants. 1517* Q is always loaded with 63 (decimal). 1518* x7 is always loaded with 8. 1519**/ 1520 1521 1522 inst_ptr = addr (a_and_x7 (1)); 1523 reloc_buff (1) = 0; 1524 reloc_buff (2) = 0; 1525 reloc_buff (3) = 0; 1526 reloc_buff (4) = 0; 1527 1528 call cobol_emit (inst_ptr, reloc_ptr, 2); 1529 1530 /* Generate code to load PR1 with the address of the variable to receive the converted value. */ 1531 1532 pr_struc.what_pointer = 1; 1533 pr_struc.switch = 2; 1534 pr_struc.segno = result_ptr -> data_name.seg_num; 1535 pr_struc.offset = result_ptr -> data_name.offset; 1536 1537 call pointer_register_load (pr_struc_ptr); /* This procedure generates the code. */ 1538 1539 /* Generate code to load the A register with the precision of the receiving field. */ 1540 1541 inst_ptr = addr (inst_buff (1)); 1542 inst_buff (1) = 0; 1543 inst_struc_basic.wd_offset = bit (fixed (result_ptr -> data_name.item_length - 2, 15, 0)); 1544 inst_struc_basic.fill1_op = lda_op; 1545 inst_struc_basic.td = "0111"b; /* dl */ 1546 inst_buff (2) = fixed (lxl6_20_dl, 35); 1547 1548 call cobol_emit (inst_ptr, reloc_ptr, 2); 1549 1550 /* Generate code to load PR5 with the address of some temporary space for use the the PL1 1551*operator procedure. Note that the temporary must be aligned on a double word boundary. */ 1552 1553 /* Get some temporary */ 1554 call cobol_alloc$stack (8, 2, ret_offset); 1555 1556 pr_struc.what_pointer = 5; 1557 pr_struc.lock = 0; 1558 pr_struc.switch = 1; /* Segment number and word offset supplied */ 1559 pr_struc.segno = 1000; /* STACK */ 1560 pr_struc.offset = ret_offset; /* From cobol_alloc$stack */ 1561 1562 /* Generate the code */ 1563 call pointer_register_load (pr_struc_ptr); 1564 1565 /* Generate code to transfer to the PL1 operator procedure "real_to_real_rd" */ 1566 1567 1568 call cobol_call_op (15, 0); 1569 1570 exit_con_from_float_bin: 1571 return; 1572 end con_from_float_bin; 1573 1574 1575 pointer_register_load: 1576 proc (pr_struc_ptr); 1577 1578 /* 1579*This internal procedure generates code to load a pointer 1580*register with the addrress of a word aligned value. This 1581*procedure is necessary because the code generated to perform 1582*exponentation uses the Cobol "reserved" pointer registers 3 and 5 1583*to communicate with the PL1 operator procedures that do the 1584*necessary conversion and exponentiation. The cobol pointer 1585*register handler routine, cobol_pointer_register$get, is not 1586*adequate for use here, because of the way it marks registers 1587*as being loaded, for possible optimization or error checking. 1588**/ 1589 1590 /* DECLARATION OF THE PARAMETER */ 1591 1592 dcl pr_struc_ptr ptr; 1593 1594 /* DESCRIPTION OF THE PARAMETER */ 1595 /* 1596* 1597*pr_struc_ptr Pointer to a structure that provides input 1598* information to this procedure. (input) 1599* This structure is described and declared 1600* below. 1601* 1602**/ 1603 1604 1605 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 1606 1607 /* Declaration of the opcodes for the EPP instructions */ 1608 1609 dcl epp_opcode (0:7) bit (10) aligned int static init ("0111010000"b, 1610 /* EPP0 */ 1611 "0111010011"b, /* EPP1 */ 1612 "0111010100"b, /* EPP2 */ 1613 "0111010111"b, /* EPP3 */ 1614 "0111110000"b, /* EPP4 */ 1615 "0111110011"b, /* EPP5 */ 1616 "0111110100"b, /* EPP6 */ 1617 "0111110111"b /* EPP7 */); 1618 1619 1620 /* DECLARATION OF INTERNAL VARIABLES */ 1621 1622 dcl 1 pr_struc based (pr_struc_ptr), 1623 2 what_pointer fixed bin, 1624 2 pointer_no bit (3), 1625 2 lock fixed bin, 1626 2 switch fixed bin, 1627 2 segno fixed bin, 1628 2 offset fixed bin (24), 1629 2 reset fixed bin; 1630 1631 /* 1632* what_pointer specifies the pointer register to be obtained. 1633* (input) 1634* 0-7 - get this pointer register. 1635*pointer_no Not used by this procedure. 1636*lock Not used by this procedure. 1637* switch has the following values. (input) 1638* 1 - a segment number and word offset are supplied. 1639* 2 - a segment number and character offset are supplied 1640* segno is the segment number. (input) 1641* values recognized are: 1642* 2 - cobol data. 1643* 1000 - stack. 1644* 3000 - constants. 1645* 3002 - multics linkage. 1646* 4000 - cobol operators. 1647* 2nnnn - cobol linkage. 1648* -n - link in multics linkage. 1649* offset is the word or character offset (depending on switch). 1650* If a character offset is provided only the word 1651* portion is meaningful. (input) 1652*reset Not used by this procedure. 1653**/ 1654 1655 dcl tchar_offset fixed bin; 1656 1657 1658 /**************************************************/ 1659 /* START OF EXECUTION */ 1660 /* INTERNAL PROCEDURE */ 1661 /* pointer_register_load */ 1662 /**************************************************/ 1663 1664 start_pointer_register_load: /* Initialize pointers used in calls to the addressability utility. */ 1665 inst_ptr = addr (inst_buff (1)); 1666 input_ptr = addr (input_buff (1)); 1667 reloc_ptr = addr (reloc_buff (1)); 1668 1669 if pr_struc.switch = 1 1670 then tchar_offset = pr_struc.offset * 4; /* Convert from word to char offset */ 1671 else tchar_offset = pr_struc.offset; 1672 1673 /* Set up the input structure to the addressability utility. */ 1674 1675 input_struc_basic.type = 1; 1676 input_struc_basic.operand_no = 0; 1677 input_struc_basic.lock = 0; /* No locks */ 1678 input_struc_basic.segno = pr_struc.segno; 1679 input_struc_basic.char_offset = tchar_offset; 1680 input_struc_basic.send_receive = 0; /* sending */ 1681 1682 /* Call the addressability utility */ 1683 call cobol_addr (input_ptr, inst_ptr, reloc_ptr); 1684 1685 /* Insert the appropriate EPP opcode into the instruction. */ 1686 1687 inst_struc_basic.fill1_op = epp_opcode (pr_struc.what_pointer); 1688 1689 /* Emit the EPP instruction */ 1690 call cobol_emit (inst_ptr, reloc_ptr, 1); 1691 1692 exit_pointer_register_load: 1693 return; 1694 end pointer_register_load; 1695 1696 1697 /***** Declaration for builtin function *****/ 1698 1699 dcl (substr, mod, binary, fixed, addr, addrel, rel, length, string, unspec, null, index) 1700 builtin; 1701 1702 /***** End of declaration for builtin function *****/ 1703 1 1 1 2 /* BEGIN INCLUDE FILE ... cobol_type9.incl.pl1 */ 1 3 /* Last modified on 11/19/76 by ORN */ 1 4 1 5 /* 1 6*A type 9 data name token is entered into the name table by the data 1 7*division syntax phase for each data name described in the data division. 1 8*The replacement phase subsequently replaces type 8 user word references 1 9*to data names in the procedure division minpral file with the corresponding 1 10*type 9 tokens from the name table. 1 11**/ 1 12 1 13 /* dcl dn_ptr ptr; */ 1 14 1 15 /* BEGIN DECLARATION OF TYPE9 (DATA NAME) TOKEN */ 1 16 dcl 1 data_name based (dn_ptr), 2 1 2 2 /* begin include file ... cobol_TYPE9.incl.pl1 */ 2 3 /* Last modified on 06/19/77 by ORN */ 2 4 /* Last modified on 12/28/76 by FCH */ 2 5 2 6 /* header */ 2 7 2 size fixed bin, 2 8 2 line fixed bin, 2 9 2 column fixed bin, 2 10 2 type fixed bin, 2 11 /* body */ 2 12 2 string_ptr ptr, 2 13 2 prev_rec ptr, 2 14 2 searched bit (1), 2 15 2 duplicate bit (1), 2 16 2 saved bit (1), 2 17 2 debug_ind bit (1), 2 18 2 filler2 bit (3), 2 19 2 used_as_sub bit (1), 2 20 2 def_line fixed bin, 2 21 2 level fixed bin, 2 22 2 linkage fixed bin, 2 23 2 file_num fixed bin, 2 24 2 size_rtn fixed bin, 2 25 2 item_length fixed bin(24), 2 26 2 places_left fixed bin, 2 27 2 places_right fixed bin, 2 28 /* description */ 2 29 2 file_section bit (1), 2 30 2 working_storage bit (1), 2 31 2 constant_section bit (1), 2 32 2 linkage_section bit (1), 2 33 2 communication_section bit (1), 2 34 2 report_section bit (1), 2 35 2 level_77 bit (1), 2 36 2 level_01 bit (1), 2 37 2 non_elementary bit (1), 2 38 2 elementary bit (1), 2 39 2 filler_item bit (1), 2 40 2 s_of_rdf bit (1), 2 41 2 o_of_rdf bit (1), 2 42 2 bin_18 bit (1), 2 43 2 bin_36 bit (1), 2 44 2 pic_has_l bit (1), 2 45 2 pic_is_do bit (1), 2 46 2 numeric bit (1), 2 47 2 numeric_edited bit (1), 2 48 2 alphanum bit (1), 2 49 2 alphanum_edited bit (1), 2 50 2 alphabetic bit (1), 2 51 2 alphabetic_edited bit (1), 2 52 2 pic_has_p bit (1), 2 53 2 pic_has_ast bit (1), 2 54 2 item_signed bit(1), 2 55 2 sign_separate bit (1), 2 56 2 display bit (1), 2 57 2 comp bit (1), 2 58 2 ascii_packed_dec_h bit (1), /* as of 8/16/76 this field used for comp8. */ 2 59 2 ascii_packed_dec bit (1), 2 60 2 ebcdic_packed_dec bit (1), 2 61 2 bin_16 bit (1), 2 62 2 bin_32 bit (1), 2 63 2 usage_index bit (1), 2 64 2 just_right bit (1), 2 65 2 compare_argument bit (1), 2 66 2 sync bit (1), 2 67 2 temporary bit (1), 2 68 2 bwz bit (1), 2 69 2 variable_length bit (1), 2 70 2 subscripted bit (1), 2 71 2 occurs_do bit (1), 2 72 2 key_a bit (1), 2 73 2 key_d bit (1), 2 74 2 indexed_by bit (1), 2 75 2 value_numeric bit (1), 2 76 2 value_non_numeric bit (1), 2 77 2 value_signed bit (1), 2 78 2 sign_type bit (3), 2 79 2 pic_integer bit (1), 2 80 2 ast_when_zero bit (1), 2 81 2 label_record bit (1), 2 82 2 sign_clause_occurred bit (1), 2 83 2 okey_dn bit (1), 2 84 2 subject_of_keyis bit (1), 2 85 2 exp_redefining bit (1), 2 86 2 sync_in_rec bit (1), 2 87 2 rounded bit (1), 2 88 2 ad_bit bit (1), 2 89 2 debug_all bit (1), 2 90 2 overlap bit (1), 2 91 2 sum_counter bit (1), 2 92 2 exp_occurs bit (1), 2 93 2 linage_counter bit (1), 2 94 2 rnm_01 bit (1), 2 95 2 aligned bit (1), 2 96 2 not_user_writable bit (1), 2 97 2 database_key bit (1), 2 98 2 database_data_item bit (1), 2 99 2 seg_num fixed bin, 2 100 2 offset fixed bin(24), 2 101 2 initial_ptr fixed bin, 2 102 2 edit_ptr fixed bin, 2 103 2 occurs_ptr fixed bin, 2 104 2 do_rec char(5), 2 105 2 bitt bit (1), 2 106 2 byte bit (1), 2 107 2 half_word bit (1), 2 108 2 word bit (1), 2 109 2 double_word bit (1), 2 110 2 half_byte bit (1), 2 111 2 filler5 bit (1), 2 112 2 bit_offset bit (4), 2 113 2 son_cnt bit (16), 2 114 2 max_red_size fixed bin(24), 2 115 2 name_size fixed bin, 2 116 2 name char(0 refer(data_name.name_size)); 2 117 2 118 2 119 2 120 /* end include file ... cobol_TYPE9.incl.pl1 */ 2 121 1 17 1 18 /* END DECLARATION OF TYPE9 (DATA NAME) TOKEN */ 1 19 1 20 /* END INCLUDE FILE ... cobol_type9.incl.pl1 */ 1 21 1704 3 1 3 2 /* BEGIN INCLUDE FILE ... cobol_addr_tokens.incl.pl1 */ 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(89-04-23,Zimmerman), approve(89-04-23,MCR8058), 3 7* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 3 8* MCR8058 cobol_addr_tokens.incl.pl1 Change array extents to refer to 3 9* constants rather than variables. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /* Last modified on 10/1/74 by tg */ 3 14 3 15 3 16 /* parameter list */ 3 17 3 18 dcl (input_ptr, inst_ptr, reloc_ptr) ptr; 3 19 3 20 3 21 /* input_struc_basic is used for type 1 addressing */ 3 22 3 23 dcl 1 input_struc_basic based (input_ptr), 3 24 2 type fixed bin, 3 25 2 operand_no fixed bin, 3 26 2 lock fixed bin, 3 27 2 segno fixed bin, 3 28 2 char_offset fixed bin (24), 3 29 2 send_receive fixed bin; 3 30 3 31 3 32 dcl 1 input_struc based (input_ptr), 3 33 2 type fixed bin, 3 34 2 operand_no fixed bin, 3 35 2 lock fixed bin, 3 36 2 operand (0 refer (input_struc.operand_no)), 3 37 3 token_ptr ptr, 3 38 3 send_receive fixed bin, 3 39 3 ic_mod fixed bin, 3 40 3 size_sw fixed bin; 3 41 3 42 /* reloc_struc is used for all types of addressing * all types */ 3 43 3 44 dcl 1 reloc_struc (input_struc.operand_no + 1) based (reloc_ptr), 3 45 2 left_wd bit (5) aligned, 3 46 2 right_wd bit (5) aligned; 3 47 3 48 /* Instruction format for 1 word instruction */ 3 49 3 50 3 51 dcl 1 inst_struc_basic based (inst_ptr) aligned, 3 52 2 y unaligned, 3 53 3 pr bit (3) unaligned, 3 54 3 wd_offset bit (15) unaligned, 3 55 2 fill1_op bit (10) unaligned, 3 56 2 zero1 bit (1) unaligned, 3 57 2 pr_spec bit (1) unaligned, 3 58 2 tm bit (2) unaligned, 3 59 2 td bit (4) unaligned; 3 60 3 61 3 62 /* The detailed definitions of the fields in this structure 3 63* can be found in the GMAP manual section 8 */ 3 64 /* EIS instruction format for 2_4 word instructions */ 3 65 3 66 dcl 1 inst_struc based (inst_ptr) aligned, 3 67 2 inst unaligned, 3 68 3 zero1 bit (2) unaligned, 3 69 3 mf3 unaligned, 3 70 4 pr_spec bit (1) unaligned, 3 71 4 reg_or_length bit (1) unaligned, 3 72 4 zero2 bit (1) unaligned, 3 73 4 reg_mod bit (4) unaligned, 3 74 3 zero3 bit (2) unaligned, 3 75 3 mf2 unaligned, 3 76 4 pr_spec bit (1) unaligned, 3 77 4 reg_or_length bit (1) unaligned, 3 78 4 zero4 bit (1) unaligned, 3 79 4 reg_mod bit (4) unaligned, 3 80 3 fill1_op bit (10) unaligned, 3 81 3 zero5 bit (1) unaligned, 3 82 3 mf1 unaligned, 3 83 4 pr_spec bit (1) unaligned, 3 84 4 reg_or_length bit (1) unaligned, 3 85 4 zero6 bit (1) unaligned, 3 86 4 reg_mod bit (4) unaligned, 3 87 2 desc_ext unaligned, 3 88 3 desc (512) unaligned, 3 89 4 desc_od bit (36) unaligned; 3 90 3 91 /* The detailed definitions of the fields in this structure 3 92* can be found in the GMAP manual section 8. 3 93* The desc_ext is the descriptor extension of this eis 3 94* instruction. The number of descriptors associated with 3 95* this instruction is equavalent to the operand number. 3 96* Depending on operand data type, the descriptor 3 97* can be alphanumeric or numeric. The structures of the 3 98* alphanumeric and the numeric descriptors are defined 3 99* below. */ 3 100 3 101 /* alphanumeric descriptor format */ 3 102 3 103 dcl 1 desc_an based (desc_an_ptr) unaligned, 3 104 2 desc_f (512) unaligned, 3 105 3 y unaligned, 3 106 4 pr bit (3) unaligned, 3 107 4 wd_offset bit (15) unaligned, 3 108 3 char_n bit (3) unaligned, 3 109 3 zero1 bit (1) unaligned, 3 110 3 ta bit (2), 3 111 3 n bit (12) unaligned; 3 112 3 113 3 114 /* The detailed definitions of the fields in this structure can 3 115* be found in the GMAP manual section 8. */ 3 116 /* numeric descriptor format */ 3 117 3 118 dcl desc_nn_ptr ptr; 3 119 dcl desc_an_ptr ptr; 3 120 3 121 3 122 dcl 1 desc_nn based (desc_nn_ptr) unaligned, 3 123 2 desc_f (512) unaligned, 3 124 3 y unaligned, 3 125 4 pr bit (3) unaligned, 3 126 4 wd_offset bit (15) unaligned, 3 127 3 digit_n bit (3) unaligned, 3 128 3 tn bit (1) unaligned, 3 129 3 sign_type bit (2) unaligned, 3 130 3 scal bit (6) unaligned, 3 131 3 n bit (6) unaligned; 3 132 3 133 3 134 /* The detailed definitions of fields in this structure can 3 135* be found in the GMAP manual section 8. */ 3 136 /* END INCLUDE FILE ... cobol_addr_tokens.incl.pl1 */ 3 137 1705 4 1 4 2 /* BEGIN INCLUDE FILE ... cobol_in_token.incl.pl1 */ 4 3 4 4 /* Last modified August 22, 1974 by AEG */ 4 5 4 6 4 7 declare in_token_ptr ptr; 4 8 4 9 declare 1 in_token aligned based(in_token_ptr), 4 10 2 n fixed bin aligned, 4 11 2 code fixed bin aligned, 4 12 2 token_ptr(0 refer(in_token.n)) ptr aligned; 4 13 4 14 4 15 /* END INCLUDE FILE ... cobol_in_token.incl.pl1 */ 4 16 1706 5 1 5 2 /* BEGIN INCLUDE FILE ... cobol_.incl.pl1 */ 5 3 /* last modified Feb 4, 1977 by ORN */ 5 4 5 5 /* This file defines all external data used in the generator phase of Multics Cobol */ 5 6 5 7 /* POINTERS */ 5 8 dcl cobol_$text_base_ptr ptr ext; 5 9 dcl text_base_ptr ptr defined (cobol_$text_base_ptr); 5 10 dcl cobol_$con_end_ptr ptr ext; 5 11 dcl con_end_ptr ptr defined (cobol_$con_end_ptr); 5 12 dcl cobol_$def_base_ptr ptr ext; 5 13 dcl def_base_ptr ptr defined (cobol_$def_base_ptr); 5 14 dcl cobol_$link_base_ptr ptr ext; 5 15 dcl link_base_ptr ptr defined (cobol_$link_base_ptr); 5 16 dcl cobol_$sym_base_ptr ptr ext; 5 17 dcl sym_base_ptr ptr defined (cobol_$sym_base_ptr); 5 18 dcl cobol_$reloc_text_base_ptr ptr ext; 5 19 dcl reloc_text_base_ptr ptr defined (cobol_$reloc_text_base_ptr); 5 20 dcl cobol_$reloc_def_base_ptr ptr ext; 5 21 dcl reloc_def_base_ptr ptr defined (cobol_$reloc_def_base_ptr); 5 22 dcl cobol_$reloc_link_base_ptr ptr ext; 5 23 dcl reloc_link_base_ptr ptr defined (cobol_$reloc_link_base_ptr); 5 24 dcl cobol_$reloc_sym_base_ptr ptr ext; 5 25 dcl reloc_sym_base_ptr ptr defined (cobol_$reloc_sym_base_ptr); 5 26 dcl cobol_$reloc_work_base_ptr ptr ext; 5 27 dcl reloc_work_base_ptr ptr defined (cobol_$reloc_work_base_ptr); 5 28 dcl cobol_$pd_map_ptr ptr ext; 5 29 dcl pd_map_ptr ptr defined (cobol_$pd_map_ptr); 5 30 dcl cobol_$fixup_ptr ptr ext; 5 31 dcl fixup_ptr ptr defined (cobol_$fixup_ptr); 5 32 dcl cobol_$initval_base_ptr ptr ext; 5 33 dcl initval_base_ptr ptr defined (cobol_$initval_base_ptr); 5 34 dcl cobol_$initval_file_ptr ptr ext; 5 35 dcl initval_file_ptr ptr defined (cobol_$initval_file_ptr); 5 36 dcl cobol_$perform_list_ptr ptr ext; 5 37 dcl perform_list_ptr ptr defined (cobol_$perform_list_ptr); 5 38 dcl cobol_$alter_list_ptr ptr ext; 5 39 dcl alter_list_ptr ptr defined (cobol_$alter_list_ptr); 5 40 dcl cobol_$seg_init_list_ptr ptr ext; 5 41 dcl seg_init_list_ptr ptr defined (cobol_$seg_init_list_ptr); 5 42 dcl cobol_$temp_token_area_ptr ptr ext; 5 43 dcl temp_token_area_ptr ptr defined (cobol_$temp_token_area_ptr); 5 44 dcl cobol_$temp_token_ptr ptr ext; 5 45 dcl temp_token_ptr ptr defined (cobol_$temp_token_ptr); 5 46 dcl cobol_$token_block1_ptr ptr ext; 5 47 dcl token_block1_ptr ptr defined (cobol_$token_block1_ptr); 5 48 dcl cobol_$token_block2_ptr ptr ext; 5 49 dcl token_block2_ptr ptr defined (cobol_$token_block2_ptr); 5 50 dcl cobol_$minpral5_ptr ptr ext; 5 51 dcl minpral5_ptr ptr defined (cobol_$minpral5_ptr); 5 52 dcl cobol_$tag_table_ptr ptr ext; 5 53 dcl tag_table_ptr ptr defined (cobol_$tag_table_ptr); 5 54 dcl cobol_$map_data_ptr ptr ext; 5 55 dcl map_data_ptr ptr defined (cobol_$map_data_ptr); 5 56 dcl cobol_$ptr_status_ptr ptr ext; 5 57 dcl ptr_status_ptr ptr defined (cobol_$ptr_status_ptr); 5 58 dcl cobol_$reg_status_ptr ptr ext; 5 59 dcl reg_status_ptr ptr defined (cobol_$reg_status_ptr); 5 60 dcl cobol_$misc_base_ptr ptr ext; 5 61 dcl misc_base_ptr ptr defined (cobol_$misc_base_ptr); 5 62 dcl cobol_$misc_end_ptr ptr ext; 5 63 dcl misc_end_ptr ptr defined (cobol_$misc_end_ptr); 5 64 dcl cobol_$list_ptr ptr ext; 5 65 dcl list_ptr ptr defined (cobol_$list_ptr); 5 66 dcl cobol_$allo1_ptr ptr ext; 5 67 dcl allo1_ptr ptr defined (cobol_$allo1_ptr); 5 68 dcl cobol_$eln_ptr ptr ext; 5 69 dcl eln_ptr ptr defined (cobol_$eln_ptr); 5 70 dcl cobol_$diag_ptr ptr ext; 5 71 dcl diag_ptr ptr defined (cobol_$diag_ptr); 5 72 dcl cobol_$xref_token_ptr ptr ext; 5 73 dcl xref_token_ptr ptr defined (cobol_$xref_token_ptr); 5 74 dcl cobol_$xref_chain_ptr ptr ext; 5 75 dcl xref_chain_ptr ptr defined (cobol_$xref_chain_ptr); 5 76 dcl cobol_$statement_info_ptr ptr ext; 5 77 dcl statement_info_ptr ptr defined (cobol_$statement_info_ptr); 5 78 dcl cobol_$reswd_ptr ptr ext; 5 79 dcl reswd_ptr ptr defined (cobol_$reswd_ptr); 5 80 dcl cobol_$op_con_ptr ptr ext; 5 81 dcl op_con_ptr ptr defined (cobol_$op_con_ptr); 5 82 dcl cobol_$ntbuf_ptr ptr ext; 5 83 dcl ntbuf_ptr ptr defined (cobol_$ntbuf_ptr); 5 84 dcl cobol_$main_pcs_ptr ptr ext; 5 85 dcl main_pcs_ptr ptr defined (cobol_$main_pcs_ptr); 5 86 dcl cobol_$include_info_ptr ptr ext; 5 87 dcl include_info_ptr ptr defined (cobol_$include_info_ptr); 5 88 5 89 /* FIXED BIN */ 5 90 dcl cobol_$text_wd_off fixed bin ext; 5 91 dcl text_wd_off fixed bin defined (cobol_$text_wd_off); 5 92 dcl cobol_$con_wd_off fixed bin ext; 5 93 dcl con_wd_off fixed bin defined (cobol_$con_wd_off); 5 94 dcl cobol_$def_wd_off fixed bin ext; 5 95 dcl def_wd_off fixed bin defined (cobol_$def_wd_off); 5 96 dcl cobol_$def_max fixed bin ext; 5 97 dcl def_max fixed bin defined (cobol_$def_max); 5 98 dcl cobol_$link_wd_off fixed bin ext; 5 99 dcl link_wd_off fixed bin defined (cobol_$link_wd_off); 5 100 dcl cobol_$link_max fixed bin ext; 5 101 dcl link_max fixed bin defined (cobol_$link_max); 5 102 dcl cobol_$sym_wd_off fixed bin ext; 5 103 dcl sym_wd_off fixed bin defined (cobol_$sym_wd_off); 5 104 dcl cobol_$sym_max fixed bin ext; 5 105 dcl sym_max fixed bin defined (cobol_$sym_max); 5 106 dcl cobol_$reloc_text_max fixed bin(24) ext; 5 107 dcl reloc_text_max fixed bin(24) defined (cobol_$reloc_text_max); 5 108 dcl cobol_$reloc_def_max fixed bin(24) ext; 5 109 dcl reloc_def_max fixed bin(24) defined (cobol_$reloc_def_max); 5 110 dcl cobol_$reloc_link_max fixed bin(24) ext; 5 111 dcl reloc_link_max fixed bin(24) defined (cobol_$reloc_link_max); 5 112 dcl cobol_$reloc_sym_max fixed bin(24) ext; 5 113 dcl reloc_sym_max fixed bin(24) defined (cobol_$reloc_sym_max); 5 114 dcl cobol_$reloc_work_max fixed bin(24) ext; 5 115 dcl reloc_work_max fixed bin(24) defined (cobol_$reloc_work_max); 5 116 dcl cobol_$pd_map_index fixed bin ext; 5 117 dcl pd_map_index fixed bin defined (cobol_$pd_map_index); 5 118 dcl cobol_$cobol_data_wd_off fixed bin ext; 5 119 dcl cobol_data_wd_off fixed bin defined (cobol_$cobol_data_wd_off); 5 120 dcl cobol_$stack_off fixed bin ext; 5 121 dcl stack_off fixed bin defined (cobol_$stack_off); 5 122 dcl cobol_$max_stack_off fixed bin ext; 5 123 dcl max_stack_off fixed bin defined (cobol_$max_stack_off); 5 124 dcl cobol_$init_stack_off fixed bin ext; 5 125 dcl init_stack_off fixed bin defined (cobol_$init_stack_off); 5 126 dcl cobol_$pd_map_sw fixed bin ext; 5 127 dcl pd_map_sw fixed bin defined (cobol_$pd_map_sw); 5 128 dcl cobol_$next_tag fixed bin ext; 5 129 dcl next_tag fixed bin defined (cobol_$next_tag); 5 130 dcl cobol_$data_init_flag fixed bin ext; 5 131 dcl data_init_flag fixed bin defined (cobol_$data_init_flag); 5 132 dcl cobol_$seg_init_flag fixed bin ext; 5 133 dcl seg_init_flag fixed bin defined (cobol_$seg_init_flag); 5 134 dcl cobol_$alter_flag fixed bin ext; 5 135 dcl alter_flag fixed bin defined (cobol_$alter_flag); 5 136 dcl cobol_$sect_eop_flag fixed bin ext; 5 137 dcl sect_eop_flag fixed bin defined (cobol_$sect_eop_flag); 5 138 dcl cobol_$para_eop_flag fixed bin ext; 5 139 dcl para_eop_flag fixed bin defined (cobol_$para_eop_flag); 5 140 dcl cobol_$priority_no fixed bin ext; 5 141 dcl priority_no fixed bin defined (cobol_$priority_no); 5 142 dcl cobol_$compile_count fixed bin ext; 5 143 dcl compile_count fixed bin defined (cobol_$compile_count); 5 144 dcl cobol_$ptr_assumption_ind fixed bin ext; 5 145 dcl ptr_assumption_ind fixed bin defined (cobol_$ptr_assumption_ind); 5 146 dcl cobol_$reg_assumption_ind fixed bin ext; 5 147 dcl reg_assumption_ind fixed bin defined (cobol_$reg_assumption_ind); 5 148 dcl cobol_$perform_para_index fixed bin ext; 5 149 dcl perform_para_index fixed bin defined (cobol_$perform_para_index); 5 150 dcl cobol_$perform_sect_index fixed bin ext; 5 151 dcl perform_sect_index fixed bin defined (cobol_$perform_sect_index); 5 152 dcl cobol_$alter_index fixed bin ext; 5 153 dcl alter_index fixed bin defined (cobol_$alter_index); 5 154 dcl cobol_$list_off fixed bin ext; 5 155 dcl list_off fixed bin defined (cobol_$list_off); 5 156 dcl cobol_$constant_offset fixed bin ext; 5 157 dcl constant_offset fixed bin defined (cobol_$constant_offset); 5 158 dcl cobol_$misc_max fixed bin ext; 5 159 dcl misc_max fixed bin defined (cobol_$misc_max); 5 160 dcl cobol_$pd_map_max fixed bin ext; 5 161 dcl pd_map_max fixed bin defined (cobol_$pd_map_max); 5 162 dcl cobol_$map_data_max fixed bin ext; 5 163 dcl map_data_max fixed bin defined (cobol_$map_data_max); 5 164 dcl cobol_$fixup_max fixed bin ext; 5 165 dcl fixup_max fixed bin defined (cobol_$fixup_max); 5 166 dcl cobol_$tag_table_max fixed bin ext; 5 167 dcl tag_table_max fixed bin defined (cobol_$tag_table_max); 5 168 dcl cobol_$temp_token_max fixed bin ext; 5 169 dcl temp_token_max fixed bin defined (cobol_$temp_token_max); 5 170 dcl cobol_$allo1_max fixed bin ext; 5 171 dcl allo1_max fixed bin defined (cobol_$allo1_max); 5 172 dcl cobol_$eln_max fixed bin ext; 5 173 dcl eln_max fixed bin defined (cobol_$eln_max); 5 174 dcl cobol_$debug_enable fixed bin ext; 5 175 dcl debug_enable fixed bin defined (cobol_$debug_enable); 5 176 dcl cobol_$non_source_offset fixed bin ext; 5 177 dcl non_source_offset fixed bin defined (cobol_$non_source_offset); 5 178 dcl cobol_$initval_flag fixed bin ext; 5 179 dcl initval_flag fixed bin defined (cobol_$initval_flag); 5 180 dcl cobol_$date_compiled_sw fixed bin ext; 5 181 dcl date_compiled_sw fixed bin defined (cobol_$date_compiled_sw); 5 182 dcl cobol_$include_cnt fixed bin ext; 5 183 dcl include_cnt fixed bin defined (cobol_$include_cnt); 5 184 dcl cobol_$fs_charcnt fixed bin ext; 5 185 dcl fs_charcnt fixed bin defined (cobol_$fs_charcnt); 5 186 dcl cobol_$ws_charcnt fixed bin ext; 5 187 dcl ws_charcnt fixed bin defined (cobol_$ws_charcnt); 5 188 dcl cobol_$coms_charcnt fixed bin ext; 5 189 dcl coms_charcnt fixed bin defined (cobol_$coms_charcnt); 5 190 dcl cobol_$ls_charcnt fixed bin ext; 5 191 dcl ls_charcnt fixed bin defined (cobol_$ls_charcnt); 5 192 dcl cobol_$cons_charcnt fixed bin ext; 5 193 dcl cons_charcnt fixed bin defined (cobol_$cons_charcnt); 5 194 dcl cobol_$value_cnt fixed bin ext; 5 195 dcl value_cnt fixed bin defined (cobol_$value_cnt); 5 196 dcl cobol_$cd_cnt fixed bin ext; 5 197 dcl cd_cnt fixed bin defined (cobol_$cd_cnt); 5 198 dcl cobol_$fs_wdoff fixed bin ext; 5 199 dcl fs_wdoff fixed bin defined (cobol_$fs_wdoff); 5 200 dcl cobol_$ws_wdoff fixed bin ext; 5 201 dcl ws_wdoff fixed bin defined (cobol_$ws_wdoff); 5 202 dcl cobol_$coms_wdoff fixed bin ext; 5 203 dcl coms_wdoff fixed bin defined (cobol_$coms_wdoff); 5 204 5 205 /* CHARACTER */ 5 206 dcl cobol_$scratch_dir char (168) aligned ext; 5 207 dcl scratch_dir char (168) aligned defined (cobol_$scratch_dir); /* -42- */ 5 208 dcl cobol_$obj_seg_name char (32) aligned ext; 5 209 dcl obj_seg_name char (32) aligned defined (cobol_$obj_seg_name); /* -8- */ 5 210 5 211 /* BIT */ 5 212 dcl cobol_$xref_bypass bit(1) aligned ext; 5 213 dcl xref_bypass bit(1) aligned defined (cobol_$xref_bypass); /* -1- */ 5 214 dcl cobol_$same_sort_merge_proc bit(1) aligned ext; 5 215 dcl same_sort_merge_proc bit(1) aligned defined (cobol_$same_sort_merge_proc); /* -1- */ 5 216 5 217 5 218 /* END INCLUDE FILE ... cobol_incl.pl1*/ 5 219 5 220 1707 6 1 6 2 /* BEGIN INCLUDE FILE ... cobol_fixed_common.incl.pl1 */ 6 3 /* Modified on 10/27/82 by FCH, [5.1-1], cobol_cln added to save last line num, BUG543(phx13643) */ 6 4 /* Modified on 07/31/80 by FCH, [4.3-1], use_reporting field added for Report Writer */ 6 5 /* Modified on 03/30/79 by FCH, [4.1-1], -card option added */ 6 6 /* Modified on 03/30/79 by FCH, [4.0-2], -svNM option added */ 6 7 /* Modified on 03/02/79 by FCH, [4.0-1], -levNM option added */ 6 8 /* Modified by RAL on 10/13/78, [4.0-0], Added option exp from fil2. */ 6 9 /* Modified by BC on 06/20/77, descriptor added. */ 6 10 /* Modified by BC on 06/02/77, init_cd_seg, init_cd_offset added. */ 6 11 /* Modified by BC on 1/21/77, options.profile added. */ 6 12 /* Modified by FCH on 7/6/76, sysin_fno & sysout_fno deleted, accept_device & display_device added */ 6 13 /* Modified by FCH on 5/20/77, comp_level added */ 6 14 6 15 6 16 /* THE SIZE OF THIS STRUCTURE IN BYTES, (EXCLUDING VARIABLE 6 17* LENGTH ENTITIES), FOR EACH HARDWARE IMPLEMENTATION IS: 6 18* 6 19* HARDWARE | SIZE (BYTES) 6 20* --------------------------------- 6 21* 645/6180 | 464 6 22* P7 | 396 6 23* --------------------------------- 6 24* */ 6 25 6 26 dcl 1 fixed_common based ( cobol_com_ptr), 6 27 2 prog_name char (30), 6 28 2 compiler_rev_no char (25), 6 29 2 phase_name char (6), 6 30 2 currency char (1), 6 31 2 fatal_no fixed bin, 6 32 2 warn_no fixed bin, 6 33 2 proc_counter fixed bin, 6 34 2 spec_tag_counter fixed bin, 6 35 2 file_count fixed bin, 6 36 2 filedescr_offsets (20) char (5), 6 37 2 perf_alter_info char (5), 6 38 2 another_perform_info char (5), 6 39 2 sort_in_info char (5), 6 40 2 odo_info char (5), 6 41 2 size_seg fixed bin, 6 42 2 size_offset fixed bin(24), 6 43 2 size_perform_info char (5), 6 44 2 rename_info char (5), 6 45 2 report_names char (5), 6 46 2 rw_buf_seg fixed bin, 6 47 2 rw_buf_offset fixed bin(24), 6 48 2 rw_buf_length fixed bin(24), 6 49 2 file_keys char (5), 6 50 2 search_keys char (5), 6 51 2 dd_seg_size fixed bin(24), 6 52 2 pd_seg_size fixed bin(24), 6 53 2 seg_limit fixed bin , 6 54 2 number_of_dd_segs fixed bin, 6 55 2 seg_info char (5), 6 56 2 number_of_ls_pointers fixed bin, 6 57 2 link_sec_seg fixed bin, 6 58 2 link_sec_offset fixed bin(24), 6 59 2 sra_clauses fixed bin, 6 60 2 fix_up_info char (5), 6 61 2 linage_info char (5), 6 62 2 first_dd_item char (5), 6 63 2 sort_out_info char (5), 6 64 2 db_info char (5), 6 65 2 realm_info char (5), 6 66 2 rc_realm_info char (5), 6 67 2 last_file_key char (5), 6 68 2 prog_coll_seq fixed bin, 6 69 2 init_cd_seg fixed bin, 6 70 2 init_cd_offset fixed bin(24), 6 71 2 input_error_exit fixed bin, 6 72 2 output_error_exit fixed bin, 6 73 2 i_o_error_exit fixed bin, 6 74 2 extend_error_exit fixed bin, 6 75 2 dummy15 fixed bin, 6 76 2 options, 6 77 3 cu bit (1), 6 78 3 st bit (1), 6 79 3 wn bit (1), 6 80 3 obs bit (1), 6 81 3 dm bit (1), 6 82 3 xrl bit (1), 6 83 3 xrn bit (1), 6 84 3 src bit (1), 6 85 3 obj bit (1), 6 86 3 exs bit (1), 6 87 3 sck bit (1), 6 88 3 rno bit (1), 6 89 3 u_l bit (1), 6 90 3 cnv bit (1), 6 91 3 cos bit (1), 6 92 3 fmt bit (1), 6 93 3 profile bit(1), 6 94 3 nw bit (1), 6 95 3 exp bit (1), /* [4.0-0] */ 6 96 3 card bit (1), /*[4.1-1]*/ 6 97 3 fil2 bit (5), 6 98 3 m_map bit (1), 6 99 3 m_bf bit (1), 6 100 3 m_fat bit (1), 6 101 3 m_wn bit (1), 6 102 3 m_obs bit(1), 6 103 3 pd bit(1), 6 104 3 oc bit(1), 6 105 2 supervisor bit (1), 6 106 2 dec_comma bit (1), 6 107 2 init_cd bit (1), 6 108 2 corr bit (1), 6 109 2 initl bit (1), 6 110 2 debug bit (1), 6 111 2 report bit (1), 6 112 2 sync_in_prog bit (1), 6 113 2 pd_section bit (1), 6 114 2 list_switch bit (1), 6 115 2 alpha_cond bit (1), 6 116 2 num_cond bit (1), 6 117 2 spec_sysin bit (1), 6 118 2 spec_sysout bit (1), 6 119 2 cpl_files bit (1), 6 120 2 obj_dec_comma bit (1), 6 121 2 default_sign_type bit (3), 6 122 2 use_debug bit(1), 6 123 2 syntax_trace bit(1), 6 124 2 comp_defaults, 6 125 3 comp bit(1), 6 126 3 comp_1 bit(1), 6 127 3 comp_2 bit(1), 6 128 3 comp_3 bit(1), 6 129 3 comp_4 bit(1), 6 130 3 comp_5 bit(1), 6 131 3 comp_6 bit(1), 6 132 3 comp_7 bit(1), 6 133 3 comp_8 bit(1), 6 134 2 disp_defaults, 6 135 3 disp bit(1), 6 136 3 disp_1 bit(1), 6 137 3 disp_2 bit(1), 6 138 3 disp_3 bit(1), 6 139 3 disp_4 bit(1), 6 140 3 disp_5 bit(1), 6 141 3 disp_6 bit(1), 6 142 3 disp_7 bit(1), 6 143 2 descriptor bit(2), 6 144 2 levsv bit(3), /*[4.0-1]*/ 6 145 2 use_reporting bit(1), /*[4.3-1]*/ 6 146 2 cd bit(1), /*[4.4-1]*/ 6 147 2 dummy17 bit(3), 6 148 2 lvl_rstr bit(32), 6 149 2 inst_rstr bit(32), 6 150 2 comp_level char(1), 6 151 2 dummy18 char(30), 6 152 2 object_sign char (1), 6 153 2 last_print_rec char (5), 6 154 2 coll_seq_info char (5), 6 155 2 sys_status_seg fixed bin, 6 156 2 sys_status_offset fixed bin(24), 6 157 2 compiler_id fixed bin, 6 158 2 date_comp_ln fixed bin, 6 159 2 compile_mode bit(36), 6 160 2 default_temp fixed bin, 6 161 2 accept_device fixed bin, 6 162 2 display_device fixed bin, 6 163 2 cobol_cln fixed bin, /*[5.1-1]*/ 6 164 2 alphabet_offset fixed bin; 6 165 6 166 6 167 6 168 /* END INCLUDE FILE ... cobol_fixed_common.incl.pl1 */ 6 169 1708 7 1 7 2 /* BEGIN INCLUDE FILE ... cobol_ext_.incl.pl1 */ 7 3 /* Last modified on 06/17/76 by ORN */ 7 4 /* Last modified on 12/28/76 by FCH */ 7 5 /* Last modified on 12/01/80 by FCH */ 7 6 7 7 /* <<< SHARED EXTERNALS INCLUDE FILE >>> */ 7 8 7 9 7 10 dcl cobol_ext_$cobol_afp ptr ext; 7 11 dcl cobol_afp ptr defined ( cobol_ext_$cobol_afp); 7 12 dcl cobol_ext_$cobol_analin_fileno ptr ext; 7 13 dcl cobol_analin_fileno ptr defined ( cobol_ext_$cobol_analin_fileno); 7 14 dcl cobol_ext_$report_first_token ptr ext; 7 15 dcl report_first_token ptr defined( cobol_ext_$report_first_token); 7 16 dcl cobol_ext_$report_last_token ptr ext; 7 17 dcl report_last_token ptr defined ( cobol_ext_$report_last_token); 7 18 dcl cobol_ext_$cobol_eltp ptr ext; 7 19 dcl cobol_eltp ptr defined ( cobol_ext_$cobol_eltp); 7 20 dcl cobol_ext_$cobol_cmfp ptr ext; 7 21 dcl cobol_cmfp ptr defined ( cobol_ext_$cobol_cmfp); 7 22 dcl cobol_ext_$cobol_com_fileno ptr ext; 7 23 dcl cobol_com_fileno ptr defined ( cobol_ext_$cobol_com_fileno); 7 24 dcl cobol_ext_$cobol_com_ptr ptr ext; 7 25 dcl cobol_com_ptr ptr defined ( cobol_ext_$cobol_com_ptr); 7 26 dcl cobol_ext_$cobol_dfp ptr ext; 7 27 dcl cobol_dfp ptr defined ( cobol_ext_$cobol_dfp); 7 28 dcl cobol_ext_$cobol_hfp ptr ext; 7 29 dcl cobol_hfp ptr defined ( cobol_ext_$cobol_hfp); 7 30 dcl cobol_ext_$cobol_m1fp ptr ext; 7 31 dcl cobol_m1fp ptr defined ( cobol_ext_$cobol_m1fp); 7 32 dcl cobol_ext_$cobol_m2fp ptr ext; 7 33 dcl cobol_m2fp ptr defined ( cobol_ext_$cobol_m2fp); 7 34 dcl cobol_ext_$cobol_min1_fileno ptr ext; 7 35 dcl cobol_min1_fileno ptr defined ( cobol_ext_$cobol_min1_fileno); 7 36 dcl cobol_ext_$cobol_min2_fileno_ptr ptr ext; 7 37 dcl cobol_min2_fileno_ptr ptr defined ( cobol_ext_$cobol_min2_fileno_ptr); 7 38 dcl cobol_ext_$cobol_name_fileno ptr ext; 7 39 dcl cobol_name_fileno ptr defined ( cobol_ext_$cobol_name_fileno); 7 40 dcl cobol_ext_$cobol_name_fileno_ptr ptr ext; 7 41 dcl cobol_name_fileno_ptr ptr defined ( cobol_ext_$cobol_name_fileno_ptr); 7 42 dcl cobol_ext_$cobol_ntfp ptr ext; 7 43 dcl cobol_ntfp ptr defined ( cobol_ext_$cobol_ntfp); 7 44 dcl cobol_ext_$cobol_pdofp ptr ext; 7 45 dcl cobol_pdofp ptr defined ( cobol_ext_$cobol_pdofp); 7 46 dcl cobol_ext_$cobol_pfp ptr ext; 7 47 dcl cobol_pfp ptr defined ( cobol_ext_$cobol_pfp); 7 48 dcl cobol_ext_$cobol_rm2fp ptr ext; 7 49 dcl cobol_rm2fp ptr defined ( cobol_ext_$cobol_rm2fp); 7 50 dcl cobol_ext_$cobol_rmin2fp ptr ext; 7 51 dcl cobol_rmin2fp ptr defined ( cobol_ext_$cobol_rmin2fp); 7 52 dcl cobol_ext_$cobol_curr_in ptr ext; 7 53 dcl cobol_curr_in ptr defined ( cobol_ext_$cobol_curr_in); 7 54 dcl cobol_ext_$cobol_curr_out ptr ext; 7 55 dcl cobol_curr_out ptr defined ( cobol_ext_$cobol_curr_out); 7 56 dcl cobol_ext_$cobol_sfp ptr ext; 7 57 dcl cobol_sfp ptr defined ( cobol_ext_$cobol_sfp); 7 58 dcl cobol_ext_$cobol_w1p ptr ext; 7 59 dcl cobol_w1p ptr defined ( cobol_ext_$cobol_w1p); 7 60 dcl cobol_ext_$cobol_w2p ptr ext; 7 61 dcl cobol_w2p ptr defined ( cobol_ext_$cobol_w2p); 7 62 dcl cobol_ext_$cobol_w3p ptr ext; 7 63 dcl cobol_w3p ptr defined ( cobol_ext_$cobol_w3p); 7 64 dcl cobol_ext_$cobol_w5p ptr ext; 7 65 dcl cobol_w5p ptr defined ( cobol_ext_$cobol_w5p); 7 66 dcl cobol_ext_$cobol_w6p ptr ext; 7 67 dcl cobol_w6p ptr defined ( cobol_ext_$cobol_w6p); 7 68 dcl cobol_ext_$cobol_w7p ptr ext; 7 69 dcl cobol_w7p ptr defined ( cobol_ext_$cobol_w7p); 7 70 dcl cobol_ext_$cobol_x3fp ptr ext; 7 71 dcl cobol_x3fp ptr defined ( cobol_ext_$cobol_x3fp); 7 72 dcl cobol_ext_$cobol_rwdd ptr ext; 7 73 dcl cobol_rwdd ptr defined(cobol_ext_$cobol_rwdd); 7 74 dcl cobol_ext_$cobol_rwpd ptr ext; 7 75 dcl cobol_rwpd ptr defined(cobol_ext_$cobol_rwpd); 7 76 7 77 7 78 dcl cobol_ext_$cobol_fileno1 fixed bin(24)ext; 7 79 dcl cobol_fileno1 fixed bin(24)defined ( cobol_ext_$cobol_fileno1); 7 80 dcl cobol_ext_$cobol_options_len fixed bin(24)ext; 7 81 dcl cobol_options_len fixed bin(24)defined ( cobol_ext_$cobol_options_len); 7 82 dcl cobol_ext_$cobol_pdout_fileno fixed bin(24)ext; 7 83 dcl cobol_pdout_fileno fixed bin(24)defined ( cobol_ext_$cobol_pdout_fileno); 7 84 dcl cobol_ext_$cobol_print_fileno fixed bin(24)ext; 7 85 dcl cobol_print_fileno fixed bin(24)defined ( cobol_ext_$cobol_print_fileno); 7 86 dcl cobol_ext_$cobol_rmin2_fileno fixed bin(24)ext; 7 87 dcl cobol_rmin2_fileno fixed bin(24)defined ( cobol_ext_$cobol_rmin2_fileno); 7 88 dcl cobol_ext_$cobol_x1_fileno fixed bin(24)ext; 7 89 dcl cobol_x1_fileno fixed bin(24)defined ( cobol_ext_$cobol_x1_fileno); 7 90 dcl cobol_ext_$cobol_x2_fileno fixed bin(24)ext; 7 91 dcl cobol_x2_fileno fixed bin(24)defined ( cobol_ext_$cobol_x2_fileno); 7 92 dcl cobol_ext_$cobol_x3_fileno fixed bin(24)ext; 7 93 dcl cobol_x3_fileno fixed bin(24)defined ( cobol_ext_$cobol_x3_fileno); 7 94 7 95 dcl cobol_ext_$cobol_lpr char (5) ext; 7 96 dcl cobol_lpr char (5) defined ( cobol_ext_$cobol_lpr); /* -2- */ 7 97 dcl cobol_ext_$cobol_options char (120) ext; 7 98 dcl cobol_options char (120) defined ( cobol_ext_$cobol_options); /* -30- */ 7 99 7 100 dcl cobol_ext_$cobol_xlast8 bit (1) ext; 7 101 dcl cobol_xlast8 bit (1) defined ( cobol_ext_$cobol_xlast8); /* -1- */ 7 102 dcl cobol_ext_$report_exists bit (1) ext; 7 103 dcl report_exists bit (1) defined ( cobol_ext_$report_exists); 7 104 7 105 7 106 /* <<< END OF SHARED EXTERNALS INCLUDE FILE >>> */ 7 107 /* END INCLUDE FILE ... cobol_ext_.incl.pl1 */ 7 108 1709 1710 end cobol_exp3; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/24/89 0830.1 cobol_exp3.pl1 >spec>install>MR12.3-1048>cobol_exp3.pl1 1704 1 03/27/82 0439.9 cobol_type9.incl.pl1 >ldd>include>cobol_type9.incl.pl1 1-17 2 11/11/82 1712.7 cobol_TYPE9.incl.pl1 >ldd>include>cobol_TYPE9.incl.pl1 1705 3 05/24/89 0811.7 cobol_addr_tokens.incl.pl1 >spec>install>MR12.3-1048>cobol_addr_tokens.incl.pl1 1706 4 11/11/82 1712.7 cobol_in_token.incl.pl1 >ldd>include>cobol_in_token.incl.pl1 1707 5 11/11/82 1712.7 cobol_.incl.pl1 >ldd>include>cobol_.incl.pl1 1708 6 11/11/82 1712.8 cobol_fixed_common.incl.pl1 >ldd>include>cobol_fixed_common.incl.pl1 1709 7 03/27/82 0431.3 cobol_ext_.incl.pl1 >ldd>include>cobol_ext_.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. LPRP2 constant bit(10) initial packed unaligned dcl 500 ref 615 639 664 SPRP3 constant bit(10) initial packed unaligned dcl 498 ref 607 634 657 a_and_x7 000166 internal static bit(36) initial array packed unaligned dcl 1479 set ref 1522 addr builtin function dcl 1699 ref 522 530 538 561 561 563 563 563 563 573 574 575 602 602 624 624 632 632 646 646 654 654 670 670 782 784 952 953 954 956 958 988 1067 1067 1228 1230 1231 1326 1326 1499 1501 1502 1522 1541 1664 1666 1667 ascii_packed_dec 21(30) based bit(1) level 2 packed packed unaligned dcl 1-16 set ref 278 296 757* binary builtin function dcl 1699 ref 1079 1293 char_offset 4 based fixed bin(24,0) level 2 dcl 3-23 set ref 581* 1002* 1250* 1679* cobol_$compile_count 000232 external static fixed bin(17,0) dcl 5-142 ref 248 253 cobol_$next_tag 000230 external static fixed bin(17,0) dcl 5-128 set ref 264 266* 266 551 552* 552 587 588* 588 627 628* 628 649 650* 650 674 675* 675 cobol_$text_wd_off 000226 external static fixed bin(17,0) dcl 5-90 ref 548 560 1313 1336 cobol_addr 000210 constant entry external dcl 141 ref 582 1006 1253 1683 cobol_alloc$stack 000212 constant entry external dcl 142 ref 570 774 1091 1109 1275 1345 1554 cobol_call_op 000172 constant entry external dcl 132 ref 1568 cobol_com_ptr defined pointer dcl 7-25 ref 558 cobol_define_tag 000222 constant entry external dcl 147 ref 265 591 629 651 677 cobol_define_tag_nc 000220 constant entry external dcl 146 ref 555 cobol_emit 000204 constant entry external dcl 139 ref 563 602 608 616 624 632 635 641 646 654 658 665 670 1025 1049 1067 1084 1131 1259 1295 1310 1326 1359 1528 1548 1690 cobol_ext_$cobol_com_ptr 000234 external static pointer dcl 7-24 ref 558 558 cobol_make_fixup 000202 constant entry external dcl 138 ref 561 cobol_make_link$type_4 000216 constant entry external dcl 144 ref 519 528 536 cobol_make_tagref 000224 constant entry external dcl 148 ref 594 631 653 678 1313 1336 cobol_make_type9$copy 000176 constant entry external dcl 135 ref 752 cobol_move_gen 000170 constant entry external dcl 131 ref 790 cobol_op_real_to_real_rd constant fixed bin(15,0) initial dcl 173 ref 1126 cobol_pool 000200 constant entry external dcl 137 ref 993 cobol_process_error 000214 constant entry external dcl 143 ref 611 637 661 cobol_register$load 000206 constant entry external dcl 140 ref 978 1034 1059 1072 1241 cobol_reset_r$after_call 000174 constant entry external dcl 133 ref 318 337 code1_instr 000014 internal static bit(36) initial array packed unaligned dcl 391 set ref 522 530 538 563 563 code2_instr 000146 internal static bit(36) initial array packed unaligned dcl 470 set ref 602 602 632 632 654 654 contains 4 000114 automatic fixed bin(17,0) level 2 dcl 208 set ref 976* 1033* 1057* 1239* data_name based structure level 1 unaligned dcl 1-16 dest_token_ptr parameter pointer dcl 704 set ref 686 745* 752* 754 787 dfld_op constant bit(10) initial packed unaligned dcl 160 ref 1256 dfst_op constant bit(10) initial packed unaligned dcl 162 ref 1350 display 21(27) based bit(1) level 2 packed packed unaligned dcl 1-16 set ref 759* dn_ptr 000100 automatic pointer dcl 192 set ref 276* 278 278 278 278 278 293* 296 296 296 296 296 754* 755 756 757 758 759 761 761 764 764 764 768 774 774 778 779 edit_ptr 26 based fixed bin(17,0) level 2 dcl 1-16 set ref 756* epp_opcode 000000 constant bit(10) initial array dcl 1609 ref 1687 err_ret_inst 000150 internal static bit(36) initial packed unaligned dcl 475 set ref 624 624 646 646 670 670 exp_proc_emitted 000010 internal static fixed bin(17,0) initial dcl 177 set ref 248 253* exp_proc_tag parameter fixed bin(17,0) dcl 358 in procedure "emit_exp_proc" set ref 347 551* 555* exp_proc_tag 000011 internal static fixed bin(17,0) dcl 178 in procedure "cobol_exp3" set ref 252* 327* exp_proc_tag parameter fixed bin(17,0) dcl 1160 in procedure "do_exponentiation" set ref 1139 1313* fill1_op 0(18) based bit(10) level 2 packed packed unaligned dcl 3-51 set ref 607* 615* 634* 639* 657* 664* 1022* 1039* 1077* 1125* 1256* 1289* 1302* 1350* 1544* 1687* fixed builtin function dcl 1699 ref 525 533 541 774 774 989 990 1014 1041 1079 1126 1293 1353 1543 1546 fixed_common based structure level 1 unaligned dcl 6-26 fixup_directive 000012 internal static structure level 1 dcl 181 set ref 561 561 imperative_stmt_tag parameter fixed bin(17,0) dcl 44 in procedure "cobol_exp3" set ref 28 262 327* imperative_stmt_tag parameter fixed bin(17,0) dcl 1159 in procedure "do_exponentiation" ref 1139 1291 1329 1329 in_token based structure level 1 dcl 4-9 in_token_ptr 000210 automatic pointer dcl 4-7 set ref 782* 783 784 784 785 786 787 790* input_buff 000170 automatic fixed bin(17,0) array dcl 241 set ref 574 954 1230 1499 1666 input_ptr 000202 automatic pointer dcl 3-18 set ref 574* 577 578 579 580 581 582* 954* 998 999 1000 1001 1002 1003 1006* 1230* 1246 1247 1248 1249 1250 1253* 1499* 1666* 1675 1676 1677 1678 1679 1680 1683* input_struc_basic based structure level 1 unaligned dcl 3-23 inst_buff 000144 automatic fixed bin(17,0) array dcl 239 set ref 952 982* 1038* 1076* 1124* 1228 1245* 1288* 1301* 1349* 1501 1541 1542* 1546* 1664 inst_index 000227 automatic fixed bin(17,0) dcl 511 set ref 558* 560* inst_ptr 000204 automatic pointer dcl 3-18 set ref 573* 582* 607 608* 615 616* 634 635* 639 641* 657 658* 664 665* 952* 1006* 1014 1015 1022 1025* 1039 1040 1041 1049* 1077 1078 1079 1084* 1125 1126 1127 1131* 1228* 1253* 1256 1259* 1289 1290 1291 1293 1295* 1302 1303 1304 1310* 1350 1351 1352 1353 1359* 1501* 1522* 1528* 1541* 1543 1544 1545 1548* 1664* 1683* 1687 1690* inst_struc_basic based structure level 1 dcl 3-51 item_length 16 based fixed bin(24,0) level 2 dcl 1-16 set ref 764* 764 774 774 990 1014 1543 lda_63_dl_const 000162 internal static bit(36) initial packed unaligned dcl 922 set ref 1067 1067 lda_op constant bit(10) initial packed unaligned dcl 157 ref 1544 ldq_op constant bit(10) initial packed unaligned dcl 155 ref 1022 linkoff 000224 automatic fixed bin(17,0) dcl 508 set ref 519* 525 528* 533 536* 541 location 0(14) 000012 internal static structure level 2 packed packed unaligned dcl 181 lock 2 000102 automatic fixed bin(17,0) level 2 in structure "pr_struc" dcl 196 in procedure "cobol_exp3" set ref 963* 1264* 1507* 1557* lock 2 based fixed bin(17,0) level 2 in structure "input_struc_basic" dcl 3-23 in procedure "cobol_exp3" set ref 579* 1000* 1248* 1677* lock 2 000114 automatic fixed bin(17,0) level 2 in structure "reg_struc" dcl 208 in procedure "cobol_exp3" set ref 975* 1032* 1056* 1238* lop_offset parameter fixed bin(24,0) dcl 1154 in procedure "do_exponentiation" ref 1139 1250 lop_offset 000136 automatic fixed bin(24,0) dcl 228 in procedure "cobol_exp3" set ref 310* 327* lop_ptr parameter pointer dcl 41 set ref 28 276 278* 286 lop_seg parameter fixed bin(17,0) dcl 1153 in procedure "do_exponentiation" ref 1139 1249 lop_seg 000135 automatic fixed bin(17,0) dcl 227 in procedure "cobol_exp3" set ref 310* 327* lxl6_20_dl 000010 constant bit(36) initial packed unaligned dcl 1483 ref 1546 lxl6_op constant bit(10) initial packed unaligned dcl 158 ref 1077 lxl7_op constant bit(10) initial packed unaligned dcl 156 ref 1039 1289 mod builtin function dcl 1699 ref 278 296 move_eos_token 000154 internal static structure level 1 unaligned dcl 724 set ref 784 n based fixed bin(17,0) level 2 dcl 4-9 set ref 783* 784 neg_non_int_code 000151 internal static fixed bin(17,0) initial dcl 481 set ref 611* neg_non_int_offset constant fixed bin(17,0) initial dcl 490 ref 594 null builtin function dcl 1699 ref 594 594 602 602 624 624 631 631 632 632 646 646 653 653 654 654 670 670 678 678 745 785 1295 1295 1313 1313 1326 1326 1336 1336 occurs_ptr 27 based fixed bin(17,0) level 2 dcl 1-16 set ref 278 296 755* offset 0(18) 000012 internal static fixed bin(17,0) level 3 in structure "fixup_directive" packed packed unaligned dcl 181 in procedure "cobol_exp3" set ref 560* offset 5 000102 automatic fixed bin(24,0) level 2 in structure "pr_struc" dcl 196 in procedure "cobol_exp3" set ref 967* 1100* 1116* 1267* 1281* 1510* 1535* 1560* offset 5 based fixed bin(24,0) level 2 in structure "pr_struc" dcl 1622 in procedure "pointer_register_load" ref 1669 1671 offset 24 based fixed bin(24,0) level 2 in structure "data_name" dcl 1-16 in procedure "cobol_exp3" set ref 278 296 779* 967 1535 operand_no 1 based fixed bin(17,0) level 2 dcl 3-23 set ref 578* 999* 1247* 1676* options 133 based structure level 2 packed packed unaligned dcl 6-26 places_right 20 based fixed bin(17,0) level 2 dcl 1-16 ref 989 pr based bit(3) level 3 packed packed unaligned dcl 3-51 set ref 1352* pr3_save_load_inst 000226 automatic bit(36) initial packed unaligned dcl 510 set ref 510* 573 pr_spec 0(29) based bit(1) level 2 packed packed unaligned dcl 3-51 set ref 1127* 1303* 1351* pr_struc based structure level 1 unaligned dcl 1622 in procedure "pointer_register_load" pr_struc 000102 automatic structure level 1 unaligned dcl 196 in procedure "cobol_exp3" set ref 956 pr_struc_ptr parameter pointer dcl 1592 in procedure "pointer_register_load" ref 1575 1669 1669 1671 1678 1687 pr_struc_ptr 000112 automatic pointer dcl 204 in procedure "cobol_exp3" set ref 956* 970* 1102* 1117* 1269* 1283* 1512* 1537* 1563* precision 0(18) 000274 automatic bit(18) level 2 in structure "precision" packed packed unaligned dcl 928 in procedure "con_to_float_bin" set ref 990* precision 000274 automatic structure level 1 dcl 928 in procedure "con_to_float_bin" precision_constant based char(4) packed unaligned dcl 934 set ref 993* precision_constant_ptr 000276 automatic pointer dcl 932 set ref 988* 993 precision_offset 000300 automatic fixed bin(17,0) dcl 936 set ref 993* 1002 profile 133(16) based bit(1) level 3 packed packed unaligned dcl 6-26 ref 558 reg_struc 000114 automatic structure level 1 unaligned dcl 208 set ref 958 reg_struc_ptr 000126 automatic pointer dcl 217 set ref 958* 978* 1034* 1059* 1072* 1241* rel_code1 000052 internal static bit(5) initial array dcl 462 set ref 563 563 reloc_buff 000156 automatic fixed bin(17,0) array dcl 240 set ref 575 953 1047* 1048* 1061* 1062* 1119* 1120* 1231 1306* 1307* 1355* 1356* 1502 1523* 1524* 1525* 1526* 1667 reloc_ptr 000206 automatic pointer dcl 3-18 set ref 575* 582* 608* 616* 635* 641* 658* 665* 953* 1006* 1025* 1049* 1067* 1084* 1131* 1231* 1253* 1259* 1310* 1359* 1502* 1528* 1548* 1667* 1683* 1690* restart_tag parameter fixed bin(17,0) dcl 1161 in procedure "do_exponentiation" ref 1139 1331 restart_tag 000143 automatic fixed bin(17,0) dcl 235 in procedure "cobol_exp3" set ref 264* 265* 327* restore_pointer_regs 000134 automatic bit(1) packed unaligned dcl 224 set ref 294* 305* 318 result_offset parameter fixed bin(24,0) dcl 815 in procedure "con_to_float_bin" set ref 798 1092* 1100 result_offset parameter fixed bin(24,0) dcl 1158 in procedure "do_exponentiation" set ref 1139 1346* 1353 result_offset 000142 automatic fixed bin(24,0) dcl 234 in procedure "cobol_exp3" set ref 327* 333* result_ptr parameter pointer dcl 43 in procedure "cobol_exp3" set ref 28 333* result_ptr parameter pointer dcl 1382 in procedure "con_from_float_bin" ref 1366 1534 1535 1543 result_seg parameter fixed bin(17,0) dcl 1157 in procedure "do_exponentiation" set ref 1139 1347* result_seg parameter fixed bin(17,0) dcl 814 in procedure "con_to_float_bin" set ref 798 1093* 1099 result_seg 000141 automatic fixed bin(17,0) dcl 233 in procedure "cobol_exp3" set ref 327* 333* ret_offset 000302 automatic fixed bin(17,0) dcl 938 in procedure "con_to_float_bin" set ref 1091* 1092 1109* 1116 ret_offset 000225 automatic fixed bin(17,0) dcl 509 in procedure "emit_exp_proc" set ref 570* 581 ret_offset 000324 automatic fixed bin(17,0) dcl 1486 in procedure "con_from_float_bin" set ref 1554* 1560 ret_offset 000240 automatic fixed bin(17,0) dcl 735 in procedure "convert_or_move" set ref 774* 779 rop_offset 000140 automatic fixed bin(24,0) dcl 231 in procedure "cobol_exp3" set ref 324* 327* rop_offset parameter fixed bin(24,0) dcl 1156 in procedure "do_exponentiation" ref 1139 1267 rop_ptr parameter pointer dcl 42 set ref 28 293 296* 304 rop_seg parameter fixed bin(17,0) dcl 1155 in procedure "do_exponentiation" ref 1139 1266 rop_seg 000137 automatic fixed bin(17,0) dcl 230 in procedure "cobol_exp3" set ref 324* 327* save_offset 000223 automatic fixed bin(17,0) dcl 507 set ref 548* 555 594 631 653 678* scale_factor 000274 automatic bit(18) level 2 packed packed unaligned dcl 928 set ref 988 989* seg_num 23 based fixed bin(17,0) level 2 dcl 1-16 set ref 778* 965 1534 segno 3 based fixed bin(17,0) level 2 in structure "input_struc_basic" dcl 3-23 in procedure "cobol_exp3" set ref 580* 1001* 1249* 1678* segno 4 based fixed bin(17,0) level 2 in structure "pr_struc" dcl 1622 in procedure "pointer_register_load" ref 1678 segno 4 000102 automatic fixed bin(17,0) level 2 in structure "pr_struc" dcl 196 in procedure "cobol_exp3" set ref 965* 1099* 1115* 1266* 1280* 1509* 1534* 1559* send_receive 5 based fixed bin(17,0) level 2 dcl 3-23 set ref 1003* 1680* sign_type 22(13) based bit(3) level 2 packed packed unaligned dcl 1-16 set ref 278 278 296 296 761 761 764 768* 984 source_offset parameter fixed bin(24,0) dcl 1381 ref 1366 1510 source_seg parameter fixed bin(17,0) dcl 1380 ref 1366 1509 source_token_ptr parameter pointer dcl 813 in procedure "con_to_float_bin" ref 798 965 967 984 989 990 1014 source_token_ptr parameter pointer dcl 703 in procedure "convert_or_move" set ref 686 752* 786 source_type 000301 automatic fixed bin(17,0) dcl 937 set ref 1008* 1016* 1041 subscripted 22(05) based bit(1) level 2 packed packed unaligned dcl 1-16 set ref 758* switch 3 000102 automatic fixed bin(17,0) level 2 in structure "pr_struc" dcl 196 in procedure "cobol_exp3" set ref 964* 1098* 1114* 1265* 1508* 1533* 1558* switch 3 based fixed bin(17,0) level 2 in structure "pr_struc" dcl 1622 in procedure "pointer_register_load" ref 1669 tchar_offset 000334 automatic fixed bin(17,0) dcl 1655 set ref 1669* 1671* 1679 td 0(32) based bit(4) level 2 packed packed unaligned dcl 3-51 set ref 1015* 1040* 1078* 1290* 1545* temp_offset 000312 automatic fixed bin(17,0) dcl 1218 set ref 1275* 1281 1345* 1346 temp_ptr 000220 automatic pointer dcl 505 set ref 522* 525 530* 533 538* 541 temp_seg 000313 automatic fixed bin(17,0) dcl 1219 set ref 1276* 1280 temp_tag 000222 automatic fixed bin(17,0) dcl 506 in procedure "emit_exp_proc" set ref 587* 591* 594* 627* 629* 631* 649* 651* 653* 674* 677* 678* temp_tag 000314 automatic fixed bin(17,0) dcl 1220 in procedure "do_exponentiation" set ref 1329* 1331* 1336* token_buff 000242 automatic pointer array dcl 736 set ref 782 token_ptr 2 based pointer array level 2 dcl 4-9 set ref 784* 785* 786* 787* tra_insts 000164 internal static bit(36) initial array packed unaligned dcl 1211 set ref 1326 1326 tsp3_op constant bit(10) initial packed unaligned dcl 161 ref 1302 tsx0_op constant bit(10) initial packed unaligned dcl 159 ref 1125 type based fixed bin(17,0) level 2 dcl 3-23 set ref 577* 998* 1246* 1675* wd_offset 0(03) based bit(15) level 3 packed packed unaligned dcl 3-51 set ref 525* 533* 541* 1014* 1041* 1079* 1126* 1291* 1293* 1304* 1353* 1543* what_pointer 000102 automatic fixed bin(17,0) level 2 in structure "pr_struc" dcl 196 in procedure "cobol_exp3" set ref 962* 1097* 1113* 1263* 1279* 1506* 1532* 1556* what_pointer based fixed bin(17,0) level 2 in structure "pr_struc" dcl 1622 in procedure "pointer_register_load" ref 1687 what_reg 000114 automatic fixed bin(17,0) level 2 dcl 208 set ref 974* 1031* 1055* 1071* 1237* work_lop_ptr 000130 automatic pointer dcl 221 set ref 278* 286* 310* work_rop_ptr 000132 automatic pointer dcl 222 set ref 296* 304* 324* y based structure level 2 packed packed unaligned dcl 3-51 zero_neg_code 000153 internal static fixed bin(17,0) initial dcl 487 set ref 661* zero_neg_offset constant fixed bin(17,0) initial dcl 497 ref 653 zero_zero_code 000152 internal static fixed bin(17,0) initial dcl 484 set ref 637* zero_zero_offset constant fixed bin(17,0) initial dcl 495 ref 631 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addrel builtin function dcl 1699 allo1_max defined fixed bin(17,0) dcl 5-171 allo1_ptr defined pointer dcl 5-67 alter_flag defined fixed bin(17,0) dcl 5-135 alter_index defined fixed bin(17,0) dcl 5-153 alter_list_ptr defined pointer dcl 5-39 cd_cnt defined fixed bin(17,0) dcl 5-197 cobol_$allo1_max external static fixed bin(17,0) dcl 5-170 cobol_$allo1_ptr external static pointer dcl 5-66 cobol_$alter_flag external static fixed bin(17,0) dcl 5-134 cobol_$alter_index external static fixed bin(17,0) dcl 5-152 cobol_$alter_list_ptr external static pointer dcl 5-38 cobol_$cd_cnt external static fixed bin(17,0) dcl 5-196 cobol_$cobol_data_wd_off external static fixed bin(17,0) dcl 5-118 cobol_$coms_charcnt external static fixed bin(17,0) dcl 5-188 cobol_$coms_wdoff external static fixed bin(17,0) dcl 5-202 cobol_$con_end_ptr external static pointer dcl 5-10 cobol_$con_wd_off external static fixed bin(17,0) dcl 5-92 cobol_$cons_charcnt external static fixed bin(17,0) dcl 5-192 cobol_$constant_offset external static fixed bin(17,0) dcl 5-156 cobol_$data_init_flag external static fixed bin(17,0) dcl 5-130 cobol_$date_compiled_sw external static fixed bin(17,0) dcl 5-180 cobol_$debug_enable external static fixed bin(17,0) dcl 5-174 cobol_$def_base_ptr external static pointer dcl 5-12 cobol_$def_max external static fixed bin(17,0) dcl 5-96 cobol_$def_wd_off external static fixed bin(17,0) dcl 5-94 cobol_$diag_ptr external static pointer dcl 5-70 cobol_$eln_max external static fixed bin(17,0) dcl 5-172 cobol_$eln_ptr external static pointer dcl 5-68 cobol_$fixup_max external static fixed bin(17,0) dcl 5-164 cobol_$fixup_ptr external static pointer dcl 5-30 cobol_$fs_charcnt external static fixed bin(17,0) dcl 5-184 cobol_$fs_wdoff external static fixed bin(17,0) dcl 5-198 cobol_$include_cnt external static fixed bin(17,0) dcl 5-182 cobol_$include_info_ptr external static pointer dcl 5-86 cobol_$init_stack_off external static fixed bin(17,0) dcl 5-124 cobol_$initval_base_ptr external static pointer dcl 5-32 cobol_$initval_file_ptr external static pointer dcl 5-34 cobol_$initval_flag external static fixed bin(17,0) dcl 5-178 cobol_$link_base_ptr external static pointer dcl 5-14 cobol_$link_max external static fixed bin(17,0) dcl 5-100 cobol_$link_wd_off external static fixed bin(17,0) dcl 5-98 cobol_$list_off external static fixed bin(17,0) dcl 5-154 cobol_$list_ptr external static pointer dcl 5-64 cobol_$ls_charcnt external static fixed bin(17,0) dcl 5-190 cobol_$main_pcs_ptr external static pointer dcl 5-84 cobol_$map_data_max external static fixed bin(17,0) dcl 5-162 cobol_$map_data_ptr external static pointer dcl 5-54 cobol_$max_stack_off external static fixed bin(17,0) dcl 5-122 cobol_$minpral5_ptr external static pointer dcl 5-50 cobol_$misc_base_ptr external static pointer dcl 5-60 cobol_$misc_end_ptr external static pointer dcl 5-62 cobol_$misc_max external static fixed bin(17,0) dcl 5-158 cobol_$non_source_offset external static fixed bin(17,0) dcl 5-176 cobol_$ntbuf_ptr external static pointer dcl 5-82 cobol_$obj_seg_name external static char(32) dcl 5-208 cobol_$op_con_ptr external static pointer dcl 5-80 cobol_$para_eop_flag external static fixed bin(17,0) dcl 5-138 cobol_$pd_map_index external static fixed bin(17,0) dcl 5-116 cobol_$pd_map_max external static fixed bin(17,0) dcl 5-160 cobol_$pd_map_ptr external static pointer dcl 5-28 cobol_$pd_map_sw external static fixed bin(17,0) dcl 5-126 cobol_$perform_list_ptr external static pointer dcl 5-36 cobol_$perform_para_index external static fixed bin(17,0) dcl 5-148 cobol_$perform_sect_index external static fixed bin(17,0) dcl 5-150 cobol_$priority_no external static fixed bin(17,0) dcl 5-140 cobol_$ptr_assumption_ind external static fixed bin(17,0) dcl 5-144 cobol_$ptr_status_ptr external static pointer dcl 5-56 cobol_$reg_assumption_ind external static fixed bin(17,0) dcl 5-146 cobol_$reg_status_ptr external static pointer dcl 5-58 cobol_$reloc_def_base_ptr external static pointer dcl 5-20 cobol_$reloc_def_max external static fixed bin(24,0) dcl 5-108 cobol_$reloc_link_base_ptr external static pointer dcl 5-22 cobol_$reloc_link_max external static fixed bin(24,0) dcl 5-110 cobol_$reloc_sym_base_ptr external static pointer dcl 5-24 cobol_$reloc_sym_max external static fixed bin(24,0) dcl 5-112 cobol_$reloc_text_base_ptr external static pointer dcl 5-18 cobol_$reloc_text_max external static fixed bin(24,0) dcl 5-106 cobol_$reloc_work_base_ptr external static pointer dcl 5-26 cobol_$reloc_work_max external static fixed bin(24,0) dcl 5-114 cobol_$reswd_ptr external static pointer dcl 5-78 cobol_$same_sort_merge_proc external static bit(1) dcl 5-214 cobol_$scratch_dir external static char(168) dcl 5-206 cobol_$sect_eop_flag external static fixed bin(17,0) dcl 5-136 cobol_$seg_init_flag external static fixed bin(17,0) dcl 5-132 cobol_$seg_init_list_ptr external static pointer dcl 5-40 cobol_$stack_off external static fixed bin(17,0) dcl 5-120 cobol_$statement_info_ptr external static pointer dcl 5-76 cobol_$sym_base_ptr external static pointer dcl 5-16 cobol_$sym_max external static fixed bin(17,0) dcl 5-104 cobol_$sym_wd_off external static fixed bin(17,0) dcl 5-102 cobol_$tag_table_max external static fixed bin(17,0) dcl 5-166 cobol_$tag_table_ptr external static pointer dcl 5-52 cobol_$temp_token_area_ptr external static pointer dcl 5-42 cobol_$temp_token_max external static fixed bin(17,0) dcl 5-168 cobol_$temp_token_ptr external static pointer dcl 5-44 cobol_$text_base_ptr external static pointer dcl 5-8 cobol_$token_block1_ptr external static pointer dcl 5-46 cobol_$token_block2_ptr external static pointer dcl 5-48 cobol_$value_cnt external static fixed bin(17,0) dcl 5-194 cobol_$ws_charcnt external static fixed bin(17,0) dcl 5-186 cobol_$ws_wdoff external static fixed bin(17,0) dcl 5-200 cobol_$xref_bypass external static bit(1) dcl 5-212 cobol_$xref_chain_ptr external static pointer dcl 5-74 cobol_$xref_token_ptr external static pointer dcl 5-72 cobol_afp defined pointer dcl 7-11 cobol_analin_fileno defined pointer dcl 7-13 cobol_cmfp defined pointer dcl 7-21 cobol_com_fileno defined pointer dcl 7-23 cobol_curr_in defined pointer dcl 7-53 cobol_curr_out defined pointer dcl 7-55 cobol_data_wd_off defined fixed bin(17,0) dcl 5-119 cobol_dfp defined pointer dcl 7-27 cobol_eltp defined pointer dcl 7-19 cobol_ext_$cobol_afp external static pointer dcl 7-10 cobol_ext_$cobol_analin_fileno external static pointer dcl 7-12 cobol_ext_$cobol_cmfp external static pointer dcl 7-20 cobol_ext_$cobol_com_fileno external static pointer dcl 7-22 cobol_ext_$cobol_curr_in external static pointer dcl 7-52 cobol_ext_$cobol_curr_out external static pointer dcl 7-54 cobol_ext_$cobol_dfp external static pointer dcl 7-26 cobol_ext_$cobol_eltp external static pointer dcl 7-18 cobol_ext_$cobol_fileno1 external static fixed bin(24,0) dcl 7-78 cobol_ext_$cobol_hfp external static pointer dcl 7-28 cobol_ext_$cobol_lpr external static char(5) packed unaligned dcl 7-95 cobol_ext_$cobol_m1fp external static pointer dcl 7-30 cobol_ext_$cobol_m2fp external static pointer dcl 7-32 cobol_ext_$cobol_min1_fileno external static pointer dcl 7-34 cobol_ext_$cobol_min2_fileno_ptr external static pointer dcl 7-36 cobol_ext_$cobol_name_fileno external static pointer dcl 7-38 cobol_ext_$cobol_name_fileno_ptr external static pointer dcl 7-40 cobol_ext_$cobol_ntfp external static pointer dcl 7-42 cobol_ext_$cobol_options external static char(120) packed unaligned dcl 7-97 cobol_ext_$cobol_options_len external static fixed bin(24,0) dcl 7-80 cobol_ext_$cobol_pdofp external static pointer dcl 7-44 cobol_ext_$cobol_pdout_fileno external static fixed bin(24,0) dcl 7-82 cobol_ext_$cobol_pfp external static pointer dcl 7-46 cobol_ext_$cobol_print_fileno external static fixed bin(24,0) dcl 7-84 cobol_ext_$cobol_rm2fp external static pointer dcl 7-48 cobol_ext_$cobol_rmin2_fileno external static fixed bin(24,0) dcl 7-86 cobol_ext_$cobol_rmin2fp external static pointer dcl 7-50 cobol_ext_$cobol_rwdd external static pointer dcl 7-72 cobol_ext_$cobol_rwpd external static pointer dcl 7-74 cobol_ext_$cobol_sfp external static pointer dcl 7-56 cobol_ext_$cobol_w1p external static pointer dcl 7-58 cobol_ext_$cobol_w2p external static pointer dcl 7-60 cobol_ext_$cobol_w3p external static pointer dcl 7-62 cobol_ext_$cobol_w5p external static pointer dcl 7-64 cobol_ext_$cobol_w6p external static pointer dcl 7-66 cobol_ext_$cobol_w7p external static pointer dcl 7-68 cobol_ext_$cobol_x1_fileno external static fixed bin(24,0) dcl 7-88 cobol_ext_$cobol_x2_fileno external static fixed bin(24,0) dcl 7-90 cobol_ext_$cobol_x3_fileno external static fixed bin(24,0) dcl 7-92 cobol_ext_$cobol_x3fp external static pointer dcl 7-70 cobol_ext_$cobol_xlast8 external static bit(1) packed unaligned dcl 7-100 cobol_ext_$report_exists external static bit(1) packed unaligned dcl 7-102 cobol_ext_$report_first_token external static pointer dcl 7-14 cobol_ext_$report_last_token external static pointer dcl 7-16 cobol_fileno1 defined fixed bin(24,0) dcl 7-79 cobol_hfp defined pointer dcl 7-29 cobol_lpr defined char(5) packed unaligned dcl 7-96 cobol_m1fp defined pointer dcl 7-31 cobol_m2fp defined pointer dcl 7-33 cobol_min1_fileno defined pointer dcl 7-35 cobol_min2_fileno_ptr defined pointer dcl 7-37 cobol_name_fileno defined pointer dcl 7-39 cobol_name_fileno_ptr defined pointer dcl 7-41 cobol_ntfp defined pointer dcl 7-43 cobol_options defined char(120) packed unaligned dcl 7-98 cobol_options_len defined fixed bin(24,0) dcl 7-81 cobol_pdofp defined pointer dcl 7-45 cobol_pdout_fileno defined fixed bin(24,0) dcl 7-83 cobol_pfp defined pointer dcl 7-47 cobol_print_fileno defined fixed bin(24,0) dcl 7-85 cobol_rm2fp defined pointer dcl 7-49 cobol_rmin2_fileno defined fixed bin(24,0) dcl 7-87 cobol_rmin2fp defined pointer dcl 7-51 cobol_rwdd defined pointer dcl 7-73 cobol_rwpd defined pointer dcl 7-75 cobol_sfp defined pointer dcl 7-57 cobol_w1p defined pointer dcl 7-59 cobol_w2p defined pointer dcl 7-61 cobol_w3p defined pointer dcl 7-63 cobol_w5p defined pointer dcl 7-65 cobol_w6p defined pointer dcl 7-67 cobol_w7p defined pointer dcl 7-69 cobol_x1_fileno defined fixed bin(24,0) dcl 7-89 cobol_x2_fileno defined fixed bin(24,0) dcl 7-91 cobol_x3_fileno defined fixed bin(24,0) dcl 7-93 cobol_x3fp defined pointer dcl 7-71 cobol_xlast8 defined bit(1) packed unaligned dcl 7-101 compile_count defined fixed bin(17,0) dcl 5-143 coms_charcnt defined fixed bin(17,0) dcl 5-189 coms_wdoff defined fixed bin(17,0) dcl 5-203 con_end_ptr defined pointer dcl 5-11 con_wd_off defined fixed bin(17,0) dcl 5-93 cons_charcnt defined fixed bin(17,0) dcl 5-193 constant_offset defined fixed bin(17,0) dcl 5-157 data_init_flag defined fixed bin(17,0) dcl 5-131 date_compiled_sw defined fixed bin(17,0) dcl 5-181 debug_enable defined fixed bin(17,0) dcl 5-175 def_base_ptr defined pointer dcl 5-13 def_max defined fixed bin(17,0) dcl 5-97 def_wd_off defined fixed bin(17,0) dcl 5-95 desc_an based structure level 1 packed packed unaligned dcl 3-103 desc_an_ptr automatic pointer dcl 3-119 desc_nn based structure level 1 packed packed unaligned dcl 3-122 desc_nn_ptr automatic pointer dcl 3-118 diag_ptr defined pointer dcl 5-71 eln_max defined fixed bin(17,0) dcl 5-173 eln_ptr defined pointer dcl 5-69 epp2_inst internal static bit(36) initial packed unaligned dcl 477 fixup_max defined fixed bin(17,0) dcl 5-165 fixup_ptr defined pointer dcl 5-31 fs_charcnt defined fixed bin(17,0) dcl 5-185 fs_wdoff defined fixed bin(17,0) dcl 5-199 include_cnt defined fixed bin(17,0) dcl 5-183 include_info_ptr defined pointer dcl 5-87 index builtin function dcl 1699 init_stack_off defined fixed bin(17,0) dcl 5-125 initval_base_ptr defined pointer dcl 5-33 initval_file_ptr defined pointer dcl 5-35 initval_flag defined fixed bin(17,0) dcl 5-179 input_struc based structure level 1 unaligned dcl 3-32 inst_struc based structure level 1 dcl 3-66 lda_63_dl internal static bit(36) initial packed unaligned dcl 167 length builtin function dcl 1699 link_base_ptr defined pointer dcl 5-15 link_max defined fixed bin(17,0) dcl 5-101 link_wd_off defined fixed bin(17,0) dcl 5-99 list_off defined fixed bin(17,0) dcl 5-155 list_ptr defined pointer dcl 5-65 ls_charcnt defined fixed bin(17,0) dcl 5-191 main_pcs_ptr defined pointer dcl 5-85 map_data_max defined fixed bin(17,0) dcl 5-163 map_data_ptr defined pointer dcl 5-55 max_stack_off defined fixed bin(17,0) dcl 5-123 minpral5_ptr defined pointer dcl 5-51 misc_base_ptr defined pointer dcl 5-61 misc_end_ptr defined pointer dcl 5-63 misc_max defined fixed bin(17,0) dcl 5-159 next_tag defined fixed bin(17,0) dcl 5-129 non_source_offset defined fixed bin(17,0) dcl 5-177 ntbuf_ptr defined pointer dcl 5-83 obj_seg_name defined char(32) dcl 5-209 op_con_ptr defined pointer dcl 5-81 para_eop_flag defined fixed bin(17,0) dcl 5-139 pd_map_index defined fixed bin(17,0) dcl 5-117 pd_map_max defined fixed bin(17,0) dcl 5-161 pd_map_ptr defined pointer dcl 5-29 pd_map_sw defined fixed bin(17,0) dcl 5-127 perform_list_ptr defined pointer dcl 5-37 perform_para_index defined fixed bin(17,0) dcl 5-149 perform_sect_index defined fixed bin(17,0) dcl 5-151 pl1_op_dbl_p_dbl internal static fixed bin(15,0) initial dcl 175 priority_no defined fixed bin(17,0) dcl 5-141 ptr_assumption_ind defined fixed bin(17,0) dcl 5-145 ptr_status_ptr defined pointer dcl 5-57 reg_assumption_ind defined fixed bin(17,0) dcl 5-147 reg_status_ptr defined pointer dcl 5-59 rel builtin function dcl 1699 reloc_def_base_ptr defined pointer dcl 5-21 reloc_def_max defined fixed bin(24,0) dcl 5-109 reloc_link_base_ptr defined pointer dcl 5-23 reloc_link_max defined fixed bin(24,0) dcl 5-111 reloc_struc based structure array level 1 unaligned dcl 3-44 reloc_sym_base_ptr defined pointer dcl 5-25 reloc_sym_max defined fixed bin(24,0) dcl 5-113 reloc_text_base_ptr defined pointer dcl 5-19 reloc_text_max defined fixed bin(24,0) dcl 5-107 reloc_work_base_ptr defined pointer dcl 5-27 reloc_work_max defined fixed bin(24,0) dcl 5-115 report_exists defined bit(1) packed unaligned dcl 7-103 report_first_token defined pointer dcl 7-15 report_last_token defined pointer dcl 7-17 reswd_ptr defined pointer dcl 5-79 same_sort_merge_proc defined bit(1) dcl 5-215 scratch_dir defined char(168) dcl 5-207 sect_eop_flag defined fixed bin(17,0) dcl 5-137 seg_init_flag defined fixed bin(17,0) dcl 5-133 seg_init_list_ptr defined pointer dcl 5-41 stack_off defined fixed bin(17,0) dcl 5-121 statement_info_ptr defined pointer dcl 5-77 string builtin function dcl 1699 substr builtin function dcl 1699 sym_base_ptr defined pointer dcl 5-17 sym_max defined fixed bin(17,0) dcl 5-105 sym_wd_off defined fixed bin(17,0) dcl 5-103 tag_table_max defined fixed bin(17,0) dcl 5-167 tag_table_ptr defined pointer dcl 5-53 temp_token_area_ptr defined pointer dcl 5-43 temp_token_max defined fixed bin(17,0) dcl 5-169 temp_token_ptr defined pointer dcl 5-45 text_base_ptr defined pointer dcl 5-9 text_wd_off defined fixed bin(17,0) dcl 5-91 token_block1_ptr defined pointer dcl 5-47 token_block2_ptr defined pointer dcl 5-49 unspec builtin function dcl 1699 value_cnt defined fixed bin(17,0) dcl 5-195 ws_charcnt defined fixed bin(17,0) dcl 5-187 ws_wdoff defined fixed bin(17,0) dcl 5-201 xref_bypass defined bit(1) dcl 5-213 xref_chain_ptr defined pointer dcl 5-75 xref_token_ptr defined pointer dcl 5-73 NAMES DECLARED BY EXPLICIT CONTEXT. cobol_exp3 000062 constant entry external dcl 28 con_from_float_bin 002607 constant entry internal dcl 1366 ref 333 con_to_float_bin 001461 constant entry internal dcl 798 ref 310 324 convert_or_move 001333 constant entry internal dcl 686 ref 278 296 do_exponentiation 002172 constant entry internal dcl 1139 ref 327 emit_exp_proc 000305 constant entry internal dcl 347 ref 252 exit 000304 constant label dcl 339 exit_con_from_float_bin 003010 constant label dcl 1570 exit_con_to_float_bin 002171 constant label dcl 1134 exit_convert_or_move 001460 constant label dcl 793 exit_do_exponentiation 002606 constant label dcl 1361 exit_emit_exp_proc 001332 constant label dcl 681 exit_pointer_register_load 003106 constant label dcl 1692 pointer_register_load 003011 constant entry internal dcl 1575 ref 970 1102 1117 1269 1283 1512 1537 1563 start 000067 constant label dcl 248 start_con_from_float_bin 002611 constant label dcl 1499 start_con_to_float_bin 001471 constant label dcl 956 start_convert_or_move 001335 constant label dcl 745 start_do_exponentiation 002174 constant label dcl 1228 start_exit_emit_exp_proc 000310 constant label dcl 519 start_pointer_register_load 003013 constant label dcl 1664 NAME DECLARED BY CONTEXT OR IMPLICATION. bit builtin function ref 525 533 541 989 990 1014 1041 1079 1126 1293 1353 1543 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3412 3650 3141 3422 Length 4256 3141 236 371 251 160 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cobol_exp3 367 external procedure is an external procedure. emit_exp_proc internal procedure shares stack frame of external procedure cobol_exp3. convert_or_move internal procedure shares stack frame of external procedure cobol_exp3. con_to_float_bin internal procedure shares stack frame of external procedure cobol_exp3. do_exponentiation internal procedure shares stack frame of external procedure cobol_exp3. con_from_float_bin internal procedure shares stack frame of external procedure cobol_exp3. pointer_register_load internal procedure shares stack frame of external procedure cobol_exp3. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 exp_proc_emitted cobol_exp3 000011 exp_proc_tag cobol_exp3 000012 fixup_directive cobol_exp3 000014 code1_instr emit_exp_proc 000052 rel_code1 emit_exp_proc 000146 code2_instr emit_exp_proc 000150 err_ret_inst emit_exp_proc 000151 neg_non_int_code emit_exp_proc 000152 zero_zero_code emit_exp_proc 000153 zero_neg_code emit_exp_proc 000154 move_eos_token convert_or_move 000162 lda_63_dl_const con_to_float_bin 000164 tra_insts do_exponentiation 000166 a_and_x7 con_from_float_bin STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cobol_exp3 000100 dn_ptr cobol_exp3 000102 pr_struc cobol_exp3 000112 pr_struc_ptr cobol_exp3 000114 reg_struc cobol_exp3 000126 reg_struc_ptr cobol_exp3 000130 work_lop_ptr cobol_exp3 000132 work_rop_ptr cobol_exp3 000134 restore_pointer_regs cobol_exp3 000135 lop_seg cobol_exp3 000136 lop_offset cobol_exp3 000137 rop_seg cobol_exp3 000140 rop_offset cobol_exp3 000141 result_seg cobol_exp3 000142 result_offset cobol_exp3 000143 restart_tag cobol_exp3 000144 inst_buff cobol_exp3 000156 reloc_buff cobol_exp3 000170 input_buff cobol_exp3 000202 input_ptr cobol_exp3 000204 inst_ptr cobol_exp3 000206 reloc_ptr cobol_exp3 000210 in_token_ptr cobol_exp3 000220 temp_ptr emit_exp_proc 000222 temp_tag emit_exp_proc 000223 save_offset emit_exp_proc 000224 linkoff emit_exp_proc 000225 ret_offset emit_exp_proc 000226 pr3_save_load_inst emit_exp_proc 000227 inst_index emit_exp_proc 000240 ret_offset convert_or_move 000242 token_buff convert_or_move 000274 precision con_to_float_bin 000276 precision_constant_ptr con_to_float_bin 000300 precision_offset con_to_float_bin 000301 source_type con_to_float_bin 000302 ret_offset con_to_float_bin 000312 temp_offset do_exponentiation 000313 temp_seg do_exponentiation 000314 temp_tag do_exponentiation 000324 ret_offset con_from_float_bin 000334 tchar_offset pointer_register_load THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac mdfx1 ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cobol_addr cobol_alloc$stack cobol_call_op cobol_define_tag cobol_define_tag_nc cobol_emit cobol_make_fixup cobol_make_link$type_4 cobol_make_tagref cobol_make_type9$copy cobol_move_gen cobol_pool cobol_process_error cobol_register$load cobol_reset_r$after_call THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cobol_$compile_count cobol_$next_tag cobol_$text_wd_off cobol_ext_$cobol_com_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 28 000055 248 000067 252 000072 253 000100 262 000103 264 000106 265 000110 266 000116 276 000120 278 000124 286 000156 293 000157 294 000163 296 000164 304 000216 305 000217 310 000221 318 000223 324 000232 327 000234 333 000264 337 000277 339 000304 347 000305 510 000307 519 000310 522 000330 525 000333 528 000343 530 000362 533 000365 536 000375 538 000414 541 000417 548 000427 551 000431 552 000434 555 000435 558 000450 560 000462 561 000466 562 000476 563 000511 570 000532 573 000550 574 000552 575 000554 577 000556 578 000560 579 000562 580 000563 581 000565 582 000567 587 000602 588 000605 591 000606 594 000614 602 000634 607 000655 608 000661 611 000676 615 000713 616 000717 624 000734 627 000755 628 000760 629 000761 631 000767 632 001007 634 001030 635 001034 637 001051 639 001066 641 001072 646 001107 649 001130 650 001133 651 001134 653 001142 654 001162 657 001203 658 001207 661 001224 664 001241 665 001245 670 001262 674 001303 675 001306 677 001307 678 001315 681 001332 686 001333 745 001335 752 001337 754 001351 755 001355 756 001356 757 001357 758 001361 759 001363 761 001365 764 001374 768 001377 774 001403 778 001421 779 001424 782 001426 783 001430 784 001432 785 001436 786 001441 787 001446 790 001452 793 001460 798 001461 952 001463 953 001465 954 001467 956 001471 958 001473 962 001475 963 001477 964 001500 965 001502 967 001506 970 001510 974 001512 975 001514 976 001515 978 001516 982 001525 984 001526 988 001536 989 001540 990 001545 993 001555 998 001576 999 001600 1000 001602 1001 001603 1002 001605 1003 001607 1006 001610 1008 001623 1010 001625 1014 001626 1015 001640 1016 001644 1022 001646 1025 001652 1031 001667 1032 001671 1033 001672 1034 001673 1038 001702 1039 001703 1040 001707 1041 001713 1047 001723 1048 001724 1049 001725 1055 001742 1056 001744 1057 001745 1059 001746 1061 001755 1062 001756 1067 001757 1071 001776 1072 002000 1076 002007 1077 002010 1078 002014 1079 002020 1084 002030 1091 002045 1092 002064 1093 002067 1097 002071 1098 002073 1099 002074 1100 002076 1102 002100 1109 002102 1113 002121 1114 002123 1115 002125 1116 002127 1117 002131 1119 002133 1120 002134 1124 002135 1125 002136 1126 002142 1127 002152 1131 002154 1134 002171 1139 002172 1228 002174 1230 002176 1231 002200 1237 002202 1238 002204 1239 002205 1241 002206 1245 002215 1246 002216 1247 002220 1248 002222 1249 002223 1250 002226 1253 002231 1256 002244 1259 002250 1263 002265 1264 002267 1265 002270 1266 002271 1267 002274 1269 002276 1275 002300 1276 002317 1279 002321 1280 002323 1281 002325 1283 002327 1288 002331 1289 002332 1290 002336 1291 002342 1293 002350 1295 002360 1301 002377 1302 002400 1303 002404 1304 002406 1306 002410 1307 002411 1310 002412 1313 002427 1326 002450 1329 002471 1331 002476 1336 002500 1345 002520 1346 002537 1347 002542 1349 002544 1350 002545 1351 002551 1352 002553 1353 002557 1355 002567 1356 002570 1359 002571 1361 002606 1366 002607 1499 002611 1501 002613 1502 002615 1506 002617 1507 002621 1508 002622 1509 002624 1510 002626 1512 002630 1522 002632 1523 002635 1524 002636 1525 002637 1526 002640 1528 002641 1532 002655 1533 002657 1534 002661 1535 002666 1537 002670 1541 002672 1542 002674 1543 002675 1544 002712 1545 002716 1546 002722 1548 002725 1554 002742 1556 002761 1557 002763 1558 002764 1559 002766 1560 002770 1563 002772 1568 002774 1570 003010 1575 003011 1664 003013 1666 003015 1667 003017 1669 003021 1671 003032 1675 003034 1676 003036 1677 003040 1678 003041 1679 003043 1680 003045 1683 003046 1687 003061 1690 003071 1692 003106 ----------------------------------------------------------- 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