COMPILATION LISTING OF SEGMENT comp_make_page_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/23/85 1004.2 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * Copyright, (C) Honeywell Information Systems Inc., 1980 * 6* * * 7* * * 8* *********************************************************** */ 9 10 /* compose subroutine to make up pages */ 11 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 13 14 comp_make_page_: 15 proc (break_type, force_balance); 16 17 /* PARAMETERS */ 18 19 dcl break_type fixed bin; /* break type flag; 0 = format, 20* 1 = block, 2 = column, 3 = need, 21* 4 = page, 5 = fnote, 6 = footer */ 22 dcl force_balance bit (1); /* 1 = force a page balance */ 23 24 /* LOCAL STORAGE */ 25 26 dcl balnet fixed bin (31); /* local value for balancing */ 27 dcl balusd fixed bin (31); /* local value for balancing */ 28 dcl bal_sw bit (1); /* page balance switch */ 29 dcl blkftnct fixed bin; /* block footnote count */ 30 dcl blkftnusd fixed bin (31); /* block footnote space */ 31 dcl blk_mod bit (1); /* local value used in balancing */ 32 dcl blk_split (0:20) bit (1); /* 1 = last col block has been split */ 33 dcl blkno fixed bin; /* local value */ 34 dcl blkusd fixed bin (31); /* local space accumulator */ 35 dcl blkptr ptr; /* local block pointer */ 36 dcl 1 block aligned like text based (blkptr); 37 /* break types */ 38 dcl breaks (0:6) char (4) static options (constant) 39 init ("fmt", "blk", "col", "pag", "need", "ftn", "ftr"); 40 dcl bug_sw bit (1); /* effective debug switch */ 41 dcl cap_count fixed bin; /* for caption line counting */ 42 dcl coldepth fixed bin (31); /* current depth in a column */ 43 /* col space discarded */ 44 dcl coldisc (0:20) fixed bin (31); 45 dcl 1 colftn like colhdr.balftn; 46 dcl colhdrusd fixed bin (31); /* space used by column header */ 47 dcl colnet fixed bin (31); /* local value for balancing */ 48 dcl colusd fixed bin (31); /* local value for balancing */ 49 dcl curbalblk fixed bin; /* current balance point */ 50 /* footnotes deferred by widowing */ 51 dcl 1 dfrftn like colhdr.balftn; 52 dcl done bit (1); 53 dcl force_bal bit (1); 54 dcl force_this_page 55 bit (1); /* 1= force-print a trimmed page */ 56 dcl ftnblkptr ptr; /* a footnote */ 57 dcl 1 ftnblk aligned like text based (ftnblkptr); 58 dcl ftn_held bit (1); /* footnote processing control */ 59 dcl ftnct fixed bin; /* local footnote counter */ 60 dcl ftndx fixed bin; /* footnote block index */ 61 dcl ftnusd fixed bin (31) init (0); 62 /* local footnote space */ 63 dcl head_used fixed bin (31) init (0); 64 /* page header block space */ 65 dcl (i, j, k) fixed bin; /* working index */ 66 dcl iblk fixed bin; /* block counter */ 67 dcl icol fixed bin; /* column counter */ 68 dcl ilin fixed bin; /* line counter */ 69 dcl keeping bit (1); /* local keep mode flag */ 70 dcl keepsz fixed bin (31); /* keep size */ 71 dcl last_line fixed bin; /* last line for widowing, etc. */ 72 dcl last_unbal fixed bin (31); 73 dcl line_area_ndx fixed bin; 74 dcl linftnct fixed bin; /* line footnote counter */ 75 dcl maxcoldepth fixed bin (31); /* local value depth for balancing */ 76 dcl maxcolusd fixed bin (31); /* local value for balancing */ 77 dcl mincolusd fixed bin (31); /* local value for balancing */ 78 dcl need_page bit (1); /* page needed for need break */ 79 dcl note_oflo bit (1); /* loop control switch */ 80 dcl 1 oflo static, /* page overflow data */ 81 /* block count */ 82 2 ct fixed bin init (0), 83 /* column space used */ 84 2 used fixed bin (31) init (0), 85 /* the blocks */ 86 2 blkptr (100) ptr init ((100) null), 87 2 ftn, /* footnotes */ 88 3 ct fixed bin init (0), 89 3 usd fixed bin (31) init (0), 90 3 blkndx (50) fixed bin init ((50) 0); 91 dcl ofloblkptr ptr; /* overflow block */ 92 dcl 1 ofloblk aligned like text based (ofloblkptr); 93 dcl orph_ftn bit (1); /* orphan footnote flag */ 94 dcl orphftnct fixed bin; /* orphan footnote count */ 95 dcl orphftnusd fixed bin (31); /* orphan footnote space */ 96 dcl pagenet fixed bin (31); /* for column balancing */ 97 dcl pagoflo bit (1); /* page overflow signal */ 98 dcl pagusd fixed bin (31) static; 99 dcl pgc_select char (1) static init (""); 100 dcl rebalnet fixed bin (31); /* net column space for rebalancing */ 101 dcl rebal_sw bit (1); 102 dcl savblkusd fixed bin (31); /* used for widowing */ 103 dcl 1 savcolftn like colhdr.balftn; 104 dcl savcolusd fixed bin (31); /* used for widowing */ 105 dcl savftnct fixed bin; /* used for widowing */ 106 dcl savftnusd fixed bin (31); /* used for widowing */ 107 dcl spcl_line char (512) var; /* "special" control line */ 108 dcl spcl_linespace fixed bin (31); /* lead for special line */ 109 dcl spcl_lndx fixed bin; /* block line index of special line */ 110 dcl text_added bit (1) aligned; 111 dcl tmpdepth fixed bin (31); /* temporary depth counter */ 112 dcl tmpnet fixed bin (31); 113 dcl tmpusd fixed bin (31); /* temporary space value */ 114 dcl unbal fixed bin (31); /* amount of column unbalance */ 115 dcl widct fixed bin; /* local widow count */ 116 dcl widow fixed bin (31); /* local widow size value */ 117 dcl widsiz fixed bin; /* local widow line count */ 118 dcl widusd fixed bin (31); /* used in block widowing */ 119 120 dcl (addr, bin, ceil, char, dec, divide, floor, hbound, index, length, 121 ltrim, max, min, mod, null, substr) 122 builtin; 123 dcl (cleanup, comp_abort, end_output) 124 condition; 125 126 dcl continue_to_signal_ 127 entry (fixed bin (35)); 128 129 bug_sw = shared.bug_mode | db_sw; /**/ 130 /* if col 0 or last col */ 131 if (page.hdr.col_index = 0 | /* and it has overflowed */ 132 page.hdr.col_index = page.parms.cols.count) 133 & (col.hdr.used + col.hdr.ftn.usd + col.depth_adj > col.hdr.net) 134 then pagoflo = "1"b; 135 else pagoflo = "0"b; 136 137 force_bal = force_balance; 138 bal_sw = 139 (pagoflo | force_bal 140 | (break_type = page_break & page.parms.cols.bal 141 | break_type = column_break 142 & page.hdr.col_index = page.parms.cols.count)) 143 & page.parms.cols.count > 1; 144 145 need_page = 146 break_type = need_break & page.hdr.col_index = page.parms.cols.count; 147 blkptr = null; 148 blk_split (*) = "0"b; 149 oflo.ct, oflo.used, oflo.ftn.ct, oflo.ftn.usd = 0; 150 widsiz = shared.widow_size; 151 widow = current_parms.linespace * widsiz; 152 ftn_held = (shared.ftn_reset = "hold"); 153 keepsz, orphftnct, orphftnusd, dfrftn = 0; 154 155 on cleanup, comp_abort 156 begin; 157 call clean_oflo; /* give back the overflow */ 158 call continue_to_signal_ (0); /* and pass the buck */ 159 end; 160 161 on end_output 162 begin; 163 call clean_oflo; /* give back the overflow */ 164 page.hdr.depth, page.hdr.used, pagusd = 0; 165 end; 166 167 if bug_sw 168 then 169 do; 170 call ioa_ ("make_page: (brk=^a pag=^a ^[front^;back^] bal=d^f u^f" 171 || "^[ FORCE^]^[ BAL^])", breaks (break_type), page.hdr.pageno, 172 page.hdr.frontpage, show (page.hdr.baldepth, 12000), 173 show (page.hdr.balusd, 12000), force_bal, bal_sw); 174 175 call ioa_ ("^5x(col=^d b^d u^f(^f)/^f(^f)^[ ftn^d/^f^;^2s^]" 176 || " pag=^a c^d u^f(^f)/^f)^[ (pi=^d ^f)^]", page.hdr.col_index, 177 col.hdr.blkct, show (col.hdr.used, 12000), 178 show (col.hdr.pspc, 12000), show (col.hdr.net, 12000), 179 show (col.depth_adj, 12000), col.hdr.ftn.ct > 0, col.hdr.ftn.ct, 180 show (col.hdr.ftn.usd, 12000), page.hdr.pageno, 181 page.parms.cols.count, show (page.hdr.used, 12000), 182 show (page.hdr.hdspc, 12000), show (page.hdr.net, 12000), 183 (shared.picture.count > 0), shared.picture.count, 184 show (shared.picture.space, 12000)); 185 end; /**/ 186 /* head the page if necessary */ 187 if ^(option.galley_opt | page.hdr.headed) 188 then call comp_head_page_ (head_used); 189 else head_used = col0.blkptr (1) -> text.hdr.used; 190 191 rebalnet, tmpnet, unbal, last_unbal = 0; 192 force_this_page, rebal_sw = "0"b; 193 194 pagusd = page.hdr.balusd; 195 maxcoldepth = 0; 196 orph_ftn = "0"b; 197 198 COL_LOOP: 199 coldisc (*) = 0; 200 coloop: /* for all active columns */ 201 do icol = 0 by 1 while (icol <= page.hdr.col_count); 202 page.hdr.col_index = icol; /* set column pointer */ 203 shared.colptr = page.column_ptr (icol); 204 /* initialize for this column */ 205 curbalblk = col.hdr.balblk; 206 colusd = col.hdr.balusd; 207 colftn = col.hdr.balftn; 208 209 if col.hdrptr ^= null /* running column header */ 210 then colhdrusd = col.hdrptr -> text.hdr.used; 211 else colhdrusd = 0; 212 213 rebal: 214 if icol = 0 /* for column 0 */ 215 then 216 COL0: 217 do; 218 if curbalblk = 1 /* page header? */ 219 then coldepth, tmpdepth = col.depth_adj; 220 else coldepth, tmpdepth = 221 max (head_used, 222 col.hdr.baldepth 223 + bin (col.hdr.balusd = 0) * col.depth_adj); 224 225 colnet, balnet = col.hdr.net; 226 227 if bug_sw 228 then 229 do; 230 call ioa_ ("^5x(pag=^a^21tusd=^f/^f bal=d^f u^f" 231 || " h^f^[ OFLO^] ^[^^^]BAL)^[ (pi=^d ^f)^;^2s^]", 232 page.hdr.pageno, show (page.hdr.used, 12000), 233 show (page.hdr.net, 12000), show (page.hdr.baldepth, 12000), 234 show (page.hdr.balusd, 12000), show (page.hdr.hdspc, 12000), 235 pagoflo, ^bal_sw, (shared.picture.count > 0), 236 shared.picture.count, show (shared.picture.space, 12000)); 237 238 call ioa_ ("^5x(col=0 b^d^21tusd=^f/^f(^f)^[ ftn=^d/^f^;^2s^]" 239 || " bal=b^d d^f u^f^[ ftn=^d/^f^;^2s^] ftr=^f h^f)", 240 col.hdr.blkct, show (col.hdr.used, 12000), 241 show (colnet, 12000), show (col.depth_adj, 12000), 242 col.hdr.ftn.ct > 0, col.hdr.ftn.ct, 243 show (col.hdr.ftn.usd, 12000), curbalblk, 244 show (col.hdr.baldepth, 12000), 245 show (col.hdr.balusd, 12000), (col.hdr.balftn.ct > 0), 246 col.hdr.balftn.ct, show (col.hdr.balftn.usd, 12000), 247 show (col.ftrusd, 12000), show (col.hdr.pspc, 12000)); 248 end; 249 end COL0; 250 251 else /* icol > 0 */ 252 NOT_COL0: 253 do; 254 coldepth, tmpdepth = 255 max (head_used, 256 col.hdr.baldepth + bin (col.hdr.balusd = 0) * col.depth_adj); 257 258 if bal_sw /* column balancing wanted? */ 259 then /* balance the columns */ 260 do; 261 if ^rebal_sw /* if not a rebalance pass */ 262 then 263 do; 264 if icol = 1 265 then 266 do; 267 balnet, balusd, keepsz = 0; 268 /* for all columns */ 269 do i = 1 to page.parms.cols.count; 270 locolptr = page.column_ptr (i); 271 272 balusd = 273 balusd + locol.hdr.used + locol.hdr.ftn.usd 274 + locol.ftrusd + locol.depth_adj; 275 276 balnet = balnet + locol.hdr.net; 277 278 if bug_sw 279 then call ioa_$nnl ("^[ (bal=^;,^]^f", (i = 1), 280 show (locol.hdr.used + locol.hdr.ftn.usd 281 + locol.depth_adj, 12000)); 282 end; 283 284 pagenet = 285 page.hdr.net - col0.hdr.used - col0.hdr.ftn.usd; 286 287 if balnet <= balusd 288 then balnet = pagenet; 289 else balnet = 290 max (widow + bin (pagoflo) * widow, 291 min (pagenet, 292 12000 293 * 294 ceil ( 295 divide (balusd, page.parms.cols.count * 12000, 296 31, 10)))); 297 298 balnet, colnet = max (balnet, keepsz) - col.ftrusd; 299 /**** colnet = 300*/**** max (balnet, col.hdr.used + col.depth_adj) 301*/**** - col.ftrusd;*/ 302 303 if bug_sw 304 then call ioa_ ("=^f)", show (balnet, 12000)); 305 end; 306 end; 307 308 else if rebal_sw 309 then 310 do; 311 colnet, balnet = rebalnet; 312 313 if bug_sw & icol = 1 314 then call ioa_ (" (rebal=^f)", show (rebalnet, 12000)); 315 end; 316 end; 317 318 else colnet = 319 min (col.hdr.net, 320 page.hdr.net - col0.hdr.used - col0.hdr.ftn.usd 321 - col0.ftrusd - col0.depth_adj); 322 323 if bug_sw 324 then call ioa_ ("^5x(col=^d b^d^21tusd=^f/^f(^f)^[ ftn=^d/^f^;^2s^]" 325 || " bal=b^d d^f u^f^[ ftn=^d/^f^;^2s^]" || " ftr=^f h^f)", 326 icol, col.hdr.blkct, show (col.hdr.used, 12000), 327 show (colnet, 12000), show (col.depth_adj, 12000), 328 (col.hdr.ftn.ct > 0), col.hdr.ftn.ct, 329 show (col.hdr.ftn.usd, 12000), curbalblk, 330 show (col.hdr.baldepth, 12000), 331 show (col.hdr.balusd, 12000), (col.hdr.balftn.ct > 0), 332 col.hdr.balftn.ct, show (col.hdr.balftn.usd, 12000), 333 show (col.ftrusd, 12000), show (col.hdr.pspc, 12000)); 334 end NOT_COL0; 335 336 if col.hdr.blkct >= curbalblk /* if blocks were added */ 337 then 338 BLKLOOP: 339 do iblk = curbalblk by 1 while (iblk <= col.hdr.blkct); 340 blkptr = col.blkptr (iblk); 341 342 if block.hdr.count > 0 /* if not an empty block */ 343 then 344 block_begin: 345 begin; /* to allocate loclinptr */ 346 347 dcl loclindx fixed bin; 348 dcl 1 loclin (block.hdr.count), 349 2 landx bin, /* line_area index */ 350 2 laptr ptr, /* line_area pointer */ 351 2 ptr ptr; /* line pointer */ 352 /**/ 353 /* copy line storage data into */ 354 loclindx = 0; /* a single array */ 355 do line_area_ptr = block.line_area.first 356 repeat (line_area.next) 357 while (line_area_ptr ^= null & loclindx < block.hdr.count); 358 do i = 1 to line_area.ndx while (loclindx < block.hdr.count); 359 loclindx = loclindx + 1; 360 loclin (loclindx).landx = i; 361 loclin (loclindx).laptr = line_area_ptr; 362 loclin (loclindx).ptr = line_area.linptr (i); 363 end; 364 end; 365 366 block.hdr.trl_ws = 0; /* count trimmable WS if this */ 367 if icol + iblk > 1 /* isnt the page header */ 368 then 369 do last_line = block.hdr.count to 1 by -1 370 while (loclin (last_line).ptr -> txtlin.white 371 & ^loclin (last_line).ptr -> txtlin.no_trim 372 & ^loclin (last_line).ptr -> txtlin.keep); 373 block.hdr.trl_ws = 374 block.hdr.trl_ws 375 + loclin (last_line).ptr -> txtlin.linespace; 376 end; 377 else last_line = block.hdr.count; 378 379 if bug_sw 380 then call ioa_ ("^7xblk=^d(^d)^[(W^[n^])^;^s^] siz=^d/^f(^f) " 381 || "^a^[ M^]^[ ftn=^d/^f^[(first)^]^;^3s^]" 382 || " col=d^f u^f(^f)^[/^f/^f^;^s^]", iblk, 383 block.blkndx, block.hdr.white, block.hdr.no_trim, 384 block.hdr.count, show (block.hdr.used, 12000), 385 show (block.hdr.trl_ws, 12000), block.blktype, 386 block.hdr.modified, block.hdr.ftn.ct > 0, 387 block.hdr.ftn.ct, show (block.hdr.ftn.usd, 12000), 388 (colftn.ct = 0), show (coldepth, 12000), 389 show (colusd, 12000), show (coldisc (icol), 12000), 390 (colftn.ct > 0), show (colftn.usd, 12000), 391 show (colusd + colftn.usd, 12000)); 392 393 /* trim leading white space from first column blocks */ 394 if (icol = 0 & iblk = 2 + bin (col0.hdrusd > 0) 395 & coldepth = head_used) 396 | (icol > 0 & iblk = curbalblk & page.hdr.col_count >= 1 397 & coldepth = page.hdr.baldepth) 398 then 399 TRIM_LWS: 400 do; /* if trimmable WS, throw it away */ 401 if block.hdr.white & ^block.hdr.no_trim & ^block.parms.keep 402 then 403 do; 404 if icol < 2 | ^bal_sw 405 then 406 do; 407 if bug_sw 408 then call ioa_ (" (Trimming ^f leading WS" 409 || " in col ^d)", 410 show (block.hdr.used, 12000), icol); 411 412 col.hdr.used = col.hdr.used - block.hdr.used; 413 col.hdr.baldepth = coldepth; 414 /**** col.hdr.pspc = 415*/**** max (col.hdr.pspc - block.hdr.used, 0);*/ 416 /* page, too? */ 417 if page.hdr.col_count < 2 | icol = 0 418 then page.hdr.used = page.hdr.used - block.hdr.used; 419 /* give the block back */ 420 call comp_util_$relblk (icol, col.blkptr (iblk)); 421 /* close up block ptr array */ 422 do j = iblk + 1 to col.hdr.blkct + 1; 423 col.blkptr (j - 1) = col.blkptr (j); 424 end; 425 col.blkptr (j - 1) = null (); 426 /* balance at this block */ 427 col.hdr.balblk, curbalblk = iblk; 428 /* if page now doesnt overflow, */ 429 /* go back for more */ 430 if page.hdr.used + col0.hdr.ftn.usd < page.hdr.net 431 & break_type = block_break & pagoflo 432 then 433 do; 434 col.hdr.baldepth, page.hdr.baldepth = 435 max (coldepth, page.hdr.baldepth); 436 pagusd = page.hdr.used; 437 pagoflo = "0"b; 438 goto return_; 439 end; 440 end; 441 442 if icol > 1 & bal_sw 443 then 444 do; 445 rebalnet = 446 colnet 447 - 12000 448 * 449 floor ( 450 divide (block.hdr.used, 451 12000 * page.parms.cols.count, 31, 10)); 452 /* advance to next block */ 453 curbalblk = curbalblk + 1; 454 455 if bug_sw 456 then call ioa_ ( 457 "^/ (Ignoring ^f leading WS in col " 458 || "^d used=^f rebal=^f)", 459 show (block.hdr.used, 12000), icol, 460 show (locol.hdr.used - block.hdr.trl_ws, 461 12000), show (rebalnet, 12000)); 462 end; 463 goto rebal; 464 end; 465 end TRIM_LWS; 466 467 tmpdepth = coldepth; /* fill in page depth */ 468 do ilin = 1 to block.hdr.count; 469 txtlinptr = loclin (ilin).ptr; 470 txtlin.depth = coldepth; 471 coldepth = coldepth + txtlin.linespace; 472 end; 473 474 if block.hdr.art /* expand artwork */ 475 /* except the page header */ 476 & block.blktype ^= "ph" 477 then call comp_art_ (blkptr, "0"b); 478 479 blkusd, blkftnct, blkftnusd = 0; 480 481 if icol + iblk = 1 /* page header? */ 482 then 483 do; 484 if page.hdr.col_count > 0 485 then 486 do i = 1 to page.hdr.col_count; 487 page.column_ptr (i) -> col.hdr.baldepth = 488 max (coldepth, 489 page.column_ptr (i) -> col.hdr.baldepth); 490 end; 491 492 page.hdr.baldepth = max (coldepth, page.hdr.baldepth); 493 goto block_fits; 494 end; 495 496 spcl_line = ""; /* erase special line */ 497 tmpusd = 498 colusd + colftn.usd + block.hdr.used + block.hdr.ftn.usd 499 + 24000 * bin (colftn.usd = 0 & block.hdr.ftn.usd > 0); 500 /* does it all fit? */ 501 if tmpusd <= colnet - col.depth_adj | option.galley_opt 502 then goto block_fits; /**/ 503 /* does it fit without the trl WS ? */ 504 else if tmpusd - block.hdr.trl_ws <= colnet - col.depth_adj 505 then 506 do; 507 block.hdr.trl_ws = tmpusd - colnet; 508 /* adjust trailing WS */ 509 /* force if last block on 1-up page */ 510 if page.parms.cols.count <= 1 & icol <= 1 511 & iblk = col.hdr.blkct 512 then force_this_page = "1"b; 513 goto block_fits; 514 end; /**/ 515 /* will short block fit sans notes? */ 516 if tmpusd - block.hdr.ftn.usd <= colnet - col.depth_adj 517 & last_line 518 < 2 * widsiz + block.hdr.head_size + block.hdr.cap_size 519 & block.hdr.used - block.hdr.trl_ws 520 < 2 * widow + block.hdr.head_used + block.hdr.cap_used 521 then goto block_fits; /**/ 522 /* special case for last text on */ 523 else if shared.end_output /* last multi-column page */ 524 & icol = page.parms.cols.count & iblk = col.hdr.blkct 525 & col.hdr.net > colnet - col.depth_adj 526 then 527 do; 528 force_this_page = "1"b; 529 goto block_fits; 530 end; 531 532 else goto inner_keep; 533 534 block_fits: 535 coldisc (icol) = block.hdr.trl_ws; 536 537 do ilin = 1 to block.hdr.count; 538 txtlinptr = loclin (ilin).ptr; 539 540 if txtlin.blk_splt /* a split header line? */ 541 then 542 do; /* erase it */ 543 txtlin.ptr -> txtstr = ""; 544 txtlin.linespace = 0; 545 546 if bug_sw & dt_sw 547 then call ioa_ ("^9xlin=^d/^d^-^8xsplt hdr", ilin, 548 txtlin.info.lineno); 549 end; 550 551 else 552 do; 553 blkusd = blkusd + txtlin.linespace; 554 /* if block is not the page header */ 555 /* or this is a galley block */ 556 if icol + iblk > 1 | option.galley_opt 557 then colusd = colusd + txtlin.linespace; 558 559 if bug_sw & dt_sw 560 then call ioa_ ( 561 "^9xlin=^d/^d d^f ld=^f blk=^f^[/^f/^f^;^2s^]" 562 || " col=^f^[/^f/^f^;^2s^]^[ white^]^[ null^]" 563 || "^[ A^]", ilin, txtlin.info.lineno, 564 show (txtlin.depth, 12000), 565 show (txtlin.linespace, 12000), 566 show (blkusd, 12000), (blkftnct > 0), 567 show (blkftnusd, 12000), 568 show (blkusd + blkftnusd, 12000), 569 show (colusd, 12000), (colftn.ct > 0), 570 show (colftn.usd, 12000), 571 show (colusd + colftn.usd, 12000), txtlin.white, 572 (txtlin.linespace = 0 573 & txtlin.ptr -> txtstr = ""), txtlin.art); 574 575 if coldepth > maxcoldepth 576 then maxcoldepth = coldepth; 577 end; 578 end; 579 580 if icol + iblk = 1 /* page header? */ 581 then maxcoldepth = coldepth; 582 583 if block.hdr.ftn.ct > 0 & block.hdr.ftn.usd > 0 584 then call take_block_notes; 585 586 page.hdr.modified = page.hdr.modified | block.hdr.modified; 587 goto end_block; 588 589 /* block wont fit, try widowing */ 590 inner_keep: 591 ilin = 1; /* in case the whole block pushes */ 592 line_area_ptr = loclin (ilin).laptr; 593 line_area_ndx = loclin (ilin).landx; 594 595 if block.hdr.white /* cant widow white space */ 596 then 597 do; /* too big? */ 598 if block.hdr.used > col.hdr.net - col.depth_adj 599 then block.hdr.used, loclin (1).ptr -> txtlin.linespace = 600 colnet - col.depth_adj; 601 goto wont_fit; /* move the whole block */ 602 end; 603 604 if block.blktype = "pi" /* cant widow pictures */ 605 then 606 do; 607 if block.hdr.used > col.hdr.net - col.depth_adj 608 then 609 do; 610 blkusd = block.hdr.used; 611 blkftnusd = block.hdr.ftn.usd; 612 savcolusd = colusd; 613 savcolftn = colftn; 614 goto oversize_keep; 615 end; 616 617 goto wont_fit; /* move the whole block */ 618 end; 619 620 blk_mod = "0"b; /* reset change bar control flag */ 621 ilin = block.hdr.count; /* preset counter for short block */ 622 line_area_ptr = loclin (ilin).laptr; 623 line_area_ndx = loclin (ilin).landx; 624 /* is block big enough? */ 625 if (last_line 626 >= 2 * widsiz + block.hdr.head_size + block.hdr.cap_size 627 & block.hdr.used - block.hdr.trl_ws 628 >= 2 * widow + block.hdr.head_used + block.hdr.cap_used) 629 /* or its the only one */ 630 | iblk = col.hdr.blkct & iblk = curbalblk 631 then 632 WIDOW_BLK: 633 do; /* clear block accumulators */ 634 blkusd, blkftnct, blkftnusd, keepsz = 0; 635 keeping = "0"b; 636 637 /* first, go thru block header, top widow, and any initial keep */ 638 savcolusd = colusd; 639 savcolftn = colftn; 640 641 do ilin = 1 to block.hdr.count 642 while (keeping | blkusd < widow + block.hdr.head_used); 643 txtlinptr = loclin (ilin).ptr; 644 645 if txtlin.blk_splt /* a split header line? */ 646 then 647 do; 648 spcl_lndx = ilin; 649 spcl_line = txtlin.ptr -> txtstr; 650 txtlin.ptr -> txtstr = ""; 651 spcl_linespace = txtlin.linespace; 652 txtlin.linespace = 0; 653 654 if bug_sw & dt_sw 655 then call ioa_ ("^9xlin=^dK/^d^2-splt hdr", ilin, 656 txtlin.info.lineno); 657 end; 658 659 else 660 do; 661 blkusd = blkusd + txtlin.linespace; 662 colusd = colusd + txtlin.linespace; 663 664 if bug_sw & dt_sw 665 then call ioa_ ("^9xlin=^dK^[^^K^]/^d d^f ld=^f" 666 || "^[ |^]^[ *^]^[ ftn=^d/^f^;^2s^]" 667 || " blk=^f^[/^f/^f^;^2s^]" 668 || " col=^f^[/^f/^f^;^2s^]" 669 || "^[ white^]^[ null^]" 670 || "^[ (initial keep/widow)^]", ilin, 671 txtlin.end_keep, txtlin.info.lineno, 672 show (txtlin.depth, 12000), 673 show (txtlin.linespace, 12000), 674 (txtlin.cbar.add | txtlin.cbar.mod), 675 txtlin.cbar.del, (txtlin.ftn.ct > 0), 676 txtlin.ftn.ct, show (txtlin.ftn.used, 12000), 677 show (blkusd, 12000), (blkftnct > 0), 678 show (blkftnusd, 12000), 679 show (blkusd + blkftnusd, 12000), 680 show (colusd, 12000), (colftn.ct > 0), 681 show (colftn.usd, 12000), 682 show (colusd + colftn.usd, 12000), 683 txtlin.white, 684 (txtlin.linespace = 0 685 & txtlin.ptr -> txtstr = ""), (ilin = 1)); 686 /**/ 687 /* any footnotes for this line? */ 688 if txtlin.ftn.ct > 0 & txtlin.ftn.used > 0 & ^ftn_held 689 then 690 do; 691 call take_line_notes (ilin); 692 if note_oflo & linftnct = 0 693 then 694 do; 695 ilin = 1; 696 goto wont_fit; 697 end; 698 699 if rebal_sw 700 then goto COL_LOOP; 701 end; /**/ 702 /* count keep */ 703 if txtlin.keep | txtlin.end_keep 704 then 705 do; 706 keepsz = keepsz + txtlin.linespace; 707 if txtlin.keep 708 then keeping = "1"b; 709 else keeping = "0"b; 710 end; /**/ 711 /* change bars */ 712 blk_mod = 713 blk_mod | txtlin.cbar.mod | txtlin.cbar.add 714 | txtlin.cbar.del; 715 end; 716 end; /**/ 717 /* oversize keep */ 718 if blkusd + blkftnusd > col.hdr.net - col.depth_adj 719 then 720 do; 721 ilin = 1; 722 goto oversize_keep; 723 end; /**/ 724 /* keep wont fit */ 725 if colusd + colftn.usd > col.hdr.net - col.depth_adj 726 then 727 do; 728 colusd = savcolusd; 729 colftn = savcolftn; 730 ilin = 1; 731 line_area_ptr = loclin (ilin).laptr; 732 line_area_ndx = loclin (ilin).landx; 733 734 if db_sw 735 then call ioa_ ("^-(push keep)"); 736 737 goto wont_fit; 738 end; 739 end WIDOW_BLK; 740 741 else 742 do; /* block cant be widowed */ 743 if icol > 0 /* if a multicolumn page */ 744 & force_bal /* and a forced balance */ 745 /**** & rebal_sw /* and rebalancing */ 746 then 747 do; /* a short page? */ 748 if balnet < col.hdr.net 749 & block.hdr.used + col.depth_adj > balnet 750 then tmpnet = 751 min (col.hdr.net, 752 colusd + block.hdr.used + col.depth_adj); 753 /* if we got any */ 754 if tmpnet > colnet 755 then 756 do; 757 if bug_sw 758 then call ioa_ ("^3x(Extending col ^d by ^f " 759 || "for keep/widow)", icol, 760 show (tmpnet - colnet, 12000)); 761 762 colusd = col.hdr.balusd; 763 colftn = col.hdr.balftn; 764 rebalnet = tmpnet; 765 rebal_sw = "1"b; 766 goto rebal; 767 end; 768 end; 769 770 blkusd = block.hdr.used; 771 blkftnusd = block.hdr.ftn.usd; 772 blkftnct = block.hdr.ftn.ct; 773 ilin = 1; 774 line_area_ptr = loclin (ilin).laptr; 775 line_area_ndx = loclin (ilin).landx; 776 goto wont_fit; 777 end; 778 779 /* if even header/widow/keep wont fit */ 780 if colusd + colftn.usd > colnet 781 then 782 do; /**/ 783 colusd = savcolusd; /* restore space used */ 784 785 if icol > 0 /* if a multicolumn page */ 786 & (pagoflo /* and page overflow */ 787 | bal_sw) /* or balance break */ 788 then 789 do; 790 /**** rebalnet = 0; /**/ 791 /* keep block on a short page? */ 792 if ilin > block.hdr.count 793 then /* does keep fit? */ 794 if balnet < col.hdr.net 795 & colusd + blkusd 796 <= col.hdr.net - col.depth_adj 797 then tmpnet = min (col.hdr.net, colusd + blkusd); 798 /* trailing widow? get extra space */ 799 else if ilin 800 >= block.hdr.count - widsiz 801 - block.hdr.cap_size 802 then tmpnet = 803 min (colnet + widow, col.hdr.used, 804 page.hdr.net - col0.hdr.used 805 - col0.hdr.ftn.usd); 806 /* if we got any */ 807 if tmpnet > colnet 808 then 809 do; 810 if bug_sw 811 then call ioa_ ("^3x(Extending col ^d by ^f " 812 || "for keep/widow)", icol, 813 show (tmpnet - colnet, 12000)); 814 815 colusd = col.hdr.balusd; 816 colftn = col.hdr.balftn; 817 rebalnet = tmpnet; 818 rebal_sw = "1"b; 819 goto rebal; 820 end; 821 end; 822 823 /* if an oversize keep or too many widow footnotes */ 824 oversize_keep: 825 line_area_ptr = loclin (ilin).laptr; 826 line_area_ndx = loclin (ilin).landx; 827 if blkusd + blkftnusd + 12000 * bin (blkftnusd > 0) 828 > page.hdr.net 829 then 830 do; /* restore column data */ 831 colusd = savcolusd; 832 colftn = savcolftn; 833 834 if block.hdr.white/* truncate white space */ 835 then /* and move the whole block */ 836 do; 837 blkusd, block.hdr.used, 838 loclin (1).ptr -> txtlin.linespace = colnet; 839 ilin = 1; 840 line_area_ptr = loclin (ilin).laptr; 841 line_area_ndx = loclin (ilin).landx; 842 goto wont_fit; 843 end; 844 845 if block.hdr.count = 1 & block.hdr.ftn.ct = 1 846 then /* cant split one-liners */ 847 do; /* back up one line */ 848 txtlinptr = loclin (ilin - 1).ptr; 849 850 call comp_report_ (4, 0, 851 "An unbreakable block " 852 || 853 "ending here cannot be split, file is aborted.", 854 addr (txtlin.info), txtlin.ptr -> txtstr); 855 856 signal comp_abort; 857 end; /**/ 858 /* determine the last free line */ 859 if blkusd > page.hdr.net 860 then /* if block is too big */ 861 do; /* skip trailing WS */ 862 do last_line = block.hdr.count to 1 by -1 863 while (loclin (last_line).ptr -> txtlin.ptr 864 -> txtstr = ""); 865 end; 866 867 widct = 0; 868 do last_line = last_line to 1 by -1 869 while (widct < widsiz); 870 if loclin (last_line).ptr -> txtlin.linespace ^= 0 871 then widct = widct + 1; 872 end; 873 end; /**/ 874 /* if last free line has no lead, back 875* up to previous lead with lead */ 876 if loclin (last_line).ptr -> txtlin.linespace = 0 877 then 878 do; 879 do last_line = last_line to 1 by -1 880 while (loclin (last_line).ptr 881 -> txtlin.linespace = 0); 882 end; 883 end; /**/ 884 /* find the page break point */ 885 blkusd, blkftnct, blkftnusd = 0; 886 do ilin = 1 to last_line; 887 ftnusd = 0; /* find the next line with lead */ 888 do j = ilin to last_line 889 while (loclin (j).ptr -> txtlin.linespace = 0); 890 ftnusd = ftnusd + loclin (j).ptr -> txtlin.ftn.used; 891 end; /**/ 892 /* if thats too much */ 893 if j <= last_line 894 then if colusd + colftn.usd + ftnusd + col.depth_adj 895 + loclin (j).ptr -> txtlin.linespace 896 + loclin (j).ptr -> txtlin.ftn.used > colnet 897 then goto split_keep; 898 /* take the line */ 899 txtlinptr = loclin (ilin).ptr; 900 901 blkusd = blkusd + txtlin.linespace; 902 colusd = colusd + txtlin.linespace; 903 904 if bug_sw & dt_sw 905 then call ioa_ ("^9xlin=^d^[K^;W^]/^d d^f ld=^f" 906 || "^[ |^]^[ *^]^[ ftn=^d/^f^;^2s^]" 907 || " blk=^f^[/^f/^f ^;^2s^]" 908 || " col=^f^[/^f/^f^;^2s^]^[ white^]" 909 || "^[ null^]^[ (oversize keep ^d)^]", ilin, 910 txtlin.keep, txtlin.info.lineno, 911 show (txtlin.depth, 12000), 912 show (txtlin.linespace, 12000), 913 (txtlin.cbar.add | txtlin.cbar.mod), 914 txtlin.cbar.del, (txtlin.ftn.ct > 0), 915 txtlin.ftn.ct, show (txtlin.ftn.used, 12000), 916 show (blkusd, 12000), (blkftnct > 0), 917 show (blkftnusd, 12000), 918 show (blkusd + blkftnusd, 12000), 919 show (colusd, 12000), (colftn.ct > 0), 920 show (colftn.usd, 12000), 921 show (colusd + colftn.usd, 12000), 922 txtlin.white, (txtlin.ptr -> txtstr = ""), 923 (ilin = 1), last_line); 924 /* any footnotes? */ 925 if txtlin.ftn.ct > 0 & txtlin.ftn.used > 0 & ^ftn_held 926 then 927 do; 928 call take_line_notes (ilin); 929 930 if blkftnct = 0 931 then goto split_keep; 932 933 if rebal_sw 934 then goto COL_LOOP; 935 end; /**/ 936 /* truncate white space */ 937 if txtlin.linespace > page.hdr.net 938 then 939 do; 940 call comp_report_ (2, 0, 941 "Embedded white space exceeds max " 942 || "page/column space. It will be truncated.", 943 addr (txtlin.info), ctl_line); 944 txtlin.linespace = colnet - (colusd + colftn.usd); 945 end; 946 947 tmpdepth = tmpdepth - txtlin.linespace; 948 end; 949 950 split_keep: 951 coldepth = loclin (ilin - 1).ptr -> txtlin.depth; 952 /* if the page is extended */ 953 if coldepth > maxcoldepth 954 then 955 do; 956 pagusd = max (pagusd, coldepth - head_used); 957 maxcoldepth = tmpdepth; 958 end; 959 960 blkusd = 0; /* clean necessary for split_block */ 961 goto split_block; 962 end; 963 964 ilin = 1; /* must move the whole block */ 965 line_area_ptr = loclin (ilin).laptr; 966 line_area_ndx = loclin (ilin).landx; 967 968 wont_fit: 969 coldepth = tmpdepth; /**/ 970 /* set page overflow */ 971 if (icol = 0 | /* if column 0 or last column */ 972 icol = page.parms.cols.count) 973 /* & colnet >= col.hdr.net*/ 974 then pagoflo = "1"b; /**/ 975 /* record new trailing WS */ 976 if ilin = 1 /* pushing a whole block? */ 977 & iblk > 1 978 then coldisc (icol) = 979 col.blkptr (iblk - 1) -> block.hdr.trl_ws; 980 else coldisc (icol) = 0; 981 982 if icol > 1 & bal_sw /* check column balance */ 983 then 984 do; /* unavoidable widow? */ 985 if iblk = curbalblk & ilin = 1 & blkusd < 2 * widow 986 then 987 do; 988 widsiz = widsiz - 1; 989 widow = widow - 12000; 990 /* reduce widow size */ 991 if bug_sw & dt_sw 992 then call ioa_ ("^5x(Changing widow to ^f)", 993 show (widow, 12000)); 994 goto COL_LOOP;/* and try again */ 995 end; 996 997 if icol > 1 998 then 999 do; 1000 mincolusd, maxcolusd, tmpnet = 1001 colusd + colftn.usd + col.depth_adj 1002 - coldisc (icol); 1003 /**** mincolusd, maxcolusd = 1004*/**** colusd + colftn.usd - coldisc (icol);*/ 1005 1006 if bug_sw & dt_sw 1007 then call ioa_$nnl ("^5x(colusd=^d/^f(^f)", icol, 1008 show (tmpnet + coldisc (icol), 12000), 1009 show (coldisc (icol), 12000)); 1010 1011 do j = 1 to icol - 1; 1012 locolptr = page.column_ptr (j); 1013 tmpnet = 1014 tmpnet + locol.hdr.used + locol.hdr.ftn.usd 1015 + locol.depth_adj; 1016 mincolusd = 1017 min (mincolusd, 1018 locol.hdr.used + locol.hdr.ftn.usd 1019 + locol.depth_adj - coldisc (j)); 1020 maxcolusd = 1021 max (maxcolusd, 1022 locol.hdr.used + locol.hdr.ftn.usd 1023 + locol.depth_adj - coldisc (j)); 1024 1025 if bug_sw & dt_sw 1026 then call ioa_$nnl (" ^d/^f(^f)", j, 1027 show (locol.hdr.used 1028 + locol.hdr.ftn.usd + locol.depth_adj, 1029 12000), show (coldisc (j), 12000)); 1030 end; 1031 1032 if bug_sw & dt_sw 1033 then call ioa_ (")"); 1034 1035 pagenet = page.hdr.net - col0.hdr.used; 1036 tmpnet = 1037 min (pagenet, 1038 12000 1039 * 1040 floor ( 1041 divide (tmpnet, page.parms.cols.count * 12000, 1042 31, 10))); 1043 /* check balancing */ 1044 unbal = maxcolusd - mincolusd; 1045 if unbal > 12000 & unbal ^= last_unbal 1046 then 1047 do; 1048 last_unbal = unbal; 1049 rebalnet = tmpnet; 1050 1051 if bug_sw 1052 then call ioa_ (" (Unbalance of ^f at" 1053 || " column ^d rebal=^f)", 1054 show (unbal, 12000), icol, 1055 show (rebalnet, 12000)); 1056 rebal_sw = "1"b; 1057 goto COL_LOOP; 1058 end; 1059 1060 /**** rebalnet = 0; /* erase it */ 1061 end; 1062 end; 1063 1064 call push_oflo; /* remove column overflow */ 1065 /* if last column and */ 1066 /* page has overflowed, eject it */ 1067 if (icol = 0 | icol = page.parms.cols.count) & pagoflo 1068 then 1069 do; 1070 if ^ftn_held 1071 then 1072 do; 1073 col.hdr.ftn = colftn; 1074 /* erase ftn header space */ 1075 if icol + colftn.ct = 0 1076 then col.hdr.ftn.usd = 0; 1077 end; 1078 1079 call flush_page; 1080 if shared.end_output 1081 then goto return_; 1082 1083 page.hdr.depth = head_used; 1084 page.hdr.used, maxcoldepth = 0; 1085 1086 if icol = 0 1087 then call pull_oflo (0, 0); 1088 1089 else 1090 do; 1091 call pull_oflo (icol, 1); 1092 icol, page.hdr.col_index = 1; 1093 shared.colptr = page.column_ptr (1); 1094 end; /**/ 1095 /* extra space for footnote header */ 1096 if ^ftn_held & col.hdr.ftn.usd > 0 1097 then col.hdr.ftn.usd = 1098 col.hdr.ftn.usd + ftnhdr.hdr.used + 12000; 1099 /* if page still overflows */ 1100 if (page.hdr.used > page.hdr.net 1101 & break_type ^= need_break 1102 & icol = page.parms.cols.count) 1103 | break_type = page_break 1104 then 1105 do; 1106 if bug_sw 1107 then call ioa_ ("^5x(continued page overflow)"); 1108 goto COL_LOOP; 1109 end; 1110 else pagoflo = "0"b; 1111 1112 /**** if page.hdr.used > 0 1113*/**** & (bal_sw & break_type >= column_break 1114*/**** | page.hdr.col_count <= 1 & break_type = page_break)*/ 1115 if page.hdr.used > 0 & bal_sw & break_type = page_break 1116 then goto COL_LOOP; 1117 else goto page_exit; 1118 end; 1119 1120 else call pull_oflo (icol, 1121 mod (icol, page.parms.cols.count) + 1); 1122 /* if an explicit balance break */ 1123 if break_type = column_break & icol = page.hdr.col_count 1124 then 1125 do; 1126 if bal_sw 1127 then 1128 do; 1129 /**** rebalnet = 0;*/ 1130 rebal_sw = "0"b; 1131 if bug_sw 1132 then call ioa_ ("^5x(explicit balance demanded)"); 1133 goto COL_LOOP; 1134 end; /**/ 1135 /* not last column? */ 1136 else if icol < page.parms.cols.count 1137 then call pull_oflo (icol, 1138 mod (icol, page.parms.cols.count) + 1); 1139 1140 else goto page_exit; 1141 end; 1142 1143 if icol = 0 | (pagoflo & icol = page.parms.cols.count) 1144 then goto page_exit; 1145 1146 else goto column_exit;/* continue with next column */ 1147 end; 1148 1149 /* keep/widow + footnotes fit, now for free lines */ 1150 free_lines: /**/ 1151 /* dont count trailing WS */ 1152 coldepth = coldepth - block.hdr.trl_ws; 1153 1154 /* any free lines? */ 1155 if ^blk_split (icol) 1156 then 1157 do; 1158 if ilin - 1 < last_line - widsiz - block.hdr.cap_size 1159 then 1160 do; 1161 cap_count, widusd = 0; 1162 do last_line = last_line to 1 by -1 1163 while (widusd <= widow); 1164 if cap_count < block.hdr.cap_size 1165 then cap_count = cap_count + 1; 1166 else widusd = 1167 widusd 1168 + loclin (last_line).ptr -> txtlin.linespace; 1169 end; 1170 end; 1171 else last_line = 0; 1172 end; 1173 else last_line = block.hdr.count - 1; 1174 1175 if spcl_line ^= "" /* split header in the widow? */ 1176 then 1177 do; 1178 ctl_line = spcl_line; 1179 call comp_ctls_ (text_added); 1180 if text_added 1181 then 1182 do; 1183 call comp_util_$replace_text (blkptr, "1"b, 1184 loclin (spcl_lndx).ptr, addr (ctl_line)); 1185 loclin (spcl_lndx).ptr -> txtlin.linespace = 1186 spcl_linespace; 1187 end; 1188 end; 1189 1190 FREE_LINES: 1191 do ilin = ilin to last_line + 1; 1192 txtlinptr = loclin (ilin).ptr; 1193 1194 if colusd + colftn.usd + txtlin.linespace 1195 > colnet - col.depth_adj 1196 then /* if line wont fit, back */ 1197 do; /* up to last line with lead */ 1198 do ilin = ilin - 1 by -1 to 1 1199 while (loclin (ilin).ptr -> txtlin.linespace = 0); 1200 end; 1201 1202 ilin = ilin + 1; /* push the next one */ 1203 coldepth = /* final column depth */ 1204 loclin (ilin).ptr -> txtlin.depth; 1205 goto split_block; 1206 end; 1207 1208 if txtlin.blk_splt 1209 then 1210 do; 1211 if bug_sw & dt_sw 1212 then call ioa_ ("^9xlin=^dK/^d ^2-splt hdr", ilin, 1213 txtlin.info.lineno); 1214 1215 ctl_line = txtlin.ptr -> txtstr; 1216 call comp_ctls_ (text_added); 1217 if text_added 1218 then call comp_util_$replace_text (blkptr, "1"b, 1219 loclin (k).ptr, addr (ctl_line)); 1220 else txtlin.ptr -> txtstr = ""; 1221 end; 1222 1223 else 1224 do; 1225 if txtlin.keep /* is it an internal keep? */ 1226 then 1227 do; /**/ 1228 /* in case keep pushes */ 1229 tmpdepth = loclin (ilin - 1).ptr -> txtlin.depth; 1230 keeping = "1"b; /* loop control flag */ 1231 keepsz = 0; /**/ 1232 /* in case it wont fit */ 1233 line_area_ptr = loclin (ilin - 1).laptr; 1234 line_area_ndx = loclin (ilin - 1).landx; 1235 1236 do j = ilin to block.hdr.count while (keeping); 1237 txtlinptr = loclin (j).ptr; 1238 /* count keep */ 1239 if txtlin.keep | txtlin.end_keep 1240 then 1241 do; 1242 keepsz = keepsz + txtlin.linespace; 1243 1244 if bug_sw & dt_sw 1245 then call ioa_ ("^9xlin=^dK/^d d^f ld=^f" 1246 || "^[ |^]^[ *^]^[ ftn=^d/^f^;^2s^]" 1247 || " blk=^f^[/^f/^f^;^2s^]" 1248 || " col=^f^[/^f/^f^;^2s^]" 1249 || "^[ white^]^[ null^]^[ endkeep^]" 1250 || "^[ (initial keep/widow)^]", j, 1251 txtlin.info.lineno, 1252 show (txtlin.depth, 12000), 1253 show (txtlin.linespace, 12000), 1254 (txtlin.cbar.add | txtlin.cbar.mod), 1255 txtlin.cbar.del, (txtlin.ftn.ct > 0), 1256 txtlin.ftn.ct, 1257 show (txtlin.ftn.used, 12000), 1258 show (blkusd + keepsz, 12000), 1259 (blkftnct > 0), 1260 show (blkftnusd, 12000), 1261 show (blkusd + blkftnusd, 12000), 1262 show (colusd + keepsz, 12000), 1263 (colftn.ct > 0), 1264 show (colftn.usd, 12000), 1265 show (colusd + colftn.usd, 12000), 1266 txtlin.white, 1267 (txtlin.linespace = 0 1268 & txtlin.ptr -> txtstr = ""), 1269 (txtlin.end_keep), (ilin = 1)); 1270 /**/ 1271 /* set loop control flag */ 1272 if ^txtlin.end_keep 1273 then keeping = "1"b; 1274 else keeping = "0"b; 1275 end; /**/ 1276 /* change bars */ 1277 blk_mod = 1278 blk_mod | txtlin.cbar.mod | txtlin.cbar.add 1279 | txtlin.cbar.del; 1280 /* footnotes for this line */ 1281 if txtlin.ftn.ct > 0 & txtlin.ftn.used > 0 1282 & ^ftn_held 1283 then 1284 do; 1285 call take_line_notes (j); 1286 1287 if rebal_sw 1288 then goto COL_LOOP; 1289 end; 1290 end; /**/ 1291 /* if keep wont fit */ 1292 /* split at current ilin */ 1293 if colusd + colftn.usd + keepsz + ftnusd > colnet 1294 then goto wont_fit; 1295 1296 else 1297 do; /* keep going */ 1298 ilin = j; 1299 txtlinptr = loclin (ilin).ptr; 1300 1301 blkusd = blkusd + keepsz; 1302 colusd = colusd + keepsz; 1303 end; 1304 end; 1305 1306 j = ilin; /* preset table/title block index */ 1307 1308 if txtlin.title /* a ? */ 1309 then 1310 do; /* take all the parts */ 1311 do j = ilin to ilin + 2 1312 while (loclin (j).ptr -> txtlin.linespace = 0); 1313 txtlinptr = loclin (j).ptr; 1314 1315 blk_mod = 1316 blk_mod | txtlin.cbar.mod | txtlin.cbar.add 1317 | txtlin.cbar.del; 1318 1319 if bug_sw & dt_sw 1320 then call ioa_ ( 1321 "^9xlin=^dTI/^d d^f ld=^f^[ |^]^[ *^]" 1322 || 1323 "^[ ftn=^d/^f^;^2s^] blk=^f^[/^f/^f^;^2s^]" 1324 || " col=^f^[/^f/^f^;^2s^]" 1325 || " ^[ ftn=^d^;^s^]" 1326 || "^[ white^]^[ null^]", j, 1327 txtlin.info.lineno, 1328 show (txtlin.depth, 12000), 1329 show (txtlin.linespace, 12000), 1330 (txtlin.cbar.add | txtlin.cbar.mod), 1331 txtlin.cbar.del, (txtlin.ftn.ct > 0), 1332 txtlin.ftn.ct, 1333 show (txtlin.ftn.used, 12000), 1334 show (blkusd + txtlin.linespace, 12000), 1335 (blkftnct > 0), show (blkftnusd, 12000), 1336 show (blkusd + blkftnusd, 12000), 1337 show (colusd + txtlin.linespace, 12000), 1338 (colftn.ct > 0), show (colftn.usd, 12000), 1339 show (colusd + colftn.usd, 12000), 1340 txtlin.white, 1341 (txtlin.linespace = 0 1342 & txtlin.ptr -> txtstr = "")); 1343 /* take footnotes */ 1344 if txtlin.ftn.ct > 0 & txtlin.ftn.used > 0 1345 & ^ftn_held 1346 then 1347 do; 1348 call take_line_notes (j); 1349 1350 if rebal_sw 1351 then goto COL_LOOP; 1352 end; 1353 end; 1354 1355 txtlinptr = loclin (j).ptr; 1356 end; /**/ 1357 /* a table block? */ 1358 /**** else if block.hdr.tblblk 1359*/**** then 1360*/**** do; 1361*/**** do j = ilin to last_line 1362*/**** while (loclin (j).ptr -> txtlin.linespace = 0); 1363*/**** txtlinptr = loclin (j).ptr; 1364*/**** 1365*/**** if bug_sw & dt_sw 1366*/**** then call ioa_ ("^9xlin=^dTA^[K^]/^d d^f ld=^f" 1367*/**** || "^[ |^]^[ *^]^[ ftn=^d^;^s^]" 1368*/**** || " blk=^f^[/^f/^f^;^2s^]" 1369*/**** || " col=^f^[/^f/^f^;^2s^]" 1370*/**** || " ^[ ftn=^d^;^s^]" 1371*/**** || "^[ white^]^[ null^]", j, txtlin.keep, 1372*/**** txtlin.info.lineno, 1373*/**** show (txtlin.depth, 12000), 1374*/**** show (txtlin.linespace, 12000), 1375*/**** (txtlin.cbar.add | txtlin.cbar.mod), 1376*/**** txtlin.cbar.del, (txtlin.ftn.ct > 0), 1377*/**** txtlin.ftn.ct, 1378*/**** show (blkusd + txtlin.linespace, 12000), 1379*/**** (blkftnct > 0), show (blkftnusd, 12000), 1380*/**** show (blkusd + blkftnusd, 12000), 1381*/**** show (colusd + txtlin.linespace, 12000), 1382*/**** (colftn.ct > 0), show (colftn.usd, 12000), 1383*/**** show (colusd + colftn.usd, 12000), 1384*/**** txtlin.white, 1385*/**** (txtlin.linespace = 0 1386*/**** & txtlin.ptr -> txtstr = "")); 1387*/**** /* take footnotes */ 1388 /**** if txtlin.ftn.ct > 0 & txtlin.ftn.used > 0 1389*/**** & ^ftn_held 1390*/**** then 1391*/**** do; 1392*/**** call take_line_notes (j); 1393*/**** 1394*/**** if rebal_sw 1395*/**** then goto COL_LOOP; 1396*/**** end; 1397*/**** end; 1398*/**** 1399*/**** txtlinptr = loclin (j).ptr; 1400*/**** end;*/ 1401 1402 blkusd = blkusd + txtlin.linespace; 1403 colusd = colusd + txtlin.linespace; 1404 1405 if bug_sw & dt_sw 1406 then call ioa_ ("^9xlin=^d/^d d^f ld=^f" 1407 || "^[ |^]^[ *^]^[ ftn=^d^;^s^]" 1408 || " blk=^f^[/^f/^f^;^2s^]" 1409 || " col=^f^[/^f/^f^;^2s^]" 1410 || "^[ white^]^[ null^]", max (ilin, j), 1411 txtlin.info.lineno, show (txtlin.depth, 12000), 1412 show (txtlin.linespace, 12000), 1413 (txtlin.cbar.add | txtlin.cbar.mod), 1414 txtlin.cbar.del, (txtlin.ftn.ct > 0), 1415 txtlin.ftn.ct, show (blkusd, 12000), 1416 (blkftnct > 0), show (blkftnusd, 12000), 1417 show (blkusd + blkftnusd, 12000), 1418 show (colusd, 12000), (colftn.ct > 0), 1419 show (colftn.usd, 12000), 1420 show (colusd + colftn.usd, 12000), txtlin.white, 1421 (txtlin.linespace = 0 1422 & txtlin.ptr -> txtstr = "")); 1423 /* any footnotes? */ 1424 if txtlin.ftn.ct > 0 & txtlin.ftn.used > 0 & ^ftn_held 1425 then 1426 do; 1427 call take_line_notes (j); 1428 1429 if blkftnct = 0 1430 then 1431 do; 1432 coldepth = txtlin.depth; 1433 goto split_block; 1434 end; 1435 1436 if rebal_sw 1437 then goto COL_LOOP; 1438 end; 1439 1440 /* if line and footnotes wont fit */ 1441 if colusd + colftn.usd > colnet 1442 then 1443 do; /* truncate white space */ 1444 if txtlin.linespace > page.hdr.net 1445 then 1446 do; 1447 call comp_report_ (2, 0, 1448 "Embedded white space " 1449 || 1450 "exceeds max page/column space. It will be truncated.", 1451 addr (txtlin.info), ctl_line); 1452 txtlin.linespace = colnet - (colusd + colftn.usd); 1453 end; 1454 else 1455 do; 1456 coldepth = txtlin.depth; 1457 goto split_block; 1458 end; 1459 end; 1460 1461 blk_mod = 1462 blk_mod | txtlin.cbar.mod | txtlin.cbar.add 1463 | txtlin.cbar.del; 1464 ilin = max (ilin, j); 1465 end; 1466 end FREE_LINES; 1467 1468 /* down to the widow */ 1469 if icol > 0 /* multicolumn? */ 1470 /* and last block in column? */ 1471 & iblk = col.hdr.blkct 1472 then 1473 do; /* try extra space for the widow */ 1474 tmpnet = 1475 min (colnet + widow, colusd + col.depth_adj, 1476 page.hdr.net - col0.hdr.used - col0.hdr.ftn.usd); 1477 /* if we got any */ 1478 if tmpnet - colnet > 0 1479 then if tmpnet - mincolusd <= 12000 1480 | break_type > block_break 1481 then 1482 do; 1483 if bug_sw 1484 then call ioa_ ("^3x(Extending col ^d by ^f for " 1485 || "widow)", icol, 1486 show (tmpnet - colnet, 12000)); 1487 1488 colusd = col.hdr.balusd; 1489 colftn = col.hdr.balftn; 1490 rebalnet = tmpnet; 1491 rebal_sw = "1"b; 1492 goto rebal; 1493 end; 1494 /**** rebalnet = 0; /* erase so we dont screw up later */ 1495 end; /**/ 1496 /* take bottom widow & caption */ 1497 savblkusd = blkusd; /* save current data in case */ 1498 savcolusd = colusd; /* widow pushes */ 1499 savftnct = blkftnct; 1500 savftnusd = blkftnusd; 1501 savcolftn = colftn; 1502 /**** tmpdepth = coldepth; /**/ 1503 /* trim trailing WS */ 1504 do last_line = block.hdr.count to ilin by -1 1505 while (loclin (last_line).ptr -> txtlin.white 1506 & ^loclin (last_line).ptr -> txtlin.no_trim); 1507 end; /* run through remaining lines, */ 1508 tmpusd = 0; /* measuring space used */ 1509 do i = ilin to last_line; 1510 txtlinptr = loclin (i).ptr; 1511 tmpusd = tmpusd + txtlin.linespace; 1512 end; /**/ 1513 /* if even the widow wont fit */ 1514 if colusd + colftn.usd + tmpusd + col.depth_adj > colnet 1515 then 1516 do; 1517 if db_sw 1518 then call ioa_ ("^-(push widow)"); 1519 1520 goto push_widow; 1521 end; 1522 1523 blkusd = blkusd + tmpusd; /* commit the widow */ 1524 colusd = colusd + tmpusd; 1525 1526 if bug_sw & dt_sw 1527 then call ioa_ ("^2-Bottom widow committed: ^d/^f" 1528 || " blk=^f^[/^f/^f^;^2s^] col=^f^[/^f/^f^;^2s^]", 1529 last_line - ilin + 1, show (tmpusd, 12000), 1530 show (blkusd, 12000), (blkftnct > 0), 1531 show (blkftnusd, 12000), 1532 show (blkusd + blkftnusd, 12000), show (colusd, 12000), 1533 (colftn.ct > 0), show (colftn.usd, 12000), 1534 show (colusd + colftn.usd, 12000)); 1535 /* run thru again, taking the lines */ 1536 do j = ilin to last_line; 1537 txtlinptr = loclin (j).ptr; 1538 1539 if bug_sw & dt_sw 1540 then call ioa_ ("^9xlin=^d^[K^;W^]d d^f ld=^f" 1541 || "^[ |^]^[ *^]^[ ftn=^d/^f^;^2s^]" 1542 || " blk=^f^[/^f/^f^;^2s^]" 1543 || " col=^f^[/^f/^f^;^2s^]" || "^[ white^]^[ null^]", 1544 j, txtlin.keep, txtlin.info.lineno, 1545 show (txtlin.depth, 12000), 1546 show (txtlin.linespace, 12000), 1547 (txtlin.cbar.add | txtlin.cbar.mod), txtlin.cbar.del, 1548 (txtlin.ftn.ct > 0), txtlin.ftn.ct, 1549 show (txtlin.ftn.used, 12000), show (blkusd, 12000), 1550 (blkftnct > 0), show (blkftnusd, 12000), 1551 show (blkusd + blkftnusd, 12000), 1552 show (colusd, 12000), (colftn.ct > 0), 1553 show (colftn.usd, 12000), 1554 show (colusd + colftn.usd, 12000), txtlin.white, 1555 (txtlin.linespace = 0 & txtlin.ptr -> txtstr = "")); 1556 1557 blk_mod = blk_mod | /* change bars */ 1558 txtlin.cbar.mod | txtlin.cbar.add | txtlin.cbar.del; 1559 /* footnotes for this line */ 1560 if txtlin.ftn.ct > 0 & txtlin.ftn.used > 0 1561 & (^ftn_held | ctl.default) 1562 then 1563 do; 1564 call take_line_notes (j); 1565 1566 if blkftnct = 0 1567 then goto push_widow; 1568 1569 if rebal_sw 1570 then goto COL_LOOP; 1571 end; 1572 end; /**/ 1573 /* does the widow fit? */ 1574 if colusd + colftn.usd <= colnet 1575 then ilin = j; 1576 1577 else 1578 do; 1579 push_widow: 1580 blkusd = savblkusd; 1581 blkftnct = savftnct; 1582 blkftnusd = savftnusd; 1583 colusd = savcolusd; 1584 colftn = savcolftn; 1585 coldepth = loclin (ilin).ptr -> txtlin.depth; 1586 end; 1587 1588 split_block: 1589 block.line_area.cur, line_area_ptr = loclin (ilin - 1).laptr; 1590 line_area_ndx = loclin (ilin - 1).landx; 1591 1592 if ilin <= block.hdr.count 1593 then 1594 do; 1595 if loclin (line_area_ndx).ptr -> txtlin.white 1596 & ^loclin (line_area_ndx).ptr -> txtlin.no_trim 1597 & ^loclin (line_area_ndx).ptr -> txtlin.keep 1598 then block.hdr.trl_ws, coldisc (icol) = 1599 loclin (line_area_ndx).ptr -> txtlin.linespace; 1600 else block.hdr.trl_ws, coldisc (icol) = 0; 1601 1602 if bug_sw 1603 then call ioa_ ( 1604 "^- (split @ lin=^d/^d blk=^f(^f) col=^f(^f))", 1605 ilin, txtlin.info.lineno, 1606 show (blkusd - block.hdr.trl_ws, 12000), 1607 show (block.hdr.trl_ws, 12000), 1608 show (colusd - coldisc (icol), 12000), 1609 show (coldisc (icol), 12000)); 1610 /* if balancing is wanted, recompute */ 1611 /* page space used based on current */ 1612 /* break points */ 1613 if bal_sw & icol = page.hdr.col_count 1614 then 1615 do; /* accumulate total column space */ 1616 /* of columns already processed */ 1617 tmpnet = colusd + colftn.usd - coldisc (icol); 1618 mincolusd, maxcolusd = 1619 colusd + colftn.usd + col.depth_adj 1620 - coldisc (icol); 1621 1622 do j = 1 to icol - 1; 1623 locolptr = page.column_ptr (j); 1624 tmpnet = 1625 tmpnet + locol.hdr.used + locol.hdr.ftn.usd 1626 - coldisc (j); 1627 mincolusd = 1628 min (mincolusd, 1629 locol.hdr.used + locol.hdr.ftn.usd 1630 + locol.depth_adj - coldisc (j)); 1631 maxcolusd = 1632 max (maxcolusd, 1633 locol.hdr.used + locol.hdr.ftn.usd 1634 + locol.depth_adj - coldisc (j)); 1635 end; 1636 1637 pagenet = page.hdr.net - col0.hdr.used; 1638 tmpnet = 1639 min (pagenet, 1640 12000 1641 * 1642 floor ( 1643 divide (tmpnet, page.parms.cols.count * 12000, 31, 1644 10))); /**/ 1645 /* check balancing */ 1646 unbal = maxcolusd - mincolusd; 1647 1648 if unbal > 12000 & unbal ^= last_unbal 1649 then 1650 do; 1651 last_unbal = unbal; 1652 1653 if bug_sw 1654 then call ioa_ ( 1655 " (Unbalance of ^f at column ^d rebal=^f)", 1656 show (unbal, 12000), icol, 1657 show (tmpnet, 12000)); 1658 1659 rebalnet = tmpnet; 1660 rebal_sw = "1"b; 1661 goto COL_LOOP; 1662 end; 1663 1664 /**** rebalnet = 0; /* erase it */ 1665 end; /**/ 1666 /* if last column on the page */ 1667 /* be sure the flag is set */ 1668 if icol = page.parms.cols.count 1669 then pagoflo = "1"b; 1670 1671 if iblk < col.hdr.blkct | ilin <= block.hdr.count 1672 then call push_oflo; 1673 1674 page.hdr.modified = page.hdr.modified | blk_mod; 1675 /* eject if 1-up or last column */ 1676 if page.parms.cols.count <= 1 1677 | icol = page.parms.cols.count | icol = 0 1678 then 1679 do; /* erase ftn header space */ 1680 if icol = 0 & colftn.ct = 0 1681 then col.hdr.ftn.usd = 0; 1682 1683 call flush_page; 1684 if shared.end_output 1685 then goto return_; 1686 1687 if icol = 0 1688 then call pull_oflo (0, 0); 1689 1690 else 1691 do; 1692 call pull_oflo (icol, 1); 1693 icol, page.hdr.col_index = 1; 1694 shared.colptr = page.column_ptr (icol); 1695 end; /**/ 1696 /* extra space for footnote header */ 1697 if ^ftn_held & col.hdr.ftn.usd > 0 1698 then col.hdr.ftn.usd = 1699 col.hdr.ftn.usd + ftnhdr.hdr.used + 12000; 1700 /* if page still overflows */ 1701 if (page.hdr.used > page.hdr.net 1702 & icol = page.parms.cols.count) 1703 | break_type = page_break 1704 then 1705 do; 1706 if bug_sw 1707 then call ioa_ ("^5x(continued page overflow)"); 1708 force_bal = "1"b; 1709 goto COL_LOOP; 1710 end; 1711 else pagoflo = "0"b; 1712 1713 shared.colptr = page.column_ptr (icol); 1714 page.hdr.depth = col.hdr.depth; 1715 /* if an explicit balance break */ 1716 if (break_type = column_break & bal_sw 1717 /* or a page break */ 1718 | break_type = page_break 1719 /* /* or a need break */ 1720 /* | break_type = need_break*/ 1721 /* or a 1-up page still overflows */ 1722 | page.parms.cols.count < 2 & pagusd > page.hdr.net) 1723 & page.hdr.used > 0 1724 /* and theres something there */ 1725 then 1726 do; 1727 /**** rebalnet = 0;*/ 1728 goto COL_LOOP; 1729 end; 1730 else goto page_exit; 1731 end; 1732 1733 else if icol > 0 1734 then 1735 do; /* move overflow to next column */ 1736 call pull_oflo (icol, 1737 mod (icol, page.parms.cols.count) + 1); 1738 /* in case of footnotes */ 1739 colusd = col.hdr.used; 1740 goto column_exit; /* go do it */ 1741 end; 1742 1743 else goto column_exit; 1744 end; 1745 1746 push_oflo: 1747 proc (); 1748 1749 dcl (ii, jj) fixed bin; /* working index */ 1750 dcl oblkct fixed bin; /* overflow block count */ 1751 dcl olinptr ptr; /* overflow line */ 1752 dcl 1 olin aligned like text_entry based (olinptr); 1753 1754 dcl max builtin; 1755 1756 oblkct = col.hdr.blkct - iblk + 1; /* block count for this overflow */ 1757 /* check overflow block limit */ 1758 if oflo.ct + oblkct > hbound (oflo.blkptr, 1) 1759 then 1760 do; 1761 call comp_report_$ctlstr (4, 0, addr (txtlin.info), ctl_line, 1762 "Program limitation. More than ^d overflow blocks.", 1763 hbound (oflo.blkptr, 1)); 1764 signal comp_abort; 1765 return; 1766 end; 1767 1768 if bug_sw 1769 then call ioa_ ("^5xpush_oflo: (col=^d b^d d^f u^f(^f)" 1770 || "^[ ftn=^d/^f^;^2s^] blks=^d^[ lins^d/^d^]" 1771 || "^[ dfrftn=^d/^f)^])", icol, iblk, show (coldepth, 12000), 1772 show (colusd, 12000), show (coldisc (icol), 12000), 1773 (colftn.ct > 0), colftn.ct, show (colftn.usd, 12000), oblkct, 1774 (ilin > 1), ilin - 1, block.hdr.count - ilin + 1, dfrftn.ct > 0, 1775 dfrftn.ct, show (dfrftn.usd, 12000)); 1776 1777 oflo.ct = oflo.ct + oblkct; /* overflow block grand total */ 1778 if oflo.ct > 0 /* push down any previous overflow */ 1779 then 1780 do; 1781 do ii = oflo.ct to 1 by -1; 1782 oflo.blkptr (ii + oblkct + bin (ilin > 1)) = oflo.blkptr (ii); 1783 oflo.blkptr (ii) = null; 1784 /**** PUSH NOTES TOO */ 1785 end; 1786 end; 1787 1788 if ilin > 1 /* if the overflow block splits */ 1789 then 1790 do; /* get a block */ 1791 call comp_util_$getblk (-1, oflo.blkptr (1), "ot", addr (block.parms), 1792 "0"b); 1793 ofloblkptr = oflo.blkptr (1); 1794 1795 blk_split (icol) = "1"b; /* set block split flag */ 1796 /* reset table depths */ 1797 if block.hdr.tblblk & shared.table_mode 1798 then 1799 do; 1800 tblfmtptr = tbldata.fmt (tbldata.ndx).ptr; 1801 do i = 0 to tblfmt.ncols; 1802 tblfmt.colptr (i) -> tblcol.depth = 0; 1803 end; 1804 tblfmt.maxdepth = 0; 1805 end; /**/ 1806 /* move the overflow lines */ 1807 do ii = ilin to block.hdr.count; 1808 olinptr = loclin (ii).ptr; 1809 1810 call comp_util_$add_text (ofloblkptr, "0"b, "0"b, "0"b, "0"b, 1811 olinptr); 1812 1813 do jj = 1 to olin.ftn.ct; /* move any footnotes */ 1814 ofloblk.hdr.ftn.ct = ofloblk.hdr.ftn.ct + 1; 1815 oflo.ftn.ct = oflo.ftn.ct + 1; 1816 1817 if olin.ftn.blkndx (jj) > 0 /* is it a real note? */ 1818 then 1819 do; 1820 ftnblkptr = ftnblk_data.blkptr (olin.ftn.blkndx (jj)); 1821 /* does it belong to this col? */ 1822 if icol = ftnblk.hdr.refer 1823 then 1824 do; 1825 ofloblk.hdr.ftn.blkndx (ofloblk.hdr.ftn.ct), 1826 oflo.ftn.blkndx (oflo.ftn.ct) = olin.ftn.blkndx (jj); 1827 ofloblk.hdr.ftn.usd = 1828 ofloblk.hdr.ftn.usd + 12000 + ftnblk.hdr.used; 1829 oflo.ftn.usd = oflo.ftn.usd + 12000 + ftnblk.hdr.used; 1830 end; 1831 end; 1832 end; 1833 end; /**/ 1834 /* accumuluate overflow space */ 1835 oflo.used = oflo.used + ofloblk.hdr.used; 1836 1837 block.hdr.count = ilin - 1; /* adjust the block just split */ 1838 block.hdr.used = blkusd; 1839 block.hdr.ftn.ct = blkftnct; 1840 block.hdr.ftn.usd = blkftnusd; 1841 block.line_area.cur = line_area_ptr; 1842 line_area.ndx = line_area_ndx; 1843 end; /**/ 1844 /* remove complete overflow blocks */ 1845 do ii = 1 + bin (ilin > 1, 1) to oblkct; 1846 ofloblkptr, oflo.blkptr (ii) = col.blkptr (iblk + ii - 1); 1847 col.blkptr (iblk + ii - 1) = null (); 1848 oflo.used = oflo.used + ofloblk.hdr.used; 1849 1850 if ofloblk.hdr.ftn.ct > 0 1851 then 1852 do; 1853 oflo.ftn.usd = oflo.ftn.usd + ofloblk.hdr.ftn.usd; 1854 do jj = 1 to ofloblk.hdr.ftn.ct; 1855 oflo.ftn.ct = oflo.ftn.ct + 1; 1856 oflo.ftn.blkndx (oflo.ftn.ct) = ofloblk.hdr.ftn.blkndx (jj); 1857 end; 1858 end; 1859 end; /**/ 1860 /* adjust rest of column data */ 1861 col.hdr.blkct = col.hdr.blkct - oblkct + bin (ilin > 1, 1); 1862 col.hdr.used = colusd; 1863 col.hdr.depth = coldepth; 1864 maxcoldepth = max (maxcoldepth, col.hdr.depth); 1865 pagusd = max (pagusd, col.hdr.used); 1866 col.hdr.ftn = colftn; 1867 pgc_select = page.hdr.pgc_select; /* save for next page */ 1868 1869 if bug_sw 1870 then call ioa_ ("^-(push_oflo: col=^d b^d d^f u^f(^f)^[ ftn=^d ^f^;^2s^]" 1871 || " push=b^d u^f^[ ftn=^d ^f^;^2s^]^[ dfr=^d ^f^])", icol, 1872 col.hdr.blkct, show (col.hdr.depth, 12000), 1873 show (col.hdr.used, 12000), show (coldisc (icol), 12000), 1874 (col.hdr.ftn.ct > 0), col.hdr.ftn.ct, 1875 show (col.hdr.ftn.usd, 12000), oflo.ct, show (oflo.used, 12000), 1876 (oflo.ftn.ct > 0), oflo.ftn.ct, show (oflo.ftn.usd, 12000), 1877 dfrftn.ct > 0, dfrftn.ct, show (dfrftn.usd, 12000)); 1878 1879 end push_oflo; 1880 1881 end_block: 1882 end block_begin; 1883 end BLKLOOP; 1884 1885 column_exit: /* hang orphan notes on page header */ 1886 if icol = 0 & shared.ftnblk_data_ptr ^= null & orph_ftn 1887 then 1888 do; 1889 line_area_ptr = col0.blkptr (1) -> block.line_area.cur; 1890 txtlinptr = line_area.linptr (line_area.ndx); 1891 1892 do i = 1 to ftnblk_data.highndx; 1893 if ftnblk_data.blkptr (i) ^= null 1894 then if ftnblk_data.blkptr (i) -> text.hdr.orphan 1895 then 1896 do; 1897 orphftnct = orphftnct + 1; 1898 if orphftnusd = 0 1899 then orphftnusd = ftnhdr.hdr.used + 12000; 1900 orphftnusd = 1901 orphftnusd + 12000 1902 + ftnblk_data.blkptr (i) -> text.hdr.used; 1903 /* change them to unreffed */ 1904 ftnblk_data.blkptr (i) -> text.hdr.unref = "1"b; 1905 ftnblk_data.blkptr (i) -> text.hdr.orphan = "0"b; 1906 ftnblk_data.blkptr (i) -> text.hdr.colno = -1; 1907 orph_ftn = "1"b; 1908 txtlin.ftn.ct = txtlin.ftn.ct + 1; 1909 txtlin.ftn.blkndx (txtlin.ftn.ct) = 1; 1910 end; 1911 end; 1912 end; 1913 1914 if break_type <= page_break /* if a text area break */ 1915 then 1916 do; 1917 col.hdr.used = colusd; /* record interesting stuff */ 1918 col.hdr.depth = coldepth; 1919 col.hdr.ftn = colftn; 1920 /**** col.hdr.balblk = iblk + 1;*/ 1921 end; 1922 1923 if icol = 1 1924 then mincolusd = colusd; 1925 else if icol > 1 1926 then mincolusd = min (mincolusd, colusd); 1927 1928 if icol = 0 1929 then pagusd = max (pagusd, col.hdr.used); 1930 else pagusd = max (pagusd, col.hdr.used + col0.hdr.used); 1931 1932 if bug_sw 1933 then call ioa_ ("^7x(col=^d b^d d^f u^f(^f)/^f(^f)^[ ftn=^d/^f^;^2s^]" 1934 || " h^f)", icol, col.hdr.blkct, show (coldepth, 12000), 1935 show (colusd, 12000), show (coldisc (icol), 12000), 1936 show (colnet, 12000), show (col.depth_adj, 12000), 1937 (colftn.ct > 0), colftn.ct, show (colftn.usd, 12000), 1938 show (col.hdr.pspc, 12000)); 1939 /* if balancing is wanted, recompute */ 1940 /* page space used based on current */ 1941 /* break points */ 1942 if bal_sw & force_bal & page.parms.cols.count > 1 1943 & icol = page.parms.cols.count 1944 then 1945 do; /* accumulate total column space */ 1946 locolptr = page.column_ptr (1); 1947 tmpnet = locol.hdr.used + locol.hdr.ftn.usd; 1948 mincolusd, maxcolusd = 1949 locol.hdr.used + locol.hdr.ftn.usd + locol.depth_adj 1950 - coldisc (1); 1951 1952 do j = 2 to icol; 1953 locolptr = page.column_ptr (j); 1954 tmpnet = tmpnet + locol.hdr.used + locol.hdr.ftn.usd; 1955 mincolusd = 1956 min (mincolusd, 1957 locol.hdr.used + locol.hdr.ftn.usd + locol.depth_adj 1958 - coldisc (j)); 1959 maxcolusd = 1960 max (maxcolusd, 1961 locol.hdr.used + locol.hdr.ftn.usd + locol.depth_adj 1962 - coldisc (j)); 1963 end; 1964 1965 pagenet = page.hdr.net - col0.hdr.used; 1966 tmpnet = 1967 min (pagenet, 1968 12000 1969 * 1970 floor (divide (tmpnet, page.parms.cols.count * 12000, 31, 10))); 1971 /* check balancing */ 1972 unbal = maxcolusd - mincolusd; 1973 1974 if unbal > 12000 & unbal ^= last_unbal & tmpnet > widow 1975 then 1976 do; 1977 last_unbal = unbal; 1978 1979 if bug_sw 1980 then call ioa_ (" (Unbalance of ^f at column ^d rebal=^f)", 1981 show (unbal, 12000), icol, show (tmpnet, 12000)); 1982 1983 rebalnet = tmpnet; 1984 rebal_sw = "1"b; 1985 goto COL_LOOP; 1986 end; 1987 end; /**/ 1988 end coloop; 1989 1990 page_exit: 1991 if break_type = page_break /* for a page break */ 1992 | pagoflo /* or page still overflows */ 1993 | force_this_page /* or page is to be forced */ 1994 /* or we still need a page */ 1995 | (break_type = need_break & need_page) 1996 then 1997 do; /* flush any leftovers */ 1998 if pagusd + col0.hdr.ftn.usd > 0 1999 then call flush_page; 2000 if shared.end_output 2001 then goto return_; /**/ 2002 /* reset flags */ 2003 force_this_page, pagoflo, need_page = "0"b; 2004 2005 if oflo.ct > 0 | dfrftn.ct > 0 /* any remaining overflow? */ 2006 then 2007 do; 2008 if page.parms.cols.count = 0 2009 then call pull_oflo (0, 0); 2010 else call pull_oflo ((page.parms.cols.count), 1); 2011 2012 if (bal_sw | page.hdr.used > 0 | shared.purge_ftns) 2013 & break_type ^= need_break 2014 then goto COL_LOOP; 2015 end; 2016 2017 else 2018 do; 2019 if page.parms.cols.count = 0 2020 then page.hdr.col_index, page.hdr.col_count = 0; 2021 else page.col_index, page.hdr.col_count = 1; 2022 shared.colptr = page.column_ptr (page.hdr.col_index); 2023 end; 2024 2025 if page.hdr.used > page.hdr.net 2026 then 2027 do; 2028 pagoflo = "1"b; 2029 goto COL_LOOP; 2030 end; 2031 end; 2032 2033 maxcoldepth, maxcolusd = 0; 2034 do i = 1 to page.parms.cols.count; 2035 maxcoldepth = max (maxcoldepth, page.column_ptr (i) -> col.hdr.depth); 2036 maxcolusd = max (maxcolusd, page.column_ptr (i) -> col.hdr.used); 2037 end; 2038 2039 page.hdr.depth = max (maxcoldepth, col0.hdr.depth); 2040 page.hdr.used, pagusd = col0.hdr.used + maxcolusd; 2041 2042 /* set new balance data */ 2043 if break_type = column_break & (force_bal | bal_sw) 2044 | break_type = page_break 2045 then 2046 do; 2047 col0.hdr.balftn = col0.hdr.ftn; 2048 page.hdr.baldepth = page.hdr.depth; 2049 page.hdr.balusd = page.hdr.used; 2050 2051 do page.hdr.col_index = 0 to page.parms.cols.count; 2052 shared.colptr = page.column_ptr (page.hdr.col_index); 2053 col.hdr.depth = page.hdr.depth; 2054 2055 if page.hdr.col_index = 0 /* for column 0 */ 2056 then 2057 do; 2058 col.hdr.net = page.hdr.net - maxcolusd - col.ftrusd; 2059 col.hdr.balusd = col.hdr.used; 2060 end; 2061 2062 else 2063 do; /* for column > 0 */ 2064 col.hdr.net = 2065 page.hdr.net - col0.hdr.used - col0.hdr.ftn.usd 2066 - col.ftrusd; 2067 col.hdr.used, col.hdr.balusd = maxcolusd; 2068 end; /**/ 2069 /* next balance point */ 2070 col.hdr.balftn = col.hdr.ftn; 2071 col.hdr.balblk = col.hdr.blkct + 1; 2072 col.hdr.baldepth = page.hdr.baldepth; 2073 2074 if bug_sw 2075 then call ioa_ ("^-(col=^d b^d u^f/^f(^f) h^f" 2076 || "^[ ftn=^d ^f^;^2s^] bal=^d d=^f)", page.hdr.col_index, 2077 col.hdr.blkct, show (col.hdr.used, 12000), 2078 show (col.hdr.net, 12000), show (col.depth_adj, 12000), 2079 show (col.hdr.pspc, 12000), (col.hdr.ftn.ct > 0), 2080 col.hdr.ftn.ct, show (col.hdr.ftn.usd, 12000), 2081 col.hdr.balblk, show (col.hdr.baldepth, 12000)); 2082 end; 2083 2084 if page.parms.cols.count > 0 & ^force_bal 2085 then page.hdr.col_index = 1; 2086 else page.hdr.col_index = 0; 2087 shared.colptr = page.column_ptr (page.hdr.col_index); 2088 2089 if bug_sw 2090 then call ioa_ ("^-(pag=^8ad^f u^f/^f h^f^[ OFLO^])", page.hdr.pageno, 2091 show (page.hdr.depth, 12000), show (pagusd, 12000), 2092 show (page.hdr.net, 12000), show (page.hdr.hdspc, 12000), 2093 pagoflo); 2094 end; 2095 2096 if pagusd > page.hdr.net /* does it still overflow? */ 2097 & icol = page.parms.cols.count 2098 then 2099 do; /* reset for balancing */ 2100 do i = 0 to page.hdr.col_count; 2101 locolptr = page.column_ptr (i); 2102 locol.hdr.balblk = 1; 2103 locol.hdr.balusd, locol.hdr.balftn.usd, locol.hdr.balftn.ct = 0; 2104 locol.hdr.depth = head_used + locol.depth_adj; 2105 end; 2106 2107 page.hdr.balusd = 0; 2108 page.hdr.depth = head_used; 2109 col0.hdr.balblk = 1; 2110 pagoflo = "1"b; /* set overflow flag */ 2111 goto COL_LOOP; 2112 end; 2113 2114 /* if shared.table_mode /* reset table depths */ 2115 /* then 2116*/* do; 2117*/* tblfmtptr = tbldata.fmt (tbldata.ndx).ptr; 2118*/* tblfmt.maxdepth = 0; 2119*/* 2120*/* do i = 0 to tblfmt.ncols; 2121*/* tblfmt.colptr (i) -> tblcol.depth = 0; 2122*/* end; 2123*/* end;*/ 2124 2125 return_: 2126 shared.colptr = page.column_ptr (page.hdr.col_index); 2127 /**** if break_type = need_break 2128*/**** then 2129*/**** do; 2130*/**** col.hdr.used = 0; 2131*/**** do i = 1 + bin (icol = 0) to col.hdr.blkct - 1; 2132*/**** col.hdr.used = col.hdr.used + col.blkptr (i) -> block.hdr.used; 2133*/**** end; 2134*/**** end;*/ 2135 2136 if bug_sw 2137 then 2138 do; 2139 call ioa_$nnl ( 2140 "^5x(make_page: ^[END)^;^a ^[front^;back^]^[ MOD ^a^;^s^]" 2141 || " bal=d^f u^f)^]", shared.end_output, page.hdr.pageno, 2142 page.hdr.frontpage, page.hdr.modified, page.hdr.pgc_select, 2143 show (page.hdr.baldepth, 12000), show (page.hdr.balusd, 12000)); 2144 2145 call ioa_ ("^/^-(col=^d b^d bal=^d u^f/^f(^f)" 2146 || "^[ ftn=^d ^f^;^2s^] h^f pag=^a c^d u^f/^f h^f^[ OFLO^])", 2147 page.hdr.col_index, col.hdr.blkct, col.hdr.balblk, 2148 show (col.hdr.used, 12000), show (col.hdr.net, 12000), 2149 show (col.depth_adj, 12000), (col.hdr.ftn.ct > 0), col.hdr.ftn.ct, 2150 show (col.hdr.ftn.usd, 12000), show (col.hdr.pspc, 12000), 2151 page.hdr.pageno, page.parms.cols.count, 2152 show (page.hdr.used, 12000), show (page.hdr.net, 12000), 2153 show (page.hdr.hdspc, 12000), pagoflo); 2154 end; 2155 2156 return; 2157 2158 cleanup: 2159 entry; 2160 2161 call clean_oflo; 2162 return; 2163 2164 clean_oflo: 2165 proc; 2166 2167 do j = 1 to oflo.ct; 2168 k = oflo.ftn.blkndx (j); 2169 if k ^= 0 2170 then if ftnblk_data.blkptr (k) ^= null 2171 then call comp_util_$relblk (-1, ftnblk_data.blkptr (k)); 2172 end; 2173 2174 if shared.ftnblk_data_ptr ^= null 2175 then 2176 do i = ftnblk_data.highndx to 1 by -1 2177 while (ftnblk_data.blkptr (i) = null); 2178 2179 2180 2181 end; 2182 2183 unspec (oflo) = "0"b; 2184 oflo.blkptr = null; 2185 2186 end clean_oflo; 2187 2188 flush_page: 2189 proc; 2190 2191 dcl (ii, jj) fixed bin; /* working index */ 2192 dcl locblkptr ptr; 2193 dcl save_tmode bit (1); /* to save table mode */ 2194 2195 if page.hdr.col_count > 0 2196 then page.hdr.depth = max (maxcoldepth, col0.hdr.depth); 2197 else page.hdr.depth, col0.hdr.depth = coldepth; 2198 page.hdr.used = pagusd; 2199 2200 if bug_sw 2201 then call ioa_ ("^5xflush_page: (pag=^a d^f u^f/^f^[ M^])", 2202 page.hdr.pageno, show (page.hdr.depth, 12000), 2203 show (page.hdr.used, 12000), show (page.hdr.net, 12000), 2204 page.hdr.modified); 2205 2206 do ii = 0 to page.hdr.col_count; 2207 page.hdr.col_index = ii; 2208 locolptr, shared.colptr = page.column_ptr (ii); 2209 2210 if ii = 0 /* trim leading WS */ 2211 then blkno = 2; 2212 else blkno = locol.hdr.balblk; 2213 locblkptr = locol.blkptr (blkno); 2214 2215 if locblkptr ^= null () 2216 then if locblkptr -> block.hdr.white & ^locblkptr -> block.hdr.no_trim 2217 & blkno = locol.hdr.balblk & locol.hdr.used = 0 2218 then 2219 do; 2220 if bug_sw 2221 then 2222 do; 2223 call ioa_ (" (Discarding ^f leading WS in col ^d)", 2224 show (locblkptr -> block.hdr.used, 12000), ii); 2225 end; 2226 2227 locol.hdr.depth = locol.hdr.depth - locblkptr -> block.hdr.used; 2228 locol.hdr.used = locol.hdr.used - locblkptr -> block.hdr.used; 2229 /**** locol.hdr.pspc = locol.hdr.pspc - locblkptr -> block.hdr.used;*/ 2230 2231 call comp_util_$relblk (ii, locol.blkptr (blkno)); 2232 do jj = blkno + 1 to locol.hdr.blkct + 1; 2233 locol.blkptr (jj - 1) = locol.blkptr (jj); 2234 end; 2235 end; 2236 2237 if coldisc (ii) > 0 /* trim trailing WS */ 2238 & ii + locol.hdr.blkct > 1 /* but avoid page header */ 2239 then 2240 do; 2241 locblkptr = locol.blkptr (locol.hdr.blkct); 2242 done = "0"b; 2243 2244 do line_area_ptr = locblkptr -> block.line_area.cur 2245 repeat (line_area.prev) while (line_area_ptr ^= null & ^done); 2246 do jj = line_area.ndx to 1 by -1 while (^done); 2247 2248 if line_area.linptr (jj) -> txtlin.white 2249 & ^line_area.linptr (jj) -> txtlin.no_trim 2250 then locblkptr -> block.hdr.count = 2251 locblkptr -> block.hdr.count - 1; 2252 else 2253 do; 2254 done = "1"b; 2255 line_area.ndx = jj; 2256 end; 2257 end; 2258 locblkptr -> block.line_area.cur = line_area_ptr; 2259 end; 2260 2261 if bug_sw 2262 then call ioa_ ("^8x(Trimming ^f trailing WS in col ^d)", 2263 show (coldisc (ii), 12000), ii); 2264 2265 locblkptr -> block.hdr.used = 2266 locblkptr -> block.hdr.used - coldisc (ii); 2267 if locol.hdr.used > locol.hdr.balusd 2268 then locol.hdr.used = locol.hdr.used - coldisc (ii); 2269 if ii = 0 2270 then 2271 do; 2272 page.hdr.used = page.hdr.used - coldisc (0); 2273 page.hdr.depth = page.hdr.depth - coldisc (0); 2274 end; 2275 end; /**/ 2276 /* insert footnotes */ 2277 if (locol.hdr.ftn.ct > 0 | (ii = 0 & orph_ftn)) 2278 & (^ftn_held 2279 | ftn_held & (ctl.default | col0.blkptr (1) -> text.hdr.ftn.ct > 0)) 2280 then 2281 do; 2282 save_tmode = shared.table_mode; 2283 shared.table_mode = "0"b; 2284 col.hdr.depth = coldepth; 2285 call comp_insert_ctls_ (ift_ctl_index); 2286 shared.table_mode = save_tmode; 2287 end; 2288 2289 if locol.ftrptr ^= null () /* is there a column footer? */ 2290 then if locol.ftrusd ^= 0 2291 then 2292 do; 2293 if locol.used 2294 < locol.hdr.net - locol.depth_adj 2295 - locol.ftrptr -> hfcblk.hdr.used 2296 then locol.hdr.depth = 2297 locol.hdr.depth + locol.hdr.net - locol.used 2298 - locol.ftrptr -> hfcblk.hdr.used; 2299 2300 call comp_util_$getblk (ii, shared.blkptr, "cf", 2301 addr (locol.ftrptr -> hfcblk.parms), "0"b); 2302 call comp_title_block_ (locol.ftrptr); 2303 /**** call comp_break_ (footer_break, 0);*/ 2304 2305 do line_area_ptr = text.line_area.first 2306 repeat (line_area.next) while (line_area_ptr ^= null); 2307 do ilin = 1 to line_area.ndx; 2308 txtlinptr = line_area.linptr (ilin); 2309 txtlin.depth = locol.hdr.depth; 2310 locol.hdr.depth = locol.hdr.depth + txtlin.linespace; 2311 end; 2312 end; 2313 end; 2314 end; 2315 2316 maxcolusd = 0; 2317 do ii = 1 to page.hdr.col_count; 2318 locolptr = page.column_ptr (ii); 2319 maxcolusd = max (maxcolusd, locol.hdr.used); 2320 end; 2321 2322 page.hdr.used = col0.hdr.used + maxcolusd; 2323 2324 if bug_sw 2325 then call ioa_ ("^-(pag=^a d^f u^f/^f^[ M^])", page.hdr.pageno, 2326 show (page.hdr.depth, 12000), show (page.hdr.used, 12000), 2327 show (page.hdr.net, 12000), page.hdr.modified); 2328 2329 save_tmode = shared.table_mode; /* suspend table mode */ 2330 shared.table_mode = "0"b; 2331 call comp_eject_page_; /* eject without the overflow */ 2332 shared.table_mode = save_tmode; /* restore */ 2333 2334 if shared.end_output 2335 then 2336 do; /**/ 2337 /* any overflow, pictures, */ 2338 /* or deferred footnotes? */ 2339 if oflo.ct > 0 | shared.picture.count > 0 | dfrftn.ct > 0 2340 then 2341 do; 2342 do shared.picture.count = shared.picture.count to 1 by -1; 2343 call comp_util_$relblk (-1, 2344 shared.picture.blk (shared.picture.count).ptr); 2345 end; /**/ 2346 /* now, overflow blocks */ 2347 do oflo.ct = oflo.ct to 1 by -1; 2348 call comp_util_$relblk (-1, oflo.blkptr (oflo.ct)); 2349 end; /**/ 2350 /* finally, deferred footnotes */ 2351 if shared.ftnblk_data_ptr ^= null 2352 then 2353 do ftnblk_data.highndx = ftnblk_data.highndx to 1 by -1 2354 while (ftnblk_data.blkptr (ftnblk_data.highndx) = null); 2355 2356 end; 2357 end; 2358 goto flush_return; 2359 end; 2360 2361 revert cleanup, comp_abort; 2362 need_page = "0"b; /* reset local need flag */ 2363 blk_split (*) = "0"b; /* and the split flags */ 2364 pagusd = 0; 2365 page.hdr.col_count = 0; /**/ 2366 /* any overflow, pictures, */ 2367 /* or deferred footnotes? */ 2368 if oflo.ct > 0 | shared.picture.count > 0 2369 | dfrftn.ct > 0 & ^shared.end_output 2370 then 2371 do; /* head the new page */ 2372 call comp_head_page_ (head_used); 2373 2374 if page.parms.cols.count > 0 /* set balance depth */ 2375 then 2376 do i = 1 to page.parms.cols.count; 2377 page.column_ptr (i) -> col.hdr.baldepth = head_used; 2378 end; 2379 2380 if shared.picture.count > 0 /* do pictures first */ 2381 then call comp_util_$pictures (null); 2382 2383 page.hdr.used = col.hdr.used; 2384 page.hdr.depth = col.hdr.depth; 2385 2386 if shared.ftn_reset = "paged" /* if paged footnotes */ 2387 then shared.ftnrefct = 1; /* reset the counter */ 2388 end; 2389 2390 flush_return: 2391 if bug_sw 2392 then call ioa_ ("^-(flush_page^[ END^])", shared.end_output); 2393 return; 2394 2395 end flush_page; 2396 2397 /* take all footnotes in the block */ 2398 take_block_notes: 2399 proc; 2400 2401 /* LOCAL STORAGE */ 2402 2403 dcl jj fixed bin; /* working index */ 2404 2405 if bug_sw 2406 then call ioa_ ("^-^xtake_block_notes: (blk=^d/^f/^f col=^d/^f/^f)", 2407 blkftnct, show (blkftnusd, 12000), 2408 show (blkusd + blkftnusd, 12000), colftn.ct, 2409 show (colftn.usd, 12000), show (colusd + colftn.usd, 12000)); 2410 2411 note_oflo = "0"b; /* clear loop control */ 2412 2413 if ^ftn_held /* note are not being held */ 2414 | ftn_held & /* or inserting held notes */ 2415 (ctl.default | shared.purge_ftns) 2416 then 2417 do jj = 1 to block.hdr.ftn.ct while (^note_oflo); 2418 ftndx = block.hdr.ftn.blkndx (jj); 2419 2420 if ftndx > 0 2421 then 2422 do; 2423 ftnblkptr = ftnblk_data.blkptr (ftndx); 2424 2425 if ftnblkptr ^= null 2426 then call take_a_note; 2427 end; 2428 end; 2429 2430 if jj < block.hdr.ftn.ct 2431 then 2432 do jj = jj to block.hdr.ftn.ct; 2433 dfrftn.ct = dfrftn.ct + 1; 2434 dfrftn.blkndx (dfrftn.ct) = block.hdr.ftn.blkndx (jj); 2435 ftnblkptr = ftnblk_data.blkptr (block.hdr.ftn.blkndx (jj)); 2436 dfrftn.usd = dfrftn.usd + ftnblk.hdr.used + 12000; 2437 end; 2438 2439 if bug_sw 2440 then call ioa_ ("^-^x(take_block_notes: blk=^d/^f/^f " 2441 || "col=^d/^f/^f^[ dfr=^d ^f^])", blkftnct, 2442 show (blkftnusd, 12000), show (blkusd + blkftnusd, 12000), 2443 colftn.ct, show (colftn.usd, 12000), 2444 show (colusd + colftn.usd, 12000), (dfrftn.ct > 0), dfrftn.ct, 2445 show (dfrftn.usd, 12000)); 2446 2447 end take_block_notes; 2448 2449 /* take all footnotes from line that fit */ 2450 take_line_notes: 2451 proc (jlin); 2452 2453 /* PARAMETERS */ 2454 2455 dcl jlin fixed bin; /* (IN) line index */ 2456 2457 linftnct, ftndx = 0; 2458 note_oflo = "0"b; 2459 2460 if bug_sw 2461 then call ioa_ ("^- take_line_notes: (blk=^d/^f/^f col=^d/^f/^f)", 2462 blkftnct, show (blkftnusd, 12000), 2463 show (blkusd + blkftnusd, 12000), colftn.ct, 2464 show (colftn.usd, 12000), show (colusd + colftn.usd, 12000)); 2465 /* take all notes referenced in */ 2466 /* this line that fit on the page */ 2467 do linftnct = 1 to txtlin.ftn.ct while (^note_oflo); 2468 if ftn_held & ctl.default /* held notes */ 2469 then 2470 do; 2471 ftndx = ftndx + 1; 2472 ftnblkptr = ftnblk_data.blkptr (ftndx); 2473 if ftnblkptr ^= null 2474 then call take_a_note; 2475 if note_oflo 2476 then goto line_note_oflo; 2477 end; /**/ 2478 /* real notes */ 2479 else if txtlin.ftn.blkndx (linftnct) > 0 2480 then 2481 do; 2482 ftndx = txtlin.ftn.blkndx (linftnct); 2483 ftnblkptr = ftnblk_data.blkptr (ftndx); 2484 call take_a_note; 2485 if note_oflo 2486 then goto line_note_oflo; 2487 end; 2488 2489 else blkftnct = blkftnct + 1; /* not real, .frf ref */ 2490 end; 2491 goto line_note_return; 2492 2493 line_note_oflo: 2494 if linftnct = 1 /* does 1st one overflow? */ 2495 then return; /**/ 2496 /* move rest to the deferred list */ 2497 if linftnct < txtlin.ftn.ct 2498 then 2499 do k = linftnct to txtlin.ftn.ct; 2500 ftnblkptr = ftnblk_data.blkptr (txtlin.ftn.blkndx (k)); 2501 ftnblk.hdr.unref = "1"b; /* mark the note */ 2502 /* record the reference */ 2503 dfrftn.usd = dfrftn.usd + ftnblk.hdr.used + 12000; 2504 dfrftn.ct = dfrftn.ct + 1; 2505 dfrftn.blkndx (dfrftn.ct) = txtlin.ftn.blkndx (k); 2506 end; 2507 2508 txtlin.ftn.ct = linftnct - 1; /* correct line ftn count */ 2509 2510 line_note_return: 2511 if bug_sw 2512 then call ioa_ ("^- (take_line_notes: blk=^d/^f/^f " 2513 || "col=^d/^f/^f^[ dfr=^d ^f^])", blkftnct, 2514 show (blkftnusd, 12000), show (blkusd + blkftnusd, 12000), 2515 colftn.ct, show (colftn.usd, 12000), 2516 show (colusd + colftn.usd, 12000), (dfrftn.ct > 0), dfrftn.ct, 2517 show (dfrftn.usd, 12000)); 2518 2519 /**** rebalnet = col.hdr.net - rebalnet; 2520*/**** if rebalnet >= colnet 2521*/**** then rebal_sw = "1"b;*/ 2522 2523 end take_line_notes; 2524 2525 take_a_note: 2526 proc; 2527 2528 /* LOCAL STORAGE */ 2529 2530 dcl jj fixed bin; 2531 dcl flin fixed bin; /* footnote line index */ 2532 dcl flin_moved fixed bin; 2533 dcl flin_oflo fixed bin; 2534 dcl flin_start fixed bin; 2535 dcl flin_top fixed bin; 2536 dcl ftnlinptr ptr; /* a ftn line */ 2537 dcl 1 ftnlin aligned like text_entry based (ftnlinptr); 2538 dcl ftnwidow fixed bin (31); /* footnote widow space */ 2539 dcl line_area_move ptr; 2540 dcl line_area_start 2541 ptr; 2542 dcl locolusd fixed bin (31); 2543 dcl newftnptr ptr; /* split ftn pointer */ 2544 dcl widftnusd fixed bin (31); /* size of deferred widow notes */ 2545 2546 dcl (max, min) builtin; /**/ 2547 /* widow size for this note */ 2548 ftnwidow = shared.widow_foot * ftnblk.parms.linespace; 2549 locolusd = 2550 bin (block.blktype ^= "ph") 2551 * max (colusd, bin (block.hdr.used > widow) * widow); 2552 2553 if bug_sw & dt_sw 2554 then call ioa_$nnl ("^-^3xftn=^d(^d)^[ unref^]^[ page^] siz=^d/^f", ftndx, 2555 ftnblk.blkndx, ftnblk.hdr.unref, (ftnblk.hdr.refer ^= icol), 2556 ftnblk.hdr.count, show (ftnblk.hdr.used, 12000)); 2557 2558 if block.blktype = "ph" /* orphan notes */ 2559 then 2560 do; 2561 if colftn.usd + /* if it doesnt fit */ 2562 ftnblk.hdr.used > colnet 2563 then 2564 do; 2565 if colftn.usd + /* if no room for widow & separator */ 2566 min (ftnblk.hdr.used, ftnwidow) > colnet 2567 then 2568 do; 2569 if bug_sw & dt_sw 2570 then call ioa_ (" OFLO"); 2571 note_oflo, pagoflo = "1"b; 2572 return; 2573 end; 2574 2575 else goto split_note; 2576 end; 2577 2578 goto take_orphan; 2579 end; 2580 2581 else if ftnblk.hdr.refer = icol /* does note go in this column? */ 2582 | ftnblk.hdr.unref /* or its an unreffed note */ 2583 then 2584 do; /**/ 2585 /* if no room for widow & separator */ 2586 if locolusd + max (colftn.usd, ftnhdr.hdr.used + 12000) 2587 + min (ftnblk.hdr.used, ftnwidow) + 12000 > colnet 2588 then 2589 do; 2590 if bug_sw & dt_sw 2591 then call ioa_ (" OFLO"); 2592 note_oflo, pagoflo = "1"b; 2593 return; 2594 end; /**/ 2595 /* if it fits, snarf it up */ 2596 else if locolusd + max (colftn.usd, ftnhdr.hdr.used + 12000) 2597 + ftnblk.hdr.used + 12000 <= colnet 2598 then 2599 do; /* count this note for the block */ 2600 take_orphan: 2601 if colftn.ct = 0 /* note header */ 2602 then colftn.usd = ftnhdr.hdr.used + 12000; 2603 2604 blkftnct = blkftnct + 1; 2605 if ftnblk.hdr.refer = icol 2606 then blkftnusd = blkftnusd + 12000 + ftnblk.hdr.used; 2607 2608 colftn.ct = colftn.ct + 1; 2609 colftn.usd = colftn.usd + ftnblk.hdr.used + 12000; 2610 colftn.blkndx (colftn.ct) = ftndx; 2611 2612 if bug_sw & dt_sw 2613 then call ioa_ (" blk=^d/^f/^f col=^d/^f/^f", blkftnct, 2614 show (blkftnusd, 12000), 2615 show (blkusd + blkftnusd, 12000), colftn.ct, 2616 show (colftn.usd, 12000), 2617 show (colusd + colftn.usd, 12000)); 2618 end; 2619 2620 else /* note doesnt fit */ 2621 do; 2622 split_note: /* widow the overflowing */ 2623 /* note if its big enough */ 2624 if ftnblk.hdr.count >= 2 * shared.widow_foot 2625 then 2626 do; 2627 if bug_sw & dt_sw 2628 then call ioa_ (""); 2629 2630 flin_top = 0; 2631 widftnusd = 12000; /* note separator */ 2632 /* take the top widow */ 2633 do line_area_ptr = ftnblk.line_area.first 2634 repeat (line_area.next) while (line_area_ptr ^= null); 2635 do flin = 1 to line_area.ndx 2636 while (widftnusd 2637 + line_area.linptr (flin) -> ftnlin.linespace 2638 <= ftnwidow + 12000); 2639 ftnlinptr = line_area.linptr (flin); 2640 widftnusd = widftnusd + ftnlin.linespace; 2641 line_area_start = line_area_ptr; 2642 flin_start = flin; 2643 flin_top = flin_top + 1; 2644 2645 if bug_sw & dt_sw 2646 then call ioa_ ("^-^5xlin=^dW/^d ld^f u^f blk=^d/^f/^f" 2647 || " col=^d/^f/^f", flin, ftnlin.info.lineno, 2648 show (ftnlin.linespace, 12000), 2649 show (widftnusd, 12000), blkftnct + 1, 2650 show (blkftnusd + widftnusd, 12000), 2651 show (blkusd + blkftnusd + widftnusd, 12000), 2652 colftn.ct + 1, 2653 show (colftn.usd + widftnusd, 12000), 2654 show (colusd + colftn.usd + widftnusd, 12000)); 2655 end; 2656 end; /**/ 2657 /* if widow fits, take free lines */ 2658 if ^ftn_held | (ftn_held & ctl.default) 2659 then if locolusd + colftn.usd + widftnusd <= colnet 2660 then 2661 do; 2662 flin_start = flin_start + 1; 2663 do line_area_ptr = line_area_start 2664 repeat (line_area.next) 2665 while (line_area_ptr ^= null); 2666 do flin = flin_start to line_area.ndx 2667 while (locolusd + colftn.usd + widftnusd 2668 + line_area.linptr (flin) -> txtlin.linespace 2669 <= colnet); 2670 ftnlinptr = line_area.linptr (flin); 2671 widftnusd = widftnusd + ftnlin.linespace; 2672 line_area_start = line_area_ptr; 2673 flin_oflo = flin; 2674 flin_top = flin_top + 1; 2675 2676 if bug_sw & dt_sw 2677 then call ioa_ ( 2678 "^-^5xlin=^d/^d ld^f u^f blk=^d/^f/^f" 2679 || " col=^d/^f/^f", flin, 2680 ftnlin.info.lineno, 2681 show (ftnlin.linespace, 12000), 2682 show (widftnusd, 12000), blkftnct + 1, 2683 show (blkftnusd + widftnusd, 12000), 2684 show (blkusd + blkftnusd + widftnusd, 2685 12000), colftn.ct + 1, 2686 show (colftn.usd + widftnusd, 12000), 2687 show (colusd + colftn.usd + widftnusd, 2688 12000)); 2689 end; 2690 flin_start = 1; 2691 end; 2692 end; /**/ 2693 /* split the note? */ 2694 line_area_ptr = line_area_start; 2695 if flin_oflo <= line_area.ndx 2696 then 2697 do; /* record space used */ 2698 blkftnct = blkftnct + 1; 2699 blkftnusd = blkftnusd + widftnusd; 2700 colftn.ct = colftn.ct + 1; 2701 colftn.usd = colftn.usd + widftnusd; 2702 colftn.blkndx (colftn.ct) = ftndx; 2703 2704 if bug_sw 2705 then call ioa_ ( 2706 "^5xnote_oflo: (col=^d ftn=^d/^d lin=^d/^d)", 2707 icol, colftn.ct, col.hdr.ftn.ct, flin_top, 2708 ftnblk.hdr.count - flin_top); 2709 /* create a new footnote */ 2710 ftnblk_data.highndx = ftnblk_data.highndx + 1; 2711 call comp_util_$getblk (-1, 2712 ftnblk_data.blkptr (ftnblk_data.highndx), "df", 2713 addr (ftnblk.parms), "0"b); 2714 newftnptr = ftnblk_data.blkptr (ftnblk_data.highndx); 2715 2716 line_area_move, ftnblk.line_area.cur = line_area_ptr; 2717 flin_start = flin_oflo + 1; 2718 flin_moved = 0; 2719 do line_area_ptr = line_area_ptr 2720 repeat (line_area.next) while (line_area_ptr ^= null); 2721 do jj = flin_start to line_area.ndx; 2722 call comp_util_$add_text (newftnptr, "0"b, "0"b, "0"b, 2723 "0"b, line_area.linptr (jj)); 2724 flin_moved = flin_moved + 1; 2725 end; 2726 flin_start = 1; 2727 end; 2728 2729 line_area_move -> line_area.ndx = flin_oflo; 2730 ftnblk.hdr.count = ftnblk.hdr.count - flin_moved; 2731 ftnblk.hdr.used = widftnusd; 2732 newftnptr -> ftnblk.hdr.refer = ftnblk.hdr.refer; 2733 newftnptr -> ftnblk.hdr.unref = ftnblk.hdr.unref; 2734 newftnptr -> ftnblk.hdr.oflo_ftn, 2735 newftnptr -> ftnblk.hdr.dfrftn = "1"b; 2736 dfrftn.ct = 1; /* make this one 1st in deferred list */ 2737 dfrftn.usd = newftnptr -> ftnblk.hdr.used + 12000; 2738 dfrftn.blkndx (1) = ftnblk_data.highndx; 2739 end; 2740 note_oflo, pagoflo = "1"b; 2741 end; 2742 2743 else 2744 do; 2745 if bug_sw & dt_sw 2746 then call ioa_ (" OFLO"); 2747 note_oflo, pagoflo = "1"b; 2748 end; 2749 2750 if bug_sw 2751 then call ioa_ ("^-(note_oflo: col=^d note=^d/^f oflo=^d ^d/^f)", 2752 icol, ftnblk.hdr.count, show (ftnblk.hdr.used, 12000), 2753 dfrftn.ct, flin_moved, show (dfrftn.usd, 12000)); 2754 end; 2755 end; 2756 2757 else 2758 do; 2759 blkftnct = blkftnct + 1; 2760 if bug_sw & dt_sw 2761 then call ioa_ (""); 2762 end; 2763 2764 end take_a_note; 2765 2766 pull_oflo: 2767 proc (oldc, newc); 2768 2769 /* PARAMETERS */ 2770 2771 dcl oldc fixed bin; /* overflowing column */ 2772 dcl newc fixed bin; /* receiving column */ 2773 2774 /* LOCAL STORAGE */ 2775 /**** footnote reference */ 2776 dcl footref_array (3) char (48) var static; 2777 dcl footrefstr char (256) var static; 2778 dcl ftnref bit (1); /* inverse of footnote unref flag */ 2779 dcl (ii, jj, jjj, kk) 2780 fixed bin; /* working index */ 2781 dcl pull_blk fixed bin; /* block at which pulling starts */ 2782 dcl splthdr fixed bin; /* 1= there is a split header */ 2783 2784 dcl comp_error_table_$program_error 2785 fixed bin (35) ext static; 2786 /* set local column pointer */ 2787 newcol_ptr = page.column_ptr (newc); 2788 2789 if bug_sw 2790 then call ioa_ ("^5xpull_oflo: (oldc=^d b^d u^f^[ ftn=^d ^f^;^2s^]" 2791 || "^[ dfr=^d/^f^;^2s^]" 2792 || " newc=^d b^d d^f u^f^[ ftn=^d/^f^;^2s^])", oldc, oflo.ct, 2793 show (oflo.used, 12000), (oflo.ftn.ct > 0), oflo.ftn.ct, 2794 show (oflo.ftn.usd, 12000), (dfrftn.ct > 0), dfrftn.ct, 2795 show (max (dfrftn.usd, 0), 12000), newc, newcol.hdr.blkct, 2796 show (newcol.hdr.baldepth, 12000), show (newcol.hdr.used, 12000), 2797 (newcol.hdr.ftn.ct > 0), newcol.hdr.ftn.ct, 2798 show (newcol.hdr.ftn.usd, 12000)); 2799 2800 /* anything there? */ 2801 if oflo.ct > 0 2802 then 2803 do; /* recover change level */ 2804 page.hdr.pgc_select = pgc_select; 2805 pull_blk = newcol.hdr.balblk; /**/ 2806 /* need a column header? */ 2807 if pull_blk = 1 & newcol.blkptr (1) ^= null 2808 then if newcol.blkptr (1) -> text.blktype = "ch" 2809 then pull_blk = 2; /* keep it first */ 2810 2811 splthdr = 0; /* is there a split header? */ 2812 if shared.spcl_blkptr ^= null /* is first oflo block a split? */ 2813 then if shared.spcl_blkptr -> hfcblk.hdr.count > 0 2814 & oflo.blkptr (1) -> block.blktype = "ot" 2815 then 2816 do; /* does new column already have one? */ 2817 if newcol.blkptr (pull_blk) ^= null 2818 then if newcol.blkptr (pull_blk) -> block.blktype = "sh" 2819 then pull_blk = pull_blk + 1; 2820 else splthdr = 1; /* no, need one */ 2821 else splthdr = 1; /* no, need one */ 2822 end; /**/ 2823 /* pulling to next column? */ 2824 /* push down new column */ 2825 if newc ^= oldc & newcol.hdr.blkct > 0 2826 then 2827 do; 2828 do ii = newcol.hdr.blkct to pull_blk by -1; 2829 newcol.blkptr (ii + splthdr + oflo.ct) = newcol.blkptr (ii); 2830 end; 2831 /**** PUSH newcol.hdr.ftn.blkndx */ 2832 end; 2833 2834 else if newcol.hdrptr ^= null /* is there a column header? */ 2835 & newc > 0 2836 then 2837 do; 2838 page.hdr.col_index = newc; 2839 shared.colptr = newcol_ptr; 2840 call comp_util_$getblk (newc, shared.blkptr, "tx", 2841 addr (newcol.hdrptr -> hfcblk.parms), "0"b); 2842 text.hdr.tblblk = "0"b; 2843 call comp_title_block_ (newcol.hdrptr); 2844 call comp_break_ (block_break, 0); 2845 pull_blk = 2; 2846 page.hdr.col_index = oldc; 2847 shared.colptr = page.column_ptr (oldc); 2848 end; /**/ 2849 /* need a split header? */ 2850 if shared.spcl_blkptr ^= null 2851 then if shared.spcl_blkptr -> hfcblk.hdr.count > 0 & splthdr = 1 2852 then 2853 do; 2854 page.hdr.col_index = newc; 2855 shared.colptr = newcol_ptr; 2856 call comp_util_$getblk (-1, shared.blkptr, "sh", 2857 addr (oflo.blkptr (1) -> text.parms), "0"b); 2858 newcol.blkptr (1) = shared.blkptr; 2859 call comp_title_block_ (shared.spcl_blkptr); 2860 call comp_break_ (block_break, 0); 2861 newcol.hdr.blkct = newcol.hdr.blkct + 1; 2862 pull_blk = pull_blk + 1; 2863 end; /**/ 2864 2865 if oflo.ftn.ct > 0 /* any notes pushed? */ 2866 then 2867 do; /* push down notes already there */ 2868 do ii = newcol.hdr.ftn.ct to 1 by -1; 2869 newcol.hdr.ftn.blkndx (ii + oflo.ftn.ct) = 2870 newcol.hdr.ftn.blkndx (ii); 2871 end; /**/ 2872 /* add pushed notes */ 2873 do ii = 1 to oflo.ftn.ct; 2874 newcol.hdr.ftn.blkndx (ii) = oflo.ftn.blkndx (ii); 2875 end; 2876 end; /**/ 2877 /* adjust page/column data */ 2878 newcol.hdr.blkct = newcol.hdr.blkct + oflo.ct; 2879 newcol.hdr.ftn.ct = newcol.hdr.ftn.ct + oflo.ftn.ct; 2880 2881 newcol.hdr.used = newcol.hdr.used + oflo.used; 2882 newcol.hdr.depth = newcol.hdr.depth + oflo.used; 2883 newcol.hdr.ftn.usd = newcol.hdr.ftn.usd + oflo.ftn.usd; 2884 2885 page.hdr.used = max (pagusd, newcol.hdr.used); 2886 page.hdr.depth = newcol.hdr.depth; 2887 page.hdr.col_count = max (page.hdr.col_count, newc); 2888 2889 do ii = 1 to oflo.ct; /* insert the overflow */ 2890 ofloblkptr = oflo.blkptr (ii); 2891 2892 if newc ^= oldc 2893 then newcol.blkptr (ii + pull_blk - 1) = ofloblkptr; 2894 else newcol.blkptr (newcol.hdr.blkct - oflo.ct + ii) = ofloblkptr; 2895 ofloblk.blktype = "tx"; /* make it a text block */ 2896 ofloblk.hdr.colno = newc; /* in this column */ 2897 2898 if ii = oflo.ct /* fix up column head space */ 2899 then 2900 do; 2901 if ofloblk.hdr.white /* white block adds to head space */ 2902 then newcol.hdr.pspc = newcol.hdr.pspc + ofloblk.hdr.used; 2903 2904 else 2905 do; 2906 newcol.hdr.pspc = 0; 2907 do line_area_ptr = ofloblk.line_area.cur 2908 repeat (line_area.prev) while (line_area_ptr ^= null); 2909 do jj = line_area.ndx to 1 by -1 2910 while (line_area.linptr (jj) -> txtlin.ptr -> txtstr 2911 = ""); 2912 newcol.hdr.pspc = 2913 newcol.hdr.pspc 2914 + line_area.linptr (jj) -> txtlin.linespace; 2915 end; 2916 end; 2917 end; 2918 end; /**/ 2919 /* any footnotes? if paged and */ 2920 /* pulling onto the next page */ 2921 /* change references */ 2922 if ofloblk.hdr.ftn.ct > 0 & shared.ftn_reset = "paged" & newc <= oldc 2923 then 2924 do line_area_ptr = ofloblk.line_area.first 2925 repeat (line_area.next) while (line_area_ptr ^= null); 2926 do jj = 1 to line_area.ndx; 2927 txtlinptr = line_area.linptr (jj); 2928 2929 if txtlin.ftn.ct > 0 2930 then 2931 do kk = 1 to txtlin.ftn.ct; 2932 ftndx = txtlin.ftn.blkndx (kk); 2933 2934 if ftndx > 0 /* if not a .frf reference */ 2935 then ftnref = 2936 ^ftnblk_data.blkptr (ftndx) -> text.hdr.unref; 2937 else ftnref = "1"b; /* it is a .frf reference */ 2938 2939 if ftnref /* if there a reference */ 2940 & ftndx > 0 /* and its not a .frf reference */ 2941 /* and not deferred by widowing */ 2942 & ^ftnblk_data.blkptr (ftndx) -> text.hdr.dfrftn 2943 then 2944 do; /* build ref string */ 2945 footref_array (2) = 2946 ltrim (char (txtlin.ftn.refno (kk))); 2947 call comp_dvt 2948 .footproc (footref_array, addr (comp_dvt)); 2949 footrefstr = 2950 shared.footref_fcs || footref_array (1) 2951 || footref_array (2); 2952 /* change ref in footnote */ 2953 ftnblkptr = ftnblk_data.blkptr (ftndx); 2954 txtlinptr = 2955 ftnblk.line_area.first -> line_area.linptr (1); 2956 txtstrptr = txtlin.ptr; 2957 jjj = index (txtstr, footrefstr); 2958 jjj = jjj + 8 + length (footref_array (1)); 2959 substr (txtstr, jjj, 1) = 2960 ltrim (char (shared.ftnrefct)); 2961 /* change ref in text */ 2962 txtlinptr = line_area.linptr (jj); 2963 txtstrptr = txtlin.ptr; 2964 jjj = index (txtstr, footrefstr); 2965 /* if not found */ 2966 if jjj = 0 2967 then call comp_report_ (4, 2968 comp_error_table_$program_error, 2969 "Cant find footnote reference in a line " 2970 || "expected to contain one.", 2971 addr (txtlin.info), txtstr); 2972 2973 else 2974 do; /* change it */ 2975 jjj = jjj + 8 + length (footref_array (1)); 2976 substr (txtstr, jjj, 1) = 2977 ltrim (char (shared.ftnrefct)); 2978 txtlin.ftn.refno (kk) = shared.ftnrefct; 2979 end; 2980 end; /**/ 2981 /* count notes */ 2982 shared.ftnrefct = shared.ftnrefct + 1; 2983 end; 2984 end; 2985 end; 2986 end; 2987 2988 if break_type = need_break /* make overflow active for need */ 2989 then shared.blkptr = ofloblkptr; 2990 end; 2991 2992 if dfrftn.ct > 0 /* any deferred footnotes */ 2993 then /* become orphans */ 2994 do; 2995 if col0.hdr.ftn.ct = 0 2996 then col0.hdr.ftn.usd = ftnhdr.hdr.used + 12000; 2997 2998 col0.hdr.ftn.ct = col0.hdr.ftn.ct + dfrftn.ct; 2999 col0.hdr.ftn.usd = col0.hdr.ftn.usd + dfrftn.usd; 3000 /* tack them onto the page header */ 3001 col0.blkptr (1) -> block.hdr.ftn.ct = 3002 col0.blkptr (1) -> block.hdr.ftn.ct + dfrftn.ct; 3003 col0.blkptr (1) -> block.hdr.ftn.usd = 3004 col0.blkptr (1) -> block.hdr.ftn.usd + dfrftn.usd; 3005 line_area_ptr = col0.blkptr (1) -> block.line_area.first; 3006 3007 txtlinptr = line_area.linptr (1); 3008 txtlin.ftn.ct = txtlin.ftn.ct + dfrftn.ct; 3009 txtlin.ftn.used = txtlin.ftn.used + dfrftn.usd; 3010 txtlin.ftn.refno = 0; 3011 3012 do ii = 1 to dfrftn.ct; /* mark notes unreffed */ 3013 ftnblkptr = ftnblk_data.blkptr (dfrftn.blkndx (ii)); 3014 ftnblk.hdr.unref = "1"b; /**/ 3015 /* move the blkndx numbers */ 3016 col0.hdr.ftn.blkndx (col0.hdr.ftn.ct - dfrftn.ct + ii) = 3017 dfrftn.blkndx (ii); 3018 col0.blkptr (1) 3019 -> block.hdr.ftn 3020 .blkndx (col0.blkptr (1) -> block.hdr.ftn.ct - dfrftn.ct + ii) = 3021 dfrftn.blkndx (ii); 3022 txtlin.ftn.blkndx (txtlin.ftn.ct - dfrftn.ct + ii) = 3023 dfrftn.blkndx (ii); 3024 end; 3025 3026 dfrftn.ct, dfrftn.usd, dfrftn.blkndx = 0; 3027 end; /**/ 3028 /* overflow recovered, clean up */ 3029 oflo.ct, oflo.ftn.ct, oflo.ftn.usd = 0; 3030 oflo.ct, oflo.used, oflo.ftn.ct, oflo.ftn.usd = 0; 3031 3032 if bug_sw 3033 then call ioa_ ("^-(pull_oflo: col=^d b^d d^f u^f^[ ftn=^d ^f^;^2s^])", 3034 newc, newcol.hdr.blkct, show (newcol.hdr.baldepth, 12000), 3035 show (newcol.hdr.used, 12000), (newcol.hdr.ftn.ct > 0), 3036 newcol.hdr.ftn.ct, show (newcol.hdr.ftn.usd, 12000)); 3037 3038 end pull_oflo; 3039 3040 show: 3041 proc (value, scale) returns (fixed dec (11, 3)); 3042 dcl value fixed bin (31); 3043 dcl scale fixed bin (31); 3044 return (dec (divide (value, scale, 31, 10), 11, 3)); 3045 end show; 3046 3047 dcl dt_sw bit (1) static init ("0"b); 3048 dtn: 3049 entry; 3050 dt_sw = "1"b; 3051 return; 3052 dtf: 3053 entry; 3054 dt_sw = "0"b; 3055 return; 3056 3057 dcl db_sw bit (1) static init ("0"b); 3058 dbn: 3059 entry; 3060 db_sw = "1"b; 3061 return; 3062 dbf: 3063 entry; 3064 db_sw = "0"b; 3065 return; 3066 3067 allf: 3068 entry; 3069 db_sw, dt_sw = "0"b; 3070 return; 3071 3072 /* DCLS THAT MUST BE NEAR INCLS DUE TO SYMBOL TABLE SIZE LIMIT */ 3073 3074 dcl locolptr ptr; /* for local referencing */ 3075 dcl 1 locol aligned like col based (locolptr); 3076 dcl 1 newcol aligned like col based (newcol_ptr); 3077 /* for local reffing */ 3078 dcl newcol_ptr ptr; /* pointer to receiving column */ 3079 1 1 /* BEGINE INCLUDE FILE comp_brktypes.incl.pl1 */ 1 2 1 3 /* Written - 4/18 - EJW 1 4* 1 5* Defines constants for all the types of text breaks in compose */ 1 6 1 7 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 1 8 1 9 dcl ( 1 10 format_break init (0), 1 11 block_break init (1), 1 12 column_break init (2), 1 13 page_break init (3), 1 14 need_break init (4), 1 15 footnote_break init (5), 1 16 footer_break init (7) 1 17 ) fixed bin static options (constant); 1 18 1 19 /* END INCLUDE FILE comp_brktypes.incl.pl1 */ 3080 2 1 /* BEGIN INCLUDE FILE comp_column.incl.pl1 */ 2 2 2 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 2 4 2 5 dcl 1 col /* the text column */ 2 6 aligned based (shared.colptr), 2 7 2 blkptr (100) ptr, /* pointers to text blocks */ 2 8 2 depth_adj fixed bin (31), /* for variable start depth */ 2 9 2 ftrptr ptr, /* -> column footer */ 2 10 2 ftrusd fixed bin (31), /* column footer space used */ 2 11 2 gutter fixed bin (31), /* column separation */ 2 12 2 hdr like colhdr, /* column control stuff */ 2 13 2 hdrptr ptr, /* -> column header */ 2 14 2 hdrusd fixed bin (31), /* column header space used */ 2 15 2 margin, /* margin settings for column */ 2 16 3 left fixed bin (31), 2 17 3 right fixed bin (31), 2 18 2 parms, /* text parms for the column */ 2 19 3 measure fixed bin (31); /* column width */ 2 20 2 21 dcl 1 colhdr aligned based (const.colhdrptr), 2 22 /* an empty column header */ 2 23 2 balblk fixed bin, /* block to begin column balancing */ 2 24 2 baldepth fixed bin (31), /* page depth at balance point */ 2 25 2 balftn, /* footnotes at balance point */ 2 26 3 ct fixed bin, /* count */ 2 27 3 usd fixed bin (31), /* space used */ 2 28 3 blkndx (40) fixed bin, /* block index values */ 2 29 2 balusd fixed bin (31), /* space used up to balance point */ 2 30 2 blkct fixed bin, /* text block count */ 2 31 2 depth fixed bin (31), /* current page depth in the column */ 2 32 2 ftn like balftn, /* footnotes */ 2 33 2 pspc fixed bin (31), /* current white space */ 2 34 2 net fixed bin (31), /* net usable space in the column */ 2 35 2 used fixed bin (31); /* space used in this column */ 2 36 /* for quick reference */ 2 37 dcl 1 col0 aligned like col based (page.column_ptr (0)); 2 38 2 39 /* END INCLUDE FILE comp_column.incl.pl1 */ 3081 3 1 /* BEGIN INCLUDE FILE comp_ctl_index.incl.pl1 */ 3 2 3 3 /* Written: 3/82 - EJW */ 3 4 3 5 /* Vector index values for controls that must be globally known. */ 3 6 3 7 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 3 8 3 9 dcl ( 3 10 be_ctl_index init (22), /* block-end */ 3 11 bef_ctl_index init (26), /* block-end-footnote */ 3 12 bel_ctl_index init (28), /* block-end-literal */ 3 13 bep_ctl_index init (30), /* block-end-picture */ 3 14 fin_ctl_index init (76), /* fill-on */ 3 15 ifi_ctl_index init (110), /* insert-file */ 3 16 ift_ctl_index init (111), /* insert-footnotes */ 3 17 tac_ctl_index init (145), /* table-column */ 3 18 taf_ctl_index init (146) /* table-off */ 3 19 ) fixed bin static options (constant); 3 20 3 21 /* END INCLUDE FILE comp_ctl_index.incl.pl1 */ 3082 4 1 /* BEGIN INCLUDE FILE comp_entries.incl.pl1 */ 4 2 4 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 4 4 4 5 dcl compose_severity_ 4 6 fixed bin (35) ext static; 4 7 dcl comp_ entry; 4 8 dcl comp_art_ entry (ptr, bit (1)); 4 9 dcl comp_block_ctls_ 4 10 entry (fixed bin); 4 11 dcl comp_break_ entry (fixed bin, fixed bin); 4 12 dcl comp_break_ctls_ 4 13 entry (fixed bin); 4 14 dcl comp_ctls_ entry (bit (1) aligned); 4 15 dcl comp_eject_page_ 4 16 entry; 4 17 dcl comp_expr_eval_ 4 18 entry (char (*) var, fixed bin (21), ptr, fixed bin, 4 19 fixed bin, bit (1), fixed bin (31), char (*) var, 4 20 bit (9), fixed bin (35)); 4 21 dcl comp_extr_str_ entry (bit (1), char (*) var, fixed bin (21), 4 22 fixed bin (21), fixed bin (21), ptr) 4 23 returns (char (*) var); 4 24 dcl comp_fill_ entry; 4 25 dcl comp_font_ entry (bit (1), char (*) var, char (8) aligned); 4 26 dcl comp_format_ctls_ 4 27 entry (fixed bin); 4 28 dcl comp_get_file_$find 4 29 entry (char (*), ptr, char (*), bit (1), char (*) var, 4 30 fixed bin (35)); 4 31 dcl comp_get_file_$open 4 32 entry (ptr, bit (1), fixed bin (35)); 4 33 dcl comp_head_page_ 4 34 entry (fixed bin (31)); 4 35 dcl comp_hft_ctls_ entry (fixed bin); 4 36 dcl comp_hft_ctls_$title 4 37 entry (ptr, ptr, char (*) var, fixed bin (31)); 4 38 dcl comp_init_$one entry; 4 39 dcl comp_init_$two entry; 4 40 dcl comp_init_$three 4 41 entry; 4 42 dcl comp_insert_ctls_ 4 43 entry (fixed bin); 4 44 dcl comp_make_page_ 4 45 entry (fixed bin, bit (1)); 4 46 dcl comp_make_page_$cleanup 4 47 entry; 4 48 dcl comp_measure_ entry (char (1020) var, ptr, bit (1), bit (1), bit (6), 4 49 fixed bin (31), ptr, ptr, ptr); 4 50 dcl comp_read_$name 4 51 entry (char (*) var, fixed bin (21), fixed bin (21), 4 52 ptr) returns (char (*) var); 4 53 dcl comp_read_$number 4 54 entry (char (*) var, (*) fixed bin (31), 4 55 fixed bin (21), fixed bin (21), ptr, fixed bin (35)) 4 56 returns (fixed bin (31)); 4 57 dcl comp_read_$line 4 58 entry (ptr, char (*) var, bit (1)); 4 59 dcl comp_report_ entry (fixed bin, fixed bin (35), char (*), ptr, 4 60 char (*) var); 4 61 dcl comp_report_$ctlstr 4 62 entry options (variable); 4 63 /**** (sev, code, info, line, ctl_str, args... */ 4 64 dcl comp_report_$exact 4 65 entry (char (*), ptr); 4 66 dcl comp_space_ entry (fixed bin (31), ptr, bit (1), bit (1), bit (1), 4 67 bit (1)); 4 68 dcl comp_tbl_ctls_ entry (fixed bin); 4 69 dcl comp_title_block_ 4 70 entry (ptr); 4 71 dcl comp_update_symbol_ 4 72 entry (bit (1), bit (1), bit (1), char (32), 4 73 char (*) var); 4 74 dcl comp_use_ref_ entry (char (*) var, bit (1), bit (1), ptr); 4 75 dcl comp_util_$add_text 4 76 entry (ptr, bit (1), bit (1), bit (1), bit (1), ptr); 4 77 dcl comp_util_$display 4 78 entry (char (*) var, fixed bin, bit (1)) 4 79 returns (char (*) var); 4 80 dcl comp_util_$escape 4 81 entry (char (*) var, ptr); 4 82 dcl comp_util_$getblk 4 83 entry (fixed bin, ptr, char (2), ptr, bit (1)); 4 84 dcl comp_util_$num_display 4 85 entry (ptr, fixed bin) returns (char (256) var); 4 86 dcl comp_util_$pageno 4 87 entry (fixed bin, char (*) var); 4 88 dcl comp_util_$pictures /* emit pending pictures */ 4 89 entry /**/ 4 90 (ptr); /* current text block */ 4 91 dcl comp_util_$pop entry (char (32)); 4 92 dcl comp_util_$push 4 93 entry (char (32)); 4 94 dcl comp_util_$relblk 4 95 entry (fixed bin, ptr); 4 96 dcl comp_util_$replace_text 4 97 entry (ptr, bit (1), ptr, ptr); 4 98 dcl comp_util_$search_tree 4 99 entry (char (32), bit (1)); 4 100 dcl comp_util_$set_bin 4 101 entry (fixed bin (31), char (32) var, fixed bin (31), 4 102 fixed bin (31), fixed bin (31), (*) fixed bin (31), 4 103 fixed bin (31)); 4 104 dcl comp_util_$set_net_page 4 105 entry (bit (1)); 4 106 dcl comp_util_$translate 4 107 entry (char (*) var) returns (char (*) var); 4 108 dcl comp_write_block_ 4 109 entry (fixed bin); 4 110 dcl comp_write_page_ 4 111 entry; 4 112 4 113 /* END INCLUDE FILE comp_entries.incl.pl1 */ 3083 5 1 /* BEGIN INCLUDE FILE comp_fntstk.incl.pl1 */ 5 2 5 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 5 4 5 5 dcl fntstk_eptr ptr; /* font stack entry structure */ 5 6 dcl 1 fntstk_entry aligned based (fntstk_eptr), 5 7 2 bachelor bit (1), /* 1= has no members */ 5 8 2 devfnt fixed bin, /* font in the device */ 5 9 2 fam_name char (32), /* family name */ 5 10 2 famndx fixed bin, /* family index */ 5 11 2 fntptr ptr, /* font table pointer */ 5 12 2 mem_name char (32), /* /member name (or null) */ 5 13 2 memndx fixed bin, /* member index */ 5 14 2 memptr ptr, /* member table pointer */ 5 15 2 name char (65) var, /* font name */ 5 16 2 size fixed bin (31), /* requested point size */ 5 17 2 ps fixed bin (31), /* effective point size */ 5 18 2 fcs_str char (8); /* FCS string */ 5 19 5 20 /* END INCLUDE FILE comp_fntstk.incl.pl1 */ 3084 6 1 /* BEGIN INCLUDE FILE comp_footnotes.incl.pl1 */ 6 2 6 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 6 4 6 5 dcl 1 ftnblk_data aligned based (shared.ftnblk_data_ptr), 6 6 /* data for footnote blocks */ 6 7 2 highndx fixed (35), /* highest active footnote index */ 6 8 2 blkptr (250) ptr; /* block pointers */ 6 9 /* footnote header data block */ 6 10 dcl 1 ftnhdr aligned like text based (shared.footnote_header_ptr); 6 11 /* formatting parms for footnotes */ 6 12 dcl 1 footnote_parms 6 13 aligned like default_parms 6 14 based (const.footnote_parms_ptr); 6 15 6 16 /* END INCLUDE FILE comp_footnotes.incl.pl1 */ 3085 7 1 /* BEGIN INCLUDE FILE comp_option.incl.pl1 */ 7 2 7 3 dcl option_version fixed bin (35) static options (constant) init (2); 7 4 7 5 dcl 1 option aligned based (const.option_ptr), /* program options */ 7 6 2 version fixed bin (35), 7 7 /* Options with parameters */ 7 8 (2 argument_opt, /* -argument option flag */ 7 9 2 cbar_opt, /* -change_bars option flag */ 7 10 2 cbar_art_opt, /* -change_bars_art option flag */ 7 11 2 debug_opt, /* -debug option flag */ 7 12 2 db_all_opt, /* -debug_all option flag */ 7 13 2 db_file_opt, /* -debug_file option flag */ 7 14 2 device_opt, /* -device option flag */ 7 15 2 execute_opt, /* -execute option flag */ 7 16 2 from_opt, /* -from option flag */ 7 17 2 galley_opt, /* -galley option flag */ 7 18 2 hyph_opt, /* -hyphenation option flag */ 7 19 2 indent_opt, /* -indent option flag */ 7 20 2 input_file_opt, /* -input_file option flag */ 7 21 2 linespace_opt, /* -linespace option flag */ 7 22 2 output_file_opt, /* -output_file option flag */ 7 23 2 pages_opt, /* -pages option flag */ 7 24 2 page_chng_opt, /* -pages_changed option flag */ 7 25 2 parameter_opt, /* -parameter option flag */ 7 26 2 passes_opt, /* -passes option flag */ 7 27 2 tdir_opt, /* -temp_dir option flag */ 7 28 2 to_opt, /* -to option flag */ 7 29 /* Options without parameters */ 7 30 2 annot_opt, /* -annotate */ 7 31 2 brief_opt, /* -brief option flag */ 7 32 2 check_opt, /* -check option flag */ 7 33 2 cws_opt, /* -cws option flag */ 7 34 2 db_pause_opt, /* -debug_pause option flag */ 7 35 2 noart_opt, /* -noart option flag */ 7 36 2 nobell_opt, /* -no_bell option flag */ 7 37 2 nofill_opt, /* -nofill option flag */ 7 38 2 nohit_opt, /* -nohit option flag */ 7 39 2 number_opt, /* -number option flag */ 7 40 2 number_append_opt, /* -number_append option flag */ 7 41 2 number_brief_opt, /* -number_brief option flag */ 7 42 2 stop_opt, /* -stop option flag */ 7 43 2 wait_opt) unal bit (1), /* -wait option flag */ 7 44 2 MBZ bit (2) unal, 7 45 /* Optional parameters */ 7 46 2 arg_count fixed bin, /* count of -ag values */ 7 47 2 cbar, /* change bar data */ 7 48 3 level char (1), /* change level character (ASCII NUL) */ 7 49 3 place char (1), /* placement character */ 7 50 3 space fixed bin (31), /* extra left margin space needed */ 7 51 3 left, /* left margin mark data */ 7 52 4 sep fixed bin (31), /* separation */ 7 53 4 width fixed bin (31), /* mark width */ 7 54 4 mark char (80) varying, /* the left margin mark */ 7 55 3 right, /* right margin mark data */ 7 56 4 sep fixed bin (31), /* separation */ 7 57 4 width fixed bin (31), /* mark width */ 7 58 4 mark char (80) varying, /* the right margin mark */ 7 59 3 del, /* deletion mark data */ 7 60 4 sep fixed bin (31), /* separation */ 7 61 4 width fixed bin (31), /* mark width */ 7 62 4 mark char (80) varying, /* the deletion mark */ 7 63 2 db_after_line fixed bin (35), /* source line for enabling insert debug */ 7 64 2 db_before_line fixed bin (35), /* source line for disabling insert debug */ 7 65 2 db_file char (200) var, /* file pathanme for debug */ 7 66 2 db_file_after fixed bin (35), /* debug file starting line */ 7 67 2 db_line_end fixed bin (35), /* final line for -debug output */ 7 68 2 db_line_strt fixed bin (35), /* initial line for -debug output */ 7 69 2 device char (32) varying, /* output device */ 7 70 2 extra_indent fixed bin (31), /* extra indent value */ 7 71 2 hyph_size fixed bin (31), /* least word part size for hyphenation */ 7 72 2 line_1 fixed bin (35), /* initial line for output */ 7 73 2 line_2 fixed bin (35), /* final line for output */ 7 74 2 linespace fixed bin (31), /* line spacing value */ 7 75 2 pglstct fixed bin (35), /* number of page list entries */ 7 76 2 pglstndx fixed bin (35), /* index for -pages list */ 7 77 2 pglst (0:49), /* list of requested pages */ 7 78 3 from char (32) var, 7 79 3 to char (32) var, 7 80 2 parameter char (80) varying, /* parameter <value> from command line */ 7 81 2 passes fixed bin, /* passes remaining */ 7 82 2 pgc_select char (1) aligned; /* addendum key to control change page printing - init = NUL */ 7 83 7 84 /* END INCLUDE FILE comp_option.incl.pl1 */ 7 85 3086 8 1 /* BEGIN INCLUDE FILE comp_page.incl.pl1 */ 8 2 8 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 8 4 8 5 dcl max_image_lines 8 6 fixed static options (constant) init (1000); 8 7 dcl max_cols fixed static options (constant) init (20); 8 8 8 9 dcl page_version fixed bin static options (constant) init (5); 8 10 /* composed page structure */ 8 11 dcl 1 page aligned based (const.page_ptr), 8 12 2 version fixed bin, /* version of this structure */ 8 13 2 parms aligned like page_parms, 8 14 /* page formatting parameters */ 8 15 2 hdr aligned like page_header, 8 16 /* page control stuff */ 8 17 2 image_ptr ptr, /* pointer to the madeup page image */ 8 18 2 column_ptr (0:20) ptr, /* pointers to the column structures */ 8 19 2 col_image_ptr 8 20 (-2:21) ptr; /* pointers to column images */ 8 21 /* col -1 is for line numbers and */ 8 22 /* left margin change bars; */ 8 23 /* col -2 is for */ 8 24 /* right margin change bars */ 8 25 /* and/or annotation * / 8 26* /* page control stuff */ 8 27 dcl 1 page_header aligned based (const.page_header_ptr), 8 28 2 sws, 8 29 3 art bit (1) unal, /* 1 = header/footer art */ 8 30 3 blankpage 8 31 bit (1) unal, /* 1 = intentional blank page */ 8 32 3 frontpage 8 33 bit (1) unal, /* 1 = odd page number */ 8 34 3 headed bit (1) unal, /* 1 = page header has been written */ 8 35 3 modified bit (1) unal, /* 1 = page has been modified */ 8 36 3 overflow bit (1) unal, /* OBSOLETE */ 8 37 3 MBZ bit (12) unal, 8 38 3 dot_addltr 8 39 char (1) unal, /* dot page add letter, if any */ 8 40 3 pgc_select 8 41 char (1) unal, /* for selecting change pages */ 8 42 2 baldepth fixed bin (31), /* page depth at balance point */ 8 43 2 balusd fixed bin (31), /* space used at balance point */ 8 44 2 col_count fixed bin, /* highest value of col_index for the page */ 8 45 2 col_index fixed bin, /* column index */ 8 46 2 depth fixed bin (31), /* current page depth */ 8 47 2 hdspc fixed bin (31), /* TOP white space */ 8 48 2 lmarg fixed bin (31), /* left margin for this page */ 8 49 2 net fixed bin (31), /* net usable space on the page */ 8 50 2 pageno char (32) var, /* current page number */ 8 51 2 used fixed bin (31); /* space already used on the page */ 8 52 8 53 dcl page_image_version 8 54 fixed bin (35) static options (constant) init (2); 8 55 /* structure passed to writers */ 8 56 dcl 1 page_image aligned based (page.image_ptr), 8 57 2 version fixed bin (35), /* structure version no */ 8 58 2 count fixed bin, /* count of page image lines */ 8 59 2 file_id char (32) var, /* compout identifier */ 8 60 2 func fixed bin, /* function code; 0 = build, 8 61* 1 = intialize, 2 = cleanup */ 8 62 2 text_ptr ptr, /* pointer to the text area */ 8 63 /* the image lines */ 8 64 2 line (max_image_lines), 8 65 3 sws, 8 66 4 quad bit (6) unal, /* text set position flags */ 8 67 4 art bit (1) unal, /* 1 = artwork in the line */ 8 68 4 cbar bit (1) unal, /* 1= line has a cbar, dont erase */ 8 69 4 mrgtxt bit (1) unal, /* line number or marginal note */ 8 70 4 white bit (1) unal, /* line is white */ 8 71 4 MBZ bit (26) unal, 8 72 3 depth fixed bin (31), /* page depth for the text */ 8 73 3 gaps fixed bin, /* number of WS gaps in the line */ 8 74 3 info like text_entry.info, 8 75 /* input file info */ 8 76 3 lead fixed bin (31), /* lead value if trailing WS */ 8 77 3 lfnt fixed bin, /* font at the left margin */ 8 78 3 lmarg fixed bin (31), /* text left margin position */ 8 79 3 lsize fixed bin (31), /* pointsize at the left margin */ 8 80 3 net fixed bin (31), /* net width for filling */ 8 81 3 pos fixed bin (31), /* current horiz position */ 8 82 3 ptr ptr, /* pointer to the text */ 8 83 3 rmarg fixed bin (31), /* text right margin position */ 8 84 3 width fixed bin (31); /* width of the text */ 8 85 /* current page formatting parms */ 8 86 dcl 1 page_parms aligned based (const.page_parms_ptr), 8 87 2 init_page_depth 8 88 fixed bin (31), /* initial page depth */ 8 89 2 length fixed bin (31), /* page length */ 8 90 2 lmarg, /* page left margin */ 8 91 3 even fixed bin (31), 8 92 3 odd fixed bin (31), 8 93 2 margin, /* margin values */ 8 94 3 top fixed bin (31), 8 95 3 header fixed bin (31), 8 96 3 footer fixed bin (31), 8 97 3 bottom fixed bin (31), 8 98 2 measure fixed bin (31), /* line space available for text */ 8 99 2 net, /* net usable space on page */ 8 100 3 even fixed bin (31), /* even pages */ 8 101 3 odd fixed bin (31), /* odd pages */ 8 102 /* arrays at the end */ 8 103 2 cols, /* columns defined for the page */ 8 104 3 bal bit (1) unal, /* column balancing control flag */ 8 105 3 MBZ bit (17) unal, 8 106 3 count fixed bin unal; /* the number of columns */ 8 107 /* default page formatting parms */ 8 108 dcl 1 init_page_parms 8 109 aligned like page_parms 8 110 based (const.init_page_parms_ptr); 8 111 8 112 /* END INCLUDE FILE comp_page.incl.pl1 */ 3087 9 1 /* BEGIN INCLUDE FILE comp_shared.incl.pl1 */ 9 2 9 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 9 4 9 5 dcl shared_version fixed bin (35) static options (constant) init (17); 9 6 9 7 dcl 1 shared aligned based (const.shared_ptr), 9 8 2 version fixed bin (35), /* version of this structure */ 9 9 2 chars, 9 10 ( 3 sym_delim, /* delimiter for symbols */ 9 11 3 ttl_delim, /* delimiter for title parts */ 9 12 3 wrd_brkr /* word break character */ 9 13 ) char (1) unal, 9 14 3 PAD char (1) unal, 9 15 2 cbar_type char (4) var, /* change bar type */ 9 16 2 dot_add_letter /* dot page add letter */ 9 17 char (1) var, 9 18 2 EN_width fixed bin (31), /* width of EN in current font */ 9 19 2 eqn_refct fixed bin, /* equation reference counter */ 9 20 2 footref_fcs /* footnote ref FCS string */ 9 21 char (8) aligned, 9 22 2 ftn_reset char (8) var, /* footnote reset mode */ 9 23 2 ftnrefct fixed bin, /* footnote ref counter */ 9 24 2 hyph_size fixed bin (31), /* least word part size for hyphing */ 9 25 2 if_nest, /* if/then/else logic control */ 9 26 3 ndx fixed bin, /* depth of logic nest */ 9 27 3 e (25), /* nest entries */ 9 28 /* .if control switch */ 9 29 4 sw fixed bin, /* 0=off, 1=(then), -1=(else) */ 9 30 4 info aligned like text_entry.info, 9 31 4 line char (256) var, /* the control line */ 9 32 2 indctl, /* indent ctls stack */ 9 33 3 ndx fixed bin, /* current level */ 9 34 /* switch bits */ 9 35 3 stk (0:35) bit (1) unal, 9 36 2 input_dirname 9 37 char (168) var, /* dir containing current input file */ 9 38 2 input_filename 9 39 char (200) var, /* current input file name */ 9 40 2 lead fixed bin (31), /* current linespacing value */ 9 41 2 lit_count fixed bin (35), /* count of literal lines */ 9 42 2 next_pagenmbr 9 43 char (32) var, /* next page number / */ 9 44 2 output_file 9 45 char (32) var, /* output file identifier */ 9 46 2 pagecount fixed bin, /* number of pages produced */ 9 47 2 pagenum, /* page number structure */ 9 48 3 index fixed bin, /* level currently counting */ 9 49 ( 9 50 3 sep char (1) unal, /* separator chars */ 9 51 3 nmbr fixed bin (31), /* the counters */ 9 52 3 mode /* display modes */ 9 53 fixed bin (8) unal 9 54 ) dimension (20), 9 55 2 parameter char (254) var, /* command line parameter */ 9 56 2 param_pres bit (1), /* passed parameter flag */ 9 57 2 pass_counter 9 58 fixed bin, /* pass counter */ 9 59 2 picture, /* picture blocks */ 9 60 3 count fixed bin, /* number of them */ 9 61 3 space fixed bin (31), /* total picture space */ 9 62 3 blk (10), /* picture blocks */ 9 63 4 type char (4), /* type = page/col */ 9 64 4 place char (4), /* place = top/cen/bot */ 9 65 4 ptr ptr, /* pointer to block */ 9 66 4 size fixed bin (31), /* size of the picture */ 9 67 2 ptrs, 9 68 ( 3 aux_file_data_ptr, /* -> auxiliary file data */ 9 69 3 blank_footer_ptr, /* -> blank page footer */ 9 70 3 blank_header_ptr, /* -> blank page header */ 9 71 3 blank_text_ptr, /* -> blank page text */ 9 72 3 blkptr, /* -> active text */ 9 73 3 colptr, /* current column */ 9 74 3 compout_ptr, /* iocb pointer for output */ 9 75 3 compx_ptr, /* iocb pointer for compx file */ 9 76 3 ctb_ptr, /* current line artwork table */ 9 77 3 epftrptr, /* even page footer block */ 9 78 3 ephdrptr, /* even page header block */ 9 79 3 fcb_ptr, /* input file control block pointer */ 9 80 3 ftnblk_data_ptr, /* footnote block data pointer */ 9 81 3 footnote_header_ptr, /* footnote header "title" */ 9 82 3 graphic_page_ptr, /* graphic output page */ 9 83 3 hit_data_ptr, /* hit data pointer */ 9 84 3 htab_ptr, /* horizontal tab tables */ 9 85 3 hwrd_data_ptr, /* local hyphenation table */ 9 86 3 insert_ptr, /* data entry for current input file */ 9 87 3 opftrptr, /* odd page footer block */ 9 88 3 ophdrptr, /* odd page header block */ 9 89 3 ptb_ptr, /* previous line artwork table */ 9 90 3 spcl_blkptr, /* "special" block pointer */ 9 91 3 tbldata_ptr, /* table column data structure */ 9 92 3 tblkdata_ptr, /* text block data array */ 9 93 3 text_header_ptr /* empty text header structure */ 9 94 ) ptr, 9 95 2 scale, /* space conversion scale factors */ 9 96 3 horz fixed bin (31), /* horizontal */ 9 97 3 vert fixed bin (31), /* vertical */ 9 98 2 source_filename 9 99 char (200) var, /* current source file name */ 9 100 2 sws, /* switch bits */ 9 101 ( 3 bug_mode, /* debug mode */ 9 102 3 compout_not_headed, /* compout is not headed */ 9 103 3 end_input, /* EOF for current input file */ 9 104 3 end_output, /* no more output is wanted */ 9 105 3 firstpass, /* first pass over input */ 9 106 3 ftn_mode, /* in footnote mode */ 9 107 3 hyph_mode, /* hyphenating mode */ 9 108 3 inserting_hfc, /* inserting hdr, ftr, or cap */ 9 109 3 literal_mode, /* literal line mode flag */ 9 110 3 pageblock, /* blocks belong to page */ 9 111 3 picture_mode, /* building a picture */ 9 112 3 print_flag, /* producing output */ 9 113 3 purge_ftns, /* purging footnotes */ 9 114 3 suppress_footref, /* suppress next footnote ref */ 9 115 3 table_mode /* table mode */ 9 116 ) bit (1) unal, 9 117 3 MBZ bit (21) unal, 9 118 2 trans, /* trans table for .tr */ 9 119 3 in char (128) var, /* input chars */ 9 120 3 out char (128) var, /* output chars */ 9 121 2 widow_size fixed bin (31), /* widow size */ 9 122 2 widow_foot fixed bin (31); /* widow for footnotes */ 9 123 /* to save shared data between files/passes */ 9 124 dcl 1 save_shared aligned like shared based (const.save_shared_ptr); 9 125 9 126 dcl dot_addltr_symb_index 9 127 fixed bin static options (constant) init (12); 9 128 dcl max_text_lines fixed bin static options (constant) init (1000); 9 129 dcl mode_string char (16) static options (constant) 9 130 init ("arbihxocalaurlru"); 9 131 /* value overlays */ 9 132 dcl flag_value bit (1) based; 9 133 dcl num_value fixed bin (31) based; 9 134 9 135 /* END INCLUDE FILE comp_shared.incl.pl1 */ 3088 10 1 /* BEGIN INCLUDE FILE comp_table.incl.pl1 */ 10 2 10 3 /* format: style2,ind3,ll79,dclind4,idind15,comcol41,linecom */ 10 4 10 5 dcl 1 tbldata aligned based (shared.tbldata_ptr), 10 6 2 ct fixed bin, /* number of active table formats */ 10 7 2 ndx fixed bin, /* index of current active format */ 10 8 2 fmt (20), /* the format */ 10 9 3 name char (32) var, /* name of the format */ 10 10 3 ptr ptr; /* pointer to the format data */ 10 11 10 12 dcl tblfmtndx fixed bin; /* current table format index */ 10 13 dcl tblfmtptr ptr; /* -> current table format */ 10 14 /* table format data */ 10 15 dcl 1 tblfmt aligned based (tblfmtptr), 10 16 2 context bit (1), /* =1 if context mode */ 10 17 2 ccol fixed bin, /* the current table column */ 10 18 2 maxdepth fixed bin (31), /* max depth in table */ 10 19 2 ncols fixed bin, /* number of columns in this format */ 10 20 2 colptr (0:20) ptr; /* pointers to the columns */ 10 21 10 22 dcl tblcolndx fixed bin; /* current table column index */ 10 23 /* -> current table column */ 10 24 dcl tblcolptr ptr init (null ()); 10 25 /* table column data */ 10 26 dcl 1 tblcol aligned based (tblcolptr), 10 27 2 align, /* column alignment mode */ 10 28 3 posn fixed bin (31), 10 29 3 str char (32) var, 10 30 2 depth fixed bin (31), /* current depth for column */ 10 31 2 gutter fixed bin (31), 10 32 2 leader char (16) var, /* leadering string */ 10 33 2 margin, 10 34 3 left fixed bin (31), 10 35 3 right fixed bin (31), 10 36 2 valign bit (4) unal, /* vertical alignment flags */ 10 37 2 MBZ bit (29) unal, 10 38 2 parms /* parms for columns */ 10 39 aligned like default_parms; 10 40 10 41 dcl 1 tblcol0 aligned like tblcol based (tblfmt.colptr (0)); 10 42 /* -> previous table column */ 10 43 dcl prvtblcolptr ptr init (null ()); 10 44 dcl 1 prvtblcol like tblcol aligned based (prvtblcolptr); 10 45 10 46 dcl vtop bit (4) static options (constant) init ("1000"b); 10 47 dcl vcen bit (4) static options (constant) init ("0100"b); 10 48 dcl vbot bit (4) static options (constant) init ("0010"b); 10 49 dcl vjust bit (4) static options (constant) init ("0001"b); 10 50 10 51 /* END INCLUDE FILE comp_table.incl.pl1 */ 3089 11 1 /* BEGIN INCLUDE FILE comp_text.incl.pl1 */ 11 2 11 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 11 4 11 5 dcl 1 tblkdata /* data for allocated text blocks */ 11 6 aligned based (shared.tblkdata_ptr), 11 7 2 block, /* block pool */ 11 8 3 count fixed bin, 11 9 3 ptr (500) ptr, /* block pointers */ 11 10 /* block state flags */ 11 11 3 free (500) bit (1) unal, 11 12 2 line_area, /* line area pool */ 11 13 3 count fixed bin, 11 14 3 ptr (500) ptr, /* area pointers */ 11 15 /* area state flags */ 11 16 3 free (500) bit (1) unal, 11 17 2 text_area, /* text area pool */ 11 18 3 count fixed bin, 11 19 3 ptr (500) ptr, /* area pointers */ 11 20 /* area state flags */ 11 21 3 free (500) bit (1) unal, 11 22 3 string_area_count 11 23 fixed bin; /* line areas */ 11 24 dcl LINE_AREA_SIZE fixed bin static options (constant) init (24); 11 25 dcl line_area_ptr ptr init (null); 11 26 dcl 1 line_area aligned based (line_area_ptr), 11 27 2 next ptr, /* forward thread */ 11 28 2 prev ptr, /* backward thread */ 11 29 2 count fixed bin, /* number of lines allocated */ 11 30 2 ndx fixed bin, /* index of current line */ 11 31 2 pndx fixed bin, /* area pool index */ 11 32 2 linptr (LINE_AREA_SIZE) ptr; 11 33 /* text areas */ 11 34 dcl TEXT_AREA_SIZE fixed bin static options (constant) init (6); 11 35 dcl text_area_ptr ptr init (null); 11 36 dcl 1 text_area aligned based (text_area_ptr), 11 37 2 next ptr, /* forward thread */ 11 38 2 count fixed bin, /* number of areas allocated */ 11 39 2 ndx fixed bin, /* index of current strarea */ 11 40 2 pndx fixed bin, /* area pool index */ 11 41 2 strareaptr (TEXT_AREA_SIZE) ptr; 11 42 /* text string area */ 11 43 dcl string_area (256) fixed bin based; 11 44 dcl txtstrptr ptr; /* current text string */ 11 45 dcl txtstr char (1020) var based (txtstrptr); 11 46 11 47 dcl TEXT_VERSION fixed bin static options (constant) init (9); 11 48 /* general text block */ 11 49 dcl 1 text aligned based (shared.blkptr), 11 50 2 version fixed bin, /* version of structure */ 11 51 2 blkndx fixed bin, /* block data index */ 11 52 2 blktype char (2), /* block type code */ 11 53 /* dynamic block control stuff */ 11 54 2 hdr aligned like text_header, 11 55 /* text read from input file */ 11 56 2 input aligned like text_entry, 11 57 2 input_line char (1020) var,/* input buffer */ 11 58 2 line_area, 11 59 3 first ptr, /* head of line area thread */ 11 60 3 cur ptr, /* current line area */ 11 61 2 next_text ptr, /* next text string */ 11 62 /* text formatting parameters */ 11 63 2 parms aligned like default_parms, 11 64 2 text_area, 11 65 3 first ptr, /* head of text area thread */ 11 66 3 cur ptr; /* current text area */ 11 67 /* an empty text block line */ 11 68 dcl 1 text_entry aligned based (const.text_entry_ptr), 11 69 2 sws, /* unaligned switches, etc. */ 11 70 3 art bit (1) unal, /* line has artwork */ 11 71 3 cbar, /* change bar flags */ 11 72 4 add bit (1) unal, /* text addition flag */ 11 73 4 del bit (1) unal, /* text deletion flag */ 11 74 4 mod bit (1) unal, /* text modification flag */ 11 75 3 default bit (1) unal, /* 1 = default case as needed */ 11 76 3 DVctl bit (1) unal, /* 1 = line is a device ctl string */ 11 77 3 embedded bit (1) unal, /* 1 = line has an embedded control */ 11 78 3 end_keep bit (1) unal, /* 1= line ends a keep */ 11 79 3 fnt_chng bit (1) unal, /* 1 = text is a font change string */ 11 80 3 footref bit (1) unal, /* 1 = line has a footnote reference */ 11 81 3 hanging bit (1) unal, /* 1 = a hanging undent */ 11 82 3 keep bit (1) unal, /* 1 = unsplittable line */ 11 83 3 no_trim bit (1) unal, /* 1 = untrimmable white line */ 11 84 3 oflo bit (1) unal, /* line causes overflow */ 11 85 3 punct bit (1) unal, /* 1 = line ends with punctuation */ 11 86 3 quad bit (6) unal, /* text alignment flags */ 11 87 3 space_added /* 1= line has added space */ 11 88 bit (1) unal, 11 89 3 spcl, /* special entry - not output text */ 11 90 4 file bit (1) unal, /* 1= output to special file */ 11 91 4 blk_splt /* 1= action at block split time */ 11 92 bit (1) unal, 11 93 4 page_mkup /* 1= action at page makeup time */ 11 94 bit (1) unal, 11 95 3 table bit (1) unal, /* 1= line is a table entry */ 11 96 3 tblspc bit (1) unal, /* 1= WS fill for table mode */ 11 97 3 title bit (1) unal, /* 1= line is a <title> */ 11 98 3 unspnct bit (1) unal, /* 1= underscore punctuation */ 11 99 3 unstop bit (1) unal, /* 1= line is/ends with UNSTOP */ 11 100 3 unstrt bit (1) unal, /* 1= line is/ends with UNSTART */ 11 101 3 unswrds bit (1) unal, /* 1= underscore words only */ 11 102 3 white bit (1) unal, /* 1= line is white space */ 11 103 3 und_prot bit (1) unal, /* 1= undent is protected */ 11 104 3 MBZ bit (4) unal, 11 105 2 art_start fixed bin unal, /* start of art string in line */ 11 106 2 art_len fixed bin unal, /* length of art string in line */ 11 107 2 cbar_level /* change level for cbars */ 11 108 char (1) aligned, 11 109 2 cur, /* current scanning data for line */ 11 110 3 chrct fixed bin, /* count of chars scanned */ 11 111 3 gaps fixed bin, /* gap count */ 11 112 3 width fixed bin (31), /* width of font chars */ 11 113 3 min fixed bin (31), /* width of min spbnds */ 11 114 3 avg fixed bin (31), /* width of avg spbnds */ 11 115 3 max fixed bin (31), /* width of max spbnds */ 11 116 3 font like fntstk_entry, 11 117 2 depth fixed bin (31), /* page depth for line */ 11 118 /* font at start of line */ 11 119 2 font like fntstk_entry, 11 120 2 index fixed bin (21), /* char index for line scanning */ 11 121 2 info, /* stuff created during line input */ 11 122 3 fileno fixed bin, /* input file index */ 11 123 3 lineno fixed bin, /* input file line number */ 11 124 3 lineno0 fixed bin, /* call_box0 line number */ 11 125 2 linespace fixed bin (31), /* linespace value for the line */ 11 126 2 lmarg fixed bin (31), /* adjusted left margin position */ 11 127 2 mod_len fixed bin, /* length of modified text */ 11 128 2 mod_start fixed bin, /* index for start of modified text */ 11 129 2 net fixed bin (31), /* net line width for filling */ 11 130 2 ptr ptr, /* pointer to the actual text */ 11 131 2 rmarg fixed bin (31), /* adjusted right margin position */ 11 132 2 spcl_iocbp ptr, /* iocb ptr for spcl line */ 11 133 2 sym_delim char (1) unal, /* symbol delimiter for this line */ 11 134 2 tblcol fixed bin, /* column for table entries */ 11 135 2 title_delim 11 136 char (1) unal, /* title delimiter if a <title> */ 11 137 2 title_index 11 138 fixed bin, /* <title> block index for line */ 11 139 2 width fixed bin (31), /* width of text */ 11 140 2 ftn, /* footnote info for line */ 11 141 3 ct fixed bin, /* number of footnote refs */ 11 142 3 used fixed bin (31), /* space used */ 11 143 3 e (40), /* limit is arbitrary */ 11 144 4 blkndx fixed bin unal, /* block index of footnote - if this 11 145* value is 0, then .frf was used */ 11 146 4 refno fixed bin unal; /* reference number */ 11 147 11 148 dcl ( 11 149 quadi init ("40"b3), /* set to the inside margin */ 11 150 quado init ("20"b3), /* set to the outside margin */ 11 151 quadl init ("10"b3), /* set left */ 11 152 quadc init ("04"b3), /* set centered */ 11 153 quadr init ("02"b3), /* set right */ 11 154 just init ("01"b3) /* justified */ 11 155 ) bit (6) static options (constant); 11 156 /* control line structure */ 11 157 dcl 1 ctl aligned like text_entry based (const.ctl_ptr); 11 158 dcl ctl_line char (1020) var based (ctl.ptr); 11 159 11 160 dcl txtlinptr ptr; /* the current text line */ 11 161 dcl 1 txtlin aligned like text_entry based (txtlinptr); 11 162 /* empty text header structure */ 11 163 dcl 1 text_header aligned based (const.text_header_ptr), 11 164 2 sws, /* control switches */ 11 165 3 art bit (1) unal, /* block has artwork */ 11 166 3 dfrftn bit (1) unal, /* block is a deferred footnote */ 11 167 3 modified bit (1) unal, /* block contains modified lines */ 11 168 3 no_trim bit (1) unal, /* 1 = dont trim WS block */ 11 169 3 oflo_ftn bit (1) unal, /* overflow footnote */ 11 170 3 tblblk bit (1) unal, /* a table block */ 11 171 3 unref bit (1) unal, /* block is an unreffed footnote */ 11 172 3 white bit (1) unal, /* block is a white space block */ 11 173 3 picture bit (1) unal, /* picture block */ 11 174 3 orphan bit (1) unal, /* 1= footnote is an orphan */ 11 175 3 MBZ bit (26) unal, 11 176 2 art_count fixed bin unal, /* to count input art lines */ 11 177 2 blkptr ptr, /* pointer to suspended block */ 11 178 2 cap_size fixed bin unal, /* line count of text caption */ 11 179 2 cap_used fixed bin (31), /* size of text caption */ 11 180 2 colno fixed bin unal, /* column owning the block */ 11 181 2 count fixed bin unal, /* line count for block */ 11 182 2 eqn_line_count 11 183 fixed bin unal, /* counter for equation lines */ 11 184 2 first_text fixed bin unal, /* OBSOLETE */ 11 185 2 ftn, /* footnotes */ 11 186 3 ct fixed bin, /* count */ 11 187 3 usd fixed bin (31), /* space used */ 11 188 3 blkndx (40) fixed bin, /* footnote block index values */ 11 189 2 head_size fixed bin, /* line count of text header */ 11 190 2 head_used fixed bin (31), /* size of text header */ 11 191 2 index fixed bin unal, /* block index of next output line */ 11 192 2 keep_count fixed bin unal, /* to count input keep lines */ 11 193 2 last_line fixed bin, /* last text line in column */ 11 194 2 mx_ttl_ndx fixed bin, /* max title index value in block */ 11 195 2 name char (32) var, /* block name, if any */ 11 196 2 nofill_count /* to count nofill lines */ 11 197 fixed bin, 11 198 2 parms_ptr ptr, /* parms for suspended block */ 11 199 2 refer fixed bin, /* inter-block reference */ 11 200 2 refer_index /* OBSOLETE */ 11 201 fixed bin, /* a reference */ 11 202 2 split fixed bin, /* split point for balancing */ 11 203 2 trl_ws fixed bin (31), /* trailing WS */ 11 204 2 used fixed bin (31); /* page space used by a column/block */ 11 205 /* text formatting parameters */ 11 206 dcl 1 text_parms aligned like default_parms 11 207 based (const.text_parms_ptr); 11 208 11 209 dcl 1 current_parms 11 210 aligned like default_parms 11 211 based (const.current_parms_ptr); 11 212 11 213 dcl 1 default_parms 11 214 aligned based (const.default_parms_ptr), 11 215 2 sws, /* control switches */ 11 216 3 quad bit (6) unal, /* text alignment mode */ 11 217 3 art bit (1) unal, /* 1 = block countains artwork */ 11 218 3 cbar, /* change bar flags */ 11 219 4 add bit (1) unal, /* text addition flag */ 11 220 4 del bit (1) unal, /* text deletion flag for next line */ 11 221 4 mod bit (1) unal, /* text modification flag */ 11 222 3 fill_mode 11 223 bit (1) unal, /* 1 = fill mode ON */ 11 224 3 footnote bit (1) unal, /* block is a footnote */ 11 225 3 hfc bit (1) unal, /* OBSOLETE */ 11 226 3 htab_mode 11 227 bit (1) unal, /* 1 = horizontal tab mode ON */ 11 228 3 keep bit (1) unal, /* keep mode */ 11 229 3 page bit (1) unal, /* block belongs to page, not text */ 11 230 3 title_mode 11 231 bit (1) unal, /* 0 = plain text, 1 = <title>s OK */ 11 232 3 MBZ bit (19) unal, 11 233 2 ftrptr ptr, /* text caption block */ 11 234 2 cbar_level /* change level for cbars */ 11 235 char (1) aligned, 11 236 2 hdrptr ptr, /* text header block */ 11 237 2 left, /* left margin data */ 11 238 3 indent fixed bin (31), 11 239 3 undent fixed bin (31), 11 240 2 linespace fixed bin (31), /* line spacing value */ 11 241 2 measure fixed bin (31), /* line space for text */ 11 242 /* right margin data */ 11 243 2 right like default_parms.left, 11 244 2 fntstk, /* stack of last 20 font changes */ 11 245 3 index fixed bin, /* which one in use */ 11 246 /* entry(0) is the default */ 11 247 3 entry (0:19) like fntstk_entry; 11 248 11 249 dcl hfcblk_ptr ptr; 11 250 dcl 1 hfcblk aligned like text based (hfcblk_ptr); 11 251 11 252 /* END INCLUDE FILE comp_text.incl.pl1 */ 3090 12 1 /* BEGIN INCLUDE FILE - comp_dvt.incl.pl1 */ 12 2 12 3 /* Written: 9/80 - JA Falksen 12 4*/* Modified: 11/81 - EJW - Added comp_dvt.displayproc 12 5*/* Modified: 1/82 - EJW - Added length arg to comp_dvt.displayproc 12 6*/* Modified: 2/82 - EJW - Deleted ptr arg from comp_dvt.displayproc 12 7*/* Modified: 3/83 - EJW - Changed footref arg of comp_dvt.footproc to 12 8* (3) char (*) var. Version 4. */ 12 9 /* Modified: 6/83 - EJW - Added error print control switch to calling 12 10* sequence for comp_dvt.displayproc. - Version 5. 12 11*/* Modified: 11/84 - EJW - Renamed no_adjust to justifying. 12 12**/ 12 13 12 14 /* All names which end in "_r"are offset values within the device table */ 12 15 /* segment. The version of this structure is in comp_dvid.incl.pl1 */ 12 16 12 17 /* format: style2,ind3,ll79,dclind4,idind15,comcol41,linecom */ 12 18 12 19 dcl 1 comp_dvt aligned based (const.devptr), 12 20 2 devclass char (32), /* what general kind of device is */ 12 21 /* this, currently available: */ 12 22 /* "printer" (includes terminals), */ 12 23 /* "braille", "bitmap" */ 12 24 2 outproc entry /* page output processor */ 12 25 (fixed bin, /* function - 0=build */ 12 26 /* 1=init page */ 12 27 /* 2=init file */ 12 28 /* 3=cleanup */ 12 29 fixed bin (35)),/* error code */ 12 30 2 footproc entry /* footnote reference proc */ 12 31 ((3) char (*) var, 12 32 /* reference string (IN/OUT) */ 12 33 ptr), /* comp_dvt_p (IN) */ 12 34 2 artproc entry (), /* artwork proc */ 12 35 /* dont know how to describe yet */ 12 36 2 displayproc 12 37 entry /* string display interpreter */ 12 38 (char (*) var, /* raw input string */ 12 39 fixed bin (24), /* chars used in this call */ 12 40 bit (1)) /* 1= dont show display errors */ 12 41 returns (char (*) var), 12 42 /* interpreted output string */ 12 43 /* following values are in millipoints */ 12 44 2 min_WS fixed bin (31), /* minimum whitespace */ 12 45 2 min_lead fixed bin (31), /* minimun lead */ 12 46 2 vmt_min fixed bin (31), /* min usable .vmt */ 12 47 2 vmb_min fixed bin (31), /* min usable .vmb */ 12 48 2 def_vmt fixed bin (31), /* default .vmt */ 12 49 2 def_vmh fixed bin (31), /* default .vmh */ 12 50 2 def_vmf fixed bin (31), /* default .vmf */ 12 51 2 def_vmb fixed bin (31), /* default .vmb */ 12 52 2 pdw_max fixed bin (31), /* max page width available */ 12 53 2 pdl_max fixed bin (31), /* max page length available, */ 12 54 /* (0 = unlimited) */ 12 55 2 upshift fixed bin (31), /* footnote reference shift */ 12 56 2 init_ps fixed bin (31), /* initial pointsize (millipoints) */ 12 57 2 lettersp fixed bin (31), /* max letterspacing */ 12 58 2 max_pages fixed bin, /* max pages/"file" -1 ->unlimited */ 12 59 2 max_files fixed bin, /* max "files"/reel -1 ->unlimited */ 12 60 2 init_fam fixed bin, /* initial family index */ 12 61 2 init_mem fixed bin, /* initial member index */ 12 62 2 foot_fam fixed bin, /* initial foot family index */ 12 63 2 foot_mem fixed bin, /* initial foot member index */ 12 64 2 init_family 12 65 char (32), /* initial font family to use */ 12 66 2 init_member 12 67 char (32), /* initial font member to use */ 12 68 ( /* the following are offsets */ 12 69 2 atd_r, /* attach desc for on-line output */ 12 70 2 dvc_r, /* device control table relptr */ 12 71 2 comment_r, /* comment string relptr */ 12 72 2 cleanup_r, /* "cleanup" string relptr */ 12 73 2 medsel_table_r /* media select table relptr */ 12 74 ) bit (18) aligned, 12 75 2 foot_family 12 76 char (32), /* family for footnote reference */ 12 77 2 foot_member 12 78 char (32), /* member for footnote reference */ 12 79 /* if one was specified */ 12 80 2 sws unaligned, 12 81 3 interleave /* 0- page block has lines in column */ 12 82 bit (1), /* order left-to-right */ 12 83 /* 1- page block has lines in line */ 12 84 /* order top-to-bottom */ 12 85 3 justifying /* 1- device justifies lines */ 12 86 bit (1), 12 87 3 mbz bit (24), 12 88 3 endpage bit (9), /* EOP char if not "0"b */ 12 89 2 open_mode fixed bin (35), /* when going to a file */ 12 90 2 recleng fixed bin, /* length of tape records */ 12 91 2 family_ct fixed bin, /* # families present */ 12 92 2 family (comp_dvt.family_ct), 12 93 /* families of fonts defined */ 12 94 3 member_r bit (18) aligned, 12 95 /* member table relptr */ 12 96 3 name char (32); /* family name */ 12 97 12 98 12 99 /* The usage formula for units: */ 12 100 /* */ 12 101 /* rel_units * length_in_points */ 12 102 /* ---------------------------- = length_in_units */ 12 103 /* points_per_EM */ 12 104 12 105 /* END INCLUDE FILE comp_dvt.incl.pl1 */ 3091 3092 /* DISORDER DUE TO SYMBOL TABLE SIZE LIMIT */ 13 1 /* BEGIN INCLUDE FILE comp_tree.incl.pl1 */ 13 2 13 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 13 4 13 5 dcl 1 tree /* symbol tree structure */ 13 6 based (const.tree_ptr) aligned, 13 7 ( 2 align_mode, /* current text alignment mode */ 13 8 2 art_mode, /* artwork mode */ 13 9 2 block_index, /* current block index */ 13 10 2 block_name, /* name of current block */ 13 11 2 bottom_margin, /* page bottom margin */ 13 12 2 calling_file_name, /* caller of inserted file */ 13 13 2 callers_lineno, /* lineno of .ifi in calling file */ 13 14 2 devclass, /* DeviceClass */ 13 15 2 devname, /* DeviceName */ 13 16 2 dot_addltr, /* add letter of dot page */ 13 17 2 equation_mode, /* equation mode */ 13 18 2 fill_mode, /* text filling mode */ 13 19 2 fontname, /* fontname function */ 13 20 2 footer_margin, /* page footer margin function */ 13 21 2 frontpage, /* front page flag function */ 13 22 2 head_space, /* head space function */ 13 23 2 header_margin, /* page header margin function */ 13 24 2 keep_mode, /* block splitting mode */ 13 25 2 left_indent, /* left margin indention */ 13 26 2 left_undent, /* left margin adjustment */ 13 27 2 line_input, /* line input function */ 13 28 2 linesleft, /* lines left function */ 13 29 2 linespace, /* linespace function */ 13 30 2 measure_bif, /* measure function */ 13 31 2 next_pageno, /* next page number */ 13 32 2 pagecount, /* total page count function */ 13 33 2 pagelines, /* line number on page function */ 13 34 2 page_length, /* current page length function */ 13 35 2 pageno, /* page number function */ 13 36 2 pointsize, /* pointsize function */ 13 37 2 right_indent, /* right margin indention */ 13 38 2 right_undent, /* right margin adjustment */ 13 39 2 symbol_delimiter, /* symbol delimiter function */ 13 40 2 text_depth, /* text depth function */ 13 41 2 text_lineno, /* input file line number for output_line */ 13 42 2 text_width, /* text width function */ 13 43 2 title_delimiter, /* title delimiter function */ 13 44 2 top_margin, /* page top margin function */ 13 45 2 trans, /* translation table for .trf */ 13 46 2 userinput /* terminal insert function */ 13 47 ) label, /**/ 13 48 /* VARIABLE TABLES */ 13 49 2 count fixed bin, /* variable areas allocated */ 13 50 2 areandx fixed bin, /* current area */ 13 51 /* entry count per area */ 13 52 2 entry_ct (MAX_TREE_AREAS) fixed bin, 13 53 2 entryndx fixed bin, /* current entry in area */ 13 54 ( /* storage area pointers */ 13 55 2 flag_ptr, /* flags */ 13 56 2 name_ptr, /* names */ 13 57 2 num_ptr, /* number values */ 13 58 2 incr_ptr, /* counter increments */ 13 59 2 var_ptr /* variable structures */ 13 60 ) ptr dimension (MAX_TREE_AREAS); 13 61 /* flag values */ 13 62 dcl tree_flags (MAX_TREE_AREA_CT) bit (1) aligned 13 63 based (tree.flag_ptr (tree.areandx)); 13 64 /* counter increment values */ 13 65 dcl tree_incrs (MAX_TREE_AREA_CT) fixed bin (31) 13 66 based (tree.incr_ptr (tree.areandx)); 13 67 /* variable names */ 13 68 dcl tree_names_ptr ptr init (null); 13 69 dcl tree_names (MAX_TREE_AREA_CT) char (32) unal 13 70 based (tree_names_ptr); 13 71 /* numeric values */ 13 72 dcl tree_nums (MAX_TREE_AREA_CT) fixed bin (31) 13 73 based (tree.num_ptr (tree.areandx)); 13 74 13 75 dcl tree_var_ptr ptr init (null);/* variable entry structures */ 13 76 dcl 1 tree_var (MAX_TREE_AREA_CT) aligned based (tree_var_ptr), 13 77 2 flags bit (9) aligned,/* type flags */ 13 78 2 mode fixed bin, /* numeric display mode */ 13 79 2 flag_loc ptr, /* flag value pointer */ 13 80 2 num_loc ptr, /* num value pointer */ 13 81 2 incr_loc ptr, /* num increment pointer */ 13 82 2 str_loc ptr; /* str value pointer */ 13 83 13 84 /* END INCLUDE FILE comp_tree.incl.pl1 */ 3093 14 1 /* BEGIN INCLUDE FILE compstat.incl.pl1 - external static data for compose 14 2* 14 3* This storage is converted from external (as declared) to internal by the 14 4* binder and contains items that must be accessible to both the bound and 14 5* unbound program. */ 14 6 14 7 /* Written: ??/??/7? - EJW 14 8* Modified: 10/18/84 - EJW - (First recorded change) Added current_parms_ptr 14 9* and removed the codes array; version 6. 14 10**/ 14 11 14 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 14 13 14 14 dcl 1 compstat$compconst 14 15 aligned like const ext static; 14 16 14 17 dcl const_version fixed bin (35) static options (constant) init (6); 14 18 dcl MAX_TREE_AREA_CT /* entries in a tree area */ 14 19 fixed bin static options (constant) init (80); 14 20 dcl MAX_TREE_AREAS /* number of tree areas */ 14 21 fixed bin static options (constant) init (20); 14 22 14 23 dcl 1 const aligned based (compstat$compconst.ptr), 14 24 2 ptr ptr, /* self pointer - MUST BE FIRST */ 14 25 2 version fixed bin (35), /* structure version */ 14 26 2 art_symbols /* string of art symbols */ 14 27 char (28) aligned, 14 28 2 builtin_count /* count of builtin variables */ 14 29 fixed bin, 14 30 2 comp_dir char (200), /* dir in which compose lives */ 14 31 2 comp_version 14 32 char (8) var, /* compose version id */ 14 33 2 date_value char (8) var, /* current date */ 14 34 2 dsm_name char (32), /* device support module name */ 14 35 2 dvt_name char (32), /* device table name */ 14 36 2 max_seg_chars 14 37 fixed bin (35), /* char count in a max seg */ 14 38 2 null_str char (1) var, /* an empty string */ 14 39 2 ptrs, 14 40 ( 3 call_stk_ptr, /* -> insert call stack */ 14 41 3 colhdrptr, /* empty column header structure */ 14 42 3 ctl_ptr, /* input line structure */ 14 43 3 current_parms_ptr, /* current formatting parms */ 14 44 3 default_parms_ptr, /* default initial text parms */ 14 45 3 devptr, /* -> comp_dvt structure */ 14 46 3 dvidptr, /* -> comp_dvid structure */ 14 47 3 errblk_ptr, /* error message block pointer */ 14 48 3 footnote_parms_ptr, /* footnote formatting parms */ 14 49 3 fnttbldata_ptr, /* -> font table data */ 14 50 3 global_area_ptr, /* per invocation storage */ 14 51 3 init_page_parms_ptr, /* default initial page parms */ 14 52 3 insert_data_ptr, /* insert file data block */ 14 53 3 local_area_ptr, /* per file storage */ 14 54 3 loctbl_ptr, /* for font copying */ 14 55 3 option_ptr, /* program options block */ 14 56 3 outproc_ptr, /* device writer for cleanup */ 14 57 3 page_ptr, /* active page structure */ 14 58 3 page_header_ptr, /* empty page header structure */ 14 59 3 page_parms_ptr, /* page formatting parameter block */ 14 60 3 save_shared_ptr, /* saved shared data */ 14 61 3 shared_ptr, /* shared data structure */ 14 62 3 text_entry_ptr, /* empty text entry structure */ 14 63 3 text_header_ptr, /* empty text header structure */ 14 64 3 text_parms_ptr, /* main body formatting parms */ 14 65 3 tree_ptr /* symbol tree structure */ 14 66 ) ptr, 14 67 2 time_value char (6) var; /* time at start */ 14 68 14 69 /* Other external */ 14 70 dcl ( 14 71 ioa_, 14 72 ioa_$nnl 14 73 ) entry options (variable); 14 74 dcl iox_$error_output 14 75 ptr ext static, /* iocb pointer for error_output */ 14 76 iox_$user_input 14 77 ptr ext static, /* iocb pointer for user_input */ 14 78 iox_$user_output 14 79 ptr ext static; /* iocb pointer for user_output */ 14 80 dcl sys_info$max_seg_size 14 81 fixed bin (18) ext static; 14 82 14 83 /* END INCLUDE FILE compstat.incl.pl1 */ 3094 3095 3096 end comp_make_page_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/23/85 0910.2 comp_make_page_.pl1 >spec>online>comp>comp_make_page_.pl1 3080 1 04/23/85 0912.1 comp_brktypes.incl.pl1 >spec>online>comp>comp_brktypes.incl.pl1 3081 2 04/23/85 0912.2 comp_column.incl.pl1 >spec>online>comp>comp_column.incl.pl1 3082 3 03/01/85 1411.8 comp_ctl_index.incl.pl1 >ldd>include>comp_ctl_index.incl.pl1 3083 4 03/01/85 1411.9 comp_entries.incl.pl1 >ldd>include>comp_entries.incl.pl1 3084 5 03/01/85 1412.0 comp_fntstk.incl.pl1 >ldd>include>comp_fntstk.incl.pl1 3085 6 03/01/85 1412.0 comp_footnotes.incl.pl1 >ldd>include>comp_footnotes.incl.pl1 3086 7 03/01/85 1412.0 comp_option.incl.pl1 >ldd>include>comp_option.incl.pl1 3087 8 04/23/85 0912.4 comp_page.incl.pl1 >spec>online>comp>comp_page.incl.pl1 3088 9 03/01/85 1412.0 comp_shared.incl.pl1 >ldd>include>comp_shared.incl.pl1 3089 10 03/01/85 1412.0 comp_table.incl.pl1 >ldd>include>comp_table.incl.pl1 3090 11 04/23/85 0912.6 comp_text.incl.pl1 >spec>online>comp>comp_text.incl.pl1 3091 12 03/01/85 1411.9 comp_dvt.incl.pl1 >ldd>include>comp_dvt.incl.pl1 3093 13 03/01/85 1412.0 comp_tree.incl.pl1 >ldd>include>comp_tree.incl.pl1 3094 14 03/01/85 1412.1 compstat.incl.pl1 >ldd>include>compstat.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. add 1 based bit(1) level 4 packed unaligned dcl 11-161 ref 664 712 904 1244 1277 1315 1319 1405 1461 1539 1557 addr builtin function dcl 120 ref 850 850 940 940 1183 1183 1217 1217 1447 1447 1761 1761 1791 1791 2300 2300 2711 2711 2840 2840 2856 2856 2947 2947 2966 2966 art based bit(1) level 3 in structure "txtlin" packed unaligned dcl 11-161 in procedure "comp_make_page_" set ref 559* art 4 based bit(1) level 4 in structure "block" packed unaligned dcl 36 in procedure "comp_make_page_" ref 474 bal 14 based bit(1) level 4 packed unaligned dcl 8-11 ref 138 bal_sw 000102 automatic bit(1) unaligned dcl 28 set ref 138* 170* 230 258 404 442 785 982 1115 1126 1613 1716 1942 2012 2043 balblk 316 based fixed bin(17,0) level 3 in structure "locol" dcl 3075 in procedure "comp_make_page_" set ref 2102* 2212 2215 balblk 316 based fixed bin(17,0) level 3 in structure "newcol" dcl 3076 in procedure "comp_make_page_" ref 2805 balblk 316 based fixed bin(17,0) level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 205 427* 2071* 2074* 2145* balblk 316 based fixed bin(17,0) level 3 in structure "col0" dcl 2-37 in procedure "comp_make_page_" set ref 2109* baldepth 317 based fixed bin(31,0) level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 220 238* 238* 254 323* 323* 413* 434* 487* 487 2072* 2074* 2074* 2377* baldepth 16 based fixed bin(31,0) level 3 in structure "page" dcl 8-11 in procedure "comp_make_page_" set ref 170* 170* 230* 230* 394 434 434* 492* 492 2048* 2072 2139* 2139* baldepth 317 based fixed bin(31,0) level 3 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2789* 2789* 3032* 3032* balftn 320 based structure level 3 in structure "locol" dcl 3075 in procedure "comp_make_page_" balftn 320 based structure level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 207 763 816 1489 2070* balftn 2 based structure level 2 in structure "colhdr" dcl 2-21 in procedure "comp_make_page_" balftn 320 based structure level 3 in structure "newcol" dcl 3076 in procedure "comp_make_page_" balftn 320 based structure level 3 in structure "col0" dcl 2-37 in procedure "comp_make_page_" set ref 2047* balnet 000100 automatic fixed bin(31,0) dcl 26 set ref 225* 267* 276* 276 287 287* 289* 298 298* 303* 303* 311* 748 748 792 balusd 372 based fixed bin(31,0) level 3 in structure "locol" dcl 3075 in procedure "comp_make_page_" set ref 2103* 2267 balusd 17 based fixed bin(31,0) level 3 in structure "page" dcl 8-11 in procedure "comp_make_page_" set ref 170* 170* 194 230* 230* 2049* 2107* 2139* 2139* balusd 000101 automatic fixed bin(31,0) dcl 27 in procedure "comp_make_page_" set ref 267* 272* 272 287 289 balusd 372 based fixed bin(31,0) level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 206 220 238* 238* 254 323* 323* 762 815 1488 2059* 2067* bin builtin function dcl 120 ref 220 254 289 394 497 827 1782 1845 1861 2549 2549 blk 3646 based structure array level 3 dcl 9-7 blk_mod 000105 automatic bit(1) unaligned dcl 31 set ref 620* 712* 712 1277* 1277 1315* 1315 1461* 1461 1557* 1557 1674 blk_split 000106 automatic bit(1) array unaligned dcl 32 set ref 148* 1155 1795* 2363* blk_splt 3(01) based bit(1) level 4 packed unaligned dcl 11-161 ref 540 645 1208 blkct 373 based fixed bin(17,0) level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 175* 238* 323* 336 336 422 510 523 625 1469 1671 1756 1861* 1861 1869* 1932* 2071 2074* 2145* blkct 373 based fixed bin(17,0) level 3 in structure "locol" dcl 3075 in procedure "comp_make_page_" ref 2232 2237 2241 blkct 373 based fixed bin(17,0) level 3 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2789* 2825 2828 2861* 2861 2878* 2878 2894 3032* blkftnct 000103 automatic fixed bin(17,0) dcl 29 set ref 479* 559 634* 664 772* 885* 904 930 1244 1319 1405 1429 1499 1526 1539 1566 1581* 1839 2405* 2439* 2460* 2489* 2489 2510* 2604* 2604 2612* 2645 2676 2698* 2698 2759* 2759 blkftnusd 000104 automatic fixed bin(31,0) dcl 30 set ref 479* 559* 559* 559 559 611* 634* 664* 664* 664 664 718 771* 827 827 885* 904* 904* 904 904 1244* 1244* 1244 1244 1319* 1319* 1319 1319 1405* 1405* 1405 1405 1500 1526* 1526* 1526 1526 1539* 1539* 1539 1539 1582* 1840 2405* 2405* 2405 2405 2439* 2439* 2439 2439 2460* 2460* 2460 2460 2510* 2510* 2510 2510 2605* 2605 2612* 2612* 2612 2612 2645 2645 2645 2645 2676 2676 2676 2676 2699* 2699 blkndx 2 000222 automatic fixed bin(17,0) array level 2 in structure "dfrftn" dcl 51 in procedure "comp_make_page_" set ref 2434* 2505* 2738* 3013 3016 3018 3022 3026* blkndx 1 based fixed bin(17,0) level 2 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" set ref 2553* blkndx 16 based fixed bin(17,0) array level 4 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" set ref 1825* 1856 blkndx 377 based fixed bin(17,0) array level 4 in structure "col0" dcl 2-37 in procedure "comp_make_page_" set ref 3016* blkndx 207 based fixed bin(17,0) array level 4 in structure "olin" packed unaligned dcl 1752 in procedure "push_oflo" ref 1817 1820 1825 blkndx 16 based fixed bin(17,0) array level 4 in structure "block" dcl 36 in procedure "comp_make_page_" set ref 2418 2434 2435 3018* blkndx 2 000144 automatic fixed bin(17,0) array level 2 in structure "colftn" dcl 45 in procedure "comp_make_page_" set ref 2610* 2702* blkndx 314 000010 internal static fixed bin(17,0) initial array level 3 in structure "oflo" dcl 80 in procedure "comp_make_page_" set ref 1825* 1856* 2168 2874 blkndx 1 based fixed bin(17,0) level 2 in structure "block" dcl 36 in procedure "comp_make_page_" set ref 379* blkndx 377 based fixed bin(17,0) array level 4 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2869* 2869 2874* blkndx 207 based fixed bin(17,0) array level 4 in structure "txtlin" packed unaligned dcl 11-161 in procedure "comp_make_page_" set ref 1909* 2479 2482 2500 2505 2932 3022* blkno 000107 automatic fixed bin(17,0) dcl 33 set ref 2210* 2212* 2213 2215 2231 2232 blkptr based pointer array level 2 in structure "col0" dcl 2-37 in procedure "comp_make_page_" ref 189 1889 2277 3001 3001 3003 3003 3005 3018 3018 blkptr based pointer array level 2 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 340 420* 423* 423 425* 976 1846 1847* blkptr 3752 based pointer level 3 in structure "shared" dcl 9-7 in procedure "comp_make_page_" set ref 2300* 2305 2840* 2842 2856* 2858 2988* blkptr 2 000010 internal static pointer initial array level 2 in structure "oflo" dcl 80 in procedure "comp_make_page_" set ref 1758 1761 1761 1782* 1782 1783* 1791* 1793 1846* 2184* 2348* 2812 2856 2856 2890 blkptr based pointer array level 2 in structure "locol" dcl 3075 in procedure "comp_make_page_" set ref 2213 2231* 2233* 2233 2241 blkptr 2 based pointer array level 2 in structure "ftnblk_data" dcl 6-5 in procedure "comp_make_page_" set ref 1820 1893 1893 1900 1904 1905 1906 2169 2169* 2174 2351 2423 2435 2472 2483 2500 2711* 2714 2934 2939 2953 3013 blkptr based pointer array level 2 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2807 2807 2817 2817 2829* 2829 2858* 2892* 2894* blkptr 000112 automatic pointer dcl 35 in procedure "comp_make_page_" set ref 147* 340* 342 348 355 355 358 366 367 373 373 377 379 379 379 379 379 379 379 379 379 379 379 379 379 379 401 401 401 407 407 412 417 445 455 455 455 455 468 474 474 474* 497 497 497 504 507 516 516 516 516 516 516 516 534 537 583 583 586 595 598 598 604 607 610 611 621 625 625 625 625 625 625 641 641 748 748 770 771 772 792 799 799 834 837 845 845 862 1150 1158 1164 1173 1183* 1217* 1236 1504 1588 1592 1595 1600 1602 1602 1602 1602 1671 1768 1791 1791 1797 1807 1837 1838 1839 1840 1841 2413 2418 2430 2430 2434 2435 2549 2549 2558 blktype 2 based char(2) level 2 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" set ref 2895* blktype 2 based char(2) level 2 in structure "text" dcl 11-49 in procedure "comp_make_page_" ref 2807 blktype 2 based char(2) level 2 in structure "block" dcl 36 in procedure "comp_make_page_" set ref 379* 474 604 2549 2558 2812 2817 blkusd 000110 automatic fixed bin(31,0) dcl 34 set ref 479* 553* 553 559* 559* 559 559 610* 634* 641 661* 661 664* 664* 664 664 718 770* 792 792 827 837* 859 885* 901* 901 904* 904* 904 904 960* 985 1244 1244 1244 1244 1301* 1301 1319 1319 1319 1319 1402* 1402 1405* 1405* 1405 1405 1497 1523* 1523 1526* 1526* 1526 1526 1539* 1539* 1539 1539 1579* 1602 1602 1838 2405 2405 2439 2439 2460 2460 2510 2510 2612 2612 2645 2645 2676 2676 block based structure level 1 dcl 36 block_break 000117 constant fixed bin(17,0) initial dcl 1-9 set ref 430 1478 2844* 2860* break_type parameter fixed bin(17,0) dcl 19 ref 14 138 138 145 170 430 1100 1100 1115 1123 1478 1701 1716 1716 1914 1990 1990 2012 2043 2043 2988 breaks 000001 constant char(4) initial array unaligned dcl 38 set ref 170* bug_mode 4113 based bit(1) level 3 packed unaligned dcl 9-7 ref 129 bug_sw 000114 automatic bit(1) unaligned dcl 40 set ref 129* 167 227 278 303 313 323 379 407 455 546 559 654 664 757 810 904 991 1006 1025 1032 1051 1106 1131 1211 1244 1319 1405 1483 1526 1539 1602 1653 1706 1768 1869 1932 1979 2074 2089 2136 2200 2220 2261 2324 2390 2405 2439 2460 2510 2553 2569 2590 2612 2627 2645 2676 2704 2745 2750 2760 2789 3032 cap_count 000115 automatic fixed bin(17,0) dcl 41 set ref 1161* 1164 1164* 1164 cap_size 10 based fixed bin(17,0) level 3 packed unaligned dcl 36 ref 516 625 799 1158 1164 cap_used 11 based fixed bin(31,0) level 3 dcl 36 ref 516 625 cbar 1 based structure level 3 dcl 11-161 ceil builtin function dcl 120 ref 289 char builtin function dcl 120 ref 2945 2959 2976 cleanup 000634 stack reference condition dcl 123 ref 155 2361 col based structure level 1 dcl 2-5 col0 based structure level 1 dcl 2-37 col_count 20 based fixed bin(17,0) level 3 dcl 8-11 set ref 200 394 417 484 484 1123 1613 2019* 2021* 2100 2195 2206 2317 2365* 2887* 2887 col_index 21 based fixed bin(17,0) level 3 dcl 8-11 set ref 131 131 138 145 175* 202* 1092* 1693* 2019* 2021* 2022 2051* 2052 2055 2074* 2084* 2086* 2087 2125 2145* 2207* 2838* 2846* 2854* coldepth 000116 automatic fixed bin(31,0) dcl 42 set ref 218* 220* 254* 379* 379* 394 394 413 434 467 470 471* 471 487 492 575 575 580 950* 953 956 968* 1150* 1150 1203* 1432* 1456* 1585* 1768* 1768* 1863 1918 1932* 1932* 2197 2284 coldisc 000117 automatic fixed bin(31,0) array dcl 44 set ref 198* 379* 379* 534* 976* 980* 1000 1006 1006 1006* 1006* 1016 1020 1025* 1025* 1595* 1600* 1602 1602 1602* 1602* 1617 1618 1624 1627 1631 1768* 1768* 1869* 1869* 1932* 1932* 1948 1955 1959 2237 2261* 2261* 2265 2267 2272 2273 colftn 000144 automatic structure level 1 unaligned dcl 45 set ref 207* 613 639 729* 763* 816* 832* 1073 1489* 1501 1584* 1866 1919 colhdr based structure level 1 dcl 2-21 colhdrusd 000216 automatic fixed bin(31,0) dcl 46 set ref 209* 211* colnet 000217 automatic fixed bin(31,0) dcl 47 set ref 225* 238* 238* 298* 311* 318* 323* 323* 445 501 504 507 516 523 598 754 757 757 780 799 807 810 810 837 893 944 1194 1293 1441 1452 1474 1478 1483 1483 1514 1574 1932* 1932* 2561 2565 2586 2596 2658 2666 colno 12 based fixed bin(17,0) level 3 in structure "ofloblk" packed unaligned dcl 92 in procedure "comp_make_page_" set ref 2896* colno 12 based fixed bin(17,0) level 3 in structure "text" packed unaligned dcl 11-49 in procedure "comp_make_page_" set ref 1906* colptr 4 based pointer array level 2 in structure "tblfmt" dcl 10-15 in procedure "comp_make_page_" ref 1802 colptr 3754 based pointer level 3 in structure "shared" dcl 9-7 in procedure "comp_make_page_" set ref 131 131 131 131 175 175 175 175 175 175 175 175 175 175 175 175 175 203* 205 206 207 209 209 218 220 220 220 225 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 254 254 254 298 318 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 336 336 340 412 412 413 420 422 423 423 425 427 434 501 504 510 516 523 523 523 598 598 598 607 607 625 718 718 725 725 748 748 748 748 762 763 792 792 792 792 799 815 816 893 976 1000 1073 1075 1093* 1096 1096 1096 1194 1469 1474 1488 1489 1514 1618 1671 1680 1694* 1697 1697 1697 1713* 1714 1739 1756 1846 1847 1861 1861 1862 1863 1864 1865 1866 1869 1869 1869 1869 1869 1869 1869 1869 1869 1917 1918 1919 1928 1930 1932 1932 1932 1932 1932 2022* 2052* 2053 2058 2058 2059 2059 2064 2064 2067 2067 2070 2070 2071 2071 2072 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2087* 2125* 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2208* 2284 2383 2384 2704 2839* 2847* 2855* cols 14 based structure level 3 dcl 8-11 column_break constant fixed bin(17,0) initial dcl 1-9 ref 138 1123 1716 2043 column_ptr 42 based pointer array level 2 dcl 8-11 ref 189 203 270 284 284 318 318 318 318 394 430 487 487 799 799 1012 1035 1093 1474 1474 1623 1637 1694 1713 1889 1930 1946 1953 1965 1998 2022 2035 2036 2039 2040 2047 2047 2052 2064 2064 2087 2101 2109 2125 2195 2197 2208 2277 2318 2322 2377 2787 2847 2995 2995 2998 2998 2999 2999 3001 3001 3003 3003 3005 3016 3016 3018 3018 colusd 000220 automatic fixed bin(31,0) dcl 48 set ref 206* 379* 379* 379 379 497 556* 556 559* 559* 559 559 612 638 662* 662 664* 664* 664 664 725 728* 748 762* 780 783* 792 792 815* 831* 893 902* 902 904* 904* 904 904 944 1000 1194 1244 1244 1244 1244 1293 1302* 1302 1319 1319 1319 1319 1403* 1403 1405* 1405* 1405 1405 1441 1452 1474 1488* 1498 1514 1524* 1524 1526* 1526* 1526 1526 1539* 1539* 1539 1539 1574 1583* 1602 1602 1617 1618 1739* 1768* 1768* 1862 1917 1923 1925 1932* 1932* 2405 2405 2439 2439 2460 2460 2510 2510 2549 2612 2612 2645 2645 2676 2676 comp_abort 000642 stack reference condition dcl 123 ref 155 856 1764 2361 comp_art_ 000564 constant entry external dcl 4-8 ref 474 comp_break_ 000566 constant entry external dcl 4-11 ref 2844 2860 comp_ctls_ 000570 constant entry external dcl 4-14 ref 1179 1216 comp_dvt based structure level 1 dcl 12-19 set ref 2947 2947 comp_eject_page_ 000572 constant entry external dcl 4-15 ref 2331 comp_error_table_$program_error 000626 external static fixed bin(35,0) dcl 2784 set ref 2966* comp_head_page_ 000574 constant entry external dcl 4-33 ref 187 2372 comp_insert_ctls_ 000576 constant entry external dcl 4-42 ref 2285 comp_report_ 000600 constant entry external dcl 4-59 ref 850 940 1447 2966 comp_report_$ctlstr 000602 constant entry external dcl 4-61 ref 1761 comp_title_block_ 000604 constant entry external dcl 4-69 ref 2302 2843 2859 comp_util_$add_text 000606 constant entry external dcl 4-75 ref 1810 2722 comp_util_$getblk 000610 constant entry external dcl 4-82 ref 1791 2300 2711 2840 2856 comp_util_$pictures 000612 constant entry external dcl 4-88 ref 2380 comp_util_$relblk 000614 constant entry external dcl 4-94 ref 420 2169 2231 2343 2348 comp_util_$replace_text 000616 constant entry external dcl 4-96 ref 1183 1217 compstat$compconst 000620 external static structure level 1 dcl 14-14 const based structure level 1 dcl 14-23 continue_to_signal_ 000562 constant entry external dcl 126 ref 158 count 12(18) based fixed bin(17,0) level 3 in structure "ftnblk" packed unaligned dcl 57 in procedure "comp_make_page_" set ref 2553* 2622 2704 2730* 2730 2750* count 14(18) based fixed bin(17,0) level 4 in structure "page" packed unaligned dcl 8-11 in procedure "comp_make_page_" set ref 131 138 138 145 175* 269 289 445 510 523 971 1036 1067 1100 1120 1136 1136 1143 1638 1668 1676 1676 1701 1716 1736 1942 1942 1966 2008 2010 2019 2034 2051 2084 2096 2145* 2374 2374 count 12(18) based fixed bin(17,0) level 3 in structure "block" packed unaligned dcl 36 in procedure "comp_make_page_" set ref 342 348 355 358 367 377 379* 468 537 621 641 792 799 845 862 1173 1236 1504 1592 1671 1768 1807 1837* 2248* 2248 count 3644 based fixed bin(17,0) level 3 in structure "shared" dcl 9-7 in procedure "comp_make_page_" set ref 175 175* 230 230* 2339 2342* 2342* 2343* 2368 2380 count 12(18) based fixed bin(17,0) level 3 in structure "hfcblk" packed unaligned dcl 11-250 in procedure "comp_make_page_" ref 2812 2850 ct 000010 internal static fixed bin(17,0) initial level 2 in structure "oflo" dcl 80 in procedure "comp_make_page_" set ref 149* 1758 1777* 1777 1778 1781 1869* 2005 2167 2339 2347* 2347* 2348* 2368 2789* 2801 2829 2878 2889 2894 2898 3029* 3030* ct 205 based fixed bin(17,0) level 3 in structure "olin" dcl 1752 in procedure "push_oflo" ref 1813 ct 14 based fixed bin(17,0) level 4 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" set ref 1814* 1814 1825 1850 1854 2922 ct 375 based fixed bin(17,0) level 4 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2789 2789* 2868 2879* 2879 3032 3032* ct 320 based fixed bin(17,0) level 4 in structure "locol" dcl 3075 in procedure "comp_make_page_" set ref 2103* ct 000222 automatic fixed bin(17,0) level 2 in structure "dfrftn" dcl 51 in procedure "comp_make_page_" set ref 1768 1768* 1869 1869* 2005 2339 2368 2433* 2433 2434 2439 2439* 2504* 2504 2505 2510 2510* 2736* 2750* 2789 2789* 2992 2998 3001 3008 3012 3016 3018 3022 3026* ct 375 based fixed bin(17,0) level 4 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 175 175* 238 238* 323 323* 1869 1869* 2074 2074* 2145 2145* 2704* ct 14 based fixed bin(17,0) level 4 in structure "block" dcl 36 in procedure "comp_make_page_" set ref 379 379* 583 772 845 1839* 2413 2430 2430 3001* 3001 3018 ct 14 based fixed bin(17,0) level 4 in structure "text" dcl 11-49 in procedure "comp_make_page_" ref 2277 ct 205 based fixed bin(17,0) level 3 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" set ref 664 664* 688 904 904* 925 1244 1244* 1281 1319 1319* 1344 1405 1405* 1424 1539 1539* 1560 1908* 1908 1909 2467 2497 2497 2508* 2929 2929 3008* 3008 3022 ct 375 based fixed bin(17,0) level 4 in structure "locol" dcl 3075 in procedure "comp_make_page_" ref 2277 ct 375 based fixed bin(17,0) level 4 in structure "col0" dcl 2-37 in procedure "comp_make_page_" set ref 2995 2998* 2998 3016 ct 312 000010 internal static fixed bin(17,0) initial level 3 in structure "oflo" dcl 80 in procedure "comp_make_page_" set ref 149* 1815* 1815 1825 1855* 1855 1856 1869 1869* 2789 2789* 2865 2869 2873 2879 3029* 3030* ct 320 based fixed bin(17,0) level 4 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 238 238* 323 323* ct 000144 automatic fixed bin(17,0) level 2 in structure "colftn" dcl 45 in procedure "comp_make_page_" set ref 379 379 559 664 904 1075 1244 1319 1405 1526 1539 1680 1768 1768* 1932 1932* 2405* 2439* 2460* 2510* 2600 2608* 2608 2610 2612* 2645 2676 2700* 2700 2702 2704* ctl based structure level 1 dcl 11-157 ctl_line based varying char(1020) dcl 11-158 set ref 940* 1178* 1183 1183 1215* 1217 1217 1447* 1761* ctl_ptr 132 based pointer level 3 dcl 14-23 ref 940 1178 1183 1183 1215 1217 1217 1447 1560 1761 2277 2413 2468 2658 cur 1000 based pointer level 3 in structure "block" dcl 36 in procedure "comp_make_page_" set ref 1588* 1841* 1889 2244 2258* cur 1000 based pointer level 3 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" set ref 2716* cur 1000 based pointer level 3 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" ref 2907 curbalblk 000221 automatic fixed bin(17,0) dcl 49 set ref 205* 218 238* 323* 336 336 394 427* 453* 453 625 985 current_parms based structure level 1 dcl 11-209 current_parms_ptr 134 based pointer level 3 dcl 14-23 ref 151 db_sw 000411 internal static bit(1) initial unaligned dcl 3057 set ref 129 734 1517 3060* 3064* 3069* dec builtin function dcl 120 ref 3044 default 2 based bit(1) level 3 packed unaligned dcl 11-157 ref 1560 2277 2413 2468 2658 default_parms based structure level 1 dcl 11-213 del 1(01) based bit(1) level 4 packed unaligned dcl 11-161 set ref 664* 712 904* 1244* 1277 1315 1319* 1405* 1461 1539* 1557 depth 76 based fixed bin(31,0) level 2 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" set ref 470* 559* 559* 664* 664* 904* 904* 950 1203 1229 1244* 1244* 1319* 1319* 1405* 1405* 1432 1456 1539* 1539* 1585 2309* depth 374 based fixed bin(31,0) level 3 in structure "locol" dcl 3075 in procedure "comp_make_page_" set ref 2104* 2227* 2227 2293* 2293 2309 2310* 2310 depth 374 based fixed bin(31,0) level 3 in structure "col0" dcl 2-37 in procedure "comp_make_page_" set ref 2039 2195 2197* depth 22 based fixed bin(31,0) level 3 in structure "page" dcl 8-11 in procedure "comp_make_page_" set ref 164* 1083* 1714* 2039* 2048 2053 2089* 2089* 2108* 2195* 2197* 2200* 2200* 2273* 2273 2324* 2324* 2384* 2886* depth 374 based fixed bin(31,0) level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 1714 1863* 1864 1869* 1869* 1918* 2035 2053* 2284* 2384 depth 12 based fixed bin(31,0) level 2 in structure "tblcol" dcl 10-26 in procedure "comp_make_page_" set ref 1802* depth 374 based fixed bin(31,0) level 3 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2882* 2882 2886 depth_adj 310 based fixed bin(31,0) level 2 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 131 175* 175* 218 220 238* 238* 254 323* 323* 501 504 516 523 598 598 607 718 725 748 748 792 893 1000 1194 1474 1514 1618 1932* 1932* 2074* 2074* 2145* 2145* depth_adj 310 based fixed bin(31,0) level 2 in structure "col0" dcl 2-37 in procedure "comp_make_page_" ref 318 depth_adj 310 based fixed bin(31,0) level 2 in structure "locol" dcl 3075 in procedure "comp_make_page_" ref 272 278 278 1013 1016 1020 1025 1025 1627 1631 1948 1955 1959 2104 2293 devptr 140 based pointer level 3 dcl 14-23 ref 2947 2947 2947 dfrftn 000222 automatic structure level 1 unaligned dcl 51 in procedure "comp_make_page_" set ref 153* dfrftn 4(01) based bit(1) level 4 in structure "ftnblk" packed unaligned dcl 57 in procedure "comp_make_page_" set ref 2734* dfrftn 4(01) based bit(1) level 4 in structure "text" packed unaligned dcl 11-49 in procedure "comp_make_page_" ref 2939 divide builtin function dcl 120 ref 289 445 1036 1638 1966 3044 done 000274 automatic bit(1) unaligned dcl 52 set ref 2242* 2244 2246 2254* dt_sw 000410 internal static bit(1) initial unaligned dcl 3047 set ref 546 559 654 664 904 991 1006 1025 1032 1211 1244 1319 1405 1526 1539 2553 2569 2590 2612 2627 2645 2676 2745 2760 3050* 3054* 3069* e 207 based structure array level 3 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" e 207 based structure array level 3 in structure "olin" dcl 1752 in procedure "push_oflo" end_keep 2(03) based bit(1) level 3 packed unaligned dcl 11-161 set ref 664* 703 1239 1244 1272 end_output 4113(03) based bit(1) level 3 in structure "shared" packed unaligned dcl 9-7 in procedure "comp_make_page_" set ref 523 1080 1684 2000 2139* 2334 2368 2390* end_output 000650 stack reference condition dcl 123 in procedure "comp_make_page_" ref 161 first 776 based pointer level 3 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" ref 2922 first 776 based pointer level 3 in structure "block" dcl 36 in procedure "comp_make_page_" ref 355 3005 first 776 based pointer level 3 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" ref 2633 2954 first 776 based pointer level 3 in structure "text" dcl 11-49 in procedure "comp_make_page_" ref 2305 flin 000343 automatic fixed bin(17,0) dcl 2531 set ref 2635* 2635* 2639 2642 2645* 2666* 2666* 2670 2673 2676* flin_moved 000344 automatic fixed bin(17,0) dcl 2532 set ref 2718* 2724* 2724 2730 2750* flin_oflo 000345 automatic fixed bin(17,0) dcl 2533 set ref 2673* 2695 2717 2729 flin_start 000346 automatic fixed bin(17,0) dcl 2534 set ref 2642* 2662* 2662 2666 2690* 2717* 2721 2726* flin_top 000347 automatic fixed bin(17,0) dcl 2535 set ref 2630* 2643* 2643 2674* 2674 2704* 2704 floor builtin function dcl 120 ref 445 1036 1638 1966 fmt 2 based structure array level 2 dcl 10-5 fntstk_entry based structure level 1 dcl 5-6 footnote_header_ptr 3774 based pointer level 3 dcl 9-7 ref 1096 1697 1898 2586 2596 2600 2995 footproc 14 based entry variable level 2 dcl 12-19 set ref 2947 footref_array 000412 internal static varying char(48) array dcl 2776 set ref 2945* 2947* 2949 2949 2958 2975 footref_fcs 10 based char(8) level 2 dcl 9-7 ref 2949 footrefstr 000461 internal static varying char(256) dcl 2777 set ref 2949* 2957 2964 force_bal 000275 automatic bit(1) unaligned dcl 53 set ref 137* 138 170* 743 1708* 1942 2043 2084 force_balance parameter bit(1) unaligned dcl 22 ref 14 137 force_this_page 000276 automatic bit(1) unaligned dcl 54 set ref 192* 510* 528* 1990 2003* frontpage 15(02) based bit(1) level 4 packed unaligned dcl 8-11 set ref 170* 2139* ftn 14 based structure level 3 in structure "block" dcl 36 in procedure "comp_make_page_" ftn 375 based structure level 3 in structure "locol" dcl 3075 in procedure "comp_make_page_" ftn 14 based structure level 3 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" ftn 205 based structure level 2 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" ftn 375 based structure level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 1073* 1866* 1919* 2070 ftn 14 based structure level 3 in structure "text" dcl 11-49 in procedure "comp_make_page_" ftn 205 based structure level 2 in structure "olin" dcl 1752 in procedure "push_oflo" ftn 375 based structure level 3 in structure "col0" dcl 2-37 in procedure "comp_make_page_" set ref 2047 ftn 312 000010 internal static structure level 2 in structure "oflo" unaligned dcl 80 in procedure "comp_make_page_" ftn 375 based structure level 3 in structure "newcol" dcl 3076 in procedure "comp_make_page_" ftn_held 000302 automatic bit(1) unaligned dcl 58 set ref 152* 688 925 1070 1096 1281 1344 1424 1560 1697 2277 2277 2413 2413 2468 2658 2658 ftn_reset 12 based varying char(8) level 2 dcl 9-7 ref 152 2386 2922 ftnblk based structure level 1 dcl 57 ftnblk_data based structure level 1 dcl 6-5 ftnblk_data_ptr 3772 based pointer level 3 dcl 9-7 ref 1820 1885 1892 1893 1893 1900 1904 1905 1906 2169 2169 2174 2174 2174 2351 2351 2351 2351 2351 2423 2435 2472 2483 2500 2710 2710 2711 2711 2714 2714 2738 2934 2939 2953 3013 ftnblkptr 000300 automatic pointer dcl 56 set ref 1820* 1822 1827 1829 2423* 2425 2435* 2436 2472* 2473 2483* 2500* 2501 2503 2548 2553 2553 2553 2553 2553 2553 2561 2565 2581 2581 2586 2596 2605 2605 2609 2622 2633 2704 2711 2711 2716 2730 2730 2731 2732 2733 2750 2750 2750 2953* 2954 3013* 3014 ftndx 000303 automatic fixed bin(17,0) dcl 60 set ref 2418* 2420 2423 2457* 2471* 2471 2472 2482* 2483 2553* 2610 2702 2932* 2934 2934 2939 2939 2953 ftnhdr based structure level 1 dcl 6-10 ftnlin based structure level 1 dcl 2537 ftnlinptr 000350 automatic pointer dcl 2536 set ref 2639* 2640 2645 2645 2645 2670* 2671 2676 2676 2676 ftnref 000100 automatic bit(1) unaligned dcl 2778 set ref 2934* 2937* 2939 ftnrefct 15 based fixed bin(17,0) level 2 dcl 9-7 set ref 2386* 2959 2976 2978 2982* 2982 ftnusd 000304 automatic fixed bin(31,0) initial dcl 61 set ref 61* 887* 890* 890 893 1293 ftnwidow 000352 automatic fixed bin(31,0) dcl 2538 set ref 2548* 2565 2586 2635 ftrptr 312 based pointer level 2 dcl 3075 set ref 2289 2293 2293 2300 2300 2302* ftrusd 314 based fixed bin(31,0) level 2 in structure "col0" dcl 2-37 in procedure "comp_make_page_" ref 318 ftrusd 314 based fixed bin(31,0) level 2 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 238* 238* 298 323* 323* 2058 2064 ftrusd 314 based fixed bin(31,0) level 2 in structure "locol" dcl 3075 in procedure "comp_make_page_" ref 272 2289 galley_opt 1(09) based bit(1) level 2 packed unaligned dcl 7-5 ref 187 501 556 hbound builtin function dcl 120 ref 1758 1761 1761 hdr 4 based structure level 2 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" hdr 4 based structure level 2 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" hdr 316 based structure level 2 in structure "col" dcl 2-5 in procedure "comp_make_page_" hdr 316 based structure level 2 in structure "col0" dcl 2-37 in procedure "comp_make_page_" hdr 316 based structure level 2 in structure "locol" dcl 3075 in procedure "comp_make_page_" hdr 4 based structure level 2 in structure "block" dcl 36 in procedure "comp_make_page_" hdr 316 based structure level 2 in structure "newcol" dcl 3076 in procedure "comp_make_page_" hdr 4 based structure level 2 in structure "text" dcl 11-49 in procedure "comp_make_page_" hdr 4 based structure level 2 in structure "ftnhdr" dcl 6-10 in procedure "comp_make_page_" hdr 15 based structure level 2 in structure "page" dcl 8-11 in procedure "comp_make_page_" hdr 4 based structure level 2 in structure "hfcblk" dcl 11-250 in procedure "comp_make_page_" hdrptr 452 based pointer level 2 in structure "col" dcl 2-5 in procedure "comp_make_page_" ref 209 209 hdrptr 452 based pointer level 2 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2834 2840 2840 2843* hdrusd 454 based fixed bin(31,0) level 2 dcl 2-37 ref 394 hdspc 23 based fixed bin(31,0) level 3 dcl 8-11 set ref 175* 175* 230* 230* 2089* 2089* 2145* 2145* head_size 66 based fixed bin(17,0) level 3 dcl 36 ref 516 625 head_used 000305 automatic fixed bin(31,0) initial dcl 63 in procedure "comp_make_page_" set ref 63* 187* 189* 220 254 394 956 1083 2104 2108 2372* 2377 head_used 67 based fixed bin(31,0) level 3 in structure "block" dcl 36 in procedure "comp_make_page_" ref 516 625 641 headed 15(03) based bit(1) level 4 packed unaligned dcl 8-11 ref 187 hfcblk based structure level 1 dcl 11-250 highndx based fixed bin(35,0) level 2 dcl 6-5 set ref 1892 2174 2351* 2351 2351* 2710* 2710 2711 2714 2738 i 000306 automatic fixed bin(17,0) dcl 65 set ref 269* 270 278* 358* 360 362* 484* 487 487* 1509* 1510* 1801* 1802* 1892* 1893 1893 1900 1904 1905 1906* 2034* 2035 2036* 2100* 2101* 2174* 2174* 2374* 2377* iblk 000311 automatic fixed bin(17,0) dcl 66 set ref 336* 336* 340* 367 379* 394 394 420 422 427 481 510 523 556 580 625 625 976 976 985 1469 1671 1756 1768* 1846 1847 icol 000312 automatic fixed bin(17,0) dcl 67 set ref 200* 200* 202 203 213 264 313 323* 367 379 379 394 394 404 407* 417 420* 442 455* 481 510 523 534 556 580 743 757* 785 810* 971 971 976 980 982 997 1000 1006* 1006 1006 1006 1006 1011 1051* 1067 1067 1075 1086 1091* 1092* 1100 1120* 1120 1123 1136 1136* 1136 1143 1143 1155 1469 1483* 1595 1600 1602 1602 1602 1602 1613 1617 1618 1622 1653* 1668 1676 1676 1680 1687 1692* 1693* 1694 1701 1713 1733 1736* 1736 1768* 1768 1768 1795 1822 1869* 1869 1869 1885 1923 1925 1928 1932* 1932 1932 1942 1952 1979* 2096 2553 2581 2605 2704* 2750* ift_ctl_index 000000 constant fixed bin(17,0) initial dcl 3-9 set ref 2285* ii 000100 automatic fixed bin(17,0) dcl 2191 in procedure "flush_page" set ref 2206* 2207 2208 2210 2223* 2231* 2237 2237 2261 2261 2261* 2265 2267 2269 2277 2300* 2317* 2318* ii 000246 automatic fixed bin(17,0) dcl 1749 in procedure "push_oflo" set ref 1781* 1782 1782 1783* 1807* 1808* 1845* 1846 1846 1847* ii 000101 automatic fixed bin(17,0) dcl 2779 in procedure "pull_oflo" set ref 2828* 2829 2829* 2868* 2869 2869* 2873* 2874 2874* 2889* 2890 2892 2894 2898* 3012* 3013 3016 3016 3018 3018 3022 3022* ilin 000313 automatic fixed bin(17,0) dcl 68 set ref 468* 469* 537* 538 546* 559* 590* 592 593 621* 622 623 641* 643 648 654* 664* 664 691* 695* 721* 730* 731 732 773* 774 775 792 799 824 826 839* 840 841 848 886* 888 899 904* 904 928* 950 964* 965 966 976 985 1158 1190* 1190* 1192 1198* 1198 1198* 1202* 1202 1203 1211* 1229 1233 1234 1236 1244 1298* 1299 1306 1311 1311 1405 1405 1464* 1464* 1504 1509 1526 1536 1574* 1585 1588 1590 1592 1602* 1671 1768 1768 1768 1782 1788 1807 1837 1845 1861 2307* 2308* index builtin function dcl 120 ref 2957 2964 info 277 based structure level 3 in structure "text" dcl 11-49 in procedure "comp_make_page_" info 277 based structure level 3 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" info 277 based structure level 3 in structure "ftnhdr" dcl 6-10 in procedure "comp_make_page_" info 161 based structure level 2 in structure "text_entry" dcl 11-68 in procedure "comp_make_page_" info 277 based structure level 3 in structure "block" dcl 36 in procedure "comp_make_page_" info 161 based structure level 2 in structure "olin" dcl 1752 in procedure "push_oflo" info 161 based structure level 2 in structure "ctl" dcl 11-157 in procedure "comp_make_page_" info 161 based structure level 2 in structure "ftnlin" dcl 2537 in procedure "take_a_note" info 161 based structure level 2 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" set ref 850 850 940 940 1447 1447 1761 1761 2966 2966 info 277 based structure level 3 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" info 277 based structure level 3 in structure "hfcblk" dcl 11-250 in procedure "comp_make_page_" ioa_ 000622 constant entry external dcl 14-70 ref 170 175 230 238 303 313 323 379 407 455 546 559 654 664 734 757 810 904 991 1032 1051 1106 1131 1211 1244 1319 1405 1483 1517 1526 1539 1602 1653 1706 1768 1869 1932 1979 2074 2089 2145 2200 2223 2261 2324 2390 2405 2439 2460 2510 2569 2590 2612 2627 2645 2676 2704 2745 2750 2760 2789 3032 ioa_$nnl 000624 constant entry external dcl 14-70 ref 278 1006 1025 2139 2553 j 000307 automatic fixed bin(17,0) dcl 65 set ref 422* 423 423* 425 888* 888* 890* 893 893 893 1011* 1012 1016 1020 1025* 1025 1025* 1236* 1237 1244* 1285* 1298 1306* 1311* 1311* 1313 1319* 1348* 1355 1405 1405 1427* 1464 1536* 1537 1539* 1564* 1574 1622* 1623 1624 1627 1631* 1952* 1953 1955 1959* 2167* 2168* jj 000247 automatic fixed bin(17,0) dcl 1749 in procedure "push_oflo" set ref 1813* 1817 1820 1825* 1854* 1856* jj 000101 automatic fixed bin(17,0) dcl 2191 in procedure "flush_page" set ref 2232* 2233 2233* 2246* 2248 2248 2255* jj 000320 automatic fixed bin(17,0) dcl 2403 in procedure "take_block_notes" set ref 2413* 2418* 2430 2430* 2430* 2434 2435* jj 000342 automatic fixed bin(17,0) dcl 2530 in procedure "take_a_note" set ref 2721* 2722* jj 000102 automatic fixed bin(17,0) dcl 2779 in procedure "pull_oflo" set ref 2909* 2909* 2912* 2926* 2927 2962* jjj 000103 automatic fixed bin(17,0) dcl 2779 set ref 2957* 2958* 2958 2959 2964* 2966 2975* 2975 2976 jlin parameter fixed bin(17,0) dcl 2455 ref 2450 k 000310 automatic fixed bin(17,0) dcl 65 set ref 1217 2168* 2169 2169 2169 2497* 2500 2505* keep 1006(04) based bit(1) level 4 in structure "block" packed unaligned dcl 36 in procedure "comp_make_page_" set ref 401 keep 2(07) based bit(1) level 3 in structure "txtlin" packed unaligned dcl 11-161 in procedure "comp_make_page_" set ref 367 703 707 904* 1225 1239 1539* 1595 keeping 000314 automatic bit(1) unaligned dcl 69 set ref 635* 641 707* 709* 1230* 1236 1272* 1274* keepsz 000315 automatic fixed bin(31,0) dcl 70 set ref 153* 267* 298 634* 706* 706 1231* 1242* 1242 1244 1244 1244 1244 1293 1301 1302 kk 000104 automatic fixed bin(17,0) dcl 2779 set ref 2929* 2932 2945 2978* landx 000102 automatic fixed bin(17,0) array level 2 dcl 348 set ref 360* 593 623 732 775 826 841 966 1234 1590 laptr 2 000102 automatic pointer array level 2 dcl 348 set ref 361* 592 622 731 774 824 840 965 1233 1588 last_line 000316 automatic fixed bin(17,0) dcl 71 set ref 367* 367 367 367* 373* 377* 516 625 862* 862* 868* 868* 870* 876 879* 879 879* 886 888 893 904* 1158 1162* 1162* 1166* 1171* 1173* 1190 1504* 1504 1504* 1509 1526 1536 last_unbal 000317 automatic fixed bin(31,0) dcl 72 set ref 191* 1045 1048* 1648 1651* 1974 1977* left 12 based structure level 2 in structure "text_parms" dcl 11-206 in procedure "comp_make_page_" left 1016 based structure level 3 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" left 1016 based structure level 3 in structure "block" dcl 36 in procedure "comp_make_page_" left 12 based structure level 2 in structure "footnote_parms" dcl 6-12 in procedure "comp_make_page_" left 1016 based structure level 3 in structure "hfcblk" dcl 11-250 in procedure "comp_make_page_" left 1016 based structure level 3 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" left 12 based structure level 2 in structure "current_parms" dcl 11-209 in procedure "comp_make_page_" left 36 based structure level 3 in structure "tblcol0" dcl 10-41 in procedure "comp_make_page_" left 36 based structure level 3 in structure "tblcol" dcl 10-26 in procedure "comp_make_page_" left 1016 based structure level 3 in structure "ftnhdr" dcl 6-10 in procedure "comp_make_page_" left 12 based structure level 2 in structure "default_parms" dcl 11-213 in procedure "comp_make_page_" left 36 based structure level 3 in structure "prvtblcol" dcl 10-44 in procedure "comp_make_page_" left 1016 based structure level 3 in structure "text" dcl 11-49 in procedure "comp_make_page_" length builtin function dcl 120 ref 2958 2975 line_area based structure level 1 dcl 11-26 in procedure "comp_make_page_" line_area 776 based structure level 2 in structure "text" dcl 11-49 in procedure "comp_make_page_" line_area 776 based structure level 2 in structure "block" dcl 36 in procedure "comp_make_page_" line_area 776 based structure level 2 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" line_area 776 based structure level 2 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" line_area_move 000354 automatic pointer dcl 2539 set ref 2716* 2729 line_area_ndx 000320 automatic fixed bin(17,0) dcl 73 set ref 593* 623* 732* 775* 826* 841* 966* 1234* 1590* 1595 1595 1595 1595 1842 line_area_ptr 000670 automatic pointer initial dcl 11-25 set ref 1889* 1890 1890 11-25* 355* 355* 358 361 362* 364 592* 622* 731* 774* 824* 840* 965* 1233* 1588* 1841 1842 2244* 2244* 2246 2248 2248 2255 2258* 2259 2305* 2305* 2307 2308* 2312 2633* 2633* 2635 2635 2639 2641* 2656 2663* 2663* 2666 2666 2670 2672* 2691 2694* 2695 2716 2719* 2719 2719* 2721 2722* 2727 2907* 2907* 2909 2909 2912* 2916 2922* 2922* 2926 2927 2962* 2985 3005* 3007 line_area_start 000356 automatic pointer dcl 2540 set ref 2641* 2663 2672* 2694 lineno 162 based fixed bin(17,0) level 3 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" set ref 546* 559* 654* 664* 904* 1211* 1244* 1319* 1405* 1539* 1602* lineno 162 based fixed bin(17,0) level 3 in structure "ftnlin" dcl 2537 in procedure "take_a_note" set ref 2645* 2676* linespace 1020 based fixed bin(31,0) level 3 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" set ref 2548 linespace 164 based fixed bin(31,0) level 2 in structure "ftnlin" dcl 2537 in procedure "take_a_note" set ref 2635 2640 2645* 2645* 2671 2676* 2676* linespace 14 based fixed bin(31,0) level 2 in structure "current_parms" dcl 11-209 in procedure "comp_make_page_" ref 151 linespace 164 based fixed bin(31,0) level 2 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" set ref 373 471 544* 553 556 559* 559* 559 598* 651 652* 661 662 664* 664* 664 706 837* 870 876 879 888 893 901 902 904* 904* 937 944* 947 1166 1185* 1194 1198 1242 1244* 1244* 1244 1311 1319* 1319* 1319 1319 1319 1319 1319 1402 1403 1405* 1405* 1405 1444 1452* 1511 1539* 1539* 1539 1595 2310 2666 2912 linftnct 000321 automatic fixed bin(17,0) dcl 74 set ref 692 2457* 2467* 2479 2482* 2493 2497 2497 2508 linptr 10 based pointer array level 2 dcl 11-26 set ref 362 1890 2248 2248 2308 2635 2639 2666 2670 2722* 2909 2912 2927 2954 2962 3007 locblkptr 000102 automatic pointer dcl 2192 set ref 2213* 2215 2215 2215 2223 2223 2227 2228 2241* 2244 2248 2248 2258 2265 2265 loclin 000102 automatic structure array level 1 unaligned dcl 348 loclindx 000100 automatic fixed bin(17,0) dcl 347 set ref 354* 355 358 359* 359 360 361 362 locol based structure level 1 dcl 3075 locolptr 000656 automatic pointer dcl 3074 set ref 270* 272 272 272 272 276 278 278 278 278 278 278 455 455 1012* 1013 1013 1013 1016 1016 1016 1020 1020 1020 1025 1025 1025 1025 1025 1025 1623* 1624 1624 1627 1627 1627 1631 1631 1631 1946* 1947 1947 1948 1948 1948 1953* 1954 1954 1955 1955 1955 1959 1959 1959 2101* 2102 2103 2103 2103 2104 2104 2208* 2212 2213 2215 2215 2227 2227 2228 2228 2231 2232 2233 2233 2237 2241 2241 2267 2267 2267 2267 2277 2289 2289 2293 2293 2293 2293 2293 2293 2293 2293 2293 2300 2300 2302 2309 2310 2310 2318* 2319 locolusd 000360 automatic fixed bin(31,0) dcl 2542 set ref 2549* 2586 2596 2658 2666 ltrim builtin function dcl 120 ref 2945 2959 2976 max builtin function dcl 1754 in procedure "push_oflo" ref 1864 1865 max builtin function dcl 120 in procedure "comp_make_page_" ref 220 254 289 298 434 487 492 956 1020 1405 1405 1464 1631 1928 1930 1959 2035 2036 2039 2195 2319 2789 2789 2789 2789 2885 2887 max builtin function dcl 2546 in procedure "take_a_note" ref 2549 2586 2596 maxcoldepth 000322 automatic fixed bin(31,0) dcl 75 set ref 195* 575 575* 580* 953 957* 1084* 1864* 1864 2033* 2035* 2035 2039 2195 maxcolusd 000323 automatic fixed bin(31,0) dcl 76 set ref 1000* 1020* 1020 1044 1618* 1631* 1631 1646 1948* 1959* 1959 1972 2033* 2036* 2036 2040 2058 2067 2316* 2319* 2319 2322 maxdepth 2 based fixed bin(31,0) level 2 dcl 10-15 set ref 1804* min builtin function dcl 2546 in procedure "take_a_note" ref 2565 2586 min builtin function dcl 120 in procedure "comp_make_page_" ref 289 318 748 792 799 1016 1036 1474 1627 1638 1925 1955 1966 mincolusd 000324 automatic fixed bin(31,0) dcl 77 set ref 1000* 1016* 1016 1044 1478 1618* 1627* 1627 1646 1923* 1925* 1925 1948* 1955* 1955 1972 mod 1(02) based bit(1) level 4 in structure "txtlin" packed unaligned dcl 11-161 in procedure "comp_make_page_" ref 664 712 904 1244 1277 1315 1319 1405 1461 1539 1557 mod builtin function dcl 120 in procedure "comp_make_page_" ref 1120 1136 1736 modified 4(02) based bit(1) level 4 in structure "block" packed unaligned dcl 36 in procedure "comp_make_page_" set ref 379* 586 modified 15(04) based bit(1) level 4 in structure "page" packed unaligned dcl 8-11 in procedure "comp_make_page_" set ref 586* 586 1674* 1674 2139* 2200* 2324* ncols 3 based fixed bin(17,0) level 2 dcl 10-15 ref 1801 ndx 5 based fixed bin(17,0) level 2 in structure "line_area" dcl 11-26 in procedure "comp_make_page_" set ref 358 1842* 1890 2246 2255* 2307 2635 2666 2695 2721 2729* 2909 2926 ndx 1 based fixed bin(17,0) level 2 in structure "tbldata" dcl 10-5 in procedure "comp_make_page_" ref 1800 need_break constant fixed bin(17,0) initial dcl 1-9 ref 145 1100 1990 2012 2988 need_page 000325 automatic bit(1) unaligned dcl 78 set ref 145* 1990 2003* 2362* net 450 based fixed bin(31,0) level 3 in structure "locol" dcl 3075 in procedure "comp_make_page_" ref 276 2293 2293 net 450 based fixed bin(31,0) level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 131 175* 175* 225 318 523 598 607 718 725 748 748 792 792 792 2058* 2064* 2074* 2074* 2145* 2145* net 25 based fixed bin(31,0) level 3 in structure "page" dcl 8-11 in procedure "comp_make_page_" set ref 175* 175* 230* 230* 284 318 430 799 827 859 937 1035 1100 1444 1474 1637 1701 1716 1965 2025 2058 2064 2089* 2089* 2096 2145* 2145* 2200* 2200* 2324* 2324* newc parameter fixed bin(17,0) dcl 2772 set ref 2766 2787 2789* 2825 2834 2838 2840* 2854 2887 2892 2896 2922 3032* newcol based structure level 1 dcl 3076 newcol_ptr 000660 automatic pointer dcl 3078 set ref 2787* 2789 2789 2789 2789 2789 2789 2789 2789 2789 2805 2807 2807 2817 2817 2825 2828 2829 2829 2834 2839 2840 2840 2843 2855 2858 2861 2861 2868 2869 2869 2874 2878 2878 2879 2879 2881 2881 2882 2882 2883 2883 2885 2886 2892 2894 2894 2901 2901 2906 2912 2912 3032 3032 3032 3032 3032 3032 3032 3032 3032 newftnptr 000362 automatic pointer dcl 2543 set ref 2714* 2722* 2732 2733 2734 2734 2737 next based pointer level 2 dcl 11-26 ref 364 2312 2656 2691 2727 2985 no_trim 2(08) based bit(1) level 3 in structure "txtlin" packed unaligned dcl 11-161 in procedure "comp_make_page_" ref 367 1504 1595 2248 no_trim 4(03) based bit(1) level 4 in structure "block" packed unaligned dcl 36 in procedure "comp_make_page_" set ref 379* 401 2215 note_oflo 000326 automatic bit(1) unaligned dcl 79 set ref 692 2411* 2413 2458* 2467 2475 2485 2571* 2592* 2740* 2747* null builtin function dcl 120 ref 147 209 1885 1893 10-24 10-43 11-25 11-35 13-68 13-75 355 425 1783 1847 2169 2174 2174 2184 2215 2244 2289 2305 2351 2351 2380 2380 2425 2473 2633 2663 2719 2807 2812 2817 2834 2850 2907 2922 oblkct 000250 automatic fixed bin(17,0) dcl 1750 set ref 1756* 1758 1768* 1777 1782 1845 1861 oflo 000010 internal static structure level 1 unaligned dcl 80 set ref 2183* oflo_ftn 4(04) based bit(1) level 4 packed unaligned dcl 57 set ref 2734* ofloblk based structure level 1 dcl 92 ofloblkptr 000330 automatic pointer dcl 91 set ref 1793* 1810* 1814 1814 1825 1825 1827 1827 1835 1846* 1848 1850 1853 1854 1856 2890* 2892 2894 2895 2896 2901 2901 2907 2922 2922 2988 oldc parameter fixed bin(17,0) dcl 2771 set ref 2766 2789* 2825 2846 2847 2892 2922 olin based structure level 1 dcl 1752 olinptr 000252 automatic pointer dcl 1751 set ref 1808* 1810* 1813 1817 1820 1825 option based structure level 1 dcl 7-5 option_ptr 164 based pointer level 3 dcl 14-23 ref 187 501 556 orph_ftn 000332 automatic bit(1) unaligned dcl 93 set ref 196* 1885 1907* 2277 orphan 4(09) based bit(1) level 4 packed unaligned dcl 11-49 set ref 1893 1905* orphftnct 000333 automatic fixed bin(17,0) dcl 94 set ref 153* 1897* 1897 orphftnusd 000334 automatic fixed bin(31,0) dcl 95 set ref 153* 1898 1898* 1900* 1900 page based structure level 1 dcl 8-11 page_break constant fixed bin(17,0) initial dcl 1-9 ref 138 1100 1115 1701 1716 1914 1990 2043 page_header based structure level 1 dcl 8-27 page_parms based structure level 1 dcl 8-86 page_ptr 170 based pointer level 3 dcl 14-23 ref 131 131 131 138 138 138 138 145 145 164 164 170 170 170 170 170 170 175 175 175 175 175 175 175 175 175 187 189 194 200 202 203 230 230 230 230 230 230 230 230 230 230 230 269 270 284 284 284 289 318 318 318 318 318 394 394 394 417 417 417 430 430 430 434 434 436 445 484 484 487 487 492 492 510 523 586 586 799 799 799 827 859 937 971 1012 1035 1035 1036 1067 1083 1084 1092 1093 1100 1100 1100 1115 1120 1123 1136 1136 1143 1444 1474 1474 1474 1613 1623 1637 1637 1638 1668 1674 1674 1676 1676 1693 1694 1701 1701 1701 1713 1714 1716 1716 1716 1736 1867 1889 1930 1942 1942 1946 1953 1965 1965 1966 1998 2008 2010 2012 2019 2019 2019 2021 2021 2022 2022 2025 2025 2034 2035 2036 2039 2039 2040 2040 2047 2047 2048 2048 2049 2049 2051 2051 2052 2052 2053 2055 2058 2064 2064 2064 2072 2074 2084 2084 2086 2087 2087 2089 2089 2089 2089 2089 2089 2089 2096 2096 2100 2101 2107 2108 2109 2125 2125 2139 2139 2139 2139 2139 2139 2139 2139 2145 2145 2145 2145 2145 2145 2145 2145 2145 2195 2195 2195 2197 2197 2198 2200 2200 2200 2200 2200 2200 2200 2200 2206 2207 2208 2272 2272 2273 2273 2277 2317 2318 2322 2322 2324 2324 2324 2324 2324 2324 2324 2324 2365 2374 2374 2377 2383 2384 2787 2804 2838 2846 2847 2854 2885 2886 2887 2887 2995 2995 2998 2998 2999 2999 3001 3001 3003 3003 3005 3016 3016 3018 3018 pagenet 000335 automatic fixed bin(31,0) dcl 96 set ref 284* 287 289 1035* 1036 1637* 1638 1965* 1966 pageno 26 based varying char(32) level 3 dcl 8-11 set ref 170* 175* 230* 2089* 2139* 2145* 2200* 2324* pagoflo 000336 automatic bit(1) unaligned dcl 97 set ref 131* 135* 138 230* 289 430 437* 785 971* 1067 1110* 1143 1668* 1711* 1990 2003* 2028* 2089* 2110* 2145* 2571* 2592* 2740* 2747* pagusd 000406 internal static fixed bin(31,0) dcl 98 set ref 164* 194* 436* 956* 956 1716 1865* 1865 1928* 1928 1930* 1930 1998 2040* 2089* 2089* 2096 2198 2364* 2885 parms 1004 based structure level 2 in structure "text" dcl 11-49 in procedure "comp_make_page_" set ref 2856 2856 parms 1004 based structure level 2 in structure "hfcblk" dcl 11-250 in procedure "comp_make_page_" set ref 2300 2300 2840 2840 parms 1 based structure level 2 in structure "page" dcl 8-11 in procedure "comp_make_page_" parms 1004 based structure level 2 in structure "block" dcl 36 in procedure "comp_make_page_" set ref 1791 1791 parms 1004 based structure level 2 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" set ref 2711 2711 pgc_select 15(27) based char(1) level 4 in structure "page" packed unaligned dcl 8-11 in procedure "comp_make_page_" set ref 1867 2139* 2804* pgc_select 000407 internal static char(1) initial unaligned dcl 99 in procedure "comp_make_page_" set ref 1867* 2804 picture 3644 based structure level 2 dcl 9-7 prev 2 based pointer level 2 dcl 11-26 ref 2259 2916 prvtblcolptr 000666 automatic pointer initial dcl 10-43 set ref 10-43* pspc 447 based fixed bin(31,0) level 3 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2901* 2901 2906* 2912* 2912 pspc 447 based fixed bin(31,0) level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 175* 175* 238* 238* 323* 323* 1932* 1932* 2074* 2074* 2145* 2145* ptr 172 based pointer level 2 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" ref 543 559 649 650 664 850 862 904 1215 1220 1244 1319 1405 1539 2909 2956 2963 ptr 000620 external static pointer level 2 in structure "compstat$compconst" dcl 14-14 in procedure "comp_make_page_" ref 129 131 131 131 131 131 131 131 138 138 138 138 145 145 150 151 152 164 164 170 170 170 170 170 170 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 187 187 189 194 200 202 203 203 205 206 207 209 209 218 220 220 220 225 230 230 230 230 230 230 230 230 230 230 230 230 230 230 230 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 254 254 254 269 270 284 284 284 289 298 318 318 318 318 318 318 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 336 336 340 394 394 394 412 412 413 417 417 417 420 422 423 423 425 427 430 430 430 434 434 434 436 445 484 484 487 487 492 492 501 501 504 510 510 516 523 523 523 523 523 556 586 586 598 598 598 607 607 625 718 718 725 725 748 748 748 748 762 763 792 792 792 792 799 799 799 799 815 816 827 859 893 937 940 971 976 1000 1012 1035 1035 1036 1067 1073 1075 1080 1083 1084 1092 1093 1093 1096 1096 1096 1096 1100 1100 1100 1115 1120 1123 1136 1136 1143 1178 1183 1183 1194 1215 1217 1217 1444 1447 1469 1474 1474 1474 1474 1488 1489 1514 1560 1613 1618 1623 1637 1637 1638 1668 1671 1674 1674 1676 1676 1680 1684 1693 1694 1694 1697 1697 1697 1697 1701 1701 1701 1713 1713 1714 1714 1716 1716 1716 1736 1739 1756 1761 1797 1800 1800 1820 1846 1847 1861 1861 1862 1863 1864 1865 1866 1867 1869 1869 1869 1869 1869 1869 1869 1869 1869 1885 1889 1892 1893 1893 1898 1900 1904 1905 1906 1917 1918 1919 1928 1930 1930 1932 1932 1932 1932 1932 1942 1942 1946 1953 1965 1965 1966 1998 2000 2008 2010 2012 2012 2019 2019 2019 2021 2021 2022 2022 2022 2025 2025 2034 2035 2036 2039 2039 2040 2040 2047 2047 2048 2048 2049 2049 2051 2051 2052 2052 2052 2053 2053 2055 2058 2058 2058 2059 2059 2064 2064 2064 2064 2064 2067 2067 2070 2070 2071 2071 2072 2072 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2084 2084 2086 2087 2087 2087 2089 2089 2089 2089 2089 2089 2089 2096 2096 2100 2101 2107 2108 2109 2125 2125 2125 2139 2139 2139 2139 2139 2139 2139 2139 2139 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2169 2169 2174 2174 2174 2195 2195 2195 2197 2197 2198 2200 2200 2200 2200 2200 2200 2200 2200 2206 2207 2208 2208 2272 2272 2273 2273 2277 2277 2282 2283 2284 2286 2300 2305 2317 2318 2322 2322 2324 2324 2324 2324 2324 2324 2324 2324 2329 2330 2332 2334 2339 2342 2342 2343 2343 2351 2351 2351 2351 2351 2365 2368 2368 2374 2374 2377 2380 2383 2383 2384 2384 2386 2386 2390 2413 2413 2423 2435 2468 2472 2483 2500 2548 2586 2596 2600 2622 2658 2704 2710 2710 2711 2711 2714 2714 2738 2787 2804 2812 2812 2838 2839 2840 2842 2846 2847 2847 2850 2850 2854 2855 2856 2858 2859 2885 2886 2887 2887 2922 2934 2939 2947 2947 2947 2949 2953 2959 2976 2978 2982 2982 2988 2995 2995 2995 2998 2998 2999 2999 3001 3001 3003 3003 3005 3013 3016 3016 3018 3018 ptr 3650 based pointer array level 4 in structure "shared" dcl 9-7 in procedure "comp_make_page_" set ref 2343* ptr 14 based pointer array level 3 in structure "tbldata" dcl 10-5 in procedure "comp_make_page_" ref 1800 ptr 4 000102 automatic pointer array level 2 in structure "loclin" dcl 348 in begin block on line 342 set ref 362* 367 367 367 373 469 538 598 643 837 848 862 870 876 879 888 890 893 893 899 950 1166 1183* 1185 1192 1198 1203 1217* 1229 1237 1299 1311 1313 1355 1504 1504 1510 1537 1585 1595 1595 1595 1595 1808 ptr 172 based pointer level 2 in structure "ctl" dcl 11-157 in procedure "comp_make_page_" ref 940 1178 1183 1183 1215 1217 1217 1447 1761 ptrs 126 based structure level 2 in structure "const" dcl 14-23 in procedure "comp_make_page_" ptrs 3742 based structure level 2 in structure "shared" dcl 9-7 in procedure "comp_make_page_" pull_blk 000105 automatic fixed bin(17,0) dcl 2781 set ref 2805* 2807 2807* 2817 2817 2817* 2817 2828 2845* 2862* 2862 2892 purge_ftns 4113(12) based bit(1) level 3 packed unaligned dcl 9-7 ref 2012 2413 rebal_sw 000340 automatic bit(1) unaligned dcl 101 set ref 192* 261 308 699 765* 818* 933 1056* 1130* 1287 1350 1436 1491* 1569 1660* 1984* rebalnet 000337 automatic fixed bin(31,0) dcl 100 set ref 191* 311 313* 313* 445* 455* 455* 764* 817* 1049* 1051* 1051* 1490* 1659* 1983* refer 110 based fixed bin(17,0) level 3 dcl 57 set ref 1822 2553 2581 2605 2732* 2732 refno 207(18) based fixed bin(17,0) array level 4 packed unaligned dcl 11-161 set ref 2945 2978* 3010* savblkusd 000341 automatic fixed bin(31,0) dcl 102 set ref 1497* 1579 savcolftn 000342 automatic structure level 1 unaligned dcl 103 set ref 613* 639* 729 832 1501* 1584 savcolusd 000414 automatic fixed bin(31,0) dcl 104 set ref 612* 638* 728 783 831 1498* 1583 save_tmode 000104 automatic bit(1) unaligned dcl 2193 set ref 2282* 2286 2329* 2332 savftnct 000415 automatic fixed bin(17,0) dcl 105 set ref 1499* 1581 savftnusd 000416 automatic fixed bin(31,0) dcl 106 set ref 1500* 1582 scale parameter fixed bin(31,0) dcl 3043 ref 3040 3044 shared based structure level 1 dcl 9-7 shared_ptr 200 based pointer level 3 dcl 14-23 ref 129 131 131 131 131 150 152 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 203 205 206 207 209 209 218 220 220 220 225 230 230 230 230 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 254 254 254 298 318 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 336 336 340 412 412 413 420 422 423 423 425 427 434 501 504 510 516 523 523 523 523 598 598 598 607 607 625 718 718 725 725 748 748 748 748 762 763 792 792 792 792 799 815 816 893 976 1000 1073 1075 1080 1093 1096 1096 1096 1096 1194 1469 1474 1488 1489 1514 1618 1671 1680 1684 1694 1697 1697 1697 1697 1713 1714 1739 1756 1797 1800 1800 1820 1846 1847 1861 1861 1862 1863 1864 1865 1866 1869 1869 1869 1869 1869 1869 1869 1869 1869 1885 1892 1893 1893 1898 1900 1904 1905 1906 1917 1918 1919 1928 1930 1932 1932 1932 1932 1932 2000 2012 2022 2052 2053 2058 2058 2059 2059 2064 2064 2067 2067 2070 2070 2071 2071 2072 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2087 2125 2139 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2169 2169 2174 2174 2174 2208 2282 2283 2284 2286 2300 2305 2329 2330 2332 2334 2339 2342 2342 2343 2343 2351 2351 2351 2351 2351 2368 2368 2380 2383 2384 2386 2386 2390 2413 2423 2435 2472 2483 2500 2548 2586 2596 2600 2622 2704 2710 2710 2711 2711 2714 2714 2738 2812 2812 2839 2840 2842 2847 2850 2850 2855 2856 2858 2859 2922 2934 2939 2949 2953 2959 2976 2978 2982 2982 2988 2995 3013 space 3645 based fixed bin(31,0) level 3 dcl 9-7 set ref 175* 175* 230* 230* spcl 3 based structure level 3 dcl 11-161 spcl_blkptr 4016 based pointer level 3 dcl 9-7 set ref 2812 2812 2850 2850 2859* spcl_line 000417 automatic varying char(512) dcl 107 set ref 496* 649* 1175 1178 spcl_linespace 000620 automatic fixed bin(31,0) dcl 108 set ref 651* 1185 spcl_lndx 000621 automatic fixed bin(17,0) dcl 109 set ref 648* 1183 1185 splthdr 000106 automatic fixed bin(17,0) dcl 2782 set ref 2811* 2820* 2821* 2829 2850 substr builtin function dcl 120 set ref 2959* 2976* sws based structure level 2 in structure "ctl" dcl 11-157 in procedure "comp_make_page_" sws 15 based structure level 3 in structure "page" dcl 8-11 in procedure "comp_make_page_" sws 4 based structure level 3 in structure "text" dcl 11-49 in procedure "comp_make_page_" sws 4 based structure level 3 in structure "block" dcl 36 in procedure "comp_make_page_" sws 4113 based structure level 2 in structure "shared" dcl 9-7 in procedure "comp_make_page_" sws 4 based structure level 3 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" sws based structure level 2 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" sws 1004 based structure level 3 in structure "block" dcl 36 in procedure "comp_make_page_" sws 4 based structure level 3 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" table_mode 4113(14) based bit(1) level 3 packed unaligned dcl 9-7 set ref 1797 2282 2283* 2286* 2329 2330* 2332* tblblk 4(05) based bit(1) level 4 in structure "block" packed unaligned dcl 36 in procedure "comp_make_page_" ref 1797 tblblk 4(05) based bit(1) level 4 in structure "text" packed unaligned dcl 11-49 in procedure "comp_make_page_" set ref 2842* tblcol based structure level 1 dcl 10-26 tblcolptr 000664 automatic pointer initial dcl 10-24 set ref 10-24* tbldata based structure level 1 dcl 10-5 tbldata_ptr 4020 based pointer level 3 dcl 9-7 ref 1800 1800 tblfmt based structure level 1 dcl 10-15 tblfmtptr 000662 automatic pointer dcl 10-13 set ref 1800* 1801 1802 1804 text based structure level 1 dcl 11-49 text_added 000622 automatic bit(1) dcl 110 set ref 1179* 1180 1216* 1217 text_area_ptr 000672 automatic pointer initial dcl 11-35 set ref 11-35* text_entry based structure level 1 dcl 11-68 text_header based structure level 1 dcl 11-163 title 4(02) based bit(1) level 3 packed unaligned dcl 11-161 ref 1308 tmpdepth 000623 automatic fixed bin(31,0) dcl 111 set ref 218* 220* 254* 467* 947* 947 957 968 1229* tmpnet 000624 automatic fixed bin(31,0) dcl 112 set ref 191* 748* 754 757 757 764 792* 799* 807 810 810 817 1000* 1006 1006 1013* 1013 1036* 1036 1049 1474* 1478 1478 1483 1483 1490 1617* 1624* 1624 1638* 1638 1653* 1653* 1659 1947* 1954* 1954 1966* 1966 1974 1979* 1979* 1983 tmpusd 000625 automatic fixed bin(31,0) dcl 113 set ref 497* 501 504 507 516 1508* 1511* 1511 1514 1523 1524 1526* 1526* tree_names_ptr 000700 automatic pointer initial dcl 13-68 set ref 13-68* tree_var_ptr 000702 automatic pointer initial dcl 13-75 set ref 13-75* trl_ws 113 based fixed bin(31,0) level 3 dcl 36 set ref 366* 373* 373 379* 379* 455 455 504 507* 516 534 625 976 1150 1595* 1600* 1602 1602 1602* 1602* txtlin based structure level 1 dcl 11-161 txtlinptr 000676 automatic pointer dcl 11-160 set ref 469* 470 471 538* 540 543 544 546 553 556 559 559 559 559 559 559 559 559 559 643* 645 649 650 651 652 654 661 662 664 664 664 664 664 664 664 664 664 664 664 664 664 664 664 664 688 688 703 703 706 707 712 712 712 848* 850 850 850 899* 901 902 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 925 925 937 940 940 944 947 1192* 1194 1208 1211 1215 1220 1225 1237* 1239 1239 1242 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1272 1277 1277 1277 1281 1281 1299* 1308 1313* 1315 1315 1315 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1344 1344 1355* 1402 1403 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1424 1424 1432 1444 1447 1447 1452 1456 1461 1461 1461 1510* 1511 1537* 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1557 1557 1557 1560 1560 1602 1761 1761 1890* 1908 1908 1909 1909 2308* 2309 2310 2467 2479 2482 2497 2497 2500 2505 2508 2927* 2929 2929 2932 2945 2954* 2956 2962* 2963 2966 2966 2978 3007* 3008 3008 3009 3009 3010 3022 3022 txtstr based varying char(1020) dcl 11-45 set ref 543* 559 649 650* 664 850* 862 904 1215 1220* 1244 1319 1405 1539 2909 2957 2959* 2964 2966* 2976* txtstrptr 000674 automatic pointer dcl 11-44 set ref 2956* 2957 2959 2963* 2964 2966 2976 unbal 000626 automatic fixed bin(31,0) dcl 114 set ref 191* 1044* 1045 1045 1048 1051* 1051* 1646* 1648 1648 1651 1653* 1653* 1972* 1974 1974 1977 1979* 1979* unref 4(06) based bit(1) level 4 in structure "ftnblk" packed unaligned dcl 57 in procedure "comp_make_page_" set ref 2501* 2553* 2581 2733* 2733 3014* unref 4(06) based bit(1) level 4 in structure "text" packed unaligned dcl 11-49 in procedure "comp_make_page_" set ref 1904* 2934 usd 376 based fixed bin(31,0) level 4 in structure "locol" dcl 3075 in procedure "comp_make_page_" ref 272 278 278 1013 1016 1020 1025 1025 1624 1627 1631 1947 1948 1954 1955 1959 usd 376 based fixed bin(31,0) level 4 in structure "col0" dcl 2-37 in procedure "comp_make_page_" set ref 284 318 430 799 1474 1998 2064 2995* 2999* 2999 usd 376 based fixed bin(31,0) level 4 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 131 175* 175* 238* 238* 323* 323* 1075* 1096 1096* 1096 1680* 1697 1697* 1697 1869* 1869* 2074* 2074* 2145* 2145* usd 321 based fixed bin(31,0) level 4 in structure "locol" dcl 3075 in procedure "comp_make_page_" set ref 2103* usd 313 000010 internal static fixed bin(31,0) initial level 3 in structure "oflo" dcl 80 in procedure "comp_make_page_" set ref 149* 1829* 1829 1853* 1853 1869* 1869* 2789* 2789* 2883 3029* 3030* usd 1 000222 automatic fixed bin(31,0) level 2 in structure "dfrftn" dcl 51 in procedure "comp_make_page_" set ref 1768* 1768* 1869* 1869* 2436* 2436 2439* 2439* 2503* 2503 2510* 2510* 2737* 2750* 2750* 2789 2789 2789 2789 2999 3003 3009 3026* usd 376 based fixed bin(31,0) level 4 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2789* 2789* 2883* 2883 3032* 3032* usd 15 based fixed bin(31,0) level 4 in structure "block" dcl 36 in procedure "comp_make_page_" set ref 379* 379* 497 497 516 583 611 771 1840* 3003* 3003 usd 321 based fixed bin(31,0) level 4 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 238* 238* 323* 323* usd 15 based fixed bin(31,0) level 4 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" set ref 1827* 1827 1853 usd 1 000144 automatic fixed bin(31,0) level 2 in structure "colftn" dcl 45 in procedure "comp_make_page_" set ref 379* 379* 379 379 497 497 559* 559* 559 559 664* 664* 664 664 725 780 893 904* 904* 904 904 944 1000 1194 1244* 1244* 1244 1244 1293 1319* 1319* 1319 1319 1405* 1405* 1405 1405 1441 1452 1514 1526* 1526* 1526 1526 1539* 1539* 1539 1539 1574 1617 1618 1768* 1768* 1932* 1932* 2405* 2405* 2405 2405 2439* 2439* 2439 2439 2460* 2460* 2460 2460 2510* 2510* 2510 2510 2561 2565 2586 2596 2600* 2609* 2609 2612* 2612* 2612 2612 2645 2645 2645 2645 2658 2666 2676 2676 2676 2676 2701* 2701 used 1 000010 internal static fixed bin(31,0) initial level 2 in structure "oflo" dcl 80 in procedure "comp_make_page_" set ref 149* 1835* 1835 1848* 1848 1869* 1869* 2789* 2789* 2881 2882 3030* used 114 based fixed bin(31,0) level 3 in structure "block" dcl 36 in procedure "comp_make_page_" set ref 379* 379* 407* 407* 412 417 445 455* 455* 497 516 598 598* 607 610 625 748 748 770 837* 1838* 2223* 2223* 2227 2228 2265* 2265 2549 used 37 based fixed bin(31,0) level 3 in structure "page" dcl 8-11 in procedure "comp_make_page_" set ref 164* 175* 175* 230* 230* 417* 417 430 436 1084* 1100 1115 1701 1716 2012 2025 2040* 2049 2145* 2145* 2198* 2200* 2200* 2272* 2272 2322* 2324* 2324* 2383* 2885* used 114 based fixed bin(31,0) level 3 in structure "text" dcl 11-49 in procedure "comp_make_page_" ref 189 209 1900 used 451 based fixed bin(31,0) level 3 in structure "col" dcl 2-5 in procedure "comp_make_page_" set ref 131 175* 175* 238* 238* 323* 323* 412* 412 799 1739 1862* 1865 1869* 1869* 1917* 1928 1930 2036 2059 2067* 2074* 2074* 2145* 2145* 2383 used 114 based fixed bin(31,0) level 3 in structure "ftnblk" dcl 57 in procedure "comp_make_page_" set ref 1827 1829 2436 2503 2553* 2553* 2561 2565 2586 2596 2605 2609 2731* 2737 2750* 2750* used 206 based fixed bin(31,0) level 3 in structure "txtlin" dcl 11-161 in procedure "comp_make_page_" set ref 664* 664* 688 890 893 904* 904* 925 1244* 1244* 1281 1319* 1319* 1344 1424 1539* 1539* 1560 3009* 3009 used 114 based fixed bin(31,0) level 3 in structure "ofloblk" dcl 92 in procedure "comp_make_page_" ref 1835 1848 2901 used 451 based fixed bin(31,0) level 3 in structure "locol" dcl 3075 in procedure "comp_make_page_" set ref 272 278 278 455 455 1013 1016 1020 1025 1025 1624 1627 1631 1947 1948 1954 1955 1959 2215 2228* 2228 2267 2267* 2267 2293 2293 2319 used 451 based fixed bin(31,0) level 3 in structure "col0" dcl 2-37 in procedure "comp_make_page_" ref 284 318 799 1035 1474 1637 1930 1965 2040 2064 2322 used 114 based fixed bin(31,0) level 3 in structure "ftnhdr" dcl 6-10 in procedure "comp_make_page_" ref 1096 1697 1898 2586 2596 2600 2995 used 451 based fixed bin(31,0) level 3 in structure "newcol" dcl 3076 in procedure "comp_make_page_" set ref 2789* 2789* 2881* 2881 2885 3032* 3032* used 114 based fixed bin(31,0) level 3 in structure "hfcblk" dcl 11-250 in procedure "comp_make_page_" ref 2293 2293 value parameter fixed bin(31,0) dcl 3042 ref 3040 3044 white 4(07) based bit(1) level 3 in structure "txtlin" packed unaligned dcl 11-161 in procedure "comp_make_page_" set ref 367 559* 664* 904* 1244* 1319* 1405* 1504 1539* 1595 2248 white 4(07) based bit(1) level 4 in structure "block" packed unaligned dcl 36 in procedure "comp_make_page_" set ref 379* 401 595 834 2215 white 4(07) based bit(1) level 4 in structure "ofloblk" packed unaligned dcl 92 in procedure "comp_make_page_" ref 2901 widct 000627 automatic fixed bin(17,0) dcl 115 set ref 867* 868 870* 870 widftnusd 000364 automatic fixed bin(31,0) dcl 2544 set ref 2631* 2635 2640* 2640 2645* 2645* 2645 2645 2645 2645 2645 2645 2645 2645 2658 2666 2671* 2671 2676* 2676* 2676 2676 2676 2676 2676 2676 2676 2676 2699 2701 2731 widow 000630 automatic fixed bin(31,0) dcl 116 set ref 151* 289 289 516 625 641 799 985 989* 989 991* 991* 1162 1474 1974 2549 2549 widow_foot 4217 based fixed bin(31,0) level 2 dcl 9-7 ref 2548 2622 widow_size 4216 based fixed bin(31,0) level 2 dcl 9-7 ref 150 widsiz 000631 automatic fixed bin(17,0) dcl 117 set ref 150* 151 516 625 799 868 988* 988 1158 widusd 000632 automatic fixed bin(31,0) dcl 118 set ref 1161* 1162 1166* 1166 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. LINE_AREA_SIZE internal static fixed bin(17,0) initial dcl 11-24 MAX_TREE_AREAS internal static fixed bin(17,0) initial dcl 14-20 MAX_TREE_AREA_CT internal static fixed bin(17,0) initial dcl 14-18 TEXT_AREA_SIZE internal static fixed bin(17,0) initial dcl 11-34 TEXT_VERSION internal static fixed bin(17,0) initial dcl 11-47 be_ctl_index internal static fixed bin(17,0) initial dcl 3-9 bef_ctl_index internal static fixed bin(17,0) initial dcl 3-9 bel_ctl_index internal static fixed bin(17,0) initial dcl 3-9 bep_ctl_index internal static fixed bin(17,0) initial dcl 3-9 comp_ 000000 constant entry external dcl 4-7 comp_block_ctls_ 000000 constant entry external dcl 4-9 comp_break_ctls_ 000000 constant entry external dcl 4-12 comp_expr_eval_ 000000 constant entry external dcl 4-17 comp_extr_str_ 000000 constant entry external dcl 4-21 comp_fill_ 000000 constant entry external dcl 4-24 comp_font_ 000000 constant entry external dcl 4-25 comp_format_ctls_ 000000 constant entry external dcl 4-26 comp_get_file_$find 000000 constant entry external dcl 4-28 comp_get_file_$open 000000 constant entry external dcl 4-31 comp_hft_ctls_ 000000 constant entry external dcl 4-35 comp_hft_ctls_$title 000000 constant entry external dcl 4-36 comp_init_$one 000000 constant entry external dcl 4-38 comp_init_$three 000000 constant entry external dcl 4-40 comp_init_$two 000000 constant entry external dcl 4-39 comp_make_page_ 000000 constant entry external dcl 4-44 comp_make_page_$cleanup 000000 constant entry external dcl 4-46 comp_measure_ 000000 constant entry external dcl 4-48 comp_read_$line 000000 constant entry external dcl 4-57 comp_read_$name 000000 constant entry external dcl 4-50 comp_read_$number 000000 constant entry external dcl 4-53 comp_report_$exact 000000 constant entry external dcl 4-64 comp_space_ 000000 constant entry external dcl 4-66 comp_tbl_ctls_ 000000 constant entry external dcl 4-68 comp_update_symbol_ 000000 constant entry external dcl 4-71 comp_use_ref_ 000000 constant entry external dcl 4-74 comp_util_$display 000000 constant entry external dcl 4-77 comp_util_$escape 000000 constant entry external dcl 4-80 comp_util_$num_display 000000 constant entry external dcl 4-84 comp_util_$pageno 000000 constant entry external dcl 4-86 comp_util_$pop 000000 constant entry external dcl 4-91 comp_util_$push 000000 constant entry external dcl 4-92 comp_util_$search_tree 000000 constant entry external dcl 4-98 comp_util_$set_bin 000000 constant entry external dcl 4-100 comp_util_$set_net_page 000000 constant entry external dcl 4-104 comp_util_$translate 000000 constant entry external dcl 4-106 comp_write_block_ 000000 constant entry external dcl 4-108 comp_write_page_ 000000 constant entry external dcl 4-110 compose_severity_ external static fixed bin(35,0) dcl 4-5 const_version internal static fixed bin(35,0) initial dcl 14-17 dot_addltr_symb_index internal static fixed bin(17,0) initial dcl 9-126 fin_ctl_index internal static fixed bin(17,0) initial dcl 3-9 flag_value based bit(1) unaligned dcl 9-132 fntstk_eptr automatic pointer dcl 5-5 footer_break internal static fixed bin(17,0) initial dcl 1-9 footnote_break internal static fixed bin(17,0) initial dcl 1-9 footnote_parms based structure level 1 dcl 6-12 format_break internal static fixed bin(17,0) initial dcl 1-9 ftnct automatic fixed bin(17,0) dcl 59 hfcblk_ptr automatic pointer dcl 11-249 ifi_ctl_index internal static fixed bin(17,0) initial dcl 3-9 init_page_parms based structure level 1 dcl 8-108 iox_$error_output external static pointer dcl 14-74 iox_$user_input external static pointer dcl 14-74 iox_$user_output external static pointer dcl 14-74 just internal static bit(6) initial unaligned dcl 11-148 max_cols internal static fixed bin(17,0) initial dcl 8-7 max_image_lines internal static fixed bin(17,0) initial dcl 8-5 max_text_lines internal static fixed bin(17,0) initial dcl 9-128 mode_string internal static char(16) initial unaligned dcl 9-129 num_value based fixed bin(31,0) dcl 9-133 option_version internal static fixed bin(35,0) initial dcl 7-3 page_image based structure level 1 dcl 8-56 page_image_version internal static fixed bin(35,0) initial dcl 8-53 page_version internal static fixed bin(17,0) initial dcl 8-9 prvtblcol based structure level 1 dcl 10-44 quadc internal static bit(6) initial unaligned dcl 11-148 quadi internal static bit(6) initial unaligned dcl 11-148 quadl internal static bit(6) initial unaligned dcl 11-148 quado internal static bit(6) initial unaligned dcl 11-148 quadr internal static bit(6) initial unaligned dcl 11-148 save_shared based structure level 1 dcl 9-124 shared_version internal static fixed bin(35,0) initial dcl 9-5 string_area based fixed bin(17,0) array dcl 11-43 sys_info$max_seg_size external static fixed bin(18,0) dcl 14-80 tac_ctl_index internal static fixed bin(17,0) initial dcl 3-9 taf_ctl_index internal static fixed bin(17,0) initial dcl 3-9 tblcol0 based structure level 1 dcl 10-41 tblcolndx automatic fixed bin(17,0) dcl 10-22 tblfmtndx automatic fixed bin(17,0) dcl 10-12 tblkdata based structure level 1 dcl 11-5 text_area based structure level 1 dcl 11-36 text_parms based structure level 1 dcl 11-206 tree based structure level 1 dcl 13-5 tree_flags based bit(1) array dcl 13-62 tree_incrs based fixed bin(31,0) array dcl 13-65 tree_names based char(32) array unaligned dcl 13-69 tree_nums based fixed bin(31,0) array dcl 13-72 tree_var based structure array level 1 dcl 13-76 vbot internal static bit(4) initial unaligned dcl 10-48 vcen internal static bit(4) initial unaligned dcl 10-47 vjust internal static bit(4) initial unaligned dcl 10-49 vtop internal static bit(4) initial unaligned dcl 10-46 NAMES DECLARED BY EXPLICIT CONTEXT. BLKLOOP 004723 constant label dcl 336 COL0 003127 constant label dcl 213 COL_LOOP 003031 constant label dcl 198 set ref 699 933 994 1057 1108 1115 1133 1287 1350 1436 1569 1661 1709 1728 1985 2012 2029 2111 FREE_LINES 013172 constant label dcl 1190 NOT_COL0 003770 constant label dcl 251 TRIM_LWS 005472 constant label dcl 394 WIDOW_BLK 007160 constant label dcl 625 allf 023755 constant entry external dcl 3067 block_begin 004745 constant label dcl 342 block_fits 006376 constant label dcl 534 ref 493 501 513 516 529 clean_oflo 023770 constant entry internal dcl 2164 ref 157 163 2161 cleanup 023667 constant entry external dcl 2158 coloop 003042 constant label dcl 200 column_exit 021225 constant label dcl 1885 ref 1146 1733 1740 comp_make_page_ 002016 constant entry external dcl 14 dbf 023743 constant entry external dcl 3062 dbn 023730 constant entry external dcl 3058 dtf 023716 constant entry external dcl 3052 dtn 023703 constant entry external dcl 3048 end_block 017707 constant label dcl 1881 ref 587 flush_page 024116 constant entry internal dcl 2188 ref 1079 1683 1998 flush_return 025616 constant label dcl 2390 ref 2358 free_lines 013012 constant label dcl 1150 inner_keep 007051 constant label dcl 590 ref 523 line_note_oflo 026566 constant label dcl 2493 ref 2475 2485 line_note_return 026642 constant label dcl 2510 ref 2491 oversize_keep 010460 constant label dcl 824 ref 614 722 page_exit 022126 constant label dcl 1990 ref 1117 1136 1143 1716 pull_oflo 031102 constant entry internal dcl 2766 ref 1086 1091 1120 1136 1687 1692 1736 2008 2010 push_oflo 017711 constant entry internal dcl 1746 ref 1064 1671 push_widow 016634 constant label dcl 1579 ref 1520 1566 rebal 003125 constant label dcl 213 ref 463 766 819 1492 return_ 023207 constant label dcl 2125 ref 438 1080 1684 2000 show 033161 constant entry internal dcl 3040 ref 170 170 170 170 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 175 230 230 230 230 230 230 230 230 230 230 230 230 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 238 278 278 303 303 313 313 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 323 379 379 379 379 379 379 379 379 379 379 379 379 379 379 379 379 407 407 455 455 455 455 455 455 559 559 559 559 559 559 559 559 559 559 559 559 559 559 559 559 664 664 664 664 664 664 664 664 664 664 664 664 664 664 664 664 664 664 757 757 810 810 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 904 991 991 1006 1006 1006 1006 1025 1025 1025 1025 1051 1051 1051 1051 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1244 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1319 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1405 1483 1483 1526 1526 1526 1526 1526 1526 1526 1526 1526 1526 1526 1526 1526 1526 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1539 1602 1602 1602 1602 1602 1602 1602 1602 1653 1653 1653 1653 1768 1768 1768 1768 1768 1768 1768 1768 1768 1768 1869 1869 1869 1869 1869 1869 1869 1869 1869 1869 1869 1869 1869 1869 1932 1932 1932 1932 1932 1932 1932 1932 1932 1932 1932 1932 1932 1932 1979 1979 1979 1979 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2074 2089 2089 2089 2089 2089 2089 2089 2089 2139 2139 2139 2139 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2145 2200 2200 2200 2200 2200 2200 2223 2223 2261 2261 2324 2324 2324 2324 2324 2324 2405 2405 2405 2405 2405 2405 2405 2405 2439 2439 2439 2439 2439 2439 2439 2439 2439 2439 2460 2460 2460 2460 2460 2460 2460 2460 2510 2510 2510 2510 2510 2510 2510 2510 2510 2510 2553 2553 2612 2612 2612 2612 2612 2612 2612 2612 2645 2645 2645 2645 2645 2645 2645 2645 2645 2645 2645 2645 2676 2676 2676 2676 2676 2676 2676 2676 2676 2676 2676 2676 2750 2750 2750 2750 2789 2789 2789 2789 2789 2789 2789 2789 2789 2789 2789 2789 3032 3032 3032 3032 3032 3032 split_block 016656 constant label dcl 1588 ref 961 1205 1433 1457 split_keep 011550 constant label dcl 950 ref 893 930 split_note 027535 constant label dcl 2622 ref 2565 take_a_note 027037 constant entry internal dcl 2525 ref 2425 2473 2484 take_block_notes 025647 constant entry internal dcl 2398 ref 583 take_line_notes 026324 constant entry internal dcl 2450 ref 691 928 1285 1348 1427 1564 take_orphan 027335 constant label dcl 2600 ref 2578 wont_fit 011601 constant label dcl 968 ref 601 617 696 737 776 842 1293 NAME DECLARED BY CONTEXT OR IMPLICATION. unspec builtin function ref 2183 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 33546 34376 33217 33556 Length 35450 33217 630 1036 327 552 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME comp_make_page_ 732 external procedure is an external procedure. on unit on line 155 70 on unit on unit on line 161 64 on unit begin block on line 342 1304 begin block uses auto adjustable storage. push_oflo internal procedure shares stack frame of begin block on line 342. clean_oflo 74 internal procedure is called by several nonquick procedures. flush_page 182 internal procedure enables or reverts conditions. take_block_notes internal procedure shares stack frame of begin block on line 342. take_line_notes internal procedure shares stack frame of begin block on line 342. take_a_note internal procedure shares stack frame of begin block on line 342. pull_oflo 244 internal procedure is called by several nonquick procedures. show 94 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 oflo comp_make_page_ 000406 pagusd comp_make_page_ 000407 pgc_select comp_make_page_ 000410 dt_sw comp_make_page_ 000411 db_sw comp_make_page_ 000412 footref_array pull_oflo 000461 footrefstr pull_oflo STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 342 000100 loclindx begin block on line 342 000102 loclin begin block on line 342 000246 ii push_oflo 000247 jj push_oflo 000250 oblkct push_oflo 000252 olinptr push_oflo 000320 jj take_block_notes 000342 jj take_a_note 000343 flin take_a_note 000344 flin_moved take_a_note 000345 flin_oflo take_a_note 000346 flin_start take_a_note 000347 flin_top take_a_note 000350 ftnlinptr take_a_note 000352 ftnwidow take_a_note 000354 line_area_move take_a_note 000356 line_area_start take_a_note 000360 locolusd take_a_note 000362 newftnptr take_a_note 000364 widftnusd take_a_note comp_make_page_ 000100 balnet comp_make_page_ 000101 balusd comp_make_page_ 000102 bal_sw comp_make_page_ 000103 blkftnct comp_make_page_ 000104 blkftnusd comp_make_page_ 000105 blk_mod comp_make_page_ 000106 blk_split comp_make_page_ 000107 blkno comp_make_page_ 000110 blkusd comp_make_page_ 000112 blkptr comp_make_page_ 000114 bug_sw comp_make_page_ 000115 cap_count comp_make_page_ 000116 coldepth comp_make_page_ 000117 coldisc comp_make_page_ 000144 colftn comp_make_page_ 000216 colhdrusd comp_make_page_ 000217 colnet comp_make_page_ 000220 colusd comp_make_page_ 000221 curbalblk comp_make_page_ 000222 dfrftn comp_make_page_ 000274 done comp_make_page_ 000275 force_bal comp_make_page_ 000276 force_this_page comp_make_page_ 000300 ftnblkptr comp_make_page_ 000302 ftn_held comp_make_page_ 000303 ftndx comp_make_page_ 000304 ftnusd comp_make_page_ 000305 head_used comp_make_page_ 000306 i comp_make_page_ 000307 j comp_make_page_ 000310 k comp_make_page_ 000311 iblk comp_make_page_ 000312 icol comp_make_page_ 000313 ilin comp_make_page_ 000314 keeping comp_make_page_ 000315 keepsz comp_make_page_ 000316 last_line comp_make_page_ 000317 last_unbal comp_make_page_ 000320 line_area_ndx comp_make_page_ 000321 linftnct comp_make_page_ 000322 maxcoldepth comp_make_page_ 000323 maxcolusd comp_make_page_ 000324 mincolusd comp_make_page_ 000325 need_page comp_make_page_ 000326 note_oflo comp_make_page_ 000330 ofloblkptr comp_make_page_ 000332 orph_ftn comp_make_page_ 000333 orphftnct comp_make_page_ 000334 orphftnusd comp_make_page_ 000335 pagenet comp_make_page_ 000336 pagoflo comp_make_page_ 000337 rebalnet comp_make_page_ 000340 rebal_sw comp_make_page_ 000341 savblkusd comp_make_page_ 000342 savcolftn comp_make_page_ 000414 savcolusd comp_make_page_ 000415 savftnct comp_make_page_ 000416 savftnusd comp_make_page_ 000417 spcl_line comp_make_page_ 000620 spcl_linespace comp_make_page_ 000621 spcl_lndx comp_make_page_ 000622 text_added comp_make_page_ 000623 tmpdepth comp_make_page_ 000624 tmpnet comp_make_page_ 000625 tmpusd comp_make_page_ 000626 unbal comp_make_page_ 000627 widct comp_make_page_ 000630 widow comp_make_page_ 000631 widsiz comp_make_page_ 000632 widusd comp_make_page_ 000656 locolptr comp_make_page_ 000660 newcol_ptr comp_make_page_ 000662 tblfmtptr comp_make_page_ 000664 tblcolptr comp_make_page_ 000666 prvtblcolptr comp_make_page_ 000670 line_area_ptr comp_make_page_ 000672 text_area_ptr comp_make_page_ 000674 txtstrptr comp_make_page_ 000676 txtlinptr comp_make_page_ 000700 tree_names_ptr comp_make_page_ 000702 tree_var_ptr comp_make_page_ flush_page 000100 ii flush_page 000101 jj flush_page 000102 locblkptr flush_page 000104 save_tmode flush_page pull_oflo 000100 ftnref pull_oflo 000101 ii pull_oflo 000102 jj pull_oflo 000103 jjj pull_oflo 000104 kk pull_oflo 000105 pull_blk pull_oflo 000106 splthdr pull_oflo THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_cs cat_realloc_cs enter_begin leave_begin call_var_desc call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext alloc_auto_adj mpfx2 mpfx3 mod_fx1 signal enable shorten_stack ext_entry int_entry ceil_fx1 floor_fx1 set_cs_eis index_cs_eis real_to_real_tr divide_fx1 divide_fx2 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. comp_art_ comp_break_ comp_ctls_ comp_eject_page_ comp_head_page_ comp_insert_ctls_ comp_report_ comp_report_$ctlstr comp_title_block_ comp_util_$add_text comp_util_$getblk comp_util_$pictures comp_util_$relblk comp_util_$replace_text continue_to_signal_ ioa_ ioa_$nnl THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. comp_error_table_$program_error compstat$compconst LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 61 001777 63 002000 10 24 002001 10 43 002003 11 25 002004 11 35 002005 13 68 002006 13 75 002007 14 002012 129 002024 131 002034 135 002060 137 002062 138 002070 145 002123 147 002130 148 002132 149 002144 150 002151 151 002156 152 002161 153 002167 155 002204 157 002220 158 002225 159 002235 155 002236 161 002243 163 002257 164 002264 165 002273 167 002274 170 002276 175 002412 187 002764 189 003006 191 003013 192 003017 194 003021 195 003027 196 003030 198 003031 200 003042 202 003053 203 003054 205 003060 206 003066 207 003070 209 003112 211 003124 213 003125 218 003127 220 003143 225 003170 227 003175 230 003177 238 003431 249 003767 254 003770 258 004015 261 004020 264 004022 267 004025 269 004030 270 004043 272 004052 276 004060 278 004062 282 004137 284 004141 287 004152 289 004160 298 004216 303 004226 306 004263 308 004264 311 004265 313 004270 316 004334 318 004335 323 004350 336 004713 340 004736 342 004741 348 004750 354 004761 355 004762 358 005001 359 005020 360 005021 361 005027 362 005031 363 005034 364 005036 366 005042 367 005043 373 005067 376 005072 377 005076 379 005100 394 005427 401 005472 404 005504 407 005512 412 005556 413 005567 417 005571 420 005602 422 005615 423 005636 424 005646 425 005650 427 005661 430 005670 434 005707 436 005715 437 005717 438 005721 442 005724 445 005733 453 005756 455 005757 463 006072 467 006075 468 006077 469 006112 470 006116 471 006120 472 006122 474 006124 479 006147 481 006153 484 006157 487 006174 490 006210 492 006212 493 006223 496 006224 497 006225 501 006250 504 006265 507 006273 510 006276 513 006316 516 006317 523 006352 528 006373 529 006375 534 006376 537 006402 538 006414 540 006420 543 006423 544 006424 546 006425 549 006454 553 006455 556 006457 559 006474 575 007011 578 007016 580 007021 583 007027 586 007035 587 007050 590 007051 592 007053 593 007057 595 007062 598 007066 601 007100 604 007101 607 007105 610 007111 611 007113 612 007115 613 007117 614 007122 617 007123 620 007124 621 007125 622 007131 623 007136 625 007141 634 007160 635 007164 638 007165 639 007167 641 007172 643 007211 645 007216 648 007221 649 007223 650 007234 651 007235 652 007237 654 007240 657 007267 661 007270 662 007272 664 007274 688 007675 691 007705 692 007713 695 007720 696 007722 699 007723 703 007730 706 007742 707 007744 709 007751 712 007752 716 007770 718 007773 721 010007 722 010011 725 010012 728 010017 729 010021 730 010024 731 010026 732 010032 734 010035 737 010055 739 010056 743 010057 748 010064 754 010102 757 010105 762 010153 763 010163 764 010207 765 010211 766 010213 770 010216 771 010220 772 010222 773 010224 774 010226 775 010232 776 010234 780 010235 783 010241 785 010243 792 010253 799 010307 807 010344 810 010350 815 010416 816 010426 817 010451 818 010453 819 010455 824 010460 826 010465 827 010470 831 010514 832 010516 834 010521 837 010525 839 010532 840 010534 841 010537 842 010541 845 010542 848 010552 850 010556 856 010617 859 010622 862 010632 865 010655 867 010660 868 010661 870 010673 872 010702 876 010705 879 010713 882 010727 885 010732 886 010735 887 010746 888 010747 890 010766 891 010770 893 010772 899 011023 901 011030 902 011032 904 011034 925 011433 928 011443 930 011451 933 011454 937 011461 940 011472 944 011534 947 011544 948 011546 950 011550 953 011556 956 011560 957 011566 960 011570 961 011571 964 011572 965 011574 966 011577 968 011601 971 011604 976 011621 980 011644 982 011646 985 011654 988 011670 989 011672 991 011674 994 011736 997 011741 1000 011744 1006 011760 1011 012053 1012 012066 1013 012075 1016 012102 1020 012115 1025 012122 1030 012216 1032 012221 1035 012240 1036 012251 1044 012274 1045 012277 1048 012303 1049 012304 1051 012306 1056 012373 1057 012376 1064 012401 1067 012402 1070 012422 1073 012424 1075 012451 1079 012455 1080 012462 1083 012474 1084 012503 1086 012505 1091 012523 1092 012536 1093 012546 1096 012551 1100 012567 1106 012614 1108 012632 1110 012635 1115 012637 1117 012651 1120 012654 1123 012671 1126 012705 1130 012710 1131 012711 1133 012726 1136 012731 1143 012761 1146 013007 1150 013012 1155 013015 1158 013022 1161 013035 1162 013037 1164 013051 1166 013060 1169 013066 1170 013071 1171 013072 1172 013073 1173 013074 1175 013101 1178 013107 1179 013121 1180 013127 1183 013133 1185 013162 1190 013172 1192 013204 1194 013210 1198 013227 1200 013243 1202 013246 1203 013247 1205 013255 1208 013256 1211 013261 1215 013307 1216 013325 1217 013333 1220 013367 1221 013371 1225 013372 1229 013375 1230 013402 1231 013404 1233 013405 1234 013407 1236 013411 1237 013426 1239 013432 1242 013435 1244 013437 1272 014050 1274 014060 1277 014061 1281 014077 1285 014105 1287 014113 1290 014121 1293 014124 1298 014132 1299 014134 1301 014140 1302 014142 1306 014143 1308 014145 1311 014151 1313 014170 1315 014171 1319 014207 1344 014604 1348 014614 1350 014622 1353 014630 1355 014633 1402 014640 1403 014642 1405 014644 1424 015215 1427 015225 1429 015233 1432 015236 1433 015241 1436 015242 1441 015247 1444 015254 1447 015264 1452 015326 1453 015336 1456 015337 1457 015341 1461 015342 1464 015361 1466 015366 1469 015371 1474 015403 1478 015427 1483 015441 1488 015510 1489 015520 1490 015543 1491 015545 1492 015547 1497 015552 1498 015554 1499 015556 1500 015560 1501 015562 1504 015565 1507 015611 1508 015614 1509 015615 1510 015626 1511 015632 1512 015634 1514 015636 1517 015651 1520 015671 1523 015672 1524 015674 1526 015676 1536 016140 1537 016152 1539 016156 1557 016547 1560 016567 1564 016604 1566 016612 1569 016615 1572 016622 1574 016625 1579 016634 1581 016637 1582 016641 1583 016643 1584 016645 1585 016650 1588 016656 1590 016665 1592 016670 1595 016676 1600 016715 1602 016720 1613 017064 1617 017077 1618 017104 1622 017114 1623 017126 1624 017135 1627 017143 1631 017154 1635 017161 1637 017163 1638 017173 1646 017216 1648 017221 1651 017225 1653 017226 1659 017313 1660 017316 1661 017320 1668 017323 1671 017336 1674 017352 1676 017362 1680 017377 1683 017406 1684 017413 1687 017425 1692 017444 1693 017457 1694 017467 1697 017474 1701 017512 1706 017534 1708 017552 1709 017555 1711 017560 1713 017562 1714 017571 1716 017602 1728 017645 1733 017650 1736 017655 1739 017674 1740 017704 1881 017707 1746 017711 1756 017712 1758 017724 1761 017727 1764 017777 1765 020002 1768 020003 1777 020235 1778 020240 1781 020242 1782 020247 1783 020272 1785 020275 1788 020300 1791 020304 1793 020334 1795 020340 1797 020344 1800 020356 1801 020363 1802 020372 1803 020376 1804 020400 1807 020402 1808 020415 1810 020421 1813 020450 1814 020461 1815 020464 1817 020466 1820 020473 1822 020502 1825 020505 1827 020513 1829 020517 1832 020523 1833 020525 1835 020527 1837 020534 1838 020540 1839 020542 1840 020544 1841 020546 1842 020550 1845 020552 1846 020565 1847 020603 1848 020611 1850 020614 1853 020616 1854 020620 1855 020627 1856 020631 1857 020636 1859 020640 1861 020642 1862 020661 1863 020663 1864 020665 1865 020671 1866 020676 1867 020721 1869 020725 1879 021222 1883 021223 1885 021225 1889 021241 1890 021246 1892 021252 1893 021261 1897 021301 1898 021302 1900 021310 1904 021313 1905 021315 1906 021317 1907 021321 1908 021323 1909 021325 1911 021331 1914 021333 1917 021337 1918 021346 1919 021350 1923 021372 1925 021400 1928 021406 1930 021423 1932 021440 1942 021670 1946 021711 1947 021713 1948 021716 1952 021724 1953 021733 1954 021742 1955 021746 1959 021760 1963 021765 1965 021767 1966 021777 1972 022022 1974 022025 1977 022034 1979 022036 1983 022117 1984 022121 1985 022123 1988 022124 1990 022126 1998 022143 2000 022157 2003 022166 2005 022172 2008 022176 2010 022217 2012 022232 2015 022253 2019 022254 2021 022264 2022 022267 2025 022273 2028 022302 2029 022304 2033 022305 2034 022307 2035 022325 2036 022341 2037 022346 2039 022350 2040 022362 2043 022366 2047 022402 2048 022405 2049 022407 2051 022411 2052 022424 2053 022435 2055 022444 2058 022446 2059 022452 2060 022454 2064 022455 2067 022463 2070 022466 2071 022471 2072 022474 2074 022476 2082 022735 2084 022740 2086 022756 2087 022757 2089 022764 2096 023126 2100 023142 2101 023151 2102 023160 2103 023162 2104 023165 2105 023170 2107 023172 2108 023177 2109 023201 2110 023204 2111 023206 2125 023207 2136 023220 2139 023222 2145 023341 2156 023665 2158 023666 2161 023675 2162 023701 3048 023702 3050 023711 3051 023714 3052 023715 3054 023724 3055 023726 3058 023727 3060 023736 3061 023741 3062 023742 3064 023751 3065 023753 3067 023754 3069 023763 3070 023766 2164 023767 2167 023775 2168 024006 2169 024011 2172 024036 2174 024041 2181 024071 2183 024074 2184 024100 2186 024114 2188 024115 2195 024123 2197 024140 2198 024145 2200 024147 2206 024274 2207 024307 2208 024314 2210 024322 2212 024327 2213 024332 2215 024336 2220 024356 2223 024360 2227 024421 2228 024426 2231 024430 2232 024443 2233 024457 2234 024464 2237 024466 2241 024477 2242 024503 2244 024504 2246 024515 2248 024526 2254 024547 2255 024551 2257 024553 2258 024556 2259 024562 2261 024566 2265 024632 2267 024637 2269 024645 2272 024647 2273 024655 2277 024657 2282 024705 2283 024715 2284 024717 2285 024722 2286 024730 2289 024741 2293 024751 2300 024764 2302 025014 2305 025025 2307 025043 2308 025054 2309 025060 2310 025063 2311 025065 2312 025067 2314 025073 2316 025075 2317 025077 2318 025113 2319 025123 2320 025130 2322 025132 2324 025143 2329 025270 2330 025300 2331 025302 2332 025306 2334 025317 2339 025324 2342 025333 2343 025344 2345 025364 2347 025370 2348 025400 2349 025414 2351 025420 2356 025451 2358 025456 2361 025457 2362 025461 2363 025463 2364 025477 2365 025501 2368 025505 2372 025516 2374 025524 2377 025544 2378 025555 2380 025557 2383 025575 2384 025605 2386 025607 2390 025616 2393 025646 2398 025647 2405 025650 2411 026011 2413 026013 2418 026044 2420 026047 2423 026050 2425 026060 2428 026065 2430 026067 2433 026103 2434 026105 2435 026111 2436 026121 2437 026125 2439 026127 2447 026323 2450 026324 2457 026326 2458 026331 2460 026332 2467 026472 2468 026506 2471 026517 2472 026520 2473 026526 2475 026533 2477 026536 2479 026537 2482 026544 2483 026545 2484 026555 2485 026556 2487 026561 2489 026562 2490 026563 2491 026565 2493 026566 2497 026572 2500 026606 2501 026622 2503 026624 2504 026630 2505 026631 2506 026634 2508 026636 2510 026642 2523 027036 2525 027037 2548 027040 2549 027051 2553 027101 2558 027177 2561 027205 2565 027212 2569 027221 2571 027240 2572 027245 2578 027246 2581 027247 2586 027256 2590 027303 2592 027321 2593 027326 2596 027327 2600 027335 2604 027350 2605 027351 2608 027361 2609 027362 2610 027366 2612 027371 2618 027534 2622 027535 2627 027553 2630 027567 2631 027570 2633 027572 2635 027605 2639 027632 2640 027633 2641 027635 2642 027636 2643 027640 2645 027641 2655 030072 2656 030074 2658 030102 2662 030121 2663 030122 2666 030131 2670 030154 2671 030155 2672 030157 2673 030160 2674 030162 2676 030163 2689 030414 2690 030416 2691 030420 2694 030426 2695 030430 2698 030434 2699 030435 2700 030437 2701 030440 2702 030441 2704 030444 2710 030515 2711 030525 2714 030557 2716 030570 2717 030576 2718 030601 2719 030602 2721 030611 2722 030621 2724 030652 2725 030653 2726 030655 2727 030657 2729 030665 2730 030670 2731 030676 2732 030700 2733 030703 2734 030707 2736 030713 2737 030715 2738 030720 2740 030726 2741 030732 2745 030733 2747 030751 2750 030756 2755 031061 2759 031062 2760 031063 2764 031100 2766 031101 2787 031107 2789 031120 2801 031370 2804 031373 2805 031401 2807 031405 2811 031421 2812 031422 2817 031443 2820 031463 2821 031466 2825 031470 2828 031477 2829 031507 2830 031522 2832 031525 2834 031526 2838 031536 2839 031537 2840 031541 2842 031571 2843 031600 2844 031610 2845 031622 2846 031624 2847 031633 2850 031640 2854 031660 2855 031664 2856 031667 2858 031721 2859 031730 2860 031741 2861 031753 2862 031756 2865 031757 2868 031762 2869 031771 2871 032001 2873 032004 2874 032015 2875 032023 2878 032025 2879 032032 2881 032034 2882 032036 2883 032040 2885 032042 2886 032052 2887 032054 2889 032062 2890 032071 2892 032076 2894 032110 2895 032116 2896 032121 2898 032124 2901 032127 2906 032135 2907 032136 2909 032145 2912 032165 2915 032170 2916 032173 2922 032201 2926 032231 2927 032241 2929 032247 2932 032257 2934 032264 2937 032302 2939 032304 2945 032321 2947 032357 2949 032376 2953 032435 2954 032444 2956 032447 2957 032451 2958 032460 2959 032463 2962 032510 2963 032516 2964 032520 2966 032527 2975 032571 2976 032574 2978 032603 2982 032610 2983 032615 2984 032617 2985 032621 2986 032627 2988 032631 2992 032644 2995 032647 2998 032663 2999 032666 3001 032670 3003 032673 3005 032675 3007 032700 3008 032702 3009 032704 3010 032706 3012 032722 3013 032731 3014 032743 3016 032745 3018 032760 3022 032767 3024 033000 3026 033002 3029 033017 3030 033023 3032 033027 3038 033157 3040 033160 3044 033166 ----------------------------------------------------------- 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