COMPILATION LISTING OF SEGMENT hcom_process_seg_ Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 08/21/90 1405.2 mdt Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 8* * * 9* *********************************************************** */ 10 11 /****^ HISTORY COMMENTS: 12* 1) change(85-09-03,LJAdams), approve(85-11-06,MCR7278), 13* audit(86-02-19,Gilcrease), install(86-03-06,MR12.0-1021): 14* Program to process each individual segment to 15* determine if there are or are not history comments present and update 16* accordingly. 17* 2) change(86-03-05,LJAdams), approve(86-03-05,MCR7278), 18* audit(86-03-05,Gilcrease), install(86-03-06,MR12.0-1029): 19* Reformat summary when the format command is issued. 20* 3) change(86-04-17,LJAdams), approve(86-04-17,MCR7386), 21* audit(86-05-27,Gilcrease), install(86-06-05,MR12.0-1071): 22* Add an argument to indicated fill mode on (-fill, -fi) or fill mode off 23* (-no_fill, -nfi) for the summary fields for the add operation. The 24* default will be fill mode. Change the format operation to allow comment 25* specification for reformatting. 26* 4) change(86-05-05,LJAdams), approve(86-05-08,MCR7414), 27* audit(86-05-27,Gilcrease), install(86-06-05,MR12.0-1071): 28* Moved the validation error reporting out of here and into hcom_parse_.rd. 29* 5) change(86-05-21,LJAdams), approve(86-05-27,MCR7429), 30* audit(86-05-27,Gilcrease), install(86-06-05,MR12.0-1071): 31* While doing the check option if no comments were found that met the check 32* criteria all comments were being displayed as in error; rather than 33* displaying all the comments an error message will be put out stating: No 34* comments were found with all fields present except the install field. 35* 36* When doing the compare operation the NL was being included as part of the 37* summary for the src_array but not the orig_array. 38* 6) change(86-07-07,LJAdams), approve(86-07-07,MCR7429), 39* audit(86-07-07,Hartogs), install(86-07-07,MR12.0-1087): 40* PBF for ID 1021. ck operation was erroneously passing comments missing 41* the audit field; depending on their sequence in the history comment block. 42* Dates greater than the current date were being accepted. 43* 7) change(86-07-08,LJAdams), approve(86-07-08,MCR7429), 44* audit(86-07-08,Brunelle), install(86-07-08,MR12.0-1088): 45* PBF for ID 1021. Change error message wording for ck failure. 46* 8) change(86-08-08,LJAdams), approve(86-08-19,MCR7526), 47* audit(86-11-05,GDixon), install(86-11-12,MR12.0-1213): 48* Change the method of determining the size of the copy of the comment to 49* use the relative character offset and not the actual offset to determine 50* the size of the length of the copy. 51* 52* Fixed problem with include files - if there was a format error the status 53* was still being returned as true instead of false. 54* 55* Added check so that if hcom_parse_ found a critical fix number present 56* only critical fix values can be added. If critical fix number present 57* the INSTALL operation is invalid unless -cfix specified. 58* 59* Fixed null pointer problem - field in orig array was being checked when 60* the pointer to orig_array had not been set. 61* 62* Changed design so that comments in the original and the source need not 63* be in comment number order as long as all the comments in the original 64* are found in the source. 65* 66* phx20629: Changed error_table_$badstar to error_table_$bad_file_name. 67* 9) change(87-03-16,LJAdams), approve(87-04-22,MCR7653), 68* audit(87-04-02,Gilcrease), install(87-04-26,MR12.1-1026): 69* Added support for C header (.h) files. They are treated as type 1 70* include files. (phx20795) 71* 10) change(87-03-26,LJAdams), approve(87-03-26,MCR7653), 72* audit(87-04-02,Gilcrease), install(87-04-26,MR12.1-1026): 73* If the comment length is greater than max length allowed display error 74* message; for a display operation continue; for modify operation halt so as 75* not to damage given segment." 76* 11) change(87-03-30,LJAdams), approve(87-03-30,MCR7653), 77* audit(87-04-02,Gilcrease), install(87-04-26,MR12.1-1026): 78* Display error msg for old history comments that have a null approve, null 79* audit, and/or are missing or have a non-null value for the install field. 80* 12) change(87-04-28,LJAdams), approve(87-04-28,PBF7653), 81* audit(87-04-28,Farley), install(87-05-08,MR12.1-1031): 82* Change checking for .h include files to exclude .header files. 83* 13) change(87-11-09,LJAdams), approve(87-11-10,MCR7802), 84* audit(87-12-04,RBarstad), install(88-01-12,MR12.2-1012): 85* If a history comment exceeded the maximum length the error message was 86* printing the error code instead of the length of the comment in error. 87* 14) change(90-07-23,Itani), approve(90-07-23,MCR8186), audit(90-07-30,Vu), 88* install(90-08-21,MR12.4-1027): 89* Change history_comment so that when it is invoked as an active function, 90* it returns all the values requested for the get operation when a star name 91* is specified for the pathname. 92* END HISTORY COMMENTS */ 93 94 /* format: off */ 95 96 hcom_process_seg_: 97 proc(Pd, ERROR_RETURN_LABEL); 98 99 dcl 100 /* Pd ptr, /* ptr to d structure, dcl in hcom_data.incl.pl1 */ 101 ERROR_RETURN_LABEL label parameter; 102 103 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 104 /* */ 105 /* This command is used to insert history_comments into source_programs. */ 106 /* The command uses the pnotice_language_info_ database (created by CDS) to obtain */ 107 /* information on the source language segment. */ 108 /* */ 109 /* Status: */ 110 /* 0) Created June 1985 by LJ Adams */ 111 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 112 113 114 115 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 116 /* */ 117 /* INTERNAL PROCEDURES IN THIS PROGRAM. THESE ARE LISTED IN THE ORDER THAT THEY EXIST */ 118 /* INLINE, AS WELL AS THE MOST FREQUENT PATH OF EXECUTION. */ 119 /* */ 120 /* Name Brief description */ 121 /* get_language_info obtains per-language parameters like comment delimiters, etc. */ 122 /* comment_parse finds the extents of a notice box, if any. */ 123 /* process_tokens drives the parsing procedures to locate notices. */ 124 /* sort_comments sorts >1 comment into proper order. */ 125 /* insert_notice puts new star box into proper place in a segment. */ 126 /* */ 127 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 128 129 130 131 132 133 /* A U T O M A T I C */ 134 dcl Sany_found bit(1), 135 Sblank_after bit(1), 136 Sblank_before bit(1), 137 Sfirst_cmt bit(1), 138 Sformat bit(1), 139 code fixed bin(35), 140 current_date char(8), 141 error_msg char (100) varying, 142 (i, j, k) fixed bin (24), 143 valid bit(1); 144 145 /* E X T E R N A L E N T R I E S */ 146 dcl cu_$generate_call entry (entry, ptr), 147 date_time_$format entry (char(*),fixed bin(71),char(*),char(*)) returns (char(250) var), 148 format_document_$string entry (char(*), char(*), fixed bin(21), ptr, fixed bin(35)), 149 get_ec_version_ entry (char(*), char(*), fixed bin, fixed bin (21), fixed bin (35)), 150 get_line_length_$switch entry (ptr, fixed bin(35)) returns(fixed bin), 151 hcom_command_query_ entry options(variable), 152 hcom_cfix_validate_ entry (char(*) var, char(*) var, char(*) var, bit(1), char(*) var, 153 char(*) var, char(100) var), 154 hcom_parse_ entry (label, char(*), char(*), char(*), bit, ptr, 1 aligned, 155 2 char(8), 2 pic "9999", 2 bit(1), 2 bit(1), 2 fixed bin, 156 2 fixed bin, 2 char(24) var, 2 char(8), 2 char(24) var, 157 2 char(8), 2 char(24) var, 2 char(8), 158 2 char(24) var, 2 char(2000) var, 159 2 (5) char(80) var, fixed bin(35)), 160 (ioa_, ioa_$nnl) entry() options(variable), 161 pathname_$component entry (char(*), char(*), char(*)) returns(char(194)), 162 pnotice_mlr_ entry (ptr, fixed bin(21), ptr, fixed bin(21)), 163 pnotice_mrl_ entry (ptr, fixed bin(21), ptr, fixed bin(21)); 164 165 166 /* I N T E R N A L S T A T I C */ 167 dcl CHARS_PER_WORD fixed bin int static options(constant) init(4), 168 FALSE bit(1) int static options (constant) init ("0"b), 169 HT_SP char(2) int static options(constant) init(" "), 170 HT_SP_NL_VT_NP char(5) int static options(constant) init (" 171 "), 172 NL char(1) aligned int static options(constant) init (" 173 "), 174 SP char(1) int static options(constant) init (" "), 175 TRUE bit(1) int static options (constant) init ("1"b); 176 177 /* E X T E R N A L S T A T I C */ 178 dcl (error_table_$bad_arg, 179 error_table_$bad_file_name, 180 error_table_$bigarg, 181 error_table_$improper_data_format, 182 error_table_$recoverable_error) 183 fixed bin(35) ext static, 184 sys_info$max_seg_size fixed bin(35) ext static; 185 186 /* B U I L T I N */ 187 dcl (addr, addcharno, after, before, char, charno, clock, convert, dim, 188 hbound, index, lbound, length, ltrim, maxlength, null, reverse, 189 rtrim, search, string, substr, unspec, verify) 190 builtin; 191 192 /* S T R U C T U R E S */ 193 194 dcl Psegment ptr, 195 Lsegment fixed bin(21), 196 segment char(Lsegment) based (Psegment); 197 198 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 199 200 call init_structures$src_array; 201 Porig_array = null; 202 current_date = date_time_$format("^yc-^my-^dm",clock(),"",""); 203 Sformat = FALSE; 204 205 206 call get_language_info (d.seg); /* parse comments in the source segment */ 207 call comment_parse(addr(src_array), d.seg, pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 208 209 if d.orig_seg.Pseg ^= null & d.orig_seg.Lseg_in ^= 0 then do; 210 call init_structures$orig_array; /* parse comments in the original segment */ 211 call get_language_info(d.orig_seg); 212 call comment_parse(addr(orig_array), d.orig_seg, pathname_$component(d.orig_seg.dir, d.orig_seg.ent, d.orig_seg.comp)); 213 end; 214 215 if d.ag.op.name ^= ADD & d.ag.op.name ^= COMPARE then 216 Sany_found = select_comments(Sany_found); /* use com specs to get requested src cmts */ 217 else 218 Sany_found = FALSE; /* So far, no comments have been selected. */ 219 goto OPER(d.ag.op.name); 220 221 OPER(1): /* ADD */ 222 if d.ag.input.sm = INPUTxxx | d.ag.input.apv = INPUTxxx | 223 d.ag.input.in = INPUTxxx then 224 call prompt_req; 225 call ADD_comment (Sany_found); 226 goto END_OPER; 227 228 OPER(2): /* ADD_FIELD */ 229 if ^Sany_found then /* error means no slection criteria was met */ 230 call check_error (-1, "", "^a^/^3xNo^[^; matching^] history comments.", 231 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 232 string(d.com_spec.selected) = ALL & d.com_spec.Nrange = 0); 233 if d.ag.input.apv = INPUTxxx | d.ag.input.in = INPUTxxx then 234 call prompt_req; 235 call ADD_FIELDs (Sany_found); 236 if ^Sany_found then /* error means no slection criteria was met */ 237 call check_error (-1, "", "^a^/^3xNone of the selected history comments needed the given fields.", 238 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 239 string(d.com_spec.selected) = ALL & d.com_spec.Nrange = 0); 240 goto END_OPER; 241 242 243 OPER(3): /* CHECK */ 244 if ^Sany_found then do; 245 if d.Saf then 246 call d.set_return_arg ("false"); 247 else 248 call check_error (-1, "", "^a:^/^3xERROR: Either an audit or approve field is missing from a comment^/^15x----- or -----^/^11xNo new comments were found.", 249 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 250 goto END_OPER; 251 end; 252 else do; 253 call CHECK_FIELDs(Sany_found); 254 goto END_OPER; 255 end; 256 257 OPER(4): /* COMPARE */ 258 call COMPARE_modules; 259 goto END_OPER; 260 261 OPER(5): /* DISPLAY */ 262 goto END_OPER; 263 264 OPER(6): /* EXISTS */ 265 goto END_OPER; 266 267 OPER(7): /* FORMAT */ 268 call cmt_renumber; /* check to be sure comments are in date sequence */ 269 call FORMAT_CMTS(Sany_found); 270 if ^Sany_found then 271 call check_error (-1, "", "^a^/^3x No matching history comments were found.", 272 pathname_$component(d.seg.dir,d.seg.ent,d.seg.comp)); 273 /* error means no selection criteria was met */ 274 Sformat = TRUE; 275 goto END_OPER; 276 277 OPER(8): /* GET */ 278 call GET_fields; 279 goto RETURN; 280 281 OPER(9): /* INSTALL */ 282 if ^Sany_found then do; 283 if d.Saf then 284 call d.set_return_arg("false"); 285 call check_error (-1, "", "^a:^/^3xcontains no history comments.", pathname_$component (d.seg.dir, d.seg.ent, d.seg.comp)); 286 end; 287 else do; 288 if d.ag.input.apv = INPUTxxx | d.ag.input.in = INPUTxxx then 289 call prompt_req; 290 if d.ag.orig.path ^= "" then 291 if orig_array.Ncoms > 0 then 292 call COMPARE_modules; 293 call INSTALL_ck; 294 goto RETURN; 295 end; 296 297 298 OPER(10): /* REPLACE_FIELD */ 299 if Sany_found then do; 300 if d.ag.input.sm = INPUTxxx | d.ag.input.apv = INPUTxxx | 301 d.ag.input.in = INPUTxxx then 302 call prompt_req; 303 call REPLACE_FIELDs; 304 end; 305 goto END_OPER; 306 307 END_OPER: 308 if d.ag.op.type = MODIFY then do; 309 if ^Sany_found then /* error means no slection criteria was met */ 310 call check_error (-1, "", "^a^/^3xNo^[^; matching^] history comments.", 311 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 312 string(d.com_spec.selected) = ALL & d.com_spec.Nrange = 0); 313 call format_comments(); 314 call insert_notice(); /* put it into the seg */ 315 end; 316 call display_comments(Sany_found); 317 318 RETURN: 319 return; 320 321 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 322 323 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 324 325 ADD_comment: 326 proc (Sany_found); 327 328 dcl Sany_found bit(1); 329 330 if d.ag.input.value.approve_value ^= "" & d.Scfix_found & 331 index(d.ag.input.value.approve_value,"fix_") = 0 then 332 /* Only critical fix numbers are allowed once spec*/ 333 call check_error (error_table_$bad_arg, CALLER, "^a^/^3x^a^/^3xOnly critical fix numbers are currently acceptable.", 334 d.ag.input.value.approve_value, 335 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 336 337 d.ag.input.value.selected = TRUE; 338 Sany_found = TRUE; 339 if src_array.Ncoms = 0 then do; /* First comment */ 340 src_array.Ncoms = 1; 341 d.ag.input.value.comment_no = src_array.Ncoms; 342 d.ag.input.value.seqno = 1; 343 src_array.comments(src_array.Ncoms) = d.ag.input.value; 344 src_array.comments(src_array.Ncoms).fill = d.ag.ctl.fill; 345 end; 346 else do; 347 src_array.Ncoms = src_array.Ncoms + 1; 348 d.ag.input.value.comment_no = src_array.Ncoms; 349 d.ag.input.value.seqno = src_array.comments(src_array.Ncoms-1).seqno +1; 350 src_array.comments(src_array.Ncoms) = d.ag.input.value; 351 src_array.comments(src_array.Ncoms).fill = d.ag.ctl.fill; 352 end; 353 354 end ADD_comment; 355 356 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 357 358 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 359 360 ADD_FIELDs: 361 proc(Sany_found); 362 363 dcl Sany_found bit(1), 364 Sfound bit(1); 365 366 Sany_found = FALSE; 367 do i = 1 to src_array.Ncoms; 368 Sfound = FALSE; 369 if src_array.comments(i).selected then do; 370 371 if d.ag.input.apv = OPERANDxxx & 372 src_array.comments(i).approve_dt = "" & 373 src_array.comments(i).approve_value = "" then do; 374 src_array.comments(i).approve_value = d.ag.input.value.approve_value; 375 src_array.comments(i).approve_dt = d.ag.input.value.approve_dt; 376 Sfound = TRUE; 377 end; 378 379 if d.ag.input.aud = OPERANDxxx & 380 src_array.comments(i).audit_dt = "" & 381 src_array.comments(i).audit_person = "" then do; 382 if src_array.comments(i).change_person = d.ag.input.value.audit_person then 383 call check_error (-1, CALLER, "^a^/^3xYou created the matching history comment ^d and cannot also be the auditor.", 384 pathname_$component (d.seg.dir, d.seg.ent, d.seg.comp), 385 src_array.comments(i).comment_no); 386 src_array.comments(i).audit_dt = d.ag.input.value.audit_dt; 387 src_array.comments(i).audit_person = d.ag.input.value.audit_person; 388 Sfound = TRUE; 389 end; 390 391 if d.ag.input.in = OPERANDxxx & 392 src_array.comments(i).install_dt = "" & 393 src_array.comments(i).install_id = "" then do; 394 src_array.comments(i).install_dt = d.ag.input.value.install_dt; 395 src_array.comments(i).install_id = d.ag.input.value.install_id; 396 Sfound = TRUE; 397 end; 398 src_array.comments(i).selected = Sfound; /* reset if no fields were added. */ 399 Sany_found = Sany_found | Sfound; 400 end; 401 end; 402 403 end ADD_FIELDs; 404 405 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 406 407 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 408 409 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 410 /* */ 411 /* Syntax: dcl check_error entry options(variable); */ 412 /* call check_error (code, procedure_name, ioa_ctl_str, args); */ 413 /* */ 414 /* Function: calls com_err_ to report an error on behalf of hcom. */ 415 /* */ 416 /* Args: */ 417 /* code (fixed bin(35)) */ 418 /* a status code. */ 419 /* procedure_name (char(*)) */ 420 /* name of the procedure reporting the error. */ 421 /* ioa_ctl_str */ 422 /* error message */ 423 /* args */ 424 /* args ioa_ will substitute into the error message. */ 425 /* */ 426 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 427 428 dcl Serror_has_occurred bit(1) init("0"b); 429 430 check_error: 431 proc options(variable); 432 433 dcl Pcode ptr, 434 code fixed bin(35) based(Pcode), 435 com_err_ entry() options(variable), 436 cu_$arg_list_ptr entry returns(ptr), 437 cu_$arg_ptr entry (fixed bin, ptr, fixed bin(21), fixed bin(35)); 438 439 call cu_$arg_ptr (1, Pcode, 0, 0); /* Access error table code argument. */ 440 if code = 0 then return; /* If non-zero, this ISN'T an error. */ 441 Serror_has_occurred = TRUE; 442 if code = -1 then code = 0; /* No error table code fits the desired err msg. */ 443 call cu_$generate_call (com_err_, cu_$arg_list_ptr()); 444 goto ERROR_RETURN_LABEL; 445 446 end check_error; 447 448 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 449 450 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 451 452 CHECK_FIELDs: 453 proc (Sany_found); 454 455 dcl Sany_found bit (1); 456 457 if d.orig.path ^= "" then 458 if orig_array.Ncoms > 0 then 459 call COMPARE_modules; 460 461 Sany_found = TRUE; 462 do i = 1 to src_array.Ncoms while (Sany_found); 463 if src_array.comments(i).selected then 464 if src_array.comments(i).change_dt ^= "" & src_array.comments(i).change_person ^= "" & 465 (src_array.comments(i).audit_dt = "^" | 466 src_array.comments(i).audit_dt ^= "" & src_array.comments(i).audit_person ^= "") & 467 (src_array.comments(i).approve_dt = "^" | 468 src_array.comments(i).approve_dt ^= "" & src_array.comments(i).approve_value ^= "") & 469 (src_array.comments(i).install_dt = "^" | 470 src_array.comments(i).install_dt = "" & src_array.comments(i).install_id = "") then do; 471 src_array.comments(i).selected = FALSE; 472 end; 473 else 474 Sany_found = FALSE; 475 else 476 ; 477 end; 478 479 end CHECK_FIELDs; 480 481 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 482 483 FORMAT_CMTS: 484 proc (Sany_found); 485 486 dcl Sany_found bit(1); 487 488 Sany_found = FALSE; 489 do i = 1 to src_array.Ncoms; 490 if src_array.comments(i).selected then do; 491 src_array.comments(i).fill = d.ag.ctl.fill; 492 Sany_found = TRUE; 493 end; 494 end; 495 496 end FORMAT_CMTS; 497 498 499 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 500 501 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 502 503 cmt_renumber: 504 proc; 505 506 if d.ag.ctl.renumber then do; 507 call sort_comments (Psrc_array); 508 do i = 1 to src_array.Ncoms; 509 src_array.comments(i).comment_no = i; 510 end; 511 end; 512 return; 513 514 end cmt_renumber; 515 516 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 517 518 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 519 520 comment_parse: 521 proc(Pcom_array, seg, com_path); 522 523 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 524 /* */ 525 /* This procedure determines the extents of what appears to be a valid history comment. */ 526 /* languages. Once this is done, these extents are then used by the process_tokens */ 527 /* */ 528 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 529 530 dcl Pcom_array ptr, 531 1 seg aligned like d.seg, 532 com_path char(*); 533 534 dcl 1 com_array aligned based(Pcom_array), 535 2 Ncoms fixed bin, 536 2 comments (0 refer(com_array.Ncoms)) 537 aligned like src_array.comments; 538 539 dcl Send_history_cmt bit(1), 540 Sincl bit(1), 541 Spnotice bit(1), 542 Snopnotice bit(1), 543 Sprt_path bit(1), 544 Sstar_line bit(1), 545 save_length fixed bin(21), 546 save_ptr ptr; 547 548 dcl rest char(Lrest) based (Prest), 549 Prest ptr, 550 Lrest fixed bin (21), 551 Icmt fixed bin (21), 552 rest_ch (Lrest) char(1) based (Prest); 553 554 dcl Pcomment ptr, 555 Lcomment fixed bin(21), 556 comment char(Lcomment) based(Pcomment), 557 comment_chr (Lcomment) char(1) based(Pcomment), 558 Pcomment_line ptr, 559 Lcomment_line fixed bin(21), 560 comment_line char(Lcomment_line) based(Pcomment_line); 561 562 dcl Pcopy ptr, 563 Lcopy fixed bin(21), 564 copy char(Lcopy) based(Pcopy) aligned, 565 Pcopy_cmt ptr, 566 Lcopy_cmt fixed bin(21); 567 568 dcl err_code fixed bin(35); 569 570 Sblank_before, Sblank_after = FALSE; 571 Sprt_path = FALSE; 572 seg.Pbox = seg.Pseg; 573 seg.Loldbox = 0; 574 575 Psegment = seg.Pseg; /* get source segment to pass to hcom_parse_ */ 576 Lsegment = seg.Lseg_in; 577 578 Prest = seg.Pseg; 579 Lrest = seg.Lseg_in; 580 Sincl = FALSE; 581 582 if d.seg.comp ^= "" & index(d.seg.comp,".incl.") > 0 then 583 /* determine if working with incl file */ 584 Sincl = TRUE; 585 else if d.seg.ent ^= "" & index(d.seg.ent,".incl.") > 0 then 586 Sincl = TRUE; 587 else if d.seg.comp ^= "" & after(d.seg.comp,".") = "h" then 588 /* determine if working with C header file */ 589 Sincl = TRUE; 590 else if d.seg.ent ^= "" & after(d.seg.ent,".") = "h" then 591 Sincl = TRUE; 592 593 goto TYPE(seg.type); 594 595 TYPE(1): 596 TYPE(4): 597 Icmt = verify(rest, HT_SP_NL_VT_NP); /* disregard white space at front */ 598 if Icmt = 0 then 599 goto end_parse1; 600 else do; 601 Prest = addr(rest_ch(Icmt)); 602 Lrest = Lrest - (Icmt-1); 603 if Sincl then 604 call ck_incl_file$pl1; /* adjust cmt begin/length to skip include block */ 605 end; 606 607 if ck_history_cmt() then do; 608 i = index(comment,NL); /* skip begin block line */ 609 Pcomment = addcharno(addr(comment_chr(i)), 1); /* skip begin block line */ 610 Lcomment = Lcomment -i; 611 i = index(substr(reverse(comment),2),NL); /* strip off end block line */ 612 Lcomment = Lcomment - i; 613 614 if index(comment,"change") > 0 then do; 615 call process_tokens; 616 goto end_parse1; 617 end; 618 else 619 call check_error (error_table_$improper_data_format,CALLER, "^/^a^/^3xMissing change keyword in history comment box.", 620 pathname_$component(seg.dir, seg.ent, seg.comp)); 621 end; 622 else do; 623 if d.seg.type = 4 & substr(rest,1,2) ^= "/*" | 624 d.seg.type ^= 4 & substr(rest,1,length(seg.cmt_bgn)) ^= seg.cmt_bgn then do; 625 /* first non-white space not a comment */ 626 Sblank_before, Sblank_after = TRUE; 627 goto end_parse1; 628 end; 629 630 Pcomment = addr(rest); 631 Lcomment = Lrest; 632 Lcomment = index(comment,seg.cmt_end) -1 + length(seg.cmt_end); 633 Spnotice = TRUE; 634 635 do while (Spnotice); 636 if substr(comment,length(seg.cmt_bgn)+5,10) = "**********" & 637 (index(comment,"Copyright") > 0 | /* find out if its a pnotice - if its not a */ 638 /* pnotice history comment comes 1st */ 639 index(comment,"PROPRIETARY") > 0 | 640 index(comment,"PUBLIC DOMAIN") > 0) then do; 641 Prest = addcharno(addr(rest_ch(Lcomment)), 1); 642 Lrest = Lrest - Lcomment; 643 Icmt = verify(rest, HT_SP_NL_VT_NP); /* skip white space if present */ 644 if Icmt > 0 then do; 645 Prest = addr(rest_ch(Icmt)); 646 Lrest = Lrest - (Icmt-1); 647 end; 648 end; 649 else 650 Spnotice = FALSE; 651 if Spnotice & substr(rest,length(seg.cmt_bgn)+5,10) = "**********" then do; 652 Pcomment = Prest; 653 Lcomment = index(rest, seg.cmt_end) -1 + length(seg.cmt_end) + length(NL); 654 end; 655 else 656 Spnotice = FALSE; 657 end; 658 659 Sblank_before, Sblank_after = TRUE; 660 seg.Pbox = Prest; 661 end; 662 663 Pcomment = Prest; 664 Lcomment = index(rest, seg.cmt_end) -1 + length(seg.cmt_end) + length(NL); 665 Pcomment_line = Pcomment; 666 Lcomment_line = index(comment,NL); 667 if Lcomment_line = 0 then 668 Lcomment_line = Lcomment; 669 i = index(comment_line,"HISTORY"); 670 j = index(comment_line,"COMMENTS:"); 671 if i ^< j | i = 0 | j = 0 then do; /* not a history comment */ 672 Sblank_before, Sblank_after = TRUE; 673 goto end_parse1; 674 end; 675 676 seg.Loldbox = Lcomment; 677 if length(comment) > length(comment_line) then 678 Pcomment = addr(comment_chr(Lcomment_line+1)); 679 Lcomment = Lcomment - Lcomment_line; 680 681 if index(comment,"END") > 0 & index(comment,"HISTORY") > 0 & index(comment,"COMMENTS") > 0 then do; 682 i = index(substr(reverse(comment),2),NL); 683 Lcomment = Lcomment - i; 684 end; 685 else 686 call check_error (error_table_$improper_data_format, CALLER, "^/^a^/^3xMissing history comment end block.", 687 pathname_$component(seg.dir, seg.ent, seg.comp)); 688 689 if index(comment, "change") > 0 then 690 call process_tokens; 691 else 692 call check_error (error_table_$improper_data_format, CALLER, "^/^a^/^3xMissing change keyword in history comment box.", 693 pathname_$component(seg.dir, seg.ent, seg.comp)); 694 695 end_parse1: 696 return; 697 698 699 TYPE(3): /* adjust things for ec's and absin */ 700 Prest = addr(rest_ch(seg.text_pos)); /* adjust to avoid any "&version" lines */ 701 Lrest = Lrest - (seg.text_pos - 1); 702 /* after this, type 3 is just like type 2 */ 703 seg.Pbox = Prest; 704 TYPE(2): 705 TYPE(5): /* compin and runoff files */ 706 707 Icmt = verify(rest, HT_SP_NL_VT_NP); /* disregard white space at front */ 708 if Icmt = 0 then 709 goto end_parse2; 710 if (Icmt - 1) + length(seg.cmt_bgn) > length(rest) then 711 goto end_parse2; /* no room left for comment */ 712 Prest = addr(rest_ch(Icmt)); 713 Lrest = Lrest - (Icmt-1); 714 if Sincl then /* adjust cmt begin/length to skip 1st incl line */ 715 call ck_incl_file$alm; 716 717 if ck_history_cmt() then do; 718 i = index(comment,NL); /* strip off begin block line */ 719 Pcomment = addcharno(addr(comment_chr(i)), 1); 720 Lcomment = Lcomment - i; 721 i = index(substr(reverse(comment),2),NL); /* strip off end block line */ 722 Lcomment = Lcomment - i; 723 724 if index(comment, "change") > 0 then do; /* make a copy of seg for hcom_parse_ */ 725 Pcopy = Pseg; 726 Lcopy = charno(Pcomment) - charno(Pseg); 727 call form_string$init(); 728 call form_string$fixed(copy); 729 call form_string$fixed(" "); /* establish start of copy */ 730 Pcopy_cmt = addcharno(addr(formed_string_array(Lcopy)), 1); 731 /* strip off CMTBGN character */ 732 do while(Lcomment > 0); 733 Pcomment_line = Pcomment; 734 Lcomment_line = index(comment,NL); 735 if Lcomment_line = 0 then do; 736 Lcomment_line = Lcomment; 737 Lcomment = 0; 738 end; 739 else do; 740 Pcomment = addcharno(addr(comment_chr(Lcomment_line)),1); 741 Lcomment = Lcomment - Lcomment_line; 742 end; 743 k = index(comment_line,seg.cmt_bgn); 744 if k = 0 then 745 call form_string$var (substr(comment_line,1)); 746 else 747 call form_string$var (substr(comment_line,k+length(seg.cmt_bgn))); 748 end; 749 Psegment = Pformed_string; 750 Lcopy_cmt = charno(addr(formed_string_array(Lformed_string))) - charno(Pcopy_cmt); 751 Pcomment = Pcopy_cmt; 752 Lcomment = Lcopy_cmt; 753 call process_tokens; 754 goto end_parse2; 755 end; 756 else 757 call check_error (error_table_$improper_data_format,CALLER, "^/^a^/^3xMissing change keyword in history comment box.", 758 pathname_$component(seg.dir, seg.ent, seg.comp)); 759 end; 760 else if substr(rest,1,length(seg.cmt_bgn)) ^= seg.cmt_bgn then do; 761 Sblank_before, Sblank_after = TRUE; 762 goto end_parse2; 763 end; 764 else do; 765 Spnotice = TRUE; 766 Snopnotice = FALSE; 767 do while (Spnotice); 768 Pcomment = Prest; 769 Lcomment = Lrest; 770 save_length = 0; 771 Sstar_line = FALSE; 772 773 if substr(comment,length(seg.cmt_bgn)+5,10) = "**********" & 774 /* pnotices begin with a star line */ 775 (index(comment,"PROPRIETARY") > 0 | 776 index(comment,"PUBLIC DOMAIN") > 0 | 777 index(comment,"Copyright") > 0) then do; 778 do while(Lcomment > 0); 779 /* ensure that history cmt follows pnotice */ 780 Pcomment_line = Pcomment; 781 Lcomment_line = index (comment,NL); 782 if Lcomment_line = 0 then 783 Lcomment_line = Lcomment; 784 else 785 Pcomment = addr(comment_chr(Lcomment_line+1)); 786 Lcomment = Lcomment - Lcomment_line; 787 save_length = save_length + Lcomment_line; 788 if substr(comment_line,length(seg.cmt_bgn)+5,10) = "**********" then do; 789 if ^Sstar_line then 790 Sstar_line = TRUE; 791 else do; 792 Prest = addcharno(addr(rest_ch(save_length)),1); 793 Lrest = Lrest - save_length; 794 Lcomment = 0; 795 end; 796 end; 797 end; 798 Icmt = verify(rest, HT_SP_NL_VT_NP); 799 Prest = addr(rest_ch(Icmt)); 800 Lrest = Lrest - (Icmt-1); 801 if substr(rest,length(seg.cmt_bgn)+5,10) ^= "**********" | 802 Lrest = 0 then 803 Spnotice = FALSE; 804 end; 805 else do; /* no pnotices found - pnotices are the */ 806 /* first comments in a program */ 807 Spnotice = FALSE; 808 Snopnotice = TRUE; 809 end; 810 seg.Pbox = Prest; 811 end; 812 if d.seg.type ^= 5 then do; /* dont add blank lines for compin/runoff files */ 813 if Snopnotice then 814 Sblank_after = TRUE; 815 else 816 Sblank_after, Sblank_before = TRUE; 817 end; 818 819 goto end_parse2; 820 end; 821 822 823 end_parse2: 824 return; 825 826 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 827 828 ck_incl_file: /* adjust comment beginning to skip 1st line of */ 829 /* include files. */ 830 proc; 831 832 ck_incl_file$pl1: 833 entry; 834 835 Pcomment, Pcomment_line = Prest; 836 Lcomment = Lrest; 837 Lcomment_line = index(comment,NL); 838 call ck_begin_line; /* include files must have begin line */ 839 if index(comment_line,"HISTORY") > 0 & index(comment_line,"COMMENTS:") > 0 then 840 ; 841 else do; /* skip begin incl file line */ 842 i = index(comment,seg.cmt_end); 843 Pcomment = addcharno(addr(comment_chr(i)), length(seg.cmt_end)); 844 Lcomment = Lcomment - i+length(seg.cmt_end)-1; 845 i = verify (comment,HT_SP_NL_VT_NP); 846 if i > 0 then do; 847 Pcomment = addr(comment_chr(i)); 848 Lcomment = Lcomment -i-1; 849 end; 850 end; 851 852 seg.Pbox = Pcomment; 853 Prest = Pcomment; 854 Lrest = Lcomment; 855 return; 856 857 ck_incl_file$alm: 858 entry; 859 860 Pcomment, Pcomment_line = Prest; 861 Lcomment = Lrest; 862 Lcomment_line = index(comment,NL); 863 call ck_begin_line; /* include files must have begin line */ 864 if index(comment_line,"HISTORY") > 0 & index(comment_line,"COMMENTS:") > 0 then 865 ; 866 else 867 if substr(comment_line,1,length(seg.cmt_bgn)) = seg.cmt_bgn then do; 868 /* if 1st line is a comment put history comment */ 869 /* after it else put history comment before */ 870 Pcomment = addcharno(addr(comment_chr(Lcomment_line)), 1); 871 Lcomment = Lcomment - Lcomment_line; 872 end; 873 874 Prest = Pcomment; 875 Lrest = Lcomment; 876 seg.Pbox = Pcomment; 877 return; 878 879 ck_begin_line: 880 proc; 881 882 if d.seg.type = 4 & substr(comment_line,1,length("/*")) ^= "/* " then 883 goto LINE_ERROR; 884 else if d.seg.type ^= 4 & substr(comment_line,1,length(seg.cmt_bgn)) ^= seg.cmt_bgn then 885 /* include files must begin with a cmt */ 886 goto LINE_ERROR; 887 else if index(comment_line,rtrim(seg.ent)) ^= 0 | /* see if file name is anotated */ 888 index(comment_line,rtrim(seg.comp)) ^= 0 then 889 goto END_CK; 890 else if index(comment_line,"BEGIN") = 0 & index(comment_line,"Begin") = 0 & 891 index(comment_line,"begin") = 0 then 892 goto LINE_ERROR; 893 else if index(comment_line,"INCLUDE") = 0 & index(comment_line,"Include") = 0 & 894 index(comment_line,"include") = 0 then 895 goto LINE_ERROR; 896 else if index(comment_line,"FILE") = 0 & index(comment_line,"File") = 0 & 897 index(comment_line,"file") = 0 then 898 goto LINE_ERROR; 899 else 900 goto END_CK; 901 902 LINE_ERROR: 903 call d.set_return_arg ("false"); 904 905 call check_error (error_table_$improper_data_format,CALLER, "^/^a^/^3xINCLUDE file missing ""BEGIN INCLUDE FILE"" line.", 906 pathname_$component(seg.dir,seg.ent,seg.comp)); 907 908 END_CK: 909 end ck_begin_line; 910 911 end ck_incl_file; 912 913 914 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 915 916 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 917 ck_history_cmt: 918 proc returns(bit(1)); 919 920 dcl Shistory_cmt_bgn bit(1); 921 922 923 Shistory_cmt_bgn = FALSE; 924 Pcomment = Prest; 925 Lcomment = Lrest; 926 927 do while (Lcomment > 0 & ^Shistory_cmt_bgn); 928 Pcomment_line = Pcomment; 929 Lcomment_line = index(comment,NL); 930 if Lcomment_line = 0 then do; 931 Lcomment_line = Lcomment; 932 Lcomment = 0; 933 end; 934 else do; 935 if Lcomment - Lcomment_line > 0 then 936 Pcomment = addcharno(addr(comment_chr(Lcomment_line)), 1); 937 Lcomment = Lcomment - Lcomment_line; 938 end; 939 if Lcomment_line >= length(seg.cmt_bgn) then 940 if index(substr(comment_line,1,length(seg.cmt_bgn)),seg.cmt_bgn) > 0 & 941 index(comment_line,"HISTORY") > 0 & 942 index(comment_line,"COMMENTS:") > 0 then 943 Shistory_cmt_bgn = TRUE; 944 end; 945 946 if ^Shistory_cmt_bgn then 947 return (FALSE); 948 949 Lrest = Lrest - (charno(Pcomment_line) - charno(Prest)); 950 Prest = Pcomment_line; 951 seg.Pbox = Prest; 952 Pcomment = Prest; 953 Lcomment = Lrest; 954 955 if seg.type = 1 | seg.type = 4 then do; 956 if index(comment,"END") > 0 & index(comment,"HISTORY") > 0 & index(comment,"COMMENTS") > 0 then 957 ; 958 else 959 call check_error (error_table_$improper_data_format, CALLER, "^/^a^/^3xMissing history comment end block.", 960 pathname_$component(seg.dir, seg.ent, seg.comp)); 961 Lcomment = index(rest,seg.cmt_end) -1 + length(seg.cmt_end) + length(NL); 962 seg.Loldbox = Lcomment; 963 end; 964 else do; 965 Lcomment = Lrest; 966 save_ptr = Pcomment; 967 save_length = 0; 968 Send_history_cmt = FALSE; 969 do while (^Send_history_cmt & Lrest > 0); 970 Pcomment_line = Pcomment; 971 Lcomment_line = index(comment,NL); 972 if Lcomment_line = 0 then do; 973 Lcomment_line = Lrest; 974 Lrest = 0; 975 end; 976 else do; 977 Pcomment = addcharno(addr(comment_chr(Lcomment_line)), 1); 978 Lcomment = Lcomment - Lcomment_line; 979 end; 980 if index(comment_line,"END") > 0 & 981 index(comment_line,"HISTORY") > 0 then 982 Send_history_cmt = TRUE; 983 save_length = save_length + Lcomment_line; 984 end; 985 if ^Send_history_cmt then 986 call check_error (error_table_$improper_data_format, CALLER, "^/^a^/^3xMissing "" END HISTORY COMMENTS"".", 987 pathname_$component(seg.dir,seg.ent,seg.comp)); 988 989 seg.Loldbox = save_length; 990 Pcomment = save_ptr; 991 Lcomment = save_length; 992 end; 993 994 return(TRUE); 995 996 end ck_history_cmt; 997 998 999 1000 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1001 1002 1003 process_tokens: 1004 proc; 1005 1006 dcl Lstring fixed bin(21), /* length of an individual comment */ 1007 Pstring ptr, 1008 string char(Lstring) based(Pstring); 1009 1010 Pstring = Pcomment; 1011 Lstring = 0; 1012 Sfirst_cmt = TRUE; 1013 com_array.Ncoms = 0; 1014 1015 do while (line$cmt()); 1016 if line$new_cmt() then do; 1017 if Sfirst_cmt then do; 1018 com_array.Ncoms = 1; 1019 call init_structures$array(com_array.comments(com_array.Ncoms)); 1020 com_array.comments(com_array.Ncoms).seqno = 1; 1021 Lstring = Lstring + Lcomment_line + length(NL); 1022 Sfirst_cmt = FALSE; 1023 end; 1024 else do; 1025 if Lstring = 0 then 1026 call check_error (error_table_$improper_data_format, CALLER, "^a^/^3xZero length comment.", 1027 pathname_$component(d.seg.dir,d.seg.ent,d.seg.comp)); 1028 1029 call hcom_parse_ (ERROR_RETURN_LABEL, segment, string, com_path, Sprt_path, Pd, 1030 com_array.comments(com_array.Ncoms), code); 1031 1032 if com_array.comments(com_array.Ncoms).err_msg(1) ^= "" then do; 1033 err_code = convert (err_code, ltrim(com_array.comments(com_array.Ncoms).err_msg(1))); 1034 if err_code = error_table_$improper_data_format then do; 1035 if d.ag.op.type = NO_MODIFY then 1036 call ioa_ ("^/^a^/^3xComment ^d has null approve and audit values a null install value is required.", 1037 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 1038 com_array.comments(com_array.Ncoms).comment_no); 1039 else call check_error (error_table_$improper_data_format, CALLER, "^/^a^/^3xComment ^d has null approve and audit values a null install value is required.", 1040 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 1041 com_array.comments(com_array.Ncoms).comment_no); 1042 end; 1043 else if err_code = error_table_$bigarg then do; 1044 if d.ag.op.type = NO_MODIFY then 1045 call ioa_ ("^/^a^/^3xThe length of comment ^d is ^a which exceeds max allowable length of ^d.", 1046 pathname_$component (d.seg.dir, d.seg.ent, d.seg.comp), 1047 com_array.comments(com_array.Ncoms).comment_no, 1048 ltrim(com_array.comments(com_array.Ncoms).err_msg(2)), 1049 maxlength(d.ag.input.summary)); 1050 else call check_error (error_table_$bigarg, CALLER, "^/^a^/^3xThe length of comment ^d is ^a which exceeds max allowable length of ^d.", 1051 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 1052 com_array.comments(com_array.Ncoms).comment_no, 1053 ltrim(com_array.comments(com_array.Ncoms).err_msg(2)), 1054 maxlength(d.ag.input.summary)); 1055 end; 1056 end; 1057 1058 if ^d.Scfix & d.Scfix_found & d.ag.op.name = INSTALL then 1059 /* if cfix value present; install op invalid */ 1060 call check_error (error_table_$bad_arg, CALLER, "^/^a^/^3xA module may not be installed with critical fix numbers present.", 1061 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 1062 if cfix_required() then 1063 call check_error (error_table_$improper_data_format, CALLER, "^a^/^3x^a^/^3xA critical fix number is required.", 1064 d.ag.input.value.approve_value, 1065 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 1066 com_array.Ncoms = com_array.Ncoms + 1; 1067 call init_structures$array(com_array.comments(com_array.Ncoms)); 1068 com_array.comments(com_array.Ncoms).seqno = com_array.Ncoms; 1069 Pstring = Pcomment_line; 1070 Lstring = Lcomment_line + length(NL); 1071 end; 1072 end; 1073 else 1074 Lstring = Lstring + Lcomment_line + length(NL); 1075 end; 1076 1077 1078 call hcom_parse_ (ERROR_RETURN_LABEL, segment, string, com_path, Sprt_path, Pd, 1079 com_array.comments(com_array.Ncoms), code); 1080 1081 if com_array.comments(com_array.Ncoms).err_msg(1) ^= "" then do; 1082 err_code = convert (err_code, ltrim(com_array.comments(com_array.Ncoms).err_msg(1))); 1083 if err_code = error_table_$improper_data_format then do; 1084 if d.ag.op.type = NO_MODIFY then 1085 call ioa_ ("^/^a^/^3xComment ^d has null approve and audit values a null install value is required.", 1086 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 1087 com_array.comments(com_array.Ncoms).comment_no); 1088 else call check_error (error_table_$improper_data_format, CALLER, "^/^a^/^3xComment ^d has null approve and audit values a null install value is required.", 1089 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 1090 com_array.comments(com_array.Ncoms).comment_no); 1091 end; 1092 else if err_code = error_table_$bigarg then do; 1093 if d.ag.op.type = NO_MODIFY then 1094 call ioa_ ("^/^a^/^3xThe length of comment ^d is ^a which exceeds max allowable length of ^d.", 1095 pathname_$component (d.seg.dir, d.seg.ent, d.seg.comp), 1096 com_array.comments(com_array.Ncoms).comment_no, 1097 ltrim(com_array.comments(com_array.Ncoms).err_msg(2)), 1098 maxlength(d.ag.input.summary)); 1099 else call check_error (error_table_$bigarg, CALLER, "^/^a^/^3xThe length of comment ^d is ^a which exceeds max allowable length of ^d.", 1100 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 1101 com_array.comments(com_array.Ncoms).comment_no, 1102 ltrim(com_array.comments(com_array.Ncoms).err_msg(2)), 1103 maxlength(d.ag.input.summary)); 1104 end; 1105 end; 1106 1107 if ^d.Scfix & d.Scfix_found & d.ag.op.name = INSTALL then/* if cfix value present; install op invalid */ 1108 call check_error (error_table_$bad_arg, CALLER, "^/^a^/^3xA module may not be installed with critical fix numbers present.", 1109 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 1110 if cfix_required() then 1111 call check_error (error_table_$bad_arg, CALLER, "^a^/^3x^a^/^3xA critical fix number is required.", 1112 d.ag.input.value.approve_value, 1113 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 1114 1115 call field_check(); 1116 1117 return; 1118 1119 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1120 1121 cfix_required: 1122 proc returns (bit(1)); 1123 1124 /* If a critical fix number currently exists in a history comment then: */ 1125 /* add critical fix number will always be required */ 1126 /* af critical fix number required if the field being added is */ 1127 /* the approve field. */ 1128 /* install critical fix numbers are not allowed for installation */ 1129 /* This is part of the install check and not relevant to */ 1130 /* needing a critical fix number. */ 1131 /* rpf always ok to replace */ 1132 /* fmt always ok to format */ 1133 1134 if d.Scfix & d.ag.op.type = MODIFY & 1135 index(d.ag.input.value.approve_value,"fix_") = 0 then do; 1136 if d.ag.op.name = ADD then 1137 return (TRUE); 1138 else if d.ag.op.name = ADD_FIELD then 1139 if d.ag.input.apv ^= NOxxx then 1140 return (TRUE); 1141 end; 1142 1143 return (FALSE); 1144 1145 end cfix_required; 1146 1147 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1148 1149 field_check: 1150 proc; 1151 1152 dcl date_ck char(8), 1153 comment_ck fixed bin; 1154 1155 date_ck = com_array.comments(1).change_dt; 1156 comment_ck = com_array.comments(1).comment_no; 1157 if com_array.comments(1).change_person = com_array.comments(1).audit_person then 1158 call check_error (-1, "", "^a^/^3xThe same person (^a) is given as both change person and auditor^/^3xin comment ^d. The ^a operation stops.", 1159 com_path, com_array.change_person(1), 1160 com_array.comment_no(1), oper(d.ag.op.name,1)); 1161 1162 do i = 2 to com_array.Ncoms; /* check to be sure comment nos are in sequence. */ 1163 if com_array.comments(i).change_person = com_array.comments(i).audit_person then 1164 call check_error (-1, "", "^a^/^3xThe same person (^a) is given as both change person and auditor^/^3xin comment ^d. The ^a operation stops.", 1165 com_path, com_array.change_person(i), 1166 com_array.comment_no(i), oper(d.ag.op.name,1)); 1167 if com_array.comments(i).change_dt > current_date then 1168 call check_error(-1, "", "^a^/^3xComment number ^d date (^a) is greater than todays date (^a).^/^3xThe ^a operation stops.", 1169 com_path, com_array.comments(i).comment_no, com_array.comments(i).change_dt, 1170 current_date, oper(d.ag.op.name,1)); 1171 1172 if ^ d.ag.ctl.renumber then do; 1173 if com_array.comments(i).change_dt < date_ck then 1174 call check_error (-1, "", "^a^/^3xComment dates are out of sequence. Date (^a) in comment ^d occurs^/^3xafter date (^a) in comment ^d. The ^a operation stops.", 1175 com_path, com_array.comments(i).change_dt, 1176 com_array.comments(i).comment_no, date_ck, comment_ck, 1177 oper(d.ag.op.name,1)); 1178 else 1179 date_ck = com_array.comments(i).change_dt; 1180 if com_array.comments(i).comment_no < comment_ck then 1181 call check_error(-1, "", "^a^/^3xComment numbers are out of sequence. Comment ^d occurs^/^3xafter number ^d. The ^a operation stops.", 1182 com_path, com_array.comments(i).comment_no, comment_ck, 1183 oper(d.ag.op.name,1)); 1184 else if com_array.comments(i).comment_no = comment_ck then 1185 call check_error(-1, "", "^a^/^3xComment number ^d is repeated in comments ^d and ^d.^/^3xThe ^a operation stops.", 1186 com_path, comment_ck, i-1, i, oper(d.ag.op.name,1)); 1187 else 1188 comment_ck = com_array.comments(i).comment_no; 1189 end; 1190 else 1191 comment_ck = com_array.comments(i).comment_no; 1192 end; 1193 1194 end field_check; 1195 1196 end process_tokens; 1197 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1198 1199 line$cmt: 1200 proc returns(bit(1)); 1201 1202 dcl Iline fixed bin(24); 1203 1204 if length(comment) = 0 then 1205 return(FALSE); 1206 Iline = index(comment,NL); 1207 if Iline = 0 | Lcomment - Iline = 0 then do; 1208 Pcomment_line = Pcomment; 1209 Lcomment_line = length(comment); 1210 Lcomment = 0; 1211 end; 1212 else do; 1213 Pcomment_line = Pcomment; 1214 Lcomment_line = Iline - 1; 1215 Pcomment = addcharno(addr(comment_chr(Iline)), 1); 1216 Lcomment = Lcomment - Iline; 1217 end; 1218 1219 return (TRUE); 1220 1221 end line$cmt; 1222 1223 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1224 1225 1226 line$new_cmt: 1227 proc returns(bit(1)); 1228 1229 dcl Ibreak fixed bin(21), 1230 Inonwhite fixed bin(21), 1231 Iskip fixed bin(21), 1232 Lword_text fixed bin(21), 1233 Pword_text ptr; 1234 1235 dcl word_text char(Lword_text) based(Pword_text), 1236 word_text_arr (Lword_text) char(1) based(Pword_text), 1237 word (2) char(80) var, 1238 Nwords fixed bin; 1239 1240 dcl WORD_BREAKS char(4) int static options(constant) init(" ()"); 1241 /* HT SP ( and ) */ 1242 1243 1244 if index(comment_line,"change") = 0 | /* do not parse if not change line */ 1245 verify(before(comment_line,"change"),"0123456789 )") ^= 0 then 1246 return(FALSE); 1247 1248 Pword_text = Pcomment_line; 1249 Lword_text = Lcomment_line; 1250 Nwords = 0; 1251 word (*) = ""; 1252 1253 Inonwhite = verify (word_text, HT_SP); /* skip over white space */ 1254 if Inonwhite = 0 then 1255 Lword_text = 0; 1256 else if Inonwhite > 1 then do; 1257 Pword_text = addr(word_text_arr(Inonwhite)); 1258 Lword_text = length(word_text) - (Inonwhite-1); 1259 end; 1260 1261 do while (Lword_text > 0 & Nwords <= dim(word,1)); 1262 Ibreak = search (word_text, WORD_BREAKS); 1263 if Ibreak = 0 then 1264 Ibreak = length(word_text) + 1; 1265 if Ibreak > 1 then do; 1266 Nwords = Nwords + 1; 1267 if Nwords <= dim(word,1) then 1268 word(Nwords) = substr(word_text,1,Ibreak-1); 1269 Pword_text = addr(word_text_arr(Ibreak)); 1270 Lword_text = length(word_text) - (Ibreak-1); 1271 end; 1272 Iskip = verify(word_text,WORD_BREAKS); /* skip over all consecutive breaks chars */ 1273 if Iskip >0 then do; 1274 Pword_text = addr(word_text_arr(Iskip)); 1275 Lword_text = length(word_text) - (Iskip-1); 1276 end; 1277 else 1278 Lword_text = 0; /* nothing but break characters remain */ 1279 end; 1280 1281 if verify(word(1),"0123456789") = 0 & word(2) = "change" then 1282 return(TRUE); 1283 else 1284 return(FALSE); 1285 1286 end line$new_cmt; 1287 1288 1289 end comment_parse; 1290 1291 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1292 1293 1294 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1295 1296 comments_comparable: 1297 1298 proc (src, orig) returns (bit(1)); 1299 1300 dcl 1 (src, orig) aligned like src_array.comments; 1301 1302 return (src.change_dt = orig.change_dt & 1303 src.change_person = orig.change_person); 1304 1305 comments_equal: 1306 entry (src, orig) returns (bit(1)); 1307 1308 return (src.audit_dt = orig.audit_dt & 1309 src.audit_person = orig.audit_person & 1310 src.install_dt = orig.install_dt & 1311 src.install_id = orig.install_id & 1312 src.summary = orig.summary); 1313 1314 comments_almost_equal: 1315 entry (src, orig) returns (bit(1)); 1316 1317 if src.audit_dt = orig.audit_dt & 1318 src.audit_person = orig.audit_person & 1319 src.summary = orig.summary then 1320 return(TRUE); 1321 else 1322 return(FALSE); 1323 1324 end comments_comparable; 1325 1326 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1327 1328 COMPARE_modules: 1329 proc; 1330 1331 dcl Scomparable bit(1), 1332 last_eq_orig_comment fixed bin; 1333 1334 if orig_array.Ncoms > 0 then 1335 orig_array.comments(*).Ieq = 0; 1336 if src_array.Ncoms > 0 then 1337 src_array.comments(*).Ieq = 0; 1338 last_eq_orig_comment = 0; 1339 1340 do i = 1 to src_array.Ncoms; 1341 Scomparable = FALSE; 1342 do j = last_eq_orig_comment+1 to orig_array.Ncoms while(^Scomparable); 1343 if comments_comparable (src_array.comments(i), orig_array.comments(j)) then do; 1344 Scomparable = TRUE; 1345 if (d.ag.op.name = INSTALL & comments_almost_equal(src_array.comments(i), orig_array.comments(j))) | 1346 (d.ag.op.name ^= INSTALL & comments_equal (src_array.comments(i), orig_array.comments(j))) then do; 1347 orig_array.comments(j).Ieq = i; 1348 src_array.comments(i).Ieq, last_eq_orig_comment = j; 1349 end; 1350 end; 1351 end; 1352 end; 1353 1354 end COMPARE_modules; 1355 1356 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1357 1358 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1359 1360 display_comments: 1361 proc(Sany_found); 1362 1363 dcl Sany_found bit(1), 1364 Serrors bit(1); 1365 1366 dcl Iorig fixed bin, 1367 Isrc fixed bin, 1368 Nskip_src fixed bin, 1369 Nskip_orig fixed bin; 1370 1371 call form_string$init(); 1372 goto DISPLAY(d.ag.op.name); 1373 1374 DISPLAY(1): /* ADD */ 1375 DISPLAY(2): /* ADD_FIELD */ 1376 DISPLAY(7): /* FORMAT */ 1377 DISPLAY(10): /* REPLACE_FIELD */ 1378 call display_selected_comments(""); 1379 return; 1380 1381 DISPLAY(3): /* CHECK */ 1382 Serrors = FALSE; 1383 if ^Sany_found then do; 1384 if d.ctl.errors then 1385 call ioa_("^/^a:^/^3xERROR: Either an audit or approve field is missing from a comment 1386 ^15x----- or -----^/^11xNo new comments were found.", 1387 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 1388 else if ^d.Saf then 1389 call ioa_ ("^/^a:^/^3xFailed the history comment check.", 1390 pathname_$component (d.seg.dir, d.seg.ent, d.seg.comp)); 1391 if d.Saf then 1392 call d.set_return_arg("false"); 1393 end; 1394 else do; 1395 if d.orig.path ^= "" then do i = 1 to orig_array.Ncoms; 1396 if orig_array.comments(i).Ieq = 0 then 1397 Serrors = TRUE; 1398 end; 1399 1400 if Serrors then do; 1401 if ^d.Saf then 1402 call ioa_("^/ORIGINAL:^3x^a^/NEW SOURCE:^x^a^/^/The original and source are not equal. For more information use the compare^/operation.", 1403 pathname_$component (d.orig_seg.dir, d.orig_seg.ent, d.orig_seg.comp), 1404 pathname_$component (d.seg.dir, d.seg.ent, d.seg.comp)); 1405 else 1406 call d.set_return_arg("false"); 1407 end; 1408 1409 if ^d.Saf & ^Serrors then 1410 call ioa_ ("^/^a:^/^3xHas correct history comments.", 1411 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 1412 end; 1413 return; 1414 1415 DISPLAY(4): /* COMPARE */ 1416 Iorig = 1; 1417 Nskip_src = 0; 1418 Nskip_orig = 0; 1419 do Isrc = 1 to src_array.Ncoms; 1420 if src_array.comments(Isrc).Ieq = 0 then /* Haven't found a source comment matched by orig */ 1421 Nskip_src = Nskip_src + 1; /* yet. */ 1422 else if src_array.comments(Isrc).Ieq ^= 0 then do; 1423 Nskip_orig = src_array.comments(Isrc).Ieq - Iorig; 1424 if Nskip_orig = 0 & Nskip_src = 0 then /* no differences found so far */ 1425 Iorig = Iorig + 1; 1426 else if Nskip_orig > 0 & Nskip_src = 0 then do; /* differences in the original */ 1427 call form_string$fixed(NL); 1428 do j = Iorig to src_array.comments(Isrc).Ieq-1; 1429 call format_comment$body(orig_array.comments(j)); 1430 end; 1431 call form_string$fixed_line(".unl 5"); 1432 call form_string$fixed_line("Deleted from source prior to:"); 1433 call format_comment$body(src_array.comments(Isrc)); 1434 Iorig = src_array.comments(Isrc).Ieq+1; 1435 end; 1436 else if Nskip_src > 0 & Nskip_orig = 0 then do; /* differences in the source */ 1437 call form_string$fixed(NL); 1438 do j = Isrc - Nskip_src to Isrc-1; 1439 call format_comment$body(src_array.comments(j)); 1440 end; 1441 call form_string$fixed_line(".unl 5"); 1442 call form_string$fixed_line("Inserted in source prior to:"); 1443 call format_comment$body(src_array.comments(Isrc)); 1444 Iorig = src_array.comments(Isrc).Ieq+1; 1445 Nskip_src = 0; 1446 end; 1447 else if Nskip_src > 0 & Nskip_orig > 0 then do; /* differences in both source & orig */ 1448 call form_string$fixed(NL); 1449 do j = Iorig to src_array.comments(Isrc).Ieq-1; 1450 call format_comment$body(orig_array.comments(j)); 1451 end; 1452 call form_string$fixed_line(".unl 5"); 1453 call form_string$fixed_line("Changed in source to:"); 1454 do j = Isrc - Nskip_src to Isrc-1; 1455 call format_comment$body(src_array.comments(j)); 1456 end; 1457 Iorig = src_array.comments(Isrc).Ieq+1; 1458 Nskip_src = 0; 1459 end; 1460 end; 1461 end; 1462 Nskip_orig = orig_array.Ncoms - Iorig + 1; 1463 if Nskip_src > 0 & Nskip_orig = 0 then do; /* comments inserted in source at end. */ 1464 call form_string$fixed(NL); 1465 do j = Isrc - Nskip_src to hbound(src_array.comments,1); 1466 call format_comment$body(src_array.comments(j)); 1467 end; 1468 call form_string$fixed_line(".unl 5"); 1469 call form_string$fixed_line("Inserted in source at end."); 1470 end; 1471 else if Nskip_orig > 0 & Nskip_src = 0 then do; /* comments deleted from end of original. */ 1472 call form_string$fixed(NL); 1473 do j = Iorig to hbound(orig_array.comments,1); 1474 call format_comment$body(orig_array.comments(j)); 1475 end; 1476 call form_string$fixed_line(".unl 5"); 1477 call form_string$fixed_line("Deleted from end of original."); 1478 end; 1479 else if Nskip_orig > 0 & Nskip_src > 0 then do; /* comments at end replaced by other comments. */ 1480 call form_string$fixed(NL); 1481 do j = Iorig to hbound(orig_array.comments,1); 1482 call format_comment$body(orig_array.comments(j)); 1483 end; 1484 call form_string$fixed_line(".unl 5"); 1485 call form_string$fixed_line("Changed in source to:"); 1486 do j = Isrc - Nskip_src to hbound(src_array.comments,1); 1487 call format_comment$body(src_array.comments(j)); 1488 end; 1489 end; 1490 if d.Saf then do; 1491 if formed_string = "" then; /* Result is "true" if all origs = all sources. */ 1492 /* "true" was set in hcom.pl1 as the initial */ 1493 /* return value. */ 1494 else 1495 call d.set_return_arg ("false"); 1496 end; 1497 else do; 1498 if formed_string = "" then do; 1499 if src_array.Ncoms = 0 & orig_array.Ncoms = 0 then 1500 call form_string$fixed_line ( 1501 " No history comments found in source or original."); 1502 else 1503 call form_string$fixed_line( 1504 " History comments are identical."); 1505 Presult = Pformed_string; 1506 Lresult = Lformed_string; 1507 end; 1508 else 1509 call format_comment$fdoc(get_line_length_$switch(null,code)); 1510 call ioa_("^/ORIGINAL:^3x^a^/NEW SOURCE:^x^a^/^a", 1511 pathname_$component (d.orig_seg.dir, d.orig_seg.ent, d.orig_seg.comp), 1512 pathname_$component (d.seg.dir, d.seg.ent, d.seg.comp), 1513 result); 1514 end; 1515 return; 1516 1517 DISPLAY(5): /* DISPLAY */ 1518 if ^Sany_found then /* error means no slection criteria was met */ 1519 call check_error (-1, "", "^a^/^3xNo^[^; matching^] history comments.", 1520 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 1521 string(d.com_spec.selected) = ALL & d.com_spec.Nrange = 0); 1522 call display_selected_comments(""); 1523 return; 1524 1525 DISPLAY(6): /* EXISTS */ 1526 if ^Sany_found then 1527 call d.set_return_arg("false"); 1528 1529 return; 1530 1531 DISPLAY(8): /* GET */ 1532 return; 1533 DISPLAY(9): /* INSTALL */ 1534 return; 1535 1536 display_selected_comments: 1537 proc (extra_msg); 1538 1539 dcl extra_msg char(*); 1540 1541 do i = 1 to src_array.Ncoms; 1542 if src_array.comments(i).selected then do; 1543 call format_comment$body(src_array.comments(i)); 1544 end; 1545 end; 1546 call format_comment$fdoc(get_line_length_$switch(null,code)); 1547 call ioa_$nnl("^/^a:^[^/^3x^a^;^s^]^/^a", 1548 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 1549 extra_msg ^= "", extra_msg, result); 1550 end display_selected_comments; 1551 1552 end display_comments; 1553 1554 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1555 1556 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1557 1558 /* This internal procdure is used to build a string to submit to format document*/ 1559 1560 dcl Pformed_string ptr, 1561 Lformed_string fixed bin(21), 1562 formed_string char(Lformed_string) based(Pformed_string), 1563 formed_string_array (Lformed_string) 1564 char(1) based(Pformed_string); 1565 1566 form_string$fixed: 1567 proc (fixed_str); 1568 1569 dcl fixed_str char(*) aligned, 1570 Lorig fixed bin(21); 1571 1572 Lorig = length(formed_string); 1573 Lformed_string = length(formed_string) + length(fixed_str); 1574 substr(formed_string, Lorig+1) = fixed_str; 1575 return; 1576 1577 form_string$fixed_line: /* This entrypoint ensures the string is placed */ 1578 entry (fixed_str); /* on a line by itself. */ 1579 1580 if length(formed_string) > 0 then 1581 if substr(formed_string, length(formed_string), length(NL)) ^= NL then do; 1582 Lformed_string = Lformed_string + length(NL); 1583 substr(formed_string,length(formed_string),length(NL)) = NL; 1584 end; 1585 Lorig = length(formed_string); 1586 Lformed_string = length(formed_string) + length(fixed_str); 1587 substr(formed_string, Lorig+1) = fixed_str; 1588 if substr(formed_string, length(formed_string), length(NL)) ^= NL then do; 1589 Lformed_string = Lformed_string + length(NL); 1590 substr(formed_string,length(formed_string),length(NL)) = NL; 1591 end; 1592 return; 1593 1594 form_string$var: 1595 entry (var_str); 1596 1597 dcl var_str char(*) var; 1598 1599 Lorig = length(formed_string); 1600 Lformed_string = length(formed_string) + length(var_str); 1601 substr(formed_string, Lorig+1) = var_str; 1602 return; 1603 1604 form_string$init: 1605 entry; 1606 1607 Lformed_string = 0; 1608 Pformed_string = d.temp_seg.Pformed_string; 1609 1610 end form_string$fixed; 1611 1612 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1613 1614 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1615 1616 dcl Presult ptr, 1617 Lresult fixed bin(21), 1618 result char(Lresult) based(Presult), 1619 result_array(Lresult) char(1) based(Presult); 1620 1621 format_comments: 1622 proc; 1623 1624 dcl chr_cmtno char(4) aligned, 1625 footer char (74) aligned, 1626 header char (79) var, 1627 ll fixed bin, 1628 save_footer char (74) var; /* undented 5 */ 1629 1630 if d.seg.type = 1 | d.seg.type = 4 then do; 1631 if Sblank_before then 1632 header = NL || d.seg.cmt_bgn || SP || "HISTORY COMMENTS:" || NL; 1633 else 1634 header = d.seg.cmt_bgn || SP || "HISTORY COMMENTS:" || NL; 1635 save_footer = "END HISTORY COMMENTS" || SP || d.seg.cmt_end; 1636 ll = 79; 1637 end; 1638 else do; /* exec com or alm */ 1639 if Sblank_before then 1640 header = NL || SP || "HISTORY COMMENTS:" || NL; 1641 else 1642 header = SP || "HISTORY COMMENTS:" || NL; 1643 save_footer = "END HISTORY COMMENTS"; 1644 ll = 79 - (length(d.seg.cmt_bgn) + length(SP)); 1645 end; 1646 footer = ""; 1647 substr(footer,length(footer)-length(save_footer)+1) = save_footer; 1648 1649 call form_string$init(); 1650 call form_string$var(header); 1651 do i = 1 to src_array.Ncoms; 1652 call format_comment$body(src_array.comments(i)); 1653 end; 1654 call form_string$fixed_line(".inl 0"); 1655 call form_string$fixed_line(footer); 1656 if Sblank_after then 1657 call form_string$fixed(NL); 1658 call format_comment$fdoc(ll); 1659 1660 if d.seg.type ^= 1 & d.seg.type ^= 4 then do; /* add comment beginning for non-pl1 source */ 1661 call form_string$init(); 1662 do while (Lresult > 0); 1663 i = index(result,NL); 1664 if i > 0 then do; 1665 if d.seg.type = 2 & substr(result,1,i-1) = "" then 1666 /* dont add cmt_bgn for blank lines for alm progs */ 1667 call form_string$fixed(substr(result,1,i)); 1668 else 1669 call form_string$fixed(d.seg.cmt_bgn || substr(result,1,i)); 1670 Presult = addcharno(addr(result_array(i)), 1); 1671 Lresult = Lresult - i; 1672 end; 1673 else do; 1674 call form_string$fixed(d.seg.cmt_bgn || result); 1675 Lresult = 0; 1676 end; 1677 end; 1678 Lresult = Lformed_string; /* reset result */ 1679 Presult = Pformed_string; 1680 end; 1681 return; 1682 1683 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1684 1685 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1686 1687 format_comment$body: 1688 entry(cmt); 1689 1690 dcl 1 cmt aligned like src_array.comments; 1691 1692 call form_string$fixed_line(".inl 5"); 1693 call form_string$fixed_line(".unl 5"); 1694 chr_cmtno = reverse(ltrim(char(cmt.comment_no)) || ")"); 1695 chr_cmtno = reverse(chr_cmtno); 1696 call form_string$fixed(chr_cmtno); 1697 call form_string$fixed(" change"); 1698 call form_string$fixed("("); 1699 call form_string$fixed(cmt.change_dt); 1700 call form_string$fixed(","); 1701 call form_string$var(cmt.change_person); 1702 call form_string$fixed(")"); 1703 if cmt.approve_dt ^= "" then do; 1704 call form_string$fixed(","); 1705 call form_string$fixed(NL); 1706 call form_string$fixed("approve"); 1707 if cmt.approve_dt = "^" then 1708 call form_string$fixed("()"); 1709 else do; 1710 call form_string$fixed("("); 1711 call form_string$fixed(cmt.approve_dt); 1712 call form_string$fixed(","); 1713 call form_string$var(cmt.approve_value); 1714 call form_string$fixed(")"); 1715 end; 1716 end; 1717 if cmt.audit_dt ^= "" then do; 1718 call form_string$fixed(","); 1719 call form_string$fixed(NL); 1720 call form_string$fixed("audit"); 1721 if cmt.audit_dt = "^" then 1722 call form_string$fixed("()"); 1723 else do; 1724 call form_string$fixed("("); 1725 call form_string$fixed(cmt.audit_dt); 1726 call form_string$fixed(","); 1727 call form_string$var(rtrim(cmt.audit_person)); 1728 call form_string$fixed(")"); 1729 end; 1730 end; 1731 if cmt.install_dt ^= "" then do; 1732 call form_string$fixed(","); 1733 call form_string$fixed(NL); 1734 call form_string$fixed("install"); 1735 if cmt.install_dt = "^" then 1736 call form_string$fixed("()"); 1737 else do; 1738 call form_string$fixed("("); 1739 call form_string$fixed(cmt.install_dt); 1740 call form_string$fixed(","); 1741 call form_string$var(cmt.install_id); 1742 call form_string$fixed(")"); 1743 end; 1744 end; 1745 call form_string$fixed(": "); 1746 call form_string$fixed_line(".brf"); 1747 if cmt.fill then do; 1748 call form_string$fixed_line(".fin"); 1749 call form_string$var(cmt.summary); 1750 call form_string$fixed_line(".fif"); 1751 end; 1752 else do; 1753 call form_string$fixed_line(".fif"); 1754 call form_string$var(cmt.summary); 1755 end; 1756 call form_string$fixed_line(".fin"); 1757 end format_comments; 1758 1759 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1760 1761 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1762 1763 1764 format_comment$fdoc: 1765 proc (line_length); 1766 1767 dcl line_length fixed bin; 1768 1769 unspec(fdoc) = "0"b; 1770 fdoc.version_number = format_document_version_2; 1771 fdoc.line_length = line_length; 1772 fdoc.switches = "0"b; 1773 fdoc.pgno_sw = "0"b; 1774 fdoc.adj_sw = "0"b; 1775 fdoc.galley_sw = "1"b; 1776 fdoc.error_sw = "0"b; 1777 fdoc.literal_sw = "0"b; 1778 fdoc.dont_compress_sw = "1"b; 1779 fdoc.break_word_sw = "1"b; 1780 fdoc.max_line_length_sw = "1"b; 1781 fdoc.dont_break_indented_lines_sw = "1"b; 1782 fdoc.sub_err_sw = "1"b; 1783 fdoc.dont_fill_sw = "0"b; 1784 fdoc.hyphenation_sw = "0"b; 1785 1786 Presult = d.temp_seg.Presult; 1787 Lresult = sys_info$max_seg_size*CHARS_PER_WORD; 1788 call format_document_$string(formed_string, result, Lresult, addr(fdoc), code); 1789 if code ^= 0 & code ^= error_table_$recoverable_error then 1790 call check_error (code, CALLER, "^/^3xError while formatting the string.", formed_string); 1791 1792 end format_comment$fdoc; 1793 1794 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1795 1796 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1797 1798 GET_fields: 1799 proc; 1800 1801 call form_string$init(); 1802 call form_string$fixed_line(".inl 3"); 1803 1804 do i = 1 to src_array.Ncoms; 1805 if src_array.comments(i).selected then do; 1806 do j = 1 to hbound(d.field_array,1) while(d.field_array(j) ^= 0); 1807 if j = 1 then 1808 call form_string$fixed_line(".unl 3"); 1809 goto CASE(d.field_array(j)); 1810 CASE(0): /* ERROR - no fields were selected */ 1811 call check_error (error_table_$bad_arg, CALLER, "^a^/^3xNo field values were selected.", 1812 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 1813 CASE(1): /* change date */ 1814 if d.Saf then 1815 call d.add_to_return_arg((src_array.comments(i).change_dt)); 1816 else do; 1817 call form_string$fixed(src_array.comments(i).change_dt); 1818 call form_string$fixed(" "); 1819 end; 1820 goto END_CASE; 1821 CASE(2): /* change person id */ 1822 if d.Saf then 1823 call d.add_to_return_arg_var(src_array.comments(i).change_person); 1824 else do; 1825 call form_string$var(src_array.comments(i).change_person); 1826 call form_string$fixed(" "); 1827 end; 1828 goto END_CASE; 1829 CASE(3): /* approve date */ 1830 if d.Saf then 1831 call d.add_to_return_arg((src_array.comments(i).approve_dt)); 1832 else do; 1833 call form_string$fixed(src_array.comments(i).approve_dt); 1834 call form_string$fixed(" "); 1835 end; 1836 goto END_CASE; 1837 CASE(4): /* approve value */ 1838 if d.Saf then 1839 call d.add_to_return_arg_var(src_array.comments(i).approve_value); 1840 else do; 1841 call form_string$var(src_array.comments(i).approve_value); 1842 call form_string$fixed(" "); 1843 end; 1844 goto END_CASE; 1845 CASE(5): /* audit date */ 1846 if d.Saf then 1847 call d.add_to_return_arg((src_array.comments(i).audit_dt)); 1848 else do; 1849 call form_string$fixed(src_array.comments(i).audit_dt); 1850 call form_string$fixed(" "); 1851 end; 1852 goto END_CASE; 1853 CASE(6): /* auditor */ 1854 if d.Saf then 1855 call d.add_to_return_arg_var(src_array.comments(i).audit_person); 1856 else do; 1857 call form_string$var(src_array.comments(i).audit_person); 1858 call form_string$fixed(" "); 1859 end; 1860 goto END_CASE; 1861 CASE(7): /* install date */ 1862 if d.Saf then 1863 call d.add_to_return_arg((src_array.comments(i).install_dt)); 1864 else do; 1865 call form_string$fixed(src_array.comments(i).install_dt); 1866 call form_string$fixed(" "); 1867 end; 1868 goto END_CASE; 1869 CASE(8): /* install id */ 1870 if d.Saf then 1871 call d.add_to_return_arg_var(src_array.comments(i).install_id); 1872 else do; 1873 call form_string$var(src_array.comments(i).install_id); 1874 call form_string$fixed(" "); 1875 end; 1876 goto END_CASE; 1877 CASE(9): /* summary */ 1878 if d.Saf then 1879 call d.add_to_return_arg_var(src_array.comments(i).summary); 1880 else do; 1881 call form_string$var(src_array.comments(i).summary); 1882 call form_string$fixed(" "); 1883 end; 1884 goto END_CASE; 1885 END_CASE: 1886 end; 1887 end; 1888 end; 1889 if ^d.Saf then do; 1890 call format_comment$fdoc (get_line_length_$switch(null,code)); 1891 call ioa_("^a",result); 1892 end; 1893 1894 end GET_fields; 1895 1896 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1897 1898 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1899 1900 get_language_info: 1901 proc(seg); 1902 1903 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1904 /* */ 1905 /* This procedure determines the parameters of the language of the source segment. These */ 1906 /* parameters are: type, name, and comment begin and end delimiters. */ 1907 /* If the source is an exec_com or absin, there are two added parameters needed: the */ 1908 /* version (ec_version) and the character position of the first non-version character */ 1909 /* (text_pos). These values are obtained from calling get_ec_version_. */ 1910 /* */ 1911 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1912 1913 dcl 1 seg aligned like d.seg; 1914 1915 dcl comp_or_ent char(32); 1916 1917 dcl Acode fixed bin(35), 1918 Ilang fixed bin, 1919 language char(8) var; /* language name */ 1920 1 1 /* START OF pnotice_language_info_.incl.pl1 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(81-06-14,Stansbury), approve(), audit(), install(): 1 6* Created May 14, 1981 by JM Stansbury 1 7* 2) change(81-07-30,Stansbury), approve(), audit(), install(): 1 8* Modified - added type 3. 1 9* 3) change(85-08-28,LJAdams), approve(85-10-29,MCR7150), 1 10* audit(86-02-07,Wallman), install(86-02-13,MR12.0-1017): 1 11* Modified - added type 4. 1 12* 4) change(85-10-29,LJAdams), approve(85-10-29,MCR7150), 1 13* audit(86-02-07,Wallman), install(86-02-13,MR12.0-1017): 1 14* Added Type 5 to define runoff and compose files. 1 15* END HISTORY COMMENTS */ 1 16 1 17 1 18 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 19 /* */ 1 20 /* Structure defining the individual languages known to and processed by the add_pnotice */ 1 21 /* command. A language may be a true programming language, like PL/1, or some */ 1 22 /* other suffixed subsystem, like absin. The following information is kept for each */ 1 23 /* language: */ 1 24 /* 1: name the suffix identifying the language, */ 1 25 /* 2: type one of the currently defined types. See notes. */ 1 26 /* 3: cmt_bgn the delimiter used to begin a comment, */ 1 27 /* 4: cmt_end the delimiter used to end a comment. */ 1 28 /* */ 1 29 /* Notes: There are currently 5 defined types. */ 1 30 /* Type 1: has a comment end delimiter other than a newline character. 1 31* */ 1 32 /* Type 2: has the newline character as the comment end delimiter. */ 1 33 /* Type 3: this type was invented due to the creation of version 1 and version 2 */ 1 34 /* exec_com. These require some extra work to determine comment creation and placement. */ 1 35 /* Type 4: has a /****^ as a comment begin delimiter - pl1. */ 1 36 /* Type 5: this type is used to define compin and runoff files. */ 1 37 /* */ 1 38 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 39 1 40 1 41 dcl pnotice_language_info_$languages fixed bin ext static; 1 42 1 43 dcl 1 pnotice_language_info aligned based (addr (pnotice_language_info_$languages)), 1 44 2 languages, 1 45 3 N fixed bin, 1 46 3 lang_array (0 refer (pnotice_language_info.N)), 1 47 4 lang_type fixed bin, 1 48 4 lang_name char (8) var, /* i.e., pl1, cobol, fortran... */ 1 49 4 comment_start char (8) var, 1 50 4 comment_end char (8) var; 1 51 1 52 /* END OF pnotice_language_info_.incl.pl1 */ 1921 1922 1923 seg.ec_version = 0; 1924 seg.text_pos = 0; 1925 if seg.comp = "" then /* determine if archive component or entry name */ 1926 comp_or_ent = seg.ent; 1927 else 1928 comp_or_ent = seg.comp; 1929 if index(comp_or_ent, ".") = 0 then /* primarily for the archive case, if it is a */ 1930 call check_error (error_table_$bad_file_name, CALLER, "^/^3x^a^/^3xSingle-component entrynames not permitted.", 1931 pathname_$component (seg.dir, seg.ent, seg.comp)); /*check_error returns a code of 0 & comes back here*/ 1932 language = reverse(before(reverse (comp_or_ent), ".")); /* determine language name */ 1933 1934 do Ilang = 1 to hbound(pnotice_language_info.languages.lang_array, 1) while 1935 (language ^= pnotice_language_info.languages.lang_array(Ilang).lang_name); 1936 end; /* look it up in pnotice_language_info_ */ 1937 if Ilang > pnotice_language_info.languages.N then do; 1938 if language = "archive" then 1939 call check_error (-1, CALLER, "^a^/^3xArchived archives are not supported.", 1940 pathname_$component (seg.dir, seg.ent, seg.comp)); 1941 else 1942 call check_error (-1, CALLER, "^a^/^3xThe ^a suffix is not supported because it is not defined in^/^3xpnotice_language_info_. Entry not processed.", 1943 pathname_$component(d.seg.dir,d.seg.ent,d.seg.comp),language); 1944 end; 1945 1946 seg.type = pnotice_language_info.languages.lang_array(Ilang).lang_type; 1947 /* type better be 1, 2, 3, 4, or 5 */ 1948 if seg.type < 1 | seg.type > 5 then 1949 call check_error (-1, CALLER, "^a^/^3xLanguage type (^d) found for the ^a suffix in pnotice_language_info_ 1950 is not implemented.", 1951 pathname_$component(seg.dir, seg.ent, seg.comp),seg.type, language); 1952 /* get comment delimiters */ 1953 seg.cmt_bgn = pnotice_language_info.languages.lang_array(Ilang).comment_start; 1954 seg.cmt_end = pnotice_language_info.languages.lang_array(Ilang).comment_end; 1955 1956 if seg.type = 3 then do; 1957 if d.seg.comp ^= "" then /* can't support archived exec_coms */ 1958 call check_error (-1, CALLER, "^a^/^3xProcessing of archived exec_coms is not supported.", 1959 pathname_$component (seg.dir, seg.ent, seg.comp)); 1960 1961 call get_ec_version_ (d.seg.dir, d.seg.ent, seg.ec_version, seg.text_pos, Acode); 1962 if Acode ^= 0 then 1963 call check_error (Acode, CALLER, "^a^/^3xGetting ec version.", 1964 pathname_$component(seg.dir, seg.ent, seg.comp)); 1965 if seg.text_pos < 1 then /* prevent invalid subscripting */ 1966 seg.text_pos = 1; 1967 if seg.ec_version = 1 then 1968 seg.cmt_bgn = seg.cmt_bgn || SP; 1969 else 1970 seg.cmt_bgn = seg.cmt_bgn || "-"; 1971 end; 1972 end get_language_info; 1973 1974 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1975 1976 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1977 1978 1979 init_structures: 1980 proc; 1981 1982 init_structures$array: /* initialize fields of arrays */ 1983 entry(array_in); 1984 1985 dcl 1 array_in aligned like src_array.comments; 1986 1987 array_in.change_dt = ""; 1988 array_in.seqno = 0; 1989 array_in.fill = "0"b; 1990 array_in.selected = "0"b; 1991 array_in.Ieq = 0; 1992 array_in.comment_no = 0; 1993 array_in.change_person = ""; 1994 array_in.approve_dt = ""; 1995 array_in.approve_value = ""; 1996 array_in.audit_dt = ""; 1997 array_in.audit_person = ""; 1998 array_in.install_dt = ""; 1999 array_in.install_id = ""; 2000 array_in.summary = ""; 2001 array_in.err_msg = ""; 2002 2003 return; 2004 2005 init_structures$src_array: 2006 entry; 2007 2008 Psrc_array = d.temp_seg.Psrc_array; 2009 src_array.Ncoms = 0; 2010 return; 2011 2012 init_structures$orig_array: 2013 entry; 2014 2015 Porig_array = d.temp_seg.Porig_array; 2016 orig_array.Ncoms = 0; 2017 return; 2018 2019 end init_structures; 2020 2021 2022 2023 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2024 2025 insert_notice: 2026 proc; 2027 2028 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2029 /* */ 2030 /* This procedure adds the notice to a segment. In the case of free-standing segments, */ 2031 /* the target is the segment itself, but for archives, the target is a copy of the */ 2032 /* archive component in the process dir. The archive command then will update the */ 2033 /* archive via process_archive_components. */ 2034 /* */ 2035 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2036 2037 dcl Psource ptr, 2038 Ptarget ptr, 2039 new_box char(d.seg.Lnewbox) based (d.seg.Pbox); 2040 2041 d.seg.Lnewbox = Lresult; /* lgth of pnotice + lgth of comments */ 2042 2043 Psource = addcharno (d.seg.Pbox, d.seg.Loldbox); /* ptr to start of history comment box */ 2044 /* + length of old history comments */ 2045 Ptarget = addcharno (d.seg.Pbox, d.seg.Lnewbox); /* ptr to start of history comment box */ 2046 /* + length of result (old + new) history comments*/ 2047 /* determine proper size hole for append */ 2048 /* if new box is same size, we go by this. */ 2049 if d.seg.Lnewbox > d.seg.Loldbox then /* new notice box larger than old */ 2050 call pnotice_mrl_ (Psource, d.seg.Lseg_in - d.seg.Loldbox, Ptarget, d.seg.Lseg_in - d.seg.Loldbox); 2051 /* append seg */ 2052 else if d.seg.Lnewbox < d.seg.Loldbox then /* new notice box smaller than old */ 2053 /* this may happen if source had >1 box in it */ 2054 call pnotice_mlr_ (Psource, d.seg.Lseg_in - d.seg.Loldbox, Ptarget, d.seg.Lseg_in - d.seg.Loldbox); 2055 2056 d.seg.Lseg_out = (d.seg.Lseg_in - d.seg.Loldbox) + d.seg.Lnewbox; 2057 2058 new_box = result; 2059 /* copy box back from temp storage */ 2060 2061 end insert_notice; 2062 2063 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2064 2065 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2066 2067 INSTALL_ck: 2068 proc; 2069 2070 dcl Snew_comment bit, 2071 Sequal bit, 2072 Serrors bit, 2073 Sinstall bit, 2074 Sinstall_match bit, 2075 Sapprove bit; 2076 2077 2078 /* The following generic errors will be generated: */ 2079 /* No missing approve values were found. */ 2080 /* No missing install values were found. */ 2081 /* (path) contains no new comments. */ 2082 /* */ 2083 /* The following individual cmt errors will be put in err_msg as appropriate: */ 2084 /* has been backed out. */ 2085 /* is missing audit value(s). */ 2086 /* is misssing summary. */ 2087 /* original installation id MRxxx.x-xxxx is different. */ 2088 2089 Snew_comment = FALSE; 2090 Sany_found = FALSE; 2091 Serrors = FALSE; 2092 Sinstall = FALSE; 2093 Sinstall_match = FALSE; 2094 Sapprove = FALSE; 2095 call form_string$init(); /* The select switch is on for those cmts selected*/ 2096 /* Set the switch off for those not in error */ 2097 /* as only these will be printed */ 2098 2099 if d.ag.orig.path = "" then 2100 ; 2101 else if Porig_array ^= null then 2102 if orig_array.Ncoms > 0 then /* new module being installed or no cmts in orig */ 2103 goto ORIG_CK; 2104 2105 SRC_CK: 2106 if src_array.Ncoms = 0 then do; /* error no comments are present */ 2107 Serrors = TRUE; 2108 if ^d.Saf then 2109 call check_error (error_table_$improper_data_format, CALLER, "^a contains no comments.", 2110 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 2111 end; 2112 else do; 2113 src_array.comments(*).selected = FALSE; 2114 goto INSTALL_values; 2115 end; 2116 2117 ORIG_CK: 2118 do i = 1 to src_array.Ncoms; /* find out if there are new comments in source */ 2119 /* check install ids */ 2120 k = 0; 2121 Sequal = FALSE; 2122 do j = 1 to orig_array.Ncoms while(^Sequal); 2123 if comments_comparable(src_array.comments(i), orig_array.comments(j)) then do; 2124 if comments_almost_equal (src_array.comments(i), orig_array.comments(j)) then do; 2125 /* src, audit, and summary fields are equal */ 2126 if src_array.comments(i).install_id = "" then do; 2127 /* src install id will be equal to orig */ 2128 src_array.comments(i).install_id = orig_array.comments(j).install_id; 2129 src_array.comments(i).install_dt = orig_array.comments(j).install_dt; 2130 src_array.comments(i).selected = TRUE; 2131 Sequal = TRUE; /* if requested install id matches an existing id */ 2132 /* set switch so no error will be flaged on AF */ 2133 end; 2134 else if src_array.comments(i).install_id ^= orig_array.comments(j).install_id then do; 2135 /* installation ids must be the same */ 2136 Serrors = TRUE; 2137 src_array.comments(i).err_msg(k+1) = ("original installation id " 2138 || orig_array.comments(j).install_id || " is different"); 2139 end; 2140 end; 2141 if ^Sequal & comments_equal (src_array.comments(i), orig_array.comments(j)) then do; 2142 src_array.comments(i).selected = FALSE; 2143 orig_array.comments(j).selected = FALSE; 2144 Sequal = TRUE; 2145 end; 2146 end; 2147 if ^Sequal then /* new comment found */ 2148 Snew_comment = TRUE; 2149 end; 2150 end; 2151 2152 if ^Snew_comment then do; 2153 Serrors = TRUE; 2154 if ^d.Saf then 2155 call check_error (error_table_$improper_data_format, CALLER, "^a contains no new comments.", 2156 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 2157 end; 2158 2159 do i = 1 to orig_array.Ncoms; 2160 if orig_array.comments(i).Ieq = 0 then do; 2161 Serrors = TRUE; 2162 orig_array.comments(i).selected = TRUE; 2163 orig_array.comments(i).err_msg(1) = "has been backed out from source."; 2164 /* This is the only error msg for the orig array */ 2165 end; 2166 end; 2167 2168 INSTALL_values: 2169 k = 0; 2170 do i = 1 to src_array.Ncoms; 2171 if src_array.comments(i).audit_dt = "" & src_array.comments(i).audit_person = "" then do; 2172 Serrors = TRUE; 2173 src_array.comments(i).err_msg(k+1) = "missing audit value(s)."; 2174 src_array.comments(i).selected = TRUE; 2175 end; 2176 if src_array.comments(i).summary = "" then do; 2177 Serrors = TRUE; 2178 src_array.comments(i).err_msg(k+1) = "missing summary."; 2179 src_array.comments(i).selected = TRUE; 2180 end; 2181 if src_array.comments(i).approve_dt = "" & d.input.select.apv = NOxxx then do; 2182 Serrors = TRUE; 2183 src_array.comments(i).err_msg(k+1) = "missing approve field(s)."; 2184 src_array.comments(i).selected = TRUE; 2185 end; 2186 if index(src_array.comments(i).approve_value,"fix_") > 0 2187 & ^d.Scfix then do; 2188 Serrors = TRUE; 2189 src_array.comments(i).err_msg(k+1) = "contains a critical fix number."; 2190 src_array.comments(i).selected = TRUE; 2191 end; 2192 if src_array.comments(i).install_dt = "" then 2193 Sinstall = TRUE; 2194 else if src_array.comments(i).install_id = d.ag.input.value.install_id then do; 2195 /* If an existing id matches the requested one */ 2196 /* do not flag it as an error but continue */ 2197 Sinstall_match = TRUE; 2198 src_array.comments(i).selected = TRUE; 2199 end; 2200 2201 if src_array.comments(i).approve_dt = "" then 2202 Sapprove = TRUE; 2203 end; 2204 2205 if ^Sinstall & ^Sinstall_match then do; 2206 call d.set_return_arg("false"); 2207 call check_error(error_table_$bad_arg, CALLER, "^/^a ^/^3xNo missing installation fields were found.", 2208 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 2209 end; 2210 2211 /* Those comments which are selected and have src_array.err_msg = "" */ 2212 /* are valid and will be updated if no other errors are present. */ 2213 2214 if ^Serrors then do i = 1 to src_array.Ncoms; 2215 if d.input.select.apv = OPERANDxxx | d.input.select.apv = INPUTxxx then do; 2216 if src_array.comments(i).approve_dt = "" & src_array.comments(i).approve_value = "" then do; 2217 src_array.comments(i).approve_dt = current_date; 2218 src_array.comments(i).approve_value = d.ag.input.value.approve_value; 2219 src_array.comments(i).selected = TRUE; 2220 Sany_found = TRUE; 2221 end; 2222 end; 2223 if src_array.comments(i).install_dt = "" then do; 2224 src_array.comments(i).install_dt = current_date; 2225 src_array.comments(i).install_id = d.ag.input.value.install_id; 2226 src_array.comments(i).selected = TRUE; 2227 Sany_found = TRUE; 2228 end; 2229 end; 2230 2231 if Sinstall_match then /* install id in src was filled in from the orig */ 2232 Sany_found = TRUE; 2233 2234 if ^Serrors then do; /* cmts were found without errors */ 2235 call format_comments(); 2236 call insert_notice(); 2237 end; 2238 2239 if ^Sany_found then do; 2240 if ^d.ctl.errors then do; 2241 if d.Saf then 2242 call d.set_return_arg("false"); 2243 else 2244 call ioa_ ("^/^a:^/^3xFailed the preinstallation check.", 2245 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp)); 2246 goto ERROR_RETURN_LABEL; 2247 end; 2248 do i = 1 to src_array.Ncoms; 2249 if src_array.comments(i).selected = TRUE then do; /* cmts were found with errors */ 2250 do j = 1 to hbound(src_array.comments.err_msg,2) while(src_array.comments(i).err_msg(j) ^= ""); 2251 if j = 1 then 2252 call form_string$var("Comment " || ltrim(char(src_array.comments(i).comment_no)) || " "); 2253 else 2254 call form_string$fixed(", "); 2255 call form_string$var(src_array.comments(i).err_msg(j)); 2256 end; 2257 if src_array.comments(i).err_msg(1) ^= "" then do; 2258 /* only cmts with errors are being displayed here */ 2259 call format_comment$body(src_array.comments(i)); 2260 call form_string$fixed_line(".unl 5"); 2261 end; 2262 end; 2263 end; 2264 2265 if d.ag.orig.path ^= "" then do i = 1 to orig_array.Ncoms; 2266 if orig_array.comments(i).selected = TRUE then do; /* only 1 error is possible with orig array */ 2267 call form_string$var("Comment " || ltrim(char(orig_array.comments(i).comment_no)) || " " || 2268 orig_array.comments(i).err_msg(1)); 2269 call format_comment$body(orig_array.comments(i)); 2270 call form_string$fixed(NL); 2271 end; 2272 end; 2273 2274 call format_comment$fdoc(get_line_length_$switch(null,code)); 2275 call ioa_("^a^/^a",pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), result); 2276 if d.Saf then 2277 call d.set_return_arg("false"); 2278 call check_error (-1, "", ""); 2279 end; 2280 2281 else do; 2282 call form_string$init(); 2283 do i = 1 to src_array.Ncoms; 2284 if src_array.comments(i).selected = TRUE then do; 2285 call format_comment$body(src_array.comments(i)); 2286 call form_string$fixed(NL); 2287 end; 2288 end; 2289 call format_comment$fdoc(get_line_length_$switch(null,code)); 2290 call ioa_$nnl("^a^/^a",pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), result); 2291 end; 2292 2293 END_INSTALL_CK: 2294 2295 end INSTALL_ck; 2296 2297 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2298 2299 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2300 2301 prompt_req: 2302 proc; 2303 2304 dcl APV_EXP char(57) int static options(constant) init( 2305 "Identifier authorizing the change. For example: MCR6734."), 2306 INSTALL_EXP char(114) int static options(constant) init( 2307 "Identifier associated with installing the changed module into the 2308 execution libraries. For example: MR12.0-00234."), 2309 SUMMARY_EXP char(47) int static options(constant) init( 2310 "Text summarizing the change made to the module."); 2311 2312 dcl reply char(maxlength(d.ag.input.summary)+1) var; 2313 2314 query_info.version = 7; 2315 query_info.ending_delim = ""; 2316 query_info.suppress_name_sw = TRUE; 2317 query_info.prompt_after_explanation = TRUE; 2318 query_info.cp_escape_control = "11"b; /* Needed since nobody has called */ 2319 /* hcom_command_query_$set_cp_escape_enable. */ 2320 2321 if d.ag.input.apv = INPUTxxx then do; 2322 query_info.explanation_ptr = addr(APV_EXP); 2323 query_info.explanation_len = length(APV_EXP); 2324 RE_APV: 2325 call hcom_command_query_ (addr(query_info), reply, CALLER, "Enter approve value:"); 2326 if reply ^= "" then do; 2327 d.ag.input.value.approve_value = reply; 2328 valid = TRUE; 2329 if d.Scfix then 2330 call hcom_cfix_validate_ ((CALLER), APPROVAL_FIELD_NAME, 2331 d.ag.input.value.approve_value, valid, 2332 d.ag.input.value.approve_value,"", ""); 2333 else 2334 call d.ag.vdt ((CALLER), APPROVAL_FIELD_NAME, 2335 d.ag.input.value.approve_value, valid, 2336 d.ag.input.value.approve_value, "", ""); 2337 if ^valid then 2338 goto RE_APV; 2339 d.ag.input.value.approve_dt = current_date; 2340 d.ag.input.apv = OPERANDxxx; 2341 end; 2342 else 2343 d.ag.input.apv = NOxxx; 2344 end; 2345 2346 if d.ag.input.in = INPUTxxx then do; 2347 query_info.explanation_ptr = addr(INSTALL_EXP); 2348 query_info.explanation_len = length(INSTALL_EXP); 2349 RE_INSTALL: 2350 call hcom_command_query_ (addr(query_info), reply, CALLER, "Enter installation id:"); 2351 if reply ^= "" then do; 2352 d.ag.input.value.install_id = reply; 2353 valid = TRUE; 2354 if d.Scfix then 2355 call d.ag.vdt ((CALLER), INSTALL_FIELD_NAME, 2356 d.ag.input.value.install_id, valid, 2357 d.ag.input.value.install_id, "", error_msg); 2358 else 2359 call d.ag.vdt ((CALLER), INSTALL_FIELD_NAME, 2360 d.ag.input.value.install_id, valid, 2361 d.ag.input.value.install_id, "", error_msg); 2362 if ^valid then do; 2363 call ioa_ ("^3x^a", error_msg); 2364 goto RE_INSTALL; 2365 end; 2366 d.ag.input.value.install_dt = current_date; 2367 d.ag.input.in = OPERANDxxx; 2368 end; 2369 else do; 2370 if d.ag.op.name = INSTALL then do; 2371 call ioa_ ("^/^a^/The install id is required for the install operation", 2372 pathname_$component(seg.dir,seg.ent,seg.comp)); 2373 go to RE_INSTALL; 2374 end; 2375 else 2376 d.ag.input.in = NOxxx; 2377 end; 2378 end; 2379 2380 if d.ag.input.sm = INPUTxxx then do; 2381 query_info.explanation_ptr = addr(SUMMARY_EXP); 2382 query_info.explanation_len = length(SUMMARY_EXP); 2383 query_info.ending_delim = "."; 2384 query_info.ending_delim_description = "a period"; 2385 RE_SUMMARY: 2386 call hcom_command_query_ (addr(query_info), reply, CALLER, "Enter summary:"); 2387 if length(reply) > maxlength(d.ag.input.summary)-15 then do; 2388 /* need 15 chars for compose values */ 2389 call ioa_ ("^/^a^/Summary length is greater than ^d characters.", 2390 pathname_$component(seg.dir,seg.ent,seg.comp),maxlength(d.ag.input.summary)-15); 2391 goto RE_SUMMARY; 2392 end; 2393 else 2394 if reply ^= "" then do; 2395 d.ag.input.value.summary = reply || NL; 2396 d.ag.input.sm = OPERANDxxx; 2397 end; 2398 else do; 2399 call ioa_ ("A summary must be provided in every history comment."); 2400 go to RE_SUMMARY; 2401 end; 2402 end; 2403 2404 end prompt_req; 2405 2406 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2407 2408 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2409 2410 REPLACE_FIELDs: 2411 proc; 2412 2413 do i = 1 to src_array.Ncoms; 2414 if src_array.comments(i).selected then do; 2415 if d.ag.input.sm = OPERANDxxx then do; 2416 src_array.comments(i).summary = d.ag.input.value.summary; 2417 src_array.comments(i).fill = d.ag.ctl.fill; 2418 end; 2419 2420 if d.ag.input.apv = OPERANDxxx then do; 2421 src_array.comments(i).approve_value = 2422 d.ag.input.value.approve_value; 2423 src_array.comments(i).approve_dt = d.ag.input.value.approve_dt; 2424 end; 2425 else if d.ag.input.apv = CLEARxxx then 2426 src_array.comments(i).approve_value, 2427 src_array.comments(i).approve_dt = ""; 2428 2429 if d.ag.input.aud = OPERANDxxx then do; 2430 if src_array.comments(i).change_person = d.ag.input.value.audit_person then 2431 call check_error (-1, CALLER, "^a^/^3xYou created the matching history comment ^d and cannot also be the auditor.", 2432 pathname_$component (d.seg.dir, d.seg.ent, d.seg.comp), 2433 src_array.comments(i).comment_no); 2434 src_array.comments(i).audit_person = d.ag.input.value.audit_person; 2435 src_array.comments(i).audit_dt = d.ag.input.value.audit_dt; 2436 end; /* Currently, there is no way to specify to clear */ 2437 else if d.ag.input.aud = CLEARxxx then /* the audit field. But there may be someday. */ 2438 src_array.comments(i).audit_person, 2439 src_array.comments(i).audit_dt = ""; 2440 2441 if d.ag.input.in = OPERANDxxx then do; 2442 src_array.comments(i).install_id = d.ag.input.value.install_id; 2443 src_array.comments(i).install_dt = d.ag.input.value.install_dt; 2444 end; 2445 else if d.ag.input.in = CLEARxxx then 2446 src_array.comments(i).install_id, 2447 src_array.comments(i).install_dt = ""; 2448 end; 2449 end; 2450 2451 end REPLACE_FIELDs; 2452 2453 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2454 2455 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2456 2457 select_comments: 2458 proc(Sany_selected) returns(bit(1)); 2459 2460 dcl Sequal bit(1), 2461 Sany_selected bit(1); 2462 2463 Sany_selected = FALSE; 2464 2465 if src_array.Ncoms > 0 then do; 2466 if d.com_spec.Nrange = 0 then do; /* if no range assume all */ 2467 src_array.comments(*).selected = TRUE; 2468 Sany_selected = TRUE; 2469 end; 2470 else do; 2471 src_array.comments(*).selected = FALSE; 2472 do i = 1 to d.com_spec.Nrange; 2473 d.com_spec.range(i).from.result = get_range(d.com_spec.range(i).from); 2474 if d.com_spec.range(i).to.set ^= UNSET then 2475 d.com_spec.range(i).to.result= get_range(d.com_spec.range(i).to); 2476 else 2477 d.com_spec.range(i).to.result = d.com_spec.range(i).from.result; 2478 2479 do j = d.com_spec.range(i).from.result to d.com_spec.range(i).to.result; 2480 src_array.comments(j).selected = TRUE; 2481 Sany_selected= TRUE; /* at least one comment was selected */ 2482 end; 2483 end; 2484 end; 2485 end; 2486 2487 if Porig_array ^= null then 2488 orig_array.comments(*).selected = FALSE; 2489 2490 if Sany_selected & string(d.com_spec.selected) ^= FALSE then do; 2491 Sany_selected = FALSE; 2492 do i = 1 to src_array.Ncoms; /* if a comment range/number was specified but no */ 2493 /* com_specs were selected, d.com_spec.selected */ 2494 /* would be FALSE. */ 2495 d.com_spec.matched = FALSE; 2496 if src_array.comments(i).selected then do; 2497 d.com_spec.matched.all = d.com_spec.selected.all; 2498 d.com_spec.matched.cpt = 2499 d.com_spec.selected.cpt & 2500 src_array.comments(i).approve_dt ^= "" & 2501 src_array.comments(i).audit_dt ^= "" & 2502 src_array.comments(i).install_dt ^= ""; 2503 d.com_spec.matched.icpt = 2504 d.com_spec.selected.icpt & 2505 (src_array.comments(i).approve_dt = "" | 2506 src_array.comments(i).audit_dt = "" | 2507 src_array.comments(i).install_dt = ""); 2508 d.com_spec.matched.apv = d.com_spec.selected.apv & 2509 src_array.comments(i).approve_dt ^= ""; 2510 d.com_spec.matched.unapv = d.com_spec.selected.unapv & 2511 src_array.comments(i).approve_dt = ""; 2512 2513 d.com_spec.matched.aud = d.com_spec.selected.aud & 2514 src_array.comments(i).audit_dt ^= ""; 2515 d.com_spec.matched.unaud = d.com_spec.selected.unaud & 2516 src_array.comments(i).audit_dt = ""; 2517 d.com_spec.matched.in = d.com_spec.selected.in & 2518 src_array.comments(i).install_dt ^= ""; 2519 d.com_spec.matched.unin = d.com_spec.selected.unin & 2520 src_array.comments(i).install_dt = ""; 2521 2522 if (d.com_spec.selected.new | d.com_spec.selected.old) & 2523 Porig_array ^= null then do; 2524 Sequal = FALSE; 2525 do j = 1 to orig_array.Ncoms while (^Sequal); 2526 if ^orig_array.comments(j).selected then do; 2527 if comments_comparable (src_array.comments(i), 2528 orig_array.comments(j)) & 2529 comments_equal (src_array.comments(i), 2530 orig_array.comments(j)) then do; 2531 orig_array.comments(j).selected = TRUE; 2532 Sequal = TRUE; 2533 end; 2534 end; 2535 end; 2536 d.com_spec.matched.new = (d.com_spec.selected.new & ^Sequal); 2537 d.com_spec.matched.old = (d.com_spec.selected.old & Sequal); 2538 end; 2539 2540 if d.ag.op.name = EXISTS | d.ag.op.name = GET | /* For these operations, a comment is selected */ 2541 d.ag.op.name = REPLACE_FIELD then /* ONLY if it matches ALL the comment specs. */ 2542 src_array.comments(i).selected = 2543 (string(d.com_spec.selected) = string(d.com_spec.matched)); 2544 else /* For other operations, a comment is selected if */ 2545 src_array.comments(i).selected = /* it matches ANY of the comment specs. */ 2546 (string(d.com_spec.matched) ^= ""b); 2547 Sany_selected = (Sany_selected | src_array.comments(i).selected); 2548 end; 2549 end; 2550 end; 2551 return(Sany_selected); 2552 2553 get_range: 2554 proc (arg_in) returns(fixed bin); 2555 2556 dcl 1 arg_in aligned like d.com_spec.range.from; 2557 2558 if arg_in.set = LAST then 2559 arg_in.no = src_array.Ncoms; 2560 if arg_in.op = PLUS then 2561 arg_in.result = arg_in.no + arg_in.addend; 2562 else if arg_in.op = MINUS then 2563 arg_in.result = arg_in.no - arg_in.addend; 2564 else arg_in.result = arg_in.no; 2565 2566 if arg_in.result > src_array.Ncoms then 2567 call check_error (error_table_$bad_arg, CALLER, "^/^a^/^3xComment selection expression ^[^d^;^slast^]^[^s^;+^d^;-^d^]^[=^d^;^s^] is greater than the number^/^3xof existing comments (^d)", 2568 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 2569 arg_in.set, arg_in.no, 2570 arg_in.op+1, arg_in.addend, 2571 arg_in.set=LAST | arg_in.op^=UNSET, arg_in.result, 2572 src_array.Ncoms); 2573 if arg_in.result <= 0 then do; 2574 if d.ag.op.type ^= MODIFY & arg_in.set = LAST & arg_in.op = MINUS then 2575 arg_in.result = 1; 2576 else 2577 call check_error (error_table_$bad_arg, CALLER, "^/^a^/^3xComment selection expression ^[^d^;^slast^]^[^s^;+^d^;-^d^]^[=^d^;^s^] is less than comment number 1.", 2578 pathname_$component(d.seg.dir, d.seg.ent, d.seg.comp), 2579 arg_in.set, arg_in.no, 2580 arg_in.op+1, arg_in.addend, 2581 arg_in.set=LAST | arg_in.op^=UNSET, arg_in.result); 2582 end; 2583 return(arg_in.result); 2584 2585 end get_range; 2586 2587 end select_comments; 2588 2589 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2590 2591 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2592 2593 sort_comments: 2594 proc (Porig); 2595 2596 2597 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2598 /* */ 2599 /* This procedure is called upon to sort multiple history comments into the proper */ 2600 /* order, i.e., ascending by comment number. */ 2601 /* */ 2602 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2603 2604 2605 2606 dcl Porig ptr, 2607 Psort_copy ptr; 2608 2609 dcl 1 V aligned, /* sort vector of pointers */ 2610 2 N fixed bin (18), 2611 2 vector (Porig->src_array.Ncoms) ptr unaligned; 2612 2613 dcl 1 src_copy aligned based(Psort_copy), 2614 2 Ncoms fixed bin, 2615 2 comments(0 refer(src_copy.Ncoms)) like src_array.comments; 2616 2617 dcl 1 comment aligned like src_array.comments based; 2618 2619 dcl Idx1 fixed bin; 2620 2621 dcl sort_items_$char entry(ptr, fixed bin(24)); 2622 2623 Psort_copy = d.temp_seg.Psort_copy; 2624 Psort_copy->src_copy.Ncoms = Porig->src_array.Ncoms; 2625 2626 V.N = dim(Porig->src_array.comments,1); 2627 do Idx1 = lbound(Porig->src_array.comments,1) to hbound(Porig->src_array.comments,1); 2628 V.vector(Idx1) = addr(Porig->src_array.comments(Idx1)); 2629 /* get ptr value to it */ 2630 end; 2631 2632 call sort_items_$char (addr(V), 12); 2633 /* sort on change date and seq no */ 2634 2635 do Idx1 = 1 to V.N; 2636 Psort_copy->src_copy.comments(Idx1) = V.vector(Idx1)->comment; 2637 end; 2638 2639 Porig = Psort_copy; 2640 2641 end sort_comments; 2642 2643 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2644 2 1 /* BEGIN INCLUDE FILE format_document_options.incl.pl1 2 2* 2 3* Modified 82.10.18 by Paul W. Benjamin to add dont_compress_sw and upgrade 2 4* to version_2. 2 5* Modified 83.02.15 by PWB to add break_word_sw and max_line_length_sw. 2 6* Modified 83.03.01 by PWB to add dont_break_indented_lines_sw. 2 7* Modified 83.03.03 by PWB to add sub_err_sw. 2 8* Modified 83.06.07 by PWB to add dont_fill_sw. 2 9* Modified 83.06.09 by PWB to add hyphenation_sw and syllable_size. 2 10**/ 2 11 2 12 dcl 1 format_document_options aligned based (format_document_options_ptr), 2 13 2 version_number fixed bin, /* input */ 2 14 /* must be format_document_version_2 */ 2 15 2 indentation fixed bin, /* input */ 2 16 /* all lines must be indented by this value */ 2 17 2 line_length fixed bin, /* input */ 2 18 /* initial line length */ 2 19 2 switches, 2 20 3 pgno_sw bit (1) unal, /* input */ 2 21 /* end each page with a centered page number */ 2 22 3 adj_sw bit (1) unal, /* input */ 2 23 /* adjust mode initially on */ 2 24 /* only meaningful if dont_fill_sw = "0"b */ 2 25 3 galley_sw bit (1) unal, /* input */ 2 26 /* galley mode -- no page breaks */ 2 27 3 error_sw bit (1) unal, /* input */ 2 28 /* report all errors on error_output */ 2 29 3 literal_sw bit (1) unal, /* input */ 2 30 /* "1"b - interpret all lines as text */ 2 31 /* "0"b - lines that start with "." are controls */ 2 32 3 file_sw bit (1) unal, /* output */ 2 33 /* has meaning for non-zero storage system status codes */ 2 34 /* "1"b code refers to output file */ 2 35 /* "0"b code refers to input file */ 2 36 3 dont_compress_sw bit (1) unal, /* input */ 2 37 /* "1"b - don't compress white space */ 2 38 /* "0"b - compress white space when filling */ 2 39 3 break_word_sw bit (1) unal, /* input */ 2 40 /* "1"b - break a word rather than exceed line_length */ 2 41 /* "0"b - write an overlength line if no spaces found */ 2 42 3 max_line_length_sw bit (1) unal, /* input */ 2 43 /* "1"b - line_length cannot be exceeded */ 2 44 /* "0"b - line_length can be exceeded (by .pdw controls) */ 2 45 3 dont_break_indented_lines_sw /* input */ 2 46 bit (1) unal, /* don't break a line that begins with whitespace */ 2 47 /* when it is the last line, or the next line is */ 2 48 /* null or the next line begins with whitespace */ 2 49 3 sub_err_sw bit (1) unal, /* input */ 2 50 /* quietly call sub_err_ with diagnostic errors */ 2 51 3 dont_fill_sw bit (1) unal, /* input */ 2 52 /* "1"b - fill mode off initially */ 2 53 /* "0"b - fill mode on initially */ 2 54 3 hyphenation_sw bit (1) unal, 2 55 3 mbz bit (23) unal, /* input */ 2 56 /* MUST be zero */ 2 57 2 syllable_size 2 58 fixed bin; /* input */ 2 59 /* smallest portion of word */ 2 60 /* to be left by hyphenation */ 2 61 2 62 dcl format_document_options_ptr ptr; 2 63 dcl format_document_version_2 fixed bin int static options (constant) init (2); 2 64 dcl format_document_version_1 fixed bin int static options (constant) init (1); 2 65 2 66 /* END INCLUDE FILE format_document_options.incl.pl1 */ 2645 2646 2647 dcl 1 fdoc aligned like format_document_options automatic; 2648 3 1 /* START OF: hcom_data.incl.pl1 * * * * * * * * * * * * * * * * */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(85-10-02,LJAdams), approve(85-11-06,MCR7278), 3 6* audit(86-02-19,Gilcrease), install(86-02-19,MR12.0-1021): 3 7* Provides data structure for the history comment 3 8* programs. 3 9* 2) change(86-04-17,LJAdams), approve(86-04-17,MCR7386), 3 10* audit(86-06-05,Gilcrease), install(86-06-05,MR12.0-1071): 3 11* Added d.ag.ctl.fill to indicate if summary is to be filled or not. 3 12* Added fill bit to src_array to indicate to fill/not fill comment. 3 13* 3) change(86-04-30,LJAdams), approve(86-05-05,MCR7386), 3 14* audit(86-06-05,Gilcrease), install(86-06-05,MR12.0-1071): 3 15* Added parameter to d.ag.vdt to contain error message. 3 16* 4) change(86-05-05,LJAdams), approve(86-05-05,MCR7386), 3 17* audit(86-06-05,Gilcrease), install(86-06-05,MR12.0-1071): 3 18* Added switch to indicate if a critical fix number had been found while 3 19* parsing. 3 20* END HISTORY COMMENTS */ 3 21 3 22 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 23 /* */ 3 24 /* This include file contains the arguments needed for processing history comments. */ 3 25 /* */ 3 26 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 27 3 28 3 29 dcl 1 d aligned based(Pd), 3 30 2 ag, 3 31 3 op, 3 32 4 name fixed bin, 3 33 4 type bit(1), /* 0 = NO_MODIFY, 1 = MODIFY */ 3 34 3 vdt entry (char(*) var, char(*) var, char(*) var, bit(1), char(*) var, 3 35 char(*) var, char(100) var) variable, 3 36 /* = nothing for -nvdt */ 3 37 3 ctl, 3 38 4 errors bit(1) unal, 3 39 4 fill bit(1) unal, 3 40 4 renumber bit(1) unal, 3 41 4 mbz bit(33) unal, 3 42 3 source, 3 43 4 path char(202) unal, 3 44 4 dir char(168) unal, 3 45 4 ent char(32) unal, 3 46 4 ent_type fixed bin(35), /* 0 = NONSTAR, 1 = STAR, 2 = STARSTAR */ 3 47 4 comp char(32) unal, 3 48 3 orig like d.source, 3 49 3 input, 3 50 4 select, 3 51 5 sm fixed bin(2), 3 52 5 apv fixed bin(2), 3 53 5 aud fixed bin(2), 3 54 5 in fixed bin(2), /* 0 = NOxxx, 1 = CLEARxxx */ 3 55 /* 2 = OPERANDxxx, 3 = INPUTxxx */ 3 56 4 value like src_array.comments, 3 57 3 output, 3 58 (4 cdt, 3 59 4 cpi, 3 60 4 apvdt, 3 61 4 apvi, 3 62 4 auddt, 3 63 4 audpi, 3 64 4 indt, 3 65 4 ini, 3 66 4 sm) bit(1) unal, 3 67 4 mbz bit(27) unal, 3 68 2 com_spec, 3 69 3 selected unal, 3 70 4 all bit(1), 3 71 4 old bit(1), 3 72 4 new bit(1), 3 73 4 cpt bit(1), 3 74 4 icpt bit(1), 3 75 4 apv bit(1), 3 76 4 unapv bit(1), 3 77 4 aud bit(1), 3 78 4 unaud bit(1), 3 79 4 in bit(1), 3 80 4 unin bit(1), 3 81 4 mbz bit(25), 3 82 3 matched unaligned like d.com_spec.selected, 3 83 3 Nrange fixed bin, 3 84 3 range (10), 3 85 4 from, 3 86 5 set fixed bin(2), /* 0 = UNSET, 1 = SET, 2 = LAST */ 3 87 5 no fixed bin, 3 88 5 op fixed bin(2), /* 0 = UNSET, 1 = PLUS 2 = MINUS */ 3 89 5 addend fixed bin, 3 90 5 result fixed bin, 3 91 4 to like d.com_spec.range.from, 3 92 4 matched fixed bin(1), 3 93 3 94 2 field_array (9) fixed bin, 3 95 2 check_error$fatal entry options(variable) variable, 3 96 2 set_return_arg entry (char(*)) variable, 3 97 2 add_to_return_arg entry (char(*)) variable, 3 98 2 add_to_return_arg_var entry (char(*) var) variable, 3 99 2 Saf bit(1), /* switch to indicate active function */ 3 100 3 101 2 Scfix bit(1), /* switch to indicate critical fix input */ 3 102 2 Scfix_found bit(1), 3 103 2 Ssite bit(1), /* switch to indicate site */ 3 104 2 seg_arch, /* info for seg or achive used by */ 3 105 3 dir char(168) unal, /* hcom_process_path_ */ 3 106 3 ent char(32) unal, 3 107 3 comp char(32) unal, 3 108 3 comp_type fixed bin(35), /* -1 = NOCOMP, 0 = NONSTAR */ 3 109 /* 1 = STAR, 2 = STARSTAR */ 3 110 3 Pseg ptr, 3 111 3 Lseg fixed bin(21), 3 112 3 Lsegbc fixed bin(24), 3 113 3 114 2 seg, /* info for specific seg or archive component */ 3 115 3 dir char(168) unal, /* used by hcom_process_seg_. */ 3 116 3 ent char(32) unal, 3 117 3 comp char(32) unal, 3 118 3 Pseg ptr, 3 119 3 Lseg_in fixed bin(21), 3 120 3 Lseg_out fixed bin(21), 3 121 3 ec_version fixed bin, /* if type is 3 (an exec_com), this will be its */ 3 122 /* version, as obtained from get_ec_version_ */ 3 123 3 type fixed bin, /* the language type of the entry */ 3 124 3 text_pos fixed bin(21), /* this will be the char pos of the first */ 3 125 /* non-version char in an exec_com */ 3 126 3 cmt_bgn char(8) var, /* comment begin character(s) */ 3 127 3 cmt_end char(8) var, /* comment end character(s) */ 3 128 3 Pbox ptr, 3 129 3 Loldbox fixed bin(21), 3 130 3 Lnewbox fixed bin(21), 3 131 2 orig_seg like d.seg, /* info for original seg/comp used by */ 3 132 /* hcom_process_seg_ */ 3 133 3 134 2 temp_seg, 3 135 3 Pcomp_info ptr, 3 136 3 Pformed_string ptr, 3 137 3 Porig_array ptr, 3 138 3 Pout_string ptr, 3 139 3 Presult ptr, 3 140 3 Psort_copy ptr, 3 141 3 Psrc_array ptr, 3 142 temp_seg_array (7) ptr aligned based (addr(d.temp_seg)), 3 143 3 144 Pd ptr; 3 145 3 146 dcl CALLER char(15) int static options(constant) init("history_comment"), 3 147 3 148 (NOTSET init(0), /* values for d.ag.op.name */ 3 149 ADD init(1), 3 150 ADD_FIELD init(2), 3 151 CHECK init(3), 3 152 COMPARE init(4), 3 153 DISPLAY init(5), 3 154 EXISTS init(6), 3 155 FORMAT init(7), 3 156 GET init(8), 3 157 INSTALL init(9), 3 158 REPLACE_FIELD init(10)) fixed bin int static options(constant), 3 159 (MODIFY init("1"b), /* values for d.ag.op.type */ 3 160 NO_MODIFY init("0"b)) bit(1) int static options(constant), 3 161 (CLEARxxx init(1), /* values for d.ag.input.select */ 3 162 INPUTxxx init(3), 3 163 NOxxx init(0), 3 164 OPERANDxxx init(2)) fixed bin(2) int static options(constant), 3 165 (NOCOMP init(-1), /* values for d.ag.ent_type, and */ 3 166 NONSTAR init(0), /* d.seg_arch.comp_type */ 3 167 STAR init(1), 3 168 STARSTAR init(2)) fixed bin(35) int static options(constant), 3 169 ALL bit(36) aligned int static options(constant) init("1"b), 3 170 /* value comparable to string(d.com_spec.selected)*/ 3 171 (LAST init(2), /* values for d.ag.com_spec.range.set */ 3 172 SET init(1), 3 173 UNSET init(0)) fixed bin(2) int static options(constant), 3 174 (MINUS init(2), /* values for d.ag.com_spec.range.op */ 3 175 PLUS init(1)) fixed bin(2) int static options(constant); 3 176 3 177 dcl oper (10,2) char(16) varying int static options(constant) init ( 3 178 "add", "~", /* 1 Operations */ 3 179 "add_field", "af", /* 2 */ 3 180 "check", "ck", /* 3 */ 3 181 "compare", "cmp", /* 4 */ 3 182 "display", "ds", /* 5 */ 3 183 "exists", "~", /* 6 */ 3 184 "format", "fmt", /* 7 */ 3 185 "get", "~", /* 8 */ 3 186 "install", "~", /* 9 */ 3 187 "replace_field", "rpf"); /* 10 */ 3 188 3 189 dcl 1 src_array based(Psrc_array) aligned, 3 190 2 Ncoms fixed bin, 3 191 2 comments (0 refer (src_array.Ncoms)), 3 192 3 change_dt char(8), 3 193 3 seqno pic "9999", 3 194 3 fill bit(1), 3 195 3 selected bit(1), 3 196 3 Ieq fixed bin, 3 197 3 comment_no fixed bin, 3 198 3 change_person char(24) varying, 3 199 3 approve_dt char(8), 3 200 3 approve_value char(24) varying, 3 201 3 audit_dt char(8), 3 202 3 audit_person char(24) varying, 3 203 3 install_dt char(8), 3 204 3 install_id char(24) varying, 3 205 3 summary char(2000) varying, 3 206 3 err_msg (5) char(80) varying; 3 207 3 208 3 209 dcl Psrc_array ptr; 3 210 3 211 /* END OF: hcom_data.incl.pl1 * * * * * * * * * * * * * * * * */ 2649 2650 2651 dcl 1 orig_array aligned based(Porig_array), 2652 2 Ncoms fixed bin, 2653 2 comments (0 refer (orig_array.Ncoms)) like src_array.comments, 2654 Porig_array ptr; 2655 4 1 /* BEGIN INCLUDE FILE ... hcom_field_names.incl.pl1 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(85-09-20,LJAdams), approve(85-11-06,MCR7278), 4 6* audit(86-02-19,Gilcrease), install(86-02-19,MR12.0-1021): 4 7* Created September 1985. 4 8* END HISTORY COMMENTS */ 4 9 4 10 declare AUTHOR_FIELD_NAME char (24) varying internal static options (constant) init ("author"); 4 11 declare APPROVAL_FIELD_NAME char (24) varying internal static options (constant) init ("approval"); 4 12 declare AUDIT_FIELD_NAME char (24) varying internal static options (constant) init ("audit"); 4 13 declare INSTALL_FIELD_NAME char (24) varying internal static options (constant) init ("install"); 4 14 4 15 /* END INCLUDE FILE ... hcom_field_names.incl.pl1 */ 2656 2657 5 1 /* BEGIN INCLUDE FILE hcom_query_info.incl.pl1 TAC June 1, 1973 */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(85-10-02,LJAdams), approve(85-11-06,MCR7278), 5 5* audit(86-02-19,Gilcrease), install(86-02-19,MR12.0-1021): 5 6* Provides for multi-line input of text for 5 7* history comment change notices. 5 8* END HISTORY COMMENTS */ 5 9 5 10 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 5 11 /* version number changed to 4, 08/10/78 WOS */ 5 12 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 5 13 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 5 14 /* Version 7 adds field to accept an ending delimiter for multi-line answers, 06/05/85 L. Adams */ 5 15 5 16 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 5 17 2 version fixed bin, /* version of this structure - must be set, see below */ 5 18 2 switches aligned, /* various bit switch values */ 5 19 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 5 20 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 5 21 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 5 22 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 5 23 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 5 24 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 5 25 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 5 26 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 5 27 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 5 28 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 5 29 5 30 /* Limit of data defined for version 2 */ 5 31 5 32 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 5 33 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 5 34 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 5 35 /* minimum of 30 seconds required for repeat */ 5 36 /* otherwise, no repeat will occur */ 5 37 /* Limit of data defined for version 4 */ 5 38 5 39 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 5 40 2 explanation_len fixed bin (21) init (0), /* user answers "?" (disabled if ptr=null or len=0) */ 5 41 /* Limit of data defined for version 5/6 */ 5 42 2 ending_delim char(8) varying init(""), /* ending delimiter for multi line answers */ 5 43 2 ending_delim_description char(32) varying init(""); /* words describing ending delimiter. */ 5 44 5 45 dcl query_info_version_3 fixed bin int static options (constant) init (3); 5 46 dcl query_info_version_4 fixed bin int static options (constant) init (4); 5 47 dcl query_info_version_5 fixed bin int static options (constant) init (5); 5 48 dcl query_info_version_6 fixed bin int static options (constant) init (6); 5 49 dcl query_info_version_7 fixed bin int static options (constant) init (7); /* the current version number */ 5 50 5 51 /* END INCLUDE FILE hcom_query_info.incl.pl1 */ 2658 2659 6 1 /* START OF: pnotice_paths.incl.pl1 * * * * * * * * * * * * * * * * */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(86-01-28,LJAdams), approve(86-01-28,MCR7150), 6 7* audit(86-02-07,Wallman), install(86-02-13,MR12.0-1017): 6 8* Changed attributes of constants from automatic to internal static options 6 9* constant. Removed all initialization of automatic variables. 6 10* END HISTORY COMMENTS */ 6 11 6 12 6 13 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 14 /* */ 6 15 /* This include file defines the structure that the software protection tools fill in */ 6 16 /* with information on the proper search paths for notice templates, primary names of */ 6 17 /* these templates, their lengths, pointers to each, and whether or not they are the */ 6 18 /* default notice. There are only two defined default notices, one for copyright (named */ 6 19 /* "default.pnotice" as an add_name), and Trade Secret (named */ 6 20 /* "default_trade_secret.pnotice" as an add_name). */ 6 21 /* */ 6 22 /* Created: April 1981 by JM Stansbury */ 6 23 /* Modified: November 1981 by JM Stansbury */ 6 24 /* added Isearch_dir index to allow for >1 search path in search segment. */ 6 25 /* added Ifirst_template and Ilast_template to aid in sort for multiple directories */ 6 26 /* in the search list. */ 6 27 /* Modified: December 10, 1981 by JM Stansbury */ 6 28 /* added duplicate bit to provide list_pnotice_names with capability of flagging */ 6 29 /* and explaining same in its output. */ 6 30 /* Modified: December 7, 1982 by JM Stansbury */ 6 31 /* added type field to indicate whether a notice is copyright, trade secret or */ 6 32 /* public domain. */ 6 33 /* */ 6 34 /* */ 6 35 /* */ 6 36 /* */ 6 37 /* */ 6 38 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 39 6 40 6 41 dcl 1 pnotice_paths aligned based (Ppaths), 6 42 2 Ndirs fixed bin, /* no. of search dirs */ 6 43 2 Ntemplates fixed bin, /* no. of pnotice templates */ 6 44 2 dirs (0 refer (pnotice_paths.Ndirs)), 6 45 3 dir_path char (168) unal, 6 46 3 Ifirst_template fixed bin, /* index of first template in this dir */ 6 47 3 Ilast_template fixed bin, /* index of last template in this dir */ 6 48 2 templates (0 refer (pnotice_paths.Ntemplates)), 6 49 3 primary_name char (32), 6 50 3 Ptemplate ptr, /* ptr to each template */ 6 51 3 Ltemplate fixed bin, /* lgth of each template */ 6 52 3 type fixed bin, /* copyright, trade secret, and */ 6 53 /* public domain */ 6 54 3 Isearch_dir fixed bin, /* index of dir that this template is in */ 6 55 3 defaultC bit (1) unal, /* this bit is ON if the template is a default */ 6 56 /* copyright, i.e. "default.pnotice" */ 6 57 3 defaultTS bit (1) unal, /* this bit is ON if the template is a default */ 6 58 /* trade secret notice, */ 6 59 3 duplicate bit (1) unal, /* this bit is ON if an earlier template in the */ 6 60 /* search list had the same name, and thus */ 6 61 /* would be used instead of this one. */ 6 62 3 pad bit (33) unal; 6 63 6 64 6 65 dcl Ppaths ptr; 6 66 /* types */ 6 67 dcl UNDEFINED fixed bin int static options (constant) init (0); 6 68 dcl COPYRIGHT fixed bin int static options (constant) init (1); 6 69 dcl TRADE_SECRET fixed bin int static options (constant) init (2); 6 70 dcl PUBLIC_DOMAIN fixed bin int static options (constant) init (3); 6 71 6 72 /* END OF: pnotice_paths.incl.pl1 * * * * * * * * * * * * * * * * */ 2660 2661 2662 end hcom_process_seg_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/21/90 1405.2 hcom_process_seg_.pl1 >spec>install>1027>hcom_process_seg_.pl1 1921 1 02/13/86 1440.2 pnotice_language_info_.incl.pl1 >ldd>include>pnotice_language_info_.incl.pl1 2645 2 11/01/84 1614.0 format_document_options.incl.pl1 >ldd>include>format_document_options.incl.pl1 2649 3 06/05/86 1255.4 hcom_data.incl.pl1 >ldd>include>hcom_data.incl.pl1 2656 4 02/19/86 1635.3 hcom_field_names.incl.pl1 >ldd>include>hcom_field_names.incl.pl1 2658 5 02/19/86 1635.3 hcom_query_info.incl.pl1 >ldd>include>hcom_query_info.incl.pl1 2660 6 02/13/86 1440.2 pnotice_paths.incl.pl1 >ldd>include>pnotice_paths.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ADD constant fixed bin(17,0) initial dcl 3-146 ref 215 1136 ADD_FIELD constant fixed bin(17,0) initial dcl 3-146 ref 1138 ALL constant bit(36) initial dcl 3-146 ref 228 236 309 1517 APPROVAL_FIELD_NAME 000143 constant varying char(24) initial dcl 4-11 set ref 2329* 2333* APV_EXP 000114 constant char(57) initial packed unaligned dcl 2304 set ref 2322 2323 Acode 000622 automatic fixed bin(35,0) dcl 1917 set ref 1961* 1962 1962* CALLER 000316 constant char(15) initial packed unaligned dcl 3-146 set ref 330* 382* 618* 685* 691* 756* 905* 958* 985* 1025* 1039* 1050* 1058* 1062* 1088* 1099* 1107* 1110* 1789* 1810* 1929* 1938* 1941* 1948* 1957* 1962* 2108* 2154* 2207* 2324* 2329 2333 2349* 2354 2358 2385* 2430* 2566* 2576* CHARS_PER_WORD constant fixed bin(17,0) initial dcl 167 ref 1787 CLEARxxx constant fixed bin(2,0) initial dcl 3-146 ref 2425 2437 2445 COMPARE constant fixed bin(17,0) initial dcl 3-146 ref 215 ERROR_RETURN_LABEL parameter label variable dcl 99 set ref 96 444 1029* 1078* 2246 EXISTS constant fixed bin(17,0) initial dcl 3-146 ref 2540 FALSE constant bit(1) initial packed unaligned dcl 167 ref 203 217 366 368 471 473 488 570 571 580 649 655 766 771 801 807 923 946 968 1022 1143 1204 1244 1283 1321 1341 1381 2089 2090 2091 2092 2093 2094 2113 2121 2142 2143 2463 2471 2487 2490 2491 2495 2524 GET constant fixed bin(17,0) initial dcl 3-146 ref 2540 HT_SP constant char(2) initial packed unaligned dcl 167 ref 1253 HT_SP_NL_VT_NP 000324 constant char(5) initial packed unaligned dcl 167 ref 595 643 704 798 845 INPUTxxx constant fixed bin(2,0) initial dcl 3-146 ref 221 221 221 233 233 288 288 300 300 300 2215 2321 2346 2380 INSTALL constant fixed bin(17,0) initial dcl 3-146 ref 1058 1107 1345 1345 2370 INSTALL_EXP 000057 constant char(114) initial packed unaligned dcl 2304 set ref 2347 2348 INSTALL_FIELD_NAME 000134 constant varying char(24) initial dcl 4-13 set ref 2354* 2358* Ibreak 000432 automatic fixed bin(21,0) dcl 1229 set ref 1262* 1263 1263* 1265 1267 1269 1270 Icmt 000315 automatic fixed bin(21,0) dcl 548 set ref 595* 598 601 602 643* 644 645 646 704* 708 710 712 713 798* 799 800 Idx1 000102 automatic fixed bin(17,0) dcl 2619 set ref 2627* 2628 2628* 2635* 2636 2636* Ieq 6 based fixed bin(17,0) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 1336* 1348* 1420 1422 1423 1428 1434 1444 1449 1457 Ieq 6 based fixed bin(17,0) array level 3 in structure "orig_array" dcl 2651 in procedure "hcom_process_seg_" set ref 1334* 1347* 1396 2160 Ilang 000623 automatic fixed bin(17,0) dcl 1917 set ref 1934* 1934* 1937 1946 1953 1954 Iline 000422 automatic fixed bin(24,0) dcl 1202 set ref 1206* 1207 1207 1214 1215 1216 Inonwhite 000433 automatic fixed bin(21,0) dcl 1229 set ref 1253* 1254 1256 1257 1258 Iorig 000545 automatic fixed bin(17,0) dcl 1366 set ref 1415* 1423 1424* 1424 1428 1434* 1444* 1449 1457* 1462 1473 1481 Iskip 000434 automatic fixed bin(21,0) dcl 1229 set ref 1272* 1273 1274 1275 Isrc 000546 automatic fixed bin(17,0) dcl 1366 set ref 1419* 1420 1422 1423 1428 1433 1434 1438 1438 1443 1444 1449 1454 1454 1457* 1465 1486 LAST constant fixed bin(2,0) initial dcl 3-146 ref 2558 2566 2574 2576 Lcomment 000320 automatic fixed bin(21,0) dcl 554 set ref 608 610* 610 611 612* 612 614 631* 632* 632 636 636 636 636 641 642 653* 664* 666 667 676 677 679* 679 681 681 681 682 683* 683 689 718 720* 720 721 722* 722 724 732 734 736 737* 741* 741 752* 769* 773 773 773 773 778 781 782 786* 786 794* 836* 837 842 844* 844 845 848* 848 854 861* 862 871* 871 875 925* 927 929 931 932* 935 937* 937 953* 956 956 956 961* 962 965* 971 978* 978 991* 1204 1206 1207 1209 1210* 1216* 1216 Lcomment_line 000324 automatic fixed bin(21,0) dcl 554 set ref 666* 667 667* 669 670 677 677 679 734* 735 736* 740 741 743 744 744 746 746 781* 782 782* 784 786 787 788 837* 839 839 862* 864 864 866 870 871 882 884 887 887 890 890 890 893 893 893 896 896 896 929* 930 931* 935 935 937 939 939 939 939 971* 972 973* 977 978 980 980 983 1021 1070 1073 1209* 1214* 1244 1244 1249 Lcopy 000330 automatic fixed bin(21,0) dcl 562 set ref 726* 728 728 730 Lcopy_cmt 000334 automatic fixed bin(21,0) dcl 562 set ref 750* 752 Lformed_string 000154 automatic fixed bin(21,0) dcl 1560 set ref 750 1491 1498 1506 1572 1573* 1573 1574 1580 1580 1580 1582* 1582 1583 1583 1585 1586* 1586 1587 1588 1588 1589* 1589 1590 1590 1599 1600* 1600 1601 1607* 1678 1788 1788 1789 1789 Lnewbox 2211 based fixed bin(21,0) level 3 dcl 3-29 set ref 2041* 2045 2049 2052 2056 2058 Loldbox 112 parameter fixed bin(21,0) level 2 in structure "seg" dcl 530 in procedure "comment_parse" set ref 573* 676* 962* 989* Loldbox 2210 based fixed bin(21,0) level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 2043 2049 2049 2049 2052 2052 2052 2056 Lorig 000100 automatic fixed bin(21,0) dcl 1569 set ref 1572* 1574 1585* 1587 1599* 1601 Lrest 000314 automatic fixed bin(21,0) dcl 548 set ref 579* 595 602* 602 623 623 630 631 642* 642 643 646* 646 651 653 664 701* 701 704 710 713* 713 760 769 793* 793 798 800* 800 801 801 836 854* 861 875* 925 949* 949 953 961 965 969 973 974* Lresult 000160 automatic fixed bin(21,0) dcl 1616 set ref 1506* 1510 1510 1547 1547 1662 1663 1665 1665 1665 1668 1671* 1671 1674 1675* 1678* 1787* 1788 1788 1788* 1891 1891 2041 2058 2275 2275 2290 2290 Lseg_in 2306 based fixed bin(21,0) level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 209 Lseg_in 2172 based fixed bin(21,0) level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 2049 2049 2052 2052 2056 Lseg_in 74 parameter fixed bin(21,0) level 2 in structure "seg" dcl 530 in procedure "comment_parse" ref 576 579 Lseg_out 2173 based fixed bin(21,0) level 3 dcl 3-29 set ref 2056* Lsegment 000150 automatic fixed bin(21,0) dcl 194 set ref 576* 1029 1029 1078 1078 Lstring 000370 automatic fixed bin(21,0) dcl 1006 set ref 1011* 1021* 1021 1025 1029 1029 1070* 1073* 1073 1078 1078 Lword_text 000435 automatic fixed bin(21,0) dcl 1229 set ref 1249* 1253 1254* 1258* 1258 1261 1262 1263 1267 1270* 1270 1272 1275* 1275 1277* MINUS constant fixed bin(2,0) initial dcl 3-146 ref 2562 2574 MODIFY constant bit(1) initial packed unaligned dcl 3-146 ref 307 1134 2574 N based fixed bin(17,0) level 3 in structure "pnotice_language_info" dcl 1-43 in procedure "get_language_info" ref 1934 1937 N 000102 automatic fixed bin(18,0) level 2 in structure "V" dcl 2609 in procedure "sort_comments" set ref 2626* 2635 NL 000322 constant char(1) initial dcl 167 set ref 608 611 653 664 666 682 718 721 734 781 837 862 929 961 971 1021 1070 1073 1206 1427* 1437* 1448* 1464* 1472* 1480* 1580 1580 1582 1583 1583 1588 1588 1589 1590 1590 1631 1631 1633 1639 1639 1641 1656* 1663 1705* 1719* 1733* 2270* 2286* 2395 NO_MODIFY constant bit(1) initial packed unaligned dcl 3-146 ref 1035 1044 1084 1093 NOxxx constant fixed bin(2,0) initial dcl 3-146 ref 1138 2181 2342 2375 Ncoms based fixed bin(17,0) level 2 in structure "src_copy" dcl 2613 in procedure "sort_comments" set ref 2624* Ncoms based fixed bin(17,0) level 2 in structure "com_array" dcl 534 in procedure "comment_parse" set ref 1013* 1018* 1019 1020 1029 1032 1033 1035 1039 1044 1044 1044 1050 1050 1050 1066* 1066 1067 1068 1068 1078 1081 1082 1084 1088 1093 1093 1093 1099 1099 1099 1162 Ncoms based fixed bin(17,0) level 2 in structure "orig_array" dcl 2651 in procedure "hcom_process_seg_" set ref 290 457 1334 1334 1342 1395 1462 1473 1481 1499 2016* 2101 2122 2159 2265 2487 2525 Ncoms based fixed bin(17,0) level 2 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 339 340* 341 343 344 347* 347 348 349 350 351 367 462 489 508 1336 1336 1340 1419 1465 1486 1499 1541 1651 1804 2009* 2105 2113 2117 2170 2214 2248 2283 2413 2465 2467 2471 2492 2558 2566 2566* 2609 2624 2626 2627 Nrange 1561 based fixed bin(17,0) level 3 dcl 3-29 ref 228 236 309 1517 2466 2472 Nskip_orig 000550 automatic fixed bin(17,0) dcl 1366 set ref 1418* 1423* 1424 1426 1436 1447 1462* 1463 1471 1479 Nskip_src 000547 automatic fixed bin(17,0) dcl 1366 set ref 1417* 1420* 1420 1424 1426 1436 1438 1445* 1447 1454 1458* 1463 1465 1471 1479 1486 Nwords 000512 automatic fixed bin(17,0) dcl 1235 set ref 1250* 1261 1266* 1266 1267 1267 OPERANDxxx constant fixed bin(2,0) initial dcl 3-146 ref 371 379 391 2215 2340 2367 2396 2415 2420 2429 2441 PLUS constant fixed bin(2,0) initial dcl 3-146 ref 2560 Pbox 110 parameter pointer level 2 in structure "seg" dcl 530 in procedure "comment_parse" set ref 572* 660* 703* 810* 852* 876* 951* Pbox 2206 based pointer level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 2043 2045 2058 Pcode 000100 automatic pointer dcl 433 set ref 439* 440 442 442 Pcom_array parameter pointer dcl 530 ref 520 1013 1018 1019 1019 1020 1020 1029 1029 1032 1032 1033 1033 1035 1035 1039 1039 1044 1044 1044 1044 1044 1044 1050 1050 1050 1050 1050 1050 1066 1066 1067 1067 1068 1068 1068 1078 1078 1081 1081 1082 1082 1084 1084 1088 1088 1093 1093 1093 1093 1093 1093 1099 1099 1099 1099 1099 1099 1155 1156 1157 1157 1157 1157 1162 1163 1163 1163 1163 1167 1167 1167 1173 1173 1173 1178 1180 1180 1184 1187 1190 Pcomment 000316 automatic pointer dcl 554 set ref 608 609* 609 611 614 630* 632 636 636 636 636 652* 663* 665 666 677 677* 677 681 681 681 682 689 718 719* 719 721 724 726 733 734 740* 740 751* 768* 773 773 773 773 780 781 784* 784 835* 837 842 843* 843 845 847* 847 852 853 860* 862 870* 870 874 876 924* 928 929 935* 935 952* 956 956 956 966 970 971 977* 977 990* 1010 1204 1206 1208 1209 1213 1215* 1215 Pcomment_line 000322 automatic pointer dcl 554 set ref 665* 669 670 677 733* 743 744 744 746 746 780* 788 835* 839 839 860* 864 864 866 882 884 887 887 890 890 890 893 893 893 896 896 896 928* 939 939 939 949 950 970* 980 980 1069 1208* 1213* 1244 1244 1248 Pcopy 000326 automatic pointer dcl 562 set ref 725* 728 Pcopy_cmt 000332 automatic pointer dcl 562 set ref 730* 750 751 Pd parameter pointer dcl 3-29 set ref 96 206 207 207 207 207 207 207 207 209 209 211 212 212 212 212 212 212 212 215 215 219 221 221 221 228 228 228 228 228 228 228 228 233 233 236 236 236 236 236 236 236 236 245 245 247 247 247 247 247 247 270 270 270 270 270 270 283 283 285 285 285 285 285 285 288 288 290 300 300 300 307 309 309 309 309 309 309 309 309 330 330 330 330 330 330 330 330 330 330 337 341 342 343 344 348 349 350 351 371 374 375 379 382 382 382 382 382 382 382 386 387 391 394 395 457 491 506 582 582 585 585 587 587 590 590 623 623 812 882 884 902 1025 1025 1025 1025 1025 1025 1029* 1035 1035 1035 1035 1035 1035 1035 1039 1039 1039 1039 1039 1039 1044 1044 1044 1044 1044 1044 1044 1044 1044 1050 1050 1050 1050 1050 1050 1050 1050 1058 1058 1058 1058 1058 1058 1058 1058 1058 1062 1062 1062 1062 1062 1062 1062 1078* 1084 1084 1084 1084 1084 1084 1084 1088 1088 1088 1088 1088 1088 1093 1093 1093 1093 1093 1093 1093 1093 1093 1099 1099 1099 1099 1099 1099 1099 1099 1107 1107 1107 1107 1107 1107 1107 1107 1107 1110 1110 1110 1110 1110 1110 1110 1134 1134 1134 1136 1138 1138 1157 1163 1167 1172 1173 1180 1184 1345 1345 1372 1384 1384 1384 1384 1384 1384 1384 1388 1388 1388 1388 1388 1388 1388 1391 1391 1395 1401 1401 1401 1401 1401 1401 1401 1401 1401 1401 1401 1401 1401 1405 1409 1409 1409 1409 1409 1409 1409 1490 1494 1510 1510 1510 1510 1510 1510 1510 1510 1510 1510 1510 1510 1517 1517 1517 1517 1517 1517 1517 1517 1525 1547 1547 1547 1547 1547 1547 1608 1630 1630 1631 1633 1635 1644 1660 1660 1665 1668 1674 1786 1806 1806 1809 1810 1810 1810 1810 1810 1810 1813 1813 1821 1821 1829 1829 1837 1837 1845 1845 1853 1853 1861 1861 1869 1869 1877 1877 1889 1941 1941 1941 1941 1941 1941 1957 1961 1961 2008 2015 2041 2043 2043 2045 2045 2049 2049 2049 2049 2049 2049 2052 2052 2052 2052 2052 2052 2056 2056 2056 2056 2058 2058 2099 2108 2108 2108 2108 2108 2108 2108 2154 2154 2154 2154 2154 2154 2154 2181 2186 2194 2206 2207 2207 2207 2207 2207 2207 2215 2215 2218 2225 2240 2241 2241 2243 2243 2243 2243 2243 2243 2265 2275 2275 2275 2275 2275 2275 2276 2276 2290 2290 2290 2290 2290 2290 2312 2321 2327 2329 2329 2329 2333 2333 2333 2339 2340 2342 2346 2352 2354 2354 2354 2354 2358 2358 2358 2366 2367 2370 2371 2371 2371 2371 2371 2371 2375 2380 2387 2389 2389 2389 2389 2389 2389 2389 2395 2396 2415 2416 2417 2420 2421 2423 2425 2429 2430 2430 2430 2430 2430 2430 2430 2434 2435 2437 2441 2442 2443 2445 2466 2472 2473 2473 2474 2474 2474 2476 2476 2479 2479 2490 2495 2497 2497 2498 2498 2503 2503 2508 2508 2510 2510 2513 2513 2515 2515 2517 2517 2519 2519 2522 2522 2536 2536 2537 2537 2540 2540 2540 2540 2540 2544 2566 2566 2566 2566 2566 2566 2574 2576 2576 2576 2576 2576 2576 2623 Pformed_string 2330 based pointer level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 1608 Pformed_string 000152 automatic pointer dcl 1560 in procedure "hcom_process_seg_" set ref 730 749 750 1491 1498 1505 1572 1573 1574 1580 1580 1580 1583 1583 1585 1586 1587 1588 1588 1590 1590 1599 1600 1601 1608* 1679 1788 1789 Porig parameter pointer dcl 2606 set ref 2593 2609 2624 2626 2627 2627 2628 2639* Porig_array 2332 based pointer level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 2015 Porig_array 000170 automatic pointer dcl 2651 in procedure "hcom_process_seg_" set ref 201* 212 212 290 457 1334 1334 1342 1343 1345 1345 1347 1395 1396 1429 1450 1462 1473 1474 1481 1482 1499 2015* 2016 2101 2101 2122 2123 2124 2128 2129 2134 2137 2141 2143 2159 2160 2162 2163 2265 2266 2267 2267 2269 2487 2487 2522 2525 2526 2527 2527 2531 Prest 000312 automatic pointer dcl 548 set ref 578* 595 601* 601 623 623 630 641* 641 643 645* 645 651 652 653 660 663 664 699* 699 703 704 710 712* 712 760 768 792* 792 798 799* 799 801 810 835 853* 860 874* 924 949 950* 951 952 961 Presult 2336 based pointer level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 1786 Presult 000156 automatic pointer dcl 1616 in procedure "hcom_process_seg_" set ref 1505* 1510 1547 1663 1665 1665 1665 1668 1670* 1670 1674 1679* 1786* 1788 1891 2058 2275 2290 Pseg 2304 based pointer level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 209 Pseg 72 parameter pointer level 2 in structure "seg" dcl 530 in procedure "comment_parse" ref 572 575 578 725 726 Psegment 000146 automatic pointer dcl 194 set ref 575* 749* 1029 1078 Psort_copy 2340 based pointer level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 2623 Psort_copy 000100 automatic pointer dcl 2606 in procedure "sort_comments" set ref 2623* 2624 2636 2639 Psource 000646 automatic pointer dcl 2037 set ref 2043* 2049* 2052* Psrc_array 2342 based pointer level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 2008 Psrc_array 000166 automatic pointer dcl 3-209 in procedure "hcom_process_seg_" set ref 207 207 339 340 341 343 343 344 344 347 347 348 349 349 350 350 351 351 367 369 371 371 374 375 379 379 382 382 386 387 391 391 394 395 398 462 463 463 463 463 463 463 463 463 463 463 463 463 471 489 490 491 507* 508 509 1336 1336 1340 1343 1345 1345 1348 1419 1420 1422 1423 1428 1433 1434 1439 1443 1444 1449 1455 1457 1465 1466 1486 1487 1499 1541 1542 1543 1651 1652 1804 1805 1813 1817 1821 1825 1829 1833 1837 1841 1845 1849 1853 1857 1861 1865 1869 1873 1877 1881 2008* 2009 2105 2113 2117 2123 2124 2126 2128 2129 2130 2134 2137 2141 2142 2170 2171 2171 2173 2174 2176 2178 2179 2181 2183 2184 2186 2189 2190 2192 2194 2198 2201 2214 2216 2216 2217 2218 2219 2223 2224 2225 2226 2248 2249 2250 2250 2251 2255 2257 2259 2283 2284 2285 2413 2414 2416 2417 2421 2423 2425 2425 2430 2430 2434 2435 2437 2437 2442 2443 2445 2445 2465 2467 2471 2480 2492 2496 2498 2498 2498 2503 2503 2503 2508 2510 2513 2515 2517 2519 2527 2527 2540 2544 2547 2558 2566 2566 Pstring 000372 automatic pointer dcl 1006 set ref 1010* 1029 1069* 1078 Ptarget 000650 automatic pointer dcl 2037 set ref 2045* 2049* 2052* Pword_text 000436 automatic pointer dcl 1229 set ref 1248* 1253 1257* 1257 1258 1262 1263 1267 1269* 1269 1270 1272 1274* 1274 1275 REPLACE_FIELD constant fixed bin(17,0) initial dcl 3-146 ref 2540 SP 031676 constant char(1) initial packed unaligned dcl 167 ref 1631 1633 1635 1639 1641 1644 1967 SUMMARY_EXP 000043 constant char(47) initial packed unaligned dcl 2304 set ref 2381 2382 Saf 1772 based bit(1) level 2 dcl 3-29 ref 245 283 1388 1391 1401 1409 1490 1813 1821 1829 1837 1845 1853 1861 1869 1877 1889 2108 2154 2241 2276 Sany_found parameter bit(1) packed unaligned dcl 455 in procedure "CHECK_FIELDs" set ref 452 461* 462 473* Sany_found 000100 automatic bit(1) packed unaligned dcl 134 in procedure "hcom_process_seg_" set ref 215* 215* 217* 225* 228 235* 236 243 253* 269* 270 281 298 309 316* 2090* 2220* 2227* 2231* 2239 Sany_found parameter bit(1) packed unaligned dcl 486 in procedure "FORMAT_CMTS" set ref 483 488* 492* Sany_found parameter bit(1) packed unaligned dcl 328 in procedure "ADD_comment" set ref 325 338* Sany_found parameter bit(1) packed unaligned dcl 363 in procedure "ADD_FIELDs" set ref 360 366* 399* 399 Sany_found parameter bit(1) packed unaligned dcl 1363 in procedure "display_comments" ref 1360 1383 1517 1525 Sany_selected parameter bit(1) packed unaligned dcl 2460 set ref 2457 2463* 2468* 2481* 2490 2491* 2547* 2547 2551 Sapprove 000665 automatic bit(1) packed unaligned dcl 2070 set ref 2094* 2201* Sblank_after 000101 automatic bit(1) packed unaligned dcl 134 set ref 570* 626* 659* 672* 761* 813* 815* 1656 Sblank_before 000102 automatic bit(1) packed unaligned dcl 134 set ref 570* 626* 659* 672* 761* 815* 1631 1639 Scfix 1773 based bit(1) level 2 dcl 3-29 ref 1058 1107 1134 2186 2329 2354 Scfix_found 1774 based bit(1) level 2 dcl 3-29 ref 330 1058 1107 Scomparable 000530 automatic bit(1) packed unaligned dcl 1331 set ref 1341* 1342 1344* Send_history_cmt 000300 automatic bit(1) packed unaligned dcl 539 set ref 968* 969 980* 985 Sequal 000716 automatic bit(1) packed unaligned dcl 2460 in procedure "select_comments" set ref 2524* 2525 2532* 2536 2537 Sequal 000661 automatic bit(1) packed unaligned dcl 2070 in procedure "INSTALL_ck" set ref 2121* 2122 2131* 2141 2144* 2147 Serror_has_occurred 000151 automatic bit(1) initial packed unaligned dcl 428 set ref 428* 441* Serrors 000544 automatic bit(1) packed unaligned dcl 1363 in procedure "display_comments" set ref 1381* 1396* 1400 1409 Serrors 000662 automatic bit(1) packed unaligned dcl 2070 in procedure "INSTALL_ck" set ref 2091* 2107* 2136* 2153* 2161* 2172* 2177* 2182* 2188* 2214 2234 Sfirst_cmt 000103 automatic bit(1) packed unaligned dcl 134 set ref 1012* 1017 1022* Sformat 000104 automatic bit(1) packed unaligned dcl 134 set ref 203* 274* Sfound 000240 automatic bit(1) packed unaligned dcl 363 set ref 368* 376* 388* 396* 398 399 Shistory_cmt_bgn 000360 automatic bit(1) packed unaligned dcl 920 set ref 923* 927 939* 946 Sincl 000301 automatic bit(1) packed unaligned dcl 539 set ref 580* 582* 585* 587* 590* 603 714 Sinstall 000663 automatic bit(1) packed unaligned dcl 2070 set ref 2092* 2192* 2205 Sinstall_match 000664 automatic bit(1) packed unaligned dcl 2070 set ref 2093* 2197* 2205 2231 Snew_comment 000660 automatic bit(1) packed unaligned dcl 2070 set ref 2089* 2147* 2152 Snopnotice 000303 automatic bit(1) packed unaligned dcl 539 set ref 766* 808* 813 Spnotice 000302 automatic bit(1) packed unaligned dcl 539 set ref 633* 635 649* 651 655* 765* 767 801* 807* Sprt_path 000304 automatic bit(1) packed unaligned dcl 539 set ref 571* 1029* 1078* Sstar_line 000305 automatic bit(1) packed unaligned dcl 539 set ref 771* 789 789* TRUE constant bit(1) initial packed unaligned dcl 167 ref 274 337 338 376 388 396 441 461 492 582 585 587 590 626 633 659 672 761 765 789 808 813 815 939 980 994 1012 1136 1138 1219 1281 1317 1344 1396 2107 2130 2131 2136 2144 2147 2153 2161 2162 2172 2174 2177 2179 2182 2184 2188 2190 2192 2197 2198 2201 2219 2220 2226 2227 2231 2249 2266 2284 2316 2317 2328 2353 2467 2468 2480 2481 2531 2532 UNSET constant fixed bin(2,0) initial dcl 3-146 ref 2474 2566 2576 V 000102 automatic structure level 1 dcl 2609 set ref 2632 2632 WORD_BREAKS 000133 constant char(4) initial packed unaligned dcl 1240 ref 1262 1272 add_to_return_arg 1762 based entry variable level 2 dcl 3-29 ref 1813 1829 1845 1861 add_to_return_arg_var 1766 based entry variable level 2 dcl 3-29 ref 1821 1837 1853 1869 1877 addcharno builtin function dcl 187 ref 609 641 719 730 740 792 843 870 935 977 1215 1670 2043 2045 addend 3 parameter fixed bin(17,0) level 2 dcl 2556 set ref 2560 2562 2566* 2576* addr builtin function dcl 187 ref 207 207 212 212 601 609 630 641 645 677 699 712 719 730 740 750 784 792 799 843 847 870 935 977 1215 1257 1269 1274 1670 1788 1788 1934 1934 1937 1946 1953 1954 2322 2324 2324 2347 2349 2349 2381 2385 2385 2628 2632 2632 adj_sw 3(01) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1774* after builtin function dcl 187 ref 587 590 ag based structure level 2 dcl 3-29 all 1560 based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2497* all 1557 based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2497 answer_iocbp 6 000172 automatic pointer initial level 2 dcl 5-16 set ref 5-16* approve_dt 17 based char(8) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 371 375* 463 463 1829 1833* 2181 2201 2216 2217* 2423* 2425* 2498 2503 2508 2510 approve_dt 16 parameter char(8) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" set ref 1703 1707 1711* approve_dt 365 based char(8) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 375 2339* 2423 approve_value 20 parameter varying char(24) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" set ref 1713* approve_value 21 based varying char(24) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 371 374* 463 1837* 1841* 2186 2216 2218* 2421* 2425* approve_value 367 based varying char(24) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 330 330 330* 374 1062* 1110* 1134 2218 2327* 2329* 2329* 2333* 2333* 2421 apv 344 based fixed bin(2,0) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 221 233 288 300 371 1138 2181 2215 2215 2321 2340* 2342* 2420 2425 apv 1560(05) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2508* apv 1557(05) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2508 arg_in parameter structure level 1 dcl 2556 set ref 2553 array_in parameter structure level 1 dcl 1985 set ref 1982 aud 1560(07) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2513* aud 345 based fixed bin(2,0) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 379 2429 2437 aud 1557(07) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2513 audit_dt 27 parameter char(8) level 2 in structure "src" dcl 1300 in procedure "comments_comparable" ref 1308 1317 audit_dt 30 based char(8) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 379 386* 463 463 1845 1849* 2171 2435* 2437* 2498 2503 2513 2515 audit_dt 27 parameter char(8) level 2 in structure "orig" dcl 1300 in procedure "comments_comparable" ref 1308 1317 audit_dt 376 based char(8) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 386 2435 audit_dt 27 parameter char(8) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" set ref 1717 1721 1725* audit_person 31 parameter varying char(24) level 2 in structure "orig" dcl 1300 in procedure "comments_comparable" ref 1308 1317 audit_person 400 based varying char(24) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 382 387 2430 2434 audit_person 32 based varying char(24) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 379 387* 463 1853* 1857* 2171 2434* 2437* audit_person 31 parameter varying char(24) level 2 in structure "src" dcl 1300 in procedure "comments_comparable" ref 1308 1317 audit_person 31 parameter varying char(24) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" ref 1727 1727 audit_person 32 based varying char(24) array level 3 in structure "com_array" dcl 534 in procedure "comment_parse" set ref 1157 1163 before builtin function dcl 187 ref 1244 1932 break_word_sw 3(07) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1779* change_dt 1 based char(8) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 463 1813 1817* change_dt parameter char(8) level 2 in structure "src" dcl 1300 in procedure "comments_comparable" ref 1302 change_dt 1 based char(8) array level 3 in structure "com_array" dcl 534 in procedure "comment_parse" set ref 1155 1167 1167* 1173 1173* 1178 change_dt parameter char(8) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" set ref 1699* change_dt parameter char(8) level 2 in structure "orig" dcl 1300 in procedure "comments_comparable" ref 1302 change_person 10 based varying char(24) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 382 463 1821* 1825* 2430 change_person 7 parameter varying char(24) level 2 in structure "orig" dcl 1300 in procedure "comments_comparable" ref 1302 change_person 7 parameter varying char(24) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" set ref 1701* change_person 7 parameter varying char(24) level 2 in structure "src" dcl 1300 in procedure "comments_comparable" ref 1302 change_person 10 based varying char(24) array level 3 in structure "com_array" dcl 534 in procedure "comment_parse" set ref 1157 1157* 1163 1163* char builtin function dcl 187 ref 1694 2251 2267 charno builtin function dcl 187 ref 726 726 750 750 949 949 chr_cmtno 000100 automatic char(4) dcl 1624 set ref 1694* 1695* 1695 1696* clock builtin function dcl 187 ref 202 202 cmt parameter structure level 1 dcl 1690 set ref 1687 cmt_bgn 101 parameter varying char(8) level 2 in structure "seg" dcl 530 in procedure "comment_parse" ref 623 623 636 651 710 743 746 746 760 760 773 788 801 866 866 884 884 939 939 939 cmt_bgn 2177 based varying char(8) level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 1631 1633 1644 1668 1674 cmt_bgn 101 parameter varying char(8) level 2 in structure "seg" dcl 1913 in procedure "get_language_info" set ref 1953* 1967* 1967 1969* 1969 cmt_end 104 parameter varying char(8) level 2 in structure "seg" dcl 1913 in procedure "get_language_info" set ref 1954* cmt_end 104 parameter varying char(8) level 2 in structure "seg" dcl 530 in procedure "comment_parse" ref 632 632 653 653 664 664 842 843 844 961 961 cmt_end 2202 based varying char(8) level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 1635 code based fixed bin(35,0) dcl 433 in procedure "check_error" set ref 440 442 442* code 000105 automatic fixed bin(35,0) dcl 134 in procedure "hcom_process_seg_" set ref 1029* 1078* 1508* 1508* 1546* 1546* 1788* 1789 1789 1789* 1890* 1890* 2274* 2274* 2289* 2289* com_array based structure level 1 dcl 534 com_err_ 000056 constant entry external dcl 433 ref 443 443 com_path parameter char packed unaligned dcl 530 set ref 520 1029* 1078* 1157* 1163* 1167* 1173* 1180* 1184* com_spec 1557 based structure level 2 dcl 3-29 comment based structure level 1 dcl 2617 in procedure "sort_comments" ref 2636 comment based char packed unaligned dcl 554 in procedure "comment_parse" ref 608 611 614 632 636 636 636 636 666 677 681 681 681 682 689 718 721 724 734 773 773 773 773 781 837 842 845 862 929 956 956 956 971 1204 1206 1209 comment_chr based char(1) array packed unaligned dcl 554 set ref 609 677 719 740 784 843 847 870 935 977 1215 comment_ck 000412 automatic fixed bin(17,0) dcl 1152 set ref 1156* 1173* 1180 1180* 1184 1184* 1187* 1190* comment_end 10 based varying char(8) array level 4 dcl 1-43 ref 1954 comment_line based char packed unaligned dcl 554 ref 669 670 677 743 744 744 746 746 788 839 839 864 864 866 882 884 887 887 890 890 890 893 893 893 896 896 896 939 939 939 980 980 1244 1244 comment_no 7 based fixed bin(17,0) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 382* 509* 2251 2430* comment_no 355 based fixed bin(17,0) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 341* 348* comment_no 7 based fixed bin(17,0) array level 3 in structure "com_array" dcl 534 in procedure "comment_parse" set ref 1035* 1039* 1044* 1050* 1084* 1088* 1093* 1099* 1156 1157* 1163* 1167* 1173* 1180 1180* 1184 1187 1190 comment_no 6 parameter fixed bin(17,0) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" ref 1694 comment_no 7 based fixed bin(17,0) array level 3 in structure "orig_array" dcl 2651 in procedure "hcom_process_seg_" set ref 2267 comment_start 5 based varying char(8) array level 4 dcl 1-43 ref 1953 comments 1 based structure array level 2 in structure "src_copy" dcl 2613 in procedure "sort_comments" set ref 2636* comments 1 based structure array level 2 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 343* 350* 1343* 1345* 1345* 1433* 1439* 1443* 1455* 1465 1466* 1486 1487* 1543* 1652* 2123* 2124* 2141* 2259* 2285* 2527* 2527* 2626 2627 2627 2628 comments 1 based structure array level 2 in structure "com_array" dcl 534 in procedure "comment_parse" set ref 1019* 1029* 1067* 1078* comments 1 based structure array level 2 in structure "orig_array" dcl 2651 in procedure "hcom_process_seg_" set ref 1343* 1345* 1345* 1429* 1450* 1473 1474* 1481 1482* 2123* 2124* 2141* 2269* 2527* 2527* comp 2274 based char(32) level 3 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 212* 212* 1401* 1401* 1510* 1510* comp 62 parameter char(32) level 2 in structure "seg" packed packed unaligned dcl 1913 in procedure "get_language_info" set ref 1925 1927 1929* 1929* 1938* 1938* 1948* 1948* 1957* 1957* 1962* 1962* comp 62 parameter char(32) level 2 in structure "seg" packed packed unaligned dcl 530 in procedure "comment_parse" set ref 618* 618* 685* 685* 691* 691* 756* 756* 887 905* 905* 958* 958* 985* 985* comp 2160 based char(32) level 3 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 207* 207* 228* 228* 236* 236* 247* 247* 270* 270* 285* 285* 309* 309* 330* 330* 382* 382* 582 582 587 587 1025* 1025* 1035* 1035* 1039* 1039* 1044* 1044* 1050* 1050* 1058* 1058* 1062* 1062* 1084* 1084* 1088* 1088* 1093* 1093* 1099* 1099* 1107* 1107* 1110* 1110* 1384* 1384* 1388* 1388* 1401* 1401* 1409* 1409* 1510* 1510* 1517* 1517* 1547* 1547* 1810* 1810* 1941* 1941* 1957 2108* 2108* 2154* 2154* 2207* 2207* 2243* 2243* 2275* 2275* 2290* 2290* 2371* 2371* 2389* 2389* 2430* 2430* 2566* 2566* 2576* 2576* comp_or_ent 000612 automatic char(32) packed unaligned dcl 1915 set ref 1925* 1927* 1929 1932 convert builtin function dcl 187 ref 1033 1082 copy based char dcl 562 set ref 728* cp_escape_control 1(02) 000172 automatic bit(2) initial level 3 packed packed unaligned dcl 5-16 set ref 5-16* 2318* cpt 1560(03) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2498* cpt 1557(03) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2498 ctl 6 based structure level 3 dcl 3-29 cu_$arg_list_ptr 000060 constant entry external dcl 433 ref 443 443 cu_$arg_ptr 000062 constant entry external dcl 433 ref 439 cu_$generate_call 000010 constant entry external dcl 146 ref 443 current_date 000106 automatic char(8) packed unaligned dcl 134 set ref 202* 1167 1167* 2217 2224 2339 2366 d based structure level 1 dcl 3-29 date_ck 000410 automatic char(8) packed unaligned dcl 1152 set ref 1155* 1173 1173* 1178* date_time_$format 000012 constant entry external dcl 146 ref 202 dim builtin function dcl 187 ref 1261 1267 2626 dir parameter char(168) level 2 in structure "seg" packed packed unaligned dcl 1913 in procedure "get_language_info" set ref 1929* 1929* 1938* 1938* 1948* 1948* 1957* 1957* 1962* 1962* dir 2076 based char(168) level 3 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 207* 207* 228* 228* 236* 236* 247* 247* 270* 270* 285* 285* 309* 309* 330* 330* 382* 382* 1025* 1025* 1035* 1035* 1039* 1039* 1044* 1044* 1050* 1050* 1058* 1058* 1062* 1062* 1084* 1084* 1088* 1088* 1093* 1093* 1099* 1099* 1107* 1107* 1110* 1110* 1384* 1384* 1388* 1388* 1401* 1401* 1409* 1409* 1510* 1510* 1517* 1517* 1547* 1547* 1810* 1810* 1941* 1941* 1961* 2108* 2108* 2154* 2154* 2207* 2207* 2243* 2243* 2275* 2275* 2290* 2290* 2371* 2371* 2389* 2389* 2430* 2430* 2566* 2566* 2576* 2576* dir parameter char(168) level 2 in structure "seg" packed packed unaligned dcl 530 in procedure "comment_parse" set ref 618* 618* 685* 685* 691* 691* 756* 756* 905* 905* 958* 958* 985* 985* dir 2212 based char(168) level 3 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 212* 212* 1401* 1401* 1510* 1510* dont_break_indented_lines_sw 3(09) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1781* dont_compress_sw 3(06) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1778* dont_fill_sw 3(11) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1783* ec_version 76 parameter fixed bin(17,0) level 2 dcl 1913 set ref 1923* 1961* 1967 ending_delim 15 000172 automatic varying char(8) initial level 2 dcl 5-16 set ref 5-16* 2315* 2383* ending_delim_description 20 000172 automatic varying char(32) initial level 2 dcl 5-16 set ref 5-16* 2384* ent 2264 based char(32) level 3 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 212* 212* 1401* 1401* 1510* 1510* ent 2150 based char(32) level 3 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 207* 207* 228* 228* 236* 236* 247* 247* 270* 270* 285* 285* 309* 309* 330* 330* 382* 382* 585 585 590 590 1025* 1025* 1035* 1035* 1039* 1039* 1044* 1044* 1050* 1050* 1058* 1058* 1062* 1062* 1084* 1084* 1088* 1088* 1093* 1093* 1099* 1099* 1107* 1107* 1110* 1110* 1384* 1384* 1388* 1388* 1401* 1401* 1409* 1409* 1510* 1510* 1517* 1517* 1547* 1547* 1810* 1810* 1941* 1941* 1961* 2108* 2108* 2154* 2154* 2207* 2207* 2243* 2243* 2275* 2275* 2290* 2290* 2371* 2371* 2389* 2389* 2430* 2430* 2566* 2566* 2576* 2576* ent 52 parameter char(32) level 2 in structure "seg" packed packed unaligned dcl 530 in procedure "comment_parse" set ref 618* 618* 685* 685* 691* 691* 756* 756* 887 905* 905* 958* 958* 985* 985* ent 52 parameter char(32) level 2 in structure "seg" packed packed unaligned dcl 1913 in procedure "get_language_info" set ref 1925 1929* 1929* 1938* 1938* 1948* 1948* 1957* 1957* 1962* 1962* err_code 000335 automatic fixed bin(35,0) dcl 568 set ref 1033* 1033 1034 1043 1082* 1082 1083 1092 err_msg 1037 based varying char(80) array level 3 in structure "orig_array" dcl 2651 in procedure "hcom_process_seg_" set ref 2163* 2267 err_msg 1037 based varying char(80) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 2137* 2173* 2178* 2183* 2189* 2250 2250 2255* 2257 err_msg 1037 based varying char(80) array level 3 in structure "com_array" dcl 534 in procedure "comment_parse" set ref 1032 1033 1044 1044 1050 1050 1081 1082 1093 1093 1099 1099 error_msg 000110 automatic varying char(100) dcl 134 set ref 2354* 2358* 2363* error_sw 3(03) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1776* error_table_$bad_arg 000042 external static fixed bin(35,0) dcl 178 set ref 330* 1058* 1107* 1110* 1810* 2207* 2566* 2576* error_table_$bad_file_name 000044 external static fixed bin(35,0) dcl 178 set ref 1929* error_table_$bigarg 000046 external static fixed bin(35,0) dcl 178 set ref 1043 1050* 1092 1099* error_table_$improper_data_format 000050 external static fixed bin(35,0) dcl 178 set ref 618* 685* 691* 756* 905* 958* 985* 1025* 1034 1039* 1062* 1083 1088* 2108* 2154* error_table_$recoverable_error 000052 external static fixed bin(35,0) dcl 178 ref 1789 errors 6 based bit(1) level 4 packed packed unaligned dcl 3-29 ref 1384 2240 explanation_len 14 000172 automatic fixed bin(21,0) initial level 2 dcl 5-16 set ref 5-16* 2323* 2348* 2382* explanation_ptr 12 000172 automatic pointer initial level 2 dcl 5-16 set ref 5-16* 2322* 2347* 2381* extra_msg parameter char packed unaligned dcl 1539 set ref 1536 1547 1547* fdoc 000161 automatic structure level 1 dcl 2647 set ref 1769* 1788 1788 field_array 1740 based fixed bin(17,0) array level 2 dcl 3-29 ref 1806 1806 1809 fill 6(01) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 344 351 491 2417 fill 3 parameter bit(1) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" ref 1747 fill 4 based bit(1) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 344* 351* 491* 2417* fixed_str parameter char dcl 1569 ref 1566 1573 1574 1577 1586 1587 footer 000101 automatic char(74) dcl 1624 set ref 1646* 1647 1647* 1655* format_document_$string 000014 constant entry external dcl 146 ref 1788 format_document_options based structure level 1 dcl 2-12 format_document_version_2 constant fixed bin(17,0) initial dcl 2-63 ref 1770 formed_string based char packed unaligned dcl 1560 set ref 1491 1498 1572 1573 1574* 1580 1580 1580 1583 1583* 1585 1586 1587* 1588 1588 1590 1590* 1599 1600 1601* 1788* 1789* formed_string_array based char(1) array packed unaligned dcl 1560 set ref 730 750 from 1562 based structure array level 4 dcl 3-29 set ref 2473* galley_sw 3(02) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1775* get_ec_version_ 000016 constant entry external dcl 146 ref 1961 get_line_length_$switch 000020 constant entry external dcl 146 ref 1508 1508 1546 1546 1890 1890 2274 2274 2289 2289 hbound builtin function dcl 187 ref 1465 1473 1481 1486 1806 1934 2250 2627 hcom_cfix_validate_ 000024 constant entry external dcl 146 ref 2329 hcom_command_query_ 000022 constant entry external dcl 146 ref 2324 2349 2385 hcom_parse_ 000026 constant entry external dcl 146 ref 1029 1078 header 000124 automatic varying char(79) dcl 1624 set ref 1631* 1633* 1639* 1641* 1650* hyphenation_sw 3(12) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1784* i 000142 automatic fixed bin(24,0) dcl 134 set ref 367* 369 371 371 374 375 379 379 382 382 386 387 391 391 394 395 398* 462* 463 463 463 463 463 463 463 463 463 463 463 463 471* 489* 490 491* 508* 509 509* 608* 609 610 611* 612 669* 671 671 682* 683 718* 719 720 721* 722 842* 843 844 845* 846 847 848 1162* 1163 1163 1163 1163 1167 1167 1167 1173 1173 1173 1178 1180 1180 1184 1184 1184* 1187 1190* 1340* 1343 1345 1345 1347 1348* 1395* 1396* 1541* 1542 1543* 1651* 1652* 1663* 1664 1665 1665 1665 1668 1670 1671 1804* 1805 1813 1817 1821 1825 1829 1833 1837 1841 1845 1849 1853 1857 1861 1865 1869 1873 1877 1881* 2117* 2123 2124 2126 2128 2129 2130 2134 2137 2141 2142* 2159* 2160 2162 2163* 2170* 2171 2171 2173 2174 2176 2178 2179 2181 2183 2184 2186 2189 2190 2192 2194 2198 2201* 2214* 2216 2216 2217 2218 2219 2223 2224 2225 2226* 2248* 2249 2250 2251 2255 2257 2259* 2265* 2266 2267 2267 2269* 2283* 2284 2285* 2413* 2414 2416 2417 2421 2423 2425 2425 2430 2430 2434 2435 2437 2437 2442 2443 2445 2445* 2472* 2473 2473 2474 2474 2474 2476 2476 2479 2479* 2492* 2496 2498 2498 2498 2503 2503 2503 2508 2510 2513 2515 2517 2519 2527 2527 2540 2544 2547* icpt 1557(04) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2503 icpt 1560(04) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2503* in 346 based fixed bin(2,0) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 221 233 288 300 391 2346 2367* 2375* 2441 2445 in 1560(09) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2517* in 1557(09) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2517 index builtin function dcl 187 ref 330 582 585 608 611 614 632 636 636 636 653 664 666 669 670 681 681 681 682 689 718 721 724 734 743 773 773 773 781 837 839 839 842 862 864 864 887 887 890 890 890 893 893 893 896 896 896 929 939 939 939 956 956 956 961 971 980 980 1134 1206 1244 1663 1929 2186 input 343 based structure level 3 dcl 3-29 install_dt 40 parameter char(8) level 2 in structure "src" dcl 1300 in procedure "comments_comparable" ref 1308 install_dt 407 based char(8) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 394 2366* 2443 install_dt 40 parameter char(8) level 2 in structure "orig" dcl 1300 in procedure "comments_comparable" ref 1308 install_dt 41 based char(8) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 391 394* 463 463 1861 1865* 2129* 2192 2223 2224* 2443* 2445* 2498 2503 2517 2519 install_dt 41 based char(8) array level 3 in structure "orig_array" dcl 2651 in procedure "hcom_process_seg_" set ref 2129 install_dt 40 parameter char(8) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" set ref 1731 1735 1739* install_id 42 parameter varying char(24) level 2 in structure "orig" dcl 1300 in procedure "comments_comparable" ref 1308 install_id 43 based varying char(24) array level 3 in structure "orig_array" dcl 2651 in procedure "hcom_process_seg_" set ref 2128 2134 2137 install_id 42 parameter varying char(24) level 2 in structure "src" dcl 1300 in procedure "comments_comparable" ref 1308 install_id 411 based varying char(24) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 395 2194 2225 2352* 2354* 2354* 2358* 2358* 2442 install_id 43 based varying char(24) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 391 395* 463 1869* 1873* 2126 2128* 2134 2194 2225* 2442* 2445* install_id 42 parameter varying char(24) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" set ref 1741* ioa_ 000030 constant entry external dcl 146 ref 1035 1044 1084 1093 1384 1388 1401 1409 1510 1891 2243 2275 2363 2371 2389 2399 ioa_$nnl 000032 constant entry external dcl 146 ref 1547 2290 j 000143 automatic fixed bin(24,0) dcl 134 set ref 670* 671 671 1342* 1343 1345 1345 1347 1348* 1428* 1429* 1438* 1439* 1449* 1450* 1454* 1455* 1465* 1466* 1473* 1474* 1481* 1482* 1486* 1487* 1806* 1806* 1807 1809* 2122* 2123 2124 2128 2129 2134 2137 2141 2143* 2250* 2250* 2251 2255* 2479* 2480* 2525* 2526 2527 2527 2531* k 000144 automatic fixed bin(24,0) dcl 134 set ref 743* 744 746 746 2120* 2137 2168* 2173 2178 2183 2189 lang_array 1 based structure array level 3 dcl 1-43 ref 1934 lang_name 2 based varying char(8) array level 4 dcl 1-43 ref 1934 lang_type 1 based fixed bin(17,0) array level 4 dcl 1-43 ref 1946 language 000624 automatic varying char(8) dcl 1917 set ref 1932* 1934 1938 1941* 1948* languages based structure level 2 dcl 1-43 last_eq_orig_comment 000531 automatic fixed bin(17,0) dcl 1331 set ref 1338* 1342 1348* lbound builtin function dcl 187 ref 2627 length builtin function dcl 187 ref 623 632 636 651 653 653 664 664 677 677 710 710 746 746 760 773 788 801 843 844 866 882 884 939 939 961 961 1021 1070 1073 1204 1209 1258 1263 1270 1275 1572 1573 1573 1580 1580 1580 1582 1583 1583 1585 1586 1586 1588 1588 1589 1590 1590 1599 1600 1600 1644 1644 1647 1647 2323 2348 2382 2387 line_length 2 000161 automatic fixed bin(17,0) level 2 in structure "fdoc" dcl 2647 in procedure "hcom_process_seg_" set ref 1771* line_length parameter fixed bin(17,0) dcl 1767 in procedure "format_comment$fdoc" ref 1764 1771 literal_sw 1(05) 000172 automatic bit(1) initial level 3 in structure "query_info" packed packed unaligned dcl 5-16 in procedure "hcom_process_seg_" set ref 5-16* literal_sw 3(04) 000161 automatic bit(1) level 3 in structure "fdoc" packed packed unaligned dcl 2647 in procedure "hcom_process_seg_" set ref 1777* ll 000151 automatic fixed bin(17,0) dcl 1624 set ref 1636* 1644* 1658* ltrim builtin function dcl 187 ref 1033 1044 1044 1050 1050 1082 1093 1093 1099 1099 1694 2251 2267 matched 1560 based structure level 3 packed packed unaligned dcl 3-29 set ref 2495* 2540 2544 max_line_length_sw 3(08) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1780* maxlength builtin function dcl 187 ref 1044 1044 1050 1050 1093 1093 1099 1099 2312 2387 2389 name based fixed bin(17,0) level 4 dcl 3-29 ref 215 215 219 1058 1107 1136 1138 1157 1163 1167 1173 1180 1184 1345 1345 1372 2370 2540 2540 2540 new 1557(02) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2522 2536 new 1560(02) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2536* new_box based char packed unaligned dcl 2037 set ref 2058* no 1 parameter fixed bin(17,0) level 2 dcl 2556 set ref 2558* 2560 2562 2564 2566* 2576* null builtin function dcl 187 ref 201 209 5-16 5-16 5-16 1508 1508 1508 1508 1546 1546 1546 1546 1890 1890 1890 1890 2101 2274 2274 2274 2274 2289 2289 2289 2289 2487 2522 old 1560(01) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2537* old 1557(01) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2522 2537 op based structure level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" op 2 parameter fixed bin(2,0) level 2 in structure "arg_in" dcl 2556 in procedure "get_range" ref 2560 2562 2566 2566 2574 2576 2576 oper 000152 constant varying char(16) initial array dcl 3-177 set ref 1157* 1163* 1167* 1173* 1180* 1184* orig 165 based structure level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" orig parameter structure level 1 dcl 1300 in procedure "comments_comparable" ref 1296 1305 1314 orig_array based structure level 1 dcl 2651 set ref 212 212 orig_seg 2212 based structure level 2 dcl 3-29 set ref 211* 212* padding 1(07) 000172 automatic bit(29) initial level 3 packed packed unaligned dcl 5-16 set ref 5-16* path 165 based char(202) level 4 packed packed unaligned dcl 3-29 ref 290 457 1395 2099 2265 pathname_$component 000034 constant entry external dcl 146 ref 207 207 212 212 228 228 236 236 247 247 270 270 285 285 309 309 330 330 382 382 618 618 685 685 691 691 756 756 905 905 958 958 985 985 1025 1025 1035 1035 1039 1039 1044 1044 1050 1050 1058 1058 1062 1062 1084 1084 1088 1088 1093 1093 1099 1099 1107 1107 1110 1110 1384 1384 1388 1388 1401 1401 1401 1401 1409 1409 1510 1510 1510 1510 1517 1517 1547 1547 1810 1810 1929 1929 1938 1938 1941 1941 1948 1948 1957 1957 1962 1962 2108 2108 2154 2154 2207 2207 2243 2243 2275 2275 2290 2290 2371 2371 2389 2389 2430 2430 2566 2566 2576 2576 pgno_sw 3 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1773* pnotice_language_info based structure level 1 dcl 1-43 pnotice_language_info_$languages 000064 external static fixed bin(17,0) dcl 1-41 set ref 1934 1934 1937 1946 1953 1954 pnotice_mlr_ 000036 constant entry external dcl 146 ref 2052 pnotice_mrl_ 000040 constant entry external dcl 146 ref 2049 prompt_after_explanation 1(06) 000172 automatic bit(1) initial level 3 packed packed unaligned dcl 5-16 set ref 5-16* 2317* query_code 3 000172 automatic fixed bin(35,0) initial level 2 dcl 5-16 set ref 5-16* query_info 000172 automatic structure level 1 dcl 5-16 set ref 2324 2324 2349 2349 2385 2385 question_iocbp 4 000172 automatic pointer initial level 2 dcl 5-16 set ref 5-16* range 1562 based structure array level 3 dcl 3-29 renumber 6(02) based bit(1) level 4 packed packed unaligned dcl 3-29 ref 506 1172 repeat_time 10 000172 automatic fixed bin(71,0) initial level 2 dcl 5-16 set ref 5-16* reply 000100 automatic varying char dcl 2312 set ref 2324* 2326 2327 2349* 2351 2352 2385* 2387 2393 2395 rest based char packed unaligned dcl 548 set ref 595 623 623 630 643 651 653 664 704 710 760 798 801 961 rest_ch based char(1) array packed unaligned dcl 548 set ref 601 641 645 699 712 792 799 result 4 parameter fixed bin(17,0) level 2 in structure "arg_in" dcl 2556 in procedure "get_range" set ref 2560* 2562* 2564* 2566 2566* 2573 2574* 2576* 2583 result 1566 based fixed bin(17,0) array level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 2473* 2476 2479 result 1573 based fixed bin(17,0) array level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 2474* 2476* 2479 result based char packed unaligned dcl 1616 in procedure "hcom_process_seg_" set ref 1510* 1547* 1663 1665 1665 1665 1668 1674 1788* 1891* 2058 2275* 2290* result_array based char(1) array packed unaligned dcl 1616 set ref 1670 reverse builtin function dcl 187 ref 611 682 721 1694 1695 1932 1932 rtrim builtin function dcl 187 ref 887 887 1727 1727 save_footer 000152 automatic varying char(74) dcl 1624 set ref 1635* 1643* 1647 1647 save_length 000306 automatic fixed bin(21,0) dcl 539 set ref 770* 787* 787 792 793 967* 983* 983 989 991 save_ptr 000310 automatic pointer dcl 539 set ref 966* 990 search builtin function dcl 187 ref 1262 seg parameter structure level 1 dcl 530 in procedure "comment_parse" set ref 520 seg 2076 based structure level 2 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 206* 207* seg parameter structure level 1 dcl 1913 in procedure "get_language_info" set ref 1900 segment based char packed unaligned dcl 194 set ref 1029* 1078* select 343 based structure level 4 dcl 3-29 selected 5 based bit(1) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 369 398* 463 471* 490 1542 1805 2113* 2130* 2142* 2174* 2179* 2184* 2190* 2198* 2219* 2226* 2249 2284 2414 2467* 2471* 2480* 2496 2540* 2544* 2547 selected 5 based bit(1) array level 3 in structure "orig_array" dcl 2651 in procedure "hcom_process_seg_" set ref 2143* 2162* 2266 2487* 2526 2531* selected 353 based bit(1) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 337* selected 1557 based structure level 3 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 228 236 309 1517 2490 2540 seqno 3 based picture(4) array level 3 in structure "com_array" dcl 534 in procedure "comment_parse" set ref 1020* 1068* seqno 3 based picture(4) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 349 seqno 351 based picture(4) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 342* 349* set parameter fixed bin(2,0) level 2 in structure "arg_in" dcl 2556 in procedure "get_range" set ref 2558 2566* 2566 2574 2576* 2576 set 1567 based fixed bin(2,0) array level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 2474 set_return_arg 1756 based entry variable level 2 dcl 3-29 ref 245 283 902 1391 1405 1494 1525 2206 2241 2276 sm 343 based fixed bin(2,0) level 5 dcl 3-29 set ref 221 300 2380 2396* 2415 sort_items_$char 000066 constant entry external dcl 2621 ref 2632 source 7 based structure level 3 dcl 3-29 src parameter structure level 1 dcl 1300 ref 1296 1305 1314 src_array based structure level 1 dcl 3-189 set ref 207 207 src_copy based structure level 1 dcl 2613 status_code 2 000172 automatic fixed bin(35,0) initial level 2 dcl 5-16 set ref 5-16* string based char packed unaligned dcl 1006 in procedure "process_tokens" set ref 1029* 1078* string builtin function dcl 187 in procedure "hcom_process_seg_" ref 228 236 309 1517 2490 2540 2540 2544 sub_err_sw 3(10) 000161 automatic bit(1) level 3 packed packed unaligned dcl 2647 set ref 1782* substr builtin function dcl 187 set ref 611 623 623 636 651 682 721 744 744 746 746 760 773 788 801 866 882 884 939 1267 1574* 1580 1583* 1587* 1588 1590* 1601* 1647* 1665 1665 1665 1668 summary 51 parameter varying char(2000) level 2 in structure "src" dcl 1300 in procedure "comments_comparable" ref 1308 1317 summary 420 based varying char(2000) level 5 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 1044 1044 1050 1050 1093 1093 1099 1099 2312 2387 2389 2395* 2416 summary 51 parameter varying char(2000) level 2 in structure "orig" dcl 1300 in procedure "comments_comparable" ref 1308 1317 summary 52 based varying char(2000) array level 3 in structure "src_array" dcl 3-189 in procedure "hcom_process_seg_" set ref 1877* 1881* 2176 2416* summary 51 parameter varying char(2000) level 2 in structure "cmt" dcl 1690 in procedure "format_comments" set ref 1749* 1754* suppress_name_sw 1(01) 000172 automatic bit(1) initial level 3 packed packed unaligned dcl 5-16 set ref 5-16* 2316* suppress_spacing 1(04) 000172 automatic bit(1) initial level 3 packed packed unaligned dcl 5-16 set ref 5-16* switches 1 000172 automatic structure level 2 in structure "query_info" dcl 5-16 in procedure "hcom_process_seg_" switches 3 000161 automatic structure level 2 in structure "fdoc" dcl 2647 in procedure "hcom_process_seg_" set ref 1772* sys_info$max_seg_size 000054 external static fixed bin(35,0) dcl 178 ref 1787 temp_seg 2326 based structure level 2 dcl 3-29 text_pos 100 parameter fixed bin(21,0) level 2 in structure "seg" dcl 1913 in procedure "get_language_info" set ref 1924* 1961* 1965 1965* text_pos 100 parameter fixed bin(21,0) level 2 in structure "seg" dcl 530 in procedure "comment_parse" ref 699 701 to 1567 based structure array level 4 dcl 3-29 set ref 2474* type 77 parameter fixed bin(17,0) level 2 in structure "seg" dcl 530 in procedure "comment_parse" ref 593 955 955 type 1 based bit(1) level 4 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" ref 307 1035 1044 1084 1093 1134 2574 type 77 parameter fixed bin(17,0) level 2 in structure "seg" dcl 1913 in procedure "get_language_info" set ref 1946* 1948 1948 1948* 1956 type 2175 based fixed bin(17,0) level 3 in structure "d" dcl 3-29 in procedure "hcom_process_seg_" set ref 623 623 812 882 884 1630 1630 1660 1660 1665 unapv 1560(06) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2510* unapv 1557(06) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2510 unaud 1557(08) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2515 unaud 1560(08) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2515* unin 1560(10) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" set ref 2519* unin 1557(10) based bit(1) level 4 in structure "d" packed packed unaligned dcl 3-29 in procedure "hcom_process_seg_" ref 2519 unspec builtin function dcl 187 set ref 1769* valid 000145 automatic bit(1) packed unaligned dcl 134 set ref 2328* 2329* 2333* 2337 2353* 2354* 2358* 2362 value 347 based structure level 4 dcl 3-29 set ref 343 350 var_str parameter varying char dcl 1597 ref 1594 1600 1601 vdt 2 based entry variable level 3 dcl 3-29 ref 2333 2354 2358 vector 1 000102 automatic pointer array level 2 packed packed unaligned dcl 2609 set ref 2628* 2636 verify builtin function dcl 187 ref 595 643 704 798 845 1244 1253 1272 1281 version 000172 automatic fixed bin(17,0) level 2 dcl 5-16 set ref 2314* version_number 000161 automatic fixed bin(17,0) level 2 dcl 2647 set ref 1770* word 000440 automatic varying char(80) array dcl 1235 set ref 1251* 1261 1267 1267* 1281 1281 word_text based char packed unaligned dcl 1235 ref 1253 1258 1262 1263 1267 1270 1272 1275 word_text_arr based char(1) array packed unaligned dcl 1235 set ref 1257 1269 1274 yes_or_no_sw 1 000172 automatic bit(1) initial level 3 packed packed unaligned dcl 5-16 set ref 5-16* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AUDIT_FIELD_NAME internal static varying char(24) initial dcl 4-12 AUTHOR_FIELD_NAME internal static varying char(24) initial dcl 4-10 CHECK internal static fixed bin(17,0) initial dcl 3-146 COPYRIGHT internal static fixed bin(17,0) initial dcl 6-68 DISPLAY internal static fixed bin(17,0) initial dcl 3-146 FORMAT internal static fixed bin(17,0) initial dcl 3-146 NOCOMP internal static fixed bin(35,0) initial dcl 3-146 NONSTAR internal static fixed bin(35,0) initial dcl 3-146 NOTSET internal static fixed bin(17,0) initial dcl 3-146 PUBLIC_DOMAIN internal static fixed bin(17,0) initial dcl 6-70 Ppaths automatic pointer dcl 6-65 SET internal static fixed bin(2,0) initial dcl 3-146 STAR internal static fixed bin(35,0) initial dcl 3-146 STARSTAR internal static fixed bin(35,0) initial dcl 3-146 TRADE_SECRET internal static fixed bin(17,0) initial dcl 6-69 UNDEFINED internal static fixed bin(17,0) initial dcl 6-67 format_document_options_ptr automatic pointer dcl 2-62 format_document_version_1 internal static fixed bin(17,0) initial dcl 2-64 pnotice_paths based structure level 1 dcl 6-41 query_info_version_3 internal static fixed bin(17,0) initial dcl 5-45 query_info_version_4 internal static fixed bin(17,0) initial dcl 5-46 query_info_version_5 internal static fixed bin(17,0) initial dcl 5-47 query_info_version_6 internal static fixed bin(17,0) initial dcl 5-48 query_info_version_7 internal static fixed bin(17,0) initial dcl 5-49 temp_seg_array based pointer array dcl 3-29 NAMES DECLARED BY EXPLICIT CONTEXT. ADD_FIELDs 004125 constant entry internal dcl 360 ref 235 ADD_comment 003711 constant entry internal dcl 325 ref 225 CASE 000031 constant label array(0:9) dcl 1810 ref 1809 CHECK_FIELDs 004524 constant entry internal dcl 452 ref 253 COMPARE_modules 014076 constant entry internal dcl 1328 ref 257 290 457 DISPLAY 000017 constant label array(10) dcl 1374 ref 1372 END_CASE 021674 constant label dcl 1885 ref 1820 1828 1836 1844 1852 1860 1868 1876 1884 END_CK 007521 constant label dcl 908 ref 887 899 END_INSTALL_CK 025317 constant label dcl 2293 END_OPER 003574 constant label dcl 307 ref 226 240 250 254 259 261 264 275 305 FORMAT_CMTS 004707 constant entry internal dcl 483 ref 269 GET_fields 020750 constant entry internal dcl 1798 ref 277 INSTALL_ck 023077 constant entry internal dcl 2067 ref 293 INSTALL_values 023636 constant label dcl 2168 ref 2114 LINE_ERROR 007430 constant label dcl 902 set ref 882 884 890 893 896 OPER 000000 constant label array(10) dcl 221 ref 219 ORIG_CK 023232 constant label dcl 2117 ref 2101 REPLACE_FIELDs 026364 constant entry internal dcl 2410 ref 303 RETURN 003710 constant label dcl 318 ref 279 294 RE_APV 025373 constant label dcl 2324 ref 2337 RE_INSTALL 025632 constant label dcl 2349 ref 2364 2373 RE_SUMMARY 026165 constant label dcl 2385 ref 2391 2400 SRC_CK 023131 constant label dcl 2105 TYPE 000012 constant label array(5) dcl 595 ref 593 cfix_required 012517 constant entry internal dcl 1121 ref 1062 1110 check_error 004437 constant entry internal dcl 430 ref 228 236 247 270 285 309 330 382 618 685 691 756 905 958 985 1025 1039 1050 1058 1062 1088 1099 1107 1110 1157 1163 1167 1173 1180 1184 1517 1789 1810 1929 1938 1941 1948 1957 1962 2108 2154 2207 2278 2430 2566 2576 ck_begin_line 007235 constant entry internal dcl 879 ref 838 863 ck_history_cmt 007522 constant entry internal dcl 917 ref 607 717 ck_incl_file 007014 constant entry internal dcl 828 ck_incl_file$alm 007140 constant entry internal dcl 857 ref 714 ck_incl_file$pl1 007016 constant entry internal dcl 832 ref 603 cmt_renumber 004753 constant entry internal dcl 503 ref 267 comment_parse 005007 constant entry internal dcl 520 ref 207 212 comments_almost_equal 014035 constant entry internal dcl 1314 ref 1345 2124 comments_comparable 013724 constant entry internal dcl 1296 ref 1343 2123 2527 comments_equal 013754 constant entry internal dcl 1305 ref 1345 2141 2527 display_comments 014316 constant entry internal dcl 1360 ref 316 display_selected_comments 016201 constant entry internal dcl 1536 ref 1374 1522 end_parse1 006077 constant label dcl 695 ref 598 616 627 673 end_parse2 007013 constant label dcl 823 ref 708 710 754 762 819 field_check 012571 constant entry internal dcl 1149 ref 1115 form_string$fixed 016362 constant entry internal dcl 1566 ref 728 729 1427 1437 1448 1464 1472 1480 1656 1665 1668 1674 1696 1697 1698 1699 1700 1702 1704 1705 1706 1707 1710 1711 1712 1714 1718 1719 1720 1721 1724 1725 1726 1728 1732 1733 1734 1735 1738 1739 1740 1742 1745 1817 1818 1826 1833 1834 1842 1849 1850 1858 1865 1866 1874 1882 2253 2270 2286 form_string$fixed_line 016417 constant entry internal dcl 1577 ref 1431 1432 1441 1442 1452 1453 1468 1469 1476 1477 1484 1485 1499 1502 1654 1655 1692 1693 1746 1748 1750 1753 1756 1802 1807 2260 form_string$init 016540 constant entry internal dcl 1604 ref 727 1371 1649 1661 1801 2095 2282 form_string$var 016503 constant entry internal dcl 1594 ref 744 746 1650 1701 1713 1727 1741 1749 1754 1825 1841 1857 1873 1881 2251 2255 2267 format_comment$body 017401 constant entry internal dcl 1687 ref 1429 1433 1439 1443 1450 1455 1466 1474 1482 1487 1543 1652 2259 2269 2285 format_comment$fdoc 020534 constant entry internal dcl 1764 ref 1508 1546 1658 1890 2274 2289 format_comments 016556 constant entry internal dcl 1621 ref 313 2235 get_language_info 021753 constant entry internal dcl 1900 ref 206 211 get_range 027536 constant entry internal dcl 2553 ref 2473 2474 hcom_process_seg_ 002440 constant entry external dcl 96 init_structures 022700 constant entry internal dcl 1979 init_structures$array 022702 constant entry internal dcl 1982 ref 1019 1067 init_structures$orig_array 022760 constant entry internal dcl 2012 ref 210 init_structures$src_array 022750 constant entry internal dcl 2005 ref 200 insert_notice 022770 constant entry internal dcl 2025 ref 314 2236 line$cmt 013365 constant entry internal dcl 1199 ref 1015 line$new_cmt 013445 constant entry internal dcl 1226 ref 1016 process_tokens 010212 constant entry internal dcl 1003 ref 615 689 753 prompt_req 025321 constant entry internal dcl 2301 ref 221 233 288 300 select_comments 026646 constant entry internal dcl 2457 ref 215 sort_comments 030073 constant entry internal dcl 2593 ref 507 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 32342 32432 31713 32352 Length 33104 31713 70 436 427 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME hcom_process_seg_ 2656 external procedure is an external procedure. ADD_comment internal procedure shares stack frame of external procedure hcom_process_seg_. ADD_FIELDs internal procedure shares stack frame of external procedure hcom_process_seg_. check_error 92 internal procedure is called during a stack extension, and is declared options(variable). CHECK_FIELDs internal procedure shares stack frame of external procedure hcom_process_seg_. FORMAT_CMTS internal procedure shares stack frame of external procedure hcom_process_seg_. cmt_renumber internal procedure shares stack frame of external procedure hcom_process_seg_. comment_parse internal procedure shares stack frame of external procedure hcom_process_seg_. ck_incl_file internal procedure shares stack frame of external procedure hcom_process_seg_. ck_begin_line internal procedure shares stack frame of external procedure hcom_process_seg_. ck_history_cmt internal procedure shares stack frame of external procedure hcom_process_seg_. process_tokens internal procedure shares stack frame of external procedure hcom_process_seg_. cfix_required internal procedure shares stack frame of external procedure hcom_process_seg_. field_check internal procedure shares stack frame of external procedure hcom_process_seg_. line$cmt internal procedure shares stack frame of external procedure hcom_process_seg_. line$new_cmt internal procedure shares stack frame of external procedure hcom_process_seg_. comments_comparable internal procedure shares stack frame of external procedure hcom_process_seg_. COMPARE_modules internal procedure shares stack frame of external procedure hcom_process_seg_. display_comments internal procedure shares stack frame of external procedure hcom_process_seg_. display_selected_comments internal procedure shares stack frame of external procedure hcom_process_seg_. form_string$fixed 66 internal procedure is called during a stack extension. format_comments 140 internal procedure calls itself recursively. format_comment$fdoc 110 internal procedure is called by several nonquick procedures. GET_fields internal procedure shares stack frame of external procedure hcom_process_seg_. get_language_info internal procedure shares stack frame of external procedure hcom_process_seg_. init_structures internal procedure shares stack frame of external procedure hcom_process_seg_. insert_notice internal procedure shares stack frame of external procedure hcom_process_seg_. INSTALL_ck internal procedure shares stack frame of external procedure hcom_process_seg_. prompt_req 235 internal procedure uses auto adjustable storage. REPLACE_FIELDs internal procedure shares stack frame of external procedure hcom_process_seg_. select_comments internal procedure shares stack frame of external procedure hcom_process_seg_. get_range internal procedure shares stack frame of external procedure hcom_process_seg_. sort_comments 82 internal procedure uses auto adjustable storage. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME check_error 000100 Pcode check_error form_string$fixed 000100 Lorig form_string$fixed format_comments 000100 chr_cmtno format_comments 000101 footer format_comments 000124 header format_comments 000151 ll format_comments 000152 save_footer format_comments hcom_process_seg_ 000100 Sany_found hcom_process_seg_ 000101 Sblank_after hcom_process_seg_ 000102 Sblank_before hcom_process_seg_ 000103 Sfirst_cmt hcom_process_seg_ 000104 Sformat hcom_process_seg_ 000105 code hcom_process_seg_ 000106 current_date hcom_process_seg_ 000110 error_msg hcom_process_seg_ 000142 i hcom_process_seg_ 000143 j hcom_process_seg_ 000144 k hcom_process_seg_ 000145 valid hcom_process_seg_ 000146 Psegment hcom_process_seg_ 000150 Lsegment hcom_process_seg_ 000151 Serror_has_occurred hcom_process_seg_ 000152 Pformed_string hcom_process_seg_ 000154 Lformed_string hcom_process_seg_ 000156 Presult hcom_process_seg_ 000160 Lresult hcom_process_seg_ 000161 fdoc hcom_process_seg_ 000166 Psrc_array hcom_process_seg_ 000170 Porig_array hcom_process_seg_ 000172 query_info hcom_process_seg_ 000240 Sfound ADD_FIELDs 000300 Send_history_cmt comment_parse 000301 Sincl comment_parse 000302 Spnotice comment_parse 000303 Snopnotice comment_parse 000304 Sprt_path comment_parse 000305 Sstar_line comment_parse 000306 save_length comment_parse 000310 save_ptr comment_parse 000312 Prest comment_parse 000314 Lrest comment_parse 000315 Icmt comment_parse 000316 Pcomment comment_parse 000320 Lcomment comment_parse 000322 Pcomment_line comment_parse 000324 Lcomment_line comment_parse 000326 Pcopy comment_parse 000330 Lcopy comment_parse 000332 Pcopy_cmt comment_parse 000334 Lcopy_cmt comment_parse 000335 err_code comment_parse 000360 Shistory_cmt_bgn ck_history_cmt 000370 Lstring process_tokens 000372 Pstring process_tokens 000410 date_ck field_check 000412 comment_ck field_check 000422 Iline line$cmt 000432 Ibreak line$new_cmt 000433 Inonwhite line$new_cmt 000434 Iskip line$new_cmt 000435 Lword_text line$new_cmt 000436 Pword_text line$new_cmt 000440 word line$new_cmt 000512 Nwords line$new_cmt 000530 Scomparable COMPARE_modules 000531 last_eq_orig_comment COMPARE_modules 000544 Serrors display_comments 000545 Iorig display_comments 000546 Isrc display_comments 000547 Nskip_src display_comments 000550 Nskip_orig display_comments 000612 comp_or_ent get_language_info 000622 Acode get_language_info 000623 Ilang get_language_info 000624 language get_language_info 000646 Psource insert_notice 000650 Ptarget insert_notice 000660 Snew_comment INSTALL_ck 000661 Sequal INSTALL_ck 000662 Serrors INSTALL_ck 000663 Sinstall INSTALL_ck 000664 Sinstall_match INSTALL_ck 000665 Sapprove INSTALL_ck 000716 Sequal select_comments prompt_req 000100 reply prompt_req sort_comments 000100 Psort_copy sort_comments 000102 V sort_comments 000102 Idx1 sort_comments THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as alloc_char_temp realloc_char_temp cat_realloc_chars call_ent_var_desc call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_2 alloc_auto_adj shorten_stack ext_entry int_entry int_entry_desc reverse_cs set_chars_eis index_chars_eis any_to_any_truncate_ unpack_picture fetch_chars_eis index_before_cs clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_list_ptr cu_$arg_ptr cu_$generate_call date_time_$format format_document_$string get_ec_version_ get_line_length_$switch hcom_cfix_validate_ hcom_command_query_ hcom_parse_ ioa_ ioa_$nnl pathname_$component pnotice_mlr_ pnotice_mrl_ sort_items_$char THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_file_name error_table_$bigarg error_table_$improper_data_format error_table_$recoverable_error pnotice_language_info_$languages sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 96 002434 428 002445 5 16 002446 200 002500 201 002501 202 002503 203 002546 206 002547 207 002560 209 002634 210 002645 211 002646 212 002657 215 002733 217 002745 219 002747 221 002753 225 002771 226 002773 228 002774 233 003074 235 003111 236 003113 240 003215 243 003216 245 003221 247 003237 250 003314 253 003315 254 003317 257 003320 259 003321 261 003322 264 003323 267 003324 269 003325 270 003327 274 003412 275 003414 277 003415 279 003416 281 003417 283 003422 285 003437 286 003517 288 003520 290 003533 293 003545 294 003546 298 003547 300 003552 303 003572 305 003573 307 003574 309 003602 313 003701 314 003705 316 003706 318 003710 325 003711 330 003713 337 004017 338 004024 339 004031 340 004033 341 004035 342 004036 343 004042 344 004051 345 004057 347 004060 348 004061 349 004063 350 004111 351 004117 354 004124 360 004125 366 004127 367 004133 368 004143 369 004144 371 004151 374 004175 375 004203 376 004207 379 004211 382 004231 386 004326 387 004341 388 004347 391 004351 394 004400 395 004404 396 004412 398 004414 399 004420 401 004433 403 004435 430 004436 439 004444 440 004464 441 004466 442 004471 443 004474 444 004520 452 004524 457 004526 461 004540 462 004545 463 004563 471 004677 472 004700 473 004701 477 004704 479 004706 483 004707 488 004711 489 004715 490 004725 491 004733 492 004743 494 004750 496 004752 503 004753 506 004754 507 004762 508 004770 509 004777 510 005004 512 005006 520 005007 570 005020 571 005023 572 005024 573 005030 575 005031 576 005033 578 005035 579 005036 580 005037 582 005040 585 005063 587 005103 590 005130 593 005154 595 005157 598 005172 601 005173 602 005177 603 005204 607 005207 608 005214 609 005227 610 005236 611 005240 612 005257 614 005262 615 005271 616 005273 618 005274 621 005353 623 005354 626 005402 627 005405 630 005406 631 005410 632 005412 633 005423 635 005425 636 005430 641 005465 642 005476 643 005500 644 005513 645 005514 646 005520 648 005525 649 005526 651 005527 652 005537 653 005540 654 005552 655 005553 657 005554 659 005555 660 005560 663 005564 664 005566 665 005602 666 005604 667 005615 669 005620 670 005626 671 005635 672 005643 673 005646 676 005647 677 005651 679 005657 681 005661 682 005706 683 005726 684 005731 685 005732 689 006007 691 006020 695 006077 699 006100 701 006105 703 006112 704 006113 708 006127 710 006130 712 006135 713 006142 714 006144 717 006147 718 006154 719 006167 720 006176 721 006200 722 006217 724 006222 725 006231 726 006235 727 006254 728 006261 729 006274 730 006306 732 006317 733 006323 734 006325 735 006336 736 006337 737 006341 738 006342 740 006343 741 006352 742 006354 743 006355 744 006366 746 006411 748 006441 749 006443 750 006445 751 006470 752 006472 753 006473 754 006475 756 006476 759 006555 760 006556 761 006567 762 006572 765 006573 766 006575 767 006576 768 006600 769 006602 770 006604 771 006605 773 006606 778 006642 780 006644 781 006646 782 006657 784 006663 786 006666 787 006670 788 006672 789 006702 792 006707 793 006720 794 006722 797 006723 798 006724 799 006740 800 006744 801 006751 804 006763 807 006764 808 006765 810 006767 811 006773 812 006774 813 007002 815 007007 819 007012 823 007013 828 007014 832 007015 835 007017 836 007022 837 007024 838 007036 839 007037 842 007056 843 007067 844 007077 845 007104 846 007116 847 007117 848 007123 850 007127 852 007130 853 007134 854 007135 855 007137 857 007140 860 007141 861 007144 862 007146 863 007160 864 007161 866 007200 870 007211 871 007222 872 007224 874 007225 875 007227 876 007231 877 007234 879 007235 882 007236 884 007251 887 007264 890 007330 893 007355 896 007402 899 007427 902 007430 905 007442 908 007521 917 007522 923 007524 924 007525 925 007527 927 007531 928 007540 929 007542 930 007553 931 007554 932 007556 933 007557 935 007560 937 007574 939 007576 944 007632 946 007633 949 007643 950 007664 951 007666 952 007672 953 007673 955 007675 956 007702 958 007730 961 010005 962 010021 963 010022 966 010023 967 010025 968 010026 969 010027 970 010036 971 010040 972 010052 973 010053 974 010055 975 010056 977 010057 978 010066 979 010070 980 010071 983 010111 984 010113 985 010114 989 010175 990 010201 991 010203 994 010204 1003 010212 1010 010213 1011 010215 1012 010216 1013 010220 1015 010223 1016 010231 1017 010236 1018 010240 1019 010244 1020 010254 1021 010266 1022 010272 1023 010273 1025 010274 1029 010355 1032 010503 1033 010516 1034 010555 1035 010561 1039 010645 1042 010733 1043 010734 1044 010736 1050 011072 1055 011231 1058 011232 1062 011320 1066 011413 1067 011416 1068 011427 1069 011444 1070 011446 1072 011451 1073 011452 1075 011456 1078 011457 1081 011605 1082 011620 1083 011657 1084 011663 1088 011747 1091 012035 1092 012036 1093 012040 1099 012174 1104 012333 1107 012334 1110 012422 1115 012515 1117 012516 1121 012517 1134 012521 1136 012540 1138 012551 1143 012563 1149 012571 1155 012572 1156 012600 1157 012602 1162 012666 1163 012677 1167 012772 1172 013070 1173 013076 1178 013176 1180 013177 1184 013266 1187 013351 1189 013352 1190 013353 1192 013362 1194 013364 1199 013365 1204 013367 1206 013376 1207 013410 1208 013414 1209 013415 1210 013417 1211 013420 1213 013421 1214 013422 1215 013425 1216 013435 1217 013437 1219 013440 1226 013445 1244 013447 1248 013505 1249 013506 1250 013510 1251 013511 1253 013523 1254 013537 1256 013542 1257 013544 1258 013550 1261 013555 1262 013563 1263 013577 1265 013603 1266 013605 1267 013606 1269 013625 1270 013632 1272 013637 1273 013653 1274 013654 1275 013660 1276 013665 1277 013666 1279 013667 1281 013670 1283 013716 1296 013724 1302 013726 1305 013754 1308 013756 1314 014035 1317 014037 1321 014071 1328 014076 1334 014077 1336 014114 1338 014130 1340 014131 1341 014141 1342 014142 1343 014155 1344 014201 1345 014203 1347 014272 1348 014300 1351 014311 1352 014313 1354 014315 1360 014316 1371 014320 1372 014324 1374 014330 1379 014333 1381 014334 1383 014335 1384 014343 1388 014414 1391 014462 1393 014501 1395 014502 1396 014517 1398 014526 1400 014530 1401 014532 1405 014636 1409 014650 1413 014723 1415 014724 1417 014726 1418 014727 1419 014730 1420 014737 1422 014746 1423 014747 1424 014751 1426 014764 1427 014772 1428 015002 1429 015015 1430 015025 1431 015027 1432 015041 1433 015054 1434 015065 1435 015073 1436 015074 1437 015102 1438 015112 1439 015123 1440 015133 1441 015135 1442 015147 1443 015162 1444 015173 1445 015201 1446 015202 1447 015203 1448 015207 1449 015217 1450 015233 1451 015243 1452 015245 1453 015257 1454 015272 1455 015303 1456 015313 1457 015315 1458 015323 1461 015324 1462 015326 1463 015332 1464 015340 1465 015350 1466 015361 1467 015371 1468 015373 1469 015405 1470 015420 1471 015421 1472 015427 1473 015437 1474 015447 1475 015457 1476 015461 1477 015473 1478 015506 1479 015507 1480 015513 1481 015523 1482 015533 1483 015543 1484 015545 1485 015557 1486 015572 1487 015603 1488 015613 1490 015615 1491 015622 1494 015631 1496 015643 1498 015644 1499 015652 1502 015672 1505 015705 1506 015707 1507 015711 1508 015712 1510 015735 1515 016045 1517 016046 1522 016151 1523 016154 1525 016155 1529 016176 1531 016177 1533 016200 1536 016201 1541 016212 1542 016221 1543 016226 1545 016234 1546 016236 1547 016261 1550 016360 1566 016361 1572 016375 1573 016400 1574 016402 1575 016415 1577 016416 1580 016432 1582 016442 1583 016443 1585 016447 1586 016451 1587 016453 1588 016466 1589 016474 1590 016475 1592 016501 1594 016502 1599 016516 1600 016521 1601 016525 1602 016536 1604 016537 1607 016545 1608 016547 1610 016554 1621 016555 1630 016563 1631 016574 1633 016651 1635 016715 1636 016745 1637 016750 1639 016751 1641 017001 1643 017024 1644 017032 1646 017040 1647 017043 1649 017055 1650 017062 1651 017073 1652 017104 1653 017115 1654 017120 1655 017133 1656 017144 1658 017160 1660 017167 1661 017200 1662 017205 1663 017211 1664 017223 1665 017224 1668 017262 1670 017315 1671 017331 1672 017333 1674 017334 1675 017367 1677 017372 1678 017373 1679 017375 1681 017377 1687 017400 1692 017406 1693 017421 1694 017434 1695 017477 1696 017506 1697 017520 1698 017533 1699 017546 1700 017560 1701 017573 1702 017606 1703 017621 1704 017631 1705 017644 1706 017655 1707 017670 1710 017715 1711 017730 1712 017743 1713 017756 1714 017771 1717 020004 1718 020014 1719 020027 1720 020040 1721 020053 1724 020100 1725 020113 1726 020126 1727 020141 1728 020175 1731 020211 1732 020221 1733 020234 1734 020245 1735 020260 1738 020305 1739 020320 1740 020333 1741 020346 1742 020361 1745 020374 1746 020407 1747 020422 1748 020427 1749 020442 1750 020455 1751 020470 1753 020471 1754 020504 1756 020517 1757 020532 1764 020533 1769 020541 1770 020545 1771 020547 1772 020552 1773 020606 1774 020610 1775 020612 1776 020614 1777 020616 1778 020620 1779 020622 1780 020624 1781 020626 1782 020630 1783 020632 1784 020634 1786 020636 1787 020643 1788 020646 1789 020706 1792 020747 1798 020750 1801 020751 1802 020755 1804 020767 1805 020777 1806 021004 1807 021016 1809 021033 1810 021041 1813 021115 1817 021141 1818 021156 1820 021170 1821 021171 1825 021211 1826 021226 1828 021240 1829 021241 1833 021262 1834 021277 1836 021311 1837 021312 1841 021332 1842 021347 1844 021361 1845 021362 1849 021403 1850 021420 1852 021432 1853 021433 1857 021453 1858 021470 1860 021502 1861 021503 1865 021524 1866 021541 1868 021553 1869 021554 1873 021574 1874 021611 1876 021623 1877 021624 1881 021644 1882 021661 1884 021673 1885 021674 1888 021676 1889 021700 1890 021705 1891 021730 1894 021752 1900 021753 1923 021755 1924 021757 1925 021760 1927 021770 1929 021773 1932 022061 1934 022112 1936 022135 1937 022137 1938 022143 1941 022230 1946 022313 1948 022323 1953 022416 1954 022433 1956 022441 1957 022444 1961 022530 1962 022566 1965 022646 1967 022655 1969 022670 1972 022677 1979 022700 1982 022701 1987 022704 1988 022711 1989 022715 1990 022716 1991 022717 1992 022720 1993 022721 1994 022722 1995 022724 1996 022725 1997 022727 1998 022730 1999 022732 2000 022733 2001 022734 2003 022747 2005 022750 2008 022751 2009 022756 2010 022757 2012 022760 2015 022761 2016 022766 2017 022767 2025 022770 2041 022771 2043 022776 2045 023002 2049 023006 2052 023034 2056 023060 2058 023067 2061 023076 2067 023077 2089 023100 2090 023101 2091 023103 2092 023104 2093 023105 2094 023106 2095 023107 2099 023113 2101 023123 2105 023131 2107 023133 2108 023135 2111 023213 2113 023214 2114 023231 2117 023232 2120 023241 2121 023242 2122 023243 2123 023255 2124 023301 2126 023325 2128 023337 2129 023354 2130 023361 2131 023363 2133 023364 2134 023365 2136 023400 2137 023402 2139 023446 2141 023447 2142 023477 2143 023503 2144 023507 2147 023511 2149 023515 2150 023517 2152 023521 2153 023523 2154 023525 2159 023606 2160 023615 2161 023622 2162 023624 2163 023626 2166 023634 2168 023636 2170 023637 2171 023647 2172 023667 2173 023671 2174 023707 2176 023711 2177 023717 2178 023721 2179 023737 2181 023741 2182 023754 2183 023756 2184 023774 2186 023776 2188 024014 2189 024016 2190 024034 2192 024036 2194 024047 2197 024061 2198 024063 2201 024064 2203 024074 2205 024076 2206 024102 2207 024117 2214 024176 2215 024207 2216 024217 2217 024240 2218 024243 2219 024251 2220 024253 2223 024255 2224 024270 2225 024273 2226 024301 2227 024303 2229 024305 2231 024307 2234 024313 2235 024315 2236 024321 2239 024322 2240 024325 2241 024333 2243 024350 2246 024414 2248 024417 2249 024427 2250 024435 2251 024460 2253 024551 2255 024564 2256 024605 2257 024607 2259 024620 2260 024627 2263 024641 2265 024643 2266 024661 2267 024670 2269 024767 2270 025001 2272 025011 2274 025013 2275 025036 2276 025113 2278 025132 2279 025153 2282 025154 2283 025160 2284 025167 2285 025176 2286 025205 2288 025215 2289 025217 2290 025242 2293 025317 2301 025320 2312 025326 2324 025336 2349 025341 2385 025344 2314 025347 2315 025352 2316 025353 2317 025355 2318 025357 2321 025361 2322 025367 2323 025371 2324 025373 2326 025432 2327 025440 2328 025454 2329 025456 2333 025527 2337 025574 2339 025600 2340 025606 2341 025610 2342 025611 2346 025617 2347 025626 2348 025630 2349 025632 2351 025666 2352 025674 2353 025710 2354 025712 2358 025761 2362 026025 2363 026031 2364 026050 2366 026051 2367 026057 2368 026061 2370 026062 2371 026070 2373 026135 2375 026136 2380 026141 2381 026150 2382 026152 2383 026154 2384 026160 2385 026165 2387 026222 2389 026225 2391 026303 2393 026304 2395 026312 2396 026340 2397 026345 2399 026346 2400 026362 2404 026363 2410 026364 2413 026365 2414 026375 2415 026402 2416 026411 2417 026420 2420 026424 2421 026427 2423 026436 2424 026442 2425 026443 2429 026452 2430 026455 2434 026553 2435 026570 2436 026574 2437 026575 2441 026604 2442 026612 2443 026624 2444 026630 2445 026631 2449 026643 2451 026645 2457 026646 2463 026650 2465 026654 2466 026656 2467 026663 2468 026701 2469 026706 2471 026707 2472 026725 2473 026737 2474 026754 2476 026773 2479 026775 2480 027011 2481 027015 2482 027022 2483 027024 2487 027026 2490 027047 2491 027062 2492 027065 2495 027075 2496 027130 2497 027135 2498 027141 2503 027201 2508 027241 2510 027251 2513 027261 2515 027271 2517 027301 2519 027311 2522 027321 2524 027330 2525 027331 2526 027343 2527 027350 2531 027417 2532 027424 2535 027425 2536 027427 2537 027445 2540 027455 2544 027476 2547 027505 2549 027525 2551 027527 2553 027536 2558 027540 2560 027546 2562 027556 2564 027564 2566 027566 2573 027721 2574 027725 2576 027744 2583 030065 2593 030072 2609 030100 2623 030106 2624 030114 2626 030116 2627 030120 2628 030127 2630 030136 2632 030140 2635 030155 2636 030165 2637 030175 2639 030177 2641 030202 ----------------------------------------------------------- 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