COMPILATION LISTING OF SEGMENT comp_get_file_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/23/85 0957.6 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* compose subroutine to locate and access input files */ 10 11 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 12 13 comp_get_file_: 14 proc; 15 return; /* no entry here */ 16 17 /* LOCAL STORAGE */ 18 19 dcl ctl_info_ptr ptr; /* for comp_report_$ctlstr */ 20 dcl (i, j, k) fixed bin; /* working index */ 21 dcl 1 insert_status 22 aligned like status_branch; 23 /* local insert block index */ 24 dcl insertndx fixed bin init (0); 25 dcl itsptr ptr; /* local ITS pointer */ 26 dcl pname_ptr ptr; /* primary entryname */ 27 dcl pname char (32) aligned based (pname_ptr); 28 dcl status_area area (4096); /* work area for status */ 29 30 dcl (addr, before, bool, divide, hbound, index, null, pointer, rtrim, size, 31 search) builtin; 32 33 dcl comp_error_table_$limitation 34 fixed bin (35) ext static; 35 dcl error_table_$no_r_permission 36 fixed bin (35) ext static; 37 dcl error_table_$segknown 38 fixed bin (35) ext static; 39 dcl error_table_$zero_length_seg 40 fixed bin (35) ext static; 41 42 dcl com_err_ entry options (variable); 43 dcl expand_pathname_$add_suffix 44 entry (char (*), char (*), char (*) aligned, 45 char (*) aligned, fixed bin (35)); 46 dcl hcs_$status_long 47 entry (char (*) aligned, char (*) aligned, 48 fixed bin (1), ptr, ptr, fixed bin (35)); 49 dcl msf_manager_$get_ptr 50 entry (ptr, fixed bin, bit (1), ptr, fixed bin (24), 51 fixed bin (35)); 52 dcl msf_manager_$open 53 entry (char (*) aligned, char (*) aligned, ptr, 54 fixed bin (35)); 55 dcl pathname_ entry (char (*) aligned, char (*) aligned) 56 returns (char (168)); 57 dcl search_paths_$find_dir 58 entry (char (*), ptr, char (*) aligned, char (*), 59 char (*) aligned, fixed bin (35)); 60 dcl suffixed_name_$make 61 entry (char (*) aligned, char (*), char (32) aligned, 62 fixed bin (35)); 63 64 find: 65 entry (given_name, fildataptr, refdir, source_file, suffix, ercd); 66 67 /* PARAMETERS */ 68 69 dcl given_name char (*); /* given search name */ 70 dcl fildataptr ptr; /* pointer to the file struc */ 71 dcl 1 fildata aligned like insert.file based (fildataptr); 72 dcl refdir char (*); /* dir for refdir rule */ 73 dcl source_file bit (1); /* 1= source file, 0= insert file */ 74 dcl suffix char (*); /* file suffix */ 75 dcl ercd fixed bin (35); /* system error code */ 76 77 ctl_info_ptr = addr (ctl.info); 78 ercd = 0; 79 80 if (shared.bug_mode & dt_sw) | (source_file & sf_sw) 81 then call ioa_ ("get_file_$find: (^[S^;I^] ^a)", source_file, given_name); 82 /* force suffix, the dir may not */ 83 call /* be the right one, tho */ 84 expand_pathname_$add_suffix (given_name, suffix, fildata.dir, 85 fildata.entryname, ercd); 86 if ercd ^= 0 87 then 88 do; 89 call com_err_ (ercd, "compose", "Expanding path for ^a", given_name); 90 goto find_return; 91 end; 92 93 fildata.refname = 94 substr (fildata.entryname, 1, length (rtrim (fildata.entryname)) - 7); 95 96 if source_file /* a command line file? */ 97 then fildata.insert_ptr = fildataptr; 98 99 else /* insert file */ 100 do; /* search for given name */ 101 do i = 1 to insert_data.ref_area.count; 102 refstr_ptr = /* set search pointer & length */ 103 addr (insert_data.ref_area.ptr (i) -> insert_refs.name (1)); 104 refstr_len = 32 * insert_data.ref_area.ptr (i) -> insert_refs.count; 105 /* search name area */ 106 j = index (refname_str, fildata.entryname); 107 108 if j > 0 /* did we find it? */ 109 then 110 do; /* true name index */ 111 j = divide (j, 32, 17, 0) + 1; 112 insertndx = /* fetch insert index */ 113 insert_data.ref_area.ptr (i) -> insert_refs.index (j); 114 goto name_found; 115 end; 116 end; /**/ 117 /* no luck, this is a new name */ 118 i = insert_data.ref_area.count; /* select last name area */ 119 /* fetch count */ 120 j = insert_data.ref_area.ptr (i) -> insert_refs.count; 121 /* do we need a fresh name area? */ 122 if j = hbound (insert_data.ref_area.ptr (i) -> insert_refs.name, 1) 123 then 124 do; /* last one full? */ 125 if i = hbound (insert_data.ref_area.ptr, 1) 126 then 127 do; 128 call comp_report_$ctlstr (4, comp_error_table_$limitation, 129 ctl_info_ptr, ctl_line, 130 "Cant have more than ^d insert file names.", 131 60 * hbound (insert_data.ref_area.ptr, 1) 132 * 133 hbound (insert_data.ref_area.ptr (i) -> insert_refs.name, 134 1)); 135 ercd = 1; 136 goto find_return; 137 end; 138 139 i, insert_data.ref_area.count = i + 1; 140 insert_data.ref_area.ptr (i) = 141 allocate (const.local_area_ptr, size (insert_refs)); 142 end; /**/ 143 /* record new name */ 144 j = insert_data.ref_area.ptr (i) -> insert_refs.count + 1; 145 insert_data.ref_area.ptr (i) -> insert_refs.name (j) = 146 fildata.entryname; 147 end; /**/ 148 /* if a search is needed */ 149 if search ("<>", given_name) = 0 150 then 151 do; 152 if ^source_file /* search only for insert files */ 153 then 154 do; 155 call search_paths_$find_dir ("compose", null (), fildata.entryname, 156 refdir, fildata.dir, ercd); 157 if ercd ^= 0 158 then 159 do; 160 call comp_report_$ctlstr (3, ercd, ctl_info_ptr, ctl_line, 161 "Searching for ^a", given_name); 162 goto find_return; 163 end; 164 end; 165 end; 166 167 /* else /* no search, expand it */ 168 /* do; 169*/* call 170*/* expand_pathname_$add_suffix (given_name, suffix, fildata.dir, 171*/* fildata.entryname, ercd); 172*/* if ercd ^= 0 173*/* then 174*/* do; 175*/* if source_file 176*/* then call 177*/* com_err_ (ercd, "compose", "Expanding path for ^a", 178*/* given_name); 179*/* else call 180*/* comp_report_$ctlstr (3, ercd, ctl_info_ptr, ctl_line, 181*/* "Expanding path for ^a", given_name); 182*/* goto find_return; 183*/* end; 184*/* end; */ 185 186 fildata.path = pathname_ (fildata.dir, fildata.entryname); 187 188 if ^source_file /* an insert file? */ 189 then 190 do; 191 insert_data.ref_area.ptr (i) -> insert_refs.count = j; 192 /* find out everything we know */ 193 status_area_ptr = addr (status_area); 194 call hcs_$status_long (fildata.dir, fildata.entryname, 0, 195 addr (insert_status), status_area_ptr, ercd); 196 if ercd ^= 0 197 then 198 do; 199 sts_err: 200 call comp_report_$ctlstr (3, ercd, ctl_info_ptr, ctl_line, 201 "Getting status of ^a", fildata.path); 202 goto find_return; 203 end; 204 205 if insert_status.type = Directory & insert_status.bit_count = 0 206 then 207 do; 208 dir_err: 209 call comp_report_$ctlstr (3, ercd, ctl_info_ptr, ctl_line, 210 "Directories not allowed, ^a", fildata.path); 211 goto find_return; 212 end; 213 214 if insert_status.type = Link 215 then 216 do; /* record link target path */ 217 status_ptr = addr (insert_status); 218 fildata.path = status_pathname; 219 /* now chase the link */ 220 call hcs_$status_long (fildata.dir, fildata.entryname, 1, 221 addr (insert_status), null, ercd); 222 if ercd ^= 0 223 then goto sts_err; 224 225 if insert_status.type = Directory & insert_status.bit_count = 0 226 then goto dir_err; 227 228 call expand_pathname_$add_suffix ((fildata.path), suffix, 229 fildata.dir, "", ercd); 230 if ercd ^= 0 231 then 232 do; 233 call comp_report_$ctlstr (3, ercd, ctl_info_ptr, ctl_line, 234 "Expanding path for ^a", given_name); 235 goto find_return; 236 end; 237 end; 238 239 do k = 1 to insert_data.count /* do we know it by another name? */ 240 while (insert_data.ptr (k) -> insert.path ^= fildata.path); 241 end; 242 243 if k <= insert_data.count /* yes */ 244 then 245 do; 246 fildata.charcount = insert_data.ptr (k) -> insert.charcount; 247 fildata.fcb_ptr = insert_data.ptr (k) -> insert.fcb_ptr; 248 end; /* need a new file data block */ 249 /* check limit */ 250 if insert_data.count = hbound (insert_data.ptr, 1) 251 then 252 do; 253 call comp_report_$ctlstr (4, comp_error_table_$limitation, 254 addr (ctl.info), ctl_line, 255 "Cant have more than ^d insert files.", 256 hbound (insert_data.ptr, 1)); 257 goto find_return; 258 end; 259 260 insertndx, insert_data.count = insert_data.count + 1; 261 insert_data.ptr (insertndx) = 262 allocate (const.global_area_ptr, size (insert)); 263 /* setup file data */ 264 shared.insert_ptr = insert_data.ptr (insertndx); 265 insert.file = fildata; 266 insert.insert_ptr = shared.insert_ptr; 267 insert.charcount, insert.comp_no = 0; 268 insert.fcb_ptr, insert.pointer = null; 269 270 insert_data.ref_area.ptr (i) -> insert_refs.index (j) = insertndx; 271 /* make sure user can access it */ 272 if bool (insert_status.mode, "01000"b, "0001"b) ^= "01000"b 273 then 274 do; 275 ercd = error_table_$no_r_permission; 276 if source_file 277 then call com_err_ (ercd, "compose", "^a", fildata.path); 278 else call comp_report_$ctlstr (3, ercd, ctl_info_ptr, ctl_line, 279 "^a", fildata.path); 280 goto find_return; 281 end; /* and theres something in it */ 282 if insert_status.bit_count > 0 283 then fildata.charcount = divide (insert_status.bit_count, 9, 21, 0); 284 else 285 do; 286 ercd = error_table_$zero_length_seg; 287 if source_file 288 then call com_err_ (ercd, "compose", "^a", fildata.path); 289 else call comp_report_$ctlstr (3, ercd, ctl_info_ptr, ctl_line, 290 "^a", fildata.path); 291 goto find_return; 292 end; 293 end; 294 295 call msf_manager_$open (fildata.dir, fildata.entryname, itsptr, ercd); 296 if ercd ^= 0 & ercd ^= error_table_$segknown 297 then 298 do; 299 if source_file 300 then call com_err_ (ercd, "compose", "Input file ^a", fildata.path); 301 else call comp_report_$ctlstr (3, ercd, ctl_info_ptr, ctl_line, "^a", 302 fildata.path); 303 goto find_return; 304 end; 305 306 fildata.fcb_ptr = itsptr; 307 ercd = 0; 308 309 if ^source_file 310 then insert.fcb_ptr = fildata.fcb_ptr; 311 312 name_found: 313 if ^source_file 314 then 315 do; 316 shared.insert_ptr = insert_data.ptr (insertndx); 317 insert_data.index, insert.file.info.fileno = insertndx; 318 fildata = insert.file; 319 end; 320 321 find_return: 322 if (shared.bug_mode & dt_sw) | (source_file & sf_sw) 323 then call ioa_ ("^5x(get_file_$find: ^a)", fildata.path); 324 325 return; /* end of find */ 326 327 open: 328 entry (fildataptr, source_file, ercd); 329 330 /* LOCAL STORAGE */ 331 332 dcl bc fixed bin (24); /* local bitcount */ 333 dcl chrcount fixed bin (21); /* local character count */ 334 335 ercd = 0; 336 337 if (shared.bug_mode & dt_sw) | (source_file & sf_sw) 338 then call ioa_ ("get_file_$open: (^[S^;I^] ^a)", source_file, fildata.path) 339 ; 340 341 if ^source_file /* get status of insert file */ 342 then 343 do; 344 insertndx = insert_data.index; /* copy insert data index */ 345 /* The char count & dtcm must checked 346* for every insertion of a file 347* because of the possibility of 348* dynamically changing insert files */ 349 call hcs_$status_long (fildata.dir, fildata.entryname, 1, 350 addr (insert_status), null (), ercd); 351 if ercd ^= 0 352 then 353 do; 354 call comp_report_ (3, ercd, "Getting status of insert file.", 355 addr (ctl.info), ctl_line); 356 goto open_return; 357 end; 358 359 if insert_status.bit_count = 0 360 then 361 do; 362 ercd = error_table_$zero_length_seg; 363 call comp_report_ (3, ercd, "Insert file is empty.", 364 addr (ctl.info), ctl_line); 365 goto open_return; 366 end; 367 368 chrcount = divide (insert_status.bit_count, 9, 21, 0); 369 /* if critical stuff has changed */ 370 if insert_data.ptr (insert_data.index) -> insert.charcount ^= chrcount 371 | insert_data.ptr (insert_data.index) -> insert.dtcm 372 ^= insert_status.dtcm 373 then 374 do; /* record new data */ 375 fildata.charcount = chrcount; 376 insert_data.ptr (insert_data.index) -> insert.dtcm = 377 insert_status.dtcm; /* clear all labels */ 378 insert_data.ptr (insert_data.index) -> insert.label.count = 0; 379 end; /* point to new file */ 380 shared.insert_ptr = insert_data.ptr (insert_data.index); 381 insert.insert_ptr = shared.insert_ptr; 382 insert.thrb = ctl.info.fileno; 383 insert.callers_name = shared.input_filename; 384 end; /**/ 385 /* fetch component zero */ 386 call msf_manager_$get_ptr ((fildata.fcb_ptr), 0, "0"b, itsptr, bc, ercd); 387 if ercd ^= 0 388 then 389 do; 390 call com_err_ (ercd, "compose", 391 "msf_manager_ attempting to access" 392 || " component 0 of input file ^a", fildata.path); 393 goto open_return; 394 end; 395 396 fildata.pointer = itsptr; 397 if source_file /* for source files */ 398 then fildata.charcount = divide (bc, 9, 21, 0); 399 /* copy various data to shared */ 400 shared.input_dirname = rtrim (fildata.dir); 401 shared.input_filename = fildata.refname; 402 open_return: 403 if (shared.bug_mode & dt_sw) | (source_file & sf_sw) 404 then call ioa_ ("^5x(get_file<_$open) (^d ^a ^p)", insertndx, 405 fildata.refname, fildata.pointer); 406 407 return; 408 409 dcl dt_sw bit (1) static init ("0"b); 410 dtn: 411 entry; 412 dt_sw = "1"b; 413 return; 414 dtf: 415 entry; 416 dt_sw = "0"b; 417 return; 418 419 dcl sf_sw bit (1) static init ("0"b); 420 sfn: 421 entry; 422 sf_sw = "1"b; 423 return; 424 sff: 425 entry; 426 sf_sw = "0"b; 427 return; 428 429 allf: 430 entry; 431 dt_sw, sf_sw = "0"b; 432 return; 433 1 1 /* BEGIN INCLUDE FILE comp_entries.incl.pl1 */ 1 2 1 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 1 4 1 5 dcl compose_severity_ 1 6 fixed bin (35) ext static; 1 7 dcl comp_ entry; 1 8 dcl comp_art_ entry (ptr, bit (1)); 1 9 dcl comp_block_ctls_ 1 10 entry (fixed bin); 1 11 dcl comp_break_ entry (fixed bin, fixed bin); 1 12 dcl comp_break_ctls_ 1 13 entry (fixed bin); 1 14 dcl comp_ctls_ entry (bit (1) aligned); 1 15 dcl comp_eject_page_ 1 16 entry; 1 17 dcl comp_expr_eval_ 1 18 entry (char (*) var, fixed bin (21), ptr, fixed bin, 1 19 fixed bin, bit (1), fixed bin (31), char (*) var, 1 20 bit (9), fixed bin (35)); 1 21 dcl comp_extr_str_ entry (bit (1), char (*) var, fixed bin (21), 1 22 fixed bin (21), fixed bin (21), ptr) 1 23 returns (char (*) var); 1 24 dcl comp_fill_ entry; 1 25 dcl comp_font_ entry (bit (1), char (*) var, char (8) aligned); 1 26 dcl comp_format_ctls_ 1 27 entry (fixed bin); 1 28 dcl comp_get_file_$find 1 29 entry (char (*), ptr, char (*), bit (1), char (*) var, 1 30 fixed bin (35)); 1 31 dcl comp_get_file_$open 1 32 entry (ptr, bit (1), fixed bin (35)); 1 33 dcl comp_head_page_ 1 34 entry (fixed bin (31)); 1 35 dcl comp_hft_ctls_ entry (fixed bin); 1 36 dcl comp_hft_ctls_$title 1 37 entry (ptr, ptr, char (*) var, fixed bin (31)); 1 38 dcl comp_init_$one entry; 1 39 dcl comp_init_$two entry; 1 40 dcl comp_init_$three 1 41 entry; 1 42 dcl comp_insert_ctls_ 1 43 entry (fixed bin); 1 44 dcl comp_make_page_ 1 45 entry (fixed bin, bit (1)); 1 46 dcl comp_make_page_$cleanup 1 47 entry; 1 48 dcl comp_measure_ entry (char (1020) var, ptr, bit (1), bit (1), bit (6), 1 49 fixed bin (31), ptr, ptr, ptr); 1 50 dcl comp_read_$name 1 51 entry (char (*) var, fixed bin (21), fixed bin (21), 1 52 ptr) returns (char (*) var); 1 53 dcl comp_read_$number 1 54 entry (char (*) var, (*) fixed bin (31), 1 55 fixed bin (21), fixed bin (21), ptr, fixed bin (35)) 1 56 returns (fixed bin (31)); 1 57 dcl comp_read_$line 1 58 entry (ptr, char (*) var, bit (1)); 1 59 dcl comp_report_ entry (fixed bin, fixed bin (35), char (*), ptr, 1 60 char (*) var); 1 61 dcl comp_report_$ctlstr 1 62 entry options (variable); 1 63 /**** (sev, code, info, line, ctl_str, args... */ 1 64 dcl comp_report_$exact 1 65 entry (char (*), ptr); 1 66 dcl comp_space_ entry (fixed bin (31), ptr, bit (1), bit (1), bit (1), 1 67 bit (1)); 1 68 dcl comp_tbl_ctls_ entry (fixed bin); 1 69 dcl comp_title_block_ 1 70 entry (ptr); 1 71 dcl comp_update_symbol_ 1 72 entry (bit (1), bit (1), bit (1), char (32), 1 73 char (*) var); 1 74 dcl comp_use_ref_ entry (char (*) var, bit (1), bit (1), ptr); 1 75 dcl comp_util_$add_text 1 76 entry (ptr, bit (1), bit (1), bit (1), bit (1), ptr); 1 77 dcl comp_util_$display 1 78 entry (char (*) var, fixed bin, bit (1)) 1 79 returns (char (*) var); 1 80 dcl comp_util_$escape 1 81 entry (char (*) var, ptr); 1 82 dcl comp_util_$getblk 1 83 entry (fixed bin, ptr, char (2), ptr, bit (1)); 1 84 dcl comp_util_$num_display 1 85 entry (ptr, fixed bin) returns (char (256) var); 1 86 dcl comp_util_$pageno 1 87 entry (fixed bin, char (*) var); 1 88 dcl comp_util_$pictures /* emit pending pictures */ 1 89 entry /**/ 1 90 (ptr); /* current text block */ 1 91 dcl comp_util_$pop entry (char (32)); 1 92 dcl comp_util_$push 1 93 entry (char (32)); 1 94 dcl comp_util_$relblk 1 95 entry (fixed bin, ptr); 1 96 dcl comp_util_$replace_text 1 97 entry (ptr, bit (1), ptr, ptr); 1 98 dcl comp_util_$search_tree 1 99 entry (char (32), bit (1)); 1 100 dcl comp_util_$set_bin 1 101 entry (fixed bin (31), char (32) var, fixed bin (31), 1 102 fixed bin (31), fixed bin (31), (*) fixed bin (31), 1 103 fixed bin (31)); 1 104 dcl comp_util_$set_net_page 1 105 entry (bit (1)); 1 106 dcl comp_util_$translate 1 107 entry (char (*) var) returns (char (*) var); 1 108 dcl comp_write_block_ 1 109 entry (fixed bin); 1 110 dcl comp_write_page_ 1 111 entry; 1 112 1 113 /* END INCLUDE FILE comp_entries.incl.pl1 */ 434 2 1 /* BEGIN INCLUDE FILE comp_fntstk.incl.pl1 */ 2 2 2 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 2 4 2 5 dcl fntstk_eptr ptr; /* font stack entry structure */ 2 6 dcl 1 fntstk_entry aligned based (fntstk_eptr), 2 7 2 bachelor bit (1), /* 1= has no members */ 2 8 2 devfnt fixed bin, /* font in the device */ 2 9 2 fam_name char (32), /* family name */ 2 10 2 famndx fixed bin, /* family index */ 2 11 2 fntptr ptr, /* font table pointer */ 2 12 2 mem_name char (32), /* /member name (or null) */ 2 13 2 memndx fixed bin, /* member index */ 2 14 2 memptr ptr, /* member table pointer */ 2 15 2 name char (65) var, /* font name */ 2 16 2 size fixed bin (31), /* requested point size */ 2 17 2 ps fixed bin (31), /* effective point size */ 2 18 2 fcs_str char (8); /* FCS string */ 2 19 2 20 /* END INCLUDE FILE comp_fntstk.incl.pl1 */ 435 3 1 /* BEGIN INSERT FILE ... comp_insert.incl.pl1 */ 3 2 3 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 3 4 3 5 dcl 1 insert_data aligned based (const.insert_data_ptr), 3 6 2 count fixed bin, /* count of allocated data blocks */ 3 7 2 index fixed bin, /* the current block */ 3 8 2 ptr (1000) ptr, /* insert file data block pointers */ 3 9 2 ref_area, /* ref name string area data */ 3 10 3 count fixed bin, /* count of allocated areas */ 3 11 3 ptr (100) ptr; /* area pointers */ 3 12 /* insert call stack */ 3 13 dcl 1 call_stack aligned based (const.call_stk_ptr), 3 14 2 count fixed bin, /* count of allocated boxes */ 3 15 2 index fixed bin, /* current stack index */ 3 16 2 ptr (0:50) ptr; /* stack entry ptrs */ 3 17 dcl call_box_ptr ptr; 3 18 dcl 1 call_box aligned like insert.file based (call_box_ptr); 3 19 dcl 1 call_box0 aligned like insert.file based (call_stack.ptr (0)); 3 20 3 21 dcl 1 insert_refs aligned based, /* ref names structure */ 3 22 2 count fixed bin, /* count of names in area */ 3 23 2 index (60) fixed bin, /* insert_data index values */ 3 24 2 name (60) char (32) unal; 3 25 /* the ref names */ 3 26 3 27 dcl refname_str char (refstr_len) based (refstr_ptr); 3 28 /* for searching */ 3 29 dcl refstr_len fixed bin; /* length of refname search string */ 3 30 dcl refstr_ptr ptr; /* refname string pointer */ 3 31 /* data for an insert file */ 3 32 dcl 1 insert aligned based (shared.insert_ptr), 3 33 2 file, /* also used for source files */ 3 34 3 charcount 3 35 fixed bin (21), /* segment character count */ 3 36 3 comp_no fixed bin, /* msf component number */ 3 37 3 dir char (168), /* containing dir */ 3 38 3 entryname 3 39 char (32), /* primary entryname */ 3 40 3 exit_lineno 3 41 fixed bin (35), /* line number of .ifi */ 3 42 3 fcb_ptr ptr, /* FCB pointer for msf manager */ 3 43 3 info like text_entry.info, 3 44 3 insert_ptr /* self pointer - needed when */ 3 45 ptr, /* struc is in the call stack */ 3 46 /* 3 ntext fixed bin (21), /* character count of text line */ 3 47 3 path char (200) var, /* complete pathname */ 3 48 3 pointer ptr, /* segment pointer */ 3 49 3 posn fixed bin (21), /* input character position */ 3 50 3 refname char (200) var, /* for source files only */ 3 51 2 callers_name 3 52 char (100), /* refname of calling file */ 3 53 2 dtcm bit (36), /* fs date-time-modified */ 3 54 2 refndx fixed bin, /* CURRENT refname index for file */ 3 55 2 thrb fixed bin unsigned, 3 56 /* backward thread index in insert stack */ 3 57 2 label, /* label data per insert level */ 3 58 3 count fixed bin, 3 59 3 line (250) fixed bin unsigned, 3 60 3 position (250) fixed bin (21), 3 61 3 value (250) char (32); 3 62 3 63 /* empty file data structure */ 3 64 dcl 1 init_file_data 3 65 static options (constant), 3 66 2 charcount fixed bin (21) init (0), 3 67 /* segment character count */ 3 68 2 comp_no fixed bin init (0), 3 69 /* msf component number */ 3 70 2 dir char (168) init (""), 3 71 /* containing dir */ 3 72 2 entryname char (32) init (""), 3 73 /* primary entryname */ 3 74 2 exit_lineno 3 75 fixed bin (35) init (0), 3 76 /* line number of .ifi */ 3 77 2 fcb_ptr ptr init (null),/* FCB pointer for msf manager */ 3 78 2 info, /* stuff created during line input */ 3 79 3 fileno /* input file index */ 3 80 fixed bin init (0), 3 81 3 lineno /* input file line number */ 3 82 fixed bin init (0), 3 83 3 lineno0 /* call_box0 line number */ 3 84 fixed bin init (0), 3 85 2 insert_ptr ptr init (null),/* self pointer - needed when */ 3 86 /* struc is in the call stack */ 3 87 /* 2 ntext fixed bin (21) init (0), 3 88*/* /* character count of text line */ 3 89 2 path char (200) var init (""), 3 90 /* complete pathname */ 3 91 2 pointer ptr init (null),/* segment pointer */ 3 92 2 posn fixed bin (21) init (1), 3 93 /* input character position */ 3 94 2 refname char (200) var init (""); 3 95 /* for source files only */ 3 96 3 97 /* END INSERT FILE ... comp_insert.incl.pl1 */ 436 4 1 /* BEGIN INCLUDE FILE comp_option.incl.pl1 */ 4 2 4 3 dcl option_version fixed bin (35) static options (constant) init (2); 4 4 4 5 dcl 1 option aligned based (const.option_ptr), /* program options */ 4 6 2 version fixed bin (35), 4 7 /* Options with parameters */ 4 8 (2 argument_opt, /* -argument option flag */ 4 9 2 cbar_opt, /* -change_bars option flag */ 4 10 2 cbar_art_opt, /* -change_bars_art option flag */ 4 11 2 debug_opt, /* -debug option flag */ 4 12 2 db_all_opt, /* -debug_all option flag */ 4 13 2 db_file_opt, /* -debug_file option flag */ 4 14 2 device_opt, /* -device option flag */ 4 15 2 execute_opt, /* -execute option flag */ 4 16 2 from_opt, /* -from option flag */ 4 17 2 galley_opt, /* -galley option flag */ 4 18 2 hyph_opt, /* -hyphenation option flag */ 4 19 2 indent_opt, /* -indent option flag */ 4 20 2 input_file_opt, /* -input_file option flag */ 4 21 2 linespace_opt, /* -linespace option flag */ 4 22 2 output_file_opt, /* -output_file option flag */ 4 23 2 pages_opt, /* -pages option flag */ 4 24 2 page_chng_opt, /* -pages_changed option flag */ 4 25 2 parameter_opt, /* -parameter option flag */ 4 26 2 passes_opt, /* -passes option flag */ 4 27 2 tdir_opt, /* -temp_dir option flag */ 4 28 2 to_opt, /* -to option flag */ 4 29 /* Options without parameters */ 4 30 2 annot_opt, /* -annotate */ 4 31 2 brief_opt, /* -brief option flag */ 4 32 2 check_opt, /* -check option flag */ 4 33 2 cws_opt, /* -cws option flag */ 4 34 2 db_pause_opt, /* -debug_pause option flag */ 4 35 2 noart_opt, /* -noart option flag */ 4 36 2 nobell_opt, /* -no_bell option flag */ 4 37 2 nofill_opt, /* -nofill option flag */ 4 38 2 nohit_opt, /* -nohit option flag */ 4 39 2 number_opt, /* -number option flag */ 4 40 2 number_append_opt, /* -number_append option flag */ 4 41 2 number_brief_opt, /* -number_brief option flag */ 4 42 2 stop_opt, /* -stop option flag */ 4 43 2 wait_opt) unal bit (1), /* -wait option flag */ 4 44 2 MBZ bit (2) unal, 4 45 /* Optional parameters */ 4 46 2 arg_count fixed bin, /* count of -ag values */ 4 47 2 cbar, /* change bar data */ 4 48 3 level char (1), /* change level character (ASCII NUL) */ 4 49 3 place char (1), /* placement character */ 4 50 3 space fixed bin (31), /* extra left margin space needed */ 4 51 3 left, /* left margin mark data */ 4 52 4 sep fixed bin (31), /* separation */ 4 53 4 width fixed bin (31), /* mark width */ 4 54 4 mark char (80) varying, /* the left margin mark */ 4 55 3 right, /* right margin mark data */ 4 56 4 sep fixed bin (31), /* separation */ 4 57 4 width fixed bin (31), /* mark width */ 4 58 4 mark char (80) varying, /* the right margin mark */ 4 59 3 del, /* deletion mark data */ 4 60 4 sep fixed bin (31), /* separation */ 4 61 4 width fixed bin (31), /* mark width */ 4 62 4 mark char (80) varying, /* the deletion mark */ 4 63 2 db_after_line fixed bin (35), /* source line for enabling insert debug */ 4 64 2 db_before_line fixed bin (35), /* source line for disabling insert debug */ 4 65 2 db_file char (200) var, /* file pathanme for debug */ 4 66 2 db_file_after fixed bin (35), /* debug file starting line */ 4 67 2 db_line_end fixed bin (35), /* final line for -debug output */ 4 68 2 db_line_strt fixed bin (35), /* initial line for -debug output */ 4 69 2 device char (32) varying, /* output device */ 4 70 2 extra_indent fixed bin (31), /* extra indent value */ 4 71 2 hyph_size fixed bin (31), /* least word part size for hyphenation */ 4 72 2 line_1 fixed bin (35), /* initial line for output */ 4 73 2 line_2 fixed bin (35), /* final line for output */ 4 74 2 linespace fixed bin (31), /* line spacing value */ 4 75 2 pglstct fixed bin (35), /* number of page list entries */ 4 76 2 pglstndx fixed bin (35), /* index for -pages list */ 4 77 2 pglst (0:49), /* list of requested pages */ 4 78 3 from char (32) var, 4 79 3 to char (32) var, 4 80 2 parameter char (80) varying, /* parameter from command line */ 4 81 2 passes fixed bin, /* passes remaining */ 4 82 2 pgc_select char (1) aligned; /* addendum key to control change page printing - init = NUL */ 4 83 4 84 /* END INCLUDE FILE comp_option.incl.pl1 */ 4 85 437 5 1 /* BEGIN INCLUDE FILE comp_shared.incl.pl1 */ 5 2 5 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 5 4 5 5 dcl shared_version fixed bin (35) static options (constant) init (17); 5 6 5 7 dcl 1 shared aligned based (const.shared_ptr), 5 8 2 version fixed bin (35), /* version of this structure */ 5 9 2 chars, 5 10 ( 3 sym_delim, /* delimiter for symbols */ 5 11 3 ttl_delim, /* delimiter for title parts */ 5 12 3 wrd_brkr /* word break character */ 5 13 ) char (1) unal, 5 14 3 PAD char (1) unal, 5 15 2 cbar_type char (4) var, /* change bar type */ 5 16 2 dot_add_letter /* dot page add letter */ 5 17 char (1) var, 5 18 2 EN_width fixed bin (31), /* width of EN in current font */ 5 19 2 eqn_refct fixed bin, /* equation reference counter */ 5 20 2 footref_fcs /* footnote ref FCS string */ 5 21 char (8) aligned, 5 22 2 ftn_reset char (8) var, /* footnote reset mode */ 5 23 2 ftnrefct fixed bin, /* footnote ref counter */ 5 24 2 hyph_size fixed bin (31), /* least word part size for hyphing */ 5 25 2 if_nest, /* if/then/else logic control */ 5 26 3 ndx fixed bin, /* depth of logic nest */ 5 27 3 e (25), /* nest entries */ 5 28 /* .if control switch */ 5 29 4 sw fixed bin, /* 0=off, 1=(then), -1=(else) */ 5 30 4 info aligned like text_entry.info, 5 31 4 line char (256) var, /* the control line */ 5 32 2 indctl, /* indent ctls stack */ 5 33 3 ndx fixed bin, /* current level */ 5 34 /* switch bits */ 5 35 3 stk (0:35) bit (1) unal, 5 36 2 input_dirname 5 37 char (168) var, /* dir containing current input file */ 5 38 2 input_filename 5 39 char (200) var, /* current input file name */ 5 40 2 lead fixed bin (31), /* current linespacing value */ 5 41 2 lit_count fixed bin (35), /* count of literal lines */ 5 42 2 next_pagenmbr 5 43 char (32) var, /* next page number / */ 5 44 2 output_file 5 45 char (32) var, /* output file identifier */ 5 46 2 pagecount fixed bin, /* number of pages produced */ 5 47 2 pagenum, /* page number structure */ 5 48 3 index fixed bin, /* level currently counting */ 5 49 ( 5 50 3 sep char (1) unal, /* separator chars */ 5 51 3 nmbr fixed bin (31), /* the counters */ 5 52 3 mode /* display modes */ 5 53 fixed bin (8) unal 5 54 ) dimension (20), 5 55 2 parameter char (254) var, /* command line parameter */ 5 56 2 param_pres bit (1), /* passed parameter flag */ 5 57 2 pass_counter 5 58 fixed bin, /* pass counter */ 5 59 2 picture, /* picture blocks */ 5 60 3 count fixed bin, /* number of them */ 5 61 3 space fixed bin (31), /* total picture space */ 5 62 3 blk (10), /* picture blocks */ 5 63 4 type char (4), /* type = page/col */ 5 64 4 place char (4), /* place = top/cen/bot */ 5 65 4 ptr ptr, /* pointer to block */ 5 66 4 size fixed bin (31), /* size of the picture */ 5 67 2 ptrs, 5 68 ( 3 aux_file_data_ptr, /* -> auxiliary file data */ 5 69 3 blank_footer_ptr, /* -> blank page footer */ 5 70 3 blank_header_ptr, /* -> blank page header */ 5 71 3 blank_text_ptr, /* -> blank page text */ 5 72 3 blkptr, /* -> active text */ 5 73 3 colptr, /* current column */ 5 74 3 compout_ptr, /* iocb pointer for output */ 5 75 3 compx_ptr, /* iocb pointer for compx file */ 5 76 3 ctb_ptr, /* current line artwork table */ 5 77 3 epftrptr, /* even page footer block */ 5 78 3 ephdrptr, /* even page header block */ 5 79 3 fcb_ptr, /* input file control block pointer */ 5 80 3 ftnblk_data_ptr, /* footnote block data pointer */ 5 81 3 footnote_header_ptr, /* footnote header "title" */ 5 82 3 graphic_page_ptr, /* graphic output page */ 5 83 3 hit_data_ptr, /* hit data pointer */ 5 84 3 htab_ptr, /* horizontal tab tables */ 5 85 3 hwrd_data_ptr, /* local hyphenation table */ 5 86 3 insert_ptr, /* data entry for current input file */ 5 87 3 opftrptr, /* odd page footer block */ 5 88 3 ophdrptr, /* odd page header block */ 5 89 3 ptb_ptr, /* previous line artwork table */ 5 90 3 spcl_blkptr, /* "special" block pointer */ 5 91 3 tbldata_ptr, /* table column data structure */ 5 92 3 tblkdata_ptr, /* text block data array */ 5 93 3 text_header_ptr /* empty text header structure */ 5 94 ) ptr, 5 95 2 scale, /* space conversion scale factors */ 5 96 3 horz fixed bin (31), /* horizontal */ 5 97 3 vert fixed bin (31), /* vertical */ 5 98 2 source_filename 5 99 char (200) var, /* current source file name */ 5 100 2 sws, /* switch bits */ 5 101 ( 3 bug_mode, /* debug mode */ 5 102 3 compout_not_headed, /* compout is not headed */ 5 103 3 end_input, /* EOF for current input file */ 5 104 3 end_output, /* no more output is wanted */ 5 105 3 firstpass, /* first pass over input */ 5 106 3 ftn_mode, /* in footnote mode */ 5 107 3 hyph_mode, /* hyphenating mode */ 5 108 3 inserting_hfc, /* inserting hdr, ftr, or cap */ 5 109 3 literal_mode, /* literal line mode flag */ 5 110 3 pageblock, /* blocks belong to page */ 5 111 3 picture_mode, /* building a picture */ 5 112 3 print_flag, /* producing output */ 5 113 3 purge_ftns, /* purging footnotes */ 5 114 3 suppress_footref, /* suppress next footnote ref */ 5 115 3 table_mode /* table mode */ 5 116 ) bit (1) unal, 5 117 3 MBZ bit (21) unal, 5 118 2 trans, /* trans table for .tr */ 5 119 3 in char (128) var, /* input chars */ 5 120 3 out char (128) var, /* output chars */ 5 121 2 widow_size fixed bin (31), /* widow size */ 5 122 2 widow_foot fixed bin (31); /* widow for footnotes */ 5 123 /* to save shared data between files/passes */ 5 124 dcl 1 save_shared aligned like shared based (const.save_shared_ptr); 5 125 5 126 dcl dot_addltr_symb_index 5 127 fixed bin static options (constant) init (12); 5 128 dcl max_text_lines fixed bin static options (constant) init (1000); 5 129 dcl mode_string char (16) static options (constant) 5 130 init ("arbihxocalaurlru"); 5 131 /* value overlays */ 5 132 dcl flag_value bit (1) based; 5 133 dcl num_value fixed bin (31) based; 5 134 5 135 /* END INCLUDE FILE comp_shared.incl.pl1 */ 438 6 1 /* BEGIN INCLUDE FILE comp_text.incl.pl1 */ 6 2 6 3 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 6 4 6 5 dcl 1 tblkdata /* data for allocated text blocks */ 6 6 aligned based (shared.tblkdata_ptr), 6 7 2 block, /* block pool */ 6 8 3 count fixed bin, 6 9 3 ptr (500) ptr, /* block pointers */ 6 10 /* block state flags */ 6 11 3 free (500) bit (1) unal, 6 12 2 line_area, /* line area pool */ 6 13 3 count fixed bin, 6 14 3 ptr (500) ptr, /* area pointers */ 6 15 /* area state flags */ 6 16 3 free (500) bit (1) unal, 6 17 2 text_area, /* text area pool */ 6 18 3 count fixed bin, 6 19 3 ptr (500) ptr, /* area pointers */ 6 20 /* area state flags */ 6 21 3 free (500) bit (1) unal, 6 22 3 string_area_count 6 23 fixed bin; /* line areas */ 6 24 dcl LINE_AREA_SIZE fixed bin static options (constant) init (24); 6 25 dcl line_area_ptr ptr init (null); 6 26 dcl 1 line_area aligned based (line_area_ptr), 6 27 2 next ptr, /* forward thread */ 6 28 2 prev ptr, /* backward thread */ 6 29 2 count fixed bin, /* number of lines allocated */ 6 30 2 ndx fixed bin, /* index of current line */ 6 31 2 pndx fixed bin, /* area pool index */ 6 32 2 linptr (LINE_AREA_SIZE) ptr; 6 33 /* text areas */ 6 34 dcl TEXT_AREA_SIZE fixed bin static options (constant) init (6); 6 35 dcl text_area_ptr ptr init (null); 6 36 dcl 1 text_area aligned based (text_area_ptr), 6 37 2 next ptr, /* forward thread */ 6 38 2 count fixed bin, /* number of areas allocated */ 6 39 2 ndx fixed bin, /* index of current strarea */ 6 40 2 pndx fixed bin, /* area pool index */ 6 41 2 strareaptr (TEXT_AREA_SIZE) ptr; 6 42 /* text string area */ 6 43 dcl string_area (256) fixed bin based; 6 44 dcl txtstrptr ptr; /* current text string */ 6 45 dcl txtstr char (1020) var based (txtstrptr); 6 46 6 47 dcl TEXT_VERSION fixed bin static options (constant) init (9); 6 48 /* general text block */ 6 49 dcl 1 text aligned based (shared.blkptr), 6 50 2 version fixed bin, /* version of structure */ 6 51 2 blkndx fixed bin, /* block data index */ 6 52 2 blktype char (2), /* block type code */ 6 53 /* dynamic block control stuff */ 6 54 2 hdr aligned like text_header, 6 55 /* text read from input file */ 6 56 2 input aligned like text_entry, 6 57 2 input_line char (1020) var,/* input buffer */ 6 58 2 line_area, 6 59 3 first ptr, /* head of line area thread */ 6 60 3 cur ptr, /* current line area */ 6 61 2 next_text ptr, /* next text string */ 6 62 /* text formatting parameters */ 6 63 2 parms aligned like default_parms, 6 64 2 text_area, 6 65 3 first ptr, /* head of text area thread */ 6 66 3 cur ptr; /* current text area */ 6 67 /* an empty text block line */ 6 68 dcl 1 text_entry aligned based (const.text_entry_ptr), 6 69 2 sws, /* unaligned switches, etc. */ 6 70 3 art bit (1) unal, /* line has artwork */ 6 71 3 cbar, /* change bar flags */ 6 72 4 add bit (1) unal, /* text addition flag */ 6 73 4 del bit (1) unal, /* text deletion flag */ 6 74 4 mod bit (1) unal, /* text modification flag */ 6 75 3 default bit (1) unal, /* 1 = default case as needed */ 6 76 3 DVctl bit (1) unal, /* 1 = line is a device ctl string */ 6 77 3 embedded bit (1) unal, /* 1 = line has an embedded control */ 6 78 3 end_keep bit (1) unal, /* 1= line ends a keep */ 6 79 3 fnt_chng bit (1) unal, /* 1 = text is a font change string */ 6 80 3 footref bit (1) unal, /* 1 = line has a footnote reference */ 6 81 3 hanging bit (1) unal, /* 1 = a hanging undent */ 6 82 3 keep bit (1) unal, /* 1 = unsplittable line */ 6 83 3 no_trim bit (1) unal, /* 1 = untrimmable white line */ 6 84 3 oflo bit (1) unal, /* line causes overflow */ 6 85 3 punct bit (1) unal, /* 1 = line ends with punctuation */ 6 86 3 quad bit (6) unal, /* text alignment flags */ 6 87 3 space_added /* 1= line has added space */ 6 88 bit (1) unal, 6 89 3 spcl, /* special entry - not output text */ 6 90 4 file bit (1) unal, /* 1= output to special file */ 6 91 4 blk_splt /* 1= action at block split time */ 6 92 bit (1) unal, 6 93 4 page_mkup /* 1= action at page makeup time */ 6 94 bit (1) unal, 6 95 3 table bit (1) unal, /* 1= line is a table entry */ 6 96 3 tblspc bit (1) unal, /* 1= WS fill for table mode */ 6 97 3 title bit (1) unal, /* 1= line is a */ 6 98 3 unspnct bit (1) unal, /* 1= underscore punctuation */ 6 99 3 unstop bit (1) unal, /* 1= line is/ends with UNSTOP */ 6 100 3 unstrt bit (1) unal, /* 1= line is/ends with UNSTART */ 6 101 3 unswrds bit (1) unal, /* 1= underscore words only */ 6 102 3 white bit (1) unal, /* 1= line is white space */ 6 103 3 und_prot bit (1) unal, /* 1= undent is protected */ 6 104 3 MBZ bit (4) unal, 6 105 2 art_start fixed bin unal, /* start of art string in line */ 6 106 2 art_len fixed bin unal, /* length of art string in line */ 6 107 2 cbar_level /* change level for cbars */ 6 108 char (1) aligned, 6 109 2 cur, /* current scanning data for line */ 6 110 3 chrct fixed bin, /* count of chars scanned */ 6 111 3 gaps fixed bin, /* gap count */ 6 112 3 width fixed bin (31), /* width of font chars */ 6 113 3 min fixed bin (31), /* width of min spbnds */ 6 114 3 avg fixed bin (31), /* width of avg spbnds */ 6 115 3 max fixed bin (31), /* width of max spbnds */ 6 116 3 font like fntstk_entry, 6 117 2 depth fixed bin (31), /* page depth for line */ 6 118 /* font at start of line */ 6 119 2 font like fntstk_entry, 6 120 2 index fixed bin (21), /* char index for line scanning */ 6 121 2 info, /* stuff created during line input */ 6 122 3 fileno fixed bin, /* input file index */ 6 123 3 lineno fixed bin, /* input file line number */ 6 124 3 lineno0 fixed bin, /* call_box0 line number */ 6 125 2 linespace fixed bin (31), /* linespace value for the line */ 6 126 2 lmarg fixed bin (31), /* adjusted left margin position */ 6 127 2 mod_len fixed bin, /* length of modified text */ 6 128 2 mod_start fixed bin, /* index for start of modified text */ 6 129 2 net fixed bin (31), /* net line width for filling */ 6 130 2 ptr ptr, /* pointer to the actual text */ 6 131 2 rmarg fixed bin (31), /* adjusted right margin position */ 6 132 2 spcl_iocbp ptr, /* iocb ptr for spcl line */ 6 133 2 sym_delim char (1) unal, /* symbol delimiter for this line */ 6 134 2 tblcol fixed bin, /* column for table entries */ 6 135 2 title_delim 6 136 char (1) unal, /* title delimiter if a <title> */ 6 137 2 title_index 6 138 fixed bin, /* <title> block index for line */ 6 139 2 width fixed bin (31), /* width of text */ 6 140 2 ftn, /* footnote info for line */ 6 141 3 ct fixed bin, /* number of footnote refs */ 6 142 3 used fixed bin (31), /* space used */ 6 143 3 e (40), /* limit is arbitrary */ 6 144 4 blkndx fixed bin unal, /* block index of footnote - if this 6 145* value is 0, then .frf was used */ 6 146 4 refno fixed bin unal; /* reference number */ 6 147 6 148 dcl ( 6 149 quadi init ("40"b3), /* set to the inside margin */ 6 150 quado init ("20"b3), /* set to the outside margin */ 6 151 quadl init ("10"b3), /* set left */ 6 152 quadc init ("04"b3), /* set centered */ 6 153 quadr init ("02"b3), /* set right */ 6 154 just init ("01"b3) /* justified */ 6 155 ) bit (6) static options (constant); 6 156 /* control line structure */ 6 157 dcl 1 ctl aligned like text_entry based (const.ctl_ptr); 6 158 dcl ctl_line char (1020) var based (ctl.ptr); 6 159 6 160 dcl txtlinptr ptr; /* the current text line */ 6 161 dcl 1 txtlin aligned like text_entry based (txtlinptr); 6 162 /* empty text header structure */ 6 163 dcl 1 text_header aligned based (const.text_header_ptr), 6 164 2 sws, /* control switches */ 6 165 3 art bit (1) unal, /* block has artwork */ 6 166 3 dfrftn bit (1) unal, /* block is a deferred footnote */ 6 167 3 modified bit (1) unal, /* block contains modified lines */ 6 168 3 no_trim bit (1) unal, /* 1 = dont trim WS block */ 6 169 3 oflo_ftn bit (1) unal, /* overflow footnote */ 6 170 3 tblblk bit (1) unal, /* a table block */ 6 171 3 unref bit (1) unal, /* block is an unreffed footnote */ 6 172 3 white bit (1) unal, /* block is a white space block */ 6 173 3 picture bit (1) unal, /* picture block */ 6 174 3 orphan bit (1) unal, /* 1= footnote is an orphan */ 6 175 3 MBZ bit (26) unal, 6 176 2 art_count fixed bin unal, /* to count input art lines */ 6 177 2 blkptr ptr, /* pointer to suspended block */ 6 178 2 cap_size fixed bin unal, /* line count of text caption */ 6 179 2 cap_used fixed bin (31), /* size of text caption */ 6 180 2 colno fixed bin unal, /* column owning the block */ 6 181 2 count fixed bin unal, /* line count for block */ 6 182 2 eqn_line_count 6 183 fixed bin unal, /* counter for equation lines */ 6 184 2 first_text fixed bin unal, /* OBSOLETE */ 6 185 2 ftn, /* footnotes */ 6 186 3 ct fixed bin, /* count */ 6 187 3 usd fixed bin (31), /* space used */ 6 188 3 blkndx (40) fixed bin, /* footnote block index values */ 6 189 2 head_size fixed bin, /* line count of text header */ 6 190 2 head_used fixed bin (31), /* size of text header */ 6 191 2 index fixed bin unal, /* block index of next output line */ 6 192 2 keep_count fixed bin unal, /* to count input keep lines */ 6 193 2 last_line fixed bin, /* last text line in column */ 6 194 2 mx_ttl_ndx fixed bin, /* max title index value in block */ 6 195 2 name char (32) var, /* block name, if any */ 6 196 2 nofill_count /* to count nofill lines */ 6 197 fixed bin, 6 198 2 parms_ptr ptr, /* parms for suspended block */ 6 199 2 refer fixed bin, /* inter-block reference */ 6 200 2 refer_index /* OBSOLETE */ 6 201 fixed bin, /* a reference */ 6 202 2 split fixed bin, /* split point for balancing */ 6 203 2 trl_ws fixed bin (31), /* trailing WS */ 6 204 2 used fixed bin (31); /* page space used by a column/block */ 6 205 /* text formatting parameters */ 6 206 dcl 1 text_parms aligned like default_parms 6 207 based (const.text_parms_ptr); 6 208 6 209 dcl 1 current_parms 6 210 aligned like default_parms 6 211 based (const.current_parms_ptr); 6 212 6 213 dcl 1 default_parms 6 214 aligned based (const.default_parms_ptr), 6 215 2 sws, /* control switches */ 6 216 3 quad bit (6) unal, /* text alignment mode */ 6 217 3 art bit (1) unal, /* 1 = block countains artwork */ 6 218 3 cbar, /* change bar flags */ 6 219 4 add bit (1) unal, /* text addition flag */ 6 220 4 del bit (1) unal, /* text deletion flag for next line */ 6 221 4 mod bit (1) unal, /* text modification flag */ 6 222 3 fill_mode 6 223 bit (1) unal, /* 1 = fill mode ON */ 6 224 3 footnote bit (1) unal, /* block is a footnote */ 6 225 3 hfc bit (1) unal, /* OBSOLETE */ 6 226 3 htab_mode 6 227 bit (1) unal, /* 1 = horizontal tab mode ON */ 6 228 3 keep bit (1) unal, /* keep mode */ 6 229 3 page bit (1) unal, /* block belongs to page, not text */ 6 230 3 title_mode 6 231 bit (1) unal, /* 0 = plain text, 1 = <title>s OK */ 6 232 3 MBZ bit (19) unal, 6 233 2 ftrptr ptr, /* text caption block */ 6 234 2 cbar_level /* change level for cbars */ 6 235 char (1) aligned, 6 236 2 hdrptr ptr, /* text header block */ 6 237 2 left, /* left margin data */ 6 238 3 indent fixed bin (31), 6 239 3 undent fixed bin (31), 6 240 2 linespace fixed bin (31), /* line spacing value */ 6 241 2 measure fixed bin (31), /* line space for text */ 6 242 /* right margin data */ 6 243 2 right like default_parms.left, 6 244 2 fntstk, /* stack of last 20 font changes */ 6 245 3 index fixed bin, /* which one in use */ 6 246 /* entry(0) is the default */ 6 247 3 entry (0:19) like fntstk_entry; 6 248 6 249 dcl hfcblk_ptr ptr; 6 250 dcl 1 hfcblk aligned like text based (hfcblk_ptr); 6 251 6 252 /* END INCLUDE FILE comp_text.incl.pl1 */ 439 7 1 /* BEGIN INCLUDE FILE compstat.incl.pl1 - external static data for compose 7 2* 7 3* This storage is converted from external (as declared) to internal by the 7 4* binder and contains items that must be accessible to both the bound and 7 5* unbound program. */ 7 6 7 7 /* Written: ??/??/7? - EJW 7 8* Modified: 10/18/84 - EJW - (First recorded change) Added current_parms_ptr 7 9* and removed the codes array; version 6. 7 10**/ 7 11 7 12 /* format: style2,ind2,ll79,dclind4,idind15,comcol41,linecom */ 7 13 7 14 dcl 1 compstat$compconst 7 15 aligned like const ext static; 7 16 7 17 dcl const_version fixed bin (35) static options (constant) init (6); 7 18 dcl MAX_TREE_AREA_CT /* entries in a tree area */ 7 19 fixed bin static options (constant) init (80); 7 20 dcl MAX_TREE_AREAS /* number of tree areas */ 7 21 fixed bin static options (constant) init (20); 7 22 7 23 dcl 1 const aligned based (compstat$compconst.ptr), 7 24 2 ptr ptr, /* self pointer - MUST BE FIRST */ 7 25 2 version fixed bin (35), /* structure version */ 7 26 2 art_symbols /* string of art symbols */ 7 27 char (28) aligned, 7 28 2 builtin_count /* count of builtin variables */ 7 29 fixed bin, 7 30 2 comp_dir char (200), /* dir in which compose lives */ 7 31 2 comp_version 7 32 char (8) var, /* compose version id */ 7 33 2 date_value char (8) var, /* current date */ 7 34 2 dsm_name char (32), /* device support module name */ 7 35 2 dvt_name char (32), /* device table name */ 7 36 2 max_seg_chars 7 37 fixed bin (35), /* char count in a max seg */ 7 38 2 null_str char (1) var, /* an empty string */ 7 39 2 ptrs, 7 40 ( 3 call_stk_ptr, /* -> insert call stack */ 7 41 3 colhdrptr, /* empty column header structure */ 7 42 3 ctl_ptr, /* input line structure */ 7 43 3 current_parms_ptr, /* current formatting parms */ 7 44 3 default_parms_ptr, /* default initial text parms */ 7 45 3 devptr, /* -> comp_dvt structure */ 7 46 3 dvidptr, /* -> comp_dvid structure */ 7 47 3 errblk_ptr, /* error message block pointer */ 7 48 3 footnote_parms_ptr, /* footnote formatting parms */ 7 49 3 fnttbldata_ptr, /* -> font table data */ 7 50 3 global_area_ptr, /* per invocation storage */ 7 51 3 init_page_parms_ptr, /* default initial page parms */ 7 52 3 insert_data_ptr, /* insert file data block */ 7 53 3 local_area_ptr, /* per file storage */ 7 54 3 loctbl_ptr, /* for font copying */ 7 55 3 option_ptr, /* program options block */ 7 56 3 outproc_ptr, /* device writer for cleanup */ 7 57 3 page_ptr, /* active page structure */ 7 58 3 page_header_ptr, /* empty page header structure */ 7 59 3 page_parms_ptr, /* page formatting parameter block */ 7 60 3 save_shared_ptr, /* saved shared data */ 7 61 3 shared_ptr, /* shared data structure */ 7 62 3 text_entry_ptr, /* empty text entry structure */ 7 63 3 text_header_ptr, /* empty text header structure */ 7 64 3 text_parms_ptr, /* main body formatting parms */ 7 65 3 tree_ptr /* symbol tree structure */ 7 66 ) ptr, 7 67 2 time_value char (6) var; /* time at start */ 7 68 7 69 /* Other external */ 7 70 dcl ( 7 71 ioa_, 7 72 ioa_$nnl 7 73 ) entry options (variable); 7 74 dcl iox_$error_output 7 75 ptr ext static, /* iocb pointer for error_output */ 7 76 iox_$user_input 7 77 ptr ext static, /* iocb pointer for user_input */ 7 78 iox_$user_output 7 79 ptr ext static; /* iocb pointer for user_output */ 7 80 dcl sys_info$max_seg_size 7 81 fixed bin (18) ext static; 7 82 7 83 /* END INCLUDE FILE compstat.incl.pl1 */ 440 8 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 8 2 8 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 8 4 8 5 /* This include file contains branch and link structures returned by 8 6* hcs_$status_ and hcs_$status_long. */ 8 7 8 8 dcl 1 status_branch aligned based (status_ptr), 8 9 2 short aligned, 8 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 8 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 8 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 8 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 8 14 3 dtu bit (36) unaligned, /* date/time last used */ 8 15 3 mode bit (5) unaligned, /* caller's effective access */ 8 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 8 17 3 pad1 bit (8) unaligned, 8 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 8 19 8 20 /* Limit of information returned by hcs_$status_ */ 8 21 8 22 2 long aligned, 8 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 8 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 8 25 3 lvid bit (36) unaligned, /* logical volume ID */ 8 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 8 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 8 28 3 pad2 bit (8) unaligned, 8 29 3 copy_switch bit (1) unaligned, /* copy switch */ 8 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 8 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 8 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 8 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 8 34 3 pad3 bit (5) unaligned, 8 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 8 36 3 uid bit (36) unaligned; /* unique ID */ 8 37 8 38 dcl 1 status_link aligned based (status_ptr), 8 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 8 40 2 nnames fixed bin (16) unaligned unsigned, 8 41 2 names_relp bit (18) unaligned, 8 42 2 dtem bit (36) unaligned, 8 43 2 dtd bit (36) unaligned, 8 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 8 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 8 46 8 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 8 48 based (pointer (status_area_ptr, status_branch.names_relp)), 8 49 /* array of names returned */ 8 50 status_pathname character (status_link.pathname_length) aligned 8 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 8 52 /* link target path */ 8 53 status_area_ptr pointer, 8 54 status_ptr pointer; 8 55 8 56 dcl (Link initial (0), 8 57 Segment initial (1), 8 58 Directory initial (2)) fixed bin internal static options (constant); 8 59 /* values for type fields declared above */ 8 60 8 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 441 9 1 /* BEGINNING OF: translator_temp_alloc.incl.pl1 * * * * * * * * * * * * * * * * */ 9 2 9 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 4 /* */ 9 5 /* N__a_m_e: translator_temp_alloc.incl.pl1 */ 9 6 /* */ 9 7 /* This include segment allocates space in a translator's temporary segment. It */ 9 8 /* contains a complete space allocation function 'allocate' which can be a quick PL/I */ 9 9 /* internal procedure in the program which includes this include segment. The temporary */ 9 10 /* segment should be one obtained by using the translator_temp_ subroutine. */ 9 11 /* */ 9 12 /* S__t_a_t_u_s */ 9 13 /* */ 9 14 /* 0) Created by: G. C. Dixon in January, 1975. */ 9 15 /* 1) Modified by: G. C. Dixon in February, 1981 - use limit area structure. */ 9 16 /* */ 9 17 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 18 9 19 9 20 9 21 allocate: procedure (Parea, ANwords) returns (ptr); 9 22 9 23 dcl Parea ptr, /* ptr to the temporary segment. (In) */ 9 24 ANwords fixed bin; /* number of words to be allocated. (In) */ 9 25 9 26 dcl Nwords fixed bin, /* number of words to be allocated, rounded up */ 9 27 /* to a 0 mod 2 quantity. */ 9 28 P ptr, /* a temporary pointer. */ 9 29 code fixed bin(35), /* a status code. */ 9 30 (mod, null, ptr) builtin; 9 31 9 32 dcl 1 area based (Parea), 9 33 2 Pfirst_temp_seg ptr unal, /* ptr to first temp seg of a group. */ 9 34 2 Ofree fixed bin(35), /* offset of next free word in temp seg. */ 9 35 2 Lfree fixed bin(35); /* length of remaining free space in temp seg. */ 9 36 9 37 dcl translator_temp_$get_next_segment 9 38 entry (ptr, ptr, fixed bin(35)); 9 39 9 40 Nwords = ANwords + mod (ANwords, 2); /* round up word count to 0 + mod 2 quantity. */ 9 41 if Nwords > Lfree then do; /* handle area overflow. */ 9 42 call translator_temp_$get_next_segment (Parea, P, code); 9 43 if P = null then return (null); 9 44 Parea = P; 9 45 if Nwords > area.Lfree then return (null); 9 46 end; 9 47 P = ptr (Parea, area.Ofree); /* get pointer to next free word of area. */ 9 48 area.Ofree = area.Ofree + Nwords; /* increase offset of remaining free space. */ 9 49 area.Lfree = area.Lfree - Nwords; /* decrease length of remaining free space. */ 9 50 return (P); 9 51 9 52 end allocate; 9 53 9 54 /* END OF: translator_temp_alloc.incl.pl1 * * * * * * * * * * * * * * * * */ 442 443 444 end comp_get_file_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/23/85 0909.6 comp_get_file_.pl1 >spec>online>comp>comp_get_file_.pl1 434 1 03/01/85 1411.9 comp_entries.incl.pl1 >ldd>include>comp_entries.incl.pl1 435 2 03/01/85 1412.0 comp_fntstk.incl.pl1 >ldd>include>comp_fntstk.incl.pl1 436 3 03/01/85 1412.0 comp_insert.incl.pl1 >ldd>include>comp_insert.incl.pl1 437 4 03/01/85 1412.0 comp_option.incl.pl1 >ldd>include>comp_option.incl.pl1 438 5 03/01/85 1412.0 comp_shared.incl.pl1 >ldd>include>comp_shared.incl.pl1 439 6 04/23/85 0912.6 comp_text.incl.pl1 >spec>online>comp>comp_text.incl.pl1 440 7 03/01/85 1412.1 compstat.incl.pl1 >ldd>include>compstat.incl.pl1 441 8 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 442 9 07/22/81 2045.0 translator_temp_alloc.incl.pl1 >ldd>include>translator_temp_alloc.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ANwords parameter fixed bin(17,0) dcl 9-23 ref 9-21 9-40 9-40 Directory constant fixed bin(17,0) initial dcl 8-56 ref 205 225 Lfree 2 based fixed bin(35,0) level 2 dcl 9-32 set ref 9-41 9-45 9-49* 9-49 Link constant fixed bin(17,0) initial dcl 8-56 ref 214 Nwords 010156 automatic fixed bin(17,0) dcl 9-26 set ref 9-40* 9-41 9-45 9-48 9-49 Ofree 1 based fixed bin(35,0) level 2 dcl 9-32 set ref 9-47 9-48* 9-48 P 010160 automatic pointer dcl 9-26 set ref 9-42* 9-43 9-44 9-47* 9-50 Parea parameter pointer dcl 9-23 set ref 9-21 9-41 9-42* 9-44* 9-45 9-47 9-47 9-48 9-48 9-49 9-49 addr builtin function dcl 30 ref 77 102 193 194 194 217 220 220 253 253 349 349 354 354 363 363 area based structure level 1 unaligned dcl 9-32 bc 010122 automatic fixed bin(24,0) dcl 332 set ref 386* 397 bit_count 7(12) 000105 automatic fixed bin(24,0) level 3 packed unsigned unaligned dcl 21 set ref 205 225 282 282 359 368 bool builtin function dcl 30 ref 272 bug_mode 4113 based bit(1) level 3 packed unaligned dcl 5-7 ref 80 321 337 402 callers_name 250 based char(100) level 2 dcl 3-32 set ref 383* charcount based fixed bin(21,0) level 3 in structure "insert" dcl 3-32 in procedure "comp_get_file_" set ref 246 267* 370 charcount based fixed bin(21,0) level 2 in structure "fildata" dcl 71 in procedure "comp_get_file_" set ref 246* 282* 375* 397* chrcount 010123 automatic fixed bin(21,0) dcl 333 set ref 368* 370 375 code 010162 automatic fixed bin(35,0) dcl 9-26 set ref 9-42* com_err_ 000022 constant entry external dcl 42 ref 89 276 287 299 390 comp_error_table_$limitation 000012 external static fixed bin(35,0) dcl 33 set ref 128* 253* comp_no 1 based fixed bin(17,0) level 3 dcl 3-32 set ref 267* comp_report_ 000040 constant entry external dcl 1-59 ref 354 363 comp_report_$ctlstr 000042 constant entry external dcl 1-61 ref 128 160 199 208 233 253 278 289 301 compstat$compconst 000044 external static structure level 1 dcl 7-14 const based structure level 1 dcl 7-23 count based fixed bin(17,0) level 2 in structure "insert_data" dcl 3-5 in procedure "comp_get_file_" set ref 239 243 250 260 260* count 304 based fixed bin(17,0) level 3 in structure "insert" dcl 3-32 in procedure "comp_get_file_" set ref 378* count 3722 based fixed bin(17,0) level 3 in structure "insert_data" dcl 3-5 in procedure "comp_get_file_" set ref 101 118 139* count based fixed bin(17,0) level 2 in structure "insert_refs" dcl 3-21 in procedure "comp_get_file_" set ref 104 120 144 191* ctl based structure level 1 dcl 6-157 ctl_info_ptr 000100 automatic pointer dcl 19 set ref 77* 128* 160* 199* 208* 233* 278* 289* 301* ctl_line based varying char(1020) dcl 6-158 set ref 128* 160* 199* 208* 233* 253* 278* 289* 301* 354* 363* ctl_ptr 132 based pointer level 3 dcl 7-23 ref 77 128 160 199 208 233 253 253 253 278 289 301 354 354 354 363 363 363 382 default_parms based structure level 1 dcl 6-213 dir 2 based char(168) level 2 dcl 71 set ref 83* 155* 186* 194* 220* 228* 295* 349* 400 divide builtin function dcl 30 ref 111 282 368 397 dt_sw 000010 internal static bit(1) initial unaligned dcl 409 set ref 80 321 337 402 412* 416* 431* dtcm 301 based bit(36) level 2 in structure "insert" dcl 3-32 in procedure "comp_get_file_" set ref 370 376* dtcm 1 000105 automatic bit(36) level 3 in structure "insert_status" packed unaligned dcl 21 in procedure "comp_get_file_" set ref 370 376 entryname 54 based char(32) level 2 dcl 71 set ref 83* 93 93 106 145 155* 186* 194* 220* 295* 349* ercd parameter fixed bin(35,0) dcl 75 set ref 64 78* 83* 86 89* 135* 155* 157 160* 194* 196 199* 208* 220* 222 228* 230 233* 275* 276* 278* 286* 287* 289* 295* 296 296 299* 301* 307* 327 335* 349* 351 354* 362* 363* 386* 387 390* error_table_$no_r_permission 000014 external static fixed bin(35,0) dcl 35 ref 275 error_table_$segknown 000016 external static fixed bin(35,0) dcl 37 ref 296 error_table_$zero_length_seg 000020 external static fixed bin(35,0) dcl 39 ref 286 362 expand_pathname_$add_suffix 000024 constant entry external dcl 43 ref 83 228 fcb_ptr 66 based pointer level 2 in structure "fildata" dcl 71 in procedure "comp_get_file_" set ref 247* 306* 309 386 fcb_ptr 66 based pointer level 3 in structure "insert" dcl 3-32 in procedure "comp_get_file_" set ref 247 268* 309* fildata based structure level 1 dcl 71 set ref 265 318* fildataptr parameter pointer dcl 70 ref 64 83 83 93 93 93 96 96 106 145 155 155 186 186 186 194 194 199 208 218 220 220 228 228 239 246 247 265 276 278 282 287 289 295 295 299 301 306 309 318 321 327 337 349 349 375 386 390 396 397 400 401 402 402 file based structure level 2 dcl 3-32 set ref 265* 318 fileno 161 based fixed bin(17,0) level 3 in structure "ctl" dcl 6-157 in procedure "comp_get_file_" set ref 382 fileno 70 based fixed bin(17,0) level 4 in structure "insert" dcl 3-32 in procedure "comp_get_file_" set ref 317* fntstk_entry based structure level 1 dcl 2-6 given_name parameter char unaligned dcl 69 set ref 64 80* 83* 89* 149 160* 233* global_area_ptr 152 based pointer level 3 dcl 7-23 set ref 261* hbound builtin function dcl 30 ref 122 125 128 128 250 253 253 hcs_$status_long 000026 constant entry external dcl 46 ref 194 220 349 i 000102 automatic fixed bin(17,0) dcl 20 set ref 101* 102 104 112* 118* 120 122 125 128 139 139* 140 144 145 191 270 index 1 based fixed bin(17,0) array level 2 in structure "insert_refs" dcl 3-21 in procedure "comp_get_file_" set ref 112 270* index 1 based fixed bin(17,0) level 2 in structure "insert_data" dcl 3-5 in procedure "comp_get_file_" set ref 317* 344 370 370 376 378 380 index builtin function dcl 30 in procedure "comp_get_file_" ref 106 info 161 based structure level 2 in structure "text_entry" dcl 6-68 in procedure "comp_get_file_" info 277 based structure level 3 in structure "hfcblk" dcl 6-250 in procedure "comp_get_file_" info 161 based structure level 2 in structure "ctl" dcl 6-157 in procedure "comp_get_file_" set ref 77 253 253 354 354 363 363 info 70 based structure level 3 in structure "insert" dcl 3-32 in procedure "comp_get_file_" info 277 based structure level 3 in structure "text" dcl 6-49 in procedure "comp_get_file_" info 161 based structure level 2 in structure "txtlin" dcl 6-161 in procedure "comp_get_file_" input_dirname 3317 based varying char(168) level 2 dcl 5-7 set ref 400* input_filename 3372 based varying char(200) level 2 dcl 5-7 set ref 383 401* insert based structure level 1 dcl 3-32 set ref 261 261 insert_data based structure level 1 dcl 3-5 insert_data_ptr 156 based pointer level 3 dcl 7-23 ref 101 102 104 112 118 120 122 125 128 128 139 140 144 145 191 239 239 243 246 247 250 250 253 253 260 260 261 264 270 316 317 344 370 370 370 370 376 376 378 378 380 380 insert_ptr 4006 based pointer level 3 in structure "shared" dcl 5-7 in procedure "comp_get_file_" set ref 261 261 264* 265 266 266 267 267 268 268 309 316* 317 318 380* 381 381 382 383 insert_ptr 74 based pointer level 3 in structure "insert" dcl 3-32 in procedure "comp_get_file_" set ref 266* 381* insert_ptr 74 based pointer level 2 in structure "fildata" dcl 71 in procedure "comp_get_file_" set ref 96* insert_refs based structure level 1 dcl 3-21 set ref 140 140 insert_status 000105 automatic structure level 1 dcl 21 set ref 194 194 217 220 220 349 349 insertndx 000117 automatic fixed bin(17,0) initial dcl 24 set ref 24* 112* 260* 261 264 270 316 317 344* 402* ioa_ 000046 constant entry external dcl 7-70 ref 80 321 337 402 itsptr 000120 automatic pointer dcl 25 set ref 295* 306 386* 396 j 000103 automatic fixed bin(17,0) dcl 20 set ref 106* 108 111* 111 112 120* 122 144* 145 191 270 k 000104 automatic fixed bin(17,0) dcl 20 set ref 239* 239* 243 246 247 label 304 based structure level 2 dcl 3-32 left 1016 based structure level 3 in structure "hfcblk" dcl 6-250 in procedure "comp_get_file_" left 12 based structure level 2 in structure "current_parms" dcl 6-209 in procedure "comp_get_file_" left 12 based structure level 2 in structure "text_parms" dcl 6-206 in procedure "comp_get_file_" left 1016 based structure level 3 in structure "text" dcl 6-49 in procedure "comp_get_file_" left 12 based structure level 2 in structure "default_parms" dcl 6-213 in procedure "comp_get_file_" line_area_ptr 010130 automatic pointer initial dcl 6-25 set ref 6-25* local_area_ptr 160 based pointer level 3 dcl 7-23 set ref 140* long 4 000105 automatic structure level 2 dcl 21 mod builtin function dcl 9-26 ref 9-40 mode 3 000105 automatic bit(5) level 3 packed unaligned dcl 21 set ref 272 msf_manager_$get_ptr 000030 constant entry external dcl 49 ref 386 msf_manager_$open 000032 constant entry external dcl 52 ref 295 name 75 based char(32) array level 2 packed unaligned dcl 3-21 set ref 102 122 128 145* null builtin function dcl 9-26 in procedure "allocate" ref 9-43 9-43 9-45 null builtin function dcl 30 in procedure "comp_get_file_" ref 155 155 220 220 268 349 349 6-25 6-35 path 76 based varying char(200) level 3 in structure "insert" dcl 3-32 in procedure "comp_get_file_" set ref 239 path 76 based varying char(200) level 2 in structure "fildata" dcl 71 in procedure "comp_get_file_" set ref 186* 199* 208* 218* 228 239 276* 278* 287* 289* 299* 301* 321* 337* 390* pathname_ 000034 constant entry external dcl 55 ref 186 pathname_length 3 based fixed bin(17,0) level 2 packed unaligned dcl 8-38 ref 218 pathname_relp 3(18) based bit(18) level 2 packed unaligned dcl 8-38 ref 218 pointer 162 based pointer level 3 in structure "insert" dcl 3-32 in procedure "comp_get_file_" set ref 268* pointer builtin function dcl 30 in procedure "comp_get_file_" ref 218 pointer 162 based pointer level 2 in structure "fildata" dcl 71 in procedure "comp_get_file_" set ref 396* 402* ptr 000044 external static pointer level 2 in structure "compstat$compconst" dcl 7-14 in procedure "comp_get_file_" ref 77 80 101 102 104 112 118 120 122 125 128 128 128 139 140 140 144 145 160 191 199 208 233 239 239 243 246 247 250 250 253 253 253 253 253 260 260 261 261 261 261 264 264 265 266 266 267 267 268 268 270 278 289 301 309 316 316 317 317 318 321 337 344 354 354 354 363 363 363 370 370 370 370 376 376 378 378 380 380 380 381 381 382 382 383 383 400 401 402 ptr 3724 based pointer array level 3 in structure "insert_data" dcl 3-5 in procedure "comp_get_file_" set ref 102 104 112 120 122 125 128 128 140* 144 145 191 270 ptr 2 based pointer array level 2 in structure "insert_data" dcl 3-5 in procedure "comp_get_file_" set ref 239 246 247 250 253 253 261* 264 316 370 370 376 378 380 ptr 172 based pointer level 2 in structure "ctl" dcl 6-157 in procedure "comp_get_file_" ref 128 160 199 208 233 253 278 289 301 354 363 ptr builtin function dcl 9-26 in procedure "allocate" ref 9-47 ptrs 3742 based structure level 2 in structure "shared" dcl 5-7 in procedure "comp_get_file_" ptrs 126 based structure level 2 in structure "const" dcl 7-23 in procedure "comp_get_file_" ref_area 3722 based structure level 2 dcl 3-5 refdir parameter char unaligned dcl 72 set ref 64 155* refname 165 based varying char(200) level 2 dcl 71 set ref 93* 401 402* refname_str based char unaligned dcl 3-27 ref 106 refstr_len 010124 automatic fixed bin(17,0) dcl 3-29 set ref 104* 106 refstr_ptr 010126 automatic pointer dcl 3-30 set ref 102* 106 rtrim builtin function dcl 30 ref 93 400 search builtin function dcl 30 ref 149 search_paths_$find_dir 000036 constant entry external dcl 57 ref 155 sf_sw 000011 internal static bit(1) initial unaligned dcl 419 set ref 80 321 337 402 422* 426* 431* shared based structure level 1 dcl 5-7 shared_ptr 200 based pointer level 3 dcl 7-23 ref 80 261 261 264 265 266 266 267 267 268 268 309 316 317 318 321 337 380 381 381 382 383 383 400 401 402 short 000105 automatic structure level 2 dcl 21 size builtin function dcl 30 ref 140 140 261 261 source_file parameter bit(1) unaligned dcl 73 set ref 64 80 80* 96 152 188 276 287 299 309 312 321 327 337 337* 341 397 402 status_area 000122 automatic area(4096) dcl 28 set ref 28* 193 status_area_ptr 010134 automatic pointer dcl 8-47 set ref 193* 194* 218 status_branch based structure level 1 dcl 8-8 status_link based structure level 1 dcl 8-38 status_pathname based char dcl 8-47 ref 218 status_ptr 010136 automatic pointer dcl 8-47 set ref 217* 218 218 suffix parameter char unaligned dcl 74 set ref 64 83* 228* sws 4113 based structure level 2 dcl 5-7 text based structure level 1 dcl 6-49 text_area_ptr 010132 automatic pointer initial dcl 6-35 set ref 6-35* text_entry based structure level 1 dcl 6-68 text_header based structure level 1 dcl 6-163 thrb 303 based fixed bin(17,0) level 2 unsigned dcl 3-32 set ref 382* translator_temp_$get_next_segment 000050 constant entry external dcl 9-37 ref 9-42 type 000105 automatic fixed bin(2,0) level 3 packed unsigned unaligned dcl 21 set ref 205 214 225 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. LINE_AREA_SIZE internal static fixed bin(17,0) initial dcl 6-24 MAX_TREE_AREAS internal static fixed bin(17,0) initial dcl 7-20 MAX_TREE_AREA_CT internal static fixed bin(17,0) initial dcl 7-18 Segment internal static fixed bin(17,0) initial dcl 8-56 TEXT_AREA_SIZE internal static fixed bin(17,0) initial dcl 6-34 TEXT_VERSION internal static fixed bin(17,0) initial dcl 6-47 before builtin function dcl 30 call_box based structure level 1 dcl 3-18 call_box0 based structure level 1 dcl 3-19 call_box_ptr automatic pointer dcl 3-17 call_stack based structure level 1 dcl 3-13 comp_ 000000 constant entry external dcl 1-7 comp_art_ 000000 constant entry external dcl 1-8 comp_block_ctls_ 000000 constant entry external dcl 1-9 comp_break_ 000000 constant entry external dcl 1-11 comp_break_ctls_ 000000 constant entry external dcl 1-12 comp_ctls_ 000000 constant entry external dcl 1-14 comp_eject_page_ 000000 constant entry external dcl 1-15 comp_expr_eval_ 000000 constant entry external dcl 1-17 comp_extr_str_ 000000 constant entry external dcl 1-21 comp_fill_ 000000 constant entry external dcl 1-24 comp_font_ 000000 constant entry external dcl 1-25 comp_format_ctls_ 000000 constant entry external dcl 1-26 comp_get_file_$find 000000 constant entry external dcl 1-28 comp_get_file_$open 000000 constant entry external dcl 1-31 comp_head_page_ 000000 constant entry external dcl 1-33 comp_hft_ctls_ 000000 constant entry external dcl 1-35 comp_hft_ctls_$title 000000 constant entry external dcl 1-36 comp_init_$one 000000 constant entry external dcl 1-38 comp_init_$three 000000 constant entry external dcl 1-40 comp_init_$two 000000 constant entry external dcl 1-39 comp_insert_ctls_ 000000 constant entry external dcl 1-42 comp_make_page_ 000000 constant entry external dcl 1-44 comp_make_page_$cleanup 000000 constant entry external dcl 1-46 comp_measure_ 000000 constant entry external dcl 1-48 comp_read_$line 000000 constant entry external dcl 1-57 comp_read_$name 000000 constant entry external dcl 1-50 comp_read_$number 000000 constant entry external dcl 1-53 comp_report_$exact 000000 constant entry external dcl 1-64 comp_space_ 000000 constant entry external dcl 1-66 comp_tbl_ctls_ 000000 constant entry external dcl 1-68 comp_title_block_ 000000 constant entry external dcl 1-69 comp_update_symbol_ 000000 constant entry external dcl 1-71 comp_use_ref_ 000000 constant entry external dcl 1-74 comp_util_$add_text 000000 constant entry external dcl 1-75 comp_util_$display 000000 constant entry external dcl 1-77 comp_util_$escape 000000 constant entry external dcl 1-80 comp_util_$getblk 000000 constant entry external dcl 1-82 comp_util_$num_display 000000 constant entry external dcl 1-84 comp_util_$pageno 000000 constant entry external dcl 1-86 comp_util_$pictures 000000 constant entry external dcl 1-88 comp_util_$pop 000000 constant entry external dcl 1-91 comp_util_$push 000000 constant entry external dcl 1-92 comp_util_$relblk 000000 constant entry external dcl 1-94 comp_util_$replace_text 000000 constant entry external dcl 1-96 comp_util_$search_tree 000000 constant entry external dcl 1-98 comp_util_$set_bin 000000 constant entry external dcl 1-100 comp_util_$set_net_page 000000 constant entry external dcl 1-104 comp_util_$translate 000000 constant entry external dcl 1-106 comp_write_block_ 000000 constant entry external dcl 1-108 comp_write_page_ 000000 constant entry external dcl 1-110 compose_severity_ external static fixed bin(35,0) dcl 1-5 const_version internal static fixed bin(35,0) initial dcl 7-17 current_parms based structure level 1 dcl 6-209 dot_addltr_symb_index internal static fixed bin(17,0) initial dcl 5-126 flag_value based bit(1) unaligned dcl 5-132 fntstk_eptr automatic pointer dcl 2-5 hfcblk based structure level 1 dcl 6-250 hfcblk_ptr automatic pointer dcl 6-249 init_file_data internal static structure level 1 unaligned dcl 3-64 ioa_$nnl 000000 constant entry external dcl 7-70 iox_$error_output external static pointer dcl 7-74 iox_$user_input external static pointer dcl 7-74 iox_$user_output external static pointer dcl 7-74 just internal static bit(6) initial unaligned dcl 6-148 line_area based structure level 1 dcl 6-26 max_text_lines internal static fixed bin(17,0) initial dcl 5-128 mode_string internal static char(16) initial unaligned dcl 5-129 num_value based fixed bin(31,0) dcl 5-133 option based structure level 1 dcl 4-5 option_version internal static fixed bin(35,0) initial dcl 4-3 pname based char(32) dcl 27 pname_ptr automatic pointer dcl 26 quadc internal static bit(6) initial unaligned dcl 6-148 quadi internal static bit(6) initial unaligned dcl 6-148 quadl internal static bit(6) initial unaligned dcl 6-148 quado internal static bit(6) initial unaligned dcl 6-148 quadr internal static bit(6) initial unaligned dcl 6-148 save_shared based structure level 1 dcl 5-124 shared_version internal static fixed bin(35,0) initial dcl 5-5 status_entry_names based char(32) array dcl 8-47 string_area based fixed bin(17,0) array dcl 6-43 suffixed_name_$make 000000 constant entry external dcl 60 sys_info$max_seg_size external static fixed bin(18,0) dcl 7-80 tblkdata based structure level 1 dcl 6-5 text_area based structure level 1 dcl 6-36 text_parms based structure level 1 dcl 6-206 txtlin based structure level 1 dcl 6-161 txtlinptr automatic pointer dcl 6-160 txtstr based varying char(1020) dcl 6-45 txtstrptr automatic pointer dcl 6-44 NAMES DECLARED BY EXPLICIT CONTEXT. allf 003330 constant entry external dcl 429 allocate 003342 constant entry internal dcl 9-21 ref 140 261 comp_get_file_ 000231 constant entry external dcl 13 dir_err 001240 constant label dcl 208 ref 225 dtf 003271 constant entry external dcl 414 dtn 003256 constant entry external dcl 410 find 000246 constant entry external dcl 64 find_return 002435 constant label dcl 321 ref 90 136 162 202 211 235 257 280 291 303 name_found 002400 constant label dcl 312 ref 114 open 002503 constant entry external dcl 327 open_return 003203 constant label dcl 402 ref 356 365 393 sff 003316 constant entry external dcl 424 sfn 003303 constant entry external dcl 420 sts_err 001154 constant label dcl 199 ref 222 NAMES DECLARED BY CONTEXT OR IMPLICATION. empty builtin function ref 28 length builtin function ref 93 substr builtin function ref 93 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3724 3776 3441 3734 Length 4434 3441 52 422 263 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME comp_get_file_ 4342 external procedure is an external procedure. allocate internal procedure shares stack frame of external procedure comp_get_file_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 dt_sw comp_get_file_ 000011 sf_sw comp_get_file_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME comp_get_file_ 000100 ctl_info_ptr comp_get_file_ 000102 i comp_get_file_ 000103 j comp_get_file_ 000104 k comp_get_file_ 000105 insert_status comp_get_file_ 000117 insertndx comp_get_file_ 000120 itsptr comp_get_file_ 000122 status_area comp_get_file_ 010122 bc comp_get_file_ 010123 chrcount comp_get_file_ 010124 refstr_len comp_get_file_ 010126 refstr_ptr comp_get_file_ 010130 line_area_ptr comp_get_file_ 010132 text_area_ptr comp_get_file_ 010134 status_area_ptr comp_get_file_ 010136 status_ptr comp_get_file_ 010156 Nwords allocate 010160 P allocate 010162 code allocate THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return mod_fx1 shorten_stack ext_entry ext_entry_desc set_cs_eis index_cs_eis search_eis empty THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ comp_report_ comp_report_$ctlstr expand_pathname_$add_suffix hcs_$status_long ioa_ msf_manager_$get_ptr msf_manager_$open pathname_ search_paths_$find_dir translator_temp_$get_next_segment THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. comp_error_table_$limitation compstat$compconst error_table_$no_r_permission error_table_$segknown error_table_$zero_length_seg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000217 28 000220 6 25 000223 6 35 000225 13 000230 15 000237 64 000240 77 000303 78 000311 80 000312 83 000356 86 000413 89 000415 90 000451 93 000452 96 000475 101 000504 102 000517 104 000527 106 000533 108 000543 111 000544 112 000547 114 000551 116 000552 118 000554 120 000562 122 000565 125 000567 128 000572 135 000640 136 000642 139 000643 140 000646 144 000664 145 000676 149 000706 152 000715 155 000722 157 000766 160 000770 162 001041 186 001042 188 001074 191 001101 193 001112 194 001114 196 001152 199 001154 202 001227 205 001230 208 001240 211 001310 214 001311 217 001313 218 001315 220 001335 222 001377 225 001401 228 001410 230 001455 233 001460 235 001530 239 001531 241 001561 243 001563 246 001571 247 001577 250 001603 253 001610 257 001657 260 001660 261 001663 264 001702 265 001714 266 001725 267 001726 268 001734 270 001743 272 001755 275 001762 276 001764 278 002024 280 002070 282 002071 286 002101 287 002103 289 002143 291 002207 295 002210 296 002237 299 002244 301 002306 303 002354 306 002355 307 002361 309 002362 312 002400 316 002405 317 002420 318 002430 321 002435 325 002476 327 002477 335 002520 337 002521 341 002566 344 002573 349 002601 351 002644 354 002646 356 002712 359 002713 362 002717 363 002722 365 002765 368 002766 370 002770 375 003007 376 003012 378 003016 380 003017 381 003024 382 003031 383 003040 386 003044 387 003074 390 003076 393 003132 396 003133 397 003137 400 003150 401 003176 402 003203 407 003254 410 003255 412 003264 413 003267 414 003270 416 003277 417 003301 420 003302 422 003311 423 003314 424 003315 426 003324 427 003326 429 003327 431 003336 432 003341 9 21 003342 9 40 003344 9 41 003352 9 42 003356 9 43 003371 9 44 003401 9 45 003404 9 47 003414 9 48 003423 9 49 003427 9 50 003435 ----------------------------------------------------------- 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