COMPILATION LISTING OF SEGMENT discard_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 08/14/86 1422.0 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend */ 11 12 /* Modified 05/15/84 by Jim Lippard to free attach data on detach */ 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-06-20,Kissel), approve(86-07-23,MCR7455), audit(86-07-31,Ex), 17* install(86-08-14,MR12.0-1126): 18* Modified to handle all opening modes and IOX operations. Also added the 19* correct cleanup protocol around calls to hcs_$(set reset)_ips_mask. 20* END HISTORY COMMENTS */ 21 22 23 discard_: 24 proc (); 25 26 RETURN: 27 return; 28 29 /* Parameters. */ 30 31 dcl actlen fixed bin (21) parameter; 32 dcl args (*) char (*) varying parameter; 33 dcl buflen fixed (21) parameter; 34 dcl bufptr ptr parameter; 35 dcl Code fixed bin (35) parameter; 36 dcl extend_bit bit (1) aligned parameter; 37 dcl infptr ptr parameter; 38 dcl Iocb_ptr ptr parameter; 39 dcl key char (256) varying parameter; 40 dcl len fixed (21) parameter; 41 dcl loud_sw bit (1) aligned parameter; 42 dcl mode fixed bin parameter; 43 dcl newmode char (*) parameter; 44 dcl oldmode char (*) parameter; 45 dcl order char (*) parameter; 46 dcl position_type fixed bin parameter; 47 dcl position_n fixed bin (21) parameter; 48 49 /* Automatic. */ 50 51 dcl blkptr ptr; 52 dcl iocb_ptr ptr; 53 dcl mask bit (36) aligned; 54 55 /* Based. */ 56 57 dcl based_area area based; 58 59 dcl 1 IOCB aligned like iocb based (iocb_ptr); 60 61 dcl 1 blk aligned based (blkptr), 62 2 attach char (8) varying, 63 2 open char (31) varying; 64 65 /* Procedures. */ 66 67 dcl com_err_ entry () options (variable); 68 dcl continue_to_signal_ entry (fixed bin (35)); 69 dcl get_system_free_area_ entry () returns (ptr); 70 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 71 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 72 73 /* Constants. */ 74 75 dcl error_table_$bad_mode fixed (35) ext; 76 dcl error_table_$end_of_info fixed bin (35) ext static; 77 dcl error_table_$no_record fixed (35) ext; 78 dcl error_table_$not_detached fixed (35) ext; 79 dcl error_table_$wrong_no_of_args fixed (35) ext; 80 dcl error_table_$no_operation fixed (35) ext; 81 82 /* Built-in. */ 83 84 dcl (addr, hbound, lbound, null, substr) builtin; 85 86 /* Conditions. */ 87 88 dcl any_other condition; 89 dcl cleanup condition; 90 91 /* End of declarations. */ 92 93 /* Beginning of entry point ..... discard_discard_attach(Iocb_ptr,args,loud_sw) ..... */ 94 95 discard_attach: 96 entry (Iocb_ptr, args, loud_sw, Code); 97 98 mask = ""b; 99 iocb_ptr = Iocb_ptr; 100 on cleanup call Cleanup_Handler (); 101 on any_other call Any_Other_Handler (); 102 call hcs_$set_ips_mask (""b, mask); 103 104 if IOCB.attach_descrip_ptr ^= null () then do; 105 call Cleanup_Handler (); 106 if loud_sw then call com_err_ (error_table_$not_detached, "discard_"); 107 Code = error_table_$not_detached; 108 end; 109 else do; 110 allocate blk in (get_system_free_area_ () -> based_area) set (blkptr); 111 blk.attach = "discard_"; 112 blk.open = ""; 113 IOCB.attach_descrip_ptr = addr (blk.attach); 114 IOCB.attach_data_ptr = blkptr; 115 IOCB.detach_iocb = discard_detach; 116 IOCB.open = discard_open; 117 IOCB.modes = iox_$err_not_open; 118 IOCB.control = iox_$err_not_open; 119 call iox_$propagate (iocb_ptr); 120 call hcs_$reset_ips_mask (mask, mask); 121 Code = 0; 122 end; 123 call GOTO_RETURN (); 124 125 /* End of entry point ..... discard_$discard_attach(Iocb_ptr,args,loud_sw) ..... */ 126 127 128 129 130 131 /* Handler for the 'detach_iocb' I/O operation. */ 132 133 discard_detach: 134 entry (Iocb_ptr, Code); 135 mask = ""b; 136 iocb_ptr = Iocb_ptr; 137 on cleanup call Cleanup_Handler (); 138 on any_other call Any_Other_Handler (); 139 call hcs_$set_ips_mask (""b, mask); 140 blkptr = IOCB.attach_data_ptr; 141 IOCB.attach_descrip_ptr, IOCB.attach_data_ptr = null (); 142 IOCB.detach_iocb = iox_$err_not_attached; 143 IOCB.open = iox_$err_not_attached; 144 call iox_$propagate (iocb_ptr); 145 call hcs_$reset_ips_mask (mask, mask); 146 Code = 0; 147 free blkptr -> blk; 148 call GOTO_RETURN (); 149 150 /* End of 'detach_iocb' handler. */ 151 152 153 154 155 156 /* Handler for the 'open' I/O operation. */ 157 158 discard_open: 159 entry (Iocb_ptr, mode, extend_bit, Code); 160 mask = ""b; 161 on cleanup call Cleanup_Handler (); 162 on any_other call Any_Other_Handler (); 163 call hcs_$set_ips_mask (""b, mask); 164 iocb_ptr = Iocb_ptr -> iocb.actual_iocb_ptr; 165 blkptr = IOCB.attach_data_ptr; 166 167 if mode > lbound (iox_modes, 1) & mode < hbound (iox_modes, 1) 168 then blk.open = iox_modes (mode); 169 else do; 170 call Cleanup_Handler (); 171 Code = error_table_$bad_mode; 172 call GOTO_RETURN (); 173 end; 174 175 if mode = Stream_input then do; 176 IOCB.get_line = discard_get_chars; /* We always return 0 anyway. */ 177 IOCB.get_chars = discard_get_chars; 178 IOCB.position = discard_position; 179 end; 180 181 else if mode = Stream_output then IOCB.put_chars = discard_put_chars; 182 183 else if mode = Stream_input_output then do; 184 IOCB.get_line = discard_get_chars; /* We always return 0 anyway. */ 185 IOCB.get_chars = discard_get_chars; 186 IOCB.put_chars = discard_put_chars; 187 IOCB.position = discard_position; 188 end; 189 190 else if mode = Sequential_input then do; 191 IOCB.read_record = discard_read; 192 IOCB.read_length = discard_read_length; 193 IOCB.position = discard_position; 194 end; 195 196 else if mode = Sequential_output then do; 197 IOCB.write_record = discard_write; 198 IOCB.position = discard_position; 199 end; 200 201 else if mode = Sequential_input_output then do; 202 IOCB.read_record = discard_read; 203 IOCB.read_length = discard_read_length; 204 IOCB.write_record = discard_write; 205 IOCB.position = discard_position; 206 end; 207 208 else if mode = Sequential_update then do; 209 IOCB.read_record = discard_read; 210 IOCB.read_length = discard_read_length; 211 IOCB.write_record = discard_write; 212 IOCB.rewrite_record = discard_write; /* It's all the same to us. */ 213 IOCB.delete_record = discard_delete; 214 IOCB.position = discard_position; 215 end; 216 217 else if mode = Keyed_sequential_input then do; 218 IOCB.read_record = discard_read; 219 IOCB.read_length = discard_read_length; 220 IOCB.position = discard_position; 221 IOCB.seek_key = discard_seek_key; 222 IOCB.read_key = discard_seek_key; /* They have the same calling sequence. */ 223 end; 224 225 else if mode = Keyed_sequential_output then do; 226 IOCB.write_record = discard_write; 227 IOCB.seek_key = discard_seek_key; 228 end; 229 230 else if mode = Keyed_sequential_update then do; 231 IOCB.read_record = discard_read; 232 IOCB.delete_record = discard_delete; 233 IOCB.read_length = discard_read_length; 234 IOCB.position = discard_position; 235 IOCB.seek_key = discard_seek_key; 236 IOCB.read_key = discard_seek_key; /* They have the same calling sequence. */ 237 IOCB.write_record = discard_write; 238 IOCB.rewrite_record = discard_write; /* It's all the same to us. */ 239 end; 240 241 else if mode = Direct_input then do; 242 IOCB.read_record = discard_read; 243 IOCB.read_length = discard_read_length; 244 IOCB.seek_key = discard_seek_key; 245 end; 246 247 else if mode = Direct_output then do; 248 IOCB.write_record = discard_write; 249 IOCB.seek_key = discard_seek_key; 250 end; 251 252 else if mode = Direct_update then do; 253 IOCB.read_record = discard_read; 254 IOCB.rewrite_record = discard_write; /* It's all the same to us. */ 255 IOCB.delete_record = discard_delete; 256 IOCB.read_length = discard_read_length; 257 IOCB.seek_key = discard_seek_key; 258 IOCB.write_record = discard_write; 259 end; 260 261 else ; /* We already checked the mode above. */ 262 263 if extend_bit then blk.open = blk.open || " -extend"; 264 265 IOCB.open_descrip_ptr = addr (blk.open); 266 IOCB.detach_iocb = iox_$err_not_closed; 267 IOCB.open = iox_$err_not_closed; 268 IOCB.close = discard_close; 269 IOCB.modes = discard_modes; 270 IOCB.control = discard_control; 271 272 call iox_$propagate (iocb_ptr); 273 call hcs_$reset_ips_mask (mask, mask); 274 275 Code = 0; 276 call GOTO_RETURN (); 277 278 /* End of 'open' handler. */ 279 280 281 282 283 284 /* Handler for the 'close' I/O operation. */ 285 286 discard_close: 287 entry (Iocb_ptr, Code); 288 mask = ""b; 289 on cleanup call Cleanup_Handler (); 290 on any_other call Any_Other_Handler (); 291 call hcs_$set_ips_mask (""b, mask); 292 iocb_ptr = Iocb_ptr -> iocb.actual_iocb_ptr; 293 blkptr = IOCB.attach_data_ptr; 294 IOCB.open_descrip_ptr = null (); 295 IOCB.detach_iocb = discard_detach; 296 IOCB.open = discard_open; 297 IOCB.close = iox_$err_not_open; 298 IOCB.get_line = iox_$err_not_open; 299 IOCB.get_chars = iox_$err_not_open; 300 IOCB.put_chars = iox_$err_not_open; 301 IOCB.modes = iox_$err_not_open; 302 IOCB.position = iox_$err_not_open; 303 IOCB.control = iox_$err_not_open; 304 IOCB.read_record = iox_$err_not_open; 305 IOCB.write_record = iox_$err_not_open; 306 IOCB.rewrite_record = iox_$err_not_open; 307 IOCB.delete_record = iox_$err_not_open; 308 IOCB.seek_key = iox_$err_not_open; 309 IOCB.read_key = iox_$err_not_open; 310 IOCB.read_length = iox_$err_not_open; 311 call iox_$propagate (iocb_ptr); 312 call hcs_$reset_ips_mask (mask, mask); 313 Code = 0; 314 call GOTO_RETURN (); 315 316 /* End of 'close' handler. */ 317 318 319 320 321 322 /* Handler for the 'get_line' and 'get_chars' I/O operations. */ 323 324 discard_get_chars: 325 entry (Iocb_ptr, bufptr, buflen, actlen, Code); 326 actlen = 0; 327 Code = error_table_$end_of_info; 328 call GOTO_RETURN (); 329 330 /* End of 'get_line' and 'get_chars' handlers. */ 331 332 333 334 335 336 /* Handler for the 'put_chars' I/O operation. */ 337 338 discard_put_chars: 339 entry (Iocb_ptr, bufptr, buflen, Code); 340 Code = 0; 341 call GOTO_RETURN (); 342 343 /* End of 'put_chars' handler. */ 344 345 346 347 348 349 /* Handler for the 'modes' I/O operation. */ 350 351 discard_modes: 352 entry (Iocb_ptr, newmode, oldmode, Code); 353 oldmode = ""; 354 Code = 0; 355 call GOTO_RETURN (); 356 357 /* End of 'modes' handler. */ 358 359 360 361 362 363 /* Handler for the 'position' I/O operation. */ 364 365 discard_position: 366 entry (Iocb_ptr, position_type, position_n, Code); 367 Code = 0; 368 call GOTO_RETURN (); 369 370 /* End of 'position' handler. */ 371 372 373 374 375 376 /* Handler for the 'control' I/O operation. */ 377 378 discard_control: 379 entry (Iocb_ptr, order, infptr, Code); 380 if order = "io_call" 381 then Code = error_table_$no_operation; 382 else Code = 0; 383 call GOTO_RETURN (); 384 385 /* End of 'control' handler. */ 386 387 388 389 390 391 /* Handler for the 'read_record' I/O operation. */ 392 393 discard_read: 394 entry (Iocb_ptr, bufptr, buflen, actlen, Code); 395 actlen = 0; 396 Code = error_table_$end_of_info; 397 call GOTO_RETURN (); 398 399 /* End of 'read_record' handler. */ 400 401 402 403 404 405 /* Handler for the 'write_record' and 'rewrite_record I/O operations. */ 406 407 discard_write: 408 entry (Iocb_ptr, bufptr, buflen, Code); 409 Code = 0; 410 call GOTO_RETURN (); 411 412 /* End of 'write_record' and 'rewrite_record' handlers. */ 413 414 415 416 417 418 /* Handler for the 'delete_record' I/O operation. */ 419 420 discard_delete: 421 entry (Iocb_ptr, Code); 422 Code = error_table_$no_record; 423 call GOTO_RETURN (); 424 425 /* End of 'delete_record' handler. */ 426 427 428 429 430 431 /* Handler for the 'seek_key' and 'read_key' I/O operations. */ 432 433 discard_seek_key: 434 entry (Iocb_ptr, key, len, Code); 435 len = 0; 436 Code = error_table_$no_record; 437 call GOTO_RETURN (); 438 439 /* End of 'seek_key' and 'read_key' handlers. */ 440 441 442 443 444 445 /* Handler for the 'read_length' I/O operation. */ 446 447 discard_read_length: 448 entry (Iocb_ptr, actlen, Code); 449 actlen = 0; 450 Code = error_table_$no_record; 451 call GOTO_RETURN (); 452 453 /* End of 'read_length' handler. */ 454 455 /* format: ^indcomtxt */ 456 457 /*****************************************************************************/ 458 /* */ 459 /* PROCEDURE: Any_Other_Handler */ 460 /* */ 461 /* This procedure restores the IPS mask if necessary and continues to */ 462 /* signal whatever the problem was. */ 463 /* */ 464 /*****************************************************************************/ 465 466 Any_Other_Handler: 467 proc (); 468 469 if substr (mask, 36, 1) then call hcs_$reset_ips_mask (mask, mask); 470 471 call continue_to_signal_ ((0)); /* Ignore the code. */ 472 473 return; 474 475 end Any_Other_Handler; 476 477 /*****************************************************************************/ 478 /* */ 479 /* PROCEDURE: Cleanup_Handler */ 480 /* */ 481 /* This procedure restores the IPS mask if necessary. */ 482 /* */ 483 /*****************************************************************************/ 484 485 Cleanup_Handler: 486 proc (); 487 488 if substr (mask, 36, 1) then call hcs_$reset_ips_mask (mask, mask); 489 490 return; 491 492 end Cleanup_Handler; 493 494 /*****************************************************************************/ 495 /* */ 496 /* PROCEDURE: GOTO_RETURN */ 497 /* */ 498 /* This procedure only exists to aid debugging, and centralize the return. */ 499 /* */ 500 /*****************************************************************************/ 501 502 GOTO_RETURN: 503 proc (); 504 505 goto RETURN; /* A non-local goto to the main return. */ 506 507 end GOTO_RETURN; 508 509 /* format: revert */ 510 1 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 1 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 1 3* version number to IOX2. */ 1 4 /* format: style2 */ 1 5 1 6 dcl 1 iocb aligned based, /* I/O control block. */ 1 7 2 version character (4) aligned, /* IOX2 */ 1 8 2 name char (32), /* I/O name of this block. */ 1 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 14 2 reserved bit (72), /* Reserved for future use. */ 1 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 17 /* open(p,mode,not_used,s) */ 1 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 20 /* get_line(p,bufptr,buflen,actlen,s) */ 1 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 24 /* put_chars(p,bufptr,buflen,s) */ 1 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 26 /* modes(p,newmode,oldmode,s) */ 1 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 28 /* position(p,u1,u2,s) */ 1 29 2 control entry (ptr, char (*), ptr, fixed (35)), 1 30 /* control(p,order,infptr,s) */ 1 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 32 /* read_record(p,bufptr,buflen,actlen,s) */ 1 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 34 /* write_record(p,bufptr,buflen,s) */ 1 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 36 /* rewrite_record(p,bufptr,buflen,s) */ 1 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 39 /* seek_key(p,key,len,s) */ 1 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 41 /* read_key(p,key,len,s) */ 1 42 2 read_length entry (ptr, fixed (21), fixed (35)), 1 43 /* read_length(p,len,s) */ 1 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 1 45 /* open_file(p,mode,desc,not_used,s) */ 1 46 2 close_file entry (ptr, char (*), fixed bin (35)), 1 47 /* close_file(p,desc,s) */ 1 48 2 detach entry (ptr, char (*), fixed bin (35)); 1 49 /* detach(p,desc,s) */ 1 50 1 51 declare iox_$iocb_version_sentinel 1 52 character (4) aligned external static; 1 53 1 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 511 2 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 2 2 2 3 /* Written 05/04/78 by C. D. Tavares */ 2 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 2 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 2 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 2 7 2 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 2 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 2 10 iox_$close entry (pointer, fixed bin (35)), 2 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 2 12 iox_$delete_record entry (pointer, fixed bin (35)), 2 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 2 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 2 15 iox_$err_not_attached entry options (variable), 2 16 iox_$err_not_closed entry options (variable), 2 17 iox_$err_no_operation entry options (variable), 2 18 iox_$err_not_open entry options (variable), 2 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 2 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 2 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 2 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 2 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 2 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 2 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 2 28 iox_$propagate entry (pointer), 2 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 2 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 2 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 2 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 2 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 2 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 2 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 2 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 2 40 2 41 dcl (iox_$user_output, 2 42 iox_$user_input, 2 43 iox_$user_io, 2 44 iox_$error_output) external static pointer; 2 45 2 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 512 3 1 /* Begin include file ..... iox_modes.incl.pl1 */ 3 2 3 3 /* Written by C. D. Tavares, 03/17/75 */ 3 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 3 5 3 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 3 7 ("stream_input", "stream_output", "stream_input_output", 3 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 3 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 3 10 "direct_input", "direct_output", "direct_update"); 3 11 3 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 3 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 3 14 3 15 dcl (Stream_input initial (1), 3 16 Stream_output initial (2), 3 17 Stream_input_output initial (3), 3 18 Sequential_input initial (4), 3 19 Sequential_output initial (5), 3 20 Sequential_input_output initial (6), 3 21 Sequential_update initial (7), 3 22 Keyed_sequential_input initial (8), 3 23 Keyed_sequential_output initial (9), 3 24 Keyed_sequential_update initial (10), 3 25 Direct_input initial (11), 3 26 Direct_output initial (12), 3 27 Direct_update initial (13)) fixed bin int static options (constant); 3 28 3 29 /* End include file ..... iox_modes.incl.pl1 */ 513 514 515 end discard_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/14/86 1422.0 discard_.pl1 >spec>install>1126>discard_.pl1 511 1 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 512 2 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 513 3 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.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. Code parameter fixed bin(35,0) dcl 35 set ref 95 107* 121* 133 146* 158 171* 275* 286 313* 324 327* 338 340* 351 354* 365 367* 378 380* 382* 393 396* 407 409* 420 422* 433 436* 447 450* Direct_input constant fixed bin(17,0) initial dcl 3-15 ref 241 Direct_output constant fixed bin(17,0) initial dcl 3-15 ref 247 Direct_update constant fixed bin(17,0) initial dcl 3-15 ref 252 IOCB based structure level 1 dcl 59 Iocb_ptr parameter pointer dcl 38 ref 95 99 133 136 158 164 286 292 324 338 351 365 378 393 407 420 433 447 Keyed_sequential_input constant fixed bin(17,0) initial dcl 3-15 ref 217 Keyed_sequential_output constant fixed bin(17,0) initial dcl 3-15 ref 225 Keyed_sequential_update constant fixed bin(17,0) initial dcl 3-15 ref 230 Sequential_input constant fixed bin(17,0) initial dcl 3-15 ref 190 Sequential_input_output constant fixed bin(17,0) initial dcl 3-15 ref 201 Sequential_output constant fixed bin(17,0) initial dcl 3-15 ref 196 Sequential_update constant fixed bin(17,0) initial dcl 3-15 ref 208 Stream_input constant fixed bin(17,0) initial dcl 3-15 ref 175 Stream_input_output constant fixed bin(17,0) initial dcl 3-15 ref 183 Stream_output constant fixed bin(17,0) initial dcl 3-15 ref 181 actlen parameter fixed bin(21,0) dcl 31 set ref 324 326* 393 395* 447 449* actual_iocb_ptr 12 based pointer level 2 dcl 1-6 ref 164 292 addr builtin function dcl 84 ref 113 265 any_other 000106 stack reference condition dcl 88 ref 101 138 162 290 args parameter varying char array dcl 32 ref 95 attach based varying char(8) level 2 dcl 61 set ref 111* 113 attach_data_ptr 16 based pointer level 2 dcl 59 set ref 114* 140 141* 165 293 attach_descrip_ptr 14 based pointer level 2 dcl 59 set ref 104 113* 141* based_area based area(1024) dcl 57 ref 110 blk based structure level 1 dcl 61 set ref 110 147 blkptr 000100 automatic pointer dcl 51 set ref 110* 111 112 113 114 140* 147 165* 167 263 263 265 293* buflen parameter fixed bin(21,0) dcl 33 ref 324 338 393 407 bufptr parameter pointer dcl 34 ref 324 338 393 407 cleanup 000114 stack reference condition dcl 89 ref 100 137 161 289 close 36 based entry variable level 2 dcl 59 set ref 268* 297* com_err_ 000010 constant entry external dcl 67 ref 106 continue_to_signal_ 000012 constant entry external dcl 68 ref 471 control 66 based entry variable level 2 dcl 59 set ref 118* 270* 303* delete_record 106 based entry variable level 2 dcl 59 set ref 213* 232* 255* 307* detach_iocb 26 based entry variable level 2 dcl 59 set ref 115* 142* 266* 295* error_table_$bad_mode 000022 external static fixed bin(35,0) dcl 75 ref 171 error_table_$end_of_info 000024 external static fixed bin(35,0) dcl 76 ref 327 396 error_table_$no_operation 000032 external static fixed bin(35,0) dcl 80 ref 380 error_table_$no_record 000026 external static fixed bin(35,0) dcl 77 ref 422 436 450 error_table_$not_detached 000030 external static fixed bin(35,0) dcl 78 set ref 106* 107 extend_bit parameter bit(1) dcl 36 ref 158 263 get_chars 46 based entry variable level 2 dcl 59 set ref 177* 185* 299* get_line 42 based entry variable level 2 dcl 59 set ref 176* 184* 298* get_system_free_area_ 000014 constant entry external dcl 69 ref 110 hbound builtin function dcl 84 ref 167 hcs_$reset_ips_mask 000020 constant entry external dcl 71 ref 120 145 273 312 469 488 hcs_$set_ips_mask 000016 constant entry external dcl 70 ref 102 139 163 291 infptr parameter pointer dcl 37 ref 378 iocb based structure level 1 dcl 1-6 iocb_ptr 000102 automatic pointer dcl 52 set ref 99* 104 113 114 115 116 117 118 119* 136* 140 141 141 142 143 144* 164* 165 176 177 178 181 184 185 186 187 191 192 193 197 198 202 203 204 205 209 210 211 212 213 214 218 219 220 221 222 226 227 231 232 233 234 235 236 237 238 242 243 244 248 249 253 254 255 256 257 258 265 266 267 268 269 270 272* 292* 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311* iox_$err_not_attached 000034 constant entry external dcl 2-8 ref 142 143 iox_$err_not_closed 000036 constant entry external dcl 2-8 ref 266 267 iox_$err_not_open 000040 constant entry external dcl 2-8 ref 117 118 297 298 299 300 301 302 303 304 305 306 307 308 309 310 iox_$propagate 000042 constant entry external dcl 2-8 ref 119 144 272 311 iox_modes 000000 constant char(24) initial array dcl 3-6 ref 167 167 167 key parameter varying char(256) dcl 39 ref 433 lbound builtin function dcl 84 ref 167 len parameter fixed bin(21,0) dcl 40 set ref 433 435* loud_sw parameter bit(1) dcl 41 ref 95 106 mask 000104 automatic bit(36) dcl 53 set ref 98* 102* 120* 120* 135* 139* 145* 145* 160* 163* 273* 273* 288* 291* 312* 312* 469 469* 469* 488 488* 488* mode parameter fixed bin(17,0) dcl 42 ref 158 167 167 167 175 181 183 190 196 201 208 217 225 230 241 247 252 modes 56 based entry variable level 2 dcl 59 set ref 117* 269* 301* newmode parameter char unaligned dcl 43 ref 351 null builtin function dcl 84 ref 104 141 294 oldmode parameter char unaligned dcl 44 set ref 351 353* open 3 based varying char(31) level 2 in structure "blk" dcl 61 in procedure "discard_" set ref 112* 167* 263* 263 265 open 32 based entry variable level 2 in structure "IOCB" dcl 59 in procedure "discard_" set ref 116* 143* 267* 296* open_descrip_ptr 20 based pointer level 2 dcl 59 set ref 265* 294* order parameter char unaligned dcl 45 ref 378 380 position 62 based entry variable level 2 dcl 59 set ref 178* 187* 193* 198* 205* 214* 220* 234* 302* position_n parameter fixed bin(21,0) dcl 47 ref 365 position_type parameter fixed bin(17,0) dcl 46 ref 365 put_chars 52 based entry variable level 2 dcl 59 set ref 181* 186* 300* read_key 116 based entry variable level 2 dcl 59 set ref 222* 236* 309* read_length 122 based entry variable level 2 dcl 59 set ref 192* 203* 210* 219* 233* 243* 256* 310* read_record 72 based entry variable level 2 dcl 59 set ref 191* 202* 209* 218* 231* 242* 253* 304* rewrite_record 102 based entry variable level 2 dcl 59 set ref 212* 238* 254* 306* seek_key 112 based entry variable level 2 dcl 59 set ref 221* 227* 235* 244* 249* 257* 308* substr builtin function dcl 84 ref 469 488 write_record 76 based entry variable level 2 dcl 59 set ref 197* 204* 211* 226* 237* 248* 258* 305* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. error_table_$wrong_no_of_args external static fixed bin(35,0) dcl 79 iox_$attach_loud 000000 constant entry external dcl 2-8 iox_$attach_name 000000 constant entry external dcl 2-8 iox_$attach_ptr 000000 constant entry external dcl 2-8 iox_$close 000000 constant entry external dcl 2-8 iox_$close_file 000000 constant entry external dcl 2-8 iox_$control 000000 constant entry external dcl 2-8 iox_$delete_record 000000 constant entry external dcl 2-8 iox_$destroy_iocb 000000 constant entry external dcl 2-8 iox_$detach 000000 constant entry external dcl 2-8 iox_$detach_iocb 000000 constant entry external dcl 2-8 iox_$err_no_operation 000000 constant entry external dcl 2-8 iox_$error_output external static pointer dcl 2-41 iox_$find_iocb 000000 constant entry external dcl 2-8 iox_$find_iocb_n 000000 constant entry external dcl 2-8 iox_$get_chars 000000 constant entry external dcl 2-8 iox_$get_line 000000 constant entry external dcl 2-8 iox_$iocb_version_sentinel external static char(4) dcl 1-51 iox_$look_iocb 000000 constant entry external dcl 2-8 iox_$modes 000000 constant entry external dcl 2-8 iox_$move_attach 000000 constant entry external dcl 2-8 iox_$open 000000 constant entry external dcl 2-8 iox_$open_file 000000 constant entry external dcl 2-8 iox_$position 000000 constant entry external dcl 2-8 iox_$put_chars 000000 constant entry external dcl 2-8 iox_$read_key 000000 constant entry external dcl 2-8 iox_$read_length 000000 constant entry external dcl 2-8 iox_$read_record 000000 constant entry external dcl 2-8 iox_$rewrite_record 000000 constant entry external dcl 2-8 iox_$seek_key 000000 constant entry external dcl 2-8 iox_$user_input external static pointer dcl 2-41 iox_$user_io external static pointer dcl 2-41 iox_$user_output external static pointer dcl 2-41 iox_$write_record 000000 constant entry external dcl 2-8 short_iox_modes internal static char(4) initial array dcl 3-12 NAMES DECLARED BY EXPLICIT CONTEXT. Any_Other_Handler 002015 constant entry internal dcl 466 ref 101 138 162 290 Cleanup_Handler 002047 constant entry internal dcl 485 ref 100 105 137 161 170 289 GOTO_RETURN 002070 constant entry internal dcl 502 ref 123 148 172 276 314 328 341 355 368 383 397 410 423 437 451 RETURN 000155 constant label dcl 26 set ref 505 discard_ 000150 constant entry external dcl 23 discard_attach 000163 constant entry external dcl 95 discard_close 001310 constant entry external dcl 286 ref 268 discard_control 001632 constant entry external dcl 378 ref 270 discard_delete 001727 constant entry external dcl 420 ref 213 232 255 discard_detach 000415 constant entry external dcl 133 ref 115 295 discard_get_chars 001504 constant entry external dcl 324 ref 176 177 184 185 discard_modes 001551 constant entry external dcl 351 ref 269 discard_open 000557 constant entry external dcl 158 ref 116 296 discard_position 001612 constant entry external dcl 365 ref 178 187 193 198 205 214 220 234 discard_put_chars 001531 constant entry external dcl 338 ref 181 186 discard_read 001670 constant entry external dcl 393 ref 191 202 209 218 231 242 253 discard_read_length 001774 constant entry external dcl 447 ref 192 203 210 219 233 243 256 discard_seek_key 001751 constant entry external dcl 433 ref 221 222 227 235 236 244 249 257 discard_write 001712 constant entry external dcl 407 ref 197 204 211 212 226 237 238 248 254 258 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2540 2604 2074 2550 Length 3114 2074 44 274 443 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME discard_ 113 external procedure is an external procedure. on unit on line 100 64 on unit on unit on line 101 64 on unit on unit on line 137 64 on unit on unit on line 138 64 on unit on unit on line 161 64 on unit on unit on line 162 64 on unit on unit on line 289 64 on unit on unit on line 290 64 on unit Any_Other_Handler 71 internal procedure is called by several nonquick procedures. Cleanup_Handler 70 internal procedure is called by several nonquick procedures. GOTO_RETURN internal procedure shares stack frame of external procedure discard_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME discard_ 000100 blkptr discard_ 000102 iocb_ptr discard_ 000104 mask discard_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ continue_to_signal_ get_system_free_area_ hcs_$reset_ips_mask hcs_$set_ips_mask iox_$err_not_attached iox_$err_not_closed iox_$err_not_open iox_$propagate THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_mode error_table_$end_of_info error_table_$no_operation error_table_$no_record error_table_$not_detached LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 000147 26 000155 95 000156 98 000201 99 000202 100 000206 101 000230 102 000252 104 000265 105 000272 106 000276 107 000321 108 000324 110 000325 111 000341 112 000346 113 000347 114 000352 115 000353 116 000357 117 000362 118 000366 119 000370 120 000376 121 000406 123 000407 133 000410 135 000425 136 000426 137 000432 138 000454 139 000476 140 000511 141 000514 142 000520 143 000525 144 000527 145 000535 146 000545 147 000546 148 000550 158 000551 160 000567 161 000570 162 000612 163 000634 164 000647 165 000654 167 000656 170 000674 171 000700 172 000703 175 000704 176 000710 177 000715 178 000717 179 000722 181 000723 183 000733 184 000735 185 000742 186 000744 187 000747 188 000752 190 000753 191 000755 192 000762 193 000765 194 000770 196 000771 197 000773 198 001000 199 001003 201 001004 202 001006 203 001013 204 001016 205 001021 206 001024 208 001025 209 001027 210 001034 211 001037 212 001042 213 001044 214 001047 215 001052 217 001053 218 001055 219 001062 220 001065 221 001070 222 001073 223 001075 225 001076 226 001100 227 001105 228 001110 230 001111 231 001113 232 001120 233 001123 234 001126 235 001131 236 001134 237 001136 238 001141 239 001143 241 001144 242 001146 243 001153 244 001156 245 001161 247 001162 248 001164 249 001171 250 001174 252 001175 253 001177 254 001204 255 001207 256 001212 257 001215 258 001220 263 001223 265 001241 266 001245 267 001252 268 001254 269 001257 270 001262 272 001265 273 001273 275 001303 276 001304 286 001305 288 001320 289 001321 290 001343 291 001365 292 001400 293 001405 294 001407 295 001411 296 001415 297 001420 298 001424 299 001426 300 001430 301 001432 302 001434 303 001436 304 001440 305 001442 306 001444 307 001446 308 001450 309 001452 310 001454 311 001456 312 001464 313 001474 314 001475 324 001476 326 001516 327 001517 328 001522 338 001523 340 001541 341 001542 351 001543 353 001574 354 001602 355 001603 365 001604 367 001622 368 001623 378 001624 380 001650 382 001663 383 001664 393 001665 395 001702 396 001703 397 001706 407 001707 409 001722 410 001723 420 001724 422 001737 423 001742 433 001743 435 001761 436 001763 437 001766 447 001767 449 002006 450 002007 451 002012 515 002013 466 002014 469 002022 471 002035 473 002045 485 002046 488 002054 490 002067 502 002070 505 002071 ----------------------------------------------------------- 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