COMPILATION LISTING OF SEGMENT ascii_writer_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/23/85 1126.4 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 support routine to write output to ascii terminals (class printer) */ 11 12 /* PREFACE 13*/* This program handles length and distance values in "picture elements" 14*/* (pixels). These are the native units in the machine and, sooner or later, 15*/* all internal length and distance values have to be converted to pixels to 16*/* actually get device output. In some cases the vertical and horizontal 17*/* pixels are not of the same size, i.e. a Diablo-type typewriter has 18*/* 60/inch horizontally and 48/inch vertically. 19* 20*/* All values which are fixed bin (31) are in millipoints. 21* 22*/* Debugging tools--- 23*/* There are several switches that control debugging output from a writer-- 24*/* shared.bug_mode db_sw dt_sw lg_sw 25*/* debug_sw detail_sw long_sw 26*/* shared.bug_mode is set via the family of -db arguments. It means that all 27*/* of compose is being debugged. 28*/* db_sw, dt_sw, lg_sw (static) are set by the entries dbn, dtn, and lgn */ 29 /* respectively. They are reset by the entries dbf, dtf, and lgf. */ 30 31 /* These switches interact with each other. In order to reduce the amount of */ 32 /* code executed when not debugging, these interactions are distilled into */ 33 /* automatic switches, debug_sw, detail_sw, and long_sw with this logic. */ 34 /* debug_sw = (shared.bug_mode | db_sw); */ 35 /* detail_sw = debug_sw & dt_sw; */ 36 /* long_sw = debug_sw & lg_sw; */ 37 /* debug_sw controls these outputs-- */ 38 /* -- entry and exit notification */ 39 /* -- an interpretation of each line of the input structure before it is */ 40 /* acted upon. */ 41 /* -- gap count error notification */ 42 /* detail_sw controls these outputs-- */ 43 /* -- justification calculations */ 44 /* -- device control (DCxx) display */ 45 /* -- plot trace */ 46 /* -- put_ trace */ 47 /* -- set_font trace */ 48 /* -- set_media trace */ 49 /* long_sw controls these outputs-- */ 50 /* -- shows the justified text line */ 51 /* -- shows detailed Multics/device translation (simple) */ 52 53 /* This is a 10 pitch ascii typewriter. It has no plotting capability. There */ 54 /* is an attempt to represent artwork constructs in an understandable */ 55 /* (if not always pretty) fashion. */ 56 57 58 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 59 60 ascii_writer_: 61 proc (func, code); 62 63 /* PARAMETERS */ 64 65 dcl func fixed bin; /* function code */ 66 /* 0 = build a page */ 67 /* 1 = initialize a page */ 68 /* 2 = initialize a file */ 69 /* 3 = clean up */ 70 /* 4 = prepare epilogue */ 71 dcl code fixed bin (35); /* error code */ 72 73 /* LOCAL STORAGE */ 74 75 dcl auto_lead fixed bin (31); /* automatic baseline advance */ 76 dcl BAD_CHAR char (1) static options (constant) init ("ÿ"); 77 /* list of bad font chars */ 78 dcl bad_chrs char (128) var static; 79 dcl char_ndx fixed bin; /* index into font table */ 80 dcl col_width fixed bin (31); /* calculated column width */ 81 dcl debug_str char (1020) var; 82 dcl debug_sw bit (1); 83 dcl detail_sw bit (1); 84 dcl dev_stat_ptr ptr static init (null ()); 85 dcl EM_width fixed bin (31); /* width of EM */ 86 dcl EN_width fixed bin (31); /* width of EN */ 87 dcl fcdevfnt fixed bin; /* device font needed by a char */ 88 dcl fcwidth fixed bin (31); /* font char width */ 89 dcl first_line bit (1) static; 90 dcl first_page bit (1) aligned static init ("0"b); 91 dcl font_in fixed bin; /* current font */ 92 dcl font_size fixed bin (31); /* point size in current font */ 93 dcl fonts_done bit (36); /* which fonts have been processed */ 94 dcl fonts_needed bit (36); /* which fonts have been requested */ 95 dcl hot_chars char (35) static options (constant) 96 init (" 97 þÿ"); 98 dcl (i, j, jj, k, ll) 99 fixed bin; 100 dcl ichr fixed bin; /* index to current text character */ 101 dcl ilin fixed bin static;/* page image line counter */ 102 dcl just_line char (1020) var; /* the justified line */ 103 dcl lineinfoptr ptr; /* -> info structure for image line */ 104 dcl line_window_size /* # of window lines per output line */ 105 fixed bin; 106 dcl Lmarg fixed bin (31); /* left margin */ 107 dcl loctxt char (1020) var; /* max rev leading allowed */ 108 dcl long_sw bit (1); 109 dcl max_level fixed bin; 110 dcl max_revlead fixed bin (31) static; 111 dcl font_media (36) fixed bin; /* media needed by the fonts */ 112 dcl media_size fixed bin (31); /* point size in media */ 113 dcl medselstr char (32) var; /* emitted medsel string */ 114 dcl need_font fixed bin; /* needed font */ 115 dcl need_devfnt fixed bin; /* device font for needed font */ 116 dcl need_size fixed bin (31); /* needed size */ 117 dcl NULs char (4) var static options (constant) init (""); 118 dcl pref_sw bit (1); /* effective preface switch */ 119 dcl quad bit (6); /* alignment flags */ 120 dcl runout fixed bin; /* # NLs for page runout */ 121 dcl SHIFT_OP bit (1) static options (constant) init ("0"b); 122 /* device status info */ 123 dcl stat_blk (100) fixed bin (35) static init ((100) 0); 124 /* The developer of a device writer */ 125 /* may use this block (by defining a */ 126 /* based overlay) to hold any */ 127 /* necessary device status info. */ 128 /* Note that the first word is */ 129 /* initialized to -1 for each page, */ 130 /* thus any overlay should keep it */ 131 /* fixed bin (35) and assure that */ 132 /* all special device modes are */ 133 /* reset at the end of each page. */ 134 dcl text_sw bit (1); 135 dcl text_width fixed bin (31); /* local text width */ 136 dcl tchr char (1); /* local text char */ 137 dcl THIN_width fixed bin (31); /* width of THIN */ 138 dcl tstr_ptr ptr; /* text string */ 139 dcl 1 tstr aligned based (tstr_ptr), 140 2 open bit (1) unal, /* line has something */ 141 2 white bit (1) unal, /* line is white */ 142 2 MBZ bit (16) unal, 143 2 devfnt fixed bin unal, /* starting device font for line */ 144 2 last_cr fixed bin unal, /* position of last CR or NL */ 145 2 font fixed bin unal, /* font being processed */ 146 2 xpos fixed bin (31), /* X position */ 147 2 ypos fixed bin (31), /* Y position */ 148 2 w fixed bin (31), /* width of str */ 149 2 str_ptr ptr; 150 dcl tstr_line char (2048) var based (tstr.str_ptr); 151 dcl txtlen fixed bin; /* length of txtstr */ 152 dcl unstart fixed bin (31); /* start of underscore */ 153 dcl unstring bit (1) static; /* underscoring is active */ 154 dcl VECTOR_OP bit (1) static options (constant) init ("1"b); 155 dcl window_area_ptr /* points to current window area seg */ 156 ptr static init (null); 157 dcl window_bottom fixed bin static init (0); 158 dcl window_level fixed bin; 159 dcl window_ptr ptr static init (null); 160 dcl 1 window (window_top:window_bottom) aligned like tstr 161 based (window_ptr); 162 dcl window_top fixed bin static init (0); 163 dcl word char (4090) var; /* word accumulator */ 164 dcl wrdwidth fixed bin (31); /* word width in MPTS */ 165 dcl Xmov fixed bin (31); /* horizontal CTL movement */ 166 dcl Xmptstrk fixed bin (31); /* horizontal mpt -> stroke conv */ 167 dcl Xpixel fixed bin (31); /* horizontal pixel size */ 168 dcl Xpos fixed bin (31); /* current horizontal position */ 169 dcl Xspc fixed bin (31); /* horizontal movement */ 170 dcl Xmpts fixed bin (31); /* temp horiz value */ 171 dcl Yinit fixed bin (31); /* initial page depth */ 172 dcl Ymov fixed bin (31); /* vertical CTL movement */ 173 dcl Ypixel fixed bin (31); /* vertical pixel size */ 174 dcl Ypos fixed bin (31); /* current vertical position */ 175 dcl Yspc fixed bin (31); /* vertical movement */ 176 dcl Ympts fixed bin (31); /* temp vert value */ 177 178 dcl (addr, bin, divide, fixed, index, length, max, min, mod, null, pointer, 179 size, string, substr, unspec) 180 builtin; 181 dcl (cleanup, comp_abort, null_font_char, overlength_line, zero_font_index) 182 condition; 183 184 dcl error_table_$fatal_error 185 fixed bin (35) ext static; 186 dcl error_table_$unimplemented_version 187 fixed bin (35) ext static; 188 dcl comp_error_table_$limitation 189 fixed bin (35) ext static; 190 dcl comp_error_table_$program_error 191 fixed bin (35) ext static; 192 193 dcl ioa_$rs entry options (variable); 194 dcl ioa_$rsnnl entry options (variable); 195 dcl translator_temp_$get_segment 196 entry (char (*) aligned, ptr, fixed bin (35)); 197 dcl translator_temp_$release_all_segments 198 entry (ptr, fixed bin (35)); 199 /**** &dcls FOR ascii */ 200 dcl 1 bead (8192) aligned, /* bead structure for canonizing */ 201 2 loc fixed bin, /* column position */ 202 2 char char (1); /* the character */ 203 dcl beadct fixed bin; /* count of beads */ 204 /* bead array for debug */ 205 dcl 1 beads (beadct) aligned based (beadp), 206 2 loc fixed bin, 207 2 char char (1); 208 dcl beadp ptr; 209 dcl BSCR char (2) static options (constant) init (" "); 210 dcl d fixed bin; /* bead separation for sorting */ 211 dcl icol fixed bin; /* working column position */ 212 dcl ii fixed bin; /* working index */ 213 dcl MAX_STR fixed bin static options (constant) init (1024); 214 dcl ocol fixed bin; /* working column position */ 215 dcl PENDOWN char (1) init ("_") static options (constant); 216 dcl PENUP char (1) init (" ") static options (constant); 217 dcl scndx fixed bin (21); /* output scanning index */ 218 dcl space fixed bin; /* bead separation space */ 219 dcl swps fixed bin; /* # of swaps in a sort pass */ 220 /* temp for sorting beads */ 221 dcl tbead bit (72) aligned; 222 223 dcl (char, copy, search, rank) 224 builtin; 225 /**** END ascii */ 226 227 code = 0; /* clear error code */ 228 229 if func = 3 /* clean up */ 230 then 231 do; 232 /**** &cleanup FOR ascii */ 233 /**** NO CODE *//**** END ascii */ 234 return; 235 end; 236 237 if func = 1 /* new page */ 238 then 239 do; 240 init: 241 entry; /* called by pco */ 242 stat_blk (*) = 0; 243 stat_blk (1) = -1; 244 dev_stat_ptr = addr (stat_blk); 245 return; 246 end; 247 248 if func = 2 /* new input file */ 249 then 250 do; 251 myself: /* check structure versions */ 252 const.outproc_ptr = codeptr (myself); 253 if shared.version ^= shared_version 254 | option.version ^= option_version | page.version ^= page_version 255 | comp_dvid.version ^= comp_dvid_version 256 then 257 do; 258 code = error_table_$unimplemented_version; 259 if db_sw 260 then 261 do; 262 call ioa_ (" shared.version=^i", shared.version); 263 call ioa_ (" shared_version=^i", shared_version); 264 call ioa_ (" option.version=^i", option.version); 265 call ioa_ (" option_version=^i", option_version); 266 call ioa_ (" page.version=^i", page.version); 267 call ioa_ (" page_version=^i", page_version); 268 call ioa_ (" dvid.version=^i", comp_dvid.version); 269 call ioa_ (" dvid_version=^i", comp_dvid_version); 270 end; 271 return; 272 end; 273 274 bad_chrs = ""; 275 unstring = "0"b; 276 first_page = "1"b; 277 /**** &file_init FOR ascii */ 278 max_revlead = 0; /* ascii cant back up *//**** END ascii */ 279 return; 280 end; /**/ 281 /* set debug switches */ 282 debug_sw, detail_sw, long_sw, pref_sw, text_sw = "0"b; 283 debug_sw = (shared.bug_mode | db_sw); 284 detail_sw = debug_sw & dt_sw; 285 long_sw = debug_sw & lg_sw; 286 text_sw = debug_sw & tx_sw; 287 pref_sw = debug_sw & pf_sw; 288 289 if func = 4 /* prepare epilogue */ 290 then 291 do; 292 page_record_ptr = addr (page_image.text_ptr -> record.page_record); 293 unspec (page_record) = "0"b; 294 /**** &epilogue FOR ascii */ 295 /**** NO CODE *//**** END ascii */ 296 return; 297 end; 298 299 /* func = 0 build page */ 300 line_window_size = divide (12000, comp_dvt.min_lead, 17, 0); 301 window_top = -line_window_size; 302 window_bottom = divide (page.parms.length, comp_dvt.min_lead, 17, 0); 303 304 if debug_sw 305 then call 306 ioa_ ("ascii_writer_(^a): (pag=^a lct=^d lvl=^d:^d)", 307 option.device, page.hdr.pageno, page_image.count, window_top, 308 window_bottom); 309 310 if page_image.count = 0 311 then 312 do; 313 call 314 comp_report_ (4, 0, "No output lines on page " || page.hdr.pageno, 315 addr (ctl.info), ""); 316 return; 317 end; 318 319 on cleanup call release_window; /**/ 320 /* preset local stuff */ 321 auto_lead, font_in, need_devfnt, media_size, font_size, Xpos, Ypos, Yinit, 322 font_media (*) = 0; 323 Xpixel = comp_dvt.min_WS; 324 Ypixel = comp_dvt.min_lead; 325 page_record_ptr = addr (page_image.text_ptr -> record.page_record); 326 /**** &page_init FOR ascii */ 327 beadp = addr (bead); 328 /**** END DEVICE ascii */ 329 rescan_page: /* (re)starting page */ 330 /* get storage for output image */ 331 call translator_temp_$get_segment ("compose", window_area_ptr, ercd); 332 if ercd ^= 0 333 then 334 do; 335 call com_err_ (ercd, "compose", "Defining an output window area."); 336 signal cleanup; 337 return; 338 end; 339 340 Xspc, Yspc = 0; 341 342 window_ptr = allocate (window_area_ptr, 343 (window_bottom - window_top + 1) * size (tstr)); 344 unspec (window) = "0"b; 345 window.str_ptr = null; 346 unspec (page_record) = "0"b; 347 first_line = "1"b; 348 window_level, max_level = 0; 349 tstr_ptr = addr (window (0)); 350 if tstr.str_ptr = null 351 then tstr.str_ptr = allocate (window_area_ptr, 1024); 352 tstr_line = ""; 353 tstr.devfnt = 0; 354 355 /**** &image_init FOR ascii */ 356 /**** NO CODE */ 357 /**** END ascii */ 358 if debug_sw 359 then call 360 ioa_ (":iln fn/ln ch/gp lmarg rmarg width depth" 361 || " lead s med fnt sz"); 362 363 image_loop: 364 do ilin = 1 to page_image.count; /* for all given image lines */ 365 debug_sw, detail_sw, long_sw, text_sw = "0"b; 366 fonts_done, fonts_needed ="0"b; 367 Lmarg, col_width, text_width = 0; 368 369 if (shared.bug_mode | db_sw) 370 then if ilin >= db_line 371 then 372 do; 373 debug_sw = "1"b; 374 if dt_sw 375 then detail_sw = "1"b; 376 else detail_sw = "0"b; 377 if lg_sw 378 then long_sw = "1"b; 379 else long_sw = "0"b; 380 if tx_sw 381 then text_sw = "1"b; 382 else text_sw = "0"b; 383 end; /**/ 384 /* set text pointer */ 385 txtstrptr = page_image.line (ilin).ptr; 386 loctxt = txtstr; /* copy txtstr */ 387 txtlen = length (txtstr); /* and record length */ 388 389 trim_font: /* trim trailing font change */ 390 if txtlen > 7 391 then if substr (loctxt, txtlen - 7, 2) = "À" 392 then 393 do; 394 txtlen = txtlen - 8; 395 goto trim_font; 396 end; 397 398 lineinfoptr = addr (page_image.line (ilin).info); 399 quad = page_image.line (ilin).quad; 400 401 if debug_sw 402 then call blat; 403 404 Yspc = divide (page_image.line (ilin).depth, Ypixel, 31, 0) - Ypos - Yinit; 405 if ilin > 1 406 then Yspc = Yspc - auto_lead; /* account for the "free" amount */ 407 408 need_font = page_image.line (ilin).lfnt; 409 need_size = page_image.line (ilin).lsize; 410 411 if txtlen > 0 412 then 413 do; 414 415 if font_in ^= need_font 416 then call set_font (need_font, need_size); 417 418 if page_image.line (ilin).lmarg > 0 419 then Lmarg = divide (page_image.line (ilin).lmarg, Xmptstrk, 31, 0); 420 if page_image.line (ilin).net > 0 421 then col_width = divide (page_image.line (ilin).net, Xmptstrk, 31, 0); 422 if page_image.line (ilin).width > 0 423 then text_width = divide (page_image.line (ilin).width, Xmptstrk, 31, 0); 424 /**** &line_init FOR ascii */ 425 /**** NO CODE *//**** END ascii */ 426 if quad = quadr | quad = quadc 427 then /* if setting right */ 428 do; /* or center */ 429 Xspc = col_width - text_width; 430 if quad = quadc /* if centering, take half */ 431 then Xspc = round (divide (max (Xspc, 0), 2, 31, 1), 0); 432 Lmarg = Lmarg + Xspc; 433 end; /**/ 434 /* if justifying and device doesnt */ 435 if quad = just & ^comp_dvt.justifying 436 /* and there are some gaps */ 437 & page_image.line (ilin).gaps > 0 438 then call pad_block; 439 440 rescan_line: 441 if detail_sw 442 then call 443 ioa_ ("^5x(rescan_line: Lmarg=^f lvl=^d)", 444 show (Lmarg * Xmptstrk, 12000), window_level); 445 446 word = ""; /* clear word accumulator */ 447 wrdwidth = 0; 448 449 if Yspc ^= 0 450 then call plot (SHIFT_OP, 0, Ypos + Yspc); 451 Yspc = 0; /* initial movement */ 452 Xspc = Lmarg - Xpos; 453 454 if font_in ^= page_image.line (ilin).lfnt 455 | font_size ^= page_image.line (ilin).lsize 456 then call set_font (page_image.line (ilin).lfnt, 457 page_image.line (ilin).lsize); 458 459 char_loop: /* process each character */ 460 do ichr = 1 to txtlen; 461 tchr = substr (loctxt, ichr, 1); 462 463 if tchr ^= DC1 /* do any font chars */ 464 then 465 font_char: 466 do; 467 char_ndx = rank (tchr); /* fnttbl index for text char */ 468 /* -> replacement */ 469 repl_str_ptr = fnttbl.replptr (char_ndx); 470 /* if there's no replacement */ 471 if repl_str_ptr = null () 472 then 473 do; /* if not already reported */ 474 if index (bad_chrs, tchr) = 0 475 then 476 do; /* add to bad chars and report */ 477 bad_chrs = bad_chrs || tchr; 478 call 479 comp_report_$ctlstr (2, 480 comp_error_table_$program_error, lineinfoptr, loctxt, 481 "Font ^a, no replacement for ""^a"" (\^.3b)", 482 fnttbl.entry.name, tchr, unspec (tchr)); 483 484 if abrt_sw /* abort if desired */ 485 then signal null_font_char; 486 end; 487 goto end_chars; /* skip rest of line */ 488 end; /**/ 489 /* copy fnttbl data */ 490 fcdevfnt = fnttbl.devfnt (char_ndx); 491 /* white space? */ 492 if fnttbl.white (char_ndx) 493 then 494 do; 495 if word ^= "" /* flush current word */ 496 then 497 do; 498 call put_str (word, wrdwidth); 499 wrdwidth = 0; 500 tstr.white = "0"b; 501 end; 502 503 fcwidth = fnttbl.units (char_ndx); 504 Xspc = Xspc + fcwidth; 505 506 if text_sw & ^pref_sw 507 then call ioa_ ("^5x(text: ^d ^i ^f ^f ""^1a"" WS)", 508 fcdevfnt, fcwidth, 509 show (fcwidth * Xmptstrk, 12000), 510 show ((Xpos + Xspc) * Xmptstrk, 12000), 511 comp_util_$display ((tchr), 0, "0"b)); 512 end; /**/ 513 514 else /* not white space */ 515 do; /* emit any accumulated motion */ 516 if Yspc ^= 0 | (Xspc ^= 0 & txtlen ^= 0) 517 then call plot (SHIFT_OP, Xpos + Xspc, Ypos + Yspc); 518 Xspc, Yspc = 0; 519 if tstr.devfnt = 0 520 then call set_media (font_in, fcdevfnt); 521 /**** &process_text FOR ascii */ 522 /**** NO CODE */ 523 /**** END ascii */ 524 word = word || replstr; 525 fcwidth = fnttbl.units (char_ndx); 526 wrdwidth = wrdwidth + fcwidth; 527 528 if text_sw & ^pref_sw 529 then call ioa_ ("^5x(text: ^d ^i ^f ^f ""^a"" -> ""^a^va"")", 530 fcdevfnt, fcwidth, 531 show (fcwidth * Xmptstrk, 12000), 532 show ((Xpos + Xspc + wrdwidth) * Xmptstrk, 533 12000), comp_util_$display ((tchr), 0, "0"b), 534 comp_util_$display (replstr, 0, "0"b), 535 repl_str.len - length (rtrim (replstr)), 536 " "); 537 end; 538 end font_char; 539 540 else 541 ctl_char: 542 do; /* its a DC1 control string */ 543 if word ^= "" /* flush current word */ 544 then 545 do; 546 call put_str (word, wrdwidth); 547 wrdwidth = 0; 548 tstr.white = "0"b; 549 end; 550 551 DCxx_p = /* set control string overlay ptr */ 552 addr (substr (loctxt, ichr, 1)); 553 /* for device/writer controls */ 554 if dcxx.ctl.type = "000"b 555 then 556 do; 557 (nostrg): if long_sw 558 then call 559 ioa_ ("^5x(CTL: ^[wait^]^[unstrt^]^[unstop^]" 560 || " ^a^[ Xpos=^f^;^s^])", (dcfs.type = type_wait), 561 (dcfs.type = type_unstart), 562 (dcfs.type = type_unstop), 563 comp_util_$display 564 ((substr (loctxt, ichr, dcxx.leng + 3)), 0, "0"b), 565 (dcfs.type = type_unstart) 566 | (dcfs.type = type_unstop), 567 show ((Xpos + Xspc) * Xmptstrk, 12000)); 568 /* a midpage wait? */ 569 if dcfs.type = type_wait 570 then 571 do; /* any accumulated motion? */ 572 if Xspc ^= 0 573 then call plot (SHIFT_OP, Xpos + Xspc, Ypos); 574 Xspc = 0; /**/ 575 /* user will give NL */ 576 Yspc = Yspc - divide (12000, Ypixel, 31, 0); 577 page_record.halt4 = "1"b; 578 page_record.nextref = "0"b; 579 page_record_ptr = addr (page_record.nextref); 580 page_record.leng, tstr.last_cr = 0; 581 unspec (page_record.sws) = "0"b; 582 page_record.in_use = "1"b; 583 end; /**/ 584 /* start underscore? */ 585 if dcfs.type = type_unstart 586 then 587 do; 588 unstart = max (Xpos + Xspc, Lmarg); 589 unstring = "1"b; 590 end; /**/ 591 /* stop underscore? */ 592 if dcfs.type = type_unstop 593 then 594 do; /* underscoring active? */ 595 if unstring & tstr_line ^= "" 596 & 597 ^(page_image.line (ilin).cbar 598 | page_image.line (ilin).mrgtxt) 599 then 600 do; 601 call put_uns; 602 unstring = "0"b; 603 end; 604 end; 605 end; /**/ 606 /* a font change? */ 607 else if dcfs.type = type_font 608 then 609 do; 610 if long_sw 611 then 612 do; 613 (nostrg): debug_str = substr (loctxt, ichr, dcxx.leng + 3); 614 call ioa_ ("^5x(CTL: font ^a)", 615 comp_util_$display (debug_str, 0, "0"b)); 616 end; 617 618 need_font = dcfs.f; 619 need_size = dcfs.p; 620 call set_font (need_font, need_size); 621 end; /**/ 622 /* a literal? */ 623 else if dcfs.type = type_lit 624 then 625 do; 626 call put_str (substr (loctxt, ichr + 3, dcxx.leng), 0); 627 628 if long_sw 629 then 630 do; 631 (nostrg): debug_str = substr (loctxt, ichr, dcxx.leng + 3); 632 call ioa_ ("^5x(CTL: literal ^a)", 633 comp_util_$display (debug_str, 0, "0"b)); 634 end; 635 end; 636 637 else /* its either a shift or a vector */ 638 do; /* fetch a short X */ 639 if (dcxx.Xctl = "01"b) 640 then Xmpts = dcshort_val.v1; 641 /* fetch a long X */ 642 else if (dcxx.Xctl = "10"b) 643 then Xmpts = dclong_val.v1; 644 else Xmpts = 0; /* no X movement */ 645 646 if (dcxx.Xctl ^= "00"b) 647 then /* if X is given */ 648 do; /* then Y is in v2 */ 649 /* fetch a short Y */ 650 if (dcxx.Yctl = "01"b) 651 then Ympts = dcshort_val.v2; 652 /* fetch a long Y */ 653 else if (dcxx.Yctl = "10"b) 654 then Ympts = dclong_val.v2; 655 else Ympts = 0; 656 end; 657 658 else /* no X was given */ 659 do; /* fetch a short Y */ 660 if (dcxx.Yctl = "01"b) 661 then Ympts = dcshort_val.v1; 662 /* fetch a long Y */ 663 else if (dcxx.Yctl = "10"b) 664 then Ympts = dclong_val.v1; 665 else Ympts = 0; 666 end; /**/ 667 /* shift */ 668 if dcxx.type = "100"b 669 then 670 do; 671 if font_in = 0 672 then call set_font (need_font, need_size); 673 674 Xmov = sign (Xmpts) 675 * 676 round (divide (abs (Xmpts) - 4, Xmptstrk, 31, 1), 0); 677 Xspc = Xspc + Xmov; 678 679 Ymov = sign (Ympts) 680 * 681 divide (abs (Ympts), Ypixel, 17, 0); 682 Yspc = Yspc + Ymov; 683 684 if long_sw 685 then 686 do; 687 (nostrg): debug_str = substr (loctxt, ichr, dcxx.leng + 3); 688 call ioa_ ("^5x(CTL: shift ^f ^f (^f ^f) ^a)", 689 show (Xmpts, 12000), show (Ympts, 12000), 690 show (Xspc * Xmptstrk, 12000), show (Yspc,12000), 691 comp_util_$display (debug_str, 0, "0"b)); 692 end; 693 end; 694 695 else 696 do; /* not shift, it must be vector */ 697 if Xspc ^= 0 | Xmpts > 0 698 then if font_in ^= need_font | font_size ^= need_size 699 then call set_font (need_font, need_size); 700 /* need to position first? */ 701 if Xspc ^= 0 | Yspc ^= 0 702 then call plot (SHIFT_OP, Xpos + Xspc, Ypos + Yspc); 703 Xspc, Yspc = 0; 704 705 Xspc = divide (Xmpts, Xmptstrk, 31, 0); 706 Yspc = divide (Ympts, Ypixel, 31, 0); 707 708 if long_sw 709 then 710 do; 711 (nostrg): debug_str = substr (loctxt, ichr, dcxx.leng + 3); 712 call ioa_ ("^5x(CTL: vector ^f ^f ^a)", 713 show (Xmpts, 12000), show (Ympts, 12000), 714 comp_util_$display (debug_str, 0, "0"b)); 715 end; 716 call plot (VECTOR_OP, Xpos + Xspc, Ypos + Yspc); 717 Xspc, Yspc = 0; 718 end; 719 end; /**/ 720 /* move to last ctl char */ 721 ichr = ichr + dcxx.leng + 2; 722 end ctl_char; /* end of control sequence loop */ 723 end_chars: 724 end char_loop; 725 726 if word ^= "" /* flush last word */ 727 then 728 do; 729 call put_str (word, wrdwidth); 730 wrdwidth = 0; 731 tstr.white = "0"b; 732 end; 733 734 if unstring /* underscoring active? */ 735 & ^(page_image.line (ilin).cbar | page_image.line (ilin).mrgtxt) 736 then call put_uns; 737 /**** &line_finish FOR ascii */ 738 /**** NO CODE */ 739 /**** END ascii */ 740 if detail_sw 741 then 742 do; 743 call ioa_ ("^5x(line_finish: tstr lvl=^d ^[^^^]opn Y=^f X=^f ln=^d)", 744 window_level, ^(tstr.open), show (Ypos * Ypixel, 12000), 745 show (Xpos * Xmptstrk, 12000), length (tstr_line)); 746 if tstr.open 747 then call ioa_ ("""^a^va""", 748 comp_util_$display (rtrim (tstr_line), 0, "0"b), 749 length (tstr_line) - length (rtrim (tstr_line)), " "); 750 end; 751 end; 752 753 end image_loop; 754 755 finish_page: 756 if detail_sw 757 then call ioa_ ("^5x(finish_page:)"); 758 /* add any trailing lead */ 759 if page_image.line (page_image.count).white 760 then call plot (SHIFT_OP, 0, Ypos + 761 divide (page_image.line (page_image.count).lead, Ypixel, 31, 0)); 762 call put_; /* flush output image */ 763 764 call release_window; /* discard image just put */ 765 766 if ^option.galley_opt 767 then 768 do; 769 if comp_dvt.endpage ^= "0"b /* if FF is defined, then */ 770 then /* replace last NL with it */ 771 substr (page_record.text, page_record.leng, 1) = 772 byte (bin (comp_dvt.endpage)); 773 /* else run out the page with NLs */ 774 else if Ypos < divide (page.parms.length, Ypixel, 31, 0) 775 then 776 do; 777 runout = divide (page.parms.length, 12000, 31, 0) - 1 - 778 divide (Ypos, line_window_size, 31, 0) - bin (option.stop_opt); 779 page_record.leng = page_record.leng + runout; 780 substr (page_record.text, page_record.leng - runout + 1, 781 runout) = copy (NL, runout); 782 end; /**/ 783 /**** &page_finish FOR ascii */ 784 /**** NO CODE */ 785 /**** END ascii */ 786 end; 787 788 page_record.nextref = "0"b; /* show nothing follows */ 789 790 return_: 791 if debug_sw 792 then call ioa_ (" (ascii_writer_)"); 793 return; 794 795 footproc: 796 entry (footref, ptr); 797 798 /* PARAMETERS */ 799 /* actual reference string */ 800 dcl footref (3) char (*) var; 801 dcl ptr ptr; /* -> comp_dvt */ 802 /* &foot_proc for ascii */ 803 footref (1) = "("; 804 footref (3) = ")"; 805 if (shared.bug_mode | db_sw) 806 then do; 807 call ioa_ ("ascii_writer_$footproc: ^a", 808 comp_util_$display (footref (1) || footref (2) || footref (3), 0, 809 "0"b)); 810 end; 811 return; 812 813 814 /* This routine returns a printable interpretation of a native device string */ 815 816 dcl ascii_writer_$display entry (char (*) var, fixed bin (24), 817 bit (1)) returns (char (*) var); 818 819 display: 820 entry (dtext, dlen, noerr) returns (char (*) var); 821 822 /* PARAMETERS */ 823 824 dcl dtext char (*) var; /* string to be displayed */ 825 dcl dlen fixed bin (24); /* chars scanned by this call */ 826 dcl noerr bit (1); /* 1= dont print error messages */ 827 828 /* LOCAL STORAGE */ 829 830 dcl ch char (1); /* extracted text char */ 831 dcl ct fixed bin; /* number of duplicate chars */ 832 dcl dstr char (1020) var; /* working string */ 833 dcl rtn_str char (16384) var;/* return string */ 834 835 if dev_stat_ptr = null () 836 then dev_stat_ptr = addr (stat_blk); 837 838 if stat_blk (1) ^= -1 /* check status block */ 839 then 840 do; 841 stat_blk (*) = 0; 842 stat_blk (1) = -1; 843 end; 844 845 rtn_str = ""; /* clear return string */ 846 ct = 0; 847 848 ch = substr (dtext, 1, 1); /* extract a char */ 849 850 if ch = THIN 851 then 852 do; 853 ct = verify (dtext, THIN); /* how many? */ 854 if ct = 0 /* all the rest */ 855 then ct = length (dtext); 856 else ct = ct - 1; 857 858 if ct > 1 /* if more than one */ 859 then call ioa_$rsnnl ("", dstr, 0, ct); 860 else dstr = ""; 861 862 rtn_str = rtn_str || dstr; 863 end; 864 865 else if ch = DEVIT 866 then do; 867 ct = verify (dtext, DEVIT); /* how many? */ 868 if ct = 0 /* all the rest */ 869 then ct = length (dtext); 870 else ct = ct - 1; 871 872 if ct > 1 /* if more than one */ 873 then call ioa_$rsnnl ("", dstr, 0, ct); 874 else dstr = ""; 875 876 rtn_str = rtn_str || dstr; 877 end; 878 879 else 880 do; 881 device_display: /* &display FOR DEVICE ascii */ 882 /**** NO CODE */ /**/ 883 /* END DEVICE ascii */ 884 end; 885 886 disp_ret: 887 dlen = ct; 888 889 return (rtn_str); /* end of display */ 890 891 artproc: entry (); /**/ 892 /* &art_proc for ascii */ 893 /**** NO CODE */return; 894 895 blat: proc; 896 897 dcl blatstr char (1020) var; 898 899 call ioa_$nnl (":^3d^3d/^d^12t^4d/^i^18t^5(^8f^)" || 900 " ^[I^]^[O^]^[L^]^[C^]^[R^]^[J^]^[L^]^60t^3i ^6a ^f^/^4x", ilin, 901 page_image.line (ilin).fileno, page_image.line (ilin).lineno, 902 txtlen, page_image.line (ilin).gaps, 903 show (page_image.line (ilin).lmarg, 12000), 904 show (page_image.line (ilin).rmarg, 12000), 905 show (page_image.line (ilin).width, 12000), 906 show (page_image.line (ilin).depth, 12000), 907 show (page_image.line (ilin).lead, 12000), 908 quad & quadi, quad & quado, quad & quadl, 909 quad & quadc, quad & quadr, quad & just, (quad = "0"b), 910 page_image.line (ilin).lfnt, 911 fnttbldata.ptr (page_image.line (ilin).lfnt) -> fnttbl.entry.name, 912 show (fnttbldata.ptr (page_image.line (ilin).lfnt) -> fnttbl.entry.size, 1000), 913 txtlen); 914 915 blatstr = comp_util_$display (substr (loctxt, 1, txtlen), 0, "0"b); 916 call ioa_ ("""^a^va""", blatstr, 917 length (blatstr) - length (rtrim (blatstr)), " "); 918 end blat; 919 920 release_window: 921 proc; 922 923 call translator_temp_$release_all_segments (window_area_ptr, 0); 924 925 end release_window; 926 927 move_tstr: /* move tstr ptr to new window level */ 928 proc (incr); 929 930 /* PARAMETERS */ 931 932 dcl incr fixed bin (31); /* amount to move */ 933 934 if detail_sw 935 then call ioa_ ("^-(move_tstr: ^d -> ^d)", window_level, 936 window_level + incr); 937 938 window_level = window_level + incr; 939 940 max_level = max (max_level, window_level); 941 tstr_ptr = addr (window (window_level)); 942 943 tstr.ypos, Ypos = Ypos + incr; 944 Xpos = tstr.xpos; 945 tstr.open = "1"b; 946 947 if tstr.str_ptr = null 948 then tstr.str_ptr = allocate (window_area_ptr, 1024); 949 950 end move_tstr; 951 952 show: 953 proc (datum, scale) returns (fixed dec (11, 3)); 954 dcl datum fixed bin (31); 955 dcl scale fixed bin (31); 956 957 return (round (dec (round (divide (datum, scale, 31, 11), 10), 11, 4), 3)); 958 end show; 959 960 plot: 961 proc (PLOT_OP, new_xpos, new_ypos); 962 963 /* This routine moves the current position to (new_xpos,new_ypos), */ 964 /* plotting or shifting according to the value of PLOT_OP. */ 965 966 /* PARAMETERS */ 967 968 dcl PLOT_OP bit (1); /* 0-shift; 1-vector */ 969 dcl new_xpos fixed bin (31); /* needed horizontal position */ 970 dcl new_ypos fixed bin (31); /* needed vertical position */ 971 972 /* LOCAL STORAGE */ 973 974 dcl copystr char (2048) var; 975 dcl exit_str char (32) var; 976 dcl old_xpos fixed bin (31); 977 dcl old_ypos fixed bin (31); 978 dcl penctl char (6) var; /* pen control string */ 979 dcl pltstr char (4090) var; 980 dcl pltwidth fixed bin (31); 981 dcl xii fixed bin; /* working value */ 982 dcl xmove fixed bin (31); /* X movement */ 983 dcl ymove fixed bin (31); /* Y movement */ 984 985 if new_xpos = Xpos & new_ypos = Ypos 986 then return; 987 988 xmove, ymove, pltwidth = 0; 989 pltstr = ""; 990 991 old_xpos = Xpos; /* case a VSFT changes Xpos */ 992 old_ypos = Ypos; 993 xmove = new_xpos - Xpos; 994 ymove = new_ypos - Ypos; 995 996 if detail_sw 997 then call 998 ioa_ ("^5xplot: (^[V^;S^] ^f/^f -> ^f/^f = ^f/^f)", PLOT_OP, 999 show (Xpos * Xmptstrk, 12000), show (Ypos * Ypixel, 12000), 1000 show (new_xpos * Xmptstrk, 12000), show (new_ypos * Ypixel, 12000), 1001 show (xmove * Xmptstrk, 12000), show (ymove * Ypixel, 12000)); 1002 1003 if ^PLOT_OP /* if a SHIFT is wanted */ 1004 then 1005 do; 1006 if ymove ^= 0 /* any Y movement? */ 1007 then 1008 do; 1009 if window_level + ymove < window_top | 1010 window_level + ymove > window_bottom 1011 then 1012 do; 1013 call comp_report_$ctlstr (2, comp_error_table_$program_error, 1014 lineinfoptr, loctxt, 1015 "Attempt to place a line off page ^a at line ^d.", 1016 page.hdr.pageno, window_level); 1017 signal comp_abort; 1018 end; 1019 1020 call move_tstr (ymove); 1021 ymove = 0; 1022 xmove = new_xpos - Xpos; 1023 end; 1024 1025 penctl = PENUP; /* init for pen up */ 1026 end; /**/ 1027 /* else a VECTOR is wanted */ 1028 else penctl = PENDOWN; /* init for pen down */ 1029 /**** &plot FOR ascii */ 1030 if ^PLOT_OP 1031 then 1032 do; 1033 if xmove ^= 0 /* any X movement? */ 1034 then 1035 do; 1036 if xmove > 0 1037 then copystr = copy (" ", xmove); 1038 else copystr = copy (BSP, -xmove); 1039 pltstr = pltstr || copystr; 1040 pltwidth = pltwidth + xmove; 1041 xmove = 0; 1042 end; 1043 end; 1044 1045 else 1046 do; 1047 if ymove ^= 0 /* no vertical vectors allowed */ 1048 then call comp_report_$exact ("Vertical vectors not allowed " || 1049 "for the printer device.", lineinfoptr); 1050 1051 if xmove < 0 /* no rev horiz vectors allowed */ 1052 then call comp_report_$exact ("Reverse horizontal vectors not " || 1053 "allowed for ascii device.", lineinfoptr); 1054 1055 else if xmove > 0 /* forward horizontal vector */ 1056 then 1057 do; 1058 pltstr = pltstr || copy ("_", xmove); 1059 pltwidth = pltwidth + xmove; 1060 xmove = 0; 1061 end; 1062 end; 1063 /**** END ascii */ 1064 1065 plot_return: 1066 if length (pltstr) > 0 1067 then call put_str (pltstr, pltwidth); 1068 1069 /* Xpos, tstr.xpos = new_xpos;*/ 1070 1071 if detail_sw 1072 then call 1073 ioa_ ("^-(plot: ^f/^f lvl=^d ^[^^^]opn^[ W^])", 1074 show (Xpos * Xmptstrk, 12000), show (Ypos * Ypixel, 12000), 1075 window_level, ^tstr.open, tstr.white); 1076 1077 /* Xplt, Yplt = 0; /* motion used */ 1078 end plot; 1079 1080 pad_block: 1081 proc; /**/ 1082 1083 /* these two values in fixed dec so round off doesnt affect pad placement. */ 1084 /* dcl 1085*/* ( igap, /* gap counter for padding */ 1086 /* padeach /* padding interval */ 1087 /* ) fixed dec (11, 3);*/ 1088 1089 dcl 1090 ( igap, /* gap counter for padding */ 1091 padeach /* padding interval */ 1092 ) fixed bin; 1093 1094 dcl gaps fixed bin; /* gap count for line */ 1095 dcl jl_ptr ptr; /* pointer to the justified line */ 1096 dcl just_line char (1020) var; 1097 /* pads per gap */ 1098 dcl pads (page_image.line (ilin).gaps) fixed bin; 1099 dcl padsize fixed bin; /* pad space in pixels */ 1100 dcl 1 pad_ctl like dclong_val; /* for inserting pads */ 1101 dcl pad_ctl_ptr ptr; 1102 dcl pad_string char (7) based (pad_ctl_ptr); 1103 dcl SP_DC1 char (2) int static options (constant) init (" "); 1104 1105 just_line = ""; /* clear the justified line */ 1106 jl_ptr = addr (just_line); /* and set pointer for the overlay */ 1107 1108 if font_in ^= need_font 1109 then call set_font (need_font, need_size); 1110 1111 if col_width < 0 1112 then col_width = divide (page_image.line (ilin).net, Xmptstrk, 31, 0); 1113 if text_width > 0 1114 then text_width = divide (page_image.line (ilin).width, Xmptstrk, 31, 0); 1115 1116 if Xpixel ^= EN_width /* set up pad_ctl string */ 1117 then 1118 do; 1119 pad_ctl.mark = DC1; 1120 pad_ctl.type = type_slx; 1121 pad_ctl.leng = dclong1_len; 1122 pad_ctl.v2 = 0; 1123 pad_ctl_ptr = addr (pad_ctl); 1124 end; 1125 1126 gaps = page_image.line (ilin).gaps; 1127 padsize = max (0, col_width - text_width); 1128 /* fill in common amount */ 1129 pads = fnttbl.units (rank (STROKE)) * divide ( 1130 divide (padsize, gaps, 17, 0), fnttbl.units (rank (STROKE)), 17, 0); 1131 /* then get the leftover amount */ 1132 padsize = padsize - pads (1) * gaps; 1133 1134 if long_sw 1135 then call 1136 ioa_$nnl ("^5x(pad_block: l/w/r=^f/^f/^f gp=^i pd=^i+^i", 1137 show (Lmarg * Xmptstrk, 12000), 1138 show (text_width * Xmptstrk, 12000), 1139 show (page_image.line (ilin).rmarg, 12000), gaps, 1140 pads (1), padsize); 1141 1142 do while (padsize > 0); /* use up any leftovers */ 1143 padeach = /* pad interval */ 1144 max (round (divide (gaps * fnttbl.units (rank (STROKE)), padsize, 17, 1), 0), 1); 1145 igap = max (round (divide (gaps * fnttbl.units (rank (STROKE)), 2 * padsize, 17, 1), 0), 1); 1146 1147 do igap = igap to gaps by padeach while (padsize > 0); 1148 pads (igap) = pads (igap) + fnttbl.units (rank (STROKE)); 1149 padsize = padsize - fnttbl.units (rank (STROKE)); 1150 end; 1151 end; 1152 1153 if long_sw 1154 then call ioa_ ("^(,^i^))", pads); 1155 1156 ichr = verify (loctxt, " "); /* start at front of text */ 1157 if ichr > 1 1158 then just_line = just_line || copy (EN, ichr - 1); 1159 1160 do j = 1 to gaps; 1161 try_again: /* find word boundary */ 1162 k = search (substr (loctxt, ichr, txtlen - ichr + 1), SP_DC1) - 1; 1163 1164 if k < 0 /* MGOD! gap count is too large */ 1165 then 1166 do; 1167 if detail_sw 1168 then 1169 do; 1170 call ioa_$nnl ("gap=^i ", gaps); 1171 call blat; 1172 end; 1173 goto gap_exit; 1174 end; /**/ 1175 /* copy word */ 1176 just_line = just_line || substr (loctxt, ichr, k); 1177 ichr = ichr + k; /* step over "word" */ 1178 /* did we find a control? */ 1179 if substr (loctxt, ichr, 1) = DC1 1180 then 1181 do; /* set pointer */ 1182 DCxx_p = addr (substr (loctxt, ichr)); 1183 k = dcxx.leng + 3; /* and control string length */ 1184 /* copy ctl str */ 1185 just_line = just_line || substr (loctxt, ichr, k); 1186 ichr = ichr + k; 1187 goto try_again; 1188 end; 1189 1190 ichr = ichr + 1; /* skip the wordspace */ 1191 1192 if Xpixel = EN_width /* now, any excess count */ 1193 then just_line = just_line || copy (" ", pads (j)); 1194 else 1195 do; 1196 pad_ctl.v1 = pads (j) * Xmptstrk; 1197 just_line = just_line || pad_string; 1198 end; 1199 end; 1200 1201 gap_exit: 1202 k = txtlen - ichr + 1; /* length of the last word */ 1203 /* move the last word */ 1204 just_line = just_line || substr (loctxt, ichr, k); 1205 loctxt = just_line; /* switch to the justified line */ 1206 txtlen = length (just_line); 1207 1208 if long_sw 1209 then call ioa_ ("^a", comp_util_$display (just_line, 0, "0"b)); 1210 1211 end pad_block; 1212 1213 put_: 1214 proc; 1215 1216 dcl level fixed bin; 1217 dcl level_skip fixed bin; 1218 1219 if detail_sw 1220 then call 1221 ioa_ ("^5x(put: maxlvl=^d)", max_level); 1222 1223 level_skip = 0; 1224 1225 if first_line 1226 then 1227 do level = window_top to -1 /* discard leading null lines */ 1228 while (^window (level).open); 1229 end; 1230 else level = window_top; 1231 1232 do level = level to max_level; 1233 tstr_ptr = addr (window (level)); /**/ 1234 1235 if tstr.str_ptr = null 1236 then 1237 do; 1238 tstr.str_ptr = allocate (window_area_ptr, 1024); 1239 tstr_line = ""; 1240 end; /**/ 1241 /* &put FOR DEVICE ascii */ 1242 if tstr.open /* is this line open? */ 1243 then 1244 do; /* see if canonizing is needed */ 1245 if search (tstr_line, BSCR) > 0/* any overprinting? */ 1246 then 1247 do; 1248 scndx = 1; 1249 beadct, icol = 0; /* clear counters */ 1250 /* scan the input line */ 1251 do j = 1 to length (tstr_line); 1252 /* extract next char */ 1253 tchr = substr (tstr_line, j, 1); 1254 /* all printing chars are 1 */ 1255 if (rank (tchr) > 32 & rank (tchr) <= 126) 1256 then 1257 do; 1258 beadct = beadct + 1;/* count a bead */ 1259 bead (beadct).char = tchr; 1260 /* note (apparent) position */ 1261 bead (beadct).loc = icol; 1262 icol = icol + 1; /* and advance */ 1263 end; 1264 1265 else if tchr = " " /* a space? */ 1266 then 1267 do; /* how many? */ 1268 i = verify (substr (tstr_line, j), " ") - 1; 1269 if i < 0 /* trailing ws */ 1270 then i = length (tstr_line) - j + 1; 1271 icol = icol + i; 1272 j = j + i - 1; /* advance scan index */ 1273 end; 1274 1275 else if tchr = BSP /* a backspace? */ 1276 then 1277 do; /* how many? */ 1278 i = verify (substr (tstr_line, j), BSP) - 1; 1279 if i < 0 /* trailing BSPs */ 1280 then i = length (tstr_line) - j + 1; 1281 /* dont back off end */ 1282 icol = max (icol - i, 0); 1283 j = j + i - 1; /* advance scan index */ 1284 end; 1285 1286 else if tchr = CR /* a carriage return? */ 1287 then icol = 0; /* go back to square 1! */ 1288 1289 else if tchr = HT /* may be HTs from SHIFTs */ 1290 then icol = 10 * divide (icol, 10, 17, 0) + 10; 1291 end; /* end of scan loop */ 1292 /* sort the beads */ 1293 if long_sw 1294 then call 1295 ioa_ ("^5x(beads=(^d) ^v(^a^))", beadct, beadct, 1296 beads.char); 1297 1298 d = beadct; 1299 sort: 1300 d = divide (d + 1, 2, 17, 0); 1301 swps = 0; 1302 do i = 1 to beadct - d; /* sort columns only */ 1303 (nosubrg): if bead (i).loc > bead (i + d).loc 1304 then goto swap; 1305 else /* make _'s first */ 1306 (nosubrg): if bead (i).loc = bead (i + d).loc 1307 then if bead (i + d).char = "_" & bead (i).char ^= "_" 1308 then 1309 do; 1310 swap: 1311 tbead = unspec (bead (i)); 1312 bead (i) = bead (i + d); 1313 unspec (bead (i + d)) = tbead; 1314 swps = swps + 1; 1315 end; 1316 end; 1317 1318 if long_sw 1319 then call 1320 ioa_ ("^5x(swaps=^d@^d, beads ^v(^a^))", swps, d, beadct, 1321 beads.char); 1322 1323 if swps > 0 | d > 1 1324 then goto sort; 1325 1326 ocol = 0; /* set up for bead stringing */ 1327 tstr_line = ""; 1328 do j = 1 to beadct; /* put sorted beads back into line */ 1329 /* bead separation */ 1330 space = bead (j).loc - ocol; 1331 1332 if space > 0 /* any needed? */ 1333 then tstr_line = tstr_line || copy (" ", space); 1334 1335 if space < 0 /* overstrike? */ 1336 then tstr_line = tstr_line || BSP; 1337 /* finally, the character */ 1338 tstr_line = tstr_line || bead (j).char; 1339 ocol = bead (j).loc + 1; /* next column */ 1340 end; /* end of bead stringing loop */ 1341 1342 if long_sw 1343 then call 1344 ioa_ ("^7x(canon: ^d ^f ""^a"")", length (tstr_line), 1345 show (Xpos, 12000), comp_util_$display (tstr_line, 0, "0"b)); 1346 end; /* end of overprint loop */ 1347 /* trim trailing WS */ 1348 tstr_line = rtrim (tstr_line); 1349 tstr.last_cr = page_record.leng; 1350 end; 1351 1352 tstr_line = tstr_line || NL; 1353 /**/ 1354 /* END DEVICE ascii */ 1355 if detail_sw 1356 then call 1357 ioa_ ("^7x(lvl=^d ^d+^d=^d ""^a"")", level, page_record.leng, 1358 length (tstr_line), page_record.leng + length (tstr_line), 1359 comp_util_$display (tstr_line, 0, "0"b)); 1360 1361 level = level + level_skip; 1362 tstr.last_cr = 0; 1363 page_record.leng = page_record.leng + length (tstr_line); 1364 substr (page_record.text, page_record.leng - length (tstr_line) + 1, 1365 length (tstr_line)) = tstr_line; 1366 end; 1367 1368 if page_record.leng > 0 1369 then page_record.in_use = "1"b; 1370 Ypos = tstr.ypos; 1371 1372 end put_; 1373 1374 put_str: 1375 proc (string, width); 1376 1377 dcl string char (4090) var; /* string to put */ 1378 dcl width fixed bin (31); /* string width */ 1379 1380 dcl (i, j) fixed bin; 1381 dcl new_len fixed bin; 1382 dcl old_len fixed bin; 1383 dcl pos fixed bin (31); /* current position */ 1384 1385 if tstr.devfnt ^= need_devfnt 1386 then call set_media (font_in, need_devfnt); 1387 1388 old_len = length (tstr_line) - tstr.last_cr; 1389 new_len = old_len + length (string); 1390 1391 if new_len > MAX_STR 1392 then 1393 do; 1394 end; 1395 1396 if detail_sw 1397 then 1398 do; 1399 debug_str = comp_util_$display (string, 0, "0"b); 1400 call ioa_ ( 1401 "^5x(put_str: lvl=^d X=^f+^f=^f ^d+^d=^d^[(^d)^;^s^] ""^a^va"")", 1402 window_level, show (Xpos * Xmptstrk, 12000), show (width * Xmptstrk, 12000), 1403 show ((Xpos + width) * Xmptstrk, 12000), old_len, length (string), new_len, 1404 (tstr.last_cr > 0), length (tstr_line) + length (string), 1405 debug_str, length (debug_str) - length (rtrim (debug_str)), " "); 1406 end; 1407 1408 tstr_line = tstr_line || string; 1409 Xpos, tstr.xpos = Xpos + width; 1410 1411 string = ""; 1412 width = 0; 1413 tstr.open = "1"b; 1414 end put_str; 1415 1416 put_uns: 1417 proc; 1418 dcl Y_offs fixed bin (31); /* baseline offset */ 1419 dcl unslen fixed bin (31);/* length of underscore */ 1420 1421 Y_offs = 0; 1422 unslen = Xpos + Xspc - unstart; 1423 1424 if unslen > 0 1425 then 1426 do; 1427 if detail_sw 1428 then call 1429 ioa_ ("^5x(put_uns: ^f)", 1430 show (unslen * Xmptstrk, 12000)); 1431 1432 Xspc = Xspc - unslen; /* go to start */ 1433 call plot (SHIFT_OP, Xpos + Xspc, Ypos + Y_offs); 1434 Xspc, Yspc = 0; /**/ 1435 /* put the underscore */ 1436 call plot (VECTOR_OP, Xpos + unslen, Ypos); 1437 unstart = Lmarg; 1438 1439 if detail_sw 1440 then call ioa_ ("^-(put_uns)"); 1441 end; 1442 end put_uns; 1443 1444 set_font: 1445 proc (new_font, new_size); 1446 1447 /* PARAMETERS */ 1448 1449 dcl new_font fixed bin; /* desired font index */ 1450 dcl new_size fixed bin (31); /* desired pointsize */ 1451 1452 dcl chng bit (1); 1453 1454 chng = (font_in ^= new_font | font_size ^= new_size); 1455 1456 if chng 1457 then 1458 do; 1459 if detail_sw 1460 then 1461 do; 1462 if font_in = 0 1463 then call ioa_$nnl ("^5x(set_font: 0 - 0. -->"); 1464 else call 1465 ioa_$nnl ("^5x(set_font: ^i ^a ^f -->", font_in, 1466 fnttbldata.ptr (font_in) -> fnttbl.entry.name, 1467 show (font_size, 1000)); 1468 end; 1469 1470 font_in = new_font; 1471 end; 1472 1473 fnttbl_ptr = fnttbldata.ptr (font_in); 1474 substr (fonts_needed, font_in, 1) = "1"b; 1475 need_devfnt = fnttbl.devfnt (32); 1476 /**** &set_font FOR ascii */ 1477 /**** NO CODE */ 1478 /**** END ascii */ 1479 if siztbl.ct = 1 1480 then font_size, new_size = siztbl.size (1); 1481 else font_size = new_size; 1482 1483 Xmptstrk = divide (font_size, fnttbl.rel_units, 31, 0); 1484 EM_width = 1485 divide (font_size * fnttbl.units (rank (EM)), fnttbl.rel_units, 31, 10); 1486 EN_width = 1487 divide (font_size * fnttbl.units (rank (EN)), fnttbl.rel_units, 31, 10); 1488 THIN_width = 1489 divide (font_size * fnttbl.units (rank (THIN)), fnttbl.rel_units, 31, 10); 1490 1491 if (detail_sw | long_sw) & chng 1492 then 1493 do; 1494 call ioa_ (" ^i ^a ^f Xscl=^d)", new_font, 1495 fnttbldata.ptr (new_font) -> fnttbl.entry.name, 1496 show (font_size, 1000), Xmptstrk); 1497 if long_sw 1498 then call ioa_ ("^-(HUGE=^d EM=^d EN=^d THK=^d MED=^d " 1499 || "THN=^d HAIR=^d STRK=^d)", fnttbl.units (rank (HUGE)), 1500 fnttbl.units (rank (EM)),fnttbl.units (rank (EN)), 1501 fnttbl.units (rank (THICK)),fnttbl.units (rank (MEDIUM)), 1502 fnttbl.units (rank (THIN)),fnttbl.units (rank (DEVIT)), 1503 fnttbl.units (rank (STROKE))); 1504 end; 1505 end set_font; 1506 1507 set_media: 1508 proc (media_font, new_devfnt); 1509 1510 /* PARAMETERS */ 1511 1512 dcl media_font fixed bin; /* font needing the media */ 1513 dcl new_devfnt fixed bin; /* wanted device font */ 1514 1515 /* LOCAL STORAGE */ 1516 1517 dcl chng bit (1); /* 1= media or size has to change */ 1518 dcl med_chng bit (1); /* 1= media has to change */ 1519 dcl size_chng bit (1); /* 1= size has to change */ 1520 dcl temp_r bit (18); 1521 1522 med_chng = tstr.devfnt ^= new_devfnt; 1523 size_chng = media_size ^= font_size; 1524 chng = med_chng | size_chng; 1525 1526 if detail_sw & chng 1527 then call ioa_$nnl ("^5x(set_media: siz=^f med=^d --> siz=^f med=^d ", 1528 show (media_size, 1000), tstr.devfnt, show (font_size, 1000), 1529 new_devfnt); 1530 /**** &set_media FOR ascii */ 1531 medselstr = ""; 1532 1533 /**** END ascii */ 1534 /**** &set_ps FOR ascii */ 1535 media_size = 7200; 1536 font_media (font_in) = 1; /* ascii has only one */ 1537 1538 /**** END ascii */ 1539 if detail_sw & chng 1540 then call ioa_ ("sel=""^a"")", 1541 comp_util_$display ((medsel (new_devfnt)), 0, "0"b)); 1542 1543 /* if not in media needed */ 1544 if med_chng /* ...change to it */ 1545 then 1546 do; 1547 tstr.devfnt = new_devfnt; 1548 tstr.font = media_font; 1549 end; 1550 end set_media; 1551 1552 /* device ascii "other_procs" */ 1553 /**** NO CODE */dcl db_sw bit (1) aligned static init ("0"b); 1554 1555 dbn: entry;db_sw = "1"b;goto db_join; 1556 dbf: entry;db_sw = "0"b;return; 1557 1558 dcl tx_sw bit (1) aligned static init ("0"b); 1559 txn: entry; tx_sw = "1"b; goto db_join; 1560 txf: entry; tx_sw = "0"b; return; 1561 1562 dcl lg_sw bit (1) aligned static init ("0"b); 1563 lgn: entry; lg_sw = "1"b; goto db_join; 1564 lgf: entry; lg_sw = "0"b; return; 1565 1566 dcl pf_sw bit (1) aligned static init ("0"b); 1567 pfn: entry; pf_sw = "1"b; return; 1568 pff: entry; pf_sw = "0"b; return; 1569 1570 dcl abrt_sw bit (1) aligned static init ("0"b); 1571 abrtn: entry; abrt_sw = "1"b; return; 1572 abrtf: entry; abrt_sw = "0"b; return; 1573 1574 dcl dt_sw bit (1) aligned static init ("0"b); 1575 dtn: entry;dt_sw = "1"b;goto db_join; 1576 dtf: entry;dt_sw = "0"b;return; 1577 1578 alln: entry; db_sw, dt_sw, lg_sw = "1"b; 1579 db_join: 1580 dcl db_line fixed bin static init (0); 1581 dcl com_err_ entry options (variable); 1582 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 1583 dcl arg char (argl) based (argp); 1584 dcl argl fixed bin; 1585 dcl argp ptr; 1586 dcl ercd fixed bin (35); 1587 dcl error_table_$noarg fixed bin (35) ext static; 1588 1589 db_line = 0; 1590 call cu_$arg_ptr (1, argp, argl, ercd); 1591 if ercd ^= 0 1592 then do; 1593 if ercd ^= error_table_$noarg 1594 then call com_err_ (ercd, "ascii_writer_"); 1595 return; 1596 end; 1597 db_line = convert (db_line, arg); 1598 return; 1599 1600 allf: entry; db_sw, lg_sw, tx_sw, pf_sw, dt_sw, abrt_sw = "0"b; 1601 return; 1602 1603 /* This one include file contains all the compose includes necessary for an */ 1604 /* output writer */ 1 1 /* BEGIN INCLUDE FILE ..... comp_outproc.incl.pl1 ..... 11/05/78 J Falksen */ 1 2 1 3 /* compose INCLUDE FILES NEEDED BY ALL OUTPUT WRITERS */ 1 4 2 1 /* BEGINNING OF: translator_temp_alloc.incl.pl1 * * * * * * * * * * * * * * * * */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* N__a_m_e: translator_temp_alloc.incl.pl1 */ 2 6 /* */ 2 7 /* This include segment allocates space in a translator's temporary segment. It */ 2 8 /* contains a complete space allocation function 'allocate' which can be a quick PL/I */ 2 9 /* internal procedure in the program which includes this include segment. The temporary */ 2 10 /* segment should be one obtained by using the translator_temp_ subroutine. */ 2 11 /* */ 2 12 /* S__t_a_t_u_s */ 2 13 /* */ 2 14 /* 0) Created by: G. C. Dixon in January, 1975. */ 2 15 /* 1) Modified by: G. C. Dixon in February, 1981 - use limit area structure. */ 2 16 /* */ 2 17 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 18 2 19 2 20 2 21 allocate: procedure (Parea, ANwords) returns (ptr); 2 22 2 23 dcl Parea ptr, /* ptr to the temporary segment. (In) */ 2 24 ANwords fixed bin; /* number of words to be allocated. (In) */ 2 25 2 26 dcl Nwords fixed bin, /* number of words to be allocated, rounded up */ 2 27 /* to a 0 mod 2 quantity. */ 2 28 P ptr, /* a temporary pointer. */ 2 29 code fixed bin(35), /* a status code. */ 2 30 (mod, null, ptr) builtin; 2 31 2 32 dcl 1 area based (Parea), 2 33 2 Pfirst_temp_seg ptr unal, /* ptr to first temp seg of a group. */ 2 34 2 Ofree fixed bin(35), /* offset of next free word in temp seg. */ 2 35 2 Lfree fixed bin(35); /* length of remaining free space in temp seg. */ 2 36 2 37 dcl translator_temp_$get_next_segment 2 38 entry (ptr, ptr, fixed bin(35)); 2 39 2 40 Nwords = ANwords + mod (ANwords, 2); /* round up word count to 0 + mod 2 quantity. */ 2 41 if Nwords > Lfree then do; /* handle area overflow. */ 2 42 call translator_temp_$get_next_segment (Parea, P, code); 2 43 if P = null then return (null); 2 44 Parea = P; 2 45 if Nwords > area.Lfree then return (null); 2 46 end; 2 47 P = ptr (Parea, area.Ofree); /* get pointer to next free word of area. */ 2 48 area.Ofree = area.Ofree + Nwords; /* increase offset of remaining free space. */ 2 49 area.Lfree = area.Lfree - Nwords; /* decrease length of remaining free space. */ 2 50 return (P); 2 51 2 52 end allocate; 2 53 2 54 /* END OF: translator_temp_alloc.incl.pl1 * * * * * * * * * * * * * * * * */ 1 5 3 1 /* BEGIN INCLUDE FILE comp_areas.incl.pl1 */ 3 2 3 3 dcl comp_area area (sys_info$max_seg_size) /* compose no freeing area */ 3 4 based (const.comp_area_ptr); 3 5 dcl comp_free area (sys_info$max_seg_size) /* compose freeing area */ 3 6 based (const.comp_free_ptr); 3 7 3 8 /* END INCLUDE FILE comp_areas.incl.pl1 */ 1 6 4 1 /* BEGIN INCLUDE FILE - comp_metacodes.incl.pl1 */ 4 2 4 3 /* format: style2,ind2,ll79,dclind4,idind25,comcol51,linecom */ 4 4 4 5 /* ASCII control characters */ 4 6 dcl ( 4 7 NUL init (""), /* 000 */ 4 8 SOH init (""), /* 001 */ 4 9 STX init (""), /* 002 */ 4 10 ETX init (""), /* 003 */ 4 11 EOT init (""), /* 004 */ 4 12 ENQ init (""), /* 005 */ 4 13 ACK init (""), /* 006 */ 4 14 BEL init (""), /* 007 */ 4 15 BSP init (""), /* 010 */ 4 16 HT init (" "), 4 17 /* 011 */ 4 18 (NL, LF) init (" 4 19 "), /* 012 */ 4 20 VT init (" "), /* 013 */ 4 21 FF init (" "), /* 014 */ 4 22 CR init (" "), /* 015 */ 4 23 (RRS, SO) init (""), /* 016 */ 4 24 (BRS, SI) init (""), /* 017 */ 4 25 DLE init (""), /* 020 */ 4 26 DC1 init (""), /* 021 */ 4 27 (DC2, HLF, HUGE) init (""), /* 022 */ 4 28 DC3 init (""), /* 023 */ 4 29 (DC4, HLR, THICK) init (""), /* 024 */ 4 30 (NAK, MEDIUM) init (""), /* 025 */ 4 31 SYN init (""), /* 026 */ 4 32 (ETB, HAIR) init (""), /* 027 */ 4 33 (CAN, STROKE) init (""), /* 030 */ 4 34 oct031 init (""), /* 031 */ 4 35 SUB init (""), /* 032 */ 4 36 ESC init (""), /* 033 */ 4 37 FS init (""), /* 034 */ 4 38 GS init (""), /* 035 */ 4 39 RS init (""), /* 036 */ 4 40 US init (""), /* 037 */ 4 41 (DEL, PAD) init (""), /* 177 */ 4 42 /* compose meta-characters */ 4 43 multiply init ("ª"), /* 252 - multiply symbol */ 4 44 pl_mi init ("«"), /* 253 - plus/minus sign */ 4 45 nabla init ("¬"), /* 254 */ 4 46 EMdash init ("­"), /* 255 - EM dash */ 4 47 slash init ("¯"), /* 256 */ 4 48 dagger init ("±"), /* 261 */ 4 49 perpen init ("»"), /* 273 - perpendicular mark */ 4 50 not_eq init ("½"), /* 275 - not-equal mark */ 4 51 dbldag init ("Á"), /* 301 - double daggar */ 4 52 cright init ("Ã"), /* 303 - copyright mark */ 4 53 delta init ("Ä"), /* 304 */ 4 54 bullet init ("Í"), /* 315 */ 4 55 prll init ("Î"), /* 316 - parallel mark */ 4 56 PI init ("Ð"), /* 320 - uppercase Greek pi */ 4 57 tmark init ("Ô"), /* 324 - trademark */ 4 58 tfore init ("Ö"), /* 326 - therefore mark */ 4 59 approx init ("Ú"), /* 332 - approximately-equal mark */ 4 60 infin init ("ß"), /* 337 - infinity */ 4 61 theta init ("ê"), /* 352 */ 4 62 pi init ("ð"), /* 360 - lowercase Greek pi */ 4 63 square init ("ý"), /* 375 */ 4 64 overbar init ("þ"), /* 376 */ 4 65 PS init ("ÿ"), /* 377 - punctuation space */ 4 66 sup0 init (""), /* 400 - superior digit 0 */ 4 67 sup1 init (""), /* 401 - superior digit 1 */ 4 68 sup2 init (""), /* 402 - superior digit 2 */ 4 69 sup3 init (""), /* 403 - superior digit 3 */ 4 70 sup4 init (""), /* 404 - superior digit 4 */ 4 71 sup5 init (""), /* 405 - superior digit 5 */ 4 72 sup6 init (""), /* 406 - superior digit 6 */ 4 73 sup7 init (""), /* 407 - superior digit 7 */ 4 74 sup8 init (""), /* 410 - superior digit 8 */ 4 75 sup9 init (" "), /* 411 - superior digit 9 */ 4 76 EM init (" "), /* 412 - EM space */ 4 77 EM_ init (" "), /* 413 - EM aligned dash */ 4 78 EN init (" "), /* 414 - EN space */ 4 79 EN_ init (" "), /* 415 - EN aligned dash */ 4 80 ENd init (""), /* 416 - EN dash */ 4 81 THIN init (""), /* 417 - thinspace */ 4 82 DEVIT init (""), /* 420 - device unit */ 4 83 lquote init (""), /* 421 - left double quote */ 4 84 rquote init (""), /* 422 - right double quote */ 4 85 modmark init (""), /* 424 - text modification/addition mark */ 4 86 delmark init (""), /* 430 - deletion mark */ 4 87 vrule init ("Z"), /* 532 - vertical rule */ 4 88 lslnt init ("^") /* 536 - left slant */ 4 89 ) char (1) unaligned static options (constant); 4 90 4 91 /* END INCLUDE FILE comp_metacodes.incl.pl1 */ 1 7 5 1 /* BEGIN INCLUDE FILE ..... comp_DCdata.incl.pl1 ..... 11/16/78 J Falksen 5 2* Modified: ??/81 - EJW - Addded type_wait 5 3* Modified: 4/83 - EJW - Added type_un(strt stop), reorganized file. 5 4**/ 5 5 5 6 /* format: style2,ind3,ll79,dclind4,idind15,comcol41,linecom */ 5 7 5 8 dcl DCxx_p ptr; /* for qualification of embedded */ 5 9 /* control strings */ 5 10 /* an embedded control string */ 5 11 dcl 1 dcxx unal based (DCxx_p), 5 12 2 mark char (1) unal, /* control marker - DC1 (\021) */ 5 13 2 ctl, 5 14 3 type bit (3) unal, /* 000- device/writer control */ 5 15 /* 001- */ 5 16 /* 010- literal data */ 5 17 /* 011- family/member/size data */ 5 18 /* 100- shift */ 5 19 /* 101- */ 5 20 /* 110- vector */ 5 21 /* 111- zero-offset vector */ 5 22 3 fill1 bit (1) unal, 5 23 3 Xctl bit (2) unal, /* 00- no X value present */ 5 24 /* 01- short X value */ 5 25 /* 10- long X value */ 5 26 3 fill2 bit (1) unal, 5 27 3 Yctl bit (2) unal, /* 00- no Y value present */ 5 28 /* 01- short Y value present */ 5 29 /* 10- long Y value present */ 5 30 2 leng fixed bin (9) unal unsigned, 5 31 /* # of remaining bytes */ 5 32 2 etc; /* the rest of the control bytes */ 5 33 /* device/writer controls */ 5 34 dcl 1 dcctl unal based (DCxx_p), 5 35 2 mark char (1) unal, 5 36 2 type char (1) unal, /* control type */ 5 37 /* leng is always 0 for these */ 5 38 2 leng fixed bin (9) unal unsigned; 5 39 dcl ( 5 40 wait_signal init (""), /* = 021001000 */ 5 41 unstart_signal init (""), /* = 021002000 */ 5 42 unstop_signal init ("") /* = 021003000 */ 5 43 ) char (3) static options (constant); 5 44 /* the "literal" control string */ 5 45 dcl 1 dclit unal based (DCxx_p), 5 46 2 mark char (1) unal, 5 47 2 type char (1) unal, /* control type */ 5 48 2 leng fixed bin (9) unal unsigned, 5 49 /* width in milli-points of literal */ 5 50 2 width fixed bin (31) unal, 5 51 /* actual literal, max length 509 */ 5 52 2 data char (dclit.leng - 4); 5 53 /* long (31 bits) values */ 5 54 dcl 1 dclong_val unal based (DCxx_p), 5 55 2 mark char (1) unal, 5 56 2 type char (1) unal, /* control type */ 5 57 2 leng fixed bin (9) unal unsigned, 5 58 ( 5 59 2 v1 fixed bin (31), /* long value */ 5 60 2 v2 fixed bin (31) /* long value */ 5 61 ) unal; 5 62 dcl ( 5 63 dclong_len init (8), /* 2 long values */ 5 64 dclong1_len init (4) /* 1 long value */ 5 65 ) fixed bin static options (constant); 5 66 /* short (17 bit) values */ 5 67 dcl 1 dcshort_val unal based (DCxx_p), 5 68 2 mark char (1) unal, 5 69 2 type char (1) unal, /* control type */ 5 70 2 leng fixed bin (9) unal unsigned, 5 71 ( 5 72 2 v1 fixed bin, /* short value */ 5 73 2 v2 fixed bin /* short value */ 5 74 ) unal; 5 75 dcl ( 5 76 dcshort_len init (4), /* 2 short values */ 5 77 dcshort1_len init (2) /* 1 short value */ 5 78 ) fixed bin static options (constant); 5 79 /* a font change string */ 5 80 dcl 1 dcfs unal based (DCxx_p), 5 81 2 mark char (1) unal, /* font/size data */ 5 82 2 type char (1) unal, /* control type */ 5 83 2 leng fixed bin (9) unal unsigned, 5 84 /* fnttbldata index */ 5 85 2 f fixed bin (9) unal unsigned, 5 86 /* point size in milli-points */ 5 87 2 p fixed bin (31) unal; 5 88 dcl dcfs_len fixed bin init (5) static options (constant); 5 89 5 90 dcl ( /* symbolic definitions of DC types */ 5 91 type_wait init (""), /* writer wait */ 5 92 type_unstart init (""), /* underscore start */ 5 93 type_unstop init (""), /* underscore stop */ 5 94 type_lit init ("ˆ"), /* literal data */ 5 95 type_font init ("À"), /* family/member/size data */ 5 96 /* SHIFTS - */ 5 97 type_sy init (""), /* -- no x, short y */ 5 98 type_sly init (""), /* -- no x, long y */ 5 99 type_sx init (""), /* -- short x, no y */ 5 100 type_sxy init (" "), /* -- short x, short y */ 5 101 type_slx init (""), /* -- long x, no y */ 5 102 type_slxly init (""), /* -- long x, long y */ 5 103 /* VECTORS */ 5 104 type_vy init (""), /* -- no x, short y */ 5 105 type_vly init ("‚"), /* -- no x, long y */ 5 106 type_vx init ("ˆ"), /* -- short x, no y */ 5 107 type_vxy init ("‰"), /* -- short x, short y */ 5 108 type_vlx init (""), /* -- long x, no y */ 5 109 type_vlxly init ("’"), /* -- long x, long y */ 5 110 /* ZERO-OFFSET VECTORS- */ 5 111 type_v0y init ("Á"), /* -- no x, short y */ 5 112 type_v0ly init ("Â"), /* -- no x, long y */ 5 113 type_v0x init ("È"), /* -- short x, no y */ 5 114 type_v0xy init ("É"), /* -- short x, short y */ 5 115 type_v0lx init ("Ð"), /* -- long x, no y */ 5 116 type_v0lxly init ("Ò") /* -- long x, long y */ 5 117 ) char (1) unal int static options (constant); 5 118 5 119 /* END INCLUDE FILE ..... comp_DCdata.incl.pl1 ..... */ 1 8 6 1 /* BEGIN INCLUDE FILE - comp_dvid.incl.pl1 */ 6 2 6 3 /* Written: JA Falksen - 6/81 6 4*/* Modified: EJ Wallman - 11/81 - Added comp_dvt.displayproc */ 6 5 /* Modified: EJW - 1/82 - added length arg to comp_dvt.displayproc */ 6 6 /* Modified: 2/82 - EJW - Deleted ptr arg from comp_dvt.displayproc */ 6 7 /* Modified: 3/83 - EJW - Changed footref arg of comp_dvt.footproc to 6 8* (3) char (*) var. Version 4. */ 6 9 /* Modified: 6/83 - EJW - Added error print control switch to calling 6 10* sequence for comp_dvt.displayproc. - Version 5. */ 6 11 6 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 6 13 6 14 dcl comp_dvid_version 6 15 fixed bin static options (constant) init (5); 6 16 6 17 dcl 1 comp_dvid aligned based (const.dvidptr), 6 18 2 version fixed bin, /* version of this structure and */ 6 19 /* of comp_dvt */ 6 20 2 devname char (32), /* name of device */ 6 21 2 dvt_r bit (18); /* device table offset */ 6 22 6 23 /* END INCLUDE FILE - comp_dvid.incl.pl1 */ 1 9 7 1 /* BEGIN INCLUDE FILE - comp_dvt.incl.pl1 */ 7 2 7 3 /* Written: 9/80 - JA Falksen 7 4*/* Modified: 11/81 - EJW - Added comp_dvt.displayproc 7 5*/* Modified: 1/82 - EJW - Added length arg to comp_dvt.displayproc 7 6*/* Modified: 2/82 - EJW - Deleted ptr arg from comp_dvt.displayproc 7 7*/* Modified: 3/83 - EJW - Changed footref arg of comp_dvt.footproc to 7 8* (3) char (*) var. Version 4. */ 7 9 /* Modified: 6/83 - EJW - Added error print control switch to calling 7 10* sequence for comp_dvt.displayproc. - Version 5. 7 11*/* Modified: 11/84 - EJW - Renamed no_adjust to justifying. 7 12**/ 7 13 7 14 /* All names which end in "_r"are offset values within the device table */ 7 15 /* segment. The version of this structure is in comp_dvid.incl.pl1 */ 7 16 7 17 /* format: style2,ind3,ll79,dclind4,idind15,comcol41,linecom */ 7 18 7 19 dcl 1 comp_dvt aligned based (const.devptr), 7 20 2 devclass char (32), /* what general kind of device is */ 7 21 /* this, currently available: */ 7 22 /* "printer" (includes terminals), */ 7 23 /* "braille", "bitmap" */ 7 24 2 outproc entry /* page output processor */ 7 25 (fixed bin, /* function - 0=build */ 7 26 /* 1=init page */ 7 27 /* 2=init file */ 7 28 /* 3=cleanup */ 7 29 fixed bin (35)),/* error code */ 7 30 2 footproc entry /* footnote reference proc */ 7 31 ((3) char (*) var, 7 32 /* reference string (IN/OUT) */ 7 33 ptr), /* comp_dvt_p (IN) */ 7 34 2 artproc entry (), /* artwork proc */ 7 35 /* dont know how to describe yet */ 7 36 2 displayproc 7 37 entry /* string display interpreter */ 7 38 (char (*) var, /* raw input string */ 7 39 fixed bin (24), /* chars used in this call */ 7 40 bit (1)) /* 1= dont show display errors */ 7 41 returns (char (*) var), 7 42 /* interpreted output string */ 7 43 /* following values are in millipoints */ 7 44 2 min_WS fixed bin (31), /* minimum whitespace */ 7 45 2 min_lead fixed bin (31), /* minimun lead */ 7 46 2 vmt_min fixed bin (31), /* min usable .vmt */ 7 47 2 vmb_min fixed bin (31), /* min usable .vmb */ 7 48 2 def_vmt fixed bin (31), /* default .vmt */ 7 49 2 def_vmh fixed bin (31), /* default .vmh */ 7 50 2 def_vmf fixed bin (31), /* default .vmf */ 7 51 2 def_vmb fixed bin (31), /* default .vmb */ 7 52 2 pdw_max fixed bin (31), /* max page width available */ 7 53 2 pdl_max fixed bin (31), /* max page length available, */ 7 54 /* (0 = unlimited) */ 7 55 2 upshift fixed bin (31), /* footnote reference shift */ 7 56 2 init_ps fixed bin (31), /* initial pointsize (millipoints) */ 7 57 2 lettersp fixed bin (31), /* max letterspacing */ 7 58 2 max_pages fixed bin, /* max pages/"file" -1 ->unlimited */ 7 59 2 max_files fixed bin, /* max "files"/reel -1 ->unlimited */ 7 60 2 init_fam fixed bin, /* initial family index */ 7 61 2 init_mem fixed bin, /* initial member index */ 7 62 2 foot_fam fixed bin, /* initial foot family index */ 7 63 2 foot_mem fixed bin, /* initial foot member index */ 7 64 2 init_family 7 65 char (32), /* initial font family to use */ 7 66 2 init_member 7 67 char (32), /* initial font member to use */ 7 68 ( /* the following are offsets */ 7 69 2 atd_r, /* attach desc for on-line output */ 7 70 2 dvc_r, /* device control table relptr */ 7 71 2 comment_r, /* comment string relptr */ 7 72 2 cleanup_r, /* "cleanup" string relptr */ 7 73 2 medsel_table_r /* media select table relptr */ 7 74 ) bit (18) aligned, 7 75 2 foot_family 7 76 char (32), /* family for footnote reference */ 7 77 2 foot_member 7 78 char (32), /* member for footnote reference */ 7 79 /* if one was specified */ 7 80 2 sws unaligned, 7 81 3 interleave /* 0- page block has lines in column */ 7 82 bit (1), /* order left-to-right */ 7 83 /* 1- page block has lines in line */ 7 84 /* order top-to-bottom */ 7 85 3 justifying /* 1- device justifies lines */ 7 86 bit (1), 7 87 3 mbz bit (24), 7 88 3 endpage bit (9), /* EOP char if not "0"b */ 7 89 2 open_mode fixed bin (35), /* when going to a file */ 7 90 2 recleng fixed bin, /* length of tape records */ 7 91 2 family_ct fixed bin, /* # families present */ 7 92 2 family (comp_dvt.family_ct), 7 93 /* families of fonts defined */ 7 94 3 member_r bit (18) aligned, 7 95 /* member table relptr */ 7 96 3 name char (32); /* family name */ 7 97 7 98 7 99 /* The usage formula for units: */ 7 100 /* */ 7 101 /* rel_units * length_in_points */ 7 102 /* ---------------------------- = length_in_units */ 7 103 /* points_per_EM */ 7 104 7 105 /* END INCLUDE FILE comp_dvt.incl.pl1 */ 1 10 8 1 /* BEGIN INCLUDE FILE comp_entries.incl.pl1 */ 8 2 8 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 8 4 8 5 dcl compose_severity_ 8 6 fixed bin (35) ext static; 8 7 dcl comp_ entry; 8 8 dcl comp_art_ entry (ptr, bit (1)); 8 9 dcl comp_block_ctls_ 8 10 entry (fixed bin); 8 11 dcl comp_break_ entry (fixed bin, fixed bin); 8 12 dcl comp_break_ctls_ 8 13 entry (fixed bin); 8 14 dcl comp_ctls_ entry (bit (1) aligned); 8 15 dcl comp_eject_page_ 8 16 entry; 8 17 dcl comp_expr_eval_ 8 18 entry (char (*) var, fixed bin (21), ptr, fixed bin, 8 19 fixed bin, bit (1), fixed bin (31), char (*) var, 8 20 bit (9), fixed bin (35)); 8 21 dcl comp_extr_str_ entry (bit (1), char (*) var, fixed bin (21), 8 22 fixed bin (21), fixed bin (21), ptr) 8 23 returns (char (*) var); 8 24 dcl comp_fill_ entry; 8 25 dcl comp_font_ entry (bit (1), char (*) var, char (8) aligned); 8 26 dcl comp_format_ctls_ 8 27 entry (fixed bin); 8 28 dcl comp_get_file_$find 8 29 entry (char (*), ptr, char (*), bit (1), char (*) var, 8 30 fixed bin (35)); 8 31 dcl comp_get_file_$open 8 32 entry (ptr, bit (1), fixed bin (35)); 8 33 dcl comp_head_page_ 8 34 entry (fixed bin (31)); 8 35 dcl comp_hft_ctls_ entry (fixed bin); 8 36 dcl comp_hft_ctls_$title 8 37 entry (ptr, ptr, char (*) var, fixed bin (31)); 8 38 dcl comp_init_$one entry; 8 39 dcl comp_init_$two entry; 8 40 dcl comp_init_$three 8 41 entry; 8 42 dcl comp_insert_ctls_ 8 43 entry (fixed bin); 8 44 dcl comp_make_page_ 8 45 entry (fixed bin, bit (1)); 8 46 dcl comp_make_page_$cleanup 8 47 entry; 8 48 dcl comp_measure_ entry (char (1020) var, ptr, bit (1), bit (1), bit (6), 8 49 fixed bin (31), ptr, ptr, ptr); 8 50 dcl comp_read_$name 8 51 entry (char (*) var, fixed bin (21), fixed bin (21), 8 52 ptr) returns (char (*) var); 8 53 dcl comp_read_$number 8 54 entry (char (*) var, (*) fixed bin (31), 8 55 fixed bin (21), fixed bin (21), ptr, fixed bin (35)) 8 56 returns (fixed bin (31)); 8 57 dcl comp_read_$line 8 58 entry (ptr, char (*) var, bit (1)); 8 59 dcl comp_report_ entry (fixed bin, fixed bin (35), char (*), ptr, 8 60 char (*) var); 8 61 dcl comp_report_$ctlstr 8 62 entry options (variable); 8 63 /**** (sev, code, info, line, ctl_str, args... */ 8 64 dcl comp_report_$exact 8 65 entry (char (*), ptr); 8 66 dcl comp_space_ entry (fixed bin (31), ptr, bit (1), bit (1), bit (1), 8 67 bit (1)); 8 68 dcl comp_tbl_ctls_ entry (fixed bin); 8 69 dcl comp_title_block_ 8 70 entry (ptr); 8 71 dcl comp_update_symbol_ 8 72 entry (bit (1), bit (1), bit (1), char (32), 8 73 char (*) var); 8 74 dcl comp_use_ref_ entry (char (*) var, bit (1), bit (1), ptr); 8 75 dcl comp_util_$add_text 8 76 entry (ptr, bit (1), bit (1), bit (1), bit (1), ptr); 8 77 dcl comp_util_$display 8 78 entry (char (*) var, fixed bin, bit (1)) 8 79 returns (char (*) var); 8 80 dcl comp_util_$escape 8 81 entry (char (*) var, ptr); 8 82 dcl comp_util_$getblk 8 83 entry (fixed bin, ptr, char (2), ptr, bit (1)); 8 84 dcl comp_util_$num_display 8 85 entry (ptr, fixed bin) returns (char (256) var); 8 86 dcl comp_util_$pageno 8 87 entry (fixed bin, char (*) var); 8 88 dcl comp_util_$pictures /* emit pending pictures */ 8 89 entry /**/ 8 90 (ptr); /* current text block */ 8 91 dcl comp_util_$pop entry (char (32)); 8 92 dcl comp_util_$push 8 93 entry (char (32)); 8 94 dcl comp_util_$relblk 8 95 entry (fixed bin, ptr); 8 96 dcl comp_util_$replace_text 8 97 entry (ptr, bit (1), ptr, ptr); 8 98 dcl comp_util_$search_tree 8 99 entry (char (32), bit (1)); 8 100 dcl comp_util_$set_bin 8 101 entry (fixed bin (31), char (32) var, fixed bin (31), 8 102 fixed bin (31), fixed bin (31), (*) fixed bin (31), 8 103 fixed bin (31)); 8 104 dcl comp_util_$set_net_page 8 105 entry (bit (1)); 8 106 dcl comp_util_$translate 8 107 entry (char (*) var) returns (char (*) var); 8 108 dcl comp_write_block_ 8 109 entry (fixed bin); 8 110 dcl comp_write_page_ 8 111 entry; 8 112 8 113 /* END INCLUDE FILE comp_entries.incl.pl1 */ 1 11 9 1 /* BEGIN INCLUDE FILE comp_fntstk.incl.pl1 */ 9 2 9 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 9 4 9 5 dcl fntstk_eptr ptr; /* font stack entry structure */ 9 6 dcl 1 fntstk_entry aligned based (fntstk_eptr), 9 7 2 bachelor bit (1), /* 1= has no members */ 9 8 2 devfnt fixed bin, /* font in the device */ 9 9 2 fam_name char (32), /* family name */ 9 10 2 famndx fixed bin, /* family index */ 9 11 2 fntptr ptr, /* font table pointer */ 9 12 2 mem_name char (32), /* /member name (or null) */ 9 13 2 memndx fixed bin, /* member index */ 9 14 2 memptr ptr, /* member table pointer */ 9 15 2 name char (65) var, /* font name */ 9 16 2 size fixed bin (31), /* requested point size */ 9 17 2 ps fixed bin (31), /* effective point size */ 9 18 2 fcs_str char (8); /* FCS string */ 9 19 9 20 /* END INCLUDE FILE comp_fntstk.incl.pl1 */ 1 12 10 1 /* BEGIN INCLUDE FILE comp_font.incl.pl1 */ 10 2 10 3 /* Fonts already loaded into the compose (pdir) database */ 10 4 10 5 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 10 6 10 7 dcl 1 fnttbldata aligned based (const.fnttbldata_ptr), 10 8 2 count fixed bin, /* number of fonts loaded */ 10 9 2 ndx fixed bin, /* index of current font */ 10 10 2 medsel_ptr ptr, /* -> media select table */ 10 11 2 ptr (100) ptr; /* 100 fonts should be plenty! */ 10 12 10 13 dcl fnttbl_ptr ptr init (null); 10 14 dcl 1 fnttbl aligned based (fnttbl_ptr), 10 15 2 min_wsp fixed bin, /* min wordspace - in strokes */ 10 16 2 avg_wsp fixed bin, /* nominal wordspace - in strokes */ 10 17 2 max_wsp fixed bin, /* max wordspace - in strokes */ 10 18 2 rel_units fixed bin, /* stroke value for this font */ 10 19 2 siztbl_ptr ptr, /* -> loaded size table */ 10 20 2 entry /* stack entry for this font */ 10 21 like fntstk_entry, 10 22 ( /* for each font character */ 10 23 2 devfnt fixed bin, /* font in the device */ 10 24 2 replptr ptr, /* replacement string ptrs */ 10 25 2 units fixed bin, /* width in strokes */ 10 26 2 white bit (1) unal /* white space flags */ 10 27 ) dimension (0:511); 10 28 10 29 dcl repl_str_ptr ptr; /* replacement strings */ 10 30 dcl 1 repl_str based (repl_str_ptr), 10 31 2 len fixed bin (35), 10 32 2 str char (256); 10 33 dcl replstr char (256) var based (repl_str_ptr); 10 34 /* media select strings */ 10 35 /* (indexed on fnttbldata.ndx) */ 10 36 dcl medsel (100) char (12) based (fnttbldata.medsel_ptr); 10 37 10 38 dcl 1 siztbl based (fnttbl.siztbl_ptr), 10 39 2 ct fixed bin, /* number of sizes */ 10 40 2 size (siztbl.ct) fixed bin (31); 10 41 10 42 /* This is the storage referred by family.member_r in comp_dvt 10 43* 10 44* If member.count is 1 and member.name(1) is null, then the font is a 10 45* 'bachelor'. 10 46* 10 47* The font stack will hold the family/member names which were used to 10 48* originally get to the font. When a bachelor is accessed, the member name 10 49* will remain but the bachelor flag will be set to tell any displayers not 10 50* to include it. 10 51* 10 52* %FontName% will contain either "family" or "family/member" depending on 10 53* the setting of the bachelor switch. */ 10 54 10 55 dcl member_ptr ptr; 10 56 dcl 1 member based (member_ptr), 10 57 2 count fixed bin, /* # members present */ 10 58 2 e (member.count), /* members defined for this device */ 10 59 3 font_r bit (18) unal, /* font character table relptr */ 10 60 3 size_r bit (18) aligned, 10 61 /* point size list relptr */ 10 62 3 Scalex fixed bin (35), /* X (hor) scaling * 1e8 - FUTURE */ 10 63 3 Scaley fixed bin (35), /* Y (ver) scaling * 1e8 - FUTURE */ 10 64 3 name char (32); /* member name */ 10 65 10 66 /* Storage referred by member.font_r */ 10 67 dcl font_ptr ptr; 10 68 dcl 1 font based (font_ptr), 10 69 ( 2 oput_r, /* offset of output data array */ 10 70 2 units_r /* offset of width array */ 10 71 ) bit (18) aligned, 10 72 2 rel_units fixed bin, /* stroke value for this table */ 10 73 2 footsep char (1), /* footref separator */ 10 74 2 fill char (3), 10 75 2 min_wsp fixed bin, /* min wordspace */ 10 76 2 avg_wsp fixed bin, /* nominal wordspace */ 10 77 2 max_wsp fixed bin; /* max wordspace */ 10 78 10 79 /* storage referred by font.units_r */ 10 80 dcl units_ptr ptr; /* width in strokes */ 10 81 dcl units (0:511) fixed bin based (units_ptr); 10 82 10 83 /* media select table in the device table */ 10 84 dcl medsel_table_ptr 10 85 ptr; 10 86 dcl 1 medsel_table based (medsel_table_ptr), 10 87 2 count fixed bin, 10 88 2 ref_r (medsel_table.count) bit (18) aligned; 10 89 10 90 /* storage referred by font.oput_r */ 10 91 dcl oput_p ptr; 10 92 dcl 1 oput based (oput_p), 10 93 2 data_ct fixed bin, /* highest char defined */ 10 94 2 e (0:oput.data_ct), 10 95 3 which /* index into view array */ 10 96 fixed bin (17) unal, 10 97 3 what_r /* output string */ 10 98 bit (18) unal; 10 99 10 100 /* storage referred by member.size_r */ 10 101 10 102 dcl sizel_p ptr; 10 103 dcl 1 sizel based (sizel_p),/* list of allowed point sizes */ 10 104 2 val_ct fixed bin, 10 105 2 val (sizel.val_ct) fixed bin (31); 10 106 10 107 /* storage referred by oput.what_r */ 10 108 10 109 dcl medchar_sel_p ptr; /* MediaChar select string */ 10 110 dcl 1 medchar_sel based (medchar_sel_p), 10 111 2 str_l fixed bin, 10 112 2 str char (medchar_sel.str_l); 10 113 dcl medchar char (medchar_sel.str_l) var based (medchar_sel_p); 10 114 10 115 dcl med_sel_p ptr; /* media select string */ 10 116 dcl 1 med_sel based (med_sel_p), 10 117 2 str_l fixed bin, 10 118 2 str char (med_sel.str_l); 10 119 10 120 /* END INCLUDE FILE comp_font.incl.pl1 */ 1 13 11 1 /* BEGIN INCLUDE FILE comp_option.incl.pl1 */ 11 2 11 3 dcl option_version fixed bin (35) static options (constant) init (2); 11 4 11 5 dcl 1 option aligned based (const.option_ptr), /* program options */ 11 6 2 version fixed bin (35), 11 7 /* Options with parameters */ 11 8 (2 argument_opt, /* -argument option flag */ 11 9 2 cbar_opt, /* -change_bars option flag */ 11 10 2 cbar_art_opt, /* -change_bars_art option flag */ 11 11 2 debug_opt, /* -debug option flag */ 11 12 2 db_all_opt, /* -debug_all option flag */ 11 13 2 db_file_opt, /* -debug_file option flag */ 11 14 2 device_opt, /* -device option flag */ 11 15 2 execute_opt, /* -execute option flag */ 11 16 2 from_opt, /* -from option flag */ 11 17 2 galley_opt, /* -galley option flag */ 11 18 2 hyph_opt, /* -hyphenation option flag */ 11 19 2 indent_opt, /* -indent option flag */ 11 20 2 input_file_opt, /* -input_file option flag */ 11 21 2 linespace_opt, /* -linespace option flag */ 11 22 2 output_file_opt, /* -output_file option flag */ 11 23 2 pages_opt, /* -pages option flag */ 11 24 2 page_chng_opt, /* -pages_changed option flag */ 11 25 2 parameter_opt, /* -parameter option flag */ 11 26 2 passes_opt, /* -passes option flag */ 11 27 2 tdir_opt, /* -temp_dir option flag */ 11 28 2 to_opt, /* -to option flag */ 11 29 /* Options without parameters */ 11 30 2 annot_opt, /* -annotate */ 11 31 2 brief_opt, /* -brief option flag */ 11 32 2 check_opt, /* -check option flag */ 11 33 2 cws_opt, /* -cws option flag */ 11 34 2 db_pause_opt, /* -debug_pause option flag */ 11 35 2 noart_opt, /* -noart option flag */ 11 36 2 nobell_opt, /* -no_bell option flag */ 11 37 2 nofill_opt, /* -nofill option flag */ 11 38 2 nohit_opt, /* -nohit option flag */ 11 39 2 number_opt, /* -number option flag */ 11 40 2 number_append_opt, /* -number_append option flag */ 11 41 2 number_brief_opt, /* -number_brief option flag */ 11 42 2 stop_opt, /* -stop option flag */ 11 43 2 wait_opt) unal bit (1), /* -wait option flag */ 11 44 2 MBZ bit (2) unal, 11 45 /* Optional parameters */ 11 46 2 arg_count fixed bin, /* count of -ag values */ 11 47 2 cbar, /* change bar data */ 11 48 3 level char (1), /* change level character (ASCII NUL) */ 11 49 3 place char (1), /* placement character */ 11 50 3 space fixed bin (31), /* extra left margin space needed */ 11 51 3 left, /* left margin mark data */ 11 52 4 sep fixed bin (31), /* separation */ 11 53 4 width fixed bin (31), /* mark width */ 11 54 4 mark char (80) varying, /* the left margin mark */ 11 55 3 right, /* right margin mark data */ 11 56 4 sep fixed bin (31), /* separation */ 11 57 4 width fixed bin (31), /* mark width */ 11 58 4 mark char (80) varying, /* the right margin mark */ 11 59 3 del, /* deletion mark data */ 11 60 4 sep fixed bin (31), /* separation */ 11 61 4 width fixed bin (31), /* mark width */ 11 62 4 mark char (80) varying, /* the deletion mark */ 11 63 2 db_after_line fixed bin (35), /* source line for enabling insert debug */ 11 64 2 db_before_line fixed bin (35), /* source line for disabling insert debug */ 11 65 2 db_file char (200) var, /* file pathanme for debug */ 11 66 2 db_file_after fixed bin (35), /* debug file starting line */ 11 67 2 db_line_end fixed bin (35), /* final line for -debug output */ 11 68 2 db_line_strt fixed bin (35), /* initial line for -debug output */ 11 69 2 device char (32) varying, /* output device */ 11 70 2 extra_indent fixed bin (31), /* extra indent value */ 11 71 2 hyph_size fixed bin (31), /* least word part size for hyphenation */ 11 72 2 line_1 fixed bin (35), /* initial line for output */ 11 73 2 line_2 fixed bin (35), /* final line for output */ 11 74 2 linespace fixed bin (31), /* line spacing value */ 11 75 2 pglstct fixed bin (35), /* number of page list entries */ 11 76 2 pglstndx fixed bin (35), /* index for -pages list */ 11 77 2 pglst (0:49), /* list of requested pages */ 11 78 3 from char (32) var, 11 79 3 to char (32) var, 11 80 2 parameter char (80) varying, /* parameter from command line */ 11 81 2 passes fixed bin, /* passes remaining */ 11 82 2 pgc_select char (1) aligned; /* addendum key to control change page printing - init = NUL */ 11 83 11 84 /* END INCLUDE FILE comp_option.incl.pl1 */ 11 85 1 14 12 1 /* BEGIN INCLUDE FILE ..... comp_output.incl.pl1 ..... 08/29/78 J Falksen */ 12 2 12 3 /* This include file describes the format of compout files. "Ordinary" compout 12 4* files, i.e. printer or ascii, will be written to stream files. All others 12 5* are not dprint-able and are written to sequential files. 12 6* 12 7* The first record is a file header which contains information necessary for 12 8* processing by process_compout. 12 9* 12 10* Each record thereafter contains one page image of data */ 12 11 12 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 12 13 12 14 dcl filedata_version_2 12 15 fixed bin static options (constant) init (2); 12 16 dcl filedata_version_3 12 17 fixed bin static options (constant) init (3); 12 18 dcl filedata_version_4 12 19 fixed bin static options (constant) init (4); 12 20 12 21 dcl fileheader_ptr ptr init (null); 12 22 dcl 1 fileheader aligned based (fileheader_ptr), 12 23 2 version fixed bin, /* version of this file */ 12 24 2 device_class 12 25 char (32), 12 26 2 device_name /* generic device name */ 12 27 char (32), 12 28 2 device char (32), /* logical device name */ 12 29 2 recleng fixed bin, /* mag tape record length */ 12 30 2 max_pages fixed bin, /* max pages/record, -1=unlimited */ 12 31 /* max_files not defined version 2 */ 12 32 2 max_files fixed bin, /* max files/tape, -1=unlimited */ 12 33 /* page_len not defined in version 3 */ 12 34 2 page_len fixed bin (21), /* page length */ 12 35 2 cleanup_leng /* device cleanup string */ 12 36 fixed bin, 12 37 2 cleanup char (l_cleanup), 12 38 2 comment_leng /* comment string - info for pco */ 12 39 fixed bin, 12 40 2 comment char (l_comment); 12 41 12 42 dcl l_comment fixed bin; /* comment length */ 12 43 dcl l_cleanup fixed bin; /* cleanup length */ 12 44 /* data record */ 12 45 dcl record_ptr ptr init (null); 12 46 dcl 1 record aligned based (record_ptr), 12 47 2 header, 12 48 3 pageid char (32), /* page identification 12 49* ("-1" means a galley block) */ 12 50 3 changed bit (1) unal, /* 1- this is a changed page */ 12 51 3 front bit (1) unal, /* 1- this is a front page */ 12 52 3 pending bit (1) unal, /* 1- page has been processed 12 53* but not printed */ 12 54 3 blank bit (1) unal, /* 1- intentional blank page */ 12 55 3 MBZ bit (32) unal, /* pad to word boundary */ 12 56 2 page_record 12 57 bit (36); /* base location of output structure */ 12 58 12 59 /* The output writer returns a catenated set of text strings. Each string has 12 60* a control preface. The last string in the list has output.nextref = "0"b */ 12 61 12 62 dcl page_record_ptr 12 63 ptr init (null); 12 64 dcl 1 page_record aligned based (page_record_ptr), 12 65 2 sws, 12 66 3 in_use bit (1) unal, /* 1- in use (so nextref ^= "0"b ) */ 12 67 3 rawo bit (1) unal, /* 1- text needs raw mode */ 12 68 3 halt bit (1) unal, /* 1- halt to change wheels */ 12 69 3 halt2 bit (1) unal, /* 1- halt AFTER changing wheels */ 12 70 3 halt3 bit (1) unal, /* reserved for future use */ 12 71 3 halt4 bit (1) unal, /* 1- mid-page wait */ 12 72 3 preface bit (1) unal, /* 1- control preface, this text */ 12 73 /* must be processed whenever it */ 12 74 /* is different than the */ 12 75 /* previous one. */ 12 76 3 id_preface /* 1- identification preface, this */ 12 77 bit (1) unal, /* to be included only at the */ 12 78 /* beginning of an output file. */ 12 79 /* In general, they will never */ 12 80 /* match each other (unless page */ 12 81 /* ids are duplicated). */ 12 82 3 pad bit (22) unal, /* pad to last byte */ 12 83 3 pwheel fixed bin (6) unal uns, 12 84 2 leng fixed bin (24), /* actual output text */ 12 85 2 text char (16384 refer (page_record.leng)), 12 86 2 nextref bit (36); /* location of next if any */ 12 87 12 88 /* END INCLUDE FILE ..... comp_output.incl.pl1 ..... */ 1 15 13 1 /* BEGIN INCLUDE FILE comp_page.incl.pl1 */ 13 2 13 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 13 4 13 5 dcl max_image_lines 13 6 fixed static options (constant) init (1000); 13 7 dcl max_cols fixed static options (constant) init (20); 13 8 13 9 dcl page_version fixed bin static options (constant) init (5); 13 10 /* composed page structure */ 13 11 dcl 1 page aligned based (const.page_ptr), 13 12 2 version fixed bin, /* version of this structure */ 13 13 2 parms aligned like page_parms, 13 14 /* page formatting parameters */ 13 15 2 hdr aligned like page_header, 13 16 /* page control stuff */ 13 17 2 image_ptr ptr, /* pointer to the madeup page image */ 13 18 2 column_ptr (0:20) ptr, /* pointers to the column structures */ 13 19 2 col_image_ptr 13 20 (-2:21) ptr; /* pointers to column images */ 13 21 /* col -1 is for line numbers and */ 13 22 /* left margin change bars; */ 13 23 /* col -2 is for */ 13 24 /* right margin change bars */ 13 25 /* and/or annotation * / 13 26* /* page control stuff */ 13 27 dcl 1 page_header aligned based (const.page_header_ptr), 13 28 2 sws, 13 29 3 art bit (1) unal, /* 1 = header/footer art */ 13 30 3 blankpage 13 31 bit (1) unal, /* 1 = intentional blank page */ 13 32 3 frontpage 13 33 bit (1) unal, /* 1 = odd page number */ 13 34 3 headed bit (1) unal, /* 1 = page header has been written */ 13 35 3 modified bit (1) unal, /* 1 = page has been modified */ 13 36 3 overflow bit (1) unal, /* OBSOLETE */ 13 37 3 MBZ bit (12) unal, 13 38 3 dot_addltr 13 39 char (1) unal, /* dot page add letter, if any */ 13 40 3 pgc_select 13 41 char (1) unal, /* for selecting change pages */ 13 42 2 baldepth fixed bin (31), /* page depth at balance point */ 13 43 2 balusd fixed bin (31), /* space used at balance point */ 13 44 2 col_count fixed bin, /* highest value of col_index for the page */ 13 45 2 col_index fixed bin, /* column index */ 13 46 2 depth fixed bin (31), /* current page depth */ 13 47 2 hdspc fixed bin (31), /* TOP white space */ 13 48 2 lmarg fixed bin (31), /* left margin for this page */ 13 49 2 net fixed bin (31), /* net usable space on the page */ 13 50 2 pageno char (32) var, /* current page number */ 13 51 2 used fixed bin (31); /* space already used on the page */ 13 52 13 53 dcl page_image_version 13 54 fixed bin (35) static options (constant) init (2); 13 55 /* structure passed to writers */ 13 56 dcl 1 page_image aligned based (page.image_ptr), 13 57 2 version fixed bin (35), /* structure version no */ 13 58 2 count fixed bin, /* count of page image lines */ 13 59 2 file_id char (32) var, /* compout identifier */ 13 60 2 func fixed bin, /* function code; 0 = build, 13 61* 1 = intialize, 2 = cleanup */ 13 62 2 text_ptr ptr, /* pointer to the text area */ 13 63 /* the image lines */ 13 64 2 line (max_image_lines), 13 65 3 sws, 13 66 4 quad bit (6) unal, /* text set position flags */ 13 67 4 art bit (1) unal, /* 1 = artwork in the line */ 13 68 4 cbar bit (1) unal, /* 1= line has a cbar, dont erase */ 13 69 4 mrgtxt bit (1) unal, /* line number or marginal note */ 13 70 4 white bit (1) unal, /* line is white */ 13 71 4 MBZ bit (26) unal, 13 72 3 depth fixed bin (31), /* page depth for the text */ 13 73 3 gaps fixed bin, /* number of WS gaps in the line */ 13 74 3 info like text_entry.info, 13 75 /* input file info */ 13 76 3 lead fixed bin (31), /* lead value if trailing WS */ 13 77 3 lfnt fixed bin, /* font at the left margin */ 13 78 3 lmarg fixed bin (31), /* text left margin position */ 13 79 3 lsize fixed bin (31), /* pointsize at the left margin */ 13 80 3 net fixed bin (31), /* net width for filling */ 13 81 3 pos fixed bin (31), /* current horiz position */ 13 82 3 ptr ptr, /* pointer to the text */ 13 83 3 rmarg fixed bin (31), /* text right margin position */ 13 84 3 width fixed bin (31); /* width of the text */ 13 85 /* current page formatting parms */ 13 86 dcl 1 page_parms aligned based (const.page_parms_ptr), 13 87 2 init_page_depth 13 88 fixed bin (31), /* initial page depth */ 13 89 2 length fixed bin (31), /* page length */ 13 90 2 lmarg, /* page left margin */ 13 91 3 even fixed bin (31), 13 92 3 odd fixed bin (31), 13 93 2 margin, /* margin values */ 13 94 3 top fixed bin (31), 13 95 3 header fixed bin (31), 13 96 3 footer fixed bin (31), 13 97 3 bottom fixed bin (31), 13 98 2 measure fixed bin (31), /* line space available for text */ 13 99 2 net, /* net usable space on page */ 13 100 3 even fixed bin (31), /* even pages */ 13 101 3 odd fixed bin (31), /* odd pages */ 13 102 /* arrays at the end */ 13 103 2 cols, /* columns defined for the page */ 13 104 3 bal bit (1) unal, /* column balancing control flag */ 13 105 3 MBZ bit (17) unal, 13 106 3 count fixed bin unal; /* the number of columns */ 13 107 /* default page formatting parms */ 13 108 dcl 1 init_page_parms 13 109 aligned like page_parms 13 110 based (const.init_page_parms_ptr); 13 111 13 112 /* END INCLUDE FILE comp_page.incl.pl1 */ 1 16 14 1 /* BEGIN INCLUDE FILE comp_shared.incl.pl1 */ 14 2 14 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 14 4 14 5 dcl shared_version fixed bin (35) static options (constant) init (17); 14 6 14 7 dcl 1 shared aligned based (const.shared_ptr), 14 8 2 version fixed bin (35), /* version of this structure */ 14 9 2 chars, 14 10 ( 3 sym_delim, /* delimiter for symbols */ 14 11 3 ttl_delim, /* delimiter for title parts */ 14 12 3 wrd_brkr /* word break character */ 14 13 ) char (1) unal, 14 14 3 PAD char (1) unal, 14 15 2 cbar_type char (4) var, /* change bar type */ 14 16 2 dot_add_letter /* dot page add letter */ 14 17 char (1) var, 14 18 2 EN_width fixed bin (31), /* width of EN in current font */ 14 19 2 eqn_refct fixed bin, /* equation reference counter */ 14 20 2 footref_fcs /* footnote ref FCS string */ 14 21 char (8) aligned, 14 22 2 ftn_reset char (8) var, /* footnote reset mode */ 14 23 2 ftnrefct fixed bin, /* footnote ref counter */ 14 24 2 hyph_size fixed bin (31), /* least word part size for hyphing */ 14 25 2 if_nest, /* if/then/else logic control */ 14 26 3 ndx fixed bin, /* depth of logic nest */ 14 27 3 e (25), /* nest entries */ 14 28 /* .if control switch */ 14 29 4 sw fixed bin, /* 0=off, 1=(then), -1=(else) */ 14 30 4 info aligned like text_entry.info, 14 31 4 line char (256) var, /* the control line */ 14 32 2 indctl, /* indent ctls stack */ 14 33 3 ndx fixed bin, /* current level */ 14 34 /* switch bits */ 14 35 3 stk (0:35) bit (1) unal, 14 36 2 input_dirname 14 37 char (168) var, /* dir containing current input file */ 14 38 2 input_filename 14 39 char (200) var, /* current input file name */ 14 40 2 lead fixed bin (31), /* current linespacing value */ 14 41 2 lit_count fixed bin (35), /* count of literal lines */ 14 42 2 next_pagenmbr 14 43 char (32) var, /* next page number / */ 14 44 2 output_file 14 45 char (32) var, /* output file identifier */ 14 46 2 pagecount fixed bin, /* number of pages produced */ 14 47 2 pagenum, /* page number structure */ 14 48 3 index fixed bin, /* level currently counting */ 14 49 ( 14 50 3 sep char (1) unal, /* separator chars */ 14 51 3 nmbr fixed bin (31), /* the counters */ 14 52 3 mode /* display modes */ 14 53 fixed bin (8) unal 14 54 ) dimension (20), 14 55 2 parameter char (254) var, /* command line parameter */ 14 56 2 param_pres bit (1), /* passed parameter flag */ 14 57 2 pass_counter 14 58 fixed bin, /* pass counter */ 14 59 2 picture, /* picture blocks */ 14 60 3 count fixed bin, /* number of them */ 14 61 3 space fixed bin (31), /* total picture space */ 14 62 3 blk (10), /* picture blocks */ 14 63 4 type char (4), /* type = page/col */ 14 64 4 place char (4), /* place = top/cen/bot */ 14 65 4 ptr ptr, /* pointer to block */ 14 66 4 size fixed bin (31), /* size of the picture */ 14 67 2 ptrs, 14 68 ( 3 aux_file_data_ptr, /* -> auxiliary file data */ 14 69 3 blank_footer_ptr, /* -> blank page footer */ 14 70 3 blank_header_ptr, /* -> blank page header */ 14 71 3 blank_text_ptr, /* -> blank page text */ 14 72 3 blkptr, /* -> active text */ 14 73 3 colptr, /* current column */ 14 74 3 compout_ptr, /* iocb pointer for output */ 14 75 3 compx_ptr, /* iocb pointer for compx file */ 14 76 3 ctb_ptr, /* current line artwork table */ 14 77 3 epftrptr, /* even page footer block */ 14 78 3 ephdrptr, /* even page header block */ 14 79 3 fcb_ptr, /* input file control block pointer */ 14 80 3 ftnblk_data_ptr, /* footnote block data pointer */ 14 81 3 footnote_header_ptr, /* footnote header "title" */ 14 82 3 graphic_page_ptr, /* graphic output page */ 14 83 3 hit_data_ptr, /* hit data pointer */ 14 84 3 htab_ptr, /* horizontal tab tables */ 14 85 3 hwrd_data_ptr, /* local hyphenation table */ 14 86 3 insert_ptr, /* data entry for current input file */ 14 87 3 opftrptr, /* odd page footer block */ 14 88 3 ophdrptr, /* odd page header block */ 14 89 3 ptb_ptr, /* previous line artwork table */ 14 90 3 spcl_blkptr, /* "special" block pointer */ 14 91 3 tbldata_ptr, /* table column data structure */ 14 92 3 tblkdata_ptr, /* text block data array */ 14 93 3 text_header_ptr /* empty text header structure */ 14 94 ) ptr, 14 95 2 scale, /* space conversion scale factors */ 14 96 3 horz fixed bin (31), /* horizontal */ 14 97 3 vert fixed bin (31), /* vertical */ 14 98 2 source_filename 14 99 char (200) var, /* current source file name */ 14 100 2 sws, /* switch bits */ 14 101 ( 3 bug_mode, /* debug mode */ 14 102 3 compout_not_headed, /* compout is not headed */ 14 103 3 end_input, /* EOF for current input file */ 14 104 3 end_output, /* no more output is wanted */ 14 105 3 firstpass, /* first pass over input */ 14 106 3 ftn_mode, /* in footnote mode */ 14 107 3 hyph_mode, /* hyphenating mode */ 14 108 3 inserting_hfc, /* inserting hdr, ftr, or cap */ 14 109 3 literal_mode, /* literal line mode flag */ 14 110 3 pageblock, /* blocks belong to page */ 14 111 3 picture_mode, /* building a picture */ 14 112 3 print_flag, /* producing output */ 14 113 3 purge_ftns, /* purging footnotes */ 14 114 3 suppress_footref, /* suppress next footnote ref */ 14 115 3 table_mode /* table mode */ 14 116 ) bit (1) unal, 14 117 3 MBZ bit (21) unal, 14 118 2 trans, /* trans table for .tr */ 14 119 3 in char (128) var, /* input chars */ 14 120 3 out char (128) var, /* output chars */ 14 121 2 widow_size fixed bin (31), /* widow size */ 14 122 2 widow_foot fixed bin (31); /* widow for footnotes */ 14 123 /* to save shared data between files/passes */ 14 124 dcl 1 save_shared aligned like shared based (const.save_shared_ptr); 14 125 14 126 dcl dot_addltr_symb_index 14 127 fixed bin static options (constant) init (12); 14 128 dcl max_text_lines fixed bin static options (constant) init (1000); 14 129 dcl mode_string char (16) static options (constant) 14 130 init ("arbihxocalaurlru"); 14 131 /* value overlays */ 14 132 dcl flag_value bit (1) based; 14 133 dcl num_value fixed bin (31) based; 14 134 14 135 /* END INCLUDE FILE comp_shared.incl.pl1 */ 1 17 15 1 /* BEGIN INCLUDE FILE comp_text.incl.pl1 */ 15 2 15 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 15 4 15 5 dcl 1 tblkdata /* data for allocated text blocks */ 15 6 aligned based (shared.tblkdata_ptr), 15 7 2 block, /* block pool */ 15 8 3 count fixed bin, 15 9 3 ptr (500) ptr, /* block pointers */ 15 10 /* block state flags */ 15 11 3 free (500) bit (1) unal, 15 12 2 line_area, /* line area pool */ 15 13 3 count fixed bin, 15 14 3 ptr (500) ptr, /* area pointers */ 15 15 /* area state flags */ 15 16 3 free (500) bit (1) unal, 15 17 2 text_area, /* text area pool */ 15 18 3 count fixed bin, 15 19 3 ptr (500) ptr, /* area pointers */ 15 20 /* area state flags */ 15 21 3 free (500) bit (1) unal, 15 22 3 string_area_count 15 23 fixed bin; /* line areas */ 15 24 dcl LINE_AREA_SIZE fixed bin static options (constant) init (24); 15 25 dcl line_area_ptr ptr init (null); 15 26 dcl 1 line_area aligned based (line_area_ptr), 15 27 2 next ptr, /* forward thread */ 15 28 2 prev ptr, /* backward thread */ 15 29 2 count fixed bin, /* number of lines allocated */ 15 30 2 ndx fixed bin, /* index of current line */ 15 31 2 pndx fixed bin, /* area pool index */ 15 32 2 linptr (LINE_AREA_SIZE) ptr; 15 33 /* text areas */ 15 34 dcl TEXT_AREA_SIZE fixed bin static options (constant) init (6); 15 35 dcl text_area_ptr ptr init (null); 15 36 dcl 1 text_area aligned based (text_area_ptr), 15 37 2 next ptr, /* forward thread */ 15 38 2 count fixed bin, /* number of areas allocated */ 15 39 2 ndx fixed bin, /* index of current strarea */ 15 40 2 pndx fixed bin, /* area pool index */ 15 41 2 strareaptr (TEXT_AREA_SIZE) ptr; 15 42 /* text string area */ 15 43 dcl string_area (256) fixed bin based; 15 44 dcl txtstrptr ptr; /* current text string */ 15 45 dcl txtstr char (1020) var based (txtstrptr); 15 46 15 47 dcl TEXT_VERSION fixed bin static options (constant) init (9); 15 48 /* general text block */ 15 49 dcl 1 text aligned based (shared.blkptr), 15 50 2 version fixed bin, /* version of structure */ 15 51 2 blkndx fixed bin, /* block data index */ 15 52 2 blktype char (2), /* block type code */ 15 53 /* dynamic block control stuff */ 15 54 2 hdr aligned like text_header, 15 55 /* text read from input file */ 15 56 2 input aligned like text_entry, 15 57 2 input_line char (1020) var,/* input buffer */ 15 58 2 line_area, 15 59 3 first ptr, /* head of line area thread */ 15 60 3 cur ptr, /* current line area */ 15 61 2 next_text ptr, /* next text string */ 15 62 /* text formatting parameters */ 15 63 2 parms aligned like default_parms, 15 64 2 text_area, 15 65 3 first ptr, /* head of text area thread */ 15 66 3 cur ptr; /* current text area */ 15 67 /* an empty text block line */ 15 68 dcl 1 text_entry aligned based (const.text_entry_ptr), 15 69 2 sws, /* unaligned switches, etc. */ 15 70 3 art bit (1) unal, /* line has artwork */ 15 71 3 cbar, /* change bar flags */ 15 72 4 add bit (1) unal, /* text addition flag */ 15 73 4 del bit (1) unal, /* text deletion flag */ 15 74 4 mod bit (1) unal, /* text modification flag */ 15 75 3 default bit (1) unal, /* 1 = default case as needed */ 15 76 3 DVctl bit (1) unal, /* 1 = line is a device ctl string */ 15 77 3 embedded bit (1) unal, /* 1 = line has an embedded control */ 15 78 3 end_keep bit (1) unal, /* 1= line ends a keep */ 15 79 3 fnt_chng bit (1) unal, /* 1 = text is a font change string */ 15 80 3 footref bit (1) unal, /* 1 = line has a footnote reference */ 15 81 3 hanging bit (1) unal, /* 1 = a hanging undent */ 15 82 3 keep bit (1) unal, /* 1 = unsplittable line */ 15 83 3 no_trim bit (1) unal, /* 1 = untrimmable white line */ 15 84 3 oflo bit (1) unal, /* line causes overflow */ 15 85 3 punct bit (1) unal, /* 1 = line ends with punctuation */ 15 86 3 quad bit (6) unal, /* text alignment flags */ 15 87 3 space_added /* 1= line has added space */ 15 88 bit (1) unal, 15 89 3 spcl, /* special entry - not output text */ 15 90 4 file bit (1) unal, /* 1= output to special file */ 15 91 4 blk_splt /* 1= action at block split time */ 15 92 bit (1) unal, 15 93 4 page_mkup /* 1= action at page makeup time */ 15 94 bit (1) unal, 15 95 3 table bit (1) unal, /* 1= line is a table entry */ 15 96 3 tblspc bit (1) unal, /* 1= WS fill for table mode */ 15 97 3 title bit (1) unal, /* 1= line is a */ 15 98 3 unspnct bit (1) unal, /* 1= underscore punctuation */ 15 99 3 unstop bit (1) unal, /* 1= line is/ends with UNSTOP */ 15 100 3 unstrt bit (1) unal, /* 1= line is/ends with UNSTART */ 15 101 3 unswrds bit (1) unal, /* 1= underscore words only */ 15 102 3 white bit (1) unal, /* 1= line is white space */ 15 103 3 und_prot bit (1) unal, /* 1= undent is protected */ 15 104 3 MBZ bit (4) unal, 15 105 2 art_start fixed bin unal, /* start of art string in line */ 15 106 2 art_len fixed bin unal, /* length of art string in line */ 15 107 2 cbar_level /* change level for cbars */ 15 108 char (1) aligned, 15 109 2 cur, /* current scanning data for line */ 15 110 3 chrct fixed bin, /* count of chars scanned */ 15 111 3 gaps fixed bin, /* gap count */ 15 112 3 width fixed bin (31), /* width of font chars */ 15 113 3 min fixed bin (31), /* width of min spbnds */ 15 114 3 avg fixed bin (31), /* width of avg spbnds */ 15 115 3 max fixed bin (31), /* width of max spbnds */ 15 116 3 font like fntstk_entry, 15 117 2 depth fixed bin (31), /* page depth for line */ 15 118 /* font at start of line */ 15 119 2 font like fntstk_entry, 15 120 2 index fixed bin (21), /* char index for line scanning */ 15 121 2 info, /* stuff created during line input */ 15 122 3 fileno fixed bin, /* input file index */ 15 123 3 lineno fixed bin, /* input file line number */ 15 124 3 lineno0 fixed bin, /* call_box0 line number */ 15 125 2 linespace fixed bin (31), /* linespace value for the line */ 15 126 2 lmarg fixed bin (31), /* adjusted left margin position */ 15 127 2 mod_len fixed bin, /* length of modified text */ 15 128 2 mod_start fixed bin, /* index for start of modified text */ 15 129 2 net fixed bin (31), /* net line width for filling */ 15 130 2 ptr ptr, /* pointer to the actual text */ 15 131 2 rmarg fixed bin (31), /* adjusted right margin position */ 15 132 2 spcl_iocbp ptr, /* iocb ptr for spcl line */ 15 133 2 sym_delim char (1) unal, /* symbol delimiter for this line */ 15 134 2 tblcol fixed bin, /* column for table entries */ 15 135 2 title_delim 15 136 char (1) unal, /* title delimiter if a <title> */ 15 137 2 title_index 15 138 fixed bin, /* <title> block index for line */ 15 139 2 width fixed bin (31), /* width of text */ 15 140 2 ftn, /* footnote info for line */ 15 141 3 ct fixed bin, /* number of footnote refs */ 15 142 3 used fixed bin (31), /* space used */ 15 143 3 e (40), /* limit is arbitrary */ 15 144 4 blkndx fixed bin unal, /* block index of footnote - if this 15 145* value is 0, then .frf was used */ 15 146 4 refno fixed bin unal; /* reference number */ 15 147 15 148 dcl ( 15 149 quadi init ("40"b3), /* set to the inside margin */ 15 150 quado init ("20"b3), /* set to the outside margin */ 15 151 quadl init ("10"b3), /* set left */ 15 152 quadc init ("04"b3), /* set centered */ 15 153 quadr init ("02"b3), /* set right */ 15 154 just init ("01"b3) /* justified */ 15 155 ) bit (6) static options (constant); 15 156 /* control line structure */ 15 157 dcl 1 ctl aligned like text_entry based (const.ctl_ptr); 15 158 dcl ctl_line char (1020) var based (ctl.ptr); 15 159 15 160 dcl txtlinptr ptr; /* the current text line */ 15 161 dcl 1 txtlin aligned like text_entry based (txtlinptr); 15 162 /* empty text header structure */ 15 163 dcl 1 text_header aligned based (const.text_header_ptr), 15 164 2 sws, /* control switches */ 15 165 3 art bit (1) unal, /* block has artwork */ 15 166 3 dfrftn bit (1) unal, /* block is a deferred footnote */ 15 167 3 modified bit (1) unal, /* block contains modified lines */ 15 168 3 no_trim bit (1) unal, /* 1 = dont trim WS block */ 15 169 3 oflo_ftn bit (1) unal, /* overflow footnote */ 15 170 3 tblblk bit (1) unal, /* a table block */ 15 171 3 unref bit (1) unal, /* block is an unreffed footnote */ 15 172 3 white bit (1) unal, /* block is a white space block */ 15 173 3 picture bit (1) unal, /* picture block */ 15 174 3 orphan bit (1) unal, /* 1= footnote is an orphan */ 15 175 3 MBZ bit (26) unal, 15 176 2 art_count fixed bin unal, /* to count input art lines */ 15 177 2 blkptr ptr, /* pointer to suspended block */ 15 178 2 cap_size fixed bin unal, /* line count of text caption */ 15 179 2 cap_used fixed bin (31), /* size of text caption */ 15 180 2 colno fixed bin unal, /* column owning the block */ 15 181 2 count fixed bin unal, /* line count for block */ 15 182 2 eqn_line_count 15 183 fixed bin unal, /* counter for equation lines */ 15 184 2 first_text fixed bin unal, /* OBSOLETE */ 15 185 2 ftn, /* footnotes */ 15 186 3 ct fixed bin, /* count */ 15 187 3 usd fixed bin (31), /* space used */ 15 188 3 blkndx (40) fixed bin, /* footnote block index values */ 15 189 2 head_size fixed bin, /* line count of text header */ 15 190 2 head_used fixed bin (31), /* size of text header */ 15 191 2 index fixed bin unal, /* block index of next output line */ 15 192 2 keep_count fixed bin unal, /* to count input keep lines */ 15 193 2 last_line fixed bin, /* last text line in column */ 15 194 2 mx_ttl_ndx fixed bin, /* max title index value in block */ 15 195 2 name char (32) var, /* block name, if any */ 15 196 2 nofill_count /* to count nofill lines */ 15 197 fixed bin, 15 198 2 parms_ptr ptr, /* parms for suspended block */ 15 199 2 refer fixed bin, /* inter-block reference */ 15 200 2 refer_index /* OBSOLETE */ 15 201 fixed bin, /* a reference */ 15 202 2 split fixed bin, /* split point for balancing */ 15 203 2 trl_ws fixed bin (31), /* trailing WS */ 15 204 2 used fixed bin (31); /* page space used by a column/block */ 15 205 /* text formatting parameters */ 15 206 dcl 1 text_parms aligned like default_parms 15 207 based (const.text_parms_ptr); 15 208 15 209 dcl 1 current_parms 15 210 aligned like default_parms 15 211 based (const.current_parms_ptr); 15 212 15 213 dcl 1 default_parms 15 214 aligned based (const.default_parms_ptr), 15 215 2 sws, /* control switches */ 15 216 3 quad bit (6) unal, /* text alignment mode */ 15 217 3 art bit (1) unal, /* 1 = block countains artwork */ 15 218 3 cbar, /* change bar flags */ 15 219 4 add bit (1) unal, /* text addition flag */ 15 220 4 del bit (1) unal, /* text deletion flag for next line */ 15 221 4 mod bit (1) unal, /* text modification flag */ 15 222 3 fill_mode 15 223 bit (1) unal, /* 1 = fill mode ON */ 15 224 3 footnote bit (1) unal, /* block is a footnote */ 15 225 3 hfc bit (1) unal, /* OBSOLETE */ 15 226 3 htab_mode 15 227 bit (1) unal, /* 1 = horizontal tab mode ON */ 15 228 3 keep bit (1) unal, /* keep mode */ 15 229 3 page bit (1) unal, /* block belongs to page, not text */ 15 230 3 title_mode 15 231 bit (1) unal, /* 0 = plain text, 1 = <title>s OK */ 15 232 3 MBZ bit (19) unal, 15 233 2 ftrptr ptr, /* text caption block */ 15 234 2 cbar_level /* change level for cbars */ 15 235 char (1) aligned, 15 236 2 hdrptr ptr, /* text header block */ 15 237 2 left, /* left margin data */ 15 238 3 indent fixed bin (31), 15 239 3 undent fixed bin (31), 15 240 2 linespace fixed bin (31), /* line spacing value */ 15 241 2 measure fixed bin (31), /* line space for text */ 15 242 /* right margin data */ 15 243 2 right like default_parms.left, 15 244 2 fntstk, /* stack of last 20 font changes */ 15 245 3 index fixed bin, /* which one in use */ 15 246 /* entry(0) is the default */ 15 247 3 entry (0:19) like fntstk_entry; 15 248 15 249 dcl hfcblk_ptr ptr; 15 250 dcl 1 hfcblk aligned like text based (hfcblk_ptr); 15 251 15 252 /* END INCLUDE FILE comp_text.incl.pl1 */ 1 18 16 1 /* BEGIN INCLUDE FILE compstat.incl.pl1 - external static data for compose 16 2* 16 3* This storage is converted from external (as declared) to internal by the 16 4* binder and contains items that must be accessible to both the bound and 16 5* unbound program. */ 16 6 16 7 /* Written: ??/??/7? - EJW 16 8* Modified: 10/18/84 - EJW - (First recorded change) Added current_parms_ptr 16 9* and removed the codes array; version 6. 16 10**/ 16 11 16 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 16 13 16 14 dcl 1 compstat$compconst 16 15 aligned like const ext static; 16 16 16 17 dcl const_version fixed bin (35) static options (constant) init (6); 16 18 dcl MAX_TREE_AREA_CT /* entries in a tree area */ 16 19 fixed bin static options (constant) init (80); 16 20 dcl MAX_TREE_AREAS /* number of tree areas */ 16 21 fixed bin static options (constant) init (20); 16 22 16 23 dcl 1 const aligned based (compstat$compconst.ptr), 16 24 2 ptr ptr, /* self pointer - MUST BE FIRST */ 16 25 2 version fixed bin (35), /* structure version */ 16 26 2 art_symbols /* string of art symbols */ 16 27 char (28) aligned, 16 28 2 builtin_count /* count of builtin variables */ 16 29 fixed bin, 16 30 2 comp_dir char (200), /* dir in which compose lives */ 16 31 2 comp_version 16 32 char (8) var, /* compose version id */ 16 33 2 date_value char (8) var, /* current date */ 16 34 2 dsm_name char (32), /* device support module name */ 16 35 2 dvt_name char (32), /* device table name */ 16 36 2 max_seg_chars 16 37 fixed bin (35), /* char count in a max seg */ 16 38 2 null_str char (1) var, /* an empty string */ 16 39 2 ptrs, 16 40 ( 3 call_stk_ptr, /* -> insert call stack */ 16 41 3 colhdrptr, /* empty column header structure */ 16 42 3 ctl_ptr, /* input line structure */ 16 43 3 current_parms_ptr, /* current formatting parms */ 16 44 3 default_parms_ptr, /* default initial text parms */ 16 45 3 devptr, /* -> comp_dvt structure */ 16 46 3 dvidptr, /* -> comp_dvid structure */ 16 47 3 errblk_ptr, /* error message block pointer */ 16 48 3 footnote_parms_ptr, /* footnote formatting parms */ 16 49 3 fnttbldata_ptr, /* -> font table data */ 16 50 3 global_area_ptr, /* per invocation storage */ 16 51 3 init_page_parms_ptr, /* default initial page parms */ 16 52 3 insert_data_ptr, /* insert file data block */ 16 53 3 local_area_ptr, /* per file storage */ 16 54 3 loctbl_ptr, /* for font copying */ 16 55 3 option_ptr, /* program options block */ 16 56 3 outproc_ptr, /* device writer for cleanup */ 16 57 3 page_ptr, /* active page structure */ 16 58 3 page_header_ptr, /* empty page header structure */ 16 59 3 page_parms_ptr, /* page formatting parameter block */ 16 60 3 save_shared_ptr, /* saved shared data */ 16 61 3 shared_ptr, /* shared data structure */ 16 62 3 text_entry_ptr, /* empty text entry structure */ 16 63 3 text_header_ptr, /* empty text header structure */ 16 64 3 text_parms_ptr, /* main body formatting parms */ 16 65 3 tree_ptr /* symbol tree structure */ 16 66 ) ptr, 16 67 2 time_value char (6) var; /* time at start */ 16 68 16 69 /* Other external */ 16 70 dcl ( 16 71 ioa_, 16 72 ioa_$nnl 16 73 ) entry options (variable); 16 74 dcl iox_$error_output 16 75 ptr ext static, /* iocb pointer for error_output */ 16 76 iox_$user_input 16 77 ptr ext static, /* iocb pointer for user_input */ 16 78 iox_$user_output 16 79 ptr ext static; /* iocb pointer for user_output */ 16 80 dcl sys_info$max_seg_size 16 81 fixed bin (18) ext static; 16 82 16 83 /* END INCLUDE FILE compstat.incl.pl1 */ 1 19 1 20 1 21 /* END INCLUDE FILE ..... comp_outproc.incl.pl1 ..... */ 1605 1606 1607 end ascii_writer_; 1608 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/23/85 1123.2 ascii_writer_.pl1 >special_ldd>online>compose-04/17/85>ascii_writer_.pl1 1605 1 03/01/85 1412.0 comp_outproc.incl.pl1 >ldd>include>comp_outproc.incl.pl1 1-5 2 07/22/81 2045.0 translator_temp_alloc.incl.pl1 >ldd>include>translator_temp_alloc.incl.pl1 1-6 3 10/25/82 1241.3 comp_areas.incl.pl1 >ldd>include>comp_areas.incl.pl1 1-7 4 04/23/85 0912.3 comp_metacodes.incl.pl1 >special_ldd>online>compose-04/17/85>comp_metacodes.incl.pl1 1-8 5 03/01/85 1411.8 comp_DCdata.incl.pl1 >ldd>include>comp_DCdata.incl.pl1 1-9 6 03/01/85 1411.9 comp_dvid.incl.pl1 >ldd>include>comp_dvid.incl.pl1 1-10 7 03/01/85 1411.9 comp_dvt.incl.pl1 >ldd>include>comp_dvt.incl.pl1 1-11 8 03/01/85 1411.9 comp_entries.incl.pl1 >ldd>include>comp_entries.incl.pl1 1-12 9 03/01/85 1412.0 comp_fntstk.incl.pl1 >ldd>include>comp_fntstk.incl.pl1 1-13 10 04/23/85 0912.3 comp_font.incl.pl1 >special_ldd>online>compose-04/17/85>comp_font.incl.pl1 1-14 11 03/01/85 1412.0 comp_option.incl.pl1 >ldd>include>comp_option.incl.pl1 1-15 12 03/01/85 1412.0 comp_output.incl.pl1 >ldd>include>comp_output.incl.pl1 1-16 13 04/23/85 0912.4 comp_page.incl.pl1 >special_ldd>online>compose-04/17/85>comp_page.incl.pl1 1-17 14 03/01/85 1412.0 comp_shared.incl.pl1 >ldd>include>comp_shared.incl.pl1 1-18 15 04/23/85 0912.6 comp_text.incl.pl1 >special_ldd>online>compose-04/17/85>comp_text.incl.pl1 1-19 16 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. ANwords parameter fixed bin(17,0) dcl 2-23 ref 2-21 2-40 2-40 BSCR constant char(2) initial unaligned dcl 209 ref 1245 BSP 015401 constant char(1) initial unaligned dcl 4-6 ref 1038 1275 1278 1335 CR constant char(1) initial unaligned dcl 4-6 ref 1286 DC1 015377 constant char(1) initial unaligned dcl 4-6 ref 463 1119 1179 DCxx_p 053702 automatic pointer dcl 5-8 set ref 551* 554 557 557 557 557 557 557 569 585 592 607 613 618 619 623 626 626 631 639 639 642 642 646 650 650 653 653 660 660 663 663 668 687 711 721 1182* 1183 DEVIT constant char(1) initial unaligned dcl 4-6 ref 865 867 1497 EM constant char(1) initial unaligned dcl 4-6 ref 1484 1497 EM_width 000505 automatic fixed bin(31,0) dcl 85 set ref 1484* EN constant char(1) initial unaligned dcl 4-6 ref 1157 1486 1497 EN_width 000506 automatic fixed bin(31,0) dcl 86 set ref 1116 1192 1486* HT constant char(1) initial unaligned dcl 4-6 ref 1289 HUGE constant char(1) initial unaligned dcl 4-6 ref 1497 Lfree 2 based fixed bin(35,0) level 2 dcl 2-32 set ref 2-41 2-45 2-49* 2-49 Lmarg 000525 automatic fixed bin(31,0) dcl 106 set ref 367* 418* 432* 432 440 440 452 588 1134 1134 1437 MAX_STR constant fixed bin(17,0) initial dcl 213 ref 1391 MEDIUM constant char(1) initial unaligned dcl 4-6 ref 1497 NL 015400 constant char(1) initial unaligned dcl 4-6 ref 780 1352 Nwords 057040 automatic fixed bin(17,0) dcl 2-26 set ref 2-40* 2-41 2-45 2-48 2-49 Ofree 1 based fixed bin(35,0) level 2 dcl 2-32 set ref 2-47 2-48* 2-48 P 057042 automatic pointer dcl 2-26 set ref 2-42* 2-43 2-44 2-47* 2-50 PENDOWN constant char(1) initial unaligned dcl 215 ref 1028 PENUP constant char(1) initial unaligned dcl 216 ref 1025 PLOT_OP parameter bit(1) unaligned dcl 968 set ref 960 996* 1003 1030 Parea parameter pointer dcl 2-23 set ref 2-21 2-41 2-42* 2-44* 2-45 2-47 2-47 2-48 2-48 2-49 2-49 SHIFT_OP 000070 constant bit(1) initial unaligned dcl 121 set ref 449* 516* 572* 701* 759* 1433* SP_DC1 constant char(2) initial unaligned dcl 1103 ref 1161 STROKE constant char(1) initial unaligned dcl 4-6 ref 1129 1129 1143 1145 1148 1149 1497 THICK constant char(1) initial unaligned dcl 4-6 ref 1497 THIN constant char(1) initial unaligned dcl 4-6 ref 850 853 1488 1497 THIN_width 001217 automatic fixed bin(31,0) dcl 137 set ref 1488* VECTOR_OP 000065 constant bit(1) initial unaligned dcl 154 set ref 716* 1436* Xctl 0(13) based bit(2) level 3 packed unaligned dcl 5-11 ref 639 642 646 Xmov 003226 automatic fixed bin(31,0) dcl 165 set ref 674* 677 Xmpts 003233 automatic fixed bin(31,0) dcl 170 set ref 639* 642* 644* 674 674 688* 688* 697 705 712* 712* Xmptstrk 003227 automatic fixed bin(31,0) dcl 166 set ref 418 420 422 440 440 506 506 506 506 528 528 528 528 557 557 674 688 688 705 743 743 996 996 996 996 996 996 1071 1071 1111 1113 1134 1134 1134 1134 1196 1400 1400 1400 1400 1400 1400 1427 1427 1483* 1494* Xpixel 003230 automatic fixed bin(31,0) dcl 167 set ref 323* 1116 1192 Xpos 003231 automatic fixed bin(31,0) dcl 168 set ref 321* 452 506 506 516 528 528 557 557 572 588 701 716 743 743 944* 985 991 993 996 996 1022 1071 1071 1342* 1342* 1400 1400 1400 1400 1409 1409* 1422 1433 1436 Xspc 003232 automatic fixed bin(31,0) dcl 169 set ref 340* 429* 430* 430 432 452* 504* 504 506 506 516 516 518* 528 528 557 557 572 572 574* 588 677* 677 688 688 697 701 701 703* 705* 716 717* 1422 1432* 1432 1433 1434* Y_offs 057016 automatic fixed bin(31,0) dcl 1418 set ref 1421* 1433 Yctl 0(16) based bit(2) level 3 packed unaligned dcl 5-11 ref 650 653 660 663 Yinit 003234 automatic fixed bin(31,0) dcl 171 set ref 321* 404 Ymov 003235 automatic fixed bin(31,0) dcl 172 set ref 679* 682 Ympts 003241 automatic fixed bin(31,0) dcl 176 set ref 650* 653* 655* 660* 663* 665* 679 679 688* 688* 706 712* 712* Ypixel 003236 automatic fixed bin(31,0) dcl 173 set ref 324* 404 576 679 706 743 743 759 774 996 996 996 996 996 996 1071 1071 Ypos 003237 automatic fixed bin(31,0) dcl 174 set ref 321* 404 449 516 572* 701 716 743 743 759 774 777 943 943* 985 992 994 996 996 1071 1071 1370* 1433 1436* Yspc 003240 automatic fixed bin(31,0) dcl 175 set ref 340* 404* 405* 405 449 449 451* 516 516 518* 576* 576 682* 682 688* 688* 701 701 703* 706* 716 717* 1434* abrt_sw 000241 internal static bit(1) initial dcl 1570 set ref 484 1571* 1572* 1600* addr builtin function dcl 178 ref 244 292 313 313 325 327 349 398 551 579 835 941 1106 1123 1182 1233 area based structure level 1 unaligned dcl 2-32 arg based char unaligned dcl 1583 ref 1597 argl 053675 automatic fixed bin(17,0) dcl 1584 set ref 1590* 1597 argp 053676 automatic pointer dcl 1585 set ref 1590* 1597 auto_lead 000100 automatic fixed bin(31,0) dcl 75 set ref 321* 405 bad_chrs 000010 internal static varying char(128) dcl 78 set ref 274* 474 477* 477 bead 003256 automatic structure array level 1 dcl 200 set ref 327 1310 1312* 1312 1313* beadct 043256 automatic fixed bin(17,0) dcl 203 set ref 1249* 1258* 1258 1259 1261 1293* 1293* 1293 1298 1302 1318* 1318 1328 beadp 043260 automatic pointer dcl 208 set ref 327* 1293 1318 beads based structure array level 1 dcl 205 bin builtin function dcl 178 ref 769 777 blatstr 000100 automatic varying char(1020) dcl 897 set ref 915* 916* 916 916 bug_mode 4113 based bit(1) level 3 packed unaligned dcl 14-7 ref 283 369 805 cbar 16(07) based bit(1) array level 4 packed unaligned dcl 13-56 ref 595 734 ch 043272 automatic char(1) unaligned dcl 830 set ref 848* 850 865 char 1 003256 automatic char(1) array level 2 in structure "bead" dcl 200 in procedure "ascii_writer_" set ref 1259* 1305 1305 1338 char 1 based char(1) array level 2 in structure "beads" dcl 205 in procedure "ascii_writer_" set ref 1293* 1318* char_ndx 000101 automatic fixed bin(17,0) dcl 79 set ref 467* 469 490 492 503 525 chng 000100 automatic bit(1) unaligned dcl 1452 in procedure "set_font" set ref 1454* 1456 1491 chng 057026 automatic bit(1) unaligned dcl 1517 in procedure "set_media" set ref 1524* 1526 1539 cleanup 003242 stack reference condition dcl 181 ref 319 336 code 057044 automatic fixed bin(35,0) dcl 2-26 in procedure "allocate" set ref 2-42* code parameter fixed bin(35,0) dcl 71 in procedure "ascii_writer_" set ref 60 227* 258* col_width 000102 automatic fixed bin(31,0) dcl 80 set ref 367* 420* 429 1111 1111* 1127 com_err_ 000256 constant entry external dcl 1581 ref 335 1593 comp_abort 000000 stack reference condition dcl 181 ref 1017 comp_dvid based structure level 1 dcl 6-17 comp_dvid_version 000054 constant fixed bin(17,0) initial dcl 6-14 set ref 253 269* comp_dvt based structure level 1 dcl 7-19 comp_error_table_$program_error 000246 external static fixed bin(35,0) dcl 190 set ref 478* 1013* comp_report_ 000264 constant entry external dcl 8-59 ref 313 comp_report_$ctlstr 000266 constant entry external dcl 8-61 ref 478 1013 comp_report_$exact 000270 constant entry external dcl 8-64 ref 1047 1051 comp_util_$display 000272 constant entry external dcl 8-77 ref 506 528 528 557 614 632 688 712 746 807 915 1208 1342 1355 1399 1539 compstat$compconst 000274 external static structure level 1 dcl 16-14 const based structure level 1 dcl 16-23 copy builtin function dcl 223 ref 780 1036 1038 1058 1157 1192 1332 copystr 053744 automatic varying char(2048) dcl 974 set ref 1036* 1038* 1039 count 1 based fixed bin(17,0) level 2 dcl 13-56 set ref 304* 310 363 759 759 ct based fixed bin(17,0) level 2 in structure "siztbl" dcl 10-38 in procedure "ascii_writer_" ref 1479 ct 043273 automatic fixed bin(17,0) dcl 831 in procedure "ascii_writer_" set ref 846* 853* 854 854* 856* 856 858 858* 867* 868 868* 870* 870 872 872* 886 ctl based structure level 1 dcl 15-157 in procedure "ascii_writer_" ctl 0(09) based structure level 2 in structure "dcxx" packed unaligned dcl 5-11 in procedure "ascii_writer_" ctl_ptr 132 based pointer level 3 dcl 16-23 ref 313 313 cu_$arg_ptr 000260 constant entry external dcl 1582 ref 1590 d 043262 automatic fixed bin(17,0) dcl 210 set ref 1298* 1299* 1299 1302 1303 1305 1305 1312 1313 1318* 1323 datum parameter fixed bin(31,0) dcl 954 ref 952 957 db_line 000243 internal static fixed bin(17,0) initial dcl 1579 set ref 369 1589* 1597* 1597 db_sw 000235 internal static bit(1) initial dcl 1553 set ref 259 283 369 805 1555* 1556* 1578* 1600* dcfs based structure level 1 packed unaligned dcl 5-80 dclong1_len constant fixed bin(17,0) initial dcl 5-62 ref 1121 dclong_val based structure level 1 packed unaligned dcl 5-54 dcshort_val based structure level 1 packed unaligned dcl 5-67 dcxx based structure level 1 packed unaligned dcl 5-11 debug_str 000103 automatic varying char(1020) dcl 81 set ref 613* 614* 631* 632* 687* 688* 711* 712* 1399* 1400* 1400 1400 debug_sw 000503 automatic bit(1) unaligned dcl 82 set ref 282* 283* 284 285 286 287 304 358 365* 373* 401 790 default_parms based structure level 1 dcl 15-213 depth 17 based fixed bin(31,0) array level 3 dcl 13-56 set ref 404 899* 899* detail_sw 000504 automatic bit(1) unaligned dcl 83 set ref 282* 284* 365* 374* 376* 440 740 755 934 996 1071 1167 1219 1355 1396 1427 1439 1459 1491 1526 1539 dev_stat_ptr 000052 internal static pointer initial dcl 84 set ref 244* 835 835* devfnt 0(18) based fixed bin(17,0) level 2 in structure "tstr" packed unaligned dcl 139 in procedure "ascii_writer_" set ref 353* 519 1385 1522 1526* 1547* devfnt 66 based fixed bin(17,0) array level 2 in structure "fnttbl" dcl 10-14 in procedure "ascii_writer_" ref 490 1475 device 204 based varying char(32) level 2 dcl 11-5 set ref 304* devptr 140 based pointer level 3 dcl 16-23 ref 300 302 323 324 435 769 769 divide builtin function dcl 178 ref 300 302 404 418 420 422 430 576 674 679 705 706 759 774 777 777 957 1111 1113 1129 1129 1143 1145 1289 1299 1483 1484 1486 1488 dlen parameter fixed bin(24,0) dcl 825 set ref 819 886* dstr 043274 automatic varying char(1020) dcl 832 set ref 858* 860* 862 872* 874* 876 dt_sw 000242 internal static bit(1) initial dcl 1574 set ref 284 374 1575* 1576* 1578* 1600* dtext parameter varying char dcl 824 ref 819 848 853 854 867 868 dvidptr 142 based pointer level 3 dcl 16-23 ref 253 268 endpage 120(26) based bit(9) level 3 packed unaligned dcl 7-19 ref 769 769 entry 6 based structure level 2 dcl 10-14 ercd 053700 automatic fixed bin(35,0) dcl 1586 set ref 329* 332 335* 1590* 1591 1593 1593* error_table_$noarg 000262 external static fixed bin(35,0) dcl 1587 ref 1593 error_table_$unimplemented_version 000244 external static fixed bin(35,0) dcl 186 ref 258 f 0(27) based fixed bin(9,0) level 2 packed unsigned unaligned dcl 5-80 ref 618 fcdevfnt 000507 automatic fixed bin(17,0) dcl 87 set ref 490* 506* 519* 528* fcwidth 000510 automatic fixed bin(31,0) dcl 88 set ref 503* 504 506* 506 506 525* 526 528* 528 528 fileheader_ptr 053710 automatic pointer initial dcl 12-21 set ref 12-21* fileno 21 based fixed bin(17,0) array level 4 dcl 13-56 set ref 899* first_line 000054 internal static bit(1) unaligned dcl 89 set ref 347* 1225 first_page 000055 internal static bit(1) initial dcl 90 set ref 276* fntstk_entry based structure level 1 dcl 9-6 fnttbl based structure level 1 dcl 10-14 fnttbl_ptr 053704 automatic pointer initial dcl 10-13 set ref 469 478 490 492 503 525 10-13* 1129 1129 1143 1145 1148 1149 1473* 1475 1479 1479 1483 1484 1484 1486 1486 1488 1488 1497 1497 1497 1497 1497 1497 1497 1497 fnttbldata based structure level 1 dcl 10-7 fnttbldata_ptr 150 based pointer level 3 dcl 16-23 ref 899 899 899 1464 1473 1494 1539 font 1(18) based fixed bin(17,0) level 2 packed unaligned dcl 139 set ref 1548* font_in 000511 automatic fixed bin(17,0) dcl 91 set ref 321* 415 454 519* 671 697 1108 1385* 1454 1462 1464* 1464 1470* 1473 1474 1536 font_media 001130 automatic fixed bin(17,0) array dcl 111 set ref 321* 1536* font_size 000512 automatic fixed bin(31,0) dcl 92 set ref 321* 454 697 1454 1464* 1464* 1479* 1481* 1483 1484 1486 1488 1494* 1494* 1523 1526* 1526* fonts_done 000513 automatic bit(36) unaligned dcl 93 set ref 366* fonts_needed 000514 automatic bit(36) unaligned dcl 94 set ref 366* 1474* footref parameter varying char array dcl 800 set ref 795 803* 804* 807 807 807 func parameter fixed bin(17,0) dcl 65 ref 60 229 237 248 289 galley_opt 1(09) based bit(1) level 2 packed unaligned dcl 11-5 ref 766 gaps 20 based fixed bin(17,0) array level 3 in structure "page_image" dcl 13-56 in procedure "ascii_writer_" set ref 435 899* 1098 1126 gaps 000102 automatic fixed bin(17,0) dcl 1094 in procedure "pad_block" set ref 1126* 1129 1132 1134* 1143 1145 1147 1160 1170* halt4 0(05) based bit(1) level 3 packed unaligned dcl 12-64 set ref 577* hdr 15 based structure level 2 dcl 13-11 i 000515 automatic fixed bin(17,0) dcl 98 set ref 1268* 1269 1269* 1271 1272 1278* 1279 1279* 1282 1283 1302* 1303 1303 1305 1305 1305 1305 1310 1312 1312 1313* ichr 000520 automatic fixed bin(17,0) dcl 100 set ref 459* 461 551 557 613 626 626 631 687 711 721* 721* 1156* 1157 1157 1161 1161 1176 1177* 1177 1179 1182 1185 1186* 1186 1190* 1190 1201 1204 icol 043263 automatic fixed bin(17,0) dcl 211 set ref 1249* 1261 1262* 1262 1271* 1271 1282* 1282 1286* 1289* 1289 igap 000100 automatic fixed bin(17,0) dcl 1089 set ref 1145* 1147* 1147* 1148 1148* ilin 000056 internal static fixed bin(17,0) dcl 101 set ref 363* 369 385 398 399 404 405 408 409 418 418 420 420 422 422 435 454 454 454 454 595 595 734 734* 899* 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 1098 1111 1113 1126 1134 1134 image_ptr 40 based pointer level 2 dcl 13-11 ref 292 304 310 325 363 385 398 399 404 408 409 418 418 420 420 422 422 435 454 454 454 454 595 595 734 734 759 759 759 759 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 1098 1111 1113 1126 1134 1134 in_use based bit(1) level 3 packed unaligned dcl 12-64 set ref 582* 1368* incr parameter fixed bin(31,0) dcl 932 ref 927 934 938 943 index builtin function dcl 178 ref 474 info 21 based structure array level 3 in structure "page_image" dcl 13-56 in procedure "ascii_writer_" set ref 398 info 277 based structure level 3 in structure "hfcblk" dcl 15-250 in procedure "ascii_writer_" info 161 based structure level 2 in structure "txtlin" dcl 15-161 in procedure "ascii_writer_" info 161 based structure level 2 in structure "ctl" dcl 15-157 in procedure "ascii_writer_" set ref 313 313 info 161 based structure level 2 in structure "text_entry" dcl 15-68 in procedure "ascii_writer_" info 277 based structure level 3 in structure "text" dcl 15-49 in procedure "ascii_writer_" ioa_ 000276 constant entry external dcl 16-70 ref 262 263 264 265 266 267 268 269 304 358 440 506 528 557 614 632 688 712 743 746 755 790 807 916 934 996 1071 1153 1208 1219 1293 1318 1342 1355 1400 1427 1439 1494 1497 1539 ioa_$nnl 000300 constant entry external dcl 16-70 ref 899 1134 1170 1462 1464 1526 ioa_$rsnnl 000250 constant entry external dcl 194 ref 858 872 j 000516 automatic fixed bin(17,0) dcl 98 set ref 1160* 1192 1196* 1251* 1253 1268 1269 1272* 1272 1278 1279 1283* 1283* 1328* 1330 1338 1339* jl_ptr 000104 automatic pointer dcl 1095 set ref 1106* just constant bit(6) initial unaligned dcl 15-148 ref 435 899 just_line 000106 automatic varying char(1020) dcl 1096 set ref 1105* 1106 1157* 1157 1176* 1176 1185* 1185 1192* 1192 1197* 1197 1204* 1204 1205 1206 1208* justifying 120(01) based bit(1) level 3 packed unaligned dcl 7-19 ref 435 k 000517 automatic fixed bin(17,0) dcl 98 set ref 1161* 1164 1176 1177 1183* 1185 1186 1201* 1204 last_cr 1 based fixed bin(17,0) level 2 packed unaligned dcl 139 set ref 580* 1349* 1362* 1388 1400 lead 24 based fixed bin(31,0) array level 3 dcl 13-56 set ref 759 899* 899* left 1016 based structure level 3 in structure "text" dcl 15-49 in procedure "ascii_writer_" left 1016 based structure level 3 in structure "hfcblk" dcl 15-250 in procedure "ascii_writer_" left 12 based structure level 2 in structure "default_parms" dcl 15-213 in procedure "ascii_writer_" left 12 based structure level 2 in structure "current_parms" dcl 15-209 in procedure "ascii_writer_" left 12 based structure level 2 in structure "text_parms" dcl 15-206 in procedure "ascii_writer_" len based fixed bin(35,0) level 2 dcl 10-30 ref 528 leng 1 based fixed bin(24,0) level 2 in structure "page_record" dcl 12-64 in procedure "ascii_writer_" set ref 293 346 578 579 580* 769 769 779* 779 780 780 788 1349 1355* 1355 1363* 1363 1364 1364 1368 leng 0(18) based fixed bin(9,0) level 2 in structure "dcxx" packed unsigned unaligned dcl 5-11 in procedure "ascii_writer_" ref 557 613 626 626 631 687 711 721 1183 leng 0(18) 000507 automatic fixed bin(9,0) level 2 in structure "pad_ctl" packed unsigned unaligned dcl 1100 in procedure "pad_block" set ref 1121* length builtin function dcl 178 in procedure "ascii_writer_" ref 387 528 743 743 746 746 854 868 916 916 1065 1206 1251 1269 1279 1342 1342 1355 1355 1355 1363 1364 1364 1388 1389 1400 1400 1400 1400 1400 1400 length 2 based fixed bin(31,0) level 3 in structure "page" dcl 13-11 in procedure "ascii_writer_" ref 302 774 777 level 056772 automatic fixed bin(17,0) dcl 1216 set ref 1225* 1225* 1230* 1232* 1232* 1233 1355* 1361* 1361* level_skip 056773 automatic fixed bin(17,0) dcl 1217 set ref 1223* 1361 lfnt 25 based fixed bin(17,0) array level 3 dcl 13-56 set ref 408 454 454* 899* 899 899 899 lg_sw 000237 internal static bit(1) initial dcl 1562 set ref 285 377 1563* 1564* 1578* 1600* line 16 based structure array level 2 dcl 13-56 line_area_ptr 053716 automatic pointer initial dcl 15-25 set ref 15-25* line_window_size 000524 automatic fixed bin(17,0) dcl 104 set ref 300* 301 777 lineinfoptr 000522 automatic pointer dcl 103 set ref 398* 478* 1013* 1047* 1051* lineno 22 based fixed bin(17,0) array level 4 dcl 13-56 set ref 899* lmarg 26 based fixed bin(31,0) array level 3 dcl 13-56 set ref 418 418 899* 899* loc 003256 automatic fixed bin(17,0) array level 2 dcl 200 set ref 1261* 1303 1303 1305 1305 1330 1339 loctxt 000526 automatic varying char(1020) dcl 107 set ref 386* 389 461 478* 551 557 613 626 626 631 687 711 915 915 1013* 1156 1161 1176 1179 1182 1185 1204 1205* long_sw 001126 automatic bit(1) unaligned dcl 108 set ref 282* 285* 365* 377* 379* 557 610 628 684 708 1134 1153 1208 1293 1318 1342 1491 1497 lsize 27 based fixed bin(31,0) array level 3 dcl 13-56 set ref 409 454 454* mark 000507 automatic char(1) level 2 packed unaligned dcl 1100 set ref 1119* max builtin function dcl 178 ref 430 588 940 1127 1143 1145 1282 max_level 001127 automatic fixed bin(17,0) dcl 109 set ref 348* 940* 940 1219* 1232 max_revlead 000057 internal static fixed bin(31,0) dcl 110 set ref 278* med_chng 057027 automatic bit(1) unaligned dcl 1518 set ref 1522* 1524 1544 media_font parameter fixed bin(17,0) dcl 1512 ref 1507 1548 media_size 001174 automatic fixed bin(31,0) dcl 112 set ref 321* 1523 1526* 1526* 1535* medsel based char(12) array unaligned dcl 10-36 ref 1539 medsel_ptr 2 based pointer level 2 dcl 10-7 ref 1539 medselstr 001175 automatic varying char(32) dcl 113 set ref 1531* min_WS 30 based fixed bin(31,0) level 2 dcl 7-19 ref 323 min_lead 31 based fixed bin(31,0) level 2 dcl 7-19 ref 300 302 324 mod builtin function dcl 2-26 ref 2-40 mrgtxt 16(08) based bit(1) array level 4 packed unaligned dcl 13-56 ref 595 734 name 40 based varying char(65) level 3 dcl 10-14 set ref 478* 899* 1464* 1494* need_devfnt 001207 automatic fixed bin(17,0) dcl 115 set ref 321* 1385 1385* 1475* need_font 001206 automatic fixed bin(17,0) dcl 114 set ref 408* 415 415* 618* 620* 671* 697 697* 1108 1108* need_size 001210 automatic fixed bin(31,0) dcl 116 set ref 409* 415* 619* 620* 671* 697 697* 1108* net 30 based fixed bin(31,0) array level 3 dcl 13-56 ref 420 420 1111 new_devfnt parameter fixed bin(17,0) dcl 1513 set ref 1507 1522 1526* 1539 1547 new_font parameter fixed bin(17,0) dcl 1449 set ref 1444 1454 1470 1494* 1494 new_len 057006 automatic fixed bin(17,0) dcl 1381 set ref 1389* 1391 1400* new_size parameter fixed bin(31,0) dcl 1450 set ref 1444 1454 1479* 1481 new_xpos parameter fixed bin(31,0) dcl 969 ref 960 985 993 996 996 1022 new_ypos parameter fixed bin(31,0) dcl 970 ref 960 985 994 996 996 nextref based bit(36) level 2 dcl 12-64 set ref 578* 579 788* noerr parameter bit(1) unaligned dcl 826 ref 819 null builtin function dcl 178 in procedure "ascii_writer_" ref 345 350 471 835 10-13 12-21 12-45 12-62 15-25 15-35 947 1235 null builtin function dcl 2-26 in procedure "allocate" ref 2-43 2-43 2-45 null_font_char 003250 stack reference condition dcl 181 ref 484 ocol 043264 automatic fixed bin(17,0) dcl 214 set ref 1326* 1330 1339* old_len 057007 automatic fixed bin(17,0) dcl 1382 set ref 1388* 1389 1400* old_xpos 054745 automatic fixed bin(31,0) dcl 976 set ref 991* old_ypos 054746 automatic fixed bin(31,0) dcl 977 set ref 992* open based bit(1) level 2 in structure "tstr" packed unaligned dcl 139 in procedure "ascii_writer_" set ref 743 746 945* 1071 1242 1413* open based bit(1) array level 2 in structure "window" packed unaligned dcl 160 in procedure "ascii_writer_" set ref 1225 option based structure level 1 dcl 11-5 option_ptr 164 based pointer level 3 dcl 16-23 ref 253 264 304 766 777 option_version 000100 constant fixed bin(35,0) initial dcl 11-3 set ref 253 265* outproc_ptr 166 based pointer level 3 dcl 16-23 set ref 251* p 1 based fixed bin(31,0) level 2 packed unaligned dcl 5-80 ref 619 pad_ctl 000507 automatic structure level 1 packed unaligned dcl 1100 set ref 1123 pad_ctl_ptr 000512 automatic pointer dcl 1101 set ref 1123* 1197 pad_string based char(7) unaligned dcl 1102 ref 1197 padeach 000101 automatic fixed bin(17,0) dcl 1089 set ref 1143* 1147 pads 000506 automatic fixed bin(17,0) array dcl 1098 set ref 1129* 1132 1134* 1148* 1148 1153* 1192 1196 padsize 000506 automatic fixed bin(17,0) dcl 1099 set ref 1127* 1129 1132* 1132 1134* 1142 1143 1145 1147 1149* 1149 page based structure level 1 dcl 13-11 page_header based structure level 1 dcl 13-27 page_image based structure level 1 dcl 13-56 page_parms based structure level 1 dcl 13-86 page_ptr 170 based pointer level 3 dcl 16-23 ref 253 266 292 302 304 304 310 313 325 363 385 398 399 404 408 409 418 418 420 420 422 422 435 454 454 454 454 595 595 734 734 759 759 759 759 774 777 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 1013 1098 1111 1113 1126 1134 1134 page_record 11 based bit(36) level 2 in structure "record" dcl 12-46 in procedure "ascii_writer_" set ref 292 325 page_record based structure level 1 dcl 12-64 in procedure "ascii_writer_" set ref 293* 346* page_record_ptr 053714 automatic pointer initial dcl 12-62 set ref 292* 293 325* 346 577 578 579* 579 580 581 582 769 769 779 779 780 780 788 12-62* 1349 1355 1355 1363 1363 1364 1364 1368 1368 page_version 000054 constant fixed bin(17,0) initial dcl 13-9 set ref 253 267* pageno 26 based varying char(32) level 3 dcl 13-11 set ref 304* 313 1013* parms 1 based structure level 2 dcl 13-11 penctl 054747 automatic varying char(6) dcl 978 set ref 1025* 1028* pf_sw 000240 internal static bit(1) initial dcl 1566 set ref 287 1567* 1568* 1600* pltstr 054752 automatic varying char(4090) dcl 979 set ref 989* 1039* 1039 1058* 1058 1065 1065* pltwidth 056752 automatic fixed bin(31,0) dcl 980 set ref 988* 1040* 1040 1059* 1059 1065* pref_sw 001211 automatic bit(1) unaligned dcl 118 set ref 282* 287* 506 528 ptr 4 based pointer array level 2 in structure "fnttbldata" dcl 10-7 in procedure "ascii_writer_" ref 899 899 899 1464 1473 1494 ptr 000274 external static pointer level 2 in structure "compstat$compconst" dcl 16-14 in procedure "ascii_writer_" ref 251 253 253 253 253 262 264 266 268 283 292 300 302 302 304 304 304 310 313 313 313 323 324 325 363 369 385 398 399 404 408 409 418 418 420 420 422 422 435 435 454 454 454 454 595 595 734 734 759 759 759 759 766 769 769 774 777 777 805 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 899 1013 1098 1111 1113 1126 1134 1134 1464 1473 1494 1539 ptr builtin function dcl 2-26 in procedure "allocate" ref 2-47 ptr 32 based pointer array level 3 in structure "page_image" dcl 13-56 in procedure "ascii_writer_" ref 385 ptr parameter pointer dcl 801 in procedure "ascii_writer_" ref 795 ptrs 126 based structure level 2 dcl 16-23 quad 001212 automatic bit(6) unaligned dcl 119 in procedure "ascii_writer_" set ref 399* 426 426 430 435 899 899 899 899 899 899 899 quad 16 based bit(6) array level 4 in structure "page_image" packed unaligned dcl 13-56 in procedure "ascii_writer_" ref 399 quadc constant bit(6) initial unaligned dcl 15-148 ref 426 430 899 quadi constant bit(6) initial unaligned dcl 15-148 ref 899 quadl constant bit(6) initial unaligned dcl 15-148 ref 899 quado constant bit(6) initial unaligned dcl 15-148 ref 899 quadr constant bit(6) initial unaligned dcl 15-148 ref 426 899 rank builtin function dcl 223 ref 467 1129 1129 1143 1145 1148 1149 1255 1255 1484 1486 1488 1497 1497 1497 1497 1497 1497 1497 1497 record based structure level 1 dcl 12-46 record_ptr 053712 automatic pointer initial dcl 12-45 set ref 12-45* rel_units 3 based fixed bin(17,0) level 2 dcl 10-14 ref 1483 1484 1486 1488 repl_str based structure level 1 unaligned dcl 10-30 repl_str_ptr 053706 automatic pointer dcl 10-29 set ref 469* 471 524 528 528 528 replptr 1066 based pointer array level 2 dcl 10-14 ref 469 replstr based varying char(256) dcl 10-33 set ref 524 528* 528 rmarg 34 based fixed bin(31,0) array level 3 dcl 13-56 set ref 899* 899* 1134* 1134* rtn_str 043674 automatic varying char(16384) dcl 833 set ref 845* 862* 862 876* 876 889 runout 001213 automatic fixed bin(17,0) dcl 120 set ref 777* 779 780 780 780 scale parameter fixed bin(31,0) dcl 955 ref 952 957 scndx 043265 automatic fixed bin(21,0) dcl 217 set ref 1248* search builtin function dcl 223 ref 1161 1245 shared based structure level 1 dcl 14-7 shared_ptr 200 based pointer level 3 dcl 16-23 ref 253 262 283 369 805 shared_version 000064 constant fixed bin(35,0) initial dcl 14-5 set ref 253 263* size 1 based fixed bin(31,0) array level 2 in structure "siztbl" dcl 10-38 in procedure "ascii_writer_" ref 1479 size 62 based fixed bin(31,0) level 3 in structure "fnttbl" dcl 10-14 in procedure "ascii_writer_" set ref 899* 899* size builtin function dcl 178 in procedure "ascii_writer_" ref 342 size_chng 057030 automatic bit(1) unaligned dcl 1519 set ref 1523* 1524 siztbl based structure level 1 unaligned dcl 10-38 siztbl_ptr 4 based pointer level 2 dcl 10-14 ref 1479 1479 space 043266 automatic fixed bin(17,0) dcl 218 set ref 1330* 1332 1332 1335 stat_blk 000060 internal static fixed bin(35,0) initial array dcl 123 set ref 242* 243* 244 835 838 841* 842* stop_opt 1(33) based bit(1) level 2 packed unaligned dcl 11-5 ref 777 str_ptr 6 based pointer array level 2 in structure "window" dcl 160 in procedure "ascii_writer_" set ref 345* str_ptr 6 based pointer level 2 in structure "tstr" dcl 139 in procedure "ascii_writer_" set ref 350 350* 352 595 743 743 746 746 746 746 947 947* 1235 1238* 1239 1245 1251 1253 1268 1269 1278 1279 1327 1332 1332 1335 1335 1338 1338 1342 1342 1342 1348 1348 1352 1352 1355 1355 1355 1355 1363 1364 1364 1364 1388 1400 1408 1408 string parameter varying char(4090) dcl 1377 set ref 1374 1389 1399* 1400 1400 1400 1408 1411* substr builtin function dcl 178 set ref 389 461 551 557 613 626 626 631 687 711 769* 780* 848 915 915 1161 1176 1179 1182 1185 1204 1253 1268 1278 1364* 1474* swps 043267 automatic fixed bin(17,0) dcl 219 set ref 1301* 1314* 1314 1318* 1323 sws based structure level 2 in structure "page_record" dcl 12-64 in procedure "ascii_writer_" set ref 581* sws 16 based structure array level 3 in structure "page_image" dcl 13-56 in procedure "ascii_writer_" sws 4113 based structure level 2 in structure "shared" dcl 14-7 in procedure "ascii_writer_" sws 120 based structure level 2 in structure "comp_dvt" packed unaligned dcl 7-19 in procedure "ascii_writer_" tbead 043270 automatic bit(72) dcl 221 set ref 1310* 1313 tchr 001216 automatic char(1) unaligned dcl 136 set ref 461* 463 467 474 477 478* 478 478 506 528 1253* 1255 1255 1259 1265 1275 1286 1289 text 2 based char level 2 in structure "page_record" dcl 12-64 in procedure "ascii_writer_" set ref 769* 780* 1364* text based structure level 1 dcl 15-49 in procedure "ascii_writer_" text_area_ptr 053720 automatic pointer initial dcl 15-35 set ref 15-35* text_entry based structure level 1 dcl 15-68 text_header based structure level 1 dcl 15-163 text_ptr 14 based pointer level 2 dcl 13-56 ref 292 325 text_sw 001214 automatic bit(1) unaligned dcl 134 set ref 282* 286* 365* 380* 382* 506 528 text_width 001215 automatic fixed bin(31,0) dcl 135 set ref 367* 422* 429 1113 1113* 1127 1134 1134 translator_temp_$get_next_segment 000302 constant entry external dcl 2-37 ref 2-42 translator_temp_$get_segment 000252 constant entry external dcl 195 ref 329 translator_temp_$release_all_segments 000254 constant entry external dcl 197 ref 923 tstr based structure level 1 dcl 139 set ref 342 tstr_line based varying char(2048) dcl 150 set ref 352* 595 743 743 746 746 746 746 1239* 1245 1251 1253 1268 1269 1278 1279 1327* 1332* 1332 1335* 1335 1338* 1338 1342 1342 1342* 1348* 1348 1352* 1352 1355 1355 1355 1355* 1363 1364 1364 1364 1388 1400 1408* 1408 tstr_ptr 001220 automatic pointer dcl 138 set ref 342 349* 350 350 352 353 500 519 548 580 595 731 743 743 743 746 746 746 746 746 941* 943 944 945 947 947 1071 1071 1233* 1235 1238 1239 1242 1245 1251 1253 1268 1269 1278 1279 1327 1332 1332 1335 1335 1338 1338 1342 1342 1342 1348 1348 1349 1352 1352 1355 1355 1355 1355 1362 1363 1364 1364 1364 1370 1385 1388 1388 1400 1400 1408 1408 1409 1413 1522 1526 1547 1548 tx_sw 000236 internal static bit(1) initial dcl 1558 set ref 286 380 1559* 1560* 1600* txtlen 001222 automatic fixed bin(17,0) dcl 151 set ref 387* 389 389 394* 394 411 459 516 899* 899* 915 915 1161 1201 1206* txtstr based varying char(1020) dcl 15-45 ref 386 387 txtstrptr 053722 automatic pointer dcl 15-44 set ref 385* 386 387 type 0(09) 000507 automatic char(1) level 2 in structure "pad_ctl" packed unaligned dcl 1100 in procedure "pad_block" set ref 1120* type 0(09) based bit(3) level 3 in structure "dcxx" packed unaligned dcl 5-11 in procedure "ascii_writer_" ref 554 668 type 0(09) based char(1) level 2 in structure "dcfs" packed unaligned dcl 5-80 in procedure "ascii_writer_" ref 557 557 557 557 557 569 585 592 607 623 type_font constant char(1) initial unaligned dcl 5-90 ref 607 type_lit constant char(1) initial unaligned dcl 5-90 ref 623 type_slx constant char(1) initial unaligned dcl 5-90 ref 1120 type_unstart 015375 constant char(1) initial unaligned dcl 5-90 ref 557 557 585 type_unstop 015374 constant char(1) initial unaligned dcl 5-90 ref 557 557 592 type_wait 015376 constant char(1) initial unaligned dcl 5-90 ref 557 569 units 3066 based fixed bin(17,0) array level 2 dcl 10-14 set ref 503 525 1129 1129 1143 1145 1148 1149 1484 1486 1488 1497* 1497* 1497* 1497* 1497* 1497* 1497* 1497* unslen 057017 automatic fixed bin(31,0) dcl 1419 set ref 1422* 1424 1427 1427 1432 1436 unspec builtin function dcl 178 set ref 293* 344* 346* 478 478 581* 1310 1313* unstart 001223 automatic fixed bin(31,0) dcl 152 set ref 588* 1422 1437* unstring 000224 internal static bit(1) unaligned dcl 153 set ref 275* 589* 595 602* 734 v1 0(27) 000507 automatic fixed bin(31,0) level 2 in structure "pad_ctl" packed unaligned dcl 1100 in procedure "pad_block" set ref 1196* v1 0(27) based fixed bin(31,0) level 2 in structure "dclong_val" packed unaligned dcl 5-54 in procedure "ascii_writer_" ref 642 663 v1 0(27) based fixed bin(17,0) level 2 in structure "dcshort_val" packed unaligned dcl 5-67 in procedure "ascii_writer_" ref 639 660 v2 1(09) based fixed bin(17,0) level 2 in structure "dcshort_val" packed unaligned dcl 5-67 in procedure "ascii_writer_" ref 650 v2 1(23) based fixed bin(31,0) level 2 in structure "dclong_val" packed unaligned dcl 5-54 in procedure "ascii_writer_" ref 653 v2 1(23) 000507 automatic fixed bin(31,0) level 2 in structure "pad_ctl" packed unaligned dcl 1100 in procedure "pad_block" set ref 1122* version based fixed bin(35,0) level 2 in structure "option" dcl 11-5 in procedure "ascii_writer_" set ref 253 264* version based fixed bin(17,0) level 2 in structure "comp_dvid" dcl 6-17 in procedure "ascii_writer_" set ref 253 268* version based fixed bin(17,0) level 2 in structure "page" dcl 13-11 in procedure "ascii_writer_" set ref 253 266* version based fixed bin(35,0) level 2 in structure "shared" dcl 14-7 in procedure "ascii_writer_" set ref 253 262* white 0(01) based bit(1) level 2 in structure "tstr" packed unaligned dcl 139 in procedure "ascii_writer_" set ref 500* 548* 731* 1071* white 4066 based bit(1) array level 2 in structure "fnttbl" packed unaligned dcl 10-14 in procedure "ascii_writer_" ref 492 white 16(09) based bit(1) array level 4 in structure "page_image" packed unaligned dcl 13-56 in procedure "ascii_writer_" ref 759 width parameter fixed bin(31,0) dcl 1378 in procedure "put_str" set ref 1374 1400 1400 1400 1400 1409 1412* width 35 based fixed bin(31,0) array level 3 in structure "page_image" dcl 13-56 in procedure "ascii_writer_" set ref 422 422 899* 899* 1113 window based structure array level 1 dcl 160 set ref 344* 349 941 1233 window_area_ptr 000226 internal static pointer initial dcl 155 set ref 329* 342* 350* 923* 947* 1238* window_bottom 000230 internal static fixed bin(17,0) initial dcl 157 set ref 302* 304* 342 344 345 1009 window_level 001224 automatic fixed bin(17,0) dcl 158 set ref 348* 440* 743* 934* 934 938* 938 940 941 1009 1009 1013* 1071* 1400* window_ptr 000232 internal static pointer initial dcl 159 set ref 342* 344 345 349 941 1225 1233 window_top 000234 internal static fixed bin(17,0) initial dcl 162 set ref 301* 304* 342 344 345 345 345 349 941 1009 1225 1225 1230 1233 word 001225 automatic varying char(4090) dcl 163 set ref 446* 495 498* 524* 524 543 546* 726 729* wrdwidth 003225 automatic fixed bin(31,0) dcl 164 set ref 447* 498* 499* 526* 526 528 528 546* 547* 729* 730* xmove 056753 automatic fixed bin(31,0) dcl 982 set ref 988* 993* 996 996 1022* 1033 1036 1036 1038 1040 1041* 1051 1055 1058 1059 1060* xpos 2 based fixed bin(31,0) level 2 dcl 139 set ref 944 1409* ymove 056754 automatic fixed bin(31,0) dcl 983 set ref 988* 994* 996 996 1006 1009 1009 1020* 1021* 1047 ypos 3 based fixed bin(31,0) level 2 dcl 139 set ref 943* 1370 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACK internal static char(1) initial unaligned dcl 4-6 BAD_CHAR internal static char(1) initial unaligned dcl 76 BEL internal static char(1) initial unaligned dcl 4-6 BRS internal static char(1) initial unaligned dcl 4-6 CAN internal static char(1) initial unaligned dcl 4-6 DC2 internal static char(1) initial unaligned dcl 4-6 DC3 internal static char(1) initial unaligned dcl 4-6 DC4 internal static char(1) initial unaligned dcl 4-6 DEL internal static char(1) initial unaligned dcl 4-6 DLE internal static char(1) initial unaligned dcl 4-6 EM_ internal static char(1) initial unaligned dcl 4-6 EMdash internal static char(1) initial unaligned dcl 4-6 ENQ internal static char(1) initial unaligned dcl 4-6 EN_ internal static char(1) initial unaligned dcl 4-6 ENd internal static char(1) initial unaligned dcl 4-6 EOT internal static char(1) initial unaligned dcl 4-6 ESC internal static char(1) initial unaligned dcl 4-6 ETB internal static char(1) initial unaligned dcl 4-6 ETX internal static char(1) initial unaligned dcl 4-6 FF internal static char(1) initial unaligned dcl 4-6 FS internal static char(1) initial unaligned dcl 4-6 GS internal static char(1) initial unaligned dcl 4-6 HAIR internal static char(1) initial unaligned dcl 4-6 HLF internal static char(1) initial unaligned dcl 4-6 HLR internal static char(1) initial unaligned dcl 4-6 LF internal static char(1) initial unaligned dcl 4-6 LINE_AREA_SIZE internal static fixed bin(17,0) initial dcl 15-24 MAX_TREE_AREAS internal static fixed bin(17,0) initial dcl 16-20 MAX_TREE_AREA_CT internal static fixed bin(17,0) initial dcl 16-18 NAK internal static char(1) initial unaligned dcl 4-6 NUL internal static char(1) initial unaligned dcl 4-6 NULs internal static varying char(4) initial dcl 117 PAD internal static char(1) initial unaligned dcl 4-6 PI internal static char(1) initial unaligned dcl 4-6 PS internal static char(1) initial unaligned dcl 4-6 RRS internal static char(1) initial unaligned dcl 4-6 RS internal static char(1) initial unaligned dcl 4-6 SI internal static char(1) initial unaligned dcl 4-6 SO internal static char(1) initial unaligned dcl 4-6 SOH internal static char(1) initial unaligned dcl 4-6 STX internal static char(1) initial unaligned dcl 4-6 SUB internal static char(1) initial unaligned dcl 4-6 SYN internal static char(1) initial unaligned dcl 4-6 TEXT_AREA_SIZE internal static fixed bin(17,0) initial dcl 15-34 TEXT_VERSION internal static fixed bin(17,0) initial dcl 15-47 US internal static char(1) initial unaligned dcl 4-6 VT internal static char(1) initial unaligned dcl 4-6 approx internal static char(1) initial unaligned dcl 4-6 ascii_writer_$display 000000 constant entry external dcl 816 bullet internal static char(1) initial unaligned dcl 4-6 char builtin function dcl 223 comp_ 000000 constant entry external dcl 8-7 comp_area based area dcl 3-3 comp_art_ 000000 constant entry external dcl 8-8 comp_block_ctls_ 000000 constant entry external dcl 8-9 comp_break_ 000000 constant entry external dcl 8-11 comp_break_ctls_ 000000 constant entry external dcl 8-12 comp_ctls_ 000000 constant entry external dcl 8-14 comp_eject_page_ 000000 constant entry external dcl 8-15 comp_error_table_$limitation external static fixed bin(35,0) dcl 188 comp_expr_eval_ 000000 constant entry external dcl 8-17 comp_extr_str_ 000000 constant entry external dcl 8-21 comp_fill_ 000000 constant entry external dcl 8-24 comp_font_ 000000 constant entry external dcl 8-25 comp_format_ctls_ 000000 constant entry external dcl 8-26 comp_free based area dcl 3-5 comp_get_file_$find 000000 constant entry external dcl 8-28 comp_get_file_$open 000000 constant entry external dcl 8-31 comp_head_page_ 000000 constant entry external dcl 8-33 comp_hft_ctls_ 000000 constant entry external dcl 8-35 comp_hft_ctls_$title 000000 constant entry external dcl 8-36 comp_init_$one 000000 constant entry external dcl 8-38 comp_init_$three 000000 constant entry external dcl 8-40 comp_init_$two 000000 constant entry external dcl 8-39 comp_insert_ctls_ 000000 constant entry external dcl 8-42 comp_make_page_ 000000 constant entry external dcl 8-44 comp_make_page_$cleanup 000000 constant entry external dcl 8-46 comp_measure_ 000000 constant entry external dcl 8-48 comp_read_$line 000000 constant entry external dcl 8-57 comp_read_$name 000000 constant entry external dcl 8-50 comp_read_$number 000000 constant entry external dcl 8-53 comp_space_ 000000 constant entry external dcl 8-66 comp_tbl_ctls_ 000000 constant entry external dcl 8-68 comp_title_block_ 000000 constant entry external dcl 8-69 comp_update_symbol_ 000000 constant entry external dcl 8-71 comp_use_ref_ 000000 constant entry external dcl 8-74 comp_util_$add_text 000000 constant entry external dcl 8-75 comp_util_$escape 000000 constant entry external dcl 8-80 comp_util_$getblk 000000 constant entry external dcl 8-82 comp_util_$num_display 000000 constant entry external dcl 8-84 comp_util_$pageno 000000 constant entry external dcl 8-86 comp_util_$pictures 000000 constant entry external dcl 8-88 comp_util_$pop 000000 constant entry external dcl 8-91 comp_util_$push 000000 constant entry external dcl 8-92 comp_util_$relblk 000000 constant entry external dcl 8-94 comp_util_$replace_text 000000 constant entry external dcl 8-96 comp_util_$search_tree 000000 constant entry external dcl 8-98 comp_util_$set_bin 000000 constant entry external dcl 8-100 comp_util_$set_net_page 000000 constant entry external dcl 8-104 comp_util_$translate 000000 constant entry external dcl 8-106 comp_write_block_ 000000 constant entry external dcl 8-108 comp_write_page_ 000000 constant entry external dcl 8-110 compose_severity_ external static fixed bin(35,0) dcl 8-5 const_version internal static fixed bin(35,0) initial dcl 16-17 cright internal static char(1) initial unaligned dcl 4-6 ctl_line based varying char(1020) dcl 15-158 current_parms based structure level 1 dcl 15-209 dagger internal static char(1) initial unaligned dcl 4-6 dbldag internal static char(1) initial unaligned dcl 4-6 dcctl based structure level 1 packed unaligned dcl 5-34 dcfs_len internal static fixed bin(17,0) initial dcl 5-88 dclit based structure level 1 packed unaligned dcl 5-45 dclong_len internal static fixed bin(17,0) initial dcl 5-62 dcshort1_len internal static fixed bin(17,0) initial dcl 5-75 dcshort_len internal static fixed bin(17,0) initial dcl 5-75 delmark internal static char(1) initial unaligned dcl 4-6 delta internal static char(1) initial unaligned dcl 4-6 dot_addltr_symb_index internal static fixed bin(17,0) initial dcl 14-126 error_table_$fatal_error external static fixed bin(35,0) dcl 184 exit_str automatic varying char(32) dcl 975 filedata_version_2 internal static fixed bin(17,0) initial dcl 12-14 filedata_version_3 internal static fixed bin(17,0) initial dcl 12-16 filedata_version_4 internal static fixed bin(17,0) initial dcl 12-18 fileheader based structure level 1 dcl 12-22 fixed builtin function dcl 178 flag_value based bit(1) unaligned dcl 14-132 fntstk_eptr automatic pointer dcl 9-5 font based structure level 1 unaligned dcl 10-68 font_ptr automatic pointer dcl 10-67 hfcblk based structure level 1 dcl 15-250 hfcblk_ptr automatic pointer dcl 15-249 hot_chars internal static char(35) initial unaligned dcl 95 i automatic fixed bin(17,0) dcl 1380 ii automatic fixed bin(17,0) dcl 212 infin internal static char(1) initial unaligned dcl 4-6 init_page_parms based structure level 1 dcl 13-108 ioa_$rs 000000 constant entry external dcl 193 iox_$error_output external static pointer dcl 16-74 iox_$user_input external static pointer dcl 16-74 iox_$user_output external static pointer dcl 16-74 j automatic fixed bin(17,0) dcl 1380 jj automatic fixed bin(17,0) dcl 98 just_line automatic varying char(1020) dcl 102 l_cleanup automatic fixed bin(17,0) dcl 12-43 l_comment automatic fixed bin(17,0) dcl 12-42 line_area based structure level 1 dcl 15-26 ll automatic fixed bin(17,0) dcl 98 lquote internal static char(1) initial unaligned dcl 4-6 lslnt internal static char(1) initial unaligned dcl 4-6 max_cols internal static fixed bin(17,0) initial dcl 13-7 max_image_lines internal static fixed bin(17,0) initial dcl 13-5 max_text_lines internal static fixed bin(17,0) initial dcl 14-128 med_sel based structure level 1 unaligned dcl 10-116 med_sel_p automatic pointer dcl 10-115 medchar based varying char dcl 10-113 medchar_sel based structure level 1 unaligned dcl 10-110 medchar_sel_p automatic pointer dcl 10-109 medsel_table based structure level 1 unaligned dcl 10-86 medsel_table_ptr automatic pointer dcl 10-84 member based structure level 1 unaligned dcl 10-56 member_ptr automatic pointer dcl 10-55 min builtin function dcl 178 mod builtin function dcl 178 mode_string internal static char(16) initial unaligned dcl 14-129 modmark internal static char(1) initial unaligned dcl 4-6 multiply internal static char(1) initial unaligned dcl 4-6 nabla internal static char(1) initial unaligned dcl 4-6 not_eq internal static char(1) initial unaligned dcl 4-6 num_value based fixed bin(31,0) dcl 14-133 oct031 internal static char(1) initial unaligned dcl 4-6 oput based structure level 1 unaligned dcl 10-92 oput_p automatic pointer dcl 10-91 overbar internal static char(1) initial unaligned dcl 4-6 overlength_line 000000 stack reference condition dcl 181 page_image_version internal static fixed bin(35,0) initial dcl 13-53 perpen internal static char(1) initial unaligned dcl 4-6 pi internal static char(1) initial unaligned dcl 4-6 pl_mi internal static char(1) initial unaligned dcl 4-6 pointer builtin function dcl 178 pos automatic fixed bin(31,0) dcl 1383 prll internal static char(1) initial unaligned dcl 4-6 rquote internal static char(1) initial unaligned dcl 4-6 save_shared based structure level 1 dcl 14-124 sizel based structure level 1 unaligned dcl 10-103 sizel_p automatic pointer dcl 10-102 slash internal static char(1) initial unaligned dcl 4-6 square internal static char(1) initial unaligned dcl 4-6 string builtin function dcl 178 string_area based fixed bin(17,0) array dcl 15-43 sup0 internal static char(1) initial unaligned dcl 4-6 sup1 internal static char(1) initial unaligned dcl 4-6 sup2 internal static char(1) initial unaligned dcl 4-6 sup3 internal static char(1) initial unaligned dcl 4-6 sup4 internal static char(1) initial unaligned dcl 4-6 sup5 internal static char(1) initial unaligned dcl 4-6 sup6 internal static char(1) initial unaligned dcl 4-6 sup7 internal static char(1) initial unaligned dcl 4-6 sup8 internal static char(1) initial unaligned dcl 4-6 sup9 internal static char(1) initial unaligned dcl 4-6 sys_info$max_seg_size external static fixed bin(18,0) dcl 16-80 tblkdata based structure level 1 dcl 15-5 temp_r automatic bit(18) unaligned dcl 1520 text_area based structure level 1 dcl 15-36 text_parms based structure level 1 dcl 15-206 tfore internal static char(1) initial unaligned dcl 4-6 theta internal static char(1) initial unaligned dcl 4-6 tmark internal static char(1) initial unaligned dcl 4-6 txtlin based structure level 1 dcl 15-161 txtlinptr automatic pointer dcl 15-160 type_slxly internal static char(1) initial unaligned dcl 5-90 type_sly internal static char(1) initial unaligned dcl 5-90 type_sx internal static char(1) initial unaligned dcl 5-90 type_sxy internal static char(1) initial unaligned dcl 5-90 type_sy internal static char(1) initial unaligned dcl 5-90 type_v0lx internal static char(1) initial unaligned dcl 5-90 type_v0lxly internal static char(1) initial unaligned dcl 5-90 type_v0ly internal static char(1) initial unaligned dcl 5-90 type_v0x internal static char(1) initial unaligned dcl 5-90 type_v0xy internal static char(1) initial unaligned dcl 5-90 type_v0y internal static char(1) initial unaligned dcl 5-90 type_vlx internal static char(1) initial unaligned dcl 5-90 type_vlxly internal static char(1) initial unaligned dcl 5-90 type_vly internal static char(1) initial unaligned dcl 5-90 type_vx internal static char(1) initial unaligned dcl 5-90 type_vxy internal static char(1) initial unaligned dcl 5-90 type_vy internal static char(1) initial unaligned dcl 5-90 units based fixed bin(17,0) array dcl 10-81 units_ptr automatic pointer dcl 10-80 unstart_signal internal static char(3) initial unaligned dcl 5-39 unstop_signal internal static char(3) initial unaligned dcl 5-39 vrule internal static char(1) initial unaligned dcl 4-6 wait_signal internal static char(3) initial unaligned dcl 5-39 xii automatic fixed bin(17,0) dcl 981 zero_font_index 000000 stack reference condition dcl 181 NAMES DECLARED BY EXPLICIT CONTEXT. abrtf 007020 constant entry external dcl 1572 abrtn 006773 constant entry external dcl 1571 allf 007226 constant entry external dcl 1600 alln 007106 constant entry external dcl 1578 allocate 014663 constant entry internal dcl 2-21 ref 342 350 947 1238 artproc 006532 constant entry external dcl 891 ascii_writer_ 001010 constant entry external dcl 60 blat 007257 constant entry internal dcl 895 ref 401 1171 char_loop 002631 constant label dcl 459 ctl_char 003542 constant label dcl 540 db_join 007124 constant label dcl 1579 ref 1555 1559 1563 1575 dbf 006572 constant entry external dcl 1556 dbn 006554 constant entry external dcl 1555 device_display 006510 constant label dcl 881 disp_ret 006510 constant label dcl 886 display 006223 constant entry external dcl 819 dtf 007062 constant entry external dcl 1576 dtn 007044 constant entry external dcl 1575 end_chars 005267 constant label dcl 723 ref 487 finish_page 005604 constant label dcl 755 font_char 002652 constant label dcl 463 footproc 006005 constant entry external dcl 795 gap_exit 012032 constant label dcl 1201 ref 1173 image_loop 002204 constant label dcl 363 init 001042 constant entry external dcl 240 lgf 006676 constant entry external dcl 1564 lgn 006660 constant entry external dcl 1563 move_tstr 010026 constant entry internal dcl 927 ref 1020 myself 001104 constant label dcl 251 set ref 251 pad_block 011110 constant entry internal dcl 1080 ref 435 pff 006747 constant entry external dcl 1568 pfn 006722 constant entry external dcl 1567 plot 010202 constant entry internal dcl 960 ref 449 516 572 701 716 759 1433 1436 plot_return 010755 constant label dcl 1065 put_ 012134 constant entry internal dcl 1213 ref 762 put_str 013267 constant entry internal dcl 1374 ref 498 546 626 729 1065 put_uns 013636 constant entry internal dcl 1416 ref 601 734 release_window 010007 constant entry internal dcl 920 ref 319 764 rescan_line 002477 constant label dcl 440 rescan_page 001731 constant label dcl 329 return_ 005753 constant label dcl 790 set_font 014010 constant entry internal dcl 1444 ref 415 454 620 671 697 1108 set_media 014422 constant entry internal dcl 1507 ref 519 1385 show 010141 constant entry internal dcl 952 ref 440 440 506 506 506 506 528 528 528 528 557 557 688 688 688 688 688 688 688 688 712 712 712 712 743 743 743 743 899 899 899 899 899 899 899 899 899 899 899 899 996 996 996 996 996 996 996 996 996 996 996 996 1071 1071 1071 1071 1134 1134 1134 1134 1134 1134 1342 1342 1400 1400 1400 1400 1400 1400 1427 1427 1464 1464 1494 1494 1526 1526 1526 1526 sort 012523 constant label dcl 1299 set ref 1323 swap 012570 constant label dcl 1310 ref 1303 trim_font 002306 constant label dcl 389 ref 395 try_again 011634 constant label dcl 1161 ref 1187 txf 006634 constant entry external dcl 1560 txn 006616 constant entry external dcl 1559 NAMES DECLARED BY CONTEXT OR IMPLICATION. abs builtin function ref 674 679 byte builtin function ref 769 codeptr builtin function ref 251 convert builtin function ref 1597 dec builtin function ref 957 round builtin function ref 430 674 957 957 1143 1145 rtrim builtin function ref 528 746 746 746 916 1348 1400 sign builtin function ref 674 679 verify builtin function ref 853 867 1156 1268 1278 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 16004 16310 15406 16014 Length 17254 15406 304 730 375 234 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ascii_writer_ 25722 external procedure is an external procedure. on unit on line 319 64 on unit blat 514 internal procedure is called by several nonquick procedures. release_window 72 internal procedure is called by several nonquick procedures. move_tstr internal procedure shares stack frame of external procedure ascii_writer_. show 96 internal procedure is called during a stack extension. plot internal procedure shares stack frame of external procedure ascii_writer_. pad_block 429 internal procedure uses auto adjustable storage. put_ internal procedure shares stack frame of external procedure ascii_writer_. put_str internal procedure shares stack frame of external procedure ascii_writer_. put_uns internal procedure shares stack frame of external procedure ascii_writer_. set_font 180 internal procedure is called by several nonquick procedures. set_media internal procedure shares stack frame of external procedure ascii_writer_. allocate internal procedure shares stack frame of external procedure ascii_writer_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 bad_chrs ascii_writer_ 000052 dev_stat_ptr ascii_writer_ 000054 first_line ascii_writer_ 000055 first_page ascii_writer_ 000056 ilin ascii_writer_ 000057 max_revlead ascii_writer_ 000060 stat_blk ascii_writer_ 000224 unstring ascii_writer_ 000226 window_area_ptr ascii_writer_ 000230 window_bottom ascii_writer_ 000232 window_ptr ascii_writer_ 000234 window_top ascii_writer_ 000235 db_sw ascii_writer_ 000236 tx_sw ascii_writer_ 000237 lg_sw ascii_writer_ 000240 pf_sw ascii_writer_ 000241 abrt_sw ascii_writer_ 000242 dt_sw ascii_writer_ 000243 db_line ascii_writer_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ascii_writer_ 000100 auto_lead ascii_writer_ 000101 char_ndx ascii_writer_ 000102 col_width ascii_writer_ 000103 debug_str ascii_writer_ 000503 debug_sw ascii_writer_ 000504 detail_sw ascii_writer_ 000505 EM_width ascii_writer_ 000506 EN_width ascii_writer_ 000507 fcdevfnt ascii_writer_ 000510 fcwidth ascii_writer_ 000511 font_in ascii_writer_ 000512 font_size ascii_writer_ 000513 fonts_done ascii_writer_ 000514 fonts_needed ascii_writer_ 000515 i ascii_writer_ 000516 j ascii_writer_ 000517 k ascii_writer_ 000520 ichr ascii_writer_ 000522 lineinfoptr ascii_writer_ 000524 line_window_size ascii_writer_ 000525 Lmarg ascii_writer_ 000526 loctxt ascii_writer_ 001126 long_sw ascii_writer_ 001127 max_level ascii_writer_ 001130 font_media ascii_writer_ 001174 media_size ascii_writer_ 001175 medselstr ascii_writer_ 001206 need_font ascii_writer_ 001207 need_devfnt ascii_writer_ 001210 need_size ascii_writer_ 001211 pref_sw ascii_writer_ 001212 quad ascii_writer_ 001213 runout ascii_writer_ 001214 text_sw ascii_writer_ 001215 text_width ascii_writer_ 001216 tchr ascii_writer_ 001217 THIN_width ascii_writer_ 001220 tstr_ptr ascii_writer_ 001222 txtlen ascii_writer_ 001223 unstart ascii_writer_ 001224 window_level ascii_writer_ 001225 word ascii_writer_ 003225 wrdwidth ascii_writer_ 003226 Xmov ascii_writer_ 003227 Xmptstrk ascii_writer_ 003230 Xpixel ascii_writer_ 003231 Xpos ascii_writer_ 003232 Xspc ascii_writer_ 003233 Xmpts ascii_writer_ 003234 Yinit ascii_writer_ 003235 Ymov ascii_writer_ 003236 Ypixel ascii_writer_ 003237 Ypos ascii_writer_ 003240 Yspc ascii_writer_ 003241 Ympts ascii_writer_ 003256 bead ascii_writer_ 043256 beadct ascii_writer_ 043260 beadp ascii_writer_ 043262 d ascii_writer_ 043263 icol ascii_writer_ 043264 ocol ascii_writer_ 043265 scndx ascii_writer_ 043266 space ascii_writer_ 043267 swps ascii_writer_ 043270 tbead ascii_writer_ 043272 ch ascii_writer_ 043273 ct ascii_writer_ 043274 dstr ascii_writer_ 043674 rtn_str ascii_writer_ 053675 argl ascii_writer_ 053676 argp ascii_writer_ 053700 ercd ascii_writer_ 053702 DCxx_p ascii_writer_ 053704 fnttbl_ptr ascii_writer_ 053706 repl_str_ptr ascii_writer_ 053710 fileheader_ptr ascii_writer_ 053712 record_ptr ascii_writer_ 053714 page_record_ptr ascii_writer_ 053716 line_area_ptr ascii_writer_ 053720 text_area_ptr ascii_writer_ 053722 txtstrptr ascii_writer_ 053744 copystr plot 054745 old_xpos plot 054746 old_ypos plot 054747 penctl plot 054752 pltstr plot 056752 pltwidth plot 056753 xmove plot 056754 ymove plot 056772 level put_ 056773 level_skip put_ 057006 new_len put_str 057007 old_len put_str 057016 Y_offs put_uns 057017 unslen put_uns 057026 chng set_media 057027 med_chng set_media 057030 size_chng set_media 057040 Nwords allocate 057042 P allocate 057044 code allocate blat 000100 blatstr blat pad_block 000100 igap pad_block 000101 padeach pad_block 000102 gaps pad_block 000104 jl_ptr pad_block 000106 just_line pad_block 000506 pads pad_block 000506 padsize pad_block 000507 pad_ctl pad_block 000512 pad_ctl_ptr pad_block set_font 000100 chng set_font THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_cs realloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return alloc_auto_adj sign mod_fx1 signal enable shorten_stack ext_entry ext_entry_desc int_entry trunc_fx1 round_fx1 return_chars_eis real_to_real_tr any_to_any_tr divide_fx1 divide_fx3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ comp_report_ comp_report_$ctlstr comp_report_$exact comp_util_$display cu_$arg_ptr ioa_ ioa_$nnl ioa_$rsnnl translator_temp_$get_next_segment translator_temp_$get_segment translator_temp_$release_all_segments THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. comp_error_table_$program_error compstat$compconst error_table_$noarg error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 13 000773 12 21 000775 12 45 000776 12 62 000777 15 25 001000 15 35 001001 60 001004 227 001021 229 001023 234 001026 237 001036 240 001040 242 001053 243 001067 244 001071 245 001073 248 001102 251 001104 253 001111 258 001127 259 001132 262 001134 263 001155 264 001177 265 001223 266 001245 267 001271 268 001313 269 001337 271 001361 274 001371 275 001372 276 001373 278 001375 279 001376 282 001406 283 001413 284 001423 285 001425 286 001430 287 001433 289 001436 292 001441 293 001447 296 001461 300 001470 301 001474 302 001476 304 001502 310 001544 313 001553 316 001633 319 001644 321 001666 323 001712 324 001720 325 001722 327 001727 329 001731 332 001755 335 001760 336 002010 337 002013 340 002023 342 002025 344 002046 345 002066 346 002112 347 002125 348 002127 349 002131 350 002137 352 002160 353 002162 358 002164 363 002204 365 002223 366 002227 367 002231 369 002234 373 002246 374 002250 376 002255 377 002256 379 002263 380 002264 382 002271 385 002272 386 002277 387 002304 389 002306 394 002315 395 002317 398 002320 399 002331 401 002334 404 002342 405 002360 408 002365 409 002370 411 002372 415 002374 418 002410 420 002425 422 002432 426 002436 429 002443 430 002446 432 002461 435 002462 440 002477 446 002551 447 002552 449 002553 451 002574 452 002575 454 002600 459 002631 461 002642 463 002646 467 002652 469 002654 471 002660 474 002664 477 002677 478 002706 484 002764 487 002772 490 002773 492 002777 495 003003 498 003010 499 003021 500 003022 503 003024 504 003031 506 003032 512 003202 516 003204 518 003233 519 003235 524 003252 525 003266 526 003272 528 003273 537 003540 538 003541 543 003542 546 003547 547 003560 548 003561 551 003563 554 003571 557 003577 569 003773 572 004002 574 004021 576 004022 577 004030 578 004032 579 004037 580 004041 581 004045 582 004046 585 004050 588 004060 589 004066 592 004071 595 004074 601 004117 602 004120 605 004122 607 004123 610 004132 613 004134 614 004152 616 004226 618 004227 619 004237 620 004245 621 004256 623 004257 626 004261 628 004310 631 004312 632 004332 634 004406 635 004407 639 004410 642 004426 644 004437 646 004440 650 004442 653 004460 655 004471 656 004472 660 004473 663 004511 665 004522 668 004523 671 004526 674 004541 677 004561 679 004562 682 004574 684 004575 687 004577 688 004616 692 005003 693 005004 697 005005 701 005030 703 005056 705 005060 706 005063 708 005066 711 005070 712 005110 715 005230 716 005231 717 005253 721 005255 723 005267 726 005271 729 005276 730 005307 731 005310 734 005312 740 005327 743 005331 746 005442 750 005600 753 005601 755 005604 759 005622 762 005655 764 005656 766 005662 769 005671 774 005712 777 005717 779 005735 780 005737 788 005745 790 005753 793 005771 795 006001 803 006024 804 006037 805 006055 807 006067 810 006205 811 006206 819 006216 835 006241 838 006250 841 006253 842 006267 845 006271 846 006273 848 006274 850 006300 853 006302 854 006316 856 006322 858 006324 860 006361 862 006366 863 006403 865 006404 867 006406 868 006422 870 006426 872 006430 874 006465 876 006472 877 006507 886 006510 889 006513 891 006531 893 006543 1555 006553 1555 006565 1555 006570 1556 006571 1556 006603 1556 006605 1559 006615 1559 006627 1559 006632 1560 006633 1560 006645 1560 006647 1563 006657 1563 006671 1563 006674 1564 006675 1564 006707 1564 006711 1567 006721 1567 006733 1567 006736 1568 006746 1568 006760 1568 006762 1571 006772 1571 007004 1571 007007 1572 007017 1572 007031 1572 007033 1575 007043 1575 007055 1575 007060 1576 007061 1576 007073 1576 007075 1578 007105 1578 007117 1589 007124 1590 007125 1591 007145 1593 007150 1595 007173 1597 007203 1598 007215 1600 007225 1600 007237 1601 007246 895 007256 899 007264 915 007663 916 007735 918 010005 920 010006 923 010014 925 010025 927 010026 934 010031 938 010063 940 010067 941 010074 943 010105 944 010111 945 010113 947 010115 950 010136 952 010140 957 010146 960 010202 985 010205 988 010214 989 010217 991 010220 992 010222 993 010224 994 010227 996 010232 1003 010452 1006 010461 1009 010463 1013 010472 1017 010543 1020 010546 1021 010556 1022 010560 1025 010564 1026 010570 1028 010571 1030 010575 1033 010602 1036 010604 1038 010622 1039 010640 1040 010655 1041 010657 1043 010660 1047 010661 1051 010704 1055 010731 1058 010732 1059 010751 1060 010754 1065 010755 1071 010771 1078 011105 1080 011107 1098 011115 1134 011126 1153 011130 1105 011140 1106 011141 1108 011143 1111 011160 1113 011175 1116 011211 1119 011214 1120 011216 1121 011220 1122 011222 1123 011227 1126 011231 1127 011241 1129 011247 1132 011274 1134 011305 1142 011437 1143 011442 1145 011464 1147 011500 1148 011522 1149 011534 1150 011536 1151 011541 1153 011542 1156 011564 1157 011600 1160 011622 1161 011634 1164 011652 1167 011653 1170 011655 1171 011674 1173 011701 1176 011702 1177 011714 1179 011716 1182 011723 1183 011730 1185 011737 1186 011751 1187 011753 1190 011754 1192 011755 1194 012002 1196 012003 1197 012015 1199 012030 1201 012032 1204 012037 1205 012052 1206 012057 1208 012061 1211 012132 1213 012134 1219 012136 1223 012161 1225 012163 1229 012206 1230 012211 1232 012213 1233 012224 1235 012235 1238 012241 1239 012256 1242 012260 1245 012263 1248 012277 1249 012302 1251 012304 1253 012314 1255 012321 1258 012330 1259 012331 1261 012337 1262 012341 1263 012342 1265 012343 1268 012347 1269 012366 1271 012373 1272 012374 1273 012377 1275 012400 1278 012402 1279 012421 1282 012426 1283 012434 1284 012440 1286 012441 1289 012445 1291 012454 1293 012456 1298 012520 1299 012523 1301 012530 1302 012531 1303 012542 1305 012555 1310 012570 1312 012574 1313 012600 1314 012604 1316 012605 1318 012607 1323 012655 1326 012663 1327 012664 1328 012666 1330 012676 1332 012703 1335 012724 1338 012740 1339 012753 1340 012756 1342 012760 1346 013070 1348 013071 1349 013112 1352 013116 1355 013126 1361 013232 1362 013236 1363 013241 1364 013244 1366 013254 1368 013256 1370 013263 1372 013266 1374 013267 1385 013272 1388 013310 1389 013320 1391 013324 1396 013326 1399 013330 1400 013373 1408 013606 1409 013625 1411 013631 1412 013632 1413 013633 1414 013635 1416 013636 1421 013640 1422 013641 1424 013645 1427 013646 1432 013713 1433 013716 1434 013737 1436 013741 1437 013760 1439 013762 1442 014005 1444 014007 1454 014015 1456 014030 1459 014031 1462 014033 1464 014051 1470 014126 1473 014132 1474 014143 1475 014147 1479 014151 1481 014162 1483 014165 1484 014170 1486 014203 1488 014214 1491 014225 1494 014233 1497 014316 1505 014421 1507 014422 1522 014425 1523 014433 1524 014437 1526 014441 1531 014540 1535 014541 1536 014543 1539 014546 1544 014647 1547 014653 1548 014657 1550 014662 2 21 014663 2 40 014666 2 41 014674 2 42 014700 2 43 014714 2 44 014725 2 45 014730 2 47 014740 2 48 014747 2 49 014753 2 50 014761 ----------------------------------------------------------- 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