COMPILATION LISTING OF SEGMENT process_compout Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/23/85 1043.4 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* compose routine to print sequential compout files */ 10 11 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 12 13 process_compout: 14 pco: 15 proc; 16 17 /* 18* This procedure implements one command and two active functions designed 19* for processing compout files. 20* process_compout (pco) writes device images in various 21* formats to mag/paper tape to user 22* output 23* [compout] returns the name of a compout 24* [compask ...] "response" with a memory 25* 26*/* Usage: process_compout {path} {ctlargs} */ 27 /* */ 28 /* Processes one or more sequential compout files to the terminal, paper */ 29 /* tape, or mag tape. It supports various means of page selection and */ 30 /* and several output display modes. */ 31 /* */ 32 /* args: */ 33 /* path */ 34 /* the name of a compout to process, may be a starname. The compout */ 35 /* suffix need not be supplied. If not given, then -pn must be used. */ 36 /* */ 37 /* ctlargs: */ 38 /* -block xx */ 39 /* Override the imbedded output blocking factor, using xx instead. */ 40 /* -brief, -bf */ 41 /* abbreviate various headers and labels */ 42 /* -change_printwheel_for_file, -cpwf */ 43 /* change printwheel and reprint at end of file. */ 44 /* -change-printwheel_for_pages, -cpwp */ 45 /* change printwheel and reprint at end of page. */ 46 /* -comment */ 47 /* same as -mode comment */ 48 /* -control_file path, -cf path ACCEPTED, BUT NOT IMPLEMENTED */ 49 /* path is the name of a control file (see below for format). */ 50 /* -display, -ds */ 51 /* same as -mode display */ 52 /* -dump */ 53 /* same as -mode dump */ 54 /* -from xx, -fm xx */ 55 /* begin output from page xx (see page number conventions) */ 56 /* -header, -he */ 57 /* show the file header with -dump or -mode dump. */ 58 /* -long, -lg */ 59 /* add additional information to what is being displayed. */ 60 /* -mode comment|display|dump|setup|?|xx|"STR" */ 61 /* comment prints the compout control comment information */ 62 /* display prints the image with all device controls interpreted */ 63 /* dump prints and ascii/octal dump of the image */ 64 /* setup prints the machine setup information (font assignments, */ 65 /* print wheel assignments, etc) */ 66 /* ? prints the modes defined in the file header */ 67 /* xx selects the mode with that name from the control comment */ 68 /* "STR" uses STR as an attach descscription (atd) string */ 69 /* -noheader, -nhe */ 70 /* do not show the file header with -dump or -mode dump (default). */ 71 /* -pages xx, -pgs xx, -page xx, -pg xx */ 72 /* selects a series of pages and/or ranges of pages (see page number */ 73 /* conventions). Any number of xx's may follow */ 74 /* -pages_changed {p|s}, -pgs {p|s} */ 75 /* causes only the changed pages to be selected. The "s" option says */ 76 /* that only the single modified pages are wanted. The "p" option */ 77 /* says that the obverse pages are wanted to match all modified */ 78 /* pages. */ 79 /* ---------------- "p" option accepted, but not implemented; gives warning */ 80 /* -pathname xx, -pn xx */ 81 /* causes xx to be used as an input file name without adding */ 82 /* ".compout". May not be used when path is given. */ 83 /* -stop, -sp */ 84 /* stop between pages */ 85 /* -table, -tb */ 86 /* causes a table of all the pages selected to be printed, showing */ 87 /* the page sequence number, front/back status, the changed status */ 88 /* (via "#") and the page identification */ 89 /* -to xx */ 90 /* This causes output to cease after page xx (see page number */ 91 /* conventions) */ 92 /* -volume xx */ 93 /* this specifies the name of an output tape to be used */ 94 /* -wait, -wt */ 95 /* stop before first page (only) */ 96 /* */ 97 /* Note: args apply to all input files. */ 98 /* */ 99 /* CONTROL FILE FORMAT --- NOT IMPLEMENTED */ 100 /* A control file is used to specify what is to be done. Each entry has this */ 101 /* form: */ 102 /* star_paths {ctlargs}; */ 103 /* The ctlargs in a entry apply to only the paths in that entry. In this */ 104 /* manner, different selection can be done on various paths to be processed, */ 105 /* to a single tape. */ 106 /* */ 107 /* PAGE NUMBER CONVENTIONS */ 108 /* !n absolute page number, sequence number in compout */ 109 /* !0 reset to beginning of compout, used to enable output in order */ 110 /* other than compout order */ 111 /* +n relative page number, forward from current position */ 112 /* $-n relative page number, referencing the last page (-n optional) */ 113 /* XXX page identification, the page identifier XXX is searched for. An */ 114 /* exact match must occur, no less/greater than check is possible */ 115 /* */ 116 /* fileheader.comment is used to carry information which is needed to handle */ 117 /* the file. This information consists of lines (i.e. separated by NLs). */ 118 /* Each line begins with a keyword followed by a colon. Below, "xxx" */ 119 /* represents the data pertaining to the keyword. All xxx strings are active */ 120 /* function expanded ("[" and "]" are reserved for this purpose) before */ 121 /* being put to use. A NL need not follow the last line. These options are */ 122 /* available (anything else is ignored): */ 123 124 /* mode:zzz=xxx This defines a mode, zzz, to have the value xxx. The */ 125 /* first mode present is the default mode. If any others */ 126 /* are present, they represent alternatives available. */ 127 /* A mode defines a method of disposing of the data. The */ 128 /* output type is the first 4 characters of the mode */ 129 /* string. These 3 are currently supported: */ 130 /* 1) output_type=TAPE specified as */ 131 /* "tape_ibm_ attach-description" OR */ 132 /* "tape_ansi_ attach-description" */ 133 /* 2) output_type=PUNCH specified as */ 134 /* "punch K" */ 135 /* 3) output_type=ONLINE (default in none specified at all) */ 136 /* --attach-description is everything needed except for */ 137 /* volume-id -ring -retain xxx */ 138 /* -number nnn -create/-append */ 139 /* These are all supplied as needed by pco. */ 140 /* --K currently can only be "6". punch 6 is used to put */ 141 /* out TTS or reverse TTS information via a modified TN300 */ 142 /* paper tape punch (disable 2 upper punches) */ 143 /* --online causes output to be sent user_output */ 144 145 /* leader:xxx The string xxx is punched out in "big" letters on the */ 146 /* paper tape leader after the file identification. */ 147 148 /* setup:xxx The string xxx is placed in the "contents" file which */ 149 /* is written first on mag tape. When multiple files are */ 150 /* being written to the same tape, this information is */ 151 /* included only once (the first file's). This is intended */ 152 /* to be used to convey the font setup, etc. information to */ 153 /* the receiver of the tape. */ 154 /* There may be multiple occurances of this statement. Each */ 155 /* occurance is added to the "contents" file followed by a */ 156 /* CR/LF. */ 157 158 /* file:xxx The string xxx is placed in the "contents" file which */ 159 /* is written first on mag tape. This information is used */ 160 /* from EACH file written on tape. It is intended to give */ 161 /* information specific to each file (document). */ 162 /* The active function [compout] will contain the name of */ 163 /* each document in turn as this information is processed. */ 164 /* The active function [compask ...] is designed to be of */ 165 /* help in replying to the many occurances of the same */ 166 /* question which will occur in this case. */ 167 168 /* content_file:{^}seg,{^}tape */ 169 /* This controls the disposition of the "contents" file. */ 170 /* If not specified, the default is "^tape,seg". */ 171 /* seg,^seg do/dont create the segment XXX.contents. This will */ 172 /* happen only if -volume XXX is specified. XXX is the name */ 173 /* of the tape being written. */ 174 /* tape,^tape do/dont place the contents file at the beginning of the */ 175 /* tape. */ 176 /* pack:xxx */ 177 /* where xxx is of the form */ 178 /* {[,]...}... */ 179 /* where is fN | cN | bN | '...' */ 180 /* This signifies that the data is to be packed when */ 181 /* writing to mag tape. */ 182 /* --'...' is a literal bit string to be output, quoted this */ 183 /* way because the comment in compdv is already in "'s */ 184 /* --fN means to move forward N bits in the input byte */ 185 /* --cN means to copy N bits from the input byte */ 186 /* --bN means to move backward N bits in the input byte */ 187 /* (N is a single digit) */ 188 /* --"," separates parts within a "bytes-worth" */ 189 /* --";" separates between input bytes */ 190 191 /* blkhdr/blktlr recognized but not implemented */ 192 193 /* DB: xxx xxx is the seg$entry of routine to do the -db display */ 194 /* This entry and any which follow it will not be shown if */ 195 /* -mode comment is requested. */ 196 197 /* Usage: [compout] */ 198 /* */ 199 /* While the comment string of a compout is being processed, this function */ 200 /* will return the name (less ".compout") of this compout. */ 201 /* If called at any other time it will print the message from */ 202 /* error_table_$out_of_sequence */ 203 204 /* Usage: [compask question {responses}] */ 205 /* */ 206 /* While the comment string of a compout is being processed, this function */ 207 /* asks a question of the user. It optionally constrains the answer to be */ 208 /* one of a specified set. It also contains provision for the mapping of a */ 209 /* specific user answer into a different return string. This function */ 210 /* remembers the text of each different question asked (within a single pco */ 211 /* execution), and keeps the last answer. Each question is asked, showing */ 212 /* the remembered answer (if any). This last answer may be selected by */ 213 /* answering only a NL. If a null answer is wanted instead of the last */ 214 /* answer, a single "." must be the response. */ 215 /* */ 216 /* question is whatever is to be asked. It is printed, followed by */ 217 /* the last answer to this question in parentheses, but */ 218 /* with no NL. */ 219 /* response if present specifies a value which is a valid response. */ 220 /* This may be in one of two forms: "A" or "A=B". The "A" */ 221 /* is a response to be checked for. If the "=" is present, */ 222 /* whatever follows it (the "B" portion, which may be null) */ 223 /* is returned if the "A" is entered by the user. */ 224 /* For example: (all on one line in a compout comment string) */ 225 /* file:Return[compask "" Pasteup? "" no= ""yes= pasted up""] */ 226 /* [compask ""original/copy? "" o=original original c=copy copy]. */ 227 /* If 2 files are being processed, it will cause this kind of interaction: */ 228 /* Pasteup? () yes */ 229 /* original/copy () copy */ 230 /* Pasteup? (yes) no */ 231 /* original/copy (copy) o */ 232 /* will cause generation of these lines: */ 233 /* Return pasted up copy. */ 234 /* Return original. */ 235 /* Note that the pasteup question returns a null result if the answer is no */ 236 /* and the string " pasted up" if the answer is yes. The yes response must */ 237 /* be quoted because it contains SPs. */ 238 /* The other question allows the user to reply "o" instead of having to type */ 239 /* "original", yet the result is the more meaningful whole word. */ 240 241 /* LOCAL STORAGE */ 242 243 dcl af_data_ptr ptr int static init (null ()); 244 dcl 1 af_data based (af_data_ptr), 245 2 compout char (32) var, /* [compout] data */ 246 2 count fixed bin, /* [compask "..."] data list */ 247 2 e (af_data.count), 248 3 quest char (100) var, /* question */ 249 3 ans char (168) var; /* answer */ 250 dcl answer char (4) var; /* command_query answer */ 251 /* command argument */ 252 dcl arg char (argl) based (argp); 253 /* arg list structure */ 254 dcl 1 arg_list based (arg_list_ptr), 255 /* 1= use arg as name wo/compout */ 256 2 asis (argct) bit (1) unal, 257 /* can be an absolute path */ 258 2 arg (argct) char (200) var, 259 2 E ptr; /* -> file if arg is a path */ 260 dcl arg_list_ptr ptr defined tempsegs (5); 261 dcl argct fixed bin; /* number of command args given */ 262 dcl argl fixed bin (21); /* length of arg */ 263 dcl argno fixed bin; /* command line arg counter */ 264 dcl argp ptr; /* pointer to arg */ 265 dcl BEGIN fixed bin static options (constant) init (1); 266 dcl BELHT char (2) static options (constant) init (" "); 267 dcl BOF fixed bin static options (constant) init (-1); 268 dcl code fixed bin (35); /* error code */ 269 /* -> tape contents list */ 270 dcl contents_ptr ptr defined tempsegs (3); 271 dcl contents char (262143) var based (contents_ptr); 272 dcl contents_l fixed bin; 273 dcl CR char (1) static options (constant) init (" "); 274 dcl ctl_file (100) char (168) var; 275 /* control file paths */ 276 dcl ctl_file_count fixed bin; /* number of control files */ 277 dcl device_cleanup char (100) var; /* cleanup string for device */ 278 279 /* dcl display_proc entry (char (*) var, fixed bin (24), bit (1), bit (1)) 280*/* returns (char (*) var) automatic;*/ 281 /* dcl display_rtn char (168) var; /* name of -db/-display routine */ 282 dcl done bit (1); /* loop control switch */ 283 dcl END fixed bin static options (constant) init (2); 284 dcl given_file_count /* # of files given */ 285 fixed bin; 286 dcl file_entry_ptr ptr; /* file entry structure */ 287 dcl 1 file_entry aligned based (file_entry_ptr), 288 2 link ptr, /* -> next file in linked list */ 289 2 file char (168) var, /* name of file to process*/ 290 2 ename char (32) var, /* compout name */ 291 2 seq_no fixed bin, 292 2 page_count fixed bin, /* count of selected pages */ 293 2 sws, 294 3 pgc bit (1) unal, 295 3 obverse bit (1) unal, /* not yet implemented */ 296 3 stop bit (1) unal, 297 3 wait bit (1) unal, 298 3 fill bit (32) unal, 299 2 page_sel_ct 300 fixed bin, /* count of page select fields */ 301 2 ll (file_entry.page_sel_ct), 302 3 from, 303 4 num fixed bin, /* relative page count */ 304 4 id char (32), /* actual page id to look for */ 305 4 sign char (1), /* "-" num is $- value */ 306 /* "+" num is + value */ 307 /* "x" num is absolute value */ 308 /* " " id is what to look for */ 309 3 to like file_entry.from, 310 2 next fixed bin; 311 dcl file_entry_base_ptr 312 (2) ptr; /* base of linked list of */ 313 /* file entry ptrs */ 314 /* (1) - command line files */ 315 /* (2) - ??? (control files ) */ 316 dcl filno fixed bin; /* file counter */ 317 dcl 1 from_to aligned like file_entry.from based (from_to_ptr); 318 dcl from_to_ptr ptr; 319 dcl FSPREC fixed bin static options (constant) init (0); 320 dcl keyword char (64) var; /* as needed for keyword checking */ 321 dcl header_out_ptr ptr; /* -> header of the current compout */ 322 dcl PADHT char (2) static options (constant) init (" "); 323 dcl ii fixed bin; /* working index */ 324 325 /* dcl init_proc entry automatic; /* writer init proc */ 326 dcl input_iocbp ptr; /* -> IOCB for input file */ 327 dcl ipage fixed bin; /* page counter */ 328 dcl j fixed bin; /* working index */ 329 dcl leader char (256) var; /* fixed portion of leader */ 330 dcl max_tape_files fixed bin; /* on a tape */ 331 dcl max_outrecs fixed bin; /* max records in an output file */ 332 dcl max_records fixed bin; /* -block value for max_outrecs */ 333 dcl me char (15) static options (constant) 334 init ("process_compout"); 335 dcl mode char (200) var; /* a mode from the file */ 336 dcl mode_arg char (200) var; /* arg given for -mode */ 337 dcl mounted_wheel fixed bin static init (1); 338 dcl next_image bit (36); /* for loop control */ 339 dcl NOVOL char (6) static options (constant) init ("######"); 340 dcl ONLINE char (4) static options (constant) init ("onli"); 341 dcl output_medium char (4); /* = tape/punch/online */ 342 dcl output_text char (output_text_len) based (output_text_ptr); 343 dcl output_text_len 344 fixed bin (21); 345 dcl output_text_ptr 346 ptr defined tempsegs (6); 347 dcl pack_ct fixed bin; /* # entries in bit packing array */ 348 dcl page_length fixed bin (31); 349 dcl page_selected fixed bin; /* pagelist.page ndx of page */ 350 dcl page_wrdct fixed bin; /* word count for page overlay page */ 351 dcl pagelist_base fixed bin; /* base pagelist.page index */ 352 dcl pagelist_last fixed bin; /* last pagelist.page index */ 353 /* contents of all requested files */ 354 dcl pagelist_ptr ptr defined tempsegs (4); 355 dcl 1 pagelist based (pagelist_ptr), 356 2 file_count fixed bin, /* how many files in the list */ 357 2 page_count fixed bin, /* how many pages in the list */ 358 2 file (pagelist.file_count), 359 3 name char (168) var, /* file name */ 360 3 from fixed bin, /* beginning pagelist.page index */ 361 3 to fixed bin, /* ending pagelist.page index */ 362 2 page (pagelist.page_count), 363 3 id char (32), /* page identification */ 364 3 file_no fixed bin, /* pagelist.file index */ 365 3 seq_no fixed bin, /* abs position in file */ 366 3 sw, 367 4 changed 368 bit (1) unal, /* page is changed */ 369 4 obv_changed 370 bit (1) unal, /* obverse is changed */ 371 4 front bit (1) unal, /* page is a front */ 372 4 blank bit (1) unal, /* page is intentionally blank */ 373 4 no_front 374 bit (1) unal, /* obverse front not present */ 375 4 no_back 376 bit (1) unal, /* obverse back not present */ 377 4 select bit (1) unal, /* page is selected for output */ 378 4 fill bit (29) unal; 379 dcl preface char (500) var; /* place to hold successive prefaces */ 380 dcl PUNCH char (4) static options (constant) init ("punc"); 381 /* internal proc to do the output */ 382 dcl put_out entry (fixed bin) automatic; 383 dcl raw_record char (record_len) based (record_ptr); 384 dcl record_bytes fixed bin (21); /* max tape record length in bytes */ 385 dcl record_count fixed bin; /* record counter */ 386 dcl record_hdrct fixed bin; /* input record header word count */ 387 dcl record_len fixed bin (21); /* input record length from iox_ */ 388 dcl record_wrdct fixed bin; /* input record word count */ 389 dcl reply_text char (256); /* users response to a question */ 390 dcl setup char (2000) var; /* font setup info for contents file */ 391 dcl stop_signal char (5); /* 2 ({BEL||}HT)||CR */ 392 dcl 1 sws, /* control switches */ 393 2 brief_sw bit (1) unal, /* 1= brief output mode */ 394 2 comment_sw bit (1) unal, /* 1= print comment value */ 395 2 contents_seg_sw /* 1= TOC segment wanted */ 396 bit (1) unal, 397 2 contents_tap_sw /* 1= TOC file on tape wanted */ 398 bit (1) unal, 399 2 cpwf_sw bit (1) unal, /* 1= change pwheel at EOF */ 400 2 debug_sw bit (1) unal, /* 1= debugging */ 401 2 display_sw bit (1) unal, /* 1= interpret file contents */ 402 2 dump_sw bit (1) unal, /* 1= octal dump of file contents */ 403 2 error_sw bit (1) unal, /* global error flag */ 404 2 first_pref_sw /* 1= first preface */ 405 bit (1) unal, 406 2 from_to_sw bit (1) unal, /* 1= -from/-to arg given */ 407 2 header_sw bit (1) unal, /* 1= show file header */ 408 2 long_sw bit (1) unal, /* 1= long output mode */ 409 2 mode_sw bit (1) unal, /* 1= -mode has been given */ 410 2 nobell_sw bit (1) unal, /* 1= suppress BELs in stop signal */ 411 2 rawo_sw bit (1) unal, /* 1= in RAWO mode */ 412 2 setup_sw bit (1) unal, /* 1= print machine setup values */ 413 2 skip_pref_sw /* 1= skip preface */ 414 bit (1) unal, 415 2 start_page_sw /* 1- starting a page output */ 416 bit (1) unal, 417 2 table_sw bit (1) unal, /* 1= table list wanted */ 418 2 vol_sw bit (1) unal, /* 1= volume ID has been given */ 419 2 MBZ bit (15) unal; 420 dcl TAPE char (4) static options (constant) init ("tape"); 421 dcl tape_iocbp ptr; /* -> IOCB for output tape */ 422 dcl tempsegs (6) ptr; /* tempseg pointers */ 423 dcl text_cons (2) char (128) var; 424 dcl text_pages fixed bin; /* # of pages put into output file */ 425 dcl UNLIMITED fixed bin static options (constant) init (-1); 426 dcl volid char (20) var; /* tape label volume ID */ 427 dcl vol_file_ct fixed bin; /* number of files on a tape volume */ 428 dcl wheel_done bit (36); /* which wheels have been processed */ 429 dcl wheel_need bit (36); /* which wheels have been requested */ 430 431 dcl ( /* page list value types */ 432 NEG_REL init ("-"), /* $-value */ 433 POS_REL init ("+"), /* +value */ 434 ABS init ("x"), /* value */ 435 SEARCH_ID init (" ") /* "PageNo string" */ 436 ) /* search for page id */ 437 char (1) int static options (constant); 438 439 dcl error_table_$end_of_info 440 fixed bin (35) ext static; 441 dcl error_table_$unimplemented_version 442 fixed bin (35) ext static; 443 444 dcl (addr, addrel, after, before, char, codeptr, collate, convert, dec, 445 divide, hbound, index, length, ltrim, min, max, mod, null, rtrim, size, 446 string, substr, unspec, verify) 447 builtin; 448 449 dcl (cleanup, pco_error, quit) 450 condition; 451 452 dcl com_err_ entry options (variable); 453 dcl command_query_ entry options (variable); 454 dcl continue_to_signal_ 455 entry (fixed bin (35)); 456 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 457 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 458 dcl dump_segment_ entry (ptr, ptr, fixed bin, fixed bin, fixed bin, 459 bit (*)); 460 dcl hcs_$make_ptr entry (ptr, char (*), char (*), ptr, fixed bin (35)); 461 dcl get_temp_segments_ 462 entry (char (*), (*) ptr, fixed bin (35)); 463 dcl iox_$attach_name 464 entry (char (*), ptr, char (*), ptr, fixed bin (35)); 465 dcl iox_$close entry (ptr, fixed bin (35)); 466 dcl iox_$detach_iocb 467 entry (ptr, fixed bin (35)); 468 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 469 dcl iox_$put_chars entry (ptr, ptr, fixed (21), fixed (35)); 470 dcl iox_$read_record 471 entry (ptr, ptr, fixed bin (21), fixed bin (21), 472 fixed bin (35)); 473 474 /* INITIALIZE */ 475 call cu_$arg_count (argct, code); /* check the call */ 476 if code ^= 0 477 then 478 do; 479 call com_err_ (code, me); 480 return; 481 end; 482 483 if argct = 0 /* show usage message */ 484 then 485 do; 486 call com_err_ (0, me, 487 "Proper usage is: ^a " || "paths {-control_args}", me); 488 return; 489 end; 490 491 /* preset stuff touched by clean */ 492 unspec (sws) = "0"b; /* clear all switches */ 493 device_cleanup = ""; 494 tempsegs (*), input_iocbp, tape_iocbp = null (); 495 /* get temp segs */ 496 call get_temp_segments_ (me, tempsegs, code); 497 if code ^= 0 498 then 499 do; 500 call com_err_ (code, me, "Getting temp segments."); 501 goto finish; /* cleanup done at this label */ 502 end; 503 504 query_info.version = 2; /* set up in case query needed */ 505 query_info.suppress_spacing = "1"b; 506 query_info.yes_or_no_sw = "1"b; 507 508 fileheader_ptr, record_ptr = tempsegs (1); 509 /* build arg_list array in tempsegs (5) */ 510 /* the list is stored aside because */ 511 /* the control file feature will */ 512 /* change/augment the control args */ 513 do argno = 1 to argct; /* for individual input files */ 514 call cu_$arg_ptr (argno, argp, argl, code); 515 arg_list.arg (argno) = arg; 516 end; 517 518 /* preset stuff touched by proc_args */ 519 file_entry_base_ptr (*) = null (); 520 max_records, ctl_file_count, given_file_count = 0; 521 mode_arg, mode, volid = ""; 522 523 call proc_args; /* process the command args */ 524 525 if error_sw /* any errors processing args? */ 526 then return; 527 528 if given_file_count = 0 /* check file count */ 529 then 530 do; 531 call com_err_ (0, me, "No compouts specified to process"); 532 return; 533 end; 534 535 /* finish up initialization */ 536 preface, text_cons (*), /*display_rtn,*/ 537 leader, setup = ""; 538 pack_ct = 0; 539 skip_pref_sw = "1"b; 540 max_tape_files = UNLIMITED; 541 max_outrecs, record_bytes = 99999; 542 output_medium = ONLINE; 543 544 if volid = "" /* -volume is allowed only in com */ 545 then volid = NOVOL; /* line, not control file */ 546 547 if nobell_sw 548 then stop_signal = PADHT || PADHT || CR; 549 else stop_signal = BELHT || BELHT || CR; 550 551 /**** LEAVE THIS IN FOR FUTURE IMPLEMENTATION */ 552 /* do ii = 1 to ctl_file_count; /* process any ctl_file's */ 553 /* call ioa_ ("control file not yet handled. ^a", ctl_file (ii)); 554*/* end;*/ 555 556 header_out_ptr = addr (file_entry.next); 557 pagelist.file_count = given_file_count; 558 filno, pagelist.page_count = 0; 559 560 /* make all the entrypoints needed are known (when PCO not in search rules) */ 561 here: 562 call hcs_$make_ptr (codeptr (here), "compout", "compout", null (), 0); 563 call hcs_$make_ptr (codeptr (here), "compask", "compask", null (), 0); 564 565 on condition (cleanup) call clean; 566 567 /* go thru everything, making sure all asked for exists */ 568 af_data_ptr = contents_ptr; /* borrow the segment for a while */ 569 af_data.count = 0; 570 571 if dt_sw 572 then call ioa_ ("FILE LIST ***"); 573 574 file_loop_1: /* for all files given */ 575 do file_entry_ptr = file_entry_base_ptr (1) repeat (file_entry.link) 576 while (file_entry_ptr ^= null ()); 577 578 if open_compout () /* open compout and get file header */ 579 then /* returns "1"b if open is OK */ 580 do; 581 af_data.compout = rtrim (file_entry.ename, ".compout"); 582 filno = filno + 1; 583 pagelist.file.name (filno) = file_entry.file; 584 pagelist.file (filno).from = pagelist.page_count + 1; 585 586 if device_cleanup = "" /* extract device cleanup string */ 587 then 588 do; 589 l_cleanup = fileheader.cleanup_leng; 590 device_cleanup = fileheader.cleanup; 591 end; 592 593 if debug_sw 594 then call ioa_ ( 595 "header: record_len=^i^/Version: ^i Device: ^a/^a/^a " 596 || "MaxFiles: ^i; MaxPages: ^i;", record_len, 597 fileheader.version, fileheader.device_class, 598 fileheader.device_name, fileheader.device, max_tape_files, 599 fileheader.max_pages); 600 601 if ^table_sw 602 then 603 do; 604 call proc_comment; 605 if debug_sw 606 then call ioa_ ("Cleanup: ^a", 607 comp_util_$display ( 608 substr (device_cleanup, 1, l_cleanup), 0, "0"b)); 609 end; 610 611 done = "0"b; /* set up for file processing */ 612 record_count = 0; 613 if ^comment_sw & ^error_sw /* if not just printing Comment: and */ 614 then /* there have been no errors */ 615 do while (^done); 616 call /* read a record */ 617 iox_$read_record (input_iocbp, record_ptr, record_len, 618 record_len, code); /**/ 619 /* EOF? */ 620 if (code = error_table_$end_of_info) 621 then done = "1"b; 622 623 else if (code ^= 0) /* read error? */ 624 then 625 do; 626 call com_err_ (code, me, "Reading ^a", file_entry.file); 627 done = "1"b; 628 end; 629 630 else /* we have a valid record */ 631 do; /* count & copy stuff into pagelist */ 632 record_count = record_count + 1; 633 pagelist.file (filno).to, pagelist.page_count = 634 pagelist.page_count + 1; 635 pagelist.page (pagelist.page_count).id = record.pageid; 636 pagelist.page (pagelist.page_count).file_no = filno; 637 pagelist.page (pagelist.page_count).seq_no = record_count; 638 pagelist.page (pagelist.page_count).changed = record.changed; 639 pagelist.page (pagelist.page_count).front = record.front; 640 pagelist.page (pagelist.page_count).blank = record.blank; 641 pagelist.page (pagelist.page_count).select, 642 pagelist.page (pagelist.page_count).no_front, 643 pagelist.page (pagelist.page_count).no_back = "0"b; 644 645 if (record_count > 1) 646 then if (pagelist.page (pagelist.page_count).front 647 = pagelist.page (pagelist.page_count - 1).front) 648 then if pagelist.page (pagelist.page_count).front 649 then pagelist.page (pagelist.page_count - 1) 650 .no_back = "1"b; 651 else pagelist.page (pagelist.page_count).no_front = 652 "1"b; 653 end; 654 end; 655 656 if dt_sw & filno > 0 657 then call ioa_ ("pagendx=^i:^i file=^a", pagelist.file (filno).from, 658 pagelist.file (filno).to, pagelist.file (filno).name); 659 660 call close_compout (); /* close the compout */ 661 end; 662 663 else file_entry.file = ""; 664 end file_loop_1; 665 666 if filno = 0 /* no files to process */ 667 then return; 668 669 filno = 0; /* now, we know everything we need */ 670 file_loop_2: /* so process the files */ 671 do file_entry_ptr = file_entry_base_ptr (1) repeat (file_entry.link) 672 while (file_entry_ptr ^= null ()); 673 674 filno = filno + 1; /* count a file */ 675 record_count = 1; /* and set up for processing */ 676 pagelist_base = pagelist.file (filno).from - 1; 677 pagelist_last = pagelist.file.to (filno) - pagelist_base; 678 679 if file_entry.file ^= "" /* if file hasnt been discarded */ 680 then 681 page_select_loop: /* go thru the pages selected */ 682 do ipage = 1 to file_entry.page_sel_ct; 683 /* resetting to !0? */ 684 if (file_entry.from.sign (ipage) = ABS) 685 & (file_entry.from.num (ipage) = 0) 686 then 687 do; 688 record_count = 0; 689 ipage = ipage + 1; 690 goto end_page_select_loop; 691 end; /**/ 692 /* do a page select pair */ 693 do from_to_ptr = addr (file_entry.from (ipage)), 694 addr (file_entry.to (ipage)); 695 696 if from_to.sign = NEG_REL /* is this a $-n type? */ 697 then 698 do; 699 page_selected = pagelist_last - from_to.num; 700 701 if (page_selected < 0) 702 then 703 do; 704 call command_query_ (addr (query_info), answer, me, 705 "File ^a: ^a < BOF. Use first page?", file_entry.file, 706 from_to.id); 707 if (answer ^= "yes") 708 then error_sw = "1"b; 709 page_selected = 1; 710 end; 711 end; /**/ 712 /* need to search for page id? */ 713 else if (from_to.sign = SEARCH_ID) 714 then 715 do; 716 page_selected = record_count; 717 do j = record_count + pagelist_base 718 to pagelist_last + pagelist_base 719 while (from_to.id ^= pagelist.id (j)); 720 end; 721 722 if j > pagelist_last + pagelist_base 723 then 724 do; 725 call com_err_ (0, me, "Page ""^a"" not found in ^a", 726 from_to.id, file_entry.file); 727 error_sw = "1"b; 728 end; 729 730 else page_selected = j - pagelist_base; 731 end; 732 733 else 734 do; 735 page_selected = from_to.num; 736 /* is this +n form */ 737 if (from_to.sign = POS_REL) 738 then page_selected = page_selected + record_count; 739 if (page_selected > pagelist_last) 740 then 741 do; 742 call command_query_ (addr (query_info), answer, me, 743 "File ^a: ^a > EOF. Use last page?", file_entry.file, 744 from_to.id); 745 if (answer ^= "yes") 746 then error_sw = "1"b; 747 page_selected = pagelist_last - 1; 748 end; 749 end; 750 751 from_to.num, record_count = page_selected; 752 from_to.sign = ABS; /* now we know where we are */ 753 end; 754 755 if (file_entry.from.num (ipage) > file_entry.to.num (ipage)) 756 then 757 do; 758 call command_query_ (addr (query_info), answer, me, 759 "File ^a: from_value ""^a"" (!^i) > to_value ""^a"" (!^i). 760 Do you wish to ignore specification?", file_entry.file, 761 file_entry.from.id (ipage), file_entry.from.num (ipage), 762 file_entry.to.id (ipage), file_entry.to.num (ipage)); 763 if (answer = "no") 764 then error_sw = "1"b; 765 file_entry.to.num (ipage), file_entry.from.num (ipage) = 0; 766 end; 767 768 if file_entry.pgc /* looking for changed pages? */ 769 then 770 do; 771 772 /* obverse needs to be handled here, too. */ 773 774 do page_selected = file_entry.from.num (ipage) + pagelist_base 775 to file_entry.to.num (ipage) + pagelist_base; 776 if pagelist.changed (page_selected) 777 | pagelist.obv_changed (page_selected) 778 then 779 do; 780 pagelist.select (page_selected) = "1"b; 781 file_entry.page_count = file_entry.page_count + 1; 782 end; 783 end; 784 end; 785 786 else 787 do page_selected = file_entry.from.num (ipage) + pagelist_base 788 to file_entry.to.num (ipage) + pagelist_base; 789 pagelist.select (page_selected) = "1"b; 790 file_entry.page_count = file_entry.page_count + 1; 791 end; 792 793 end_page_select_loop: 794 end page_select_loop; 795 end file_loop_2; 796 797 if dt_sw 798 then 799 do; 800 call ioa_ ("START ***"); 801 802 filno = 0; 803 do file_entry_ptr = file_entry_base_ptr (1) 804 repeat (file_entry.link) while (file_entry_ptr ^= null ()); 805 806 filno = filno + 1; 807 call ioa_ ("pagendx=^i:^i file=^a", pagelist.file (filno).from, 808 pagelist.file (filno).to, pagelist.file (filno).name); 809 810 do i = pagelist.file (filno).from to pagelist.file (filno).to; 811 call ioa_ ("^[*^; ^]^5i ""^a""^[ CHANGED^]^[ FRONT^]^[ BLANK^]", 812 pagelist.page (i).select, i, pagelist.page (i).id, 813 pagelist.page (i).changed, pagelist.page (i).front, 814 pagelist.page (i).blank); 815 end; 816 end; 817 end; 818 819 af_data_ptr = null (); /* give back the seg we borrowed */ 820 821 if comment_sw | setup_sw 822 then goto finish; 823 824 if (max_records ^= 0) 825 then max_outrecs = max_records; 826 827 if (output_medium = PUNCH) 828 then 829 do; 830 call build_contents; 831 832 if ^table_sw 833 then call ioa_ ("Information to be punched:^/^a", contents); 834 835 skip_pref_sw = "0"b; 836 837 if (mode = "punch 6") 838 then 839 do; 840 if debug_sw | display_sw 841 then put_out = put_online; 842 else put_out = put_punch; 843 end; 844 845 else 846 do; 847 no_handle: 848 call com_err_ (0, me, "Dont know how to handle ""^a""", mode); 849 error_sw = "1"b; 850 end; 851 end; 852 853 else if (output_medium = TAPE) 854 then 855 do; 856 call build_contents; 857 858 if ^table_sw 859 then call ioa_ ("^/Contents file:^/^20(-^)^/^a^20(-^)", contents); 860 861 if contents_seg_sw 862 then 863 begin; 864 dcl hcs_$make_seg entry (char (*), char (*), char (*), 865 fixed bin (5), ptr, fixed bin (35)); 866 dcl get_wdir_ entry () returns (char (168)); 867 dcl seg_p ptr; 868 dcl seg char (length (contents)) based (seg_p); 869 dcl hcs_$truncate_seg 870 entry (ptr, fixed bin (19), fixed bin (35)); 871 dcl hcs_$terminate_noname 872 entry (ptr, fixed bin (35)); 873 dcl hcs_$set_bc_seg 874 entry (ptr, fixed bin (24), fixed bin (35)); 875 876 call hcs_$make_seg (get_wdir_ (), volid || ".contents", "", 01010b, 877 seg_p, code); 878 if (seg_p = null ()) 879 then call com_err_ (code, me, "^a>^a.contents", get_wdir_ (), 880 volid); 881 882 else 883 do; 884 call hcs_$truncate_seg (seg_p, 885 divide (length (contents), 4, 19, 0), code); 886 seg = contents; 887 call hcs_$set_bc_seg (seg_p, length (contents) * 9, code); 888 call hcs_$terminate_noname (seg_p, code); 889 end; 890 end; 891 892 skip_pref_sw = "0"b; 893 vol_file_ct = 0; 894 895 if debug_sw | display_sw 896 then put_out = put_online; 897 else put_out = put_tape; 898 end; 899 900 else 901 do; 902 output_medium = ONLINE; 903 904 if debug_sw | display_sw 905 then put_out = put_online; 906 end; 907 908 if error_sw 909 then 910 do; 911 call ioa_ ("An error has occurred, no output will be produced."); 912 913 if dt_sw 914 then signal condition (pco_error); 915 916 goto finish; 917 end; 918 919 if (device_cleanup ^= "") & (output_medium = ONLINE) & ^debug_sw 920 & ^display_sw /* cleanup if QUIT during ONLINE */ 921 then on condition (quit) 922 begin; 923 call set_rawo; 924 call iox_$put_chars (iox_$user_output, 925 addrel (addr (device_cleanup), 1), length (device_cleanup), 926 code); 927 call reset_rawo; 928 call continue_to_signal_ (code); 929 end; 930 931 /* Now all validity checking is done; go thru the list and get all the */ 932 /* pages wanted. */ 933 934 preface = ""; 935 filno = 1; 936 937 file_loop_3: 938 do file_entry_ptr = file_entry_base_ptr (1) repeat (file_entry.link) 939 while (file_entry_ptr ^= null ()); 940 941 if file_entry.file = "" /* if file has been discarded */ 942 then goto end_file_loop_3; 943 944 if ^open_compout () /* cant open compout? skip it */ 945 then goto end_file_loop_3; 946 947 if dump_sw & header_sw /* if file is being dumped */ 948 then 949 do; 950 call /* header label */ 951 ioa_ ("^/Record 0 ^i(^o)8 bytes", record_len, record_len); 952 953 if ^brief_sw 954 then call /* header contents */ 955 dump_segment_ (iox_$user_output, fileheader_ptr, 0, 0, 956 divide (record_len + 3, 4, 17, 0), format); 957 end; 958 959 if table_sw /* making a table? */ 960 then call ioa_ ("-pathname ^a -pages", file_entry.ename); 961 962 if display_sw & ^brief_sw /* display header */ 963 then call ioa_ (" ** From file: ^a", file_entry.file); 964 /* if actually writing the file */ 965 if ^(display_sw | dump_sw | table_sw) 966 then if cpwf_sw & fileheader.version < filedata_version_4 967 then 968 do; 969 call com_err_ (error_table_$unimplemented_version, me, 970 "^/^5x The -cpwf option cant be used with ^a", 971 file_entry.file); 972 goto end_file_loop_3; 973 end; 974 975 if file_entry.wait /* wait for a NL before starting */ 976 then call sync (begin_file); 977 978 begin_file: 979 wheel_need = "0"b; 980 reprint_file: 981 pagelist_base = pagelist.file (filno).from - 1; 982 text_pages, record_count, output_text_len = 0; 983 first_pref_sw = "1"b; 984 done, wheel_done = "0"b; 985 ipage = 1; 986 987 record_loop_2: 988 do while (^done); /* read all records in this file */ 989 if file_entry.from.num (ipage) = 0 990 then /* if no (more) pages for this file */ 991 do; /* rewind it */ 992 call iox_$position (input_iocbp, BOF, 0, code); 993 goto next_file; 994 end; 995 996 record_count = record_count + 1;/* count the record */ 997 /* need to be further down file */ 998 if file_entry.from.num (ipage) > record_count 999 then 1000 do; 1001 record_count = file_entry.from.num (ipage); 1002 call iox_$position (input_iocbp, BOF, 0, code); 1003 if code = 0 1004 then call iox_$position (input_iocbp, FSPREC, record_count, code); 1005 end; 1006 1007 if code = 0 1008 then call iox_$read_record (input_iocbp, record_ptr, 262144, 1009 record_len, code); 1010 if code ^= 0 1011 then 1012 do; 1013 if code ^= error_table_$end_of_info 1014 then call com_err_ (code, me, "Reading ^a", file_entry.file); 1015 goto end_file_loop_3; 1016 end; 1017 1018 if file_entry.pgc & record.changed | ^file_entry.pgc 1019 then 1020 do; 1021 if debug_sw 1022 then call ioa_ ("text: record ^i length=^i", record_count, 1023 record_len); /**/ 1024 /* erase any trailing garbage */ 1025 (nostrg): 1026 substr (raw_record, record_len + 1, 8) = NULs; 1027 1028 reprint: /* calculate record word count */ 1029 record_wrdct = divide (record_len + 3, 4, 17, 0); 1030 /* adjust for size of record header */ 1031 record_hdrct = size (record) - 1; 1032 record_wrdct = record_wrdct - record_hdrct; 1033 1034 if dump_sw 1035 then 1036 do; 1037 call ioa_ ("^/Record ^i ^i(^o)8 bytes", record_count, 1038 record_len, record_len); 1039 1040 if ^brief_sw 1041 then call dump_segment_ (iox_$user_output, record_ptr, 0, 0, 1042 record_hdrct, format); 1043 end; 1044 1045 start_page_sw, next_image = "1"b; 1046 /* start at top of page */ 1047 image_loop: 1048 do page_record_ptr = addr (record.page_record) 1049 repeat (addr (page_record.nextref)) 1050 while (next_image ^= "0"b); 1051 1052 if (table_sw & debug_sw) | dump_sw 1053 then call ioa_ ("^5x^[ HALT^]^[ 2^]^[ 3^]^[ .wt^]^[ preface^]" 1054 || "^[ id_preface^]^[ pwhl=^d^] ^i(^o)8 bytes", 1055 page_record.halt, page_record.halt2, page_record.halt3, 1056 page_record.halt4, page_record.preface, 1057 page_record.id_preface, (page_record.pwheel > 0), 1058 page_record.pwheel, page_record.leng, page_record.leng) 1059 ; 1060 1061 page_wrdct = divide (page_record.leng + 3, 4, 17, 0) + 2; 1062 record_wrdct = record_wrdct - page_wrdct; 1063 1064 if (record_wrdct < 0) 1065 then 1066 do; 1067 call ioa_ ("Record length error, ^i", record_wrdct); 1068 record_wrdct = -record_wrdct; 1069 end; 1070 1071 /* if page_record.pad ^= "0"b 1072*/* then call ioa_ ("Record screwed up!");*/ 1073 1074 else if dump_sw 1075 then call dump_segment_ (iox_$user_output, page_record_ptr, 0, 0, 1076 page_wrdct, format); 1077 1078 if page_record.pwheel > 0 1079 then substr (wheel_need, page_record.pwheel, 1) = "1"b; 1080 1081 if (dump_sw & debug_sw) | ^(table_sw | dump_sw) 1082 then 1083 do; 1084 do_debug_too: 1085 if page_record.preface/* is this a preface? */ 1086 then 1087 do; 1088 if first_pref_sw /* first one? */ 1089 then if skip_pref_sw 1090 /* be sure its skipped */ 1091 then preface = page_record.text; 1092 /* be sure its used */ 1093 else preface = ""; 1094 end; /**/ 1095 /* an ID preface? */ 1096 else if page_record.id_preface 1097 then 1098 do; 1099 if first_pref_sw 1100 then goto add_string; 1101 end; 1102 1103 else first_pref_sw = "0"b; 1104 /**/ 1105 /* record text or new preface? */ 1106 if ^page_record.preface | (page_record.text ^= preface) 1107 then 1108 do; 1109 add_string: /* writing text online? */ 1110 if (output_medium = ONLINE) & ^(debug_sw | display_sw) 1111 then 1112 do; 1113 if ^cpwf_sw 1114 then 1115 do; 1116 call set_rawo; 1117 /* pwheel change? */ 1118 if page_record.pwheel > 0 1119 & page_record.pwheel ^= mounted_wheel 1120 then call change_pwheel ((page_record.pwheel)); 1121 call /* write the text */ 1122 iox_$put_chars (iox_$user_output, 1123 addr (page_record.text), (page_record.leng), 1124 code); 1125 /**/ 1126 /* midpage wait? */ 1127 if page_record.halt4 1128 then 1129 do; 1130 call iox_$control (iox_$user_input, 1131 "resetread", null (), code); 1132 call iox_$get_line (iox_$user_input, 1133 addr (stop_bfr), 80, argl, code); 1134 end; 1135 start_page_sw = "0"b; 1136 end; /**/ 1137 end; 1138 1139 else if display_sw 1140 then 1141 do; 1142 output_text_len = output_text_len + page_record.leng; 1143 substr (output_text, 1144 output_text_len - page_record.leng + 1, 1145 page_record.leng) = page_record.text; 1146 end; 1147 1148 else 1149 do; 1150 if start_page_sw 1151 /* at top of page? */ 1152 then 1153 do; 1154 start_page_sw = "0"b; 1155 /* record limit for this file? */ 1156 if text_pages = max_outrecs & max_outrecs > 0 1157 then 1158 do; /* have to cleanup? */ 1159 if device_cleanup ^= "" 1160 & output_medium = ONLINE 1161 & ^(debug_sw | display_sw) 1162 then 1163 do; 1164 output_text_len = 1165 output_text_len 1166 + length (device_cleanup); 1167 substr (output_text, 1168 output_text_len 1169 - length (device_cleanup) + 1, 1170 length (device_cleanup)) = 1171 device_cleanup; 1172 end; 1173 1174 call put_out (END); 1175 text_pages = 1; 1176 output_text_len = 0; 1177 end; 1178 else text_pages = text_pages + 1; 1179 1180 output_text_len = 1181 output_text_len + page_record.leng; 1182 substr (output_text, 1183 output_text_len - page_record.leng + 1, 1184 page_record.leng) = page_record.text; 1185 end; 1186 1187 if output_text_len = 0 1188 then call put_out (BEGIN); 1189 end; 1190 end; 1191 1192 /**** dcls */ 1193 if page_record.preface 1194 then preface = page_record.text; 1195 end; 1196 1197 next_image = page_record.nextref; 1198 end image_loop; 1199 1200 if (text_pages = max_outrecs) 1201 /* if record was just filled, ensure */ 1202 then first_pref_sw = "1"b; /* that prefix included on next one */ 1203 1204 if table_sw | debug_sw 1205 then 1206 do; 1207 this_page = record_count + pagelist_base; 1208 if pagelist.no_front (this_page) 1209 then call ioa_ ("^-/* blank front not supplied */"); 1210 call ioa_ ("^[^/^8i Page: ^;^s^]!^i^-/*^[ BLANK^]^-^[FRONT^]^-" 1211 || "^a^[^-CHANGED^] */", debug_sw, record_len, 1212 record_count, record.blank, record.front, record.pageid, 1213 record.changed); 1214 if pagelist.no_back (this_page) 1215 then call ioa_ ("^-/* blank back not supplied */"); 1216 end; 1217 1218 if ^table_sw 1219 then if file_entry.stop 1220 then 1221 do; 1222 wait: 1223 call sync (reprint); 1224 end; 1225 if (record_count = file_entry.to.num (ipage)) 1226 then 1227 do; 1228 next_file: 1229 ipage = ipage + 1; 1230 if (ipage > file_entry.page_sel_ct) 1231 then done = "1"b; 1232 end; 1233 end; /**/ 1234 /* assure the left margin */ 1235 /**** call iox_$put_chars (iox_$user_output, addr (CR), 1, code);*/ 1236 end record_loop_2; /**/ 1237 end_file_loop_3: 1238 if rawo_sw 1239 then call reset_rawo; 1240 1241 if output_text_len > 0 /* anything pending on output record */ 1242 then 1243 do; 1244 if (device_cleanup ^= "") & (output_medium = ONLINE) & ^debug_sw 1245 & ^display_sw 1246 then 1247 do; 1248 output_text_len = output_text_len + length (device_cleanup); 1249 substr (output_text, 1250 output_text_len - length (device_cleanup) + 1, 1251 length (device_cleanup)) = device_cleanup; 1252 end; 1253 1254 call put_out (END); 1255 end; 1256 1257 if ^cpwf_sw 1258 then 1259 do; 1260 substr (wheel_done, mounted_wheel, 1) = "1"b; 1261 i = index (wheel_need & ^wheel_done, "1"b); 1262 end; /**/ 1263 1264 call close_compout (); 1265 1266 end file_loop_3; 1267 finish: 1268 if ^debug_sw & ^display_sw 1269 then 1270 do; 1271 if output_medium ^= ONLINE 1272 then call ioa_ ("process_compout: Tape complete."); 1273 else call iox_$put_chars (iox_$user_output, addr (CRLF), 2, code); 1274 end; 1275 1276 call clean; 1277 return; 1278 1279 af_proc: 1280 proc (str) returns (char (500) var); 1281 1282 dcl str char (200) var; 1283 1284 dcl res char (500) var; 1285 dcl setupX char (256) var; 1286 dcl (i, j) fixed bin (21); 1287 1288 i = search (str, "|["); /* see if any potential AFs */ 1289 if (i > 0) & ((output_medium = TAPE) | long_sw) 1290 /* and do we even care */ 1291 then 1292 do; 1293 res = ""; /* start out clean */ 1294 j = 1; 1295 do while (i ^= 0); 1296 res = res || substr (str, j, i - 1); 1297 /* copy in-between stuff */ 1298 j = j + i - 1; /* and skip over it */ 1299 if (substr (str, j, 1) = "[") /* is it a valid AF call */ 1300 | (substr (str, j, 2) = "|[") | (substr (str, j, 3) = "||[") 1301 then 1302 do; /* yes, go get it expanded */ 1303 call evaluate_af_ (substr (str, j), i2, setupX, code); 1304 if (code ^= 0) 1305 then 1306 do; 1307 call com_err_ (code, me, "Evaluating ""^a"".", 1308 substr (str, j)); 1309 error_sw = "1"b; 1310 end; 1311 end; 1312 else 1313 do; /* no, just use up a single char */ 1314 setupX = substr (str, j, 1); 1315 i2 = 1; 1316 end; 1317 res = res || setupX; /* add the result to the output */ 1318 j = j + i2; 1319 i = search (substr (str, j), "|["); 1320 /* see if there's another */ 1321 if (i = 0) /* if not, copy the rest over */ 1322 then res = res || substr (str, j); 1323 end; 1324 end; 1325 else 1326 do; 1327 err_exit: 1328 res = str; 1329 end; 1330 return (res); 1331 1332 end af_proc; 1333 1334 build_contents: 1335 proc; 1336 contents_l = 0; 1337 contents = ""; 1338 1339 if (setup ^= "") & (^display_sw | long_sw) 1340 then contents = contents || setup || CRLF; 1341 1342 contents = contents || "Directory of files,"; 1343 1344 if (output_medium = TAPE) 1345 then contents = contents || " on tape,"; 1346 1347 contents = contents || " by file number" || CRLF; 1348 contents = contents || " # --- pageids present ---"; 1349 1350 if contents_tap_sw 1351 then 1352 do; 1353 contents = contents || CRLF; 1354 contents = contents || " 0 "; 1355 end; 1356 contents = contents || CRLF; /* end of contents header */ 1357 1358 filno = 0; /* get file contents info */ 1359 do file_entry_ptr = file_entry_base_ptr (1) repeat (file_entry.link) 1360 while (file_entry_ptr ^= null ()); 1361 if (file_entry.file ^= "") 1362 then 1363 do; 1364 record_count = 0; 1365 filno = filno + 1; 1366 pagelist_base = pagelist.file (filno).from - 1; 1367 1368 contents = contents || "Document: "; 1369 contents = contents || before (file_entry.ename, ".compout"); 1370 contents = contents || CRLF; 1371 1372 do ipage = 1 to file_entry.page_sel_ct; 1373 do i = file_entry.from.num (ipage) + pagelist_base 1374 to file_entry.to.num (ipage) + pagelist_base; 1375 1376 if pagelist.select (i) /* want this page? */ 1377 then 1378 do; 1379 if pagelist.no_front (i) 1380 then 1381 do; 1382 contents = contents || " blank front not supplied"; 1383 contents = contents || CRLF; 1384 end; 1385 1386 if (record_count = 0) 1387 then 1388 do; 1389 contents_l = contents_l + 1; 1390 contents = contents || convert (toch_ndx, contents_l); 1391 end; 1392 else contents = contents || " "; 1393 record_count = record_count + 1; 1394 if (record_count = max_outrecs) 1395 then record_count = 0; 1396 if pagelist.blank (i) 1397 then contents = contents || "BLANK "; 1398 else contents = contents || " "; 1399 if pagelist.front (i) 1400 then contents = contents || "FRONT "; 1401 else contents = contents || " "; 1402 contents = contents || rtrim (pagelist.id (i)); 1403 contents = contents || CRLF; 1404 if pagelist.no_back (i) 1405 then 1406 do; 1407 contents = contents || " blank back not supplied"; 1408 contents = contents || CRLF; 1409 end; 1410 end; 1411 end; 1412 end; 1413 end; 1414 1415 if debug_sw 1416 then 1417 do; /* show what has been determined */ 1418 call ioa_ ("^3i ^a (^a)", record_count, file_entry.file, 1419 file_entry.ename); 1420 call ioa_ (" seq=^i count=^i ^[PGC ^]^[OBV ^]^[SP ^]^[WT ^]", 1421 file_entry.seq_no, file_entry.page_count, file_entry.pgc, 1422 file_entry.obverse, file_entry.stop, file_entry.wait); 1423 do i = 1 to file_entry.page_sel_ct; 1424 call ioa_ ("^6i fm ""^1a"" ^i ""^a""", i, file_entry.from (i).sign, 1425 file_entry.from (i).num, file_entry.from (i).id); 1426 call ioa_ ("^6x to ""^1a"" ^i ""^a""", file_entry.to (i).sign, 1427 file_entry.to (i).num, file_entry.to (i).id); 1428 end; 1429 end; 1430 end; 1431 1432 end build_contents; 1433 1434 change_pwheel: 1435 proc (wheel); 1436 1437 /* PARAMETERS */ 1438 1439 dcl wheel fixed bin; /* wheel needed */ 1440 /* LOCAL STORAGE */ 1441 1442 dcl change_signal char (128); 1443 1444 if nobell_sw 1445 then change_signal = copy (PADHT, wheel); 1446 else change_signal = copy (BELHT, wheel); 1447 1448 call iox_$control (iox_$user_input, "resetread", null (), code); 1449 call iox_$put_chars (iox_$user_output, addr (change_signal), 2 * wheel, 1450 code); 1451 call iox_$get_line (iox_$user_input, addr (stop_bfr), 80, 0, code); 1452 call iox_$put_chars (iox_$user_output, addr (stop_signal), 5, code); 1453 call iox_$get_line (iox_$user_input, addr (stop_bfr), 80, 0, code); 1454 1455 end change_pwheel; 1456 1457 gather_cons: 1458 proc (str, where); 1459 dcl str char (*), 1460 where char (*) var; 1461 1462 dcl (i, j) fixed bin; 1463 1464 i = 1; 1465 do while (i <= length (str)); 1466 end; 1467 1468 end gather_cons; 1469 1470 /***** PROCESS THE COMMENT STATEMENT IN THE DSM *****/ 1471 proc_comment: 1472 proc; /**/ 1473 /* the Comment statement */ 1474 dcl comment char (l_comment) based (comment_ptr); 1475 dcl comment_ptr ptr; 1476 dcl j fixed bin; /* working index */ 1477 dcl mode_list char (256) var; /**/ 1478 /* available options */ 1479 dcl option (9) char (16) var int static options (constant) 1480 init ("mode:", "leader:", "setup:", "pack:", "DB:", 1481 "blkhdr:", "blktlr:", "file:", "content_file:"); 1482 dcl option_line char (200) var; /* option line from comment */ 1483 dcl option_ndx fixed bin; /* option list index */ 1484 dcl scan_ndx fixed bin; /* comment string scan index */ 1485 /* point to the Comment statement */ 1486 l_comment = fileheader.comment_leng; 1487 comment_ptr = addr (fileheader.comment); 1488 1489 if comment_sw /* just print the Comment? */ 1490 then 1491 do; 1492 call ioa_ ("^/ ** From file ^a^/^a", file_entry.file, 1493 before (comment, NL || "DB:")); 1494 return; 1495 end; 1496 1497 if debug_sw 1498 then call ioa_ ("^a", rtrim (rtrim (comment), NL)); 1499 1500 mode_list = ""; 1501 scan_ndx = 1; 1502 scan_comment: /* scan comment for option keywords */ 1503 do while (scan_ndx < length (comment)); 1504 /* run thru option list */ 1505 do option_ndx = 1 to hbound (option, 1); 1506 if index (substr (comment, scan_ndx), option (option_ndx)) = 1 1507 then 1508 do; /* found one; step over the keyword */ 1509 scan_ndx = scan_ndx + length (option (option_ndx)); 1510 /* extract the option 'value' */ 1511 option_line = before (substr (comment, scan_ndx), NL); 1512 goto opt_rtn (option_ndx); /* go process the option */ 1513 end; 1514 end; /**/ 1515 /* no (more) options */ 1516 if mode_arg = "" /* if taking default mode */ 1517 & scan_ndx = 1 /* and first line is not a keyword, */ 1518 & index (comment, TAPE) = 1 /* assume its old style */ 1519 then 1520 do; 1521 mode = before (comment, NL); 1522 if debug_sw 1523 then call ioa_ ("mode(old style)= ^a", mode); 1524 end; 1525 1526 opt_rtn_end: /* all opt_rtn (*) return here */ 1527 /* step over option 'value' */ 1528 j = index (substr (comment, scan_ndx), NL); 1529 if j = 0 /* if last option */ 1530 then scan_ndx = length (comment); 1531 else scan_ndx = scan_ndx + j; 1532 end scan_comment; 1533 1534 if mode = "" /* if no mode after all that */ 1535 then 1536 do; 1537 if mode_arg ^= "" /* if not taking the default mode */ 1538 then 1539 do; 1540 if mode_list = "" /* shoot! none defined in the compout */ 1541 then mode_list = "..(file defines NONE)"; 1542 /* mode requested not defined */ 1543 call /* find out what to do */ 1544 com_err_ (0, me, 1545 "Mode ""^a"" is not defined in file ^a." 1546 || "^/^2xThese are defined: ^a^/^2xUse mode ? to see " 1547 || "details of these modes.", before (mode_arg, ":"), 1548 file_entry.file, substr (mode_list, 3)); 1549 error_sw = "1"b; 1550 end; 1551 else mode = ONLINE; 1552 end; 1553 1554 /* if (debug_sw | display_sw) & (display_rtn = "") 1555*/* then 1556*/* do; 1557*/* call com_err_ (0, me, "Display routine not defined in file. ^a", 1558*/* file_entry.file); 1559*/* error_sw = "1"b; 1560*/* end; /**/ 1561 /* check zero length record */ 1562 if fileheader.recleng = 0 1563 then 1564 do; 1565 call com_err_ (0, me, "File ^a (device ^a) has recleng = 0.", 1566 file_entry.file, fileheader.device); 1567 error_sw = "1"b; 1568 end; 1569 else record_bytes = min (record_bytes, fileheader.recleng); 1570 1571 if (output_medium = TAPE) | (output_medium = PUNCH) | display_sw 1572 then 1573 do; 1574 ii = fileheader.max_pages; 1575 if (ii = 0) 1576 then 1577 do; 1578 call com_err_ (0, me, "File ^a (device ^a) has max_pages = 0.", 1579 file_entry.file, fileheader.device); 1580 error_sw = "1"b; 1581 end; 1582 else max_outrecs = min (max_outrecs, ii); 1583 end; 1584 1585 return; 1586 1587 opt_rtn (1): /* mode: */ 1588 dcl temp char (32) var; 1589 if mode_sw /* just print the modes? */ 1590 then 1591 do; 1592 call ioa_ ("^a", option_line); 1593 goto opt_rtn_end; 1594 end; 1595 1596 temp = before (option_line, "="); /* copy the 1st mode */ 1597 if temp = "" 1598 then 1599 do; 1600 call com_err_ (0, me, "Missing modename in ^a^/^-^a", file_entry.file, 1601 option_line); 1602 error_sw = "1"b; 1603 end; 1604 1605 else if ^(display_sw | dump_sw) 1606 then 1607 do; 1608 mode_list = mode_list || ", "; 1609 mode_list = mode_list || temp; 1610 i = length (temp) + 1; 1611 if (mode = "") 1612 then 1613 do; 1614 if (mode_arg = "") | (temp = mode_arg) 1615 then 1616 do; 1617 mode_name = temp; 1618 mode_unproc = option_line; 1619 mode = af_proc (after (option_line, "=")); 1620 output_medium = substr (mode, 1, 4); 1621 if debug_sw 1622 then call ioa_ ("mode= ^a", mode); 1623 end; 1624 end; 1625 else if (temp = mode_name) & (mode_unproc ^= option_line) 1626 then 1627 do; 1628 call com_err_ (0, me, "Mode mismatch:^/ ^a (^a)^/ ^a (^a)", 1629 option_line, file_entry.file, mode_unproc, 1630 file_entry_base_ptr (1) -> file_entry.file); 1631 error_sw = "1"b; 1632 return; 1633 end; 1634 end; 1635 goto opt_rtn_end; /* finished with this case */ 1636 1637 opt_rtn (2): /* leader: */ 1638 leader = af_proc (option_line); 1639 goto opt_rtn_end; /* finished with this case */ 1640 1641 opt_rtn (3): /* setup: */ 1642 if setup_sw 1643 then call ioa_ ("^a", option_line); 1644 else if (debug_sw | (output_medium ^= ONLINE) | long_sw) 1645 & (file_entry_ptr = file_entry_base_ptr (1)) 1646 then 1647 do; /* only for first file */ 1648 setup = setup || af_proc (option_line); 1649 setup = setup || CRLF; 1650 end; 1651 goto opt_rtn_end; /* finished with this case */ 1652 1653 opt_rtn (5): /* DB: */ 1654 if debug_sw | display_sw /* either -db or -display was given */ 1655 then 1656 do; 1657 call hcs_$make_ptr (codeptr (here), 1658 rtrim (fileheader.device) || ".comp_dsm", 1659 rtrim (fileheader.device) || ".dvt", const.dvidptr, code); 1660 if code ^= 0 1661 then 1662 do; 1663 call com_err_ (code, me, "Making a pointer to ^a$^a", 1664 rtrim (fileheader.device) || ".comp_dsm", 1665 rtrim (fileheader.device) || ".dvt"); 1666 error_sw = "1"b; 1667 end; 1668 const.devptr = pointer (const.dvidptr, comp_dvid.dvt_r); 1669 1670 /* call hcs_$make_entry (codeptr (here), 1671*/* rtrim (fileheader.device) || "_writer_", "display", 1672*/* comp_dvt.displayproc, code); 1673*/* if code ^= 0 1674*/* then 1675*/* do; 1676*/* call com_err_ (code, me, 1677*/* "Setting comp_dvt.displayproc to ^a_writer_$display", 1678*/* rtrim (fileheader.device)); 1679*/* error_sw = "1"b; 1680*/* end;*/ 1681 1682 /* call hcs_$make_entry (null (), before (display_rtn, "$"), "init", 1683*/* init_proc, code); 1684*/* if code ^= 0 1685*/* then 1686*/* do; 1687*/* call com_err_ (code, me, "^a$init", before (display_rtn, "$")); 1688*/* error_sw = "1"b; 1689*/* end;*/ 1690 end; 1691 goto opt_rtn_end; /* finished with this case */ 1692 1693 opt_rtn (8): /* file: */ 1694 if debug_sw | long_sw | (output_medium ^= ONLINE) & ^(display_sw | dump_sw) 1695 then 1696 do; 1697 setup = setup || af_proc (option_line); 1698 setup = setup || CRLF; 1699 end; 1700 goto opt_rtn_end; /* finished with this case */ 1701 1702 dcl setting bit (1); 1703 opt_rtn (9): /* content_file: */ 1704 if ^display_sw & vol_sw 1705 then 1706 do; 1707 i = 1; 1708 do while (i < length (option_line)); 1709 if (substr (option_line, i, 1) = "^") 1710 then 1711 do; 1712 i = i + 1; 1713 setting = "0"b; 1714 end; 1715 else setting = "1"b; 1716 if (substr (option_line, i, 3) = "seg") 1717 then 1718 do; 1719 contents_seg_sw = setting; 1720 i = i + 3; 1721 end; 1722 else if (substr (option_line, i, 4) = TAPE) 1723 then 1724 do; 1725 contents_tap_sw = setting; 1726 i = i + 4; 1727 end; 1728 else 1729 do; 1730 call com_err_ (0, me, "Invalid content_file option. ^a", 1731 option_line); 1732 error_sw = "1"b; 1733 end; 1734 1735 if substr (option_line, i, 1) = "," 1736 then i = i + 1; 1737 end; 1738 end; 1739 1740 goto opt_rtn_end; 1741 1742 opt_rtn (6): /* blkhdr:*/ 1743 call gather_cons (af_proc (option_line), text_cons (1)); 1744 goto opt_rtn_end; /* finished with this case */ 1745 1746 opt_rtn (7): /* blktlr: */ 1747 call gather_cons (af_proc (option_line), text_cons (2)); 1748 goto opt_rtn_end; /* finished with this case */ 1749 1750 opt_rtn (4): /* pack: */ 1751 done = "0"b; 1752 option_line = af_proc (option_line); 1753 packi = 1; 1754 do while (^done); 1755 pack_ct = pack_ct + 1; 1756 pack.cct (pack_ct) = 0; 1757 pack.con (pack_ct) = "0"b; 1758 it = index ("""cfb", substr (option_line, packi, 1)); 1759 if (it = 0) 1760 then 1761 do; 1762 bad_pack: 1763 call com_err_ (0, me, "Syntax error in pack: statement. ^a", 1764 file_entry.file); 1765 error_sw = "1"b; 1766 goto done_pack; 1767 end; 1768 pack.type (pack_ct) = it; 1769 if (it = 1) 1770 then 1771 do; 1772 con_pack: 1773 packi = packi + 1; 1774 if (substr (option_line, packi, 1) ^= """") 1775 then 1776 do; 1777 pack.cct (pack_ct) = pack.cct (pack_ct) + 1; 1778 if (substr (option_line, packi, 01) = "0") 1779 then goto con_pack; 1780 if (substr (option_line, packi, 1) ^= "1") 1781 then goto bad_pack; 1782 substr (pack.con (pack_ct), pack.cct (pack_ct), 1) = "1"b; 1783 goto con_pack; 1784 end; 1785 end; 1786 else 1787 do; 1788 packi = packi + 1; 1789 pack.cct (pack_ct) = 1790 index ("123456789", substr (option_line, packi, 1)); 1791 if (pack.cct (pack_ct) = 0) 1792 then goto bad_pack; 1793 if (it = 4) 1794 then pack.cct (pack_ct) = -pack.cct (pack_ct); 1795 end; 1796 packi = packi + 1; 1797 if (substr (option_line, packi, 1) = ";") 1798 then 1799 do; 1800 pack_ct = pack_ct + 1; 1801 pack.type (pack_ct) = 5; 1802 end; 1803 else if (substr (option_line, packi, 1) ^= ",") 1804 then goto bad_pack; 1805 packi = packi + 1; 1806 if (packi > length (option_line)) 1807 then done = "1"b; 1808 end; 1809 j = 0; 1810 do packi = 1 to pack_ct; 1811 if pack.type (packi) < 3 1812 then j = j + pack.cct (packi); 1813 end; 1814 if (mod (j, 8) ^= 0) 1815 then 1816 do; 1817 call com_err_ (0, me, "pack: length not a multiple of 8", 1818 file_entry.file); 1819 error_sw = "1"b; 1820 end; 1821 done_pack: 1822 goto opt_rtn_end; /* finished with this case */ 1823 1824 end proc_comment; 1825 1826 sync: /* routine to synchronize printing */ 1827 proc (redo); /* with user's paper handling */ 1828 1829 dcl redo label; /* transfer label */ 1830 1831 dcl reprint_sw bit (1); 1832 dcl current_modes char (256); 1833 1834 reprint_sw = "0"b; 1835 1836 wait: 1837 call iox_$control (iox_$user_input, "resetread", null (), code); 1838 call iox_$modes (iox_$user_output, "rawo,rawi", current_modes, code); 1839 1840 if device_cleanup ^= "" 1841 then call iox_$put_chars (iox_$user_output, 1842 addrel (addr (device_cleanup), 1), length (device_cleanup), code) 1843 ; 1844 1845 call iox_$put_chars (iox_$user_output, addr (stop_signal), 5, code); 1846 call iox_$get_line (iox_$user_input, addr (stop_bfr), 10, argl, code); 1847 call iox_$modes (iox_$user_output, current_modes, "", code); 1848 1849 if argl > 1 1850 then 1851 do; 1852 if substr (stop_bfr, 1, 1) = "q" 1853 then goto finish; 1854 if substr (stop_bfr, 1, 1) = "r" 1855 then 1856 do; 1857 reprint_sw = "1"b; 1858 goto wait; 1859 end; 1860 end; 1861 if reprint_sw 1862 then goto redo; 1863 1864 end sync; 1865 1866 /* open a compout file for reading */ 1867 open_compout: 1868 proc returns (bit (1)); 1869 1870 dcl SEQUENTIAL_INPUT 1871 fixed bin static options (constant) init (4); 1872 dcl STREAM_INPUT fixed bin static options (constant) init (1); 1873 1874 dcl error_table_$bad_file 1875 fixed bin (35) ext static; 1876 dcl error_table_$improper_data_format 1877 fixed bin (35) ext static; 1878 1879 dcl iox_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), 1880 fixed bin (35)); 1881 1882 if file_entry.file = "" /* if this file is to be skipped */ 1883 then return ("0"b); 1884 1885 call /* attach and open the file */ 1886 iox_$attach_name ("pco_", input_iocbp, "vfile_ " || file_entry.file, 1887 null (), code); 1888 if code = 0 1889 then call iox_$open (input_iocbp, SEQUENTIAL_INPUT, "0"b, code); 1890 if code ^= 0 1891 then 1892 do; /* if not a proper structured file */ 1893 if code = error_table_$bad_file 1894 then 1895 do; /* try to open as a stream file */ 1896 call iox_$open (input_iocbp, STREAM_INPUT, "0"b, code); 1897 if code = 0 /* opened OK, try to read it */ 1898 then 1899 do; 1900 call iox_$get_chars (input_iocbp, addr (reply_text), 1901 length (reply_text), record_len, code); 1902 if code = 0 /* read it OK, is it ASCII stuff? */ 1903 then 1904 do; 1905 if verify (substr (reply_text, 1, record_len), collate ()) 1906 = 0 1907 then /* yep */ 1908 do; 1909 call com_err_ (error_table_$improper_data_format, me, 1910 "Appears to be a stream file.^/ ^a", 1911 file_entry.file); 1912 goto err_return; 1913 end; 1914 end; 1915 end; /**/ 1916 /* put back what we had */ 1917 code = error_table_$bad_file; 1918 end; 1919 1920 call com_err_ (code, me, "Opening ^a", file_entry.file); 1921 goto err_return; 1922 end; /**/ 1923 /* read file header */ 1924 call iox_$read_record (input_iocbp, fileheader_ptr, 8192, record_len, code) 1925 ; 1926 if code = 0 1927 then 1928 do; 1929 if fileheader.version >= filedata_version_3 1930 then max_tape_files = max (max_tape_files, fileheader.max_files); 1931 1932 else if fileheader.version = filedata_version_4 1933 then page_length = fileheader.page_len; 1934 1935 else if fileheader.version ^= filedata_version_2 1936 then code = error_table_$unimplemented_version; 1937 end; 1938 1939 if code ^= 0 1940 then 1941 do; 1942 call com_err_ (code, me, "Reading header record.^/ ^a", 1943 file_entry.file); 1944 1945 err_return: 1946 call close_compout (); 1947 file_entry.file = ""; /* dont want to consider this again */ 1948 return ("0"b); 1949 end; 1950 1951 file_entry.seq_no = -1; 1952 return ("1"b); 1953 1954 end open_compout; 1955 1956 clean: 1957 proc; 1958 1959 if rawo_sw 1960 then call reset_rawo; 1961 1962 af_data_ptr = null (); 1963 if (tempsegs (1) ^= null ()) 1964 then call release_temp_segments_ (me, tempsegs, code); 1965 1966 close_compout: 1967 entry; 1968 if (input_iocbp ^= null ()) 1969 then 1970 do; 1971 call iox_$close (input_iocbp, code); 1972 call iox_$detach_iocb (input_iocbp, code); 1973 end; 1974 if (tape_iocbp ^= null ()) 1975 then 1976 do; 1977 call iox_$close (tape_iocbp, code); 1978 call iox_$detach_iocb (tape_iocbp, code); 1979 end; 1980 end clean; 1981 1982 proc_args: 1983 proc; /* process command line args */ 1984 1985 /* LOCAL STORAGE */ 1986 1987 dcl ename char (32); /* compout entryname */ 1988 dcl tp ptr; 1989 dcl system_free_p ptr int static init (null ()); 1990 dcl e_c fixed bin; 1991 dcl e_p ptr; 1992 dcl n_p ptr; 1993 dcl 1 entries (e_c) aligned based (e_p), 1994 2 type bit (2) unal, 1995 2 nnames fixed bin (15) unal, 1996 2 nindex fixed bin (17) unal; 1997 dcl names (3) char (32) based (n_p); 1998 1999 dcl error_table_$badopt 2000 fixed bin (35) ext static; 2001 2002 dcl check_star_name_$entry 2003 entry (char (*), fixed bin (35)); 2004 dcl get_system_free_area_ 2005 entry returns (ptr); 2006 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, 2007 fixed bin, ptr, ptr, fixed bin (35)); 2008 /* this initialzation code is here */ 2009 /* in precognition of the fact that */ 2010 /* proc_args will be called */ 2011 /* recursively to process lines from */ 2012 /* the yet-to-be-implemented control */ 2013 /* file feature */ 2014 if (file_entry_base_ptr (1) = null ()) 2015 /* file feature */ 2016 then file_entry_base_ptr (*), first_p, file_entry_ptr = tempsegs (2); 2017 else file_entry_base_ptr (2), first_p, file_entry_ptr = 2018 addr (file_entry.next); 2019 2020 file_entry.link = null (); 2021 file_entry.file = ""; 2022 string (file_entry.sws) = "0"b; 2023 file_entry.page_sel_ct = 1; 2024 file_entry.from.num (1) = 0; 2025 file_entry.from.id (1) = ""; 2026 file_entry.from.sign (1) = POS_REL; 2027 file_entry.to.num (1) = 0; 2028 file_entry.to.id (1) = ""; 2029 file_entry.to.sign (1) = NEG_REL; 2030 string (arg_list.asis) = "0"b; 2031 2032 do argno = 1 to argct; /* first process all control args */ 2033 if index (arg_list.arg (argno), "-") = 1 2034 then 2035 do; 2036 next_ctl_arg: /* copy to automatic */ 2037 keyword = arg_list.arg (argno); 2038 arg_list.arg (argno) = ""; /* erase it, leaving only paths */ 2039 2040 if keyword = "-block" /* blocking factor feature */ 2041 then 2042 do; /* change # pages/file */ 2043 if (argno = argct) 2044 then goto missing; 2045 2046 argno = argno + 1; 2047 max_records = convert (max_records, arg_list.arg (argno)); 2048 arg_list.arg (argno) = ""; 2049 end; /**/ 2050 /* brief output feature */ 2051 else if keyword = "-brief" | keyword = "-bf" 2052 then 2053 do; 2054 brief_sw = "1"b; 2055 long_sw = "0"b; 2056 end; /**/ 2057 /* printwheel changing feature */ 2058 else if keyword = "-change_printwheel_for_file" | keyword = "-cpwf" 2059 then cpwf_sw = "1"b; 2060 2061 else if keyword = "-change_printwheel_for_pages" | keyword = "-cpwp" 2062 then cpwf_sw = "0"b; /**/ 2063 /* print Comment: only */ 2064 else if keyword = "-comment" 2065 then 2066 do; 2067 comment_sw = "1"b; 2068 end; /**/ 2069 /* control file feature */ 2070 else if keyword = "-control_file" | keyword = "-cf" 2071 then 2072 do; 2073 if argno = argct /* must not be last */ 2074 then goto missing; 2075 2076 ctl_file_count = ctl_file_count + 1; 2077 argno = argno + 1; 2078 ctl_file (ctl_file_count) = arg_list.arg (argno); 2079 arg_list.arg (argno) = ""; 2080 end; /* debugging feature */ 2081 else if keyword = "-debug" | keyword = "-db" 2082 then 2083 do; 2084 debug_sw = "1"b; 2085 end; /* display mode */ 2086 else if keyword = "-display" | keyword = "-ds" 2087 then 2088 do; 2089 display_sw = "1"b; 2090 end; /* dump mode */ 2091 else if keyword = "-dump" 2092 then 2093 do; 2094 dump_sw = "1"b; 2095 end; /* page selection feature */ 2096 else if keyword = "-from" | keyword = "-fm" 2097 then 2098 do; 2099 from_to_ptr = addr (file_entry.from (1)); 2100 from_to_rtn: 2101 if file_entry.page_sel_ct > 1 2102 then 2103 do; 2104 error_sw = "1"b; 2105 call com_err_ (error_table_$inconsistent, me, 2106 "^a cannot be mixed with -pages", keyword); 2107 end; 2108 2109 else 2110 do; 2111 if (argno = argct) 2112 then goto missing; 2113 2114 from_to_sw = "1"b; 2115 argno = argno + 1; 2116 call from_to_proc (1, length (arg_list.arg (argno))); 2117 arg_list.arg (argno) = ""; 2118 end; 2119 end; 2120 2121 else if keyword = "-header" | keyword = "-he" 2122 then header_sw = "1"b; 2123 2124 else if keyword = "-noheader" | keyword = "-nhe" 2125 then header_sw = "0"b; 2126 2127 else if keyword = "-pathname" | keyword = "-pn" 2128 then /* use next arg as name without */ 2129 do; /* adding .compout */ 2130 if argno = argct /* no path given? */ 2131 then goto missing; 2132 2133 arg_list.arg (argno) = ""; 2134 argno = argno + 1; /* step to path arg */ 2135 arg_list.asis (argno) = "1"b; 2136 end; 2137 2138 else if keyword = "-mode" 2139 then 2140 do; /* select non-default mode */ 2141 if (argno = argct) 2142 then goto missing; 2143 2144 argno = argno + 1; 2145 mode_arg = arg_list.arg (argno); 2146 2147 if (mode_arg = "dump") 2148 then 2149 do; 2150 dump_sw = "1"b; 2151 mode_arg = ""; 2152 end; 2153 2154 else if (mode_arg = "display") 2155 then 2156 do; 2157 display_sw = "1"b; 2158 mode_arg = ""; 2159 end; 2160 2161 else if (mode_arg = "comment") 2162 then 2163 do; 2164 comment_sw = "1"b; 2165 mode_arg = ""; 2166 end; 2167 2168 else if (mode_arg = "setup") 2169 then 2170 do; 2171 setup_sw = "1"b; 2172 mode_arg = ""; 2173 end; 2174 2175 else if (mode_arg = "?") 2176 then 2177 do; 2178 mode_sw = "1"b; 2179 mode_arg = ""; 2180 end; 2181 2182 else 2183 do; 2184 j = (index (mode_arg, " ")); 2185 if (j = 0) 2186 then mode_arg = arg_list.arg (argno); 2187 else mode = substr (mode_arg, 1, j); 2188 end; 2189 2190 arg_list.arg (argno) = ""; 2191 end; 2192 2193 else if keyword = "-no_bell" | keyword = "-nob" 2194 then nobell_sw = "1"b; 2195 2196 else if keyword = "-pages" | keyword = "-pgs" | keyword = "-page" 2197 | keyword = "-pg" 2198 then 2199 do; /* page selection feature */ 2200 if from_to_sw 2201 then 2202 do; 2203 error_sw = "1"b; 2204 call com_err_ (error_table_$inconsistent, me, 2205 "-pages cannot be mixed with -from/-to"); 2206 end; 2207 2208 else 2209 do; 2210 if argno = argct /* none left or another ctl arg */ 2211 | index (arg_list.arg (argno + 1), "-") = 1 2212 then goto missing; 2213 2214 file_entry.page_sel_ct = 0; 2215 /* reset count for loop */ 2216 pages_loop: 2217 argno = argno + 1; /* its another control arg */ 2218 if (substr (arg_list.arg (argno), 1, 1) = "-") 2219 then goto next_ctl_arg; 2220 2221 i = 1; 2222 file_entry.page_sel_ct = file_entry.page_sel_ct + 1; 2223 l = index (arg_list.arg (argno), ","); 2224 2225 if (l = 0) 2226 then l = length (arg_list.arg (argno)); 2227 else l = l - 1; 2228 2229 from_to_ptr = 2230 addr (file_entry.from (file_entry.page_sel_ct)); 2231 call from_to_proc (i, l); 2232 file_entry.to (file_entry.page_sel_ct) = 2233 file_entry.from (file_entry.page_sel_ct); 2234 i = l + 2; 2235 l = length (arg_list.arg (argno)) - i + 1; 2236 2237 if (l > 0) 2238 then 2239 do; 2240 from_to_ptr = 2241 addr (file_entry.to (file_entry.page_sel_ct)); 2242 call from_to_proc (i, l); 2243 end; 2244 2245 arg_list.arg (argno) = ""; 2246 if (argno < argct) 2247 then goto pages_loop; 2248 end; 2249 end; 2250 2251 else if keyword = "-pages_changed" | keyword = "-pgc" 2252 then 2253 do; 2254 file_entry.pgc = "1"b; 2255 if (argno < argct) 2256 then if (substr (arg_list.arg (argno + 1), 1, 1) ^= "-") 2257 then 2258 do; 2259 argno = argno + 1; 2260 2261 if (arg_list.arg (argno) = "p") 2262 then 2263 do; 2264 file_entry.obverse = "1"b; 2265 call ioa_ ("WARNING: pco does not yet support" 2266 || " the obverse option"); 2267 end; 2268 2269 else if (arg_list.arg (argno) ^= "s") 2270 then 2271 do; 2272 error_sw = "1"b; 2273 call com_err_ (error_table_$inconsistent, me, 2274 "Object of ^a is not an allowed value. ^a", 2275 keyword, arg_list.arg (argno)); 2276 end; 2277 2278 arg_list.arg (argno) = ""; 2279 end; 2280 end; 2281 2282 else if keyword = "-stop" | keyword = "-sp" 2283 then 2284 do; 2285 if vol_sw 2286 then call com_err_ (error_table_$inconsistent, me, 2287 "-stop ignored with -volume"); 2288 else file_entry.stop, file_entry.wait = "1"b; 2289 end; 2290 2291 else if keyword = "-volume" 2292 then 2293 do; 2294 if (argno = argct) 2295 then 2296 do; 2297 missing: 2298 error_sw = "1"b; 2299 call com_err_ (error_table_$inconsistent, me, 2300 "Object of ^a missing.", keyword); 2301 return; 2302 end; 2303 2304 argno = argno + 1; 2305 2306 if (volid ^= "") 2307 then 2308 do; 2309 call com_err_ (error_table_$inconsistent, me, 2310 "^[-volume not allowed in control file" 2311 || "^;duplicate -volume specified", (volid = NOVOL)); 2312 error_sw = "1"b; 2313 end; 2314 2315 else 2316 do; 2317 volid = arg_list.arg (argno); 2318 vol_sw = "1"b; 2319 end; 2320 arg_list.arg (argno) = ""; 2321 2322 if file_entry.stop 2323 then 2324 do; 2325 call com_err_ (error_table_$inconsistent, me, 2326 "-stop ignored with -volume"); 2327 file_entry.stop = "0"b; 2328 end; 2329 2330 if file_entry.wait 2331 then 2332 do; 2333 call com_err_ (error_table_$inconsistent, me, 2334 "-wait ignored with -volume"); 2335 file_entry.wait = "0"b; 2336 end; 2337 2338 if dump_sw 2339 then 2340 do; 2341 call com_err_ (error_table_$inconsistent, me, 2342 "-mode dump -volume"); 2343 volid = ""; 2344 end; 2345 2346 if table_sw 2347 then 2348 do; 2349 call com_err_ (error_table_$inconsistent, me, 2350 "-table nullifies -volume"); 2351 volid = ""; 2352 end; 2353 end; 2354 2355 else if keyword = "-to" /* page selection feature */ 2356 then 2357 do; 2358 from_to_ptr = addr (file_entry.to (1)); 2359 goto from_to_rtn; 2360 end; 2361 2362 else if keyword = "-table" | keyword = "-tb" 2363 then 2364 do; 2365 table_sw = "1"b; 2366 end; 2367 2368 else if keyword = "-wait" | keyword = "-wt" 2369 then 2370 do; 2371 if vol_sw 2372 then call com_err_ (error_table_$inconsistent, me, 2373 "-wait ignored with -volume"); 2374 else file_entry.wait = "1"b; 2375 end; 2376 2377 else if keyword = "-lg" | keyword = "-long" 2378 then 2379 do; 2380 brief_sw = "0"b; 2381 long_sw = "1"b; 2382 end; 2383 2384 else 2385 do; 2386 call com_err_ (error_table_$badopt, me, """^a""", keyword); 2387 error_sw = "1"b; 2388 end; 2389 end; 2390 end; 2391 2392 /* its a file name */ 2393 do argno = 1 to argct; 2394 if arg_list.arg (argno) ^= "" 2395 then 2396 do; 2397 call expand_pathname_ ((arg_list.arg (argno)), dname, ename, code); 2398 if code ^= 0 2399 then 2400 do; 2401 call com_err_ (code, me, "Expanding path for ^a", 2402 arg_list.arg (argno)); 2403 error_sw = "1"b; 2404 return; 2405 end; 2406 2407 if arg_list.asis (argno) 2408 then ename = rtrim (ename); 2409 else ename = before (rtrim (ename), ".compout") || ".compout"; 2410 2411 call check_star_name_$entry (ename, code); 2412 /* check for star name */ 2413 2414 if code = 0 /* 0 = not a star name */ 2415 then call add_linked_file; /* add a new file to the linked list */ 2416 2417 else 2418 do; 2419 if (code > 2) 2420 then call com_err_ (code, me, "^a", ename); 2421 2422 else 2423 do; 2424 if (system_free_p = null ()) 2425 then system_free_p = get_system_free_area_ (); 2426 call hcs_$star_ (dname, ename, 3, system_free_p, e_c, e_p, 2427 n_p, code); 2428 if (code ^= 0) 2429 then call com_err_ (code, me, "^a>^a", dname, ename); 2430 2431 else 2432 do; 2433 do i = 1 to e_c; 2434 argct = argct + 1; 2435 ename = names (entries (i).nindex); 2436 call add_linked_file; 2437 end; 2438 free entries; 2439 free names; 2440 end; 2441 end; 2442 end; 2443 end; 2444 end; 2445 2446 if vol_sw & ^display_sw 2447 then contents_seg_sw = "1"b; 2448 2449 dcl dname char (168); 2450 2451 add_linked_file: 2452 proc; 2453 2454 given_file_count = given_file_count + 1; 2455 if (file_entry.file ^= "") 2456 then 2457 do; /* next entry */ 2458 tp, file_entry.link = addr (file_entry.next); 2459 file_entry_ptr = first_p; /* make sure the reference to */ 2460 /* file_entry.page_sel_ct in the */ 2461 /* next move refers to the one */ 2462 /* being moved */ 2463 tp -> file_entry = file_entry; /* copy in all control data */ 2464 file_entry_ptr = tp; /* point to the new entry */ 2465 file_entry.link = null (); /* make sure list ends */ 2466 end; 2467 2468 file_entry.ename = rtrim (ename); /* record file name */ 2469 file_entry.file = rtrim (dname); /* contruct absolute path */ 2470 file_entry.file = file_entry.file || ">"; 2471 file_entry.file = file_entry.file || file_entry.ename; 2472 2473 end add_linked_file; 2474 2475 from_to_proc: 2476 proc (beg, len); 2477 2478 dcl (beg, len) fixed bin; 2479 2480 from_to.id = substr (arg_list.arg (argno), beg, len); 2481 if (substr (arg_list.arg (argno), beg, len) = "$") 2482 then 2483 do; 2484 from_to.sign = NEG_REL; 2485 from_to.num = 0; 2486 end; 2487 else if (substr (arg_list.arg (argno), beg, 1) = "+") 2488 then 2489 do; 2490 from_to.sign = POS_REL; 2491 from_to.num = 2492 convert (from_to.num, 2493 substr (arg_list.arg (argno), beg + 1, len - 1)); 2494 end; 2495 else if index (substr (arg_list.arg (argno), beg), "$-") = 1 2496 then 2497 do; 2498 from_to.sign = NEG_REL; 2499 from_to.num = 2500 convert (from_to.num, 2501 substr (arg_list.arg (argno), beg + 2, len - 2)); 2502 end; 2503 else if (substr (arg_list.arg (argno), beg, 1) = "!") 2504 then 2505 do; 2506 from_to.sign = ABS; 2507 from_to.num = 2508 convert (from_to.num, 2509 substr (arg_list.arg (argno), beg + 1, len - 1)); 2510 end; 2511 else 2512 do; 2513 from_to.sign = SEARCH_ID; 2514 from_to.num = 0; 2515 end; 2516 end from_to_proc; 2517 2518 end proc_args; 2519 2520 set_rawo: 2521 proc; 2522 2523 if ^rawo_sw 2524 then 2525 do; 2526 call iox_$modes (iox_$user_output, "rawo", "", code); 2527 if code ^= 0 2528 then call com_err_ (code, me, "Setting RAWO mode."); 2529 rawo_sw = "1"b; 2530 end; 2531 2532 end set_rawo; 2533 2534 reset_rawo: 2535 proc; 2536 2537 call iox_$modes (iox_$user_output, "^rawo", "", code); 2538 /* leave RAWO mode */ 2539 if code ^= 0 2540 then call com_err_ (code, me, "Resetting RAWO mode."); 2541 rawo_sw = "0"b; /* dont want clean_ to try again */ 2542 2543 end reset_rawo; 2544 2545 /* This routine handles writing the device string to tape. */ 2546 2547 put_tape: 2548 proc (doing); 2549 2550 dcl doing fixed bin; /* 1-begin 2-end */ 2551 2552 dcl ii fixed bin (24); 2553 dcl tp ptr; 2554 dcl tl fixed bin (24); 2555 dcl atd char (256) var; 2556 dcl bp ptr; 2557 dcl bl fixed bin (24); 2558 dcl bi9 fixed bin; 2559 dcl bit9 bit (9); 2560 dcl bit36 bit (36) var; 2561 dcl 1 bs (10000) based (bp), 2562 2 x bit (1) unal, /* must be "0"b, thrown away */ 2563 2 d bit (8); /* these bits get on tape */ 2564 dcl pack_i fixed bin (24); 2565 2566 goto func (doing); 2567 2568 func (2): 2569 if (record_bytes < 1) | (record_bytes > 99999) 2570 then 2571 do; 2572 call com_err_ (0, me, "Not 0 max_tape_files) 2586 then 2587 do; 2588 call com_err_ (0, "Limit of ^a files/tape surpassed. ^a", 2589 max_tape_files, file_entry.file); 2590 goto finish; 2591 end; 2592 nnn = vol_file_ct; 2593 atd = before (mode, " "); 2594 atd = atd || " "; 2595 atd = atd || volid; 2596 atd = atd || after (mode, " "); 2597 if (vol_file_ct <= contents_l) 2598 then atd = atd || " -retain all"; 2599 atd = atd || " -ring -create -number "; 2600 atd = atd || nnn; 2601 2602 call iox_$attach_name ("pco_tape_", tape_iocbp, (atd), null (), code); 2603 if code ^= 0 2604 then 2605 do; 2606 call com_err_ (code, me, "Attaching pco_tape_ ^a", atd); 2607 goto finish; 2608 end; 2609 2610 call iox_$open (tape_iocbp, 5, "0"b, code); 2611 if code ^= 0 2612 then 2613 do; 2614 call com_err_ (code, me, "Opening volume ""^a"" -number ^a", volid, 2615 nnn); 2616 error_sw = "1"b; 2617 end; 2618 2619 else 2620 do; 2621 if (vol_file_ct > 1 | ^contents_tap_sw) & pack_ct > 0 2622 then 2623 do; 2624 (nostrg): 2625 substr (output_text, output_text_len + 1, 1) = ""; 2626 bp = addr (text_c (divide (output_text_len + 4, 4, 24, 0) * 4)); 2627 pack_i = 0; 2628 bl = 0; 2629 bit36 = ""b; 2630 do i = 1 to output_text_len, 2631 output_text_len + 1 repeat (output_text_len + 1) 2632 while (length (bit36) > 0); 2633 bit9 = unspec (substr (output_text, i, 1)); 2634 bi9 = 1; 2635 pkd: 2636 pack_i = pack_i + 1; 2637 goto pk (pack.type (pack_i)); 2638 pk (1): 2639 bit36 = bit36 2640 || substr (pack.con (pack_i), 1, pack.cct (pack_i)); 2641 goto pkd; 2642 pk (2): 2643 bit36 = bit36 || substr (bit9, bi9, pack.cct (pack_i)); 2644 pk (4): 2645 pk (3): 2646 bi9 = bi9 + pack.cct (pack_i); 2647 goto pkd; 2648 pk (5): 2649 if (pack_ct = pack_i) 2650 then pack_i = 0; 2651 do while (length (bit36) >= 8); 2652 bl = bl + 1; 2653 bs.x (bl) = "0"b; 2654 bs.d (bl) = substr (bit36, 1, 8); 2655 if (length (bit36) = 8) 2656 then bit36 = ""b; 2657 else bit36 = substr (bit36, 9); 2658 end; 2659 end; 2660 end; 2661 unspec (substr (bp -> output_text, bl + 1, record_bytes)) = "0"b; 2662 /* pad out last record */ 2663 do ii = 1 to bl by record_bytes; 2664 call iox_$write_record (tape_iocbp, addr (bp -> text_c (ii)), 2665 record_bytes, code); 2666 if code ^= 0 2667 then 2668 do; 2669 call com_err_ (code, me, "Writing volume ""^a"" -number ^a", 2670 volid, nnn); 2671 end; 2672 end; 2673 call iox_$close (tape_iocbp, code); 2674 end; 2675 2676 call iox_$detach_iocb (tape_iocbp, code); 2677 2678 if (vol_file_ct = 1) & contents_tap_sw 2679 then 2680 do; 2681 bp = tp; 2682 bl = tl; 2683 goto func (2); 2684 end; 2685 func (1): 2686 return; 2687 2688 end put_tape; 2689 2690 /* This routine handles the punching of 6-level tape on 8-level specially */ 2691 /* modified TN300 punch. */ 2692 2693 put_punch: 2694 proc (doing); 2695 2696 dcl doing fixed bin; /* 1-begin 2-end */ 2697 2698 dcl i fixed bin (24); 2699 2700 goto func (doing); 2701 2702 func (2): 2703 call letters (" > > " || what || " ?"); 2704 output_text_len = output_text_len + 2; 2705 substr (output_text, output_text_len - 1, 1) = "?"; 2706 substr (output_text, output_text_len, 1) = PCHoff; 2707 do i = 1 to divide (output_text_len + 3, 4, 17, 0); 2708 word (i) = word (i) | "100100100100"b3; 2709 end; 2710 2711 call ioa_ ("(Must be on TN300) Turn transparency ON and hit return."); 2712 call ioa_ ("When punch stops, turn transparency OFF and hit return."); 2713 call iox_$get_line (iox_$user_input, addr (keyword), 10, 0, code); 2714 call iox_$modes (iox_$user_output, "rawo", "", code); 2715 call iox_$put_chars (iox_$user_output, page_record_ptr, output_text_len, 2716 code); 2717 call iox_$modes (iox_$user_output, "^rawo", "", code); 2718 call iox_$get_line (iox_$user_input, addr (keyword), 10, 0, code); 2719 call ioa_ ("Punched ^i characters, ^.3f feet", output_text_len, 2720 dec (output_text_len) / 120); 2721 return; 2722 2723 func (1): 2724 substr (output_text, 1, 1) = PCHon; /* put header */ 2725 substr (output_text, 2, 1) = "?"; 2726 output_text_len = 2; 2727 file_entry.seq_no = file_entry.seq_no + 1; 2728 what = file_entry.ename; 2729 what = what || "-"; 2730 what = what || ltrim (char (file_entry.seq_no)); 2731 call letters (" "); 2732 call letters ((what)); 2733 call letters (" > > "); 2734 call letters ((leader)); 2735 call letters (" "); 2736 return; 2737 2738 dcl PCHon char (1) static options (constant) init (""); 2739 dcl PCHoff char (1) static options (constant) init (""); 2740 2741 letters: 2742 proc (s); 2743 2744 dcl s char (*); 2745 2746 dcl (i, j) fixed bin; 2747 2748 do i = 1 to length (s); 2749 j = index ( 2750 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890._->~!" 2751 , substr (s, i, 1)); 2752 if (j > 26) 2753 then j = j - 26; 2754 output_text_len = output_text_len + length (holes (j)); 2755 substr (output_text, output_text_len - length (holes (j)) + 1, 2756 length (holes (j))) = holes (j); 2757 end; 2758 2759 dcl holes (0:42) char (8) var static options (constant) 2760 init ("@@@@@", /* */ 2761 "@|J|", /* A */ 2762 "@~jjT", /* B */ 2763 "@\bb", /* C */ 2764 "@~b\", /* D */ 2765 "@~jj", /* E */ 2766 "@~JJ", /* F */ 2767 "@\bjz", /* G */ 2768 "@~HH~", /* H */ 2769 "@b~b", /* I */ 2770 "@``~", /* J */ 2771 "@~HTb", /* K */ 2772 "@~``", /* L */ 2773 "@~DHD~", /* M */ 2774 "@~DH~", /* N */ 2775 "@~bb~", /* O */ 2776 "@~JJD", /* P */ 2777 "@\bjRl", /* Q */ 2778 "@~JJt", /* R */ 2779 "@djjR", /* S */ 2780 "@BB~BB", /* T */ 2781 "@~`~", /* U */ 2782 "@^`^", /* V */ 2783 "@~`\`~", /* W */ 2784 "@bTHTb", /* X */ 2785 "@BDxDB", /* Y */ 2786 "@rjfb", /* Z */ 2787 "@D~", /* 1 */ 2788 "@drjd", /* 2 */ 2789 "@RbfZ", /* 3 */ 2790 "@NH~H", /* 4 */ 2791 "@NjjR", /* 5 */ 2792 "@\jjX", /* 6 */ 2793 "@BrJF", /* 7 */ 2794 "@TjjT", /* 8 */ 2795 "@Djj\", /* 9 */ 2796 "@\bb\", /* 0 */ 2797 "@pp", /* . */ 2798 "@````", /* _ */ 2799 "@HHHH", /* - */ 2800 "@H\~", /* > */ 2801 "Wq", /* noFLASH */ 2802 "WM"); /* FLASH */ 2803 end letters; 2804 end put_punch; 2805 dcl what char (44) var; /* name of what is being worked on */ 2806 2807 /* This routine handles the -db/-display output of the device string. */ 2808 2809 put_online: 2810 proc (doing); 2811 2812 dcl doing fixed bin; /* 1-begin, 2-end */ 2813 2814 dcl db_displ_str char (4096) var; /* the interpreted string */ 2815 dcl dlen fixed bin; 2816 dcl (i, j) fixed bin (24); 2817 dcl iblk fixed bin (24); 2818 2819 dcl 1 delay internal static aligned, 2820 2 version fixed bin init (1), 2821 2 default fixed bin, 2822 2 values like input_delays; 2823 dcl ESC char (1) static options (constant) init (""); 2824 dcl 1 input_delays aligned, /* supplied values for delay setting */ 2825 2 vert_nl fixed bin, 2826 2 horz_nl float bin, 2827 2 const_tab fixed bin, 2828 2 var_tab float bin, 2829 2 backspace fixed bin, 2830 2 vt_ff fixed bin; 2831 2832 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 2833 dcl iox_$user_io ptr ext static; 2834 2835 if doing = END 2836 then 2837 do; 2838 if iox_$user_output = iox_$user_io 2839 then 2840 do; 2841 call iox_$control (iox_$user_output, "get_delay", addr (delay), 2842 code); 2843 input_delays = delay.values; 2844 delay.horz_nl = 0.3; 2845 call iox_$control (iox_$user_output, "set_delay", addr (delay), 2846 code); 2847 delay.values = input_delays;/* restore for return */ 2848 2849 on cleanup 2850 call iox_$control (iox_$user_output, "set_delay", addr (delay), 2851 code); 2852 end; 2853 2854 /* call ioa_ ("^/ **** FILE #^i ****^/", filno);*/ 2855 filno = filno + 1; 2856 2857 i = 1; 2858 do while (i <= output_text_len);/* run thru the output record */ 2859 /* grab a chunk */ 2860 dlen = min (output_text_len - i + 1, 2000); 2861 2862 if dlen = 2000 /* dont split ESC sequences */ 2863 then 2864 do; 2865 j = index (reverse (substr (output_text, i, 2000)), ESC); 2866 dlen = dlen - j; 2867 end; 2868 2869 db_displ_str = 2870 comp_util_$display (substr (output_text, i, dlen), dlen, "1"b); 2871 call iox_$put_chars (iox_$user_output, 2872 addr (substr (db_displ_str, 1)), length (db_displ_str), code); 2873 2874 if code ^= 0 2875 then 2876 do; 2877 call com_err_ (code, me, "Writing display output."); 2878 if iox_$user_output = iox_$user_io 2879 then call iox_$control (iox_$user_output, "set_delay", 2880 addr (delay), code); 2881 return; 2882 end; 2883 2884 i = i + dlen; 2885 end; 2886 2887 if iox_$user_output = iox_$user_io 2888 then call iox_$control (iox_$user_output, "set_delay", addr (delay), 2889 code); 2890 end; 2891 2892 end put_online; 2893 2894 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ 2895 /* ACTIVE FUNCTION ENTRIES */ 2896 2897 compout: 2898 entry; 2899 2900 call cu_$af_return_arg (nargs, ret_p, ret_l, code); 2901 if (code = 0) 2902 then err_out = active_fnc_err_; 2903 else 2904 do; 2905 err_out = com_err_; 2906 ret_p = null (); 2907 end; 2908 if af_data_ptr = null () 2909 then 2910 do; 2911 call err_out (error_table_$out_of_sequence, "compout"); 2912 return; 2913 end; 2914 if (ret_p = null ()) 2915 then call ioa_ ("^a", af_data.compout); 2916 else ret_v = af_data.compout; 2917 return; 2918 2919 compask: 2920 entry; 2921 2922 call cu_$af_return_arg (nargs, ret_p, ret_l, code); 2923 if (code = 0) 2924 then 2925 do; 2926 err_out = active_fnc_err_; 2927 end; 2928 else 2929 do; 2930 err_out = com_err_; 2931 ret_p = null (); 2932 end; 2933 if af_data_ptr = null () 2934 then 2935 do; 2936 call err_out (error_table_$out_of_sequence, "compask"); 2937 return; 2938 end; 2939 do argno = 2 to nargs; 2940 call cu_$arg_ptr (argno, argp, argl, code); 2941 i = index (arg, "="); 2942 if (i = 0) 2943 then valid_in (argno), valid_out (argno) = arg; 2944 else 2945 do; 2946 valid_in (argno) = before (arg, "="); 2947 valid_out (argno) = after (arg, "="); 2948 end; 2949 end; 2950 call cu_$arg_ptr (1, argp, argl, code); 2951 if (code ^= 0) 2952 then 2953 do; 2954 call err_out (code, "compask"); 2955 return; 2956 end; 2957 default_ans = ""; 2958 do j = af_data.count to 1 by -1; 2959 if (arg = af_data.quest (j)) 2960 then 2961 do; 2962 default_ans = af_data.ans (j); 2963 j = 0; 2964 end; 2965 end; 2966 query_info.yes_or_no_sw = "0"b; 2967 query_info.suppress_name_sw = "1"b; 2968 re_ask: 2969 call ioa_$nnl ("^a (^a) ", arg, default_ans); 2970 re_get: 2971 call iox_$get_line (iox_$user_input, addr (reply_text), 2972 length (reply_text), reply_l, code); 2973 if (code = error_table_$end_of_info)/* in case called in an exec_com */ 2974 then goto re_get; 2975 compans = substr (reply_text, 1, reply_l - 1); 2976 new_sw = "0"b; 2977 if (compans = ".") 2978 then valid_in (1), valid_out (1) = ""; 2979 else if (compans = "") 2980 then valid_in (1), valid_out (1) = default_ans; 2981 else 2982 do; 2983 valid_in (1), valid_out (1) = compans; 2984 new_sw = "1"b; 2985 end; 2986 if nargs > 1 2987 then 2988 do; 2989 do argno = 2 to nargs; 2990 if (valid_in (argno) = valid_in (1)) 2991 then 2992 do; 2993 valid_out (1) = valid_out (argno); 2994 goto found_reply; 2995 end; 2996 end; 2997 call ioa_ ("Please answer ^a^(, ^a^).", valid_list); 2998 goto re_ask; 2999 found_reply: 3000 end; 3001 compans = valid_out (1); 3002 query_info.yes_or_no_sw = "1"b; 3003 query_info.suppress_name_sw = "0"b; 3004 if new_sw 3005 then 3006 do; 3007 af_data.count = af_data.count + 1; 3008 af_data.quest (af_data.count) = arg; 3009 af_data.ans (af_data.count) = valid_in (1); 3010 end; 3011 if (ret_p = null ()) 3012 then call ioa_ ("^a", compans); 3013 else 3014 do; 3015 if (index (compans, " ") = 0) 3016 then ret_v = compans; 3017 else ret_v = """" || compans || """"; 3018 end; 3019 return; 3020 3021 dcl dt_sw bit (1) int static init ("0"b); 3022 dtn: 3023 entry; 3024 dt_sw = "1"b; 3025 return; 3026 dtf: 3027 entry; 3028 dt_sw = "0"b; 3029 return; 3030 3031 evaluate_af_: 3032 proc (in_str, in_used, out_str, code); 3033 3034 dcl in_str char (*), /* str which begins with AF [IN] */ 3035 in_used fixed bin (21), /* amount of in_str used up [OUT] */ 3036 out_str char (*) var, /* result of expansion [OUT] */ 3037 code fixed bin (35); /* return code [OUT] */ 3038 3039 if (substr (in_str, 1, 1) = "[") 3040 then af_type = 1; 3041 else if (substr (in_str, 1, 2) = "|[") 3042 then af_type = 2; 3043 else if (substr (in_str, 1, 3) = "||[") 3044 then af_type = 3; 3045 else goto brack; 3046 nest = 1; 3047 in_used = af_type + 1; 3048 keep_on: 3049 i = search (substr (in_str, in_used), """[]"); 3050 if (i = 0) 3051 then 3052 do; 3053 brack: 3054 code = error_table_$unbalanced_brackets; 3055 return; 3056 end; 3057 in_used = in_used + i; 3058 ch = substr (in_str, in_used - 1, 1); 3059 if (ch = """") 3060 then 3061 do; 3062 i = index (substr (in_str, in_used), """"); 3063 if (i = 0) 3064 then 3065 do; 3066 code = error_table_$unbalanced_quotes; 3067 return; 3068 end; 3069 in_used = in_used + i; 3070 goto keep_on; 3071 end; 3072 if (ch = "[") 3073 then 3074 do; 3075 nest = nest + 1; 3076 goto keep_on; 3077 end; 3078 if (ch = "]") 3079 then 3080 do; 3081 nest = nest - 1; 3082 if (nest > 0) 3083 then goto keep_on; 3084 end; 3085 in_used = in_used - 1; 3086 call cu_$evaluate_active_string (null (), 3087 substr (in_str, af_type + 1, in_used - af_type - 1), af_type, out_str, 3088 code); 3089 3090 3091 dcl af_type fixed bin; 3092 dcl nest fixed bin; 3093 dcl i fixed bin; 3094 dcl ch char (1); 3095 dcl cu_$evaluate_active_string 3096 entry (ptr, char (*), fixed bin, char (*) var, 3097 fixed bin (35)); 3098 dcl error_table_$unbalanced_brackets 3099 fixed bin (35) ext static; 3100 dcl error_table_$unbalanced_quotes 3101 fixed bin (35) ext static; 3102 3103 end evaluate_af_; 3104 3105 dcl compans char (200) var; 3106 dcl default_ans char (200) var; 3107 dcl cu_$af_arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 3108 dcl err_out entry options (variable) automatic; 3109 dcl active_fnc_err_ 3110 entry () options (variable); 3111 dcl error_table_$out_of_sequence 3112 fixed bin (35) ext static; 3113 dcl cu_$af_return_arg 3114 entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 3115 dcl nargs fixed bin; 3116 dcl new_sw bit (1); 3117 dcl reply_l fixed bin (21); 3118 dcl ret_p ptr; 3119 dcl ret_l fixed bin (21); 3120 dcl ret_v char (ret_l) var based (ret_p); 3121 3122 /* * Temp segment usage: */ 3123 /* * record_ptr -> record read from input file */ 3124 /* * | */ 3125 /* * (1) v___________________________________________~ */ 3126 /* * */ 3127 /* * file_entry_ptr header_out_ptr page_record_ptr */ 3128 /* * | | | | */ 3129 /* * (2) v______v____________v______________v_________~ */ 3130 /* * */ 3131 /* * contents_ptr */ 3132 /* * | */ 3133 /* * (3) v___________________________________________~ */ 3134 /* * */ 3135 /* * pagelist_ptr */ 3136 /* * | */ 3137 /* * (4) v___________________________________________~ */ 3138 /* * */ 3139 3140 /* LOCAL STORAGE */ 3141 3142 dcl text_c (output_text_len) char (1) based (page_record_ptr); 3143 /* (magtape/papertape) */ 3144 dcl file_seq_no fixed bin; 3145 dcl first_p ptr; 3146 dcl format bit (11) static options (constant) init ("10001"b); 3147 /* control for dump_segment_ */ 3148 dcl (i, l) fixed bin; /* working index */ 3149 dcl i2 fixed bin (21); 3150 dcl it fixed bin (24); 3151 dcl mode_unproc char (200) var; /* the current mode sans af_proc */ 3152 dcl mode_name char (32) var; 3153 dcl nnn pic "999"; 3154 dcl NL char (1) int static options (constant) init (" 3155 "); 3156 dcl NULs char (8) static options (constant) init (""); 3157 dcl packi fixed bin; 3158 dcl stop_bfr char (80); /* buffer to hold users -stop */ 3159 /* option response */ 3160 /* OR the .wt input */ 3161 dcl str char (262144) based; 3162 dcl this_page fixed bin; 3163 dcl valid_in (15) char (64) var; 3164 dcl valid_list (nargs - 1) char (64) var based (addr (valid_in (2))); 3165 dcl valid_out (15) char (64) var; 3166 dcl word (2000) bit (36) based (page_record_ptr); 3167 3168 3169 3170 dcl 1 pack (40), 3171 2 cct fixed bin, /* number of bits in use */ 3172 2 con bit (27) unal, /* constant */ 3173 2 type fixed bin (8) unal; 3174 /* 1-literal 2-fwd 3-copy 4-bwd */ 3175 dcl toch_ndx pic "zzz9bb"; 3176 3177 dcl CRLF char (2) static options (constant) init (" 3178 "); 3179 3180 3181 3182 dcl error_table_$inconsistent 3183 fixed bin (35) ext static; 3184 3185 dcl hcs_$make_entry 3186 entry (ptr, char (*), char (*), entry, fixed bin (35)); 3187 dcl iox_$control entry (ptr, char (*), ptr, fixed (35)); 3188 dcl iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), 3189 fixed bin (35)); 3190 dcl iox_$modes entry (ptr, char (*), char (*), fixed (35)); 3191 dcl iox_$position entry options (variable); 3192 dcl iox_$write_record 3193 entry (ptr, ptr, fixed bin (21), fixed bin (35)); 3194 dcl release_temp_segments_ 3195 entry (char (*), (*) ptr, fixed bin (35)); 3196 dcl expand_pathname_ 3197 entry (char (*), char (*), char (*), fixed bin (35)); 3198 3199 1 1 /* BEGIN INCLUDE FILE - comp_dvid.incl.pl1 */ 1 2 1 3 /* Written: JA Falksen - 6/81 1 4*/* Modified: EJ Wallman - 11/81 - Added comp_dvt.displayproc */ 1 5 /* Modified: EJW - 1/82 - added length arg to comp_dvt.displayproc */ 1 6 /* Modified: 2/82 - EJW - Deleted ptr arg from comp_dvt.displayproc */ 1 7 /* Modified: 3/83 - EJW - Changed footref arg of comp_dvt.footproc to 1 8* (3) char (*) var. Version 4. */ 1 9 /* Modified: 6/83 - EJW - Added error print control switch to calling 1 10* sequence for comp_dvt.displayproc. - Version 5. */ 1 11 1 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 1 13 1 14 dcl comp_dvid_version 1 15 fixed bin static options (constant) init (5); 1 16 1 17 dcl 1 comp_dvid aligned based (const.dvidptr), 1 18 2 version fixed bin, /* version of this structure and */ 1 19 /* of comp_dvt */ 1 20 2 devname char (32), /* name of device */ 1 21 2 dvt_r bit (18); /* device table offset */ 1 22 1 23 /* END INCLUDE FILE - comp_dvid.incl.pl1 */ 3200 2 1 /* BEGIN INCLUDE FILE - comp_dvt.incl.pl1 */ 2 2 2 3 /* Written: 9/80 - JA Falksen 2 4*/* Modified: 11/81 - EJW - Added comp_dvt.displayproc 2 5*/* Modified: 1/82 - EJW - Added length arg to comp_dvt.displayproc 2 6*/* Modified: 2/82 - EJW - Deleted ptr arg from comp_dvt.displayproc 2 7*/* Modified: 3/83 - EJW - Changed footref arg of comp_dvt.footproc to 2 8* (3) char (*) var. Version 4. */ 2 9 /* Modified: 6/83 - EJW - Added error print control switch to calling 2 10* sequence for comp_dvt.displayproc. - Version 5. 2 11*/* Modified: 11/84 - EJW - Renamed no_adjust to justifying. 2 12**/ 2 13 2 14 /* All names which end in "_r"are offset values within the device table */ 2 15 /* segment. The version of this structure is in comp_dvid.incl.pl1 */ 2 16 2 17 /* format: style2,ind3,ll79,dclind4,idind15,comcol41,linecom */ 2 18 2 19 dcl 1 comp_dvt aligned based (const.devptr), 2 20 2 devclass char (32), /* what general kind of device is */ 2 21 /* this, currently available: */ 2 22 /* "printer" (includes terminals), */ 2 23 /* "braille", "bitmap" */ 2 24 2 outproc entry /* page output processor */ 2 25 (fixed bin, /* function - 0=build */ 2 26 /* 1=init page */ 2 27 /* 2=init file */ 2 28 /* 3=cleanup */ 2 29 fixed bin (35)),/* error code */ 2 30 2 footproc entry /* footnote reference proc */ 2 31 ((3) char (*) var, 2 32 /* reference string (IN/OUT) */ 2 33 ptr), /* comp_dvt_p (IN) */ 2 34 2 artproc entry (), /* artwork proc */ 2 35 /* dont know how to describe yet */ 2 36 2 displayproc 2 37 entry /* string display interpreter */ 2 38 (char (*) var, /* raw input string */ 2 39 fixed bin (24), /* chars used in this call */ 2 40 bit (1)) /* 1= dont show display errors */ 2 41 returns (char (*) var), 2 42 /* interpreted output string */ 2 43 /* following values are in millipoints */ 2 44 2 min_WS fixed bin (31), /* minimum whitespace */ 2 45 2 min_lead fixed bin (31), /* minimun lead */ 2 46 2 vmt_min fixed bin (31), /* min usable .vmt */ 2 47 2 vmb_min fixed bin (31), /* min usable .vmb */ 2 48 2 def_vmt fixed bin (31), /* default .vmt */ 2 49 2 def_vmh fixed bin (31), /* default .vmh */ 2 50 2 def_vmf fixed bin (31), /* default .vmf */ 2 51 2 def_vmb fixed bin (31), /* default .vmb */ 2 52 2 pdw_max fixed bin (31), /* max page width available */ 2 53 2 pdl_max fixed bin (31), /* max page length available, */ 2 54 /* (0 = unlimited) */ 2 55 2 upshift fixed bin (31), /* footnote reference shift */ 2 56 2 init_ps fixed bin (31), /* initial pointsize (millipoints) */ 2 57 2 lettersp fixed bin (31), /* max letterspacing */ 2 58 2 max_pages fixed bin, /* max pages/"file" -1 ->unlimited */ 2 59 2 max_files fixed bin, /* max "files"/reel -1 ->unlimited */ 2 60 2 init_fam fixed bin, /* initial family index */ 2 61 2 init_mem fixed bin, /* initial member index */ 2 62 2 foot_fam fixed bin, /* initial foot family index */ 2 63 2 foot_mem fixed bin, /* initial foot member index */ 2 64 2 init_family 2 65 char (32), /* initial font family to use */ 2 66 2 init_member 2 67 char (32), /* initial font member to use */ 2 68 ( /* the following are offsets */ 2 69 2 atd_r, /* attach desc for on-line output */ 2 70 2 dvc_r, /* device control table relptr */ 2 71 2 comment_r, /* comment string relptr */ 2 72 2 cleanup_r, /* "cleanup" string relptr */ 2 73 2 medsel_table_r /* media select table relptr */ 2 74 ) bit (18) aligned, 2 75 2 foot_family 2 76 char (32), /* family for footnote reference */ 2 77 2 foot_member 2 78 char (32), /* member for footnote reference */ 2 79 /* if one was specified */ 2 80 2 sws unaligned, 2 81 3 interleave /* 0- page block has lines in column */ 2 82 bit (1), /* order left-to-right */ 2 83 /* 1- page block has lines in line */ 2 84 /* order top-to-bottom */ 2 85 3 justifying /* 1- device justifies lines */ 2 86 bit (1), 2 87 3 mbz bit (24), 2 88 3 endpage bit (9), /* EOP char if not "0"b */ 2 89 2 open_mode fixed bin (35), /* when going to a file */ 2 90 2 recleng fixed bin, /* length of tape records */ 2 91 2 family_ct fixed bin, /* # families present */ 2 92 2 family (comp_dvt.family_ct), 2 93 /* families of fonts defined */ 2 94 3 member_r bit (18) aligned, 2 95 /* member table relptr */ 2 96 3 name char (32); /* family name */ 2 97 2 98 2 99 /* The usage formula for units: */ 2 100 /* */ 2 101 /* rel_units * length_in_points */ 2 102 /* ---------------------------- = length_in_units */ 2 103 /* points_per_EM */ 2 104 2 105 /* END INCLUDE FILE comp_dvt.incl.pl1 */ 3201 3 1 /* BEGIN INCLUDE FILE comp_entries.incl.pl1 */ 3 2 3 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 3 4 3 5 dcl compose_severity_ 3 6 fixed bin (35) ext static; 3 7 dcl comp_ entry; 3 8 dcl comp_art_ entry (ptr, bit (1)); 3 9 dcl comp_block_ctls_ 3 10 entry (fixed bin); 3 11 dcl comp_break_ entry (fixed bin, fixed bin); 3 12 dcl comp_break_ctls_ 3 13 entry (fixed bin); 3 14 dcl comp_ctls_ entry (bit (1) aligned); 3 15 dcl comp_eject_page_ 3 16 entry; 3 17 dcl comp_expr_eval_ 3 18 entry (char (*) var, fixed bin (21), ptr, fixed bin, 3 19 fixed bin, bit (1), fixed bin (31), char (*) var, 3 20 bit (9), fixed bin (35)); 3 21 dcl comp_extr_str_ entry (bit (1), char (*) var, fixed bin (21), 3 22 fixed bin (21), fixed bin (21), ptr) 3 23 returns (char (*) var); 3 24 dcl comp_fill_ entry; 3 25 dcl comp_font_ entry (bit (1), char (*) var, char (8) aligned); 3 26 dcl comp_format_ctls_ 3 27 entry (fixed bin); 3 28 dcl comp_get_file_$find 3 29 entry (char (*), ptr, char (*), bit (1), char (*) var, 3 30 fixed bin (35)); 3 31 dcl comp_get_file_$open 3 32 entry (ptr, bit (1), fixed bin (35)); 3 33 dcl comp_head_page_ 3 34 entry (fixed bin (31)); 3 35 dcl comp_hft_ctls_ entry (fixed bin); 3 36 dcl comp_hft_ctls_$title 3 37 entry (ptr, ptr, char (*) var, fixed bin (31)); 3 38 dcl comp_init_$one entry; 3 39 dcl comp_init_$two entry; 3 40 dcl comp_init_$three 3 41 entry; 3 42 dcl comp_insert_ctls_ 3 43 entry (fixed bin); 3 44 dcl comp_make_page_ 3 45 entry (fixed bin, bit (1)); 3 46 dcl comp_make_page_$cleanup 3 47 entry; 3 48 dcl comp_measure_ entry (char (1020) var, ptr, bit (1), bit (1), bit (6), 3 49 fixed bin (31), ptr, ptr, ptr); 3 50 dcl comp_read_$name 3 51 entry (char (*) var, fixed bin (21), fixed bin (21), 3 52 ptr) returns (char (*) var); 3 53 dcl comp_read_$number 3 54 entry (char (*) var, (*) fixed bin (31), 3 55 fixed bin (21), fixed bin (21), ptr, fixed bin (35)) 3 56 returns (fixed bin (31)); 3 57 dcl comp_read_$line 3 58 entry (ptr, char (*) var, bit (1)); 3 59 dcl comp_report_ entry (fixed bin, fixed bin (35), char (*), ptr, 3 60 char (*) var); 3 61 dcl comp_report_$ctlstr 3 62 entry options (variable); 3 63 /**** (sev, code, info, line, ctl_str, args... */ 3 64 dcl comp_report_$exact 3 65 entry (char (*), ptr); 3 66 dcl comp_space_ entry (fixed bin (31), ptr, bit (1), bit (1), bit (1), 3 67 bit (1)); 3 68 dcl comp_tbl_ctls_ entry (fixed bin); 3 69 dcl comp_title_block_ 3 70 entry (ptr); 3 71 dcl comp_update_symbol_ 3 72 entry (bit (1), bit (1), bit (1), char (32), 3 73 char (*) var); 3 74 dcl comp_use_ref_ entry (char (*) var, bit (1), bit (1), ptr); 3 75 dcl comp_util_$add_text 3 76 entry (ptr, bit (1), bit (1), bit (1), bit (1), ptr); 3 77 dcl comp_util_$display 3 78 entry (char (*) var, fixed bin, bit (1)) 3 79 returns (char (*) var); 3 80 dcl comp_util_$escape 3 81 entry (char (*) var, ptr); 3 82 dcl comp_util_$getblk 3 83 entry (fixed bin, ptr, char (2), ptr, bit (1)); 3 84 dcl comp_util_$num_display 3 85 entry (ptr, fixed bin) returns (char (256) var); 3 86 dcl comp_util_$pageno 3 87 entry (fixed bin, char (*) var); 3 88 dcl comp_util_$pictures /* emit pending pictures */ 3 89 entry /**/ 3 90 (ptr); /* current text block */ 3 91 dcl comp_util_$pop entry (char (32)); 3 92 dcl comp_util_$push 3 93 entry (char (32)); 3 94 dcl comp_util_$relblk 3 95 entry (fixed bin, ptr); 3 96 dcl comp_util_$replace_text 3 97 entry (ptr, bit (1), ptr, ptr); 3 98 dcl comp_util_$search_tree 3 99 entry (char (32), bit (1)); 3 100 dcl comp_util_$set_bin 3 101 entry (fixed bin (31), char (32) var, fixed bin (31), 3 102 fixed bin (31), fixed bin (31), (*) fixed bin (31), 3 103 fixed bin (31)); 3 104 dcl comp_util_$set_net_page 3 105 entry (bit (1)); 3 106 dcl comp_util_$translate 3 107 entry (char (*) var) returns (char (*) var); 3 108 dcl comp_write_block_ 3 109 entry (fixed bin); 3 110 dcl comp_write_page_ 3 111 entry; 3 112 3 113 /* END INCLUDE FILE comp_entries.incl.pl1 */ 3202 4 1 /* BEGIN INCLUDE FILE comp_fntstk.incl.pl1 */ 4 2 4 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 4 4 4 5 dcl fntstk_eptr ptr; /* font stack entry structure */ 4 6 dcl 1 fntstk_entry aligned based (fntstk_eptr), 4 7 2 bachelor bit (1), /* 1= has no members */ 4 8 2 devfnt fixed bin, /* font in the device */ 4 9 2 fam_name char (32), /* family name */ 4 10 2 famndx fixed bin, /* family index */ 4 11 2 fntptr ptr, /* font table pointer */ 4 12 2 mem_name char (32), /* /member name (or null) */ 4 13 2 memndx fixed bin, /* member index */ 4 14 2 memptr ptr, /* member table pointer */ 4 15 2 name char (65) var, /* font name */ 4 16 2 size fixed bin (31), /* requested point size */ 4 17 2 ps fixed bin (31), /* effective point size */ 4 18 2 fcs_str char (8); /* FCS string */ 4 19 4 20 /* END INCLUDE FILE comp_fntstk.incl.pl1 */ 3203 5 1 /* BEGIN INCLUDE FILE ..... comp_output.incl.pl1 ..... 08/29/78 J Falksen */ 5 2 5 3 /* This include file describes the format of compout files. "Ordinary" compout 5 4* files, i.e. printer or ascii, will be written to stream files. All others 5 5* are not dprint-able and are written to sequential files. 5 6* 5 7* The first record is a file header which contains information necessary for 5 8* processing by process_compout. 5 9* 5 10* Each record thereafter contains one page image of data */ 5 11 5 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 5 13 5 14 dcl filedata_version_2 5 15 fixed bin static options (constant) init (2); 5 16 dcl filedata_version_3 5 17 fixed bin static options (constant) init (3); 5 18 dcl filedata_version_4 5 19 fixed bin static options (constant) init (4); 5 20 5 21 dcl fileheader_ptr ptr init (null); 5 22 dcl 1 fileheader aligned based (fileheader_ptr), 5 23 2 version fixed bin, /* version of this file */ 5 24 2 device_class 5 25 char (32), 5 26 2 device_name /* generic device name */ 5 27 char (32), 5 28 2 device char (32), /* logical device name */ 5 29 2 recleng fixed bin, /* mag tape record length */ 5 30 2 max_pages fixed bin, /* max pages/record, -1=unlimited */ 5 31 /* max_files not defined version 2 */ 5 32 2 max_files fixed bin, /* max files/tape, -1=unlimited */ 5 33 /* page_len not defined in version 3 */ 5 34 2 page_len fixed bin (21), /* page length */ 5 35 2 cleanup_leng /* device cleanup string */ 5 36 fixed bin, 5 37 2 cleanup char (l_cleanup), 5 38 2 comment_leng /* comment string - info for pco */ 5 39 fixed bin, 5 40 2 comment char (l_comment); 5 41 5 42 dcl l_comment fixed bin; /* comment length */ 5 43 dcl l_cleanup fixed bin; /* cleanup length */ 5 44 /* data record */ 5 45 dcl record_ptr ptr init (null); 5 46 dcl 1 record aligned based (record_ptr), 5 47 2 header, 5 48 3 pageid char (32), /* page identification 5 49* ("-1" means a galley block) */ 5 50 3 changed bit (1) unal, /* 1- this is a changed page */ 5 51 3 front bit (1) unal, /* 1- this is a front page */ 5 52 3 pending bit (1) unal, /* 1- page has been processed 5 53* but not printed */ 5 54 3 blank bit (1) unal, /* 1- intentional blank page */ 5 55 3 MBZ bit (32) unal, /* pad to word boundary */ 5 56 2 page_record 5 57 bit (36); /* base location of output structure */ 5 58 5 59 /* The output writer returns a catenated set of text strings. Each string has 5 60* a control preface. The last string in the list has output.nextref = "0"b */ 5 61 5 62 dcl page_record_ptr 5 63 ptr init (null); 5 64 dcl 1 page_record aligned based (page_record_ptr), 5 65 2 sws, 5 66 3 in_use bit (1) unal, /* 1- in use (so nextref ^= "0"b ) */ 5 67 3 rawo bit (1) unal, /* 1- text needs raw mode */ 5 68 3 halt bit (1) unal, /* 1- halt to change wheels */ 5 69 3 halt2 bit (1) unal, /* 1- halt AFTER changing wheels */ 5 70 3 halt3 bit (1) unal, /* reserved for future use */ 5 71 3 halt4 bit (1) unal, /* 1- mid-page wait */ 5 72 3 preface bit (1) unal, /* 1- control preface, this text */ 5 73 /* must be processed whenever it */ 5 74 /* is different than the */ 5 75 /* previous one. */ 5 76 3 id_preface /* 1- identification preface, this */ 5 77 bit (1) unal, /* to be included only at the */ 5 78 /* beginning of an output file. */ 5 79 /* In general, they will never */ 5 80 /* match each other (unless page */ 5 81 /* ids are duplicated). */ 5 82 3 pad bit (22) unal, /* pad to last byte */ 5 83 3 pwheel fixed bin (6) unal uns, 5 84 2 leng fixed bin (24), /* actual output text */ 5 85 2 text char (16384 refer (page_record.leng)), 5 86 2 nextref bit (36); /* location of next if any */ 5 87 5 88 /* END INCLUDE FILE ..... comp_output.incl.pl1 ..... */ 3204 6 1 /* BEGIN INCLUDE FILE comp_page.incl.pl1 */ 6 2 6 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 6 4 6 5 dcl max_image_lines 6 6 fixed static options (constant) init (1000); 6 7 dcl max_cols fixed static options (constant) init (20); 6 8 6 9 dcl page_version fixed bin static options (constant) init (5); 6 10 /* composed page structure */ 6 11 dcl 1 page aligned based (const.page_ptr), 6 12 2 version fixed bin, /* version of this structure */ 6 13 2 parms aligned like page_parms, 6 14 /* page formatting parameters */ 6 15 2 hdr aligned like page_header, 6 16 /* page control stuff */ 6 17 2 image_ptr ptr, /* pointer to the madeup page image */ 6 18 2 column_ptr (0:20) ptr, /* pointers to the column structures */ 6 19 2 col_image_ptr 6 20 (-2:21) ptr; /* pointers to column images */ 6 21 /* col -1 is for line numbers and */ 6 22 /* left margin change bars; */ 6 23 /* col -2 is for */ 6 24 /* right margin change bars */ 6 25 /* and/or annotation * / 6 26* /* page control stuff */ 6 27 dcl 1 page_header aligned based (const.page_header_ptr), 6 28 2 sws, 6 29 3 art bit (1) unal, /* 1 = header/footer art */ 6 30 3 blankpage 6 31 bit (1) unal, /* 1 = intentional blank page */ 6 32 3 frontpage 6 33 bit (1) unal, /* 1 = odd page number */ 6 34 3 headed bit (1) unal, /* 1 = page header has been written */ 6 35 3 modified bit (1) unal, /* 1 = page has been modified */ 6 36 3 overflow bit (1) unal, /* OBSOLETE */ 6 37 3 MBZ bit (12) unal, 6 38 3 dot_addltr 6 39 char (1) unal, /* dot page add letter, if any */ 6 40 3 pgc_select 6 41 char (1) unal, /* for selecting change pages */ 6 42 2 baldepth fixed bin (31), /* page depth at balance point */ 6 43 2 balusd fixed bin (31), /* space used at balance point */ 6 44 2 col_count fixed bin, /* highest value of col_index for the page */ 6 45 2 col_index fixed bin, /* column index */ 6 46 2 depth fixed bin (31), /* current page depth */ 6 47 2 hdspc fixed bin (31), /* TOP white space */ 6 48 2 lmarg fixed bin (31), /* left margin for this page */ 6 49 2 net fixed bin (31), /* net usable space on the page */ 6 50 2 pageno char (32) var, /* current page number */ 6 51 2 used fixed bin (31); /* space already used on the page */ 6 52 6 53 dcl page_image_version 6 54 fixed bin (35) static options (constant) init (2); 6 55 /* structure passed to writers */ 6 56 dcl 1 page_image aligned based (page.image_ptr), 6 57 2 version fixed bin (35), /* structure version no */ 6 58 2 count fixed bin, /* count of page image lines */ 6 59 2 file_id char (32) var, /* compout identifier */ 6 60 2 func fixed bin, /* function code; 0 = build, 6 61* 1 = intialize, 2 = cleanup */ 6 62 2 text_ptr ptr, /* pointer to the text area */ 6 63 /* the image lines */ 6 64 2 line (max_image_lines), 6 65 3 sws, 6 66 4 quad bit (6) unal, /* text set position flags */ 6 67 4 art bit (1) unal, /* 1 = artwork in the line */ 6 68 4 cbar bit (1) unal, /* 1= line has a cbar, dont erase */ 6 69 4 mrgtxt bit (1) unal, /* line number or marginal note */ 6 70 4 white bit (1) unal, /* line is white */ 6 71 4 MBZ bit (26) unal, 6 72 3 depth fixed bin (31), /* page depth for the text */ 6 73 3 gaps fixed bin, /* number of WS gaps in the line */ 6 74 3 info like text_entry.info, 6 75 /* input file info */ 6 76 3 lead fixed bin (31), /* lead value if trailing WS */ 6 77 3 lfnt fixed bin, /* font at the left margin */ 6 78 3 lmarg fixed bin (31), /* text left margin position */ 6 79 3 lsize fixed bin (31), /* pointsize at the left margin */ 6 80 3 net fixed bin (31), /* net width for filling */ 6 81 3 pos fixed bin (31), /* current horiz position */ 6 82 3 ptr ptr, /* pointer to the text */ 6 83 3 rmarg fixed bin (31), /* text right margin position */ 6 84 3 width fixed bin (31); /* width of the text */ 6 85 /* current page formatting parms */ 6 86 dcl 1 page_parms aligned based (const.page_parms_ptr), 6 87 2 init_page_depth 6 88 fixed bin (31), /* initial page depth */ 6 89 2 length fixed bin (31), /* page length */ 6 90 2 lmarg, /* page left margin */ 6 91 3 even fixed bin (31), 6 92 3 odd fixed bin (31), 6 93 2 margin, /* margin values */ 6 94 3 top fixed bin (31), 6 95 3 header fixed bin (31), 6 96 3 footer fixed bin (31), 6 97 3 bottom fixed bin (31), 6 98 2 measure fixed bin (31), /* line space available for text */ 6 99 2 net, /* net usable space on page */ 6 100 3 even fixed bin (31), /* even pages */ 6 101 3 odd fixed bin (31), /* odd pages */ 6 102 /* arrays at the end */ 6 103 2 cols, /* columns defined for the page */ 6 104 3 bal bit (1) unal, /* column balancing control flag */ 6 105 3 MBZ bit (17) unal, 6 106 3 count fixed bin unal; /* the number of columns */ 6 107 /* default page formatting parms */ 6 108 dcl 1 init_page_parms 6 109 aligned like page_parms 6 110 based (const.init_page_parms_ptr); 6 111 6 112 /* END INCLUDE FILE comp_page.incl.pl1 */ 3205 7 1 /* BEGIN INCLUDE FILE comp_shared.incl.pl1 */ 7 2 7 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 7 4 7 5 dcl shared_version fixed bin (35) static options (constant) init (17); 7 6 7 7 dcl 1 shared aligned based (const.shared_ptr), 7 8 2 version fixed bin (35), /* version of this structure */ 7 9 2 chars, 7 10 ( 3 sym_delim, /* delimiter for symbols */ 7 11 3 ttl_delim, /* delimiter for title parts */ 7 12 3 wrd_brkr /* word break character */ 7 13 ) char (1) unal, 7 14 3 PAD char (1) unal, 7 15 2 cbar_type char (4) var, /* change bar type */ 7 16 2 dot_add_letter /* dot page add letter */ 7 17 char (1) var, 7 18 2 EN_width fixed bin (31), /* width of EN in current font */ 7 19 2 eqn_refct fixed bin, /* equation reference counter */ 7 20 2 footref_fcs /* footnote ref FCS string */ 7 21 char (8) aligned, 7 22 2 ftn_reset char (8) var, /* footnote reset mode */ 7 23 2 ftnrefct fixed bin, /* footnote ref counter */ 7 24 2 hyph_size fixed bin (31), /* least word part size for hyphing */ 7 25 2 if_nest, /* if/then/else logic control */ 7 26 3 ndx fixed bin, /* depth of logic nest */ 7 27 3 e (25), /* nest entries */ 7 28 /* .if control switch */ 7 29 4 sw fixed bin, /* 0=off, 1=(then), -1=(else) */ 7 30 4 info aligned like text_entry.info, 7 31 4 line char (256) var, /* the control line */ 7 32 2 indctl, /* indent ctls stack */ 7 33 3 ndx fixed bin, /* current level */ 7 34 /* switch bits */ 7 35 3 stk (0:35) bit (1) unal, 7 36 2 input_dirname 7 37 char (168) var, /* dir containing current input file */ 7 38 2 input_filename 7 39 char (200) var, /* current input file name */ 7 40 2 lead fixed bin (31), /* current linespacing value */ 7 41 2 lit_count fixed bin (35), /* count of literal lines */ 7 42 2 next_pagenmbr 7 43 char (32) var, /* next page number / */ 7 44 2 output_file 7 45 char (32) var, /* output file identifier */ 7 46 2 pagecount fixed bin, /* number of pages produced */ 7 47 2 pagenum, /* page number structure */ 7 48 3 index fixed bin, /* level currently counting */ 7 49 ( 7 50 3 sep char (1) unal, /* separator chars */ 7 51 3 nmbr fixed bin (31), /* the counters */ 7 52 3 mode /* display modes */ 7 53 fixed bin (8) unal 7 54 ) dimension (20), 7 55 2 parameter char (254) var, /* command line parameter */ 7 56 2 param_pres bit (1), /* passed parameter flag */ 7 57 2 pass_counter 7 58 fixed bin, /* pass counter */ 7 59 2 picture, /* picture blocks */ 7 60 3 count fixed bin, /* number of them */ 7 61 3 space fixed bin (31), /* total picture space */ 7 62 3 blk (10), /* picture blocks */ 7 63 4 type char (4), /* type = page/col */ 7 64 4 place char (4), /* place = top/cen/bot */ 7 65 4 ptr ptr, /* pointer to block */ 7 66 4 size fixed bin (31), /* size of the picture */ 7 67 2 ptrs, 7 68 ( 3 aux_file_data_ptr, /* -> auxiliary file data */ 7 69 3 blank_footer_ptr, /* -> blank page footer */ 7 70 3 blank_header_ptr, /* -> blank page header */ 7 71 3 blank_text_ptr, /* -> blank page text */ 7 72 3 blkptr, /* -> active text */ 7 73 3 colptr, /* current column */ 7 74 3 compout_ptr, /* iocb pointer for output */ 7 75 3 compx_ptr, /* iocb pointer for compx file */ 7 76 3 ctb_ptr, /* current line artwork table */ 7 77 3 epftrptr, /* even page footer block */ 7 78 3 ephdrptr, /* even page header block */ 7 79 3 fcb_ptr, /* input file control block pointer */ 7 80 3 ftnblk_data_ptr, /* footnote block data pointer */ 7 81 3 footnote_header_ptr, /* footnote header "title" */ 7 82 3 graphic_page_ptr, /* graphic output page */ 7 83 3 hit_data_ptr, /* hit data pointer */ 7 84 3 htab_ptr, /* horizontal tab tables */ 7 85 3 hwrd_data_ptr, /* local hyphenation table */ 7 86 3 insert_ptr, /* data entry for current input file */ 7 87 3 opftrptr, /* odd page footer block */ 7 88 3 ophdrptr, /* odd page header block */ 7 89 3 ptb_ptr, /* previous line artwork table */ 7 90 3 spcl_blkptr, /* "special" block pointer */ 7 91 3 tbldata_ptr, /* table column data structure */ 7 92 3 tblkdata_ptr, /* text block data array */ 7 93 3 text_header_ptr /* empty text header structure */ 7 94 ) ptr, 7 95 2 scale, /* space conversion scale factors */ 7 96 3 horz fixed bin (31), /* horizontal */ 7 97 3 vert fixed bin (31), /* vertical */ 7 98 2 source_filename 7 99 char (200) var, /* current source file name */ 7 100 2 sws, /* switch bits */ 7 101 ( 3 bug_mode, /* debug mode */ 7 102 3 compout_not_headed, /* compout is not headed */ 7 103 3 end_input, /* EOF for current input file */ 7 104 3 end_output, /* no more output is wanted */ 7 105 3 firstpass, /* first pass over input */ 7 106 3 ftn_mode, /* in footnote mode */ 7 107 3 hyph_mode, /* hyphenating mode */ 7 108 3 inserting_hfc, /* inserting hdr, ftr, or cap */ 7 109 3 literal_mode, /* literal line mode flag */ 7 110 3 pageblock, /* blocks belong to page */ 7 111 3 picture_mode, /* building a picture */ 7 112 3 print_flag, /* producing output */ 7 113 3 purge_ftns, /* purging footnotes */ 7 114 3 suppress_footref, /* suppress next footnote ref */ 7 115 3 table_mode /* table mode */ 7 116 ) bit (1) unal, 7 117 3 MBZ bit (21) unal, 7 118 2 trans, /* trans table for .tr */ 7 119 3 in char (128) var, /* input chars */ 7 120 3 out char (128) var, /* output chars */ 7 121 2 widow_size fixed bin (31), /* widow size */ 7 122 2 widow_foot fixed bin (31); /* widow for footnotes */ 7 123 /* to save shared data between files/passes */ 7 124 dcl 1 save_shared aligned like shared based (const.save_shared_ptr); 7 125 7 126 dcl dot_addltr_symb_index 7 127 fixed bin static options (constant) init (12); 7 128 dcl max_text_lines fixed bin static options (constant) init (1000); 7 129 dcl mode_string char (16) static options (constant) 7 130 init ("arbihxocalaurlru"); 7 131 /* value overlays */ 7 132 dcl flag_value bit (1) based; 7 133 dcl num_value fixed bin (31) based; 7 134 7 135 /* END INCLUDE FILE comp_shared.incl.pl1 */ 3206 8 1 /* BEGIN INCLUDE FILE comp_text.incl.pl1 */ 8 2 8 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 8 4 8 5 dcl 1 tblkdata /* data for allocated text blocks */ 8 6 aligned based (shared.tblkdata_ptr), 8 7 2 block, /* block pool */ 8 8 3 count fixed bin, 8 9 3 ptr (500) ptr, /* block pointers */ 8 10 /* block state flags */ 8 11 3 free (500) bit (1) unal, 8 12 2 line_area, /* line area pool */ 8 13 3 count fixed bin, 8 14 3 ptr (500) ptr, /* area pointers */ 8 15 /* area state flags */ 8 16 3 free (500) bit (1) unal, 8 17 2 text_area, /* text area pool */ 8 18 3 count fixed bin, 8 19 3 ptr (500) ptr, /* area pointers */ 8 20 /* area state flags */ 8 21 3 free (500) bit (1) unal, 8 22 3 string_area_count 8 23 fixed bin; /* line areas */ 8 24 dcl LINE_AREA_SIZE fixed bin static options (constant) init (24); 8 25 dcl line_area_ptr ptr init (null); 8 26 dcl 1 line_area aligned based (line_area_ptr), 8 27 2 next ptr, /* forward thread */ 8 28 2 prev ptr, /* backward thread */ 8 29 2 count fixed bin, /* number of lines allocated */ 8 30 2 ndx fixed bin, /* index of current line */ 8 31 2 pndx fixed bin, /* area pool index */ 8 32 2 linptr (LINE_AREA_SIZE) ptr; 8 33 /* text areas */ 8 34 dcl TEXT_AREA_SIZE fixed bin static options (constant) init (6); 8 35 dcl text_area_ptr ptr init (null); 8 36 dcl 1 text_area aligned based (text_area_ptr), 8 37 2 next ptr, /* forward thread */ 8 38 2 count fixed bin, /* number of areas allocated */ 8 39 2 ndx fixed bin, /* index of current strarea */ 8 40 2 pndx fixed bin, /* area pool index */ 8 41 2 strareaptr (TEXT_AREA_SIZE) ptr; 8 42 /* text string area */ 8 43 dcl string_area (256) fixed bin based; 8 44 dcl txtstrptr ptr; /* current text string */ 8 45 dcl txtstr char (1020) var based (txtstrptr); 8 46 8 47 dcl TEXT_VERSION fixed bin static options (constant) init (9); 8 48 /* general text block */ 8 49 dcl 1 text aligned based (shared.blkptr), 8 50 2 version fixed bin, /* version of structure */ 8 51 2 blkndx fixed bin, /* block data index */ 8 52 2 blktype char (2), /* block type code */ 8 53 /* dynamic block control stuff */ 8 54 2 hdr aligned like text_header, 8 55 /* text read from input file */ 8 56 2 input aligned like text_entry, 8 57 2 input_line char (1020) var,/* input buffer */ 8 58 2 line_area, 8 59 3 first ptr, /* head of line area thread */ 8 60 3 cur ptr, /* current line area */ 8 61 2 next_text ptr, /* next text string */ 8 62 /* text formatting parameters */ 8 63 2 parms aligned like default_parms, 8 64 2 text_area, 8 65 3 first ptr, /* head of text area thread */ 8 66 3 cur ptr; /* current text area */ 8 67 /* an empty text block line */ 8 68 dcl 1 text_entry aligned based (const.text_entry_ptr), 8 69 2 sws, /* unaligned switches, etc. */ 8 70 3 art bit (1) unal, /* line has artwork */ 8 71 3 cbar, /* change bar flags */ 8 72 4 add bit (1) unal, /* text addition flag */ 8 73 4 del bit (1) unal, /* text deletion flag */ 8 74 4 mod bit (1) unal, /* text modification flag */ 8 75 3 default bit (1) unal, /* 1 = default case as needed */ 8 76 3 DVctl bit (1) unal, /* 1 = line is a device ctl string */ 8 77 3 embedded bit (1) unal, /* 1 = line has an embedded control */ 8 78 3 end_keep bit (1) unal, /* 1= line ends a keep */ 8 79 3 fnt_chng bit (1) unal, /* 1 = text is a font change string */ 8 80 3 footref bit (1) unal, /* 1 = line has a footnote reference */ 8 81 3 hanging bit (1) unal, /* 1 = a hanging undent */ 8 82 3 keep bit (1) unal, /* 1 = unsplittable line */ 8 83 3 no_trim bit (1) unal, /* 1 = untrimmable white line */ 8 84 3 oflo bit (1) unal, /* line causes overflow */ 8 85 3 punct bit (1) unal, /* 1 = line ends with punctuation */ 8 86 3 quad bit (6) unal, /* text alignment flags */ 8 87 3 space_added /* 1= line has added space */ 8 88 bit (1) unal, 8 89 3 spcl, /* special entry - not output text */ 8 90 4 file bit (1) unal, /* 1= output to special file */ 8 91 4 blk_splt /* 1= action at block split time */ 8 92 bit (1) unal, 8 93 4 page_mkup /* 1= action at page makeup time */ 8 94 bit (1) unal, 8 95 3 table bit (1) unal, /* 1= line is a table entry */ 8 96 3 tblspc bit (1) unal, /* 1= WS fill for table mode */ 8 97 3 title bit (1) unal, /* 1= line is a */ 8 98 3 unspnct bit (1) unal, /* 1= underscore punctuation */ 8 99 3 unstop bit (1) unal, /* 1= line is/ends with UNSTOP */ 8 100 3 unstrt bit (1) unal, /* 1= line is/ends with UNSTART */ 8 101 3 unswrds bit (1) unal, /* 1= underscore words only */ 8 102 3 white bit (1) unal, /* 1= line is white space */ 8 103 3 und_prot bit (1) unal, /* 1= undent is protected */ 8 104 3 MBZ bit (4) unal, 8 105 2 art_start fixed bin unal, /* start of art string in line */ 8 106 2 art_len fixed bin unal, /* length of art string in line */ 8 107 2 cbar_level /* change level for cbars */ 8 108 char (1) aligned, 8 109 2 cur, /* current scanning data for line */ 8 110 3 chrct fixed bin, /* count of chars scanned */ 8 111 3 gaps fixed bin, /* gap count */ 8 112 3 width fixed bin (31), /* width of font chars */ 8 113 3 min fixed bin (31), /* width of min spbnds */ 8 114 3 avg fixed bin (31), /* width of avg spbnds */ 8 115 3 max fixed bin (31), /* width of max spbnds */ 8 116 3 font like fntstk_entry, 8 117 2 depth fixed bin (31), /* page depth for line */ 8 118 /* font at start of line */ 8 119 2 font like fntstk_entry, 8 120 2 index fixed bin (21), /* char index for line scanning */ 8 121 2 info, /* stuff created during line input */ 8 122 3 fileno fixed bin, /* input file index */ 8 123 3 lineno fixed bin, /* input file line number */ 8 124 3 lineno0 fixed bin, /* call_box0 line number */ 8 125 2 linespace fixed bin (31), /* linespace value for the line */ 8 126 2 lmarg fixed bin (31), /* adjusted left margin position */ 8 127 2 mod_len fixed bin, /* length of modified text */ 8 128 2 mod_start fixed bin, /* index for start of modified text */ 8 129 2 net fixed bin (31), /* net line width for filling */ 8 130 2 ptr ptr, /* pointer to the actual text */ 8 131 2 rmarg fixed bin (31), /* adjusted right margin position */ 8 132 2 spcl_iocbp ptr, /* iocb ptr for spcl line */ 8 133 2 sym_delim char (1) unal, /* symbol delimiter for this line */ 8 134 2 tblcol fixed bin, /* column for table entries */ 8 135 2 title_delim 8 136 char (1) unal, /* title delimiter if a <title> */ 8 137 2 title_index 8 138 fixed bin, /* <title> block index for line */ 8 139 2 width fixed bin (31), /* width of text */ 8 140 2 ftn, /* footnote info for line */ 8 141 3 ct fixed bin, /* number of footnote refs */ 8 142 3 used fixed bin (31), /* space used */ 8 143 3 e (40), /* limit is arbitrary */ 8 144 4 blkndx fixed bin unal, /* block index of footnote - if this 8 145* value is 0, then .frf was used */ 8 146 4 refno fixed bin unal; /* reference number */ 8 147 8 148 dcl ( 8 149 quadi init ("40"b3), /* set to the inside margin */ 8 150 quado init ("20"b3), /* set to the outside margin */ 8 151 quadl init ("10"b3), /* set left */ 8 152 quadc init ("04"b3), /* set centered */ 8 153 quadr init ("02"b3), /* set right */ 8 154 just init ("01"b3) /* justified */ 8 155 ) bit (6) static options (constant); 8 156 /* control line structure */ 8 157 dcl 1 ctl aligned like text_entry based (const.ctl_ptr); 8 158 dcl ctl_line char (1020) var based (ctl.ptr); 8 159 8 160 dcl txtlinptr ptr; /* the current text line */ 8 161 dcl 1 txtlin aligned like text_entry based (txtlinptr); 8 162 /* empty text header structure */ 8 163 dcl 1 text_header aligned based (const.text_header_ptr), 8 164 2 sws, /* control switches */ 8 165 3 art bit (1) unal, /* block has artwork */ 8 166 3 dfrftn bit (1) unal, /* block is a deferred footnote */ 8 167 3 modified bit (1) unal, /* block contains modified lines */ 8 168 3 no_trim bit (1) unal, /* 1 = dont trim WS block */ 8 169 3 oflo_ftn bit (1) unal, /* overflow footnote */ 8 170 3 tblblk bit (1) unal, /* a table block */ 8 171 3 unref bit (1) unal, /* block is an unreffed footnote */ 8 172 3 white bit (1) unal, /* block is a white space block */ 8 173 3 picture bit (1) unal, /* picture block */ 8 174 3 orphan bit (1) unal, /* 1= footnote is an orphan */ 8 175 3 MBZ bit (26) unal, 8 176 2 art_count fixed bin unal, /* to count input art lines */ 8 177 2 blkptr ptr, /* pointer to suspended block */ 8 178 2 cap_size fixed bin unal, /* line count of text caption */ 8 179 2 cap_used fixed bin (31), /* size of text caption */ 8 180 2 colno fixed bin unal, /* column owning the block */ 8 181 2 count fixed bin unal, /* line count for block */ 8 182 2 eqn_line_count 8 183 fixed bin unal, /* counter for equation lines */ 8 184 2 first_text fixed bin unal, /* OBSOLETE */ 8 185 2 ftn, /* footnotes */ 8 186 3 ct fixed bin, /* count */ 8 187 3 usd fixed bin (31), /* space used */ 8 188 3 blkndx (40) fixed bin, /* footnote block index values */ 8 189 2 head_size fixed bin, /* line count of text header */ 8 190 2 head_used fixed bin (31), /* size of text header */ 8 191 2 index fixed bin unal, /* block index of next output line */ 8 192 2 keep_count fixed bin unal, /* to count input keep lines */ 8 193 2 last_line fixed bin, /* last text line in column */ 8 194 2 mx_ttl_ndx fixed bin, /* max title index value in block */ 8 195 2 name char (32) var, /* block name, if any */ 8 196 2 nofill_count /* to count nofill lines */ 8 197 fixed bin, 8 198 2 parms_ptr ptr, /* parms for suspended block */ 8 199 2 refer fixed bin, /* inter-block reference */ 8 200 2 refer_index /* OBSOLETE */ 8 201 fixed bin, /* a reference */ 8 202 2 split fixed bin, /* split point for balancing */ 8 203 2 trl_ws fixed bin (31), /* trailing WS */ 8 204 2 used fixed bin (31); /* page space used by a column/block */ 8 205 /* text formatting parameters */ 8 206 dcl 1 text_parms aligned like default_parms 8 207 based (const.text_parms_ptr); 8 208 8 209 dcl 1 current_parms 8 210 aligned like default_parms 8 211 based (const.current_parms_ptr); 8 212 8 213 dcl 1 default_parms 8 214 aligned based (const.default_parms_ptr), 8 215 2 sws, /* control switches */ 8 216 3 quad bit (6) unal, /* text alignment mode */ 8 217 3 art bit (1) unal, /* 1 = block countains artwork */ 8 218 3 cbar, /* change bar flags */ 8 219 4 add bit (1) unal, /* text addition flag */ 8 220 4 del bit (1) unal, /* text deletion flag for next line */ 8 221 4 mod bit (1) unal, /* text modification flag */ 8 222 3 fill_mode 8 223 bit (1) unal, /* 1 = fill mode ON */ 8 224 3 footnote bit (1) unal, /* block is a footnote */ 8 225 3 hfc bit (1) unal, /* OBSOLETE */ 8 226 3 htab_mode 8 227 bit (1) unal, /* 1 = horizontal tab mode ON */ 8 228 3 keep bit (1) unal, /* keep mode */ 8 229 3 page bit (1) unal, /* block belongs to page, not text */ 8 230 3 title_mode 8 231 bit (1) unal, /* 0 = plain text, 1 = <title>s OK */ 8 232 3 MBZ bit (19) unal, 8 233 2 ftrptr ptr, /* text caption block */ 8 234 2 cbar_level /* change level for cbars */ 8 235 char (1) aligned, 8 236 2 hdrptr ptr, /* text header block */ 8 237 2 left, /* left margin data */ 8 238 3 indent fixed bin (31), 8 239 3 undent fixed bin (31), 8 240 2 linespace fixed bin (31), /* line spacing value */ 8 241 2 measure fixed bin (31), /* line space for text */ 8 242 /* right margin data */ 8 243 2 right like default_parms.left, 8 244 2 fntstk, /* stack of last 20 font changes */ 8 245 3 index fixed bin, /* which one in use */ 8 246 /* entry(0) is the default */ 8 247 3 entry (0:19) like fntstk_entry; 8 248 8 249 dcl hfcblk_ptr ptr; 8 250 dcl 1 hfcblk aligned like text based (hfcblk_ptr); 8 251 8 252 /* END INCLUDE FILE comp_text.incl.pl1 */ 3207 9 1 /* BEGIN INCLUDE FILE compstat.incl.pl1 - external static data for compose 9 2* 9 3* This storage is converted from external (as declared) to internal by the 9 4* binder and contains items that must be accessible to both the bound and 9 5* unbound program. */ 9 6 9 7 /* Written: ??/??/7? - EJW 9 8* Modified: 10/18/84 - EJW - (First recorded change) Added current_parms_ptr 9 9* and removed the codes array; version 6. 9 10**/ 9 11 9 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 9 13 9 14 dcl 1 compstat$compconst 9 15 aligned like const ext static; 9 16 9 17 dcl const_version fixed bin (35) static options (constant) init (6); 9 18 dcl MAX_TREE_AREA_CT /* entries in a tree area */ 9 19 fixed bin static options (constant) init (80); 9 20 dcl MAX_TREE_AREAS /* number of tree areas */ 9 21 fixed bin static options (constant) init (20); 9 22 9 23 dcl 1 const aligned based (compstat$compconst.ptr), 9 24 2 ptr ptr, /* self pointer - MUST BE FIRST */ 9 25 2 version fixed bin (35), /* structure version */ 9 26 2 art_symbols /* string of art symbols */ 9 27 char (28) aligned, 9 28 2 builtin_count /* count of builtin variables */ 9 29 fixed bin, 9 30 2 comp_dir char (200), /* dir in which compose lives */ 9 31 2 comp_version 9 32 char (8) var, /* compose version id */ 9 33 2 date_value char (8) var, /* current date */ 9 34 2 dsm_name char (32), /* device support module name */ 9 35 2 dvt_name char (32), /* device table name */ 9 36 2 max_seg_chars 9 37 fixed bin (35), /* char count in a max seg */ 9 38 2 null_str char (1) var, /* an empty string */ 9 39 2 ptrs, 9 40 ( 3 call_stk_ptr, /* -> insert call stack */ 9 41 3 colhdrptr, /* empty column header structure */ 9 42 3 ctl_ptr, /* input line structure */ 9 43 3 current_parms_ptr, /* current formatting parms */ 9 44 3 default_parms_ptr, /* default initial text parms */ 9 45 3 devptr, /* -> comp_dvt structure */ 9 46 3 dvidptr, /* -> comp_dvid structure */ 9 47 3 errblk_ptr, /* error message block pointer */ 9 48 3 footnote_parms_ptr, /* footnote formatting parms */ 9 49 3 fnttbldata_ptr, /* -> font table data */ 9 50 3 global_area_ptr, /* per invocation storage */ 9 51 3 init_page_parms_ptr, /* default initial page parms */ 9 52 3 insert_data_ptr, /* insert file data block */ 9 53 3 local_area_ptr, /* per file storage */ 9 54 3 loctbl_ptr, /* for font copying */ 9 55 3 option_ptr, /* program options block */ 9 56 3 outproc_ptr, /* device writer for cleanup */ 9 57 3 page_ptr, /* active page structure */ 9 58 3 page_header_ptr, /* empty page header structure */ 9 59 3 page_parms_ptr, /* page formatting parameter block */ 9 60 3 save_shared_ptr, /* saved shared data */ 9 61 3 shared_ptr, /* shared data structure */ 9 62 3 text_entry_ptr, /* empty text entry structure */ 9 63 3 text_header_ptr, /* empty text header structure */ 9 64 3 text_parms_ptr, /* main body formatting parms */ 9 65 3 tree_ptr /* symbol tree structure */ 9 66 ) ptr, 9 67 2 time_value char (6) var; /* time at start */ 9 68 9 69 /* Other external */ 9 70 dcl ( 9 71 ioa_, 9 72 ioa_$nnl 9 73 ) entry options (variable); 9 74 dcl iox_$error_output 9 75 ptr ext static, /* iocb pointer for error_output */ 9 76 iox_$user_input 9 77 ptr ext static, /* iocb pointer for user_input */ 9 78 iox_$user_output 9 79 ptr ext static; /* iocb pointer for user_output */ 9 80 dcl sys_info$max_seg_size 9 81 fixed bin (18) ext static; 9 82 9 83 /* END INCLUDE FILE compstat.incl.pl1 */ 3208 10 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 10 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 10 3 /* version number changed to 4, 08/10/78 WOS */ 10 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 10 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 10 6 10 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 10 8 2 version fixed bin, /* version of this structure - must be set, see below */ 10 9 2 switches aligned, /* various bit switch values */ 10 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 10 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 10 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 10 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 10 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 10 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 10 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 10 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 10 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 10 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 10 20 10 21 /* Limit of data defined for version 2 */ 10 22 10 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 10 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 10 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 10 26 /* minimum of 30 seconds required for repeat */ 10 27 /* otherwise, no repeat will occur */ 10 28 /* Limit of data defined for version 4 */ 10 29 10 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 10 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 10 32 10 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 10 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 10 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 10 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 10 37 10 38 /* END INCLUDE FILE query_info.incl.pl1 */ 3209 3210 3211 end process_compout; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/23/85 0911.5 process_compout.pl1 >special_ldd>online>compose-04/17/85>process_compout.pl1 3200 1 03/01/85 1411.9 comp_dvid.incl.pl1 >ldd>include>comp_dvid.incl.pl1 3201 2 03/01/85 1411.9 comp_dvt.incl.pl1 >ldd>include>comp_dvt.incl.pl1 3202 3 03/01/85 1411.9 comp_entries.incl.pl1 >ldd>include>comp_entries.incl.pl1 3203 4 03/01/85 1412.0 comp_fntstk.incl.pl1 >ldd>include>comp_fntstk.incl.pl1 3204 5 03/01/85 1412.0 comp_output.incl.pl1 >ldd>include>comp_output.incl.pl1 3205 6 04/23/85 0912.4 comp_page.incl.pl1 >special_ldd>online>compose-04/17/85>comp_page.incl.pl1 3206 7 03/01/85 1412.0 comp_shared.incl.pl1 >ldd>include>comp_shared.incl.pl1 3207 8 04/23/85 0912.6 comp_text.incl.pl1 >special_ldd>online>compose-04/17/85>comp_text.incl.pl1 3208 9 03/01/85 1412.1 compstat.incl.pl1 >ldd>include>compstat.incl.pl1 3209 10 03/11/83 1204.3 query_info_.incl.pl1 >ldd>include>query_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ABS constant char(1) initial unaligned dcl 431 ref 684 752 2506 BEGIN 000502 constant fixed bin(17,0) initial dcl 265 set ref 1187* BELHT 025255 constant char(2) initial unaligned dcl 266 ref 549 549 1446 BOF 000414 constant fixed bin(17,0) initial dcl 267 set ref 992* 1002* CR constant char(1) initial unaligned dcl 273 ref 547 549 CRLF 000300 constant char(2) initial unaligned dcl 3177 set ref 1273 1273 1339 1347 1353 1356 1370 1383 1403 1408 1649 1698 END 000501 constant fixed bin(17,0) initial dcl 283 set ref 1174* 1254* 2835 ESC constant char(1) initial unaligned dcl 2823 ref 2865 FSPREC 000472 constant fixed bin(17,0) initial dcl 319 set ref 1003* NEG_REL constant char(1) initial unaligned dcl 431 ref 696 2029 2484 2498 NL constant char(1) initial unaligned dcl 3154 ref 1492 1492 1497 1497 1511 1521 1526 NOVOL 000310 constant char(6) initial unaligned dcl 339 ref 544 2309 NULs 000302 constant char(8) initial unaligned dcl 3156 ref 1025 ONLINE 000306 constant char(4) initial unaligned dcl 340 ref 542 902 919 1109 1159 1244 1271 1551 1644 1693 PADHT 025254 constant char(2) initial unaligned dcl 322 ref 547 547 1444 PCHoff constant char(1) initial unaligned dcl 2739 ref 2706 PCHon constant char(1) initial unaligned dcl 2738 ref 2723 POS_REL constant char(1) initial unaligned dcl 431 ref 737 2026 2490 PUNCH 000604 constant char(4) initial unaligned dcl 380 ref 827 1571 SEARCH_ID constant char(1) initial unaligned dcl 431 ref 713 2513 SEQUENTIAL_INPUT 000500 constant fixed bin(17,0) initial dcl 1870 set ref 1888* STREAM_INPUT 000502 constant fixed bin(17,0) initial dcl 1872 set ref 1896* TAPE 000305 constant char(4) initial unaligned dcl 420 ref 853 1289 1344 1516 1571 1722 UNLIMITED constant fixed bin(17,0) initial dcl 425 ref 540 active_fnc_err_ 000066 constant entry external dcl 3109 ref 2901 2926 addr builtin function dcl 444 ref 556 693 693 704 704 742 742 758 758 924 924 1047 1121 1121 1132 1132 1198 1273 1273 1449 1449 1451 1451 1452 1452 1453 1453 1487 1840 1840 1845 1845 1846 1846 1900 1900 2017 2099 2229 2240 2358 2458 2582 2626 2664 2664 2713 2713 2718 2718 2841 2841 2845 2845 2849 2849 2871 2871 2878 2878 2887 2887 2970 2970 2997 addrel builtin function dcl 444 ref 924 924 1840 1840 2582 af_data based structure level 1 unaligned dcl 244 af_data_ptr 000010 internal static pointer initial dcl 243 set ref 568* 569 581 819* 1962* 2908 2914 2916 2933 2958 2959 2962 3007 3007 3008 3008 3009 3009 af_type 000100 automatic fixed bin(17,0) dcl 3091 set ref 3039* 3041* 3043* 3047 3086 3086 3086 3086 3086* after builtin function dcl 444 ref 1619 1619 2596 2947 ans 44 based varying char(168) array level 3 dcl 244 set ref 2962 3009* answer 000100 automatic varying char(4) dcl 250 set ref 704* 707 742* 745 758* 763 answer_iocbp 6 014152 automatic pointer initial level 2 dcl 10-7 set ref 10-7* arg based char unaligned dcl 252 in procedure "pco" set ref 515 2941 2942 2946 2947 2959 2968* 3008 arg based varying char(200) array level 2 in structure "arg_list" dcl 254 in procedure "pco" set ref 515* 2033 2036 2038* 2047 2048* 2078 2079* 2116 2116 2117* 2133* 2145 2185 2190* 2210 2218 2223 2225 2235 2245* 2255 2261 2269 2273* 2278* 2317 2320* 2394 2397 2401* 2480 2481 2487 2491 2495 2499 2503 2507 arg_list based structure level 1 unaligned dcl 254 arg_list_ptr defined pointer dcl 260 ref 515 2030 2033 2036 2038 2047 2048 2078 2079 2116 2116 2117 2133 2135 2145 2185 2190 2210 2218 2223 2225 2235 2245 2255 2261 2269 2273 2278 2317 2320 2394 2397 2401 2407 2480 2481 2487 2491 2495 2499 2503 2507 argct 000102 automatic fixed bin(17,0) dcl 261 set ref 475* 483 513 515 2030 2032 2033 2036 2038 2043 2047 2048 2073 2078 2079 2111 2116 2116 2117 2130 2133 2141 2145 2185 2190 2210 2210 2218 2223 2225 2235 2245 2246 2255 2255 2261 2269 2273 2278 2294 2317 2320 2393 2394 2397 2401 2434* 2434 2480 2481 2487 2491 2495 2499 2503 2507 argl 000103 automatic fixed bin(21,0) dcl 262 set ref 514* 515 1132* 1846* 1849 2940* 2941 2942 2946 2947 2950* 2959 2968 2968 3008 argno 000104 automatic fixed bin(17,0) dcl 263 set ref 513* 514* 515* 2032* 2033 2036 2038 2043 2046* 2046 2047 2048 2073 2077* 2077 2078 2079 2111 2115* 2115 2116 2116 2117 2130 2133 2134* 2134 2135 2141 2144* 2144 2145 2185 2190 2210 2210 2216* 2216 2218 2223 2225 2235 2245 2246 2255 2255 2259* 2259 2261 2269 2273 2278 2294 2304* 2304 2317 2320* 2393* 2394 2397 2401 2407* 2480 2481 2487 2491 2495 2499 2503 2507 2939* 2940* 2942 2942 2946 2947* 2989* 2990 2993* argp 000106 automatic pointer dcl 264 set ref 514* 515 2940* 2941 2942 2946 2947 2950* 2959 2968 3008 asis based bit(1) array level 2 packed unaligned dcl 254 set ref 2030* 2135* 2407 atd 000105 automatic varying char(256) dcl 2555 set ref 2593* 2594* 2594 2595* 2595 2596* 2596 2597* 2597 2599* 2599 2600* 2600 2602 2606* before builtin function dcl 444 ref 1369 1492 1492 1511 1521 1543 1543 1596 2409 2593 2946 beg parameter fixed bin(17,0) dcl 2478 ref 2475 2480 2481 2487 2491 2495 2499 2503 2507 bi9 000211 automatic fixed bin(17,0) dcl 2558 set ref 2634* 2642 2644* 2644 bit36 000214 automatic varying bit(36) dcl 2560 set ref 2629* 2638* 2638 2642* 2642 2651 2654 2655 2655* 2657* 2657 2659 bit9 000212 automatic bit(9) unaligned dcl 2559 set ref 2633* 2642 bl 000210 automatic fixed bin(24,0) dcl 2557 set ref 2577* 2583* 2628* 2652* 2652 2653 2654 2661 2663 2682* blank based bit(1) array level 4 in structure "pagelist" packed unaligned dcl 355 in procedure "pco" set ref 640* 811* 1396 blank 10(03) based bit(1) level 3 in structure "record" packed unaligned dcl 5-46 in procedure "pco" set ref 640 1210* bp 000206 automatic pointer dcl 2556 set ref 2576* 2582* 2626* 2653 2654 2661 2664 2664 2681* brief_sw 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 953 962 1040 2054* 2380* bs based structure array level 1 packed unaligned dcl 2561 cct 014015 automatic fixed bin(17,0) array level 2 dcl 3170 set ref 1756* 1777* 1777 1782 1789* 1791 1793* 1793 1811 2638 2642 2644 ch 000103 automatic char(1) unaligned dcl 3094 set ref 3058* 3059 3072 3078 change_signal 014534 automatic char(128) unaligned dcl 1442 set ref 1444* 1446* 1449 1449 changed based bit(1) array level 4 in structure "pagelist" packed unaligned dcl 355 in procedure "pco" set ref 638* 776 811* changed 10 based bit(1) level 3 in structure "record" packed unaligned dcl 5-46 in procedure "pco" set ref 638 1018 1210* char builtin function dcl 444 ref 2730 check_star_name_$entry 000152 constant entry external dcl 2002 ref 2411 cleanup 36 based char level 2 in structure "fileheader" dcl 5-22 in procedure "pco" ref 590 2849 cleanup 012446 stack reference condition dcl 449 in procedure "pco" ref 565 cleanup_leng 35 based fixed bin(17,0) level 2 dcl 5-22 ref 589 code parameter fixed bin(35,0) dcl 3034 in procedure "evaluate_af_" set ref 3031 3053* 3066* 3086* code 000110 automatic fixed bin(35,0) dcl 268 in procedure "pco" set ref 475* 476 479* 496* 497 500* 514* 616* 620 623 626* 876* 878* 884* 887* 888* 924* 928* 992* 1002* 1003 1003* 1007 1007* 1010 1013 1013* 1121* 1130* 1132* 1273* 1303* 1304 1307* 1448* 1449* 1451* 1452* 1453* 1657* 1660 1663* 1836* 1838* 1840* 1845* 1846* 1847* 1885* 1888 1888* 1890 1893 1896* 1897 1900* 1902 1917* 1920* 1924* 1926 1935* 1939 1942* 1963* 1971* 1972* 1977* 1978* 2397* 2398 2401* 2411* 2414 2419 2419* 2426* 2428 2428* 2526* 2527 2527* 2537* 2539 2539* 2602* 2603 2606* 2610* 2611 2614* 2664* 2666 2669* 2673* 2676* 2713* 2714* 2715* 2717* 2718* 2841* 2845* 2849* 2871* 2874 2877* 2878* 2887* 2900* 2901 2922* 2923 2940* 2950* 2951 2954* 2970* 2973 codeptr builtin function dcl 444 ref 561 561 563 563 1657 1657 collate builtin function dcl 444 ref 1905 com_err_ 000032 constant entry external dcl 452 ref 479 486 500 531 626 725 847 878 969 1013 1307 1543 1565 1578 1600 1628 1663 1730 1762 1817 1909 1920 1942 2105 2204 2273 2285 2299 2309 2325 2333 2341 2349 2371 2386 2401 2419 2428 2527 2539 2572 2588 2606 2614 2669 2877 2905 2930 command_query_ 000034 constant entry external dcl 453 ref 704 742 758 comment based char level 2 in structure "fileheader" dcl 5-22 in procedure "pco" set ref 1487 comment based char unaligned dcl 1474 in procedure "proc_comment" ref 1492 1492 1497 1497 1502 1506 1511 1516 1521 1526 1529 comment_leng based fixed bin(17,0) level 2 dcl 5-22 ref 1486 comment_ptr 014602 automatic pointer dcl 1475 set ref 1487* 1492 1492 1497 1497 1502 1506 1511 1516 1521 1526 1529 comment_sw 0(01) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 613 821 1489 2067* 2164* comp_dvid based structure level 1 dcl 1-17 comp_util_$display 000114 constant entry external dcl 3-77 ref 605 2869 compans 012504 automatic varying char(200) dcl 3105 set ref 2975* 2977 2979 2983 3001* 3011* 3015 3015 3017 compout based varying char(32) level 2 dcl 244 set ref 581* 2914* 2916 compstat$compconst 000116 external static structure level 1 dcl 9-14 con 1 014015 automatic bit(27) array level 2 packed unaligned dcl 3170 set ref 1757* 1782* 2638 const based structure level 1 dcl 9-23 contents based varying char(262143) dcl 271 set ref 832* 858* 884 884 886 886 887 1337* 1339* 1339 1342* 1342 1344* 1344 1347* 1347 1348* 1348 1353* 1353 1354* 1354 1356* 1356 1368* 1368 1369* 1369 1370* 1370 1382* 1382 1383* 1383 1390* 1390 1392* 1392 1396* 1396 1398* 1398 1399* 1399 1401* 1401 1402* 1402 1403* 1403 1407* 1407 1408* 1408 2582 2583 contents_l 000111 automatic fixed bin(17,0) dcl 272 set ref 1336* 1389* 1389 1390 2597 contents_ptr defined pointer dcl 270 ref 568 832 858 884 884 886 886 887 1337 1339 1339 1342 1342 1344 1344 1347 1347 1348 1348 1353 1353 1354 1354 1356 1356 1368 1368 1369 1369 1370 1370 1382 1382 1383 1383 1390 1390 1392 1392 1396 1396 1398 1398 1399 1399 1401 1401 1402 1402 1403 1403 1407 1407 1408 1408 2582 2583 contents_seg_sw 0(02) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 861 1719* 2446* contents_tap_sw 0(03) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 1350 1725* 2578 2621 2678 continue_to_signal_ 000036 constant entry external dcl 454 ref 928 convert builtin function dcl 444 ref 1390 2047 2491 2499 2507 count 11 based fixed bin(17,0) level 2 dcl 244 set ref 569* 2958 3007* 3007 3008 3009 cp_escape_control 1(02) 014152 automatic bit(2) initial level 3 packed unaligned dcl 10-7 set ref 10-7* cpwf_sw 0(04) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 965 1113 1257 2058* 2061* ctl_file 000112 automatic varying char(168) array dcl 274 set ref 2078* ctl_file_count 010426 automatic fixed bin(17,0) dcl 276 set ref 520* 2076* 2076 2078 cu_$af_return_arg 000072 constant entry external dcl 3113 ref 2900 2922 cu_$arg_count 000040 constant entry external dcl 456 ref 475 cu_$arg_ptr 000042 constant entry external dcl 457 ref 514 2940 2950 cu_$evaluate_active_string 000164 constant entry external dcl 3095 ref 3086 current_modes 015015 automatic char(256) unaligned dcl 1832 set ref 1838* 1847* d 0(01) based bit(8) array level 2 packed unaligned dcl 2561 set ref 2654* db_displ_str 000100 automatic varying char(4096) dcl 2814 set ref 2869* 2871 2871 2871 2871 debug_sw 0(05) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 593 605 840 895 904 919 1021 1052 1081 1109 1159 1204 1210* 1244 1267 1415 1497 1522 1621 1644 1653 1693 2084* dec builtin function dcl 444 ref 2719 default_ans 012567 automatic varying char(200) dcl 3106 set ref 2957* 2962* 2968* 2979 default_parms based structure level 1 dcl 8-213 delay 000016 internal static structure level 1 dcl 2819 set ref 2841 2841 2845 2845 2849 2849 2878 2878 2887 2887 device 21 based char(32) level 2 dcl 5-22 set ref 593* 1565* 1578* 1657 1657 1663 1663 device_class 1 based char(32) level 2 dcl 5-22 set ref 593* device_cleanup 010427 automatic varying char(100) dcl 277 set ref 493* 586 590* 605 605 919 924 924 924 924 1159 1164 1167 1167 1167 1244 1248 1249 1249 1249 1840 1840 1840 1840 1840 device_name 11 based char(32) level 2 dcl 5-22 set ref 593* devptr 140 based pointer level 3 dcl 9-23 set ref 1668* display_sw 0(06) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 840 895 904 919 962 965 1109 1139 1159 1244 1267 1339 1571 1605 1653 1693 1703 2089* 2157* 2446 divide builtin function dcl 444 ref 884 884 953 953 1028 1061 2626 2707 dlen 002101 automatic fixed bin(17,0) dcl 2815 set ref 2860* 2862 2866* 2866 2869 2869 2869* 2884 dname 015152 automatic char(168) unaligned dcl 2449 set ref 2397* 2426* 2428* 2469 doing parameter fixed bin(17,0) dcl 2812 in procedure "put_online" ref 2809 2835 doing parameter fixed bin(17,0) dcl 2696 in procedure "put_punch" ref 2693 2700 doing parameter fixed bin(17,0) dcl 2550 in procedure "put_tape" ref 2547 2566 done 010461 automatic bit(1) unaligned dcl 282 set ref 611* 613 620* 627* 984* 987 1230* 1750* 1754 1806* dt_sw 000012 internal static bit(1) initial unaligned dcl 3021 set ref 571 656 797 913 3024* 3028* dump_segment_ 000044 constant entry external dcl 458 ref 953 1040 1074 dump_sw 0(07) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 947 965 1034 1052 1074 1081 1081 1605 1693 2094* 2150* 2338 dvidptr 142 based pointer level 3 dcl 9-23 set ref 1657* 1668 1668 dvt_r 11 based bit(18) level 2 dcl 1-17 ref 1668 e 12 based structure array level 2 unaligned dcl 244 e_c 015144 automatic fixed bin(17,0) dcl 1990 set ref 2426* 2433 2438 e_p 015146 automatic pointer dcl 1991 set ref 2426* 2435 2438 ename 55 based varying char(32) level 2 in structure "file_entry" dcl 287 in procedure "pco" set ref 581 959* 1369 1418* 2468* 2471 2728 ename 015132 automatic char(32) unaligned dcl 1987 in procedure "proc_args" set ref 2397* 2407* 2407 2409* 2409 2411* 2419* 2426* 2428* 2435* 2468 entries based structure array level 1 dcl 1993 ref 2438 err_out 012652 automatic entry variable dcl 3108 set ref 2901* 2905* 2911 2926* 2930* 2936 2954 error_sw 0(08) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 525 613 707* 727* 745* 763* 849* 908 1309* 1549* 1567* 1580* 1602* 1631* 1666* 1732* 1765* 1819* 2104* 2203* 2272* 2297* 2312* 2387* 2403* 2616* error_table_$bad_file 000142 external static fixed bin(35,0) dcl 1874 ref 1893 1917 error_table_$badopt 000150 external static fixed bin(35,0) dcl 1999 set ref 2386* error_table_$end_of_info 000026 external static fixed bin(35,0) dcl 439 ref 620 1013 2973 error_table_$improper_data_format 000144 external static fixed bin(35,0) dcl 1876 set ref 1909* error_table_$inconsistent 000074 external static fixed bin(35,0) dcl 3182 set ref 2105* 2204* 2273* 2285* 2299* 2309* 2325* 2333* 2341* 2349* 2371* error_table_$out_of_sequence 000070 external static fixed bin(35,0) dcl 3111 set ref 2911* 2936* error_table_$unbalanced_brackets 000166 external static fixed bin(35,0) dcl 3098 ref 3053 error_table_$unbalanced_quotes 000170 external static fixed bin(35,0) dcl 3100 ref 3066 error_table_$unimplemented_version 000030 external static fixed bin(35,0) dcl 441 set ref 969* 1935 expand_pathname_ 000112 constant entry external dcl 3196 ref 2397 explanation_len 14 014152 automatic fixed bin(21,0) initial level 2 dcl 10-7 set ref 10-7* explanation_ptr 12 014152 automatic pointer initial level 2 dcl 10-7 set ref 10-7* file 2 based varying char(168) level 2 in structure "file_entry" dcl 287 in procedure "pco" set ref 583 626* 663* 679 704* 725* 742* 758* 941 962* 969* 1013* 1361 1418* 1492* 1543* 1565* 1578* 1600* 1628* 1628* 1762* 1817* 1882 1885 1909* 1920* 1942* 1947* 2021* 2455 2469* 2470* 2470 2471* 2471 2572* 2588* file 2 based structure array level 2 in structure "pagelist" unaligned dcl 355 in procedure "pco" file_count based fixed bin(17,0) level 2 dcl 355 set ref 557* 635 636 637 638 639 640 641 641 641 645 645 645 645 651 717 776 776 780 789 811 811 811 811 811 1208 1214 1376 1379 1396 1399 1402 1404 file_entry based structure level 1 dcl 287 set ref 2463* 2463 file_entry_base_ptr 010466 automatic pointer array dcl 311 set ref 519* 574 670 803 937 1359 1628 1644 2014 2014* 2017* file_entry_ptr 010464 automatic pointer dcl 286 set ref 556 556 574* 574* 581 583 626 663* 664 670* 670* 679 679 684 684 693 693 704 725 742 755 755 758 758 758 758 758 765 765 768 774 774 781 781 786 786 790 790* 795 803* 803* 816 937* 937* 941 959 962 969 975 989 998 1001 1013 1018 1018 1218 1225 1230* 1266 1359* 1359* 1361 1369 1372 1373 1373 1418 1418 1420 1420 1420 1420 1420 1420 1423 1424 1424 1424 1426 1426 1426* 1430 1492 1543 1565 1578 1600 1628 1644 1762 1817 1882 1885 1909 1920 1942 1947 1951 2014* 2017 2017 2017* 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2099 2100 2214 2222 2222 2229 2229 2232 2232 2232 2232 2240 2240 2254 2264 2288 2288 2322 2327 2330 2335 2358 2374 2455 2458 2458 2458 2459* 2463 2463 2464* 2465 2468 2469 2470 2470 2471 2471 2471 2572 2588 2727 2727 2728 2730 file_no based fixed bin(17,0) array level 3 dcl 355 set ref 636* filedata_version_2 constant fixed bin(17,0) initial dcl 5-14 ref 1935 filedata_version_3 constant fixed bin(17,0) initial dcl 5-16 ref 1929 filedata_version_4 constant fixed bin(17,0) initial dcl 5-18 ref 965 1932 fileheader based structure level 1 dcl 5-22 fileheader_ptr 014136 automatic pointer initial dcl 5-21 set ref 508* 589 590 593 593 593 593 593 953* 965 5-21* 1486 1487 1562 1565 1569 1574 1578 1657 1657 1663 1663 1924* 1929 1929 1932 1932 1935 filno 010472 automatic fixed bin(17,0) dcl 316 set ref 558* 582* 582 583 584 633 636 656 656 656 656 666 669* 674* 674 676 677 802* 806* 806 807 807 807 810 810 935* 980 1358* 1365* 1365 1366 2855* 2855 first_p 012666 automatic pointer dcl 3145 set ref 2014* 2017* 2459 first_pref_sw 0(09) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 983* 1088 1099 1103* 1200* fntstk_entry based structure level 1 dcl 4-6 format 000304 constant bit(11) initial unaligned dcl 3146 set ref 953* 1040* 1074* from 72 based structure array level 3 in structure "file_entry" dcl 287 in procedure "pco" set ref 693 2099 2229 2232 from 55 based fixed bin(17,0) array level 3 in structure "pagelist" dcl 355 in procedure "pco" set ref 584* 656* 676 807* 810 980 1366 from_to based structure level 1 dcl 317 from_to_ptr 010474 automatic pointer dcl 318 set ref 693* 696 699 704 713 717 725 735 737 742 751 752* 2099* 2229* 2240* 2358* 2480 2484 2485 2490 2491 2491 2498 2499 2499 2506 2507 2507 2513 2514 from_to_sw 0(10) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 2114* 2200 front 10(01) based bit(1) level 3 in structure "record" packed unaligned dcl 5-46 in procedure "pco" set ref 639 1210* front based bit(1) array level 4 in structure "pagelist" packed unaligned dcl 355 in procedure "pco" set ref 639* 645 645 645 811* 1399 get_system_free_area_ 000154 constant entry external dcl 2004 ref 2424 get_temp_segments_ 000050 constant entry external dcl 461 ref 496 get_wdir_ 000132 constant entry external dcl 866 ref 876 876 878 878 given_file_count 010462 automatic fixed bin(17,0) dcl 284 set ref 520* 528 557 2454* 2454 halt 0(02) based bit(1) level 3 packed unaligned dcl 5-64 set ref 1052* halt2 0(03) based bit(1) level 3 packed unaligned dcl 5-64 set ref 1052* halt3 0(04) based bit(1) level 3 packed unaligned dcl 5-64 set ref 1052* halt4 0(05) based bit(1) level 3 packed unaligned dcl 5-64 set ref 1052* 1127 hbound builtin function dcl 444 ref 1505 hcs_$make_ptr 000046 constant entry external dcl 460 ref 561 563 1657 hcs_$make_seg 000130 constant entry external dcl 864 ref 876 hcs_$set_bc_seg 000140 constant entry external dcl 873 ref 887 hcs_$star_ 000156 constant entry external dcl 2006 ref 2426 hcs_$terminate_noname 000136 constant entry external dcl 871 ref 888 hcs_$truncate_seg 000134 constant entry external dcl 869 ref 884 header based structure level 2 dcl 5-46 header_out_ptr 010520 automatic pointer dcl 321 set ref 556* header_sw 0(11) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 947 2121* 2124* holes 000022 constant varying char(8) initial array dcl 2759 ref 2754 2755 2755 2755 horz_nl 3 000016 internal static float bin(27) level 3 dcl 2819 set ref 2844* i 012670 automatic fixed bin(17,0) dcl 3148 in procedure "pco" set ref 810* 811 811* 811 811 811 811* 1261* 1373* 1376 1379 1396 1399 1402 1404* 1423* 1424* 1424 1424 1424 1426 1426 1426* 1610* 1707* 1708 1709 1712* 1712 1716 1720* 1720 1722 1726* 1726 1735 1735* 1735 2221* 2231* 2234* 2235 2242* 2433* 2435* 2630* 2633* 2941* 2942 i 002102 automatic fixed bin(24,0) dcl 2816 in procedure "put_online" set ref 2857* 2858 2860 2865 2869 2869 2884* 2884 i 000100 automatic fixed bin(17,0) dcl 2746 in procedure "letters" set ref 2748* 2749* i 014511 automatic fixed bin(21,0) dcl 1286 in procedure "af_proc" set ref 1288* 1289 1295 1296 1298 1319* 1321 i 000100 automatic fixed bin(17,0) dcl 1462 in procedure "gather_cons" set ref 1464* 1465 i 000102 automatic fixed bin(17,0) dcl 3093 in procedure "evaluate_af_" set ref 3048* 3050 3057 3062* 3063 3069 i 000100 automatic fixed bin(24,0) dcl 2698 in procedure "put_punch" set ref 2707* 2708 2708* i2 012672 automatic fixed bin(21,0) dcl 3149 set ref 1303* 1315* 1318 id 105 based char(32) array level 4 in structure "file_entry" dcl 287 in procedure "pco" set ref 758* 1426* 2028* id 1 based char(32) level 2 in structure "from_to" dcl 317 in procedure "pco" set ref 704* 717 725* 742* 2480* id 73 based char(32) array level 4 in structure "file_entry" dcl 287 in procedure "pco" set ref 758* 1424* 2025* id based char(32) array level 3 in structure "pagelist" packed unaligned dcl 355 in procedure "pco" set ref 635* 717 811* 1402 id_preface 0(07) based bit(1) level 3 packed unaligned dcl 5-64 set ref 1052* 1096 ii 010522 automatic fixed bin(17,0) dcl 323 in procedure "pco" set ref 1574* 1575 1582 ii 000100 automatic fixed bin(24,0) dcl 2552 in procedure "put_tape" set ref 2663* 2664 2664* in_str parameter char unaligned dcl 3034 ref 3031 3039 3041 3043 3048 3058 3062 3086 3086 in_used parameter fixed bin(21,0) dcl 3034 set ref 3031 3047* 3048 3057* 3057 3058 3062 3069* 3069 3085* 3085 3086 3086 index builtin function dcl 444 ref 1261 1506 1516 1526 1758 1789 2033 2184 2210 2223 2495 2749 2865 2941 3015 3062 info 161 based structure level 2 in structure "ctl" dcl 8-157 in procedure "pco" info 161 based structure level 2 in structure "txtlin" dcl 8-161 in procedure "pco" info 161 based structure level 2 in structure "text_entry" dcl 8-68 in procedure "pco" info 277 based structure level 3 in structure "text" dcl 8-49 in procedure "pco" info 277 based structure level 3 in structure "hfcblk" dcl 8-250 in procedure "pco" input_delays 002104 automatic structure level 1 dcl 2824 set ref 2843* 2847 input_iocbp 010524 automatic pointer dcl 326 set ref 494* 616* 992* 1002* 1003* 1007* 1885* 1888* 1896* 1900* 1924* 1968 1971* 1972* ioa_ 000120 constant entry external dcl 9-70 ref 571 593 605 656 800 807 811 832 858 911 950 959 962 1021 1037 1052 1067 1208 1210 1214 1271 1418 1420 1424 1426 1492 1497 1522 1592 1621 1641 2265 2711 2712 2719 2914 2997 3011 ioa_$nnl 000122 constant entry external dcl 9-70 ref 2968 iox_$attach_name 000052 constant entry external dcl 463 ref 1885 2602 iox_$close 000054 constant entry external dcl 465 ref 1971 1977 2673 iox_$control 000160 constant entry external dcl 2832 in procedure "put_online" ref 2841 2845 2849 2878 2887 iox_$control 000076 constant entry external dcl 3187 in procedure "pco" ref 1130 1448 1836 iox_$detach_iocb 000056 constant entry external dcl 466 ref 1972 1978 2676 iox_$get_chars 000146 constant entry external dcl 1879 ref 1900 iox_$get_line 000100 constant entry external dcl 3188 ref 1132 1451 1453 1846 2713 2718 2970 iox_$modes 000102 constant entry external dcl 3190 ref 1838 1847 2526 2537 2714 2717 iox_$open 000060 constant entry external dcl 468 ref 1888 1896 2610 iox_$position 000104 constant entry external dcl 3191 ref 992 1002 1003 iox_$put_chars 000062 constant entry external dcl 469 ref 924 1121 1273 1449 1452 1840 1845 2715 2871 iox_$read_record 000064 constant entry external dcl 470 ref 616 1007 1924 iox_$user_input 000124 external static pointer dcl 9-74 set ref 1130* 1132* 1448* 1451* 1453* 1836* 1846* 2713* 2718* 2970* iox_$user_io 000162 external static pointer dcl 2833 ref 2838 2878 2887 iox_$user_output 000126 external static pointer dcl 9-74 set ref 924* 953* 1040* 1074* 1121* 1273* 1449* 1452* 1838* 1840* 1845* 1847* 2526* 2537* 2714* 2715* 2717* 2838 2841* 2845* 2849* 2871* 2878 2878* 2887 2887* iox_$write_record 000106 constant entry external dcl 3192 ref 2664 ipage 010526 automatic fixed bin(17,0) dcl 327 set ref 679* 684 684 689* 689 693 693 755 755 758 758 758 758 765 765 774 774 786 786* 985* 989 998 1001 1225 1228* 1228 1230 1372* 1373 1373* it 012673 automatic fixed bin(24,0) dcl 3150 set ref 1758* 1759 1768 1769 1793 j 002103 automatic fixed bin(24,0) dcl 2816 in procedure "put_online" set ref 2865* 2866 j 010527 automatic fixed bin(17,0) dcl 328 in procedure "pco" set ref 717* 717* 722 730 2184* 2185 2187 2958* 2959 2962 2963* j 000101 automatic fixed bin(17,0) dcl 2746 in procedure "letters" set ref 2749* 2752 2752* 2752 2754 2755 2755 2755 j 014604 automatic fixed bin(17,0) dcl 1476 in procedure "proc_comment" set ref 1526* 1529 1531 1809* 1811* 1811 1814 j 014512 automatic fixed bin(21,0) dcl 1286 in procedure "af_proc" set ref 1294* 1296 1298* 1298 1299 1299 1299 1303 1303 1307 1307 1314 1318* 1318 1319 1321 keyword 010476 automatic varying char(64) dcl 320 set ref 2036* 2040 2051 2051 2058 2058 2061 2061 2064 2070 2070 2081 2081 2086 2086 2091 2096 2096 2105* 2121 2121 2124 2124 2127 2127 2138 2193 2193 2196 2196 2196 2196 2251 2251 2273* 2282 2282 2291 2299* 2355 2362 2362 2368 2368 2377 2377 2386* 2713 2713 2718 2718 l 012671 automatic fixed bin(17,0) dcl 3148 set ref 2223* 2225 2225* 2227* 2227 2231* 2234 2235* 2237 2242* l_cleanup 014141 automatic fixed bin(17,0) dcl 5-43 set ref 589* 590 605 605 1486 1487 l_comment 014140 automatic fixed bin(17,0) dcl 5-42 set ref 1486* 1487 1492 1492 1497 1497 1502 1506 1511 1516 1521 1526 1529 leader 010530 automatic varying char(256) dcl 329 set ref 536* 1637* 2734 left 1016 based structure level 3 in structure "hfcblk" dcl 8-250 in procedure "pco" left 12 based structure level 2 in structure "current_parms" dcl 8-209 in procedure "pco" left 12 based structure level 2 in structure "text_parms" dcl 8-206 in procedure "pco" left 1016 based structure level 3 in structure "text" dcl 8-49 in procedure "pco" left 12 based structure level 2 in structure "default_parms" dcl 8-213 in procedure "pco" len parameter fixed bin(17,0) dcl 2478 ref 2475 2480 2481 2491 2499 2507 leng 1 based fixed bin(24,0) level 2 dcl 5-64 set ref 1052* 1052* 1061 1088 1106 1121 1121 1121 1142 1143 1143 1143 1180 1182 1182 1182 1193 1197 1198 length builtin function dcl 444 ref 884 884 886 887 924 924 1164 1167 1167 1248 1249 1249 1465 1502 1509 1529 1610 1708 1806 1840 1840 1900 1900 2116 2116 2225 2235 2583 2651 2655 2659 2748 2754 2755 2755 2871 2871 2970 2970 line_area_ptr 014146 automatic pointer initial dcl 8-25 set ref 8-25* link based pointer level 2 dcl 287 set ref 664 795 816 1266 1430 2020* 2458* 2465* literal_sw 1(05) 014152 automatic bit(1) initial level 3 packed unaligned dcl 10-7 set ref 10-7* ll 72 based structure array level 2 dcl 287 long_sw 0(12) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 1289 1339 1644 1693 2055* 2381* ltrim builtin function dcl 444 ref 2730 max builtin function dcl 444 ref 1929 max_files 33 based fixed bin(17,0) level 2 dcl 5-22 ref 1929 max_outrecs 010632 automatic fixed bin(17,0) dcl 331 set ref 541* 824* 1156 1156 1200 1394 1582* 1582 max_pages 32 based fixed bin(17,0) level 2 dcl 5-22 set ref 593* 1574 max_records 010633 automatic fixed bin(17,0) dcl 332 set ref 520* 824 824 2047* 2047 max_tape_files 010631 automatic fixed bin(17,0) dcl 330 set ref 540* 593* 1929* 1929 2585 2588* me 000312 constant char(15) initial unaligned dcl 333 set ref 479* 486* 486* 496* 500* 531* 626* 704* 725* 742* 758* 847* 878* 969* 1013* 1307* 1543* 1565* 1578* 1600* 1628* 1663* 1730* 1762* 1817* 1909* 1920* 1942* 1963* 2105* 2204* 2273* 2285* 2299* 2309* 2325* 2333* 2341* 2349* 2371* 2386* 2401* 2419* 2428* 2527* 2539* 2572* 2606* 2614* 2669* 2877* min builtin function dcl 444 ref 1569 1582 2860 mod builtin function dcl 444 ref 1814 mode 010634 automatic varying char(200) dcl 335 set ref 521* 837 847* 1521* 1522* 1534 1551* 1611 1619* 1620 1621* 2187* 2593 2596 mode_arg 010717 automatic varying char(200) dcl 336 set ref 521* 1516 1537 1543 1543 1614 1614 2145* 2147 2151* 2154 2158* 2161 2165* 2168 2172* 2175 2179* 2184 2185* 2187 mode_list 014605 automatic varying char(256) dcl 1477 set ref 1500* 1540 1540* 1543 1543 1608* 1608 1609* 1609 mode_name 012757 automatic varying char(32) dcl 3152 set ref 1617* 1625 mode_sw 0(13) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 1589 2178* mode_unproc 012674 automatic varying char(200) dcl 3151 set ref 1618* 1625 1628* mounted_wheel constant fixed bin(17,0) initial dcl 337 ref 1118 1260 n_p 015150 automatic pointer dcl 1992 set ref 2426* 2435 2439 name 2 based varying char(168) array level 3 dcl 355 set ref 583* 656* 807* names based char(32) array unaligned dcl 1997 ref 2435 2439 nargs 012656 automatic fixed bin(17,0) dcl 3115 set ref 2900* 2922* 2939 2986 2989 2997 nest 000101 automatic fixed bin(17,0) dcl 3092 set ref 3046* 3075* 3075 3081* 3081 3082 new_sw 012657 automatic bit(1) unaligned dcl 3116 set ref 2976* 2984* 3004 next based fixed bin(17,0) level 2 dcl 287 set ref 556 2017 2458 next_image 011002 automatic bit(36) unaligned dcl 338 set ref 1045* 1047 1197* nextref based bit(36) level 2 dcl 5-64 set ref 1197 1198 nindex 0(18) based fixed bin(17,0) array level 2 packed unaligned dcl 1993 ref 2435 nnn 012770 automatic picture(3) unaligned dcl 3153 set ref 2592* 2600 2614* 2669* no_back based bit(1) array level 4 packed unaligned dcl 355 set ref 641* 645* 1214 1404 no_front based bit(1) array level 4 packed unaligned dcl 355 set ref 641* 651* 1208 1379 nobell_sw 0(14) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 547 1444 2193* null builtin function dcl 444 ref 494 519 561 561 563 563 574 670 803 819 937 1130 1130 2906 2908 2914 2931 2933 3011 5-21 5-45 5-62 8-25 8-35 10-7 10-7 10-7 878 1359 1448 1448 1836 1836 1885 1885 1962 1963 1968 1974 2014 2020 2424 2465 2602 2602 3086 3086 num 104 based fixed bin(17,0) array level 4 in structure "file_entry" dcl 287 in procedure "pco" set ref 755 758* 765* 774 786 1225 1373 1426* 2027* num based fixed bin(17,0) level 2 in structure "from_to" dcl 317 in procedure "pco" set ref 699 735 751* 2485* 2491* 2491 2499* 2499 2507* 2507 2514* num 72 based fixed bin(17,0) array level 4 in structure "file_entry" dcl 287 in procedure "pco" set ref 684 755 758* 765* 774 786 989 998 1001 1373 1424* 2024* obv_changed based bit(1) array level 4 packed unaligned dcl 355 ref 776 obverse 70(01) based bit(1) level 3 packed unaligned dcl 287 set ref 1420* 2264* option 000223 constant varying char(16) initial array dcl 1479 ref 1505 1506 1509 option_line 014706 automatic varying char(200) dcl 1482 set ref 1511* 1592* 1596 1600* 1618 1619 1619 1625 1628* 1637* 1641* 1648* 1697* 1708 1709 1716 1722 1730* 1735 1742* 1746* 1752* 1752* 1758 1774 1778 1780 1789 1797 1803 1806 option_ndx 014771 automatic fixed bin(17,0) dcl 1483 set ref 1505* 1506 1509 1512* out_str parameter varying char dcl 3034 set ref 3031 3086* output_medium 011003 automatic char(4) unaligned dcl 341 set ref 542* 827 853 902* 919 1109 1159 1244 1271 1289 1344 1571 1571 1620* 1644 1693 output_text based char unaligned dcl 342 set ref 1143* 1167* 1182* 1249* 2624* 2633 2661* 2705* 2706* 2723* 2725* 2755* 2865 2869 2869 output_text_len 011004 automatic fixed bin(21,0) dcl 343 set ref 982* 1142* 1142 1143 1143 1164* 1164 1167 1167 1176* 1180* 1180 1182 1182 1187 1241 1248* 1248 1249 1249 2577 2624 2624 2626 2630 2630 2633 2659 2661 2704* 2704 2705 2705 2706 2706 2707 2715* 2719* 2719 2723 2725 2726* 2754* 2754 2755 2755 2858 2860 2865 2869 2869 output_text_ptr defined pointer dcl 345 ref 1143 1167 1182 1249 2624 2633 2705 2706 2723 2725 2755 2865 2869 2869 pack 014015 automatic structure array level 1 unaligned dcl 3170 pack_ct 011005 automatic fixed bin(17,0) dcl 347 set ref 538* 1755* 1755 1756 1757 1768 1777 1777 1782 1782 1789 1791 1793 1793 1800* 1800 1801 1810 2621 2648 pack_i 000216 automatic fixed bin(24,0) dcl 2564 set ref 2627* 2635* 2635 2637 2638 2638 2642 2644 2648 2648* packi 012771 automatic fixed bin(17,0) dcl 3157 set ref 1753* 1758 1772* 1772 1774 1778 1780 1788* 1788 1789 1796* 1796 1797 1803 1805* 1805 1806 1810* 1811 1811* padding 1(07) 014152 automatic bit(29) initial level 3 packed unaligned dcl 10-7 set ref 10-7* page based structure array level 2 unaligned dcl 355 page_count 67 based fixed bin(17,0) level 2 in structure "file_entry" dcl 287 in procedure "pco" set ref 781* 781 790* 790 1420* page_count 1 based fixed bin(17,0) level 2 in structure "pagelist" dcl 355 in procedure "pco" set ref 558* 584 633 633* 635 636 637 638 639 640 641 641 641 645 645 645 645 651 page_header based structure level 1 dcl 6-27 page_len 34 based fixed bin(21,0) level 2 dcl 5-22 ref 1932 page_length 011006 automatic fixed bin(31,0) dcl 348 set ref 1932* page_parms based structure level 1 dcl 6-86 page_record 11 based bit(36) level 2 in structure "record" dcl 5-46 in procedure "pco" set ref 1047 page_record based structure level 1 dcl 5-64 in procedure "pco" page_record_ptr 014144 automatic pointer initial dcl 5-62 set ref 1047* 1052 1052 1052 1052 1052 1052 1052 1052 1052 1052 1061 1074* 1078 1078 1084 1088 1096 1106 1106 1118 1118 1118 1121 1121 1121 1127 1142 1143 1143 1143 1180 1182 1182 1182 1193 1193 1197* 1198* 5-62* 2576 2626 2708 2708 2715* page_sel_ct 71 based fixed bin(17,0) level 2 dcl 287 set ref 556 679 1230 1372 1423 2017 2023* 2100 2214* 2222* 2222 2229 2232 2232 2240 2458 2463 page_selected 011007 automatic fixed bin(17,0) dcl 349 set ref 699* 701 709* 716* 730* 735* 737* 737 739 747* 751 774* 776 776 780* 786* 789* page_wrdct 011010 automatic fixed bin(17,0) dcl 350 set ref 1061* 1062 1074* pageid based char(32) level 3 dcl 5-46 set ref 635 1210* pagelist based structure level 1 unaligned dcl 355 pagelist_base 011011 automatic fixed bin(17,0) dcl 351 set ref 676* 677 717 717 722 730 774 774 786 786 980* 1207 1366* 1373 1373 pagelist_last 011012 automatic fixed bin(17,0) dcl 352 set ref 677* 699 717 722 739 747 pagelist_ptr defined pointer dcl 354 ref 557 558 583 584 584 633 633 633 635 635 635 636 636 636 637 637 637 638 638 638 639 639 639 640 640 640 641 641 641 641 641 641 641 641 641 645 645 645 645 645 645 645 645 645 645 645 645 651 651 651 656 656 656 676 677 717 717 776 776 776 776 780 780 789 789 807 807 807 810 810 811 811 811 811 811 811 811 811 811 811 980 1208 1208 1214 1214 1366 1376 1376 1379 1379 1396 1396 1399 1399 1402 1402 1404 1404 pco_error 012454 stack reference condition dcl 449 ref 913 pgc 70 based bit(1) level 3 packed unaligned dcl 287 set ref 768 1018 1018 1420* 2254* preface 011013 automatic varying char(500) dcl 379 in procedure "pco" set ref 536* 934* 1088* 1093* 1106 1193* preface 0(06) based bit(1) level 3 in structure "page_record" packed unaligned dcl 5-64 in procedure "pco" set ref 1052* 1084 1106 1193 prompt_after_explanation 1(06) 014152 automatic bit(1) initial level 3 packed unaligned dcl 10-7 set ref 10-7* ptr 000116 external static pointer level 2 dcl 9-14 ref 1657 1668 1668 1668 ptrs 126 based structure level 2 dcl 9-23 put_out 011212 automatic entry variable dcl 382 set ref 840* 842* 895* 897* 904* 1174 1187 1254 pwheel 0(30) based fixed bin(6,0) level 3 packed unsigned unaligned dcl 5-64 set ref 1052 1052* 1078 1078 1118 1118 1118 query_code 3 014152 automatic fixed bin(35,0) initial level 2 dcl 10-7 set ref 10-7* query_info 014152 automatic structure level 1 dcl 10-7 set ref 704 704 742 742 758 758 quest 12 based varying char(100) array level 3 dcl 244 set ref 2959 3008* question_iocbp 4 014152 automatic pointer initial level 2 dcl 10-7 set ref 10-7* quit 012462 stack reference condition dcl 449 ref 919 raw_record based char unaligned dcl 383 set ref 1025* rawo_sw 0(15) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 1237 1959 2523 2529* 2541* recleng 31 based fixed bin(17,0) level 2 dcl 5-22 ref 1562 1569 record based structure level 1 dcl 5-46 set ref 1031 record_bytes 011216 automatic fixed bin(21,0) dcl 384 set ref 541* 1569* 1569 2568 2568 2661 2663 2664* record_count 011217 automatic fixed bin(17,0) dcl 385 set ref 612* 632* 632 637 645 675* 688* 716 717 737 751* 982* 996* 996 998 1001* 1003* 1021* 1037* 1207 1210* 1225 1364* 1386 1393* 1393 1394 1394* 1418* record_hdrct 011220 automatic fixed bin(17,0) dcl 386 set ref 1031* 1032 1040* record_len 011221 automatic fixed bin(21,0) dcl 387 set ref 593* 616* 616* 950* 950* 953 953 1007* 1021* 1025 1025 1028 1037* 1037* 1210* 1900* 1905 1924* record_ptr 014142 automatic pointer initial dcl 5-45 set ref 508* 616* 635 638 639 640 1007* 1018 1025 1031 1040* 1047 1210 1210 1210 1210 5-45* record_wrdct 011222 automatic fixed bin(17,0) dcl 388 set ref 1028* 1032* 1032 1062* 1062 1064 1067* 1068* 1068 redo parameter label variable dcl 1829 ref 1826 1861 release_temp_segments_ 000110 constant entry external dcl 3194 ref 1963 repeat_time 10 014152 automatic fixed bin(71,0) initial level 2 dcl 10-7 set ref 10-7* reply_l 012660 automatic fixed bin(21,0) dcl 3117 set ref 2970* 2975 reply_text 011223 automatic char(256) unaligned dcl 389 set ref 1900 1900 1900 1900 1905 2970 2970 2970 2970 2975 reprint_sw 015014 automatic bit(1) unaligned dcl 1831 set ref 1834* 1857* 1861 res 014212 automatic varying char(500) dcl 1284 set ref 1293* 1296* 1296 1317* 1317 1321* 1321 1327* 1330 ret_l 012664 automatic fixed bin(21,0) dcl 3119 set ref 2900* 2916 2922* 3015 3017 ret_p 012662 automatic pointer dcl 3118 set ref 2900* 2906* 2914 2916 2922* 2931* 3011 3015 3017 ret_v based varying char dcl 3120 set ref 2916* 3015* 3017* rtrim builtin function dcl 444 ref 581 1402 1497 1497 1497 1497 1657 1657 1663 1663 2407 2409 2468 2469 s parameter char unaligned dcl 2744 ref 2741 2748 2749 scan_ndx 014772 automatic fixed bin(17,0) dcl 1484 set ref 1501* 1502 1506 1509* 1509 1511 1516 1526 1529* 1531* 1531 seg based char unaligned dcl 868 set ref 886* seg_p 014202 automatic pointer dcl 867 set ref 876* 878 884* 886 887* 888* select based bit(1) array level 4 packed unaligned dcl 355 set ref 641* 780* 789* 811* 1376 seq_no 66 based fixed bin(17,0) level 2 in structure "file_entry" dcl 287 in procedure "pco" set ref 1420* 1951* 2727* 2727 2730 seq_no based fixed bin(17,0) array level 3 in structure "pagelist" dcl 355 in procedure "pco" set ref 637* setting 015004 automatic bit(1) unaligned dcl 1702 set ref 1713* 1715* 1719 1725 setup 011323 automatic varying char(2000) dcl 390 set ref 536* 1339 1339 1648* 1648 1649* 1649 1697* 1697 1698* 1698 setupX 014410 automatic varying char(256) dcl 1285 set ref 1303* 1314* 1317 setup_sw 0(16) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 821 1641 2171* shared based structure level 1 dcl 7-7 sign 115 based char(1) array level 4 in structure "file_entry" dcl 287 in procedure "pco" set ref 1426* 2029* sign 103 based char(1) array level 4 in structure "file_entry" dcl 287 in procedure "pco" set ref 684 1424* 2026* sign 11 based char(1) level 2 in structure "from_to" dcl 317 in procedure "pco" set ref 696 713 737 752* 2484* 2490* 2498* 2506* 2513* size builtin function dcl 444 ref 1031 skip_pref_sw 0(17) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 539* 835* 892* 1088 start_page_sw 0(18) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 1045* 1135* 1150 1154* status_code 2 014152 automatic fixed bin(35,0) initial level 2 dcl 10-7 set ref 10-7* stop 70(02) based bit(1) level 3 packed unaligned dcl 287 set ref 1218 1420* 2288* 2322 2327* stop_bfr 012772 automatic char(80) unaligned dcl 3158 set ref 1132 1132 1451 1451 1453 1453 1846 1846 1852 1854 stop_signal 012310 automatic char(5) unaligned dcl 391 set ref 547* 549* 1452 1452 1845 1845 str parameter varying char(200) dcl 1282 in procedure "af_proc" ref 1279 1288 1296 1299 1299 1299 1303 1303 1307 1307 1314 1319 1321 1327 str parameter char unaligned dcl 1459 in procedure "gather_cons" ref 1457 1465 string builtin function dcl 444 set ref 2022* 2030* substr builtin function dcl 444 set ref 605 605 1025* 1078* 1143* 1167* 1182* 1249* 1260* 1296 1299 1299 1299 1303 1303 1307 1307 1314 1319 1321 1506 1511 1526 1543 1543 1620 1709 1716 1722 1735 1758 1774 1778 1780 1782* 1789 1797 1803 1852 1854 1905 2187 2218 2255 2480 2481 2487 2491 2495 2499 2503 2507 2624* 2633 2638 2642 2654 2657 2661 2705* 2706* 2723* 2725* 2749 2755* 2865 2869 2869 2871 2871 2975 3039 3041 3043 3048 3058 3062 3086 3086 suppress_name_sw 1(01) 014152 automatic bit(1) initial level 3 packed unaligned dcl 10-7 set ref 2967* 3003* 10-7* suppress_spacing 1(04) 014152 automatic bit(1) initial level 3 packed unaligned dcl 10-7 set ref 505* 10-7* sw based structure array level 3 packed unaligned dcl 355 switches 1 014152 automatic structure level 2 dcl 10-7 sws 012312 automatic structure level 1 packed unaligned dcl 392 in procedure "pco" set ref 492* sws 70 based structure level 2 in structure "file_entry" dcl 287 in procedure "pco" set ref 2022* sws based structure level 2 in structure "page_record" dcl 5-64 in procedure "pco" system_free_p 000014 internal static pointer initial dcl 1989 set ref 2424 2424* 2426* table_sw 0(19) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 601 832 858 959 965 1052 1081 1204 1218 2346 2365* tape_iocbp 012314 automatic pointer dcl 421 set ref 494* 1974 1977* 1978* 2602* 2610* 2664* 2673* 2676* temp 014773 automatic varying char(32) dcl 1587 set ref 1596* 1597 1609 1610 1614 1617 1625 tempsegs 012316 automatic pointer array dcl 422 set ref 494* 496* 508 515 515 557 557 558 558 568 568 583 583 584 584 584 584 633 633 633 633 633 633 635 635 635 635 635 635 636 636 636 636 636 636 637 637 637 637 637 637 638 638 638 638 638 638 639 639 639 639 639 639 640 640 640 640 640 640 641 641 641 641 641 641 641 641 641 641 641 641 641 641 641 641 641 641 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 645 651 651 651 651 651 651 656 656 656 656 656 656 676 676 677 677 717 717 717 717 776 776 776 776 776 776 776 776 780 780 780 780 789 789 789 789 807 807 807 807 807 807 810 810 810 810 811 811 811 811 811 811 811 811 811 811 811 811 811 811 811 811 811 811 811 811 832 832 858 858 884 884 884 884 886 886 886 886 887 887 980 980 1143 1143 1167 1167 1182 1182 1208 1208 1208 1208 1214 1214 1214 1214 1249 1249 1337 1337 1339 1339 1339 1339 1342 1342 1342 1342 1344 1344 1344 1344 1347 1347 1347 1347 1348 1348 1348 1348 1353 1353 1353 1353 1354 1354 1354 1354 1356 1356 1356 1356 1366 1366 1368 1368 1368 1368 1369 1369 1369 1369 1370 1370 1370 1370 1376 1376 1376 1376 1379 1379 1379 1379 1382 1382 1382 1382 1383 1383 1383 1383 1390 1390 1390 1390 1392 1392 1392 1392 1396 1396 1396 1396 1396 1396 1396 1396 1398 1398 1398 1398 1399 1399 1399 1399 1399 1399 1399 1399 1401 1401 1401 1401 1402 1402 1402 1402 1402 1402 1402 1402 1403 1403 1403 1403 1404 1404 1404 1404 1407 1407 1407 1407 1408 1408 1408 1408 1963 1963* 2014 2030 2030 2033 2033 2036 2036 2038 2038 2047 2047 2048 2048 2078 2078 2079 2079 2116 2116 2116 2116 2117 2117 2133 2133 2135 2135 2145 2145 2185 2185 2190 2190 2210 2210 2218 2218 2223 2223 2225 2225 2235 2235 2245 2245 2255 2255 2261 2261 2269 2269 2273 2273 2278 2278 2317 2317 2320 2320 2394 2394 2397 2397 2401 2401 2407 2407 2480 2480 2481 2481 2487 2487 2491 2491 2495 2495 2499 2499 2503 2503 2507 2507 2582 2582 2583 2583 2624 2624 2633 2633 2705 2705 2706 2706 2723 2723 2725 2725 2755 2755 2865 2865 2869 2869 2869 2869 text 2 based char level 2 in structure "page_record" dcl 5-64 in procedure "pco" set ref 1088 1106 1121 1121 1143 1182 1193 text based structure level 1 dcl 8-49 in procedure "pco" text_area_ptr 014150 automatic pointer initial dcl 8-35 set ref 8-35* text_c based char(1) array unaligned dcl 3142 set ref 2626 2664 2664 text_cons 012332 automatic varying char(128) array dcl 423 set ref 536* 1742* 1746* text_entry based structure level 1 dcl 8-68 text_header based structure level 1 dcl 8-163 text_pages 012434 automatic fixed bin(17,0) dcl 424 set ref 982* 1156 1175* 1178* 1178 1200 this_page 013016 automatic fixed bin(17,0) dcl 3162 set ref 1207* 1208 1214 tl 000104 automatic fixed bin(24,0) dcl 2554 set ref 2577* 2682 to 104 based structure array level 3 in structure "file_entry" dcl 287 in procedure "pco" set ref 693 2232* 2240 2358 to 56 based fixed bin(17,0) array level 3 in structure "pagelist" dcl 355 in procedure "pco" set ref 633* 656* 677 807* 810 toch_ndx automatic picture(6) unaligned dcl 3175 ref 1390 tp 000102 automatic pointer dcl 2553 in procedure "put_tape" set ref 2576* 2681 tp 015142 automatic pointer dcl 1988 in procedure "proc_args" set ref 2458* 2463 2464 type 1(27) 014015 automatic fixed bin(8,0) array level 2 packed unaligned dcl 3170 set ref 1768* 1801* 1811 2637 unspec builtin function dcl 444 set ref 492* 2633 2661* valid_in 013017 automatic varying char(64) array dcl 3163 set ref 2942* 2946* 2977* 2979* 2983* 2990 2990 2997 3009 valid_list based varying char(64) array dcl 3164 set ref 2997* valid_out 013416 automatic varying char(64) array dcl 3165 set ref 2942* 2947* 2977* 2979* 2983* 2993* 2993 3001 values 2 000016 internal static structure level 2 dcl 2819 set ref 2843 2847* verify builtin function dcl 444 ref 1905 version 014152 automatic fixed bin(17,0) level 2 in structure "query_info" dcl 10-7 in procedure "pco" set ref 504* version based fixed bin(17,0) level 2 in structure "fileheader" dcl 5-22 in procedure "pco" set ref 593* 965 1929 1932 1935 vol_file_ct 012443 automatic fixed bin(17,0) dcl 427 set ref 893* 2575* 2575 2578 2585 2592 2597 2621 2678 vol_sw 0(20) 012312 automatic bit(1) level 2 packed unaligned dcl 392 set ref 1703 2285 2318* 2371 2446 volid 012435 automatic varying char(20) dcl 426 set ref 521* 544 544* 876 878* 2306 2309 2317* 2343* 2351* 2595 2614* 2669* wait 70(03) based bit(1) level 3 packed unaligned dcl 287 set ref 975 1420* 2288* 2330 2335* 2374* what 012470 automatic varying char(44) dcl 2805 set ref 2702 2728* 2729* 2729 2730* 2730 2732 wheel parameter fixed bin(17,0) dcl 1439 ref 1434 1444 1446 1449 wheel_done 012444 automatic bit(36) unaligned dcl 428 set ref 984* 1260* 1261 wheel_need 012445 automatic bit(36) unaligned dcl 429 set ref 978* 1078* 1261 where parameter varying char dcl 1459 ref 1457 word based bit(36) array unaligned dcl 3166 set ref 2708* 2708 x based bit(1) array level 2 packed unaligned dcl 2561 set ref 2653* yes_or_no_sw 1 014152 automatic bit(1) initial level 3 packed unaligned dcl 10-7 set ref 506* 2966* 3002* 10-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. LINE_AREA_SIZE internal static fixed bin(17,0) initial dcl 8-24 MAX_TREE_AREAS internal static fixed bin(17,0) initial dcl 9-20 MAX_TREE_AREA_CT internal static fixed bin(17,0) initial dcl 9-18 TEXT_AREA_SIZE internal static fixed bin(17,0) initial dcl 8-34 TEXT_VERSION internal static fixed bin(17,0) initial dcl 8-47 comp_ 000000 constant entry external dcl 3-7 comp_art_ 000000 constant entry external dcl 3-8 comp_block_ctls_ 000000 constant entry external dcl 3-9 comp_break_ 000000 constant entry external dcl 3-11 comp_break_ctls_ 000000 constant entry external dcl 3-12 comp_ctls_ 000000 constant entry external dcl 3-14 comp_dvid_version internal static fixed bin(17,0) initial dcl 1-14 comp_dvt based structure level 1 dcl 2-19 comp_eject_page_ 000000 constant entry external dcl 3-15 comp_expr_eval_ 000000 constant entry external dcl 3-17 comp_extr_str_ 000000 constant entry external dcl 3-21 comp_fill_ 000000 constant entry external dcl 3-24 comp_font_ 000000 constant entry external dcl 3-25 comp_format_ctls_ 000000 constant entry external dcl 3-26 comp_get_file_$find 000000 constant entry external dcl 3-28 comp_get_file_$open 000000 constant entry external dcl 3-31 comp_head_page_ 000000 constant entry external dcl 3-33 comp_hft_ctls_ 000000 constant entry external dcl 3-35 comp_hft_ctls_$title 000000 constant entry external dcl 3-36 comp_init_$one 000000 constant entry external dcl 3-38 comp_init_$three 000000 constant entry external dcl 3-40 comp_init_$two 000000 constant entry external dcl 3-39 comp_insert_ctls_ 000000 constant entry external dcl 3-42 comp_make_page_ 000000 constant entry external dcl 3-44 comp_make_page_$cleanup 000000 constant entry external dcl 3-46 comp_measure_ 000000 constant entry external dcl 3-48 comp_read_$line 000000 constant entry external dcl 3-57 comp_read_$name 000000 constant entry external dcl 3-50 comp_read_$number 000000 constant entry external dcl 3-53 comp_report_ 000000 constant entry external dcl 3-59 comp_report_$ctlstr 000000 constant entry external dcl 3-61 comp_report_$exact 000000 constant entry external dcl 3-64 comp_space_ 000000 constant entry external dcl 3-66 comp_tbl_ctls_ 000000 constant entry external dcl 3-68 comp_title_block_ 000000 constant entry external dcl 3-69 comp_update_symbol_ 000000 constant entry external dcl 3-71 comp_use_ref_ 000000 constant entry external dcl 3-74 comp_util_$add_text 000000 constant entry external dcl 3-75 comp_util_$escape 000000 constant entry external dcl 3-80 comp_util_$getblk 000000 constant entry external dcl 3-82 comp_util_$num_display 000000 constant entry external dcl 3-84 comp_util_$pageno 000000 constant entry external dcl 3-86 comp_util_$pictures 000000 constant entry external dcl 3-88 comp_util_$pop 000000 constant entry external dcl 3-91 comp_util_$push 000000 constant entry external dcl 3-92 comp_util_$relblk 000000 constant entry external dcl 3-94 comp_util_$replace_text 000000 constant entry external dcl 3-96 comp_util_$search_tree 000000 constant entry external dcl 3-98 comp_util_$set_bin 000000 constant entry external dcl 3-100 comp_util_$set_net_page 000000 constant entry external dcl 3-104 comp_util_$translate 000000 constant entry external dcl 3-106 comp_write_block_ 000000 constant entry external dcl 3-108 comp_write_page_ 000000 constant entry external dcl 3-110 compose_severity_ external static fixed bin(35,0) dcl 3-5 const_version internal static fixed bin(35,0) initial dcl 9-17 ctl based structure level 1 dcl 8-157 ctl_line based varying char(1020) dcl 8-158 cu_$af_arg_ptr 000000 constant entry external dcl 3107 current_parms based structure level 1 dcl 8-209 dot_addltr_symb_index internal static fixed bin(17,0) initial dcl 7-126 file_seq_no automatic fixed bin(17,0) dcl 3144 flag_value based bit(1) unaligned dcl 7-132 fntstk_eptr automatic pointer dcl 4-5 hcs_$make_entry 000000 constant entry external dcl 3185 hfcblk based structure level 1 dcl 8-250 hfcblk_ptr automatic pointer dcl 8-249 iblk automatic fixed bin(24,0) dcl 2817 init_page_parms based structure level 1 dcl 6-108 iox_$error_output external static pointer dcl 9-74 j automatic fixed bin(17,0) dcl 1462 just internal static bit(6) initial unaligned dcl 8-148 line_area based structure level 1 dcl 8-26 max_cols internal static fixed bin(17,0) initial dcl 6-7 max_image_lines internal static fixed bin(17,0) initial dcl 6-5 max_text_lines internal static fixed bin(17,0) initial dcl 7-128 mode_string internal static char(16) initial unaligned dcl 7-129 num_value based fixed bin(31,0) dcl 7-133 page based structure level 1 dcl 6-11 page_image based structure level 1 dcl 6-56 page_image_version internal static fixed bin(35,0) initial dcl 6-53 page_version internal static fixed bin(17,0) initial dcl 6-9 quadc internal static bit(6) initial unaligned dcl 8-148 quadi internal static bit(6) initial unaligned dcl 8-148 quadl internal static bit(6) initial unaligned dcl 8-148 quado internal static bit(6) initial unaligned dcl 8-148 quadr internal static bit(6) initial unaligned dcl 8-148 query_info_version_3 internal static fixed bin(17,0) initial dcl 10-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 10-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 10-35 query_info_version_6 internal static fixed bin(17,0) initial dcl 10-36 save_shared based structure level 1 dcl 7-124 shared_version internal static fixed bin(35,0) initial dcl 7-5 str based char(262144) unaligned dcl 3161 string_area based fixed bin(17,0) array dcl 8-43 sys_info$max_seg_size external static fixed bin(18,0) dcl 9-80 tblkdata based structure level 1 dcl 8-5 text_area based structure level 1 dcl 8-36 text_parms based structure level 1 dcl 8-206 txtlin based structure level 1 dcl 8-161 txtlinptr automatic pointer dcl 8-160 txtstr based varying char(1020) dcl 8-45 txtstrptr automatic pointer dcl 8-44 NAMES DECLARED BY EXPLICIT CONTEXT. add_linked_file 020631 constant entry internal dcl 2451 ref 2414 2436 add_string 006713 constant label dcl 1109 ref 1099 af_proc 010715 constant entry internal dcl 1279 ref 1619 1637 1648 1697 1742 1746 1752 bad_pack 014614 constant label dcl 1762 ref 1780 1791 1803 begin_file 006004 constant label dcl 978 ref 975 975 brack 024015 constant label dcl 3053 ref 3043 build_contents 011226 constant entry internal dcl 1334 ref 830 856 change_pwheel 012353 constant entry internal dcl 1434 ref 1118 clean 015723 constant entry internal dcl 1956 ref 565 1276 close_compout 015772 constant entry internal dcl 1966 ref 660 1264 1945 compask 007715 constant entry external dcl 2919 compout 007570 constant entry external dcl 2897 con_pack 014656 constant label dcl 1772 ref 1778 1783 do_debug_too 006642 constant label dcl 1084 done_pack 015051 constant label dcl 1821 ref 1766 dtf 010704 constant entry external dcl 3026 dtn 010671 constant entry external dcl 3022 end_file_loop_3 007422 constant label dcl 1237 ref 941 944 972 1015 end_page_select_loop 004534 constant label dcl 793 ref 690 err_exit 011211 constant label dcl 1327 err_return 015675 constant label dcl 1945 ref 1912 1921 evaluate_af_ 023717 constant entry internal dcl 3031 ref 1303 file_loop_1 003113 constant label dcl 574 file_loop_2 003715 constant label dcl 670 file_loop_3 005537 constant label dcl 937 finish 007516 constant label dcl 1267 ref 501 821 916 1852 2573 2590 2607 found_reply 010522 constant label dcl 2999 ref 2994 from_to_proc 020750 constant entry internal dcl 2475 ref 2116 2231 2242 from_to_rtn 016470 constant label dcl 2100 ref 2359 func 000011 constant label array(2) dcl 2568 in procedure "put_tape" ref 2566 2683 func 000020 constant label array(2) dcl 2702 in procedure "put_punch" set ref 2700 gather_cons 012560 constant entry internal dcl 1457 ref 1742 1746 here 002751 constant label dcl 561 set ref 561 561 563 563 1657 1657 image_loop 006401 constant label dcl 1047 keep_on 023772 constant label dcl 3048 ref 3070 3076 3082 letters 023150 constant entry internal dcl 2741 ref 2702 2731 2732 2733 2734 2735 missing 017501 constant label dcl 2297 ref 2043 2073 2111 2130 2141 2210 next_ctl_arg 016200 constant label dcl 2036 ref 2218 next_file 007412 constant label dcl 1228 ref 993 no_handle 005060 constant label dcl 847 open_compout 015305 constant entry internal dcl 1867 ref 578 944 opt_rtn 000000 constant label array(9) dcl 1587 ref 1512 opt_rtn_end 013121 constant label dcl 1526 ref 1593 1635 1639 1651 1691 1700 1740 1744 1748 1821 page_select_loop 003747 constant label dcl 679 pages_loop 017113 constant label dcl 2216 ref 2246 pco 002327 constant entry external dcl 13 pk 000013 constant label array(5) dcl 2638 ref 2637 pkd 022062 constant label dcl 2635 ref 2641 2647 proc_args 016060 constant entry internal dcl 1982 ref 523 proc_comment 012607 constant entry internal dcl 1471 ref 604 process_compout 002337 constant entry external dcl 13 put_online 023240 constant entry internal dcl 2809 ref 840 895 904 put_punch 022376 constant entry internal dcl 2693 ref 842 put_tape 021315 constant entry internal dcl 2547 ref 897 re_ask 010250 constant label dcl 2968 ref 2998 re_get 010276 constant label dcl 2970 ref 2973 record_loop_2 006023 constant label dcl 987 reprint 006275 constant label dcl 1028 ref 1222 1222 reprint_file 006005 constant label dcl 980 reset_rawo 021222 constant entry internal dcl 2534 ref 927 1237 1959 scan_comment 012753 constant label dcl 1502 set_rawo 021127 constant entry internal dcl 2520 ref 923 1116 sync 015052 constant entry internal dcl 1826 ref 975 1222 wait 007376 constant label dcl 1222 in procedure "pco" wait 015055 constant label dcl 1836 in procedure "sync" ref 1858 NAMES DECLARED BY CONTEXT OR IMPLICATION. copy builtin function ref 1444 1446 pointer builtin function ref 1668 reverse builtin function ref 2865 search builtin function ref 1288 1319 3048 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 26214 26406 25300 26224 Length 27320 25300 172 676 713 16 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pco 7924 external procedure is an external procedure. on unit on line 565 64 on unit begin block on line 861 begin block shares stack frame of external procedure pco. on unit on line 919 80 on unit af_proc internal procedure shares stack frame of external procedure pco. build_contents internal procedure shares stack frame of external procedure pco. change_pwheel internal procedure shares stack frame of external procedure pco. gather_cons 67 internal procedure is called during a stack extension. proc_comment internal procedure shares stack frame of external procedure pco. sync internal procedure shares stack frame of external procedure pco. open_compout internal procedure shares stack frame of external procedure pco. clean 78 internal procedure is called by several nonquick procedures. proc_args internal procedure shares stack frame of external procedure pco. add_linked_file internal procedure shares stack frame of external procedure pco. from_to_proc internal procedure shares stack frame of external procedure pco. set_rawo 98 internal procedure is called by several nonquick procedures. reset_rawo 100 internal procedure is called by several nonquick procedures. put_tape 222 internal procedure is assigned to an entry variable. put_punch 128 internal procedure is assigned to an entry variable. letters 69 internal procedure is called during a stack extension. put_online 1146 internal procedure is assigned to an entry variable, and enables or reverts conditions. on unit on line 2849 88 on unit evaluate_af_ 98 internal procedure is called during a stack extension. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 af_data_ptr pco 000012 dt_sw pco 000014 system_free_p proc_args 000016 delay put_online STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME evaluate_af_ 000100 af_type evaluate_af_ 000101 nest evaluate_af_ 000102 i evaluate_af_ 000103 ch evaluate_af_ gather_cons 000100 i gather_cons letters 000100 i letters 000101 j letters pco 000100 answer pco 000102 argct pco 000103 argl pco 000104 argno pco 000106 argp pco 000110 code pco 000111 contents_l pco 000112 ctl_file pco 010426 ctl_file_count pco 010427 device_cleanup pco 010461 done pco 010462 given_file_count pco 010464 file_entry_ptr pco 010466 file_entry_base_ptr pco 010472 filno pco 010474 from_to_ptr pco 010476 keyword pco 010520 header_out_ptr pco 010522 ii pco 010524 input_iocbp pco 010526 ipage pco 010527 j pco 010530 leader pco 010631 max_tape_files pco 010632 max_outrecs pco 010633 max_records pco 010634 mode pco 010717 mode_arg pco 011002 next_image pco 011003 output_medium pco 011004 output_text_len pco 011005 pack_ct pco 011006 page_length pco 011007 page_selected pco 011010 page_wrdct pco 011011 pagelist_base pco 011012 pagelist_last pco 011013 preface pco 011212 put_out pco 011216 record_bytes pco 011217 record_count pco 011220 record_hdrct pco 011221 record_len pco 011222 record_wrdct pco 011223 reply_text pco 011323 setup pco 012310 stop_signal pco 012312 sws pco 012314 tape_iocbp pco 012316 tempsegs pco 012332 text_cons pco 012434 text_pages pco 012435 volid pco 012443 vol_file_ct pco 012444 wheel_done pco 012445 wheel_need pco 012470 what pco 012504 compans pco 012567 default_ans pco 012652 err_out pco 012656 nargs pco 012657 new_sw pco 012660 reply_l pco 012662 ret_p pco 012664 ret_l pco 012666 first_p pco 012670 i pco 012671 l pco 012672 i2 pco 012673 it pco 012674 mode_unproc pco 012757 mode_name pco 012770 nnn pco 012771 packi pco 012772 stop_bfr pco 013016 this_page pco 013017 valid_in pco 013416 valid_out pco 014015 pack pco 014136 fileheader_ptr pco 014140 l_comment pco 014141 l_cleanup pco 014142 record_ptr pco 014144 page_record_ptr pco 014146 line_area_ptr pco 014150 text_area_ptr pco 014152 query_info pco 014202 seg_p begin block on line 861 014212 res af_proc 014410 setupX af_proc 014511 i af_proc 014512 j af_proc 014534 change_signal change_pwheel 014602 comment_ptr proc_comment 014604 j proc_comment 014605 mode_list proc_comment 014706 option_line proc_comment 014771 option_ndx proc_comment 014772 scan_ndx proc_comment 014773 temp proc_comment 015004 setting proc_comment 015014 reprint_sw sync 015015 current_modes sync 015132 ename proc_args 015142 tp proc_args 015144 e_c proc_args 015146 e_p proc_args 015150 n_p proc_args 015152 dname proc_args put_online 000100 db_displ_str put_online 002101 dlen put_online 002102 i put_online 002103 j put_online 002104 input_delays put_online put_punch 000100 i put_punch put_tape 000100 ii put_tape 000102 tp put_tape 000104 tl put_tape 000105 atd put_tape 000206 bp put_tape 000210 bl put_tape 000211 bi9 put_tape 000212 bit9 put_tape 000214 bit36 put_tape 000216 pack_i put_tape THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as alloc_cs cat_realloc_cs call_var_desc call_var call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return tra_ext tra_label_var mod_fx1 signal enable shorten_stack ext_entry int_entry int_entry_desc repeat set_cs_eis index_cs_eis index_bs_1_eis any_to_any_tr free_based index_before_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ check_star_name_$entry com_err_ command_query_ comp_util_$display continue_to_signal_ cu_$af_return_arg cu_$arg_count cu_$arg_ptr cu_$evaluate_active_string dump_segment_ expand_pathname_ get_system_free_area_ get_temp_segments_ get_wdir_ hcs_$make_ptr hcs_$make_seg hcs_$set_bc_seg hcs_$star_ hcs_$terminate_noname hcs_$truncate_seg ioa_ ioa_$nnl iox_$attach_name iox_$close iox_$control iox_$control iox_$detach_iocb iox_$get_chars iox_$get_line iox_$modes iox_$open iox_$position iox_$put_chars iox_$read_record iox_$write_record release_temp_segments_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. compstat$compconst error_table_$bad_file error_table_$badopt error_table_$end_of_info error_table_$improper_data_format error_table_$inconsistent error_table_$out_of_sequence error_table_$unbalanced_brackets error_table_$unbalanced_quotes error_table_$unimplemented_version iox_$user_input iox_$user_io iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 5 21 002267 5 45 002271 5 62 002272 8 25 002273 8 35 002274 10 7 002275 13 002326 475 002345 476 002356 479 002360 480 002375 483 002376 486 002400 488 002430 492 002431 493 002432 494 002433 496 002452 497 002473 500 002475 501 002521 504 002522 505 002524 506 002526 508 002530 513 002533 514 002543 515 002560 516 002603 519 002605 520 002621 521 002624 523 002627 525 002630 528 002633 531 002635 532 002662 536 002663 538 002677 539 002700 540 002702 541 002704 542 002710 544 002712 547 002723 549 002733 556 002737 557 002744 558 002746 561 002751 563 003010 565 003047 568 003071 569 003074 571 003075 574 003113 578 003122 581 003127 582 003153 583 003154 584 003166 586 003171 589 003176 590 003201 593 003210 601 003257 604 003262 605 003263 609 003346 611 003347 612 003350 613 003351 616 003356 620 003374 623 003403 626 003405 627 003437 628 003441 632 003442 633 003443 635 003455 636 003471 637 003477 638 003511 639 003524 640 003543 641 003552 645 003576 651 003626 654 003632 656 003633 660 003677 661 003703 663 003704 664 003706 666 003712 669 003714 670 003715 674 003724 675 003725 676 003727 677 003735 679 003741 684 003757 688 003771 689 003772 690 003773 693 003774 696 004001 699 004005 701 004010 704 004011 707 004054 709 004063 711 004065 713 004066 716 004070 717 004072 720 004120 722 004122 725 004126 727 004165 728 004167 730 004170 731 004173 735 004174 737 004176 739 004202 742 004205 745 004250 747 004257 751 004262 752 004265 753 004270 755 004301 758 004310 763 004376 765 004405 768 004412 774 004415 776 004431 780 004463 781 004471 783 004473 784 004475 786 004476 789 004513 790 004530 791 004532 793 004534 795 004536 797 004542 800 004545 802 004561 803 004562 806 004570 807 004571 810 004631 811 004645 815 004767 816 004771 819 004775 821 005000 824 005003 827 005006 830 005011 832 005012 835 005036 837 005040 840 005045 842 005054 843 005057 847 005060 849 005111 851 005113 853 005114 856 005116 858 005117 861 005143 876 005146 878 005232 884 005304 886 005322 887 005331 888 005347 892 005360 893 005362 895 005363 897 005372 898 005375 902 005376 904 005400 908 005406 911 005411 913 005425 916 005433 919 005434 923 005463 924 005470 927 005516 928 005523 929 005533 934 005534 935 005535 937 005537 941 005546 944 005554 947 005561 950 005565 953 005607 959 005652 962 005701 965 005730 969 005741 972 005772 975 005773 978 006004 980 006005 982 006012 983 006015 984 006017 985 006021 987 006023 989 006026 992 006034 993 006062 996 006063 998 006064 1001 006066 1002 006067 1003 006115 1007 006143 1010 006166 1013 006170 1015 006225 1018 006226 1021 006241 1025 006270 1028 006275 1031 006301 1032 006303 1034 006305 1037 006310 1040 006336 1045 006375 1047 006401 1052 006406 1061 006516 1062 006524 1064 006526 1067 006530 1068 006550 1069 006552 1074 006553 1078 006612 1081 006622 1084 006642 1088 006647 1093 006667 1094 006670 1096 006671 1099 006674 1101 006677 1103 006700 1106 006702 1109 006713 1113 006731 1116 006734 1118 006740 1121 006750 1127 006773 1130 006776 1132 007031 1135 007054 1137 007056 1139 007057 1142 007061 1143 007064 1146 007073 1150 007074 1154 007077 1156 007101 1159 007106 1164 007117 1167 007121 1174 007131 1175 007137 1176 007141 1177 007142 1178 007143 1180 007144 1182 007147 1187 007156 1193 007166 1197 007202 1198 007210 1200 007213 1204 007220 1207 007223 1208 007226 1210 007260 1214 007334 1218 007367 1222 007376 1225 007403 1228 007412 1230 007413 1236 007421 1237 007422 1241 007431 1244 007433 1248 007446 1249 007450 1254 007460 1257 007466 1260 007471 1261 007475 1264 007506 1266 007512 1267 007516 1271 007521 1273 007541 1276 007562 1277 007566 2897 007567 2900 007576 2901 007613 2905 007623 2906 007630 2908 007632 2911 007636 2912 007654 2914 007655 2916 007701 2917 007713 2919 007714 2922 007723 2923 007740 2926 007742 2927 007747 2930 007750 2931 007755 2933 007757 2936 007763 2937 010001 2939 010002 2940 010011 2941 010026 2942 010041 2944 010075 2946 010076 2947 010117 2949 010142 2950 010144 2951 010163 2954 010165 2955 010203 2957 010204 2958 010205 2959 010215 2962 010230 2963 010240 2965 010241 2966 010244 2967 010246 2968 010250 2970 010276 2973 010321 2975 010325 2976 010336 2977 010337 2979 010347 2981 010402 2983 010403 2984 010430 2986 010433 2989 010436 2990 010445 2993 010456 2994 010465 2996 010466 2997 010470 2998 010521 3001 010522 3002 010527 3003 010531 3004 010533 3007 010535 3008 010540 3009 010555 3011 010563 3015 010607 3017 010633 3018 010666 3019 010667 3022 010670 3024 010677 3025 010702 3026 010703 3028 010712 3029 010714 1279 010715 1288 010717 1289 010733 1293 010742 1294 010743 1295 010745 1296 010750 1298 010767 1299 010773 1303 011011 1304 011051 1307 011054 1309 011124 1311 011127 1314 011130 1315 011133 1317 011135 1318 011147 1319 011151 1321 011174 1323 011207 1324 011210 1327 011211 1330 011216 1334 011226 1336 011227 1337 011230 1339 011231 1342 011301 1344 011315 1347 011332 1348 011365 1350 011400 1353 011403 1354 011415 1356 011427 1358 011441 1359 011442 1361 011450 1364 011456 1365 011457 1366 011460 1368 011465 1369 011500 1370 011521 1372 011533 1373 011543 1376 011557 1379 011576 1382 011605 1383 011620 1386 011632 1389 011634 1390 011635 1391 011660 1392 011661 1393 011674 1394 011675 1396 011701 1398 011735 1399 011750 1401 011773 1402 012006 1403 012045 1404 012057 1407 012066 1408 012100 1411 012112 1412 012114 1415 012116 1418 012121 1420 012154 1423 012223 1424 012233 1426 012300 1428 012344 1430 012346 1432 012352 1434 012353 1444 012355 1446 012373 1448 012406 1449 012442 1451 012465 1452 012511 1453 012532 1455 012556 1457 012557 1464 012600 1465 012602 1466 012605 1468 012606 1471 012607 1486 012610 1487 012617 1489 012621 1492 012624 1494 012671 1497 012673 1500 012747 1501 012751 1502 012753 1505 012757 1506 012765 1509 013010 1511 013012 1512 013034 1514 013036 1516 013040 1521 013060 1522 013076 1526 013121 1529 013141 1531 013145 1532 013146 1534 013147 1537 013154 1540 013161 1543 013173 1549 013263 1550 013266 1551 013267 1562 013273 1565 013276 1567 013334 1568 013336 1569 013337 1571 013343 1574 013353 1575 013356 1578 013357 1580 013415 1581 013417 1582 013420 1585 013424 1589 013425 1592 013430 1593 013447 1596 013450 1597 013465 1600 013472 1602 013530 1603 013532 1605 013533 1608 013536 1609 013550 1610 013562 1611 013565 1614 013572 1617 013605 1618 013612 1619 013617 1620 013654 1621 013656 1624 013700 1625 013701 1628 013715 1631 013762 1632 013764 1635 013765 1637 013766 1639 014000 1641 014001 1644 014024 1648 014041 1649 014055 1651 014067 1653 014070 1657 014073 1660 014173 1663 014176 1666 014276 1668 014301 1691 014310 1693 014311 1697 014322 1698 014336 1700 014350 1703 014351 1707 014357 1708 014361 1709 014365 1712 014371 1713 014372 1714 014373 1715 014374 1716 014376 1719 014403 1720 014410 1721 014412 1722 014413 1725 014417 1726 014424 1727 014426 1730 014427 1732 014460 1735 014462 1737 014470 1740 014471 1742 014472 1744 014520 1746 014522 1748 014550 1750 014552 1752 014553 1753 014565 1754 014567 1755 014572 1756 014573 1757 014576 1758 014600 1759 014613 1762 014614 1765 014646 1766 014650 1768 014651 1769 014654 1772 014656 1774 014657 1777 014664 1778 014667 1780 014673 1782 014677 1783 014711 1785 014712 1788 014713 1789 014714 1791 014726 1793 014727 1796 014734 1797 014735 1800 014744 1801 014745 1802 014752 1803 014753 1805 014755 1806 014756 1808 014763 1809 014764 1810 014765 1811 014775 1813 015007 1814 015011 1817 015015 1819 015047 1821 015051 1826 015052 1834 015054 1836 015055 1838 015110 1840 015141 1845 015172 1846 015213 1847 015236 1849 015263 1852 015266 1854 015272 1857 015274 1858 015276 1861 015277 1864 015304 1867 015305 1882 015307 1885 015322 1888 015373 1890 015415 1893 015417 1896 015422 1897 015440 1900 015442 1902 015465 1905 015467 1909 015502 1912 015533 1917 015534 1920 015537 1921 015571 1924 015572 1926 015613 1929 015615 1932 015627 1935 015635 1939 015642 1942 015644 1945 015675 1947 015701 1948 015703 1951 015711 1952 015714 1956 015722 1959 015730 1962 015741 1963 015744 1966 015770 1968 015777 1971 016004 1972 016015 1974 016027 1977 016034 1978 016045 1980 016057 1982 016060 2014 016061 2017 016105 2020 016115 2021 016117 2022 016121 2023 016122 2024 016124 2025 016125 2026 016130 2027 016132 2028 016133 2029 016136 2030 016140 2032 016145 2033 016155 2036 016200 2038 016223 2040 016224 2043 016232 2046 016235 2047 016236 2048 016256 2049 016261 2051 016262 2054 016274 2055 016276 2056 016300 2058 016301 2061 016316 2064 016333 2067 016340 2068 016342 2070 016343 2073 016355 2076 016360 2077 016361 2078 016362 2079 016407 2080 016410 2081 016411 2084 016423 2085 016425 2086 016426 2089 016440 2090 016442 2091 016443 2094 016450 2095 016452 2096 016453 2099 016465 2100 016470 2104 016474 2105 016476 2107 016526 2111 016527 2114 016532 2115 016534 2116 016535 2117 016553 2119 016564 2121 016565 2124 016602 2127 016617 2130 016631 2134 016634 2135 016635 2136 016641 2138 016642 2141 016647 2144 016652 2145 016653 2147 016671 2150 016677 2151 016701 2152 016702 2154 016703 2157 016710 2158 016712 2159 016713 2161 016714 2164 016721 2165 016723 2166 016724 2168 016725 2171 016732 2172 016734 2173 016735 2175 016736 2178 016743 2179 016745 2180 016746 2184 016747 2185 016761 2187 016763 2190 016772 2191 016773 2193 016774 2196 017011 2200 017035 2203 017040 2204 017042 2206 017066 2210 017067 2214 017111 2216 017113 2218 017114 2221 017130 2222 017132 2223 017134 2225 017156 2227 017171 2229 017173 2231 017177 2232 017201 2234 017211 2235 017214 2237 017230 2240 017231 2242 017235 2245 017237 2246 017250 2249 017253 2251 017254 2254 017266 2255 017271 2259 017303 2261 017304 2264 017322 2265 017324 2267 017340 2269 017341 2272 017346 2273 017350 2278 017407 2280 017420 2282 017421 2285 017433 2288 017463 2289 017470 2291 017471 2294 017476 2297 017501 2299 017503 2301 017533 2304 017534 2306 017535 2309 017542 2312 017600 2313 017602 2317 017603 2318 017624 2320 017626 2322 017637 2325 017643 2327 017667 2330 017672 2333 017676 2335 017722 2338 017725 2341 017730 2343 017757 2346 017760 2349 017763 2351 020007 2353 020010 2355 020011 2358 020016 2359 020021 2362 020022 2365 020034 2366 020036 2368 020037 2371 020051 2374 020101 2375 020104 2377 020105 2380 020117 2381 020121 2382 020123 2386 020124 2387 020153 2390 020155 2393 020157 2394 020167 2397 020204 2398 020243 2401 020246 2403 020310 2404 020312 2407 020313 2409 020336 2411 020371 2414 020407 2419 020413 2424 020445 2426 020460 2428 020525 2433 020563 2434 020573 2435 020574 2436 020607 2437 020610 2438 020612 2439 020614 2444 020616 2446 020620 2518 020630 2451 020631 2454 020632 2455 020633 2458 020641 2459 020647 2463 020651 2464 020662 2465 020663 2468 020665 2469 020706 2470 020726 2471 020735 2473 020747 2475 020750 2480 020752 2481 020776 2484 021003 2485 021005 2486 021006 2487 021007 2490 021015 2491 021017 2494 021035 2495 021036 2498 021054 2499 021056 2502 021075 2503 021076 2506 021101 2507 021103 2510 021121 2513 021122 2514 021124 2516 021125 2520 021126 2523 021134 2526 021140 2527 021166 2529 021215 2532 021220 2534 021221 2537 021227 2539 021256 2541 021310 2543 021313 2547 021314 2566 021322 2568 021325 2572 021333 2573 021365 2575 021370 2576 021371 2577 021374 2578 021377 2582 021405 2583 021411 2584 021413 2585 021414 2588 021417 2590 021451 2592 021454 2593 021464 2594 021501 2595 021510 2596 021522 2597 021551 2599 021566 2600 021600 2602 021612 2603 021661 2606 021665 2607 021715 2610 021720 2611 021741 2614 021744 2616 022000 2617 022003 2621 022004 2624 022014 2626 022021 2627 022033 2628 022034 2629 022035 2630 022036 2633 022050 2634 022060 2635 022062 2637 022063 2638 022073 2641 022111 2642 022112 2644 022126 2647 022131 2648 022132 2651 022136 2652 022141 2653 022142 2654 022150 2655 022153 2657 022160 2658 022170 2659 022171 2661 022212 2663 022225 2664 022246 2666 022272 2669 022275 2672 022331 2673 022334 2676 022346 2678 022360 2681 022367 2682 022371 2683 022373 2685 022374 2693 022375 2700 022403 2702 022406 2704 022444 2705 022450 2706 022455 2707 022460 2708 022471 2709 022506 2711 022510 2712 022524 2713 022540 2714 022566 2715 022616 2717 022634 2718 022664 2719 022712 2721 022755 2723 022756 2725 022763 2726 022766 2727 022770 2728 022772 2729 022777 2730 023006 2731 023042 2732 023054 2733 023075 2734 023112 2735 023133 2736 023146 2741 023147 2748 023163 2749 023175 2752 023210 2754 023214 2755 023223 2757 023234 2803 023236 2809 023237 2835 023245 2838 023251 2841 023255 2843 023310 2844 023317 2845 023321 2847 023353 2849 023362 2855 023432 2857 023434 2858 023436 2860 023442 2862 023451 2865 023453 2866 023466 2869 023470 2871 023542 2874 023565 2877 023570 2878 023614 2881 023653 2884 023654 2885 023656 2887 023657 2892 023715 3031 023716 3039 023737 3041 023750 3043 023757 3046 023765 3047 023767 3048 023772 3050 024014 3053 024015 3055 024021 3057 024022 3058 024023 3059 024030 3062 024033 3063 024052 3066 024053 3067 024056 3069 024057 3070 024060 3072 024061 3075 024063 3076 024064 3078 024065 3081 024067 3082 024071 3085 024073 3086 024075 3103 024144 ----------------------------------------------------------- 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