COMPILATION LISTING OF SEGMENT plio2_put_util_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1131.01_Tue_mdt Options: optimize map 1 /****^ ****************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* ****************************************************** */ 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(88-04-06,Huen), approve(88-04-06,MCR7871), audit(88-04-13,RWaters), 14* install(88-04-26,MR12.2-1043): 15* Add comments for PL/1 bug 2140 and 2152. 16* END HISTORY COMMENTS */ 17 18 19 plio2_put_util_:proc options(support); 20 21 22 /* updated 73-12-6 */ 23 /* 88-04-06: Insert a comment to warn users about the obsoletion 24* of the modules by SHuen */ 25 /* 77-05-26: to fix 1626 by RAB */ 26 /* 76-09-08: changed to use iox_$put_chars call forwarder */ 27 /* 73-12-6: changed over for iox_ */ 28 /* 73-10-30: fixed for new splitting rules 29* and an entry for clearing output buffers introduced. */ 30 /* 9-27-72: finished internal-proceduring; added */ 31 /* 9-7-72: began internal-proceduring it and fixed bug in put_normal_char */ 32 /* 1-28-72: pageno stuff added */ 33 /*1-21-72: There should no longer be non-explicit files */ 34 /* 8-2-71: slight fix to handling of SKIP by put_prep */ 35 36 37 /* plio2_put_util_$ 38* contains the entries: 39* put_prep_(psp) 40* put_terminate_(psp) 41* 42* put_copy_(psp,n) 43* 44* put_page_(psp) 45* put_skip_(psp,n) 46* put_line_(psp,n) 47* put_column_(psp,n) 48* put_field_(psp,csp,csl) 49* 50* and, internally, the PUT_PUBLISH code which includes 51* the code for the host interface procedure WRITE_HOST. 52* 53* This is the only procedure in the stream-directed output 54* package which actually touches the output stream, that is, 55* actually writes. 56* 57* 1975: In order to improve performance, R.Schoeman has 58* reimplemented pl1 stream output in the operators which is 59* resided in bound_library_wired_. Therefore most of the 60* modules in this program for stream output has been obsoleted. 61* For example, the put_field_ module is rewritten in put_field_.alm 62* */ 63 64 65 /* automatic */ 66 67 dcl (pspp,psp,sptr,fsbp,fieldp,fieldpp) ptr; 68 dcl (erno,nn,skip_count,target_line,fieldl,fieldll,/*col_no,*/blanks_out,blanks_left) fixed bin(15); 69 dcl (pfstart,kkolx,sl,si,sll,shortline,/*iskip,*/testkol) fixed bin(15); 70 dcl (x,y) char(1) aligned; 71 72 /* based */ 73 74 dcl based_int fixed bin (35) based; 75 dcl p_vector (100) ptr based; 76 77 /* builtins */ 78 79 dcl (addr, addrel, divide, min, mod, null, substr, string) builtin; 80 81 /* internal static */ 82 83 dcl NL char(1) aligned static internal init(" 84 "); 85 dcl TAB char(1) aligned static internal init(" "); 86 dcl BL char(1) aligned static internal init(" "); 87 dcl SEMI char(1) aligned static internal init(";"); 88 dcl new_line_line char(100) aligned static internal init((100)" 89 "); 90 dcl blank_line char(100) aligned static internal init(" "); 91 92 93 dcl 1 putfab2 aligned static internal, 94 2 pfs bit(36) aligned init("001000101"b), 95 2 pfn char(32) aligned init(" "), 96 2 (pfbs,pfls,pfps) fixed bin(35) init(0); 97 98 dcl ybuf char(1000) aligned based(sptr); 99 100 dcl ioa_ ext entry options(variable); 101 dcl put_data_block_all_ entry (ptr); 102 dcl plio2_signal_$s_ ext entry(ptr,char(*),char(*),fixed bin(15)); 103 dcl iox_$put_chars entry (ptr, ptr, fixed bin(21), fixed bin(35)); 104 dcl plio2_signal_$s_r_ ext entry(ptr,char(*),char(*),fixed bin(15)); 105 dcl plio2_open_$open_implicit_ ext entry(ptr); 106 dcl ctl_char$cr char(1) ext; 107 dcl ctl_char$np char(1) ext; 108 dcl iocb_p ptr; 109 dcl iocb_status fixed bin(35); 110 dcl plio2_data_$max_page_size fixed bin(35) external; 111 112 /* include files */ 113 1 1 /* BEGIN INCLUDE FILE ... plio2_fsb.incl.pl1 */ 1 2 /* format: style3,idind30 */ 1 3 1 4 declare 1 fsb aligned based (fsbp), 1 5 2 switch aligned, 1 6 3 zot (2) bit (1) unaligned, 1 7 3 version_2 bit (1) unaligned, 1 8 3 open bit (1) unaligned, 1 9 3 print bit (1) unaligned, 1 10 3 input bit (1) unaligned, 1 11 3 output bit (1) unaligned, 1 12 3 update bit (1) unaligned, 1 13 3 stream bit (1) unaligned, 1 14 3 notkeyed bit (1) unaligned, 1 15 3 record bit (1) unaligned, 1 16 3 sequential bit (1) unaligned, 1 17 3 direct bit (1) unaligned, 1 18 3 interactive bit (1) unaligned, 1 19 3 not_used_1 bit (1) unaligned, 1 20 3 not_used_2 bit (1) unaligned, 1 21 3 stringvalue bit (1) unaligned, 1 22 3 keyed bit (1) unaligned, 1 23 3 namelist bit (1) unaligned, 1 24 3 implementation bit (1) unaligned, 1 25 3 not_used_4 bit (1) unaligned, /* old get-input eof flag */ 1 26 3 transmit_error bit (1) unaligned, 1 27 3 buffer_in_use bit (1) unaligned, 1 28 3 copy bit (1) unaligned, 1 29 3 detach bit (1) unaligned, 1 30 3 te_hold bit (1) unaligned, 1 31 3 not_used_5 bit (1) unaligned, 1 32 3 internal bit (1) unaligned, 1 33 3 threaded bit (1) unaligned, 1 34 3 fsb_in_use bit (1) unaligned, 1 35 3 console bit (1) unaligned, 1 36 3 emptyline bit (1) unaligned, 1 37 3 iox_close bit (1) unaligned, 1 38 3 xxx4 bit (1) unaligned, 1 39 3 xxx5 bit (1) unaligned, 1 40 3 xxx6 bit (1) unaligned, 1 41 2 nono aligned, 1 42 3 bit_string bit (1) unaligned, 1 43 3 not_used_3 bit (1) unaligned, 1 44 3 read bit (1) unaligned, 1 45 3 write bit (1) unaligned, 1 46 3 rewrite bit (1) unaligned, 1 47 3 delete bit (1) unaligned, 1 48 3 locate bit (1) unaligned, 1 49 3 key bit (1) unaligned, 1 50 3 keyto bit (1) unaligned, 1 51 3 keyfrom bit (1) unaligned, 1 52 3 set bit (1) unaligned, 1 53 3 into bit (1) unaligned, 1 54 3 ignore bit (1) unaligned, 1 55 3 from bit (1) unaligned, 1 56 3 nofrom bit (1) unaligned, 1 57 3 nokey bit (1) unaligned, 1 58 3 nokeyfrom bit (1) unaligned, 1 59 3 nolock bit (1) unaligned, 1 60 2 lsep fixed bin (15), /* (1,COMMA)(2,BL)(3,TAB)(4,NL)(5,SEMI) */ 1 61 2 iocb_p ptr unaligned, /* identifies data_set to iox_ */ 1 62 2 blc fixed bin (21), /* buffer's last character (input) */ 1 63 2 bsize fixed bin (21), /* size of buffer */ 1 64 2 bptr ptr, /* address of buffer */ 1 65 2 bnc fixed bin (15), /* next character in buffer */ 1 66 2 kol fixed bin (15), /* last column read from or written into */ 1 67 2 lsize fixed bin (15), /* line size (output) */ 1 68 2 lineno fixed bin (15), /* current line (output) - starts at 1 on each new page */ 1 69 2 psize fixed bin (35), /* page size (output) */ 1 70 2 pageno fixed bin (15), /* current page number, starts at 1 */ 1 71 2 limit fixed bin (15), 1 72 2 lnzc fixed bin (35), 1 73 2 filename char (32) aligned, /* declared file name */ 1 74 2 title char (32) unaligned,/* Multics I/O switch */ 1 75 2 fsb_thread ptr, 1 76 2 buffer (212) fixed bin (15), 1 77 2 path_name char (168) unal, /* title option */ 1 78 2 declared_attributes (2) bit (36) aligned; 1 79 1 80 declare xbuf char (1000) unaligned based (fsb.bptr); 1 81 1 82 /* END INCLUDE FILE ... plio2_fsb.incl.pl1 */ 114 2 1 /* BEGIN INCLUDE FILE ... plio2_ps.incl.pl1 */ 2 2 /* Stream I/O data block used by PL/I I/O runtime routines. 2 3* 2 4* Modified: 31 January 1978 by RAB to change plio2_data_$fsb_thread to plio2_data_fsb_thread_ 2 5**/ 2 6 /* format: style3,idind30 */ 2 7 2 8 /* based */ 2 9 2 10 declare 1 ps aligned based (psp),/* items set NORMALLY by compiled procedures */ 2 11 2 stack_frame_p ptr, /* items set in block prologue */ 2 12 2 ST_top_p ptr, 2 13 2 ST_block_p ptr, 2 14 2 format_area_p ptr, 2 15 2 ss_list_p ptr, 2 16 2 ab_return, /* items set in prep call */ 2 17 3 abret (3) ptr, 2 18 2 source_p ptr, /* addr(fakefsb) for string option, 2 19* addr(file) for explicit file option */ 2 20 2 special_list_p ptr, /* addr(OKlist) for get data, addr(format_list) for edit */ 2 21 2 copy_file_p ptr, 2 22 2 job aligned, 2 23 3 explicit_file bit (1) unal, 2 24 3 string bit (1) unal, 2 25 3 varying_string bit (1) unal, 2 26 3 data bit (1) unal, 2 27 3 edit bit (1) unal, 2 28 3 list bit (1) unal, 2 29 3 get bit (1) unal, 2 30 3 put bit (1) unal, 2 31 3 page bit (1) unal, 2 32 3 line bit (1) unal, 2 33 3 skip bit (1) unal, 2 34 3 copy bit (1) unal, 2 35 3 p1p2 bit (1) unal, 2 36 3 bit_string bit (1) unal, /* for environment(stringvalue) */ 2 37 3 char_string bit (1) unal, 2 38 3 read bit (1) unal, 2 39 3 write bit (1) unal, 2 40 3 rewrite bit (1) unal, 2 41 3 delete bit (1) unal, 2 42 3 locate bit (1) unal, 2 43 3 key bit (1) unal, 2 44 3 keyto bit (1) unal, 2 45 3 keyfrom bit (1) unal, 2 46 3 set bit (1) unal, 2 47 3 into bit (1) unal, 2 48 3 ignore bit (1) unal, 2 49 3 from bit (1) unal, 2 50 3 version bit (6) unal, 2 51 3 not_byte_buffer bit (1) unal, 2 52 3 pad1 bit (1) unal, 2 53 3 packed_ptr bit (1) unal, 2 54 2 number fixed bin (15), 2 55 2 value_p ptr, /* items set NORMALLY by compiled procedures per transmission */ 2 56 2 descriptor bit (36) aligned, 2 57 2 length fixed bin (15), /* may be swallowed into descriptor */ 2 58 2 top_half bit (18) unal, 2 59 2 offset bit (18) unal, 2 60 2 prep fixed bin (15), /* items treated ABNORMALLY, written by user and PLIO */ 2 61 2 new_format fixed bin (15), 2 62 2 switch aligned, /* items used by PLIO and not touched by compiled procedures */ 2 63 3 first_field bit (1) unal, 2 64 3 file bit (1) unal, 2 65 3 transmit_error bit (1) unal, 2 66 3 semi_sep bit (1) unal, 2 67 3 pad2 bit (32) unal, 2 68 2 file_p ptr, 2 69 2 fsbp ptr, 2 70 2 auxp ptr, /* used as addr(ldidata) for GETs */ 2 71 2 fabp ptr, 2 72 2 fab2p ptr, 2 73 2 vp ptr, 2 74 2 descr bit (36) aligned, 2 75 2 start_copy fixed bin (15), 2 76 2 quick_stream_storage, 2 77 3 a_stored fixed bin (35), 2 78 3 q_stored fixed bin (35); 2 79 2 80 /* external static */ 2 81 2 82 declare ( 2 83 plio2_data_$pspstat, 2 84 plio2_data_$fsbpstat, 2 85 plio2_data_$badfsbp, 2 86 plio2_data_$fabpstat, 2 87 plio2_data_$fab2pstat, 2 88 plio2_data_$pliostringfsbp 2 89 ) ptr external static; 2 90 2 91 dcl plio2_data_fsb_thread_ ptr ext static initial (null); 2 92 /* *system var */ 2 93 2 94 declare ( 2 95 plio2_data_$badjob bit (36) aligned, 2 96 plio2_data_$undef_file_sw bit (1) aligned 2 97 ) external static; 2 98 2 99 /* END INCLUDE FILE ... plio2_ps.incl.pl1 */ 115 116 117 /* program */ 118 119 /* PREP */ 120 121 put_prep_:entry(pspp); 122 psp=pspp; 123 call put_prep; 124 return; 125 126 127 put_prep:proc; 128 /* By a revision of pl1_operators_'s entry 129* stream_prep, put_prep_ will be called before 130* any call to put_terminate_ or the transmission 131* entries. Thus there is less need to keep the 132* historical test of the prep_sw and call to 133* put_prep_ in these routines. The reason for 134* putting back the "prep_call" which was so 135* carefully removed in the original design is to 136* assure that the output file is open BEFORE the 137* first element for transmission is evaluated. */ 138 plio2_data_$pspstat=psp; 139 ps.prep=0; 140 string(ps.switch)="0"b; 141 142 if ps.job.string then 143 do; 144 /* STRING 145* OPTION */ 146 plio2_data_$pliostringfsbp, 147 plio2_data_$fsbpstat, 148 ps.fsbp, 149 fsbp=ps.source_p; 150 151 bnc=1; 152 blc,kol=0; 153 154 bsize=ps.number; 155 lsize=ps.number+10000; 156 fsb.limit=fsb.bsize; 157 fsb.title,fsb.filename="""put_string_option"""; 158 /* for string option, 159* fsb.buffer, 160* fsb.path_name, 161* fsb.declared_attributes(2) 162* must not be used - fske_fsb is too short */ 163 string(fsb.switch)="001100101"b; 164 /* v2pl1,open,stream,output */ 165 /* fsb.bptr has already been set to addr(string) by 166* the calling program */ 167 ps.file_p=null; 168 goto exit_put_prep; 169 end; 170 171 /* FILE or 172* SYSPRINT */ 173 174 if ps.job.explicit_file then ps.file_p=ps.source_p; 175 else do; 176 call ioa_ ("error in put_util: no explicit file"); 177 ps.file_p=addr_sysprint(); 178 ps.job.explicit_file="1"b; 179 end; 180 181 ps.fsbp,fsbp,plio2_data_$fsbpstat=ps.file_p->p_vector(2); 182 if fsb.switch.open then go to open1; 183 /* IMPLICIT OPEN */ 184 plio2_data_$fabpstat,ps.fabp=ps.file_p->p_vector(1); 185 plio2_data_$fab2pstat,ps.fab2p=addr(putfab2); 186 call plio2_open_$open_implicit_(psp); 187 open1: 188 if fsb.switch.output="0"b|fsb.switch.stream="0"b then go to err221; 189 if ps.job.skip then 190 do; 191 skip_count=ps.number; 192 call put_skip; 193 end; 194 else do; 195 if ps.job.page then call put_page; 196 if ps.job.line then 197 do; 198 target_line=ps.number; 199 call put_line; 200 end; 201 end; 202 203 exit_put_prep: 204 ps.switch.first_field="1"b; 205 ps.switch.semi_sep="1"b; 206 return; 207 end put_prep; 208 209 210 211 /* TERMINATE */ 212 213 put_terminate_:entry(pspp); 214 215 psp=pspp; 216 if ps.prep^=0 then call put_prep; 217 /* see NOTE at "put_prep" */ 218 fsbp=ps.fsbp; 219 ps.switch.first_field="0"b; 220 if ps.job.data then 221 do; 222 if ps.switch.semi_sep then 223 do; 224 ps.switch.first_field="1"b; 225 call put_data_block_all_(psp); 226 ps.switch.first_field="0"b; 227 end; 228 if bnc=1 then 229 do; 230 y=SEMI; 231 call put_normal_char; 232 end; 233 else substr(xbuf,bnc-1,1)=";"; 234 235 end; 236 if ps.job.string then 237 do; 238 if ps.job.varying_string then addrel(bptr,-1)->based_int=bnc-1; 239 else do; 240 if bnc>bsize then return; 241 substr(xbuf,bnc,bsize+1-bnc)=" "; 242 end; 243 return; 244 end; 245 246 if fsbp->fsb.switch.interactive then 247 do; 248 skip_count=1; 249 call put_skip; 250 end; 251 252 253 call put_publish; 254 return; 255 256 257 258 259 clear_output_buffer:entry(pspp); 260 psp=pspp; 261 if ps.job.string then return; 262 fsbp=ps.fsbp; 263 264 if ^fsb.switch.open then return; 265 if ^fsb.switch.output then return; 266 if ^fsb.switch.stream then return; 267 268 fsb.bnc=1; 269 fsb.lineno=1; 270 fsb.kol=0; 271 fsb.switch.emptyline="0"b; 272 273 return; 274 put_publish_:entry(pspp); 275 psp=pspp; 276 fsbp=ps.fsbp; 277 call put_publish; 278 return; 279 280 281 put_field_:entry(pspp,fieldpp,fieldll); 282 psp=pspp; 283 fsbp=ps.fsbp; 284 285 if ps.job.edit then 286 do; 287 call put_field; 288 return; 289 end; 290 if ps.switch.first_field then 291 do; 292 if kol=0 then go to post_tab; 293 if fsb.switch.print then 294 do; 295 testkol=10 + 10*divide(kol-1,10,35,0); 296 if testkol=kol then goto post_tab; 297 kol=testkol; 298 if kollsize then go to pf1; 327 kol=kkolx; /* ASSUMES that field consists of single 328* column characters only !!!!!!!!!!!!!! */ 329 go to pf22; 330 pf2: kol=fieldl; /* kol must have been =0 */ 331 pf22: sl=fieldl; 332 /* "put" remainder of string in one piece */ 333 si=pfstart; 334 call insert_string; 335 return; 336 337 pf1: if ps.job.edit then go to pf3; 338 pf4: if kol^=0 then call put_new_line; 339 if emptyline then call put_new_line; 340 if fieldl<=lsize then go to pf2; 341 shortline=lsize; 342 go to pf33; 343 pf3: shortline=lsize-kol; 344 pf33: sl=shortline; 345 si=pfstart; 346 call insert_string; 347 /* kol=lsize but see below that kol becomes 0 */ 348 349 fieldl=fieldl-shortline; 350 pfstart=pfstart+shortline; 351 call put_new_line; /* kol becomes 0 */ 352 goto try_this_line; 353 354 end put_field; 355 356 357 358 359 put_normal_char:proc; 360 /* The "put_field" for a single character. */ 361 if kol=lsize then call put_new_line; 362 kol=kol+1; 363 x=y; 364 call insert_char; 365 end put_normal_char; 366 367 368 369 put_skip_fast:proc; 370 /* sets kol=0,emptyline,lineno */ 371 /* doesn't care about psize !!! */ 372 if skip_count > 1 then go to psf98; 373 x=NL; 374 call insert_char; 375 goto exit_psf; 376 377 psf98: sptr=addr(new_line_line); 378 si=1; 379 psf99: if skip_count>100 then go to psf100; 380 sl=skip_count; 381 call insert_string; 382 fsb.limit = min(bsize,lsize+bnc-1); 383 goto exit_psf; 384 psf100: 385 sl=100; 386 call insert_string; 387 skip_count=skip_count-100; 388 lineno=lineno+100; 389 go to psf99; 390 391 exit_psf: 392 kol=0; 393 emptyline="0"b; 394 lineno=lineno+skip_count; 395 396 end put_skip_fast; 397 398 399 400 /* */ 401 insert_char:proc; /* doesn't care about lsize or psize */ 402 if bnc>bsize then call put_publish; 403 substr(xbuf,bnc,1)=x; 404 if x=NL | x=ctl_char$cr | x=ctl_char$np 405 then fsb.limit = min(bsize,lsize+bnc); 406 bnc=bnc+1; 407 return; 408 end insert_char; 409 410 411 insert_string:proc; /* doesn't care about psize or lsize */ 412 insert_string_1: 413 if sl<1 then return; 414 if sl < bsize-bnc+2 then 415 do; 416 substr(xbuf,bnc,sl)=substr(ybuf,si,sl); 417 bnc=bnc+sl; 418 return; 419 end; 420 sll=bsize+1-bnc; 421 substr(xbuf,bnc,sll)=substr(ybuf,si,sll); 422 bnc=bsize+1; 423 call put_publish; 424 sl=sl-sll; 425 si=si+sll; 426 go to insert_string_1; 427 end insert_string; 428 429 430 put_publish:proc; 431 if ps.job.string then goto err220; 432 iocb_p=fsb.iocb_p; 433 if bnc>1 then 434 do; 435 call iox_$put_chars(iocb_p,bptr,bnc-1,iocb_status); 436 if iocb_status ^=0 then fsb.switch.transmit_error="1"b; 437 438 bnc=1; /* buffer has been cleared */ 439 fsb.limit=min(bsize,lsize-kol); 440 441 if fsb.switch.transmit_error then call plio2_signal_$s_(psp,"TRANSMIT", 442 "put_util",222); 443 fsb.switch.transmit_error="0"b; 444 end; 445 return; 446 end put_publish; 447 448 addr_sysprint:proc returns(ptr); 449 dcl sysprint file print stream output; 450 return(addr(sysprint)); 451 end addr_sysprint; 452 453 454 455 456 /* */ 457 458 459 /*put_column_:entry(pspp,nn); */ 460 /* psp=pspp; */ 461 /* fsbp=ps.fsbp; */ 462 /* col_no=nn; */ 463 /* */ 464 /* if col_no>lsize | col_no<1 then col_no=1; */ 465 /* /* AG94 doesn't say what to do if col_no<1 */ 466 /* if col_no>kol then goto pc90; */ 467 /* call put_new_line; */ 468 /*pc90: */ 469 /* iskip=col_no -1 -kol; /* number of intervening blanks */ 470 /* kol =col_no -1; /* kol of last of these blanks is col_no -1 */ 471 /* */ 472 /* sptr=addr(blank_line); */ 473 /* si=1; */ 474 /*pc99: */ 475 /* if iskip>100 then go to pc100; */ 476 /* sl=iskip; */ 477 /* call insert_string; */ 478 /* return; */ 479 /*pc100: */ 480 /* sl=100; */ 481 /* call insert_string; */ 482 /* iskip=iskip-100; */ 483 /* go to pc99; */ 484 /* */ 485 /* */ 486 put_blanks_:entry(pspp,nn); 487 psp=pspp; 488 fsbp=ps.fsbp; 489 do blanks_left=nn repeat(blanks_left-100) while (blanks_left>0); 490 blanks_out=min(blanks_left,100); 491 call put_field_(psp,addr(blank_line),blanks_out); 492 end; 493 return; 494 495 496 497 /*put_skip_:entry(pspp,nn); */ 498 /* psp=pspp; */ 499 /* fsbp=ps.fsbp; */ 500 /* skip_count=nn; */ 501 /* call put_skip; */ 502 /* return; */ 503 /* */ 504 /* */ 505 put_skip:proc; 506 if ps.job.string then goto err223; 507 fsb.limit = min(fsb.bnc+fsb.lsize,fsb.bsize); 508 if skip_count>0 then go to pso_1; 509 if fsb.switch.print then 510 do; 511 x=ctl_char$cr; 512 call insert_char; 513 kol=0; 514 emptyline="1"b; 515 return; 516 end; 517 goto err224; 518 519 pso_1: 520 if lineno>psize | (lineno+skip_count)<=psize then 521 do; 522 call put_skip_fast; 523 return; 524 end; 525 call fill_page_with_NLs; 526 call plio2_signal_$s_(psp,"ENDPAGE","put_skip",225); 527 return; 528 529 end put_skip; 530 /* */ 531 /* */ 532 /* */ 533 /*put_line_:entry(pspp,nn); */ 534 /* psp=pspp; */ 535 /* fsbp=ps.fsbp; */ 536 /* target_line=nn; */ 537 /* call put_line; */ 538 /* return; */ 539 540 541 put_line:proc; 542 if ps.job.string then goto err226; 543 if ^fsb.switch.print then goto err227; 544 if target_line<1 then target_line=1; 545 /* AG94 says "must be >0" */ 546 if target_line=lineno then return; 547 if lineno > psize 548 then do; 549 if target_line > lineno 550 then do; 551 skip_count=target_line-lineno; 552 call put_skip_fast; 553 end; 554 else call put_page; 555 return; 556 end; 557 if target_line < lineno | target_line > psize then 558 do; 559 call fill_page_with_NLs; 560 call plio2_signal_$s_(psp,"ENDPAGE","put_line",228); 561 return; 562 end; 563 564 /* lineno < target_line */ 565 skip_count=target_line-lineno; 566 call put_skip_fast; 567 return; 568 569 end put_line; 570 /* */ 571 /* */ 572 /* */ 573 /*put_page_:entry(pspp); */ 574 /* psp=pspp; */ 575 /* fsbp=ps.fsbp; */ 576 /* call put_page; */ 577 /* return; */ 578 579 580 put_page:proc; 581 /* call fill_page_with_NLs; */ 582 if (lineno<=psize) 583 | (kol>0) 584 | (kol=0 & emptyline) 585 then do; 586 x=NL; 587 call insert_char; 588 end; 589 lineno=1; 590 pageno=pageno+1; 591 kol=0; 592 emptyline="0"b; 593 x=ctl_char$np; 594 call insert_char; 595 /* MULTICS must insert if necessary. */ 596 /* This entry called by default handler for the 597* endpage condition. */ 598 return; 599 600 end put_page; 601 602 fill_page_with_NLs:proc; 603 604 if ps.job.string then goto err229; 605 if ^fsb.switch.print then goto err230; 606 607 if psize=plio2_data_$max_page_size then 608 do; 609 kol=0; 610 emptyline="0"b; 611 lineno=1; 612 return; /* RETURN */ 613 end; 614 615 /* returns with 616* kol=0 617* emptyline="0"b 618* lineno=pagesize*M+1 */ 619 620 if kol^=0 then go to ppo_work; 621 if lineno=1 then go to ppo_work; 622 if mod(lineno,psize)^=1 then go to ppo_work; 623 if emptyline then go to ppo_work; 624 625 /* we are looking at the beginning of a page 626* with lineno=1+N*psize, N^=1 627* Hence, when put_page_ is called by the handler of the PAGE 628* condition, all that happens is that lineno=1 */ 629 630 return; 631 632 ppo_work: 633 skip_count=1 - lineno + psize*(1+divide(lineno-1,psize,35,0)); 634 call put_skip_fast; 635 return; 636 637 end fill_page_with_NLs; 638 639 640 641 642 put_new_line:proc; 643 644 /* puts the NL character duly considering psize. 645* used by: put_field,put_tab,put_bl,put_col */ 646 647 if ps.job.string then goto err226; 648 x=NL; 649 call insert_char; 650 kol=0; 651 emptyline="0"b; 652 lineno=lineno+1; 653 if lineno=psize+1 then call plio2_signal_$s_(psp,"ENDPAGE","new_line",231); 654 return; 655 end put_new_line; 656 657 658 /* */ 659 /* ABNORMAL RETURNS */ 660 661 err220: 662 erno=220; 663 /* PUT STRING overflows the string */ 664 goto sig_and_return; 665 666 err221: 667 erno=221; 668 /* FILE used with PUT STATEMENT must have stream,output attributes */ 669 goto sig_and_return; 670 671 err223: 672 erno=223; 673 /* SKIP not allowed with STRING OPTION */ 674 goto sig_and_return; 675 676 err224: 677 erno=224; 678 /* SKIP with count<1 requires PRINT attribute */ 679 goto sig_and_return; 680 681 err226: 682 erno=226; 683 /* LINE not allowed with STRING OPTION */ 684 goto sig_and_return; 685 686 err227: 687 erno=227; 688 /* LINE requires the PRINT attribute */ 689 goto sig_and_return; 690 691 err229: 692 erno=229; 693 /* PAGE not allowed with STRING OPTION */ 694 goto sig_and_return; 695 696 err230: 697 erno=230; 698 /* PAGE requires PRINT attribute */ 699 goto sig_and_return; 700 701 err233: 702 erno=233; 703 goto sig_and_return; 704 705 sig_and_return: call plio2_signal_$s_r_(psp,"ERROR","put_util",erno); 706 /* signals and then returns abnormally to the user's procedure */ 707 708 709 710 quick_condition: entry(pspp,condition_code); 711 712 dcl condition_code fixed bin(35); 713 714 psp=pspp; 715 fsbp=ps.fsbp; 716 goto quick_cond(condition_code); 717 718 quick_cond(0): /* non-zero code returned by iox_$put_chars */ 719 fsb.transmit_error="1"b; 720 call plio2_signal_$s_(psp,"TRANSMIT","quick_stream",222); 721 fsb.transmit_error="0"b; 722 return; 723 724 quick_cond(1): /* ENDPAGE is to be signalled */ 725 call plio2_signal_$s_(psp,"ENDPAGE","quick_new_line",234); 726 return; 727 728 quick_cond(2): /* LINE or PAGE option or format in PUT stmnt */ 729 /* on file without print attribute */ 730 erno = 235; 731 goto qs_signal_abnormal_ret; 732 733 quick_cond(3): /* COL or LINE format/option with zero value */ 734 erno = 236; 735 goto qs_signal_abnormal_ret; 736 737 quick_cond(4): /* CONTROL format with value <0 */ 738 erno = 237; 739 goto qs_signal_abnormal_ret; 740 741 quick_cond(5): /* SKIP(0) found on non-print file */ 742 erno = 224; 743 goto qs_signal_abnormal_ret; 744 745 quick_cond(6): /* fill_page_with_NL's when psize = max!!!! */ 746 erno = 233; 747 goto qs_signal_abnormal_ret; 748 749 quick_cond(7): /* "buffer", i.e. target string, overflowed on put with string option */ 750 erno = 220; 751 goto qs_signal_abnormal_ret; 752 753 quick_cond(8): /* request is for a string of over 260 final output length */ 754 call plio2_signal_$s_(psp,"ERROR","quick_260_limit",242); 755 return; 756 757 quick_cond(9): /* request for line(0) was made */ 758 erno = 262; 759 goto qs_signal_abnormal_ret; 760 761 quick_cond(10): /* no parameter to format item given where one was needed */ 762 erno = 148; 763 goto qs_signal_abnormal_ret; 764 765 quick_cond(11): /* non-zero error code returned by stu_ while evaluating format */ 766 erno = 195; 767 goto qs_signal_abnormal_ret; 768 769 quick_cond(12): /* max nesting depth of 10 for r_formats exceeded */ 770 erno = 197; 771 goto qs_signal_abnormal_ret; 772 773 quick_cond(13): /* attempt to restart after ERROR or SIZE */ 774 erno = 266; 775 goto qs_signal_abnormal_ret; 776 777 quick_cond(14): 778 quick_cond(15): 779 quick_cond(16): 780 quick_cond(17): 781 quick_cond(18): /* no such quick_cond codes! */ 782 erno = 174; 783 goto qs_signal_abnormal_ret; 784 785 qs_signal_abnormal_ret: 786 call plio2_signal_$s_r_(psp,"ERROR","quick_put_cond",erno); 787 /* signals & returns abnormally to user's procedure */ 788 789 end plio2_put_util_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1131.0 plio2_put_util_.pl1 >udd>sm>ds>w>ml>plio2_put_util_.pl1 114 1 08/13/81 2143.5 plio2_fsb.incl.pl1 >ldd>incl>plio2_fsb.incl.pl1 115 2 08/13/81 2143.5 plio2_ps.incl.pl1 >ldd>incl>plio2_ps.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. BL constant char(1) initial dcl 86 ref 314 NL constant char(1) initial dcl 83 ref 373 404 586 648 SEMI constant char(1) initial dcl 87 ref 230 TAB constant char(1) initial dcl 85 ref 300 addr builtin function dcl 79 ref 185 377 450 491 491 addrel builtin function dcl 79 ref 238 based_int based fixed bin(35,0) dcl 74 set ref 238* blank_line 000041 internal static char(100) initial dcl 90 set ref 491 491 blanks_left 000115 automatic fixed bin(15,0) dcl 68 set ref 489* 489* 490* 492 blanks_out 000114 automatic fixed bin(15,0) dcl 68 set ref 490* 491* blc 4 based fixed bin(21,0) level 2 dcl 1-4 set ref 152* bnc 10 based fixed bin(15,0) level 2 dcl 1-4 set ref 151* 228 233 238 240 241 241 268* 382 402 403 404 406* 406 414 416 417* 417 420 421 422* 433 435 438* 507 bptr 6 based pointer level 2 dcl 1-4 set ref 233 238 241 403 416 421 435* bsize 5 based fixed bin(21,0) level 2 dcl 1-4 set ref 154* 156 240 241 382 402 404 414 420 422 439 507 condition_code parameter fixed bin(35,0) dcl 712 ref 710 716 ctl_char$cr 000124 external static char(1) packed unaligned dcl 106 ref 404 511 ctl_char$np 000126 external static char(1) packed unaligned dcl 107 ref 404 593 data 26(03) based bit(1) level 3 packed packed unaligned dcl 2-10 ref 220 305 divide builtin function dcl 79 ref 295 632 edit 26(04) based bit(1) level 3 packed packed unaligned dcl 2-10 ref 285 337 emptyline 0(31) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 271* 339 393* 514* 582 592* 610* 623 651* erno 000110 automatic fixed bin(15,0) dcl 68 set ref 661* 666* 671* 676* 681* 686* 691* 696* 701* 705* 728* 733* 737* 741* 745* 749* 757* 761* 765* 769* 773* 777* 785* explicit_file 26 based bit(1) level 3 packed packed unaligned dcl 2-10 set ref 174 178* fab2p 50 based pointer level 2 dcl 2-10 set ref 185* fabp 46 based pointer level 2 dcl 2-10 set ref 184* fieldl 000113 automatic fixed bin(15,0) dcl 68 set ref 321* 324 330 331 340 349* 349 fieldll parameter fixed bin(15,0) dcl 68 ref 281 321 fieldp 000106 automatic pointer dcl 67 set ref 320* 323 fieldpp parameter pointer dcl 67 ref 281 320 file_p 40 based pointer level 2 dcl 2-10 set ref 167* 174* 177* 181 184 filename 20 based char(32) level 2 dcl 1-4 set ref 157* first_field 37 based bit(1) level 3 packed packed unaligned dcl 2-10 set ref 203* 219* 224* 226* 290 305* 308* 315 fsb based structure level 1 dcl 1-4 fsbp 42 based pointer level 2 in structure "ps" dcl 2-10 in procedure "plio2_put_util_" set ref 146* 181* 218 262 276 283 488 715 fsbp 000104 automatic pointer dcl 67 in procedure "plio2_put_util_" set ref 146* 151 152 152 154 155 156 156 157 157 163 181* 182 187 187 218* 228 233 233 238 238 240 240 241 241 241 241 246 262* 264 265 266 268 269 270 271 276* 283* 292 293 295 296 297 298 298 324 326 327 330 338 339 340 341 343 343 361 361 362 362 382 382 382 382 388 388 391 393 394 394 402 402 403 403 404 404 404 404 406 406 414 414 416 416 417 417 420 420 421 421 422 422 432 433 435 435 436 438 439 439 439 439 441 443 488* 507 507 507 507 509 513 514 519 519 519 519 543 546 547 547 549 551 557 557 565 582 582 582 582 582 589 590 590 591 592 605 607 609 610 611 620 621 622 622 623 632 632 632 632 650 651 652 652 653 653 715* 718 721 interactive 0(13) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 246 ioa_ 000110 constant entry external dcl 100 ref 176 iocb_p 3 based pointer level 2 in structure "fsb" packed packed unaligned dcl 1-4 in procedure "plio2_put_util_" ref 432 iocb_p 000130 automatic pointer dcl 108 in procedure "plio2_put_util_" set ref 432* 435* iocb_status 000132 automatic fixed bin(35,0) dcl 109 set ref 435* 436 iox_$put_chars 000116 constant entry external dcl 103 ref 435 job 26 based structure level 2 dcl 2-10 kkolx 000117 automatic fixed bin(15,0) dcl 69 set ref 324* 326 327 kol 11 based fixed bin(15,0) level 2 dcl 1-4 set ref 152* 270* 292 295 296 297* 298 324 327* 330* 338 343 361 362* 362 391* 439 513* 582 582 591* 609* 620 650* limit 16 based fixed bin(15,0) level 2 dcl 1-4 set ref 156* 382* 404* 439* 507* line 26(09) based bit(1) level 3 packed packed unaligned dcl 2-10 ref 196 lineno 13 based fixed bin(15,0) level 2 dcl 1-4 set ref 269* 388* 388 394* 394 519 519 546 547 549 551 557 565 582 589* 611* 621 622 632 632 652* 652 653 lsize 12 based fixed bin(15,0) level 2 dcl 1-4 set ref 155* 298 326 340 341 343 361 382 404 439 507 min builtin function dcl 79 ref 382 404 439 490 507 mod builtin function dcl 79 ref 622 new_line_line 000010 internal static char(100) initial dcl 88 set ref 377 nn parameter fixed bin(15,0) dcl 68 ref 486 489 null builtin function dcl 79 ref 167 number 27 based fixed bin(15,0) level 2 dcl 2-10 ref 154 155 191 198 open 0(03) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 182 264 output 0(06) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 187 265 p_vector based pointer array dcl 75 ref 181 184 page 26(08) based bit(1) level 3 packed packed unaligned dcl 2-10 ref 195 pageno 15 based fixed bin(15,0) level 2 dcl 1-4 set ref 590* 590 pfstart 000116 automatic fixed bin(15,0) dcl 69 set ref 322* 333 345 350* 350 plio2_data_$fab2pstat 000140 external static pointer dcl 2-82 set ref 185* plio2_data_$fabpstat 000136 external static pointer dcl 2-82 set ref 184* plio2_data_$fsbpstat 000134 external static pointer dcl 2-82 set ref 146* 181* plio2_data_$max_page_size 000130 external static fixed bin(35,0) dcl 110 ref 607 plio2_data_$pliostringfsbp 000142 external static pointer dcl 2-82 set ref 146* plio2_data_$pspstat 000132 external static pointer dcl 2-82 set ref 138* plio2_open_$open_implicit_ 000122 constant entry external dcl 105 ref 186 plio2_signal_$s_ 000114 constant entry external dcl 102 ref 441 526 560 653 720 724 753 plio2_signal_$s_r_ 000120 constant entry external dcl 104 ref 705 785 prep 35 based fixed bin(15,0) level 2 dcl 2-10 set ref 139* 216 print 0(04) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 293 509 543 605 ps based structure level 1 dcl 2-10 psize 14 based fixed bin(35,0) level 2 dcl 1-4 ref 519 519 547 557 582 607 622 632 632 653 psp 000100 automatic pointer dcl 67 set ref 122* 138 139 140 142 146 146 154 155 167 174 174 174 177 178 181 181 184 184 185 186* 189 191 195 196 198 203 205 215* 216 218 219 220 222 224 225* 226 236 238 260* 261 262 275* 276 282* 283 285 290 305 305 308 315 337 431 441* 487* 488 491* 506 526* 542 560* 604 647 653* 705* 714* 715 720* 724* 753* 785* pspp parameter pointer dcl 67 ref 121 122 213 215 259 260 274 275 281 282 486 487 710 714 put_data_block_all_ 000112 constant entry external dcl 101 ref 225 putfab2 000072 internal static structure level 1 dcl 93 set ref 185 semi_sep 37(03) based bit(1) level 3 packed packed unaligned dcl 2-10 set ref 205* 222 shortline 000123 automatic fixed bin(15,0) dcl 69 set ref 341* 343* 344 349 350 si 000121 automatic fixed bin(15,0) dcl 69 set ref 333* 345* 378* 416 421 425* 425 skip 26(10) based bit(1) level 3 packed packed unaligned dcl 2-10 ref 189 skip_count 000111 automatic fixed bin(15,0) dcl 68 set ref 191* 248* 372 379 380 387* 387 394 508 519 551* 565* 632* sl 000120 automatic fixed bin(15,0) dcl 69 set ref 331* 344* 380* 384* 412 414 416 416 417 424* 424 sll 000122 automatic fixed bin(15,0) dcl 69 set ref 420* 421 421 424 425 source_p 20 based pointer level 2 dcl 2-10 ref 146 174 sptr 000102 automatic pointer dcl 67 set ref 323* 377* 416 421 stream 0(08) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 187 266 string 26(01) based bit(1) level 3 in structure "ps" packed packed unaligned dcl 2-10 in procedure "plio2_put_util_" ref 142 236 261 431 506 542 604 647 string builtin function dcl 79 in procedure "plio2_put_util_" set ref 140* 163* substr builtin function dcl 79 set ref 233* 241* 403* 416* 416 421* 421 switch 37 based structure level 2 in structure "ps" dcl 2-10 in procedure "plio2_put_util_" set ref 140* switch based structure level 2 in structure "fsb" dcl 1-4 in procedure "plio2_put_util_" set ref 163* sysprint 000144 constant file print output stream dcl 449 set ref 450* target_line 000112 automatic fixed bin(15,0) dcl 68 set ref 198* 544 544* 546 549 551 557 557 565 testkol 000124 automatic fixed bin(15,0) dcl 69 set ref 295* 296 297 title 30 based char(32) level 2 packed packed unaligned dcl 1-4 set ref 157* transmit_error 0(21) based bit(1) level 3 packed packed unaligned dcl 1-4 set ref 436* 441 443* 718* 721* varying_string 26(02) based bit(1) level 3 packed packed unaligned dcl 2-10 ref 238 x 000125 automatic char(1) dcl 70 set ref 300* 363* 373* 403 404 404 404 511* 586* 593* 648* xbuf based char(1000) packed unaligned dcl 1-80 set ref 233* 241* 403* 416* 421* y 000126 automatic char(1) dcl 70 set ref 230* 314* 363 ybuf based char(1000) dcl 98 ref 416 421 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. plio2_data_$badfsbp external static pointer dcl 2-82 plio2_data_$badjob external static bit(36) dcl 2-94 plio2_data_$undef_file_sw external static bit(1) dcl 2-94 plio2_data_fsb_thread_ external static pointer initial dcl 2-91 NAMES DECLARED BY EXPLICIT CONTEXT. addr_sysprint 001703 constant entry internal dcl 448 ref 177 clear_output_buffer 000306 constant entry external dcl 259 err220 000535 constant label dcl 661 ref 431 err221 000540 constant label dcl 666 ref 187 err223 000543 constant label dcl 671 ref 506 err224 000546 constant label dcl 676 ref 517 err226 000551 constant label dcl 681 ref 542 647 err227 000554 constant label dcl 686 ref 543 err229 000557 constant label dcl 691 ref 604 err230 000562 constant label dcl 696 ref 605 err233 000565 constant label dcl 701 exit_psf 001456 constant label dcl 391 ref 375 383 exit_put_prep 001276 constant label dcl 203 ref 168 fill_page_with_NLs 002162 constant entry internal dcl 602 ref 525 559 insert_char 001465 constant entry internal dcl 401 ref 301 364 374 512 587 594 649 insert_string 001521 constant entry internal dcl 411 ref 334 346 381 386 insert_string_1 001522 constant label dcl 412 ref 426 open1 001245 constant label dcl 187 ref 182 pf1 001337 constant label dcl 337 ref 326 pf2 001326 constant label dcl 330 set ref 340 pf22 001331 constant label dcl 331 ref 329 pf3 001361 constant label dcl 343 ref 337 pf33 001364 constant label dcl 344 ref 342 pf4 001343 constant label dcl 338 plio2_put_util_ 000130 constant entry external dcl 19 post_tab 000441 constant label dcl 305 ref 292 296 ppo_work 002222 constant label dcl 632 ref 620 621 622 623 psf100 001445 constant label dcl 384 ref 379 psf98 001422 constant label dcl 377 ref 372 psf99 001427 constant label dcl 379 ref 389 pso_1 001760 constant label dcl 519 ref 508 put_blanks_ 000467 constant entry external dcl 486 put_field 001304 constant entry internal dcl 319 ref 287 309 put_field_ 000371 constant entry external dcl 281 ref 491 put_line 002025 constant entry internal dcl 541 ref 199 put_new_line 002243 constant entry internal dcl 642 ref 303 338 339 351 361 put_normal_char 001376 constant entry internal dcl 359 ref 231 315 put_page 002130 constant entry internal dcl 580 ref 195 554 put_prep 001110 constant entry internal dcl 127 ref 123 216 put_prep_ 000142 constant entry external dcl 121 put_publish 001573 constant entry internal dcl 430 ref 253 277 402 423 put_publish_ 000347 constant entry external dcl 274 put_skip 001725 constant entry internal dcl 505 ref 192 249 put_skip_fast 001412 constant entry internal dcl 369 ref 522 552 566 634 put_terminate_ 000160 constant entry external dcl 213 qs_signal_abnormal_ret 001052 constant label dcl 785 ref 731 735 739 743 747 751 759 763 767 771 775 783 quick_cond 000000 constant label array(0:18) dcl 718 ref 716 quick_condition 000626 constant entry external dcl 710 sig_and_return 000570 constant label dcl 705 ref 664 669 674 679 684 689 694 699 703 try_this_line 001316 constant label dcl 324 ref 352 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2614 2764 2327 2624 Length 3230 2327 150 227 264 100 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME plio2_put_util_ 338 external procedure is an external procedure. put_prep internal procedure shares stack frame of external procedure plio2_put_util_. put_field internal procedure shares stack frame of external procedure plio2_put_util_. put_normal_char internal procedure shares stack frame of external procedure plio2_put_util_. put_skip_fast internal procedure shares stack frame of external procedure plio2_put_util_. insert_char internal procedure shares stack frame of external procedure plio2_put_util_. insert_string internal procedure shares stack frame of external procedure plio2_put_util_. put_publish internal procedure shares stack frame of external procedure plio2_put_util_. addr_sysprint internal procedure shares stack frame of external procedure plio2_put_util_. put_skip internal procedure shares stack frame of external procedure plio2_put_util_. put_line internal procedure shares stack frame of external procedure plio2_put_util_. put_page internal procedure shares stack frame of external procedure plio2_put_util_. fill_page_with_NLs internal procedure shares stack frame of external procedure plio2_put_util_. put_new_line internal procedure shares stack frame of external procedure plio2_put_util_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 new_line_line plio2_put_util_ 000041 blank_line plio2_put_util_ 000072 putfab2 plio2_put_util_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME plio2_put_util_ 000100 psp plio2_put_util_ 000102 sptr plio2_put_util_ 000104 fsbp plio2_put_util_ 000106 fieldp plio2_put_util_ 000110 erno plio2_put_util_ 000111 skip_count plio2_put_util_ 000112 target_line plio2_put_util_ 000113 fieldl plio2_put_util_ 000114 blanks_out plio2_put_util_ 000115 blanks_left plio2_put_util_ 000116 pfstart plio2_put_util_ 000117 kkolx plio2_put_util_ 000120 sl plio2_put_util_ 000121 si plio2_put_util_ 000122 sll plio2_put_util_ 000123 shortline plio2_put_util_ 000124 testkol plio2_put_util_ 000125 x plio2_put_util_ 000126 y plio2_put_util_ 000130 iocb_p plio2_put_util_ 000132 iocb_status plio2_put_util_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_in call_ext_out_desc call_ext_out return_mac mpfx2 mdfx1 ext_entry set_support THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_ iox_$put_chars plio2_open_$open_implicit_ plio2_signal_$s_ plio2_signal_$s_r_ put_data_block_all_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. ctl_char$cr ctl_char$np plio2_data_$fab2pstat plio2_data_$fabpstat plio2_data_$fsbpstat plio2_data_$max_page_size plio2_data_$pliostringfsbp plio2_data_$pspstat sysprint sysprint.fsb LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 19 000127 121 000136 122 000150 123 000154 124 000155 213 000156 215 000166 216 000172 218 000175 219 000200 220 000203 222 000206 224 000211 225 000213 226 000222 228 000225 230 000231 231 000233 232 000234 233 000235 236 000241 238 000245 240 000257 241 000263 243 000273 246 000274 248 000277 249 000301 253 000302 254 000303 259 000304 260 000314 261 000320 262 000323 264 000325 265 000330 266 000333 268 000336 269 000340 270 000341 271 000342 273 000344 274 000345 275 000355 276 000361 277 000363 278 000364 281 000365 282 000377 283 000403 285 000405 287 000410 288 000411 290 000412 292 000415 293 000417 295 000422 296 000427 297 000431 298 000432 300 000434 301 000436 302 000437 303 000440 305 000441 307 000447 308 000450 309 000452 314 000453 315 000455 316 000462 486 000463 487 000475 488 000501 489 000503 490 000510 491 000514 492 000531 493 000534 661 000535 664 000537 666 000540 669 000542 671 000543 674 000545 676 000546 679 000550 681 000551 684 000553 686 000554 689 000556 691 000557 694 000561 696 000562 699 000564 701 000565 703 000567 705 000570 710 000621 714 000634 715 000640 716 000642 718 000644 720 000646 721 000703 722 000705 724 000706 726 000745 728 000746 731 000750 733 000751 735 000753 737 000754 739 000756 741 000757 743 000761 745 000762 747 000764 749 000765 751 000767 753 000770 755 001027 757 001030 759 001032 761 001033 763 001035 765 001036 767 001040 769 001041 771 001043 773 001044 775 001046 777 001047 783 001051 785 001052 789 001107 127 001110 138 001111 139 001114 140 001116 142 001117 146 001122 151 001130 152 001132 154 001134 155 001137 156 001141 157 001143 163 001151 167 001153 168 001155 174 001156 176 001164 177 001177 178 001206 181 001211 182 001221 184 001224 185 001232 186 001237 187 001245 189 001253 191 001257 192 001261 193 001262 195 001263 196 001267 198 001273 199 001275 203 001276 205 001301 206 001303 319 001304 320 001305 321 001311 322 001313 323 001315 324 001316 326 001322 327 001324 329 001325 330 001326 331 001331 333 001333 334 001335 335 001336 337 001337 338 001343 339 001346 340 001352 341 001356 342 001360 343 001361 344 001364 345 001365 346 001367 349 001370 350 001372 351 001374 352 001375 359 001376 361 001377 362 001404 363 001406 364 001410 365 001411 369 001412 372 001413 373 001416 374 001420 375 001421 377 001422 378 001425 379 001427 380 001432 381 001433 382 001434 383 001444 384 001445 386 001447 387 001450 388 001452 389 001455 391 001456 393 001460 394 001462 396 001464 401 001465 402 001466 403 001473 404 001501 406 001517 407 001520 411 001521 412 001522 414 001526 416 001534 417 001544 418 001546 420 001547 421 001553 422 001562 423 001565 424 001566 425 001570 426 001572 430 001573 431 001574 432 001600 433 001603 435 001607 436 001626 438 001632 439 001635 441 001643 443 001700 445 001702 448 001703 449 001705 450 001722 505 001725 506 001726 507 001732 508 001741 509 001743 511 001746 512 001751 513 001752 514 001754 515 001756 517 001757 519 001760 522 001766 523 001767 525 001770 526 001771 527 002024 541 002025 542 002026 543 002032 544 002035 546 002042 547 002046 549 002051 551 002053 552 002056 553 002057 554 002060 555 002061 557 002062 559 002067 560 002070 561 002123 565 002124 566 002126 567 002127 580 002130 582 002131 586 002143 587 002145 589 002146 590 002151 591 002152 592 002153 593 002155 594 002160 598 002161 602 002162 604 002163 605 002167 607 002172 609 002177 610 002200 611 002202 612 002204 620 002205 621 002207 622 002212 623 002216 630 002221 632 002222 634 002241 635 002242 642 002243 647 002244 648 002250 649 002252 650 002253 651 002255 652 002257 653 002260 654 002323 ----------------------------------------------------------- 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