COMPILATION LISTING OF SEGMENT log_output_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/17/85 0837.6 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 /* attach/detach/open/close for the log_output_ io module */ 7 8 /* format: style2 */ 9 10 /**** Written 1984-10 BIM */ 11 /**** Modified 1984-10-22 BIM for control orders */ 12 13 log_output_$log_output_attach: 14 procedure (IOCB_ptr, Options, Com_err_sw, Code); 15 16 declare ( 17 IOCB_ptr pointer, 18 Options dimension (*) character (*) varying, 19 Com_err_sw bit (1) aligned, 20 Code fixed bin (35), 21 Reserved bit (1) aligned, 22 Mode fixed bin 23 ) parameter; 24 25 1 1 /* BEGIN INCLUDE FILE log_output_attach_data_.incl.pl1 BIM 28-03-1981 */ 1 2 /* format: style3,idind30 */ 1 3 1 4 /* This is the IOX attach data block for the log_output_ io module. */ 1 5 1 6 declare attach_data_ptr pointer; 1 7 declare 1 attach_data aligned based (attach_data_ptr), 1 8 2 open_mode fixed bin, /* the usual iox open mode */ 1 9 2 log_info_ptr pointer, /* log_mgr_ info pointer */ 1 10 2 flags aligned, 1 11 ( 3 binary_data, /* binary being tacked onto each record */ 1 12 3 create_ok /* create-if-not-found */ 1 13 ) bit (1) unaligned, 1 14 3 pad bit (34) unaligned, 1 15 2 severity fixed bin, /* supplied in atd, valid only for stream */ 1 16 2 dir_name character (168) unaligned, 1 17 2 entryname character (32) unaligned, 1 18 2 attach_description character (512) varying, 1 19 2 open_description character (64) varying, 1 20 2 mode_string character (64) varying, 1 21 2 buffer_area_ptr pointer, 1 22 2 buffer_chain aligned, /* for assembling lines */ 1 23 3 total_buffered_length fixed bin (21), 1 24 3 head pointer options (packed), 1 25 3 tail pointer options (packed), 1 26 2 binary_data_class char (16) varying, 1 27 2 binary_data_length fixed bin (18), 1 28 2 binary_data_ptr pointer; 1 29 1 30 declare buffer_area area based (attach_data.buffer_area_ptr); 1 31 declare buffer_ptr pointer; 1 32 declare buffer_length fixed bin (21); 1 33 declare 1 buffer aligned based (buffer_ptr), 1 34 2 length fixed bin (21), 1 35 2 next pointer unaligned, 1 36 2 data char (buffer_length refer (buffer.length)) unaligned; 1 37 1 38 1 39 declare binary_data (attach_data.binary_data_length) bit (36) aligned 1 40 based (attach_data.binary_data_ptr); 1 41 1 42 /* END INCLUDE FILE log_output_attach_data_.incl.pl1 */ 26 27 2 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 2 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 2 3* version number to IOX2. */ 2 4 /* format: style2 */ 2 5 2 6 dcl 1 iocb aligned based, /* I/O control block. */ 2 7 2 version character (4) aligned, /* IOX2 */ 2 8 2 name char (32), /* I/O name of this block. */ 2 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 2 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 2 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 2 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 2 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 2 14 2 reserved bit (72), /* Reserved for future use. */ 2 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 2 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 2 17 /* open(p,mode,not_used,s) */ 2 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 2 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 20 /* get_line(p,bufptr,buflen,actlen,s) */ 2 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 2 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 2 24 /* put_chars(p,bufptr,buflen,s) */ 2 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 2 26 /* modes(p,newmode,oldmode,s) */ 2 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 2 28 /* position(p,u1,u2,s) */ 2 29 2 control entry (ptr, char (*), ptr, fixed (35)), 2 30 /* control(p,order,infptr,s) */ 2 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 32 /* read_record(p,bufptr,buflen,actlen,s) */ 2 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 2 34 /* write_record(p,bufptr,buflen,s) */ 2 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 2 36 /* rewrite_record(p,bufptr,buflen,s) */ 2 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 2 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 2 39 /* seek_key(p,key,len,s) */ 2 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 2 41 /* read_key(p,key,len,s) */ 2 42 2 read_length entry (ptr, fixed (21), fixed (35)), 2 43 /* read_length(p,len,s) */ 2 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 2 45 /* open_file(p,mode,desc,not_used,s) */ 2 46 2 close_file entry (ptr, char (*), fixed bin (35)), 2 47 /* close_file(p,desc,s) */ 2 48 2 detach entry (ptr, char (*), fixed bin (35)); 2 49 /* detach(p,desc,s) */ 2 50 2 51 declare iox_$iocb_version_sentinel 2 52 character (4) aligned external static; 2 53 2 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 28 29 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 */ 30 4 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 4 2 4 3 /* Written 05/04/78 by C. D. Tavares */ 4 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 4 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 4 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 4 7 4 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 4 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 4 10 iox_$close entry (pointer, fixed bin (35)), 4 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 4 12 iox_$delete_record entry (pointer, fixed bin (35)), 4 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 4 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 4 15 iox_$err_not_attached entry options (variable), 4 16 iox_$err_not_closed entry options (variable), 4 17 iox_$err_no_operation entry options (variable), 4 18 iox_$err_not_open entry options (variable), 4 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 4 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 4 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 4 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 4 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 4 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 4 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 4 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 4 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 4 28 iox_$propagate entry (pointer), 4 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 4 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 4 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 4 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 4 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 4 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 4 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 4 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 4 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 4 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 4 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 4 40 4 41 dcl (iox_$user_output, 4 42 iox_$user_input, 4 43 iox_$user_io, 4 44 iox_$error_output) external static pointer; 4 45 4 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 31 5 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 5 2 5 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 5 4 5 5 dcl area_infop ptr; 5 6 5 7 dcl 1 area_info aligned based (area_infop), 5 8 2 version fixed bin, /* version number for this structure is 1 */ 5 9 2 control aligned like area_control, /* control bits for the area */ 5 10 2 owner char (32) unal, /* creator of the area */ 5 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 5 12 2 size fixed bin (18), /* size of the area in words */ 5 13 2 version_of_area fixed bin, /* version of area (returned only) */ 5 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 5 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 5 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 5 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 5 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 5 19 5 20 dcl 1 area_control aligned based, 5 21 2 extend bit (1) unal, /* says area is extensible */ 5 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 5 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 5 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 5 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 5 26 2 system bit (1) unal, /* says area is managed by system */ 5 27 2 pad bit (30) unal; 5 28 5 29 /* END INCLUDE FILE area_info.incl.pl1 */ 32 33 34 35 declare cleanup_proc entry variable; 36 declare code fixed bin (35); 37 declare iocb_ptr pointer; 38 declare saved_mask bit (36) aligned; 39 declare 1 IOCB aligned like iocb based (iocb_ptr); 40 41 declare define_area_ entry (pointer, fixed binary (35)); 42 declare expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 43 declare release_area_ entry (pointer); 44 45 declare ( 46 hcs_$set_ips_mask, 47 hcs_$reset_ips_mask 48 ) entry (bit (36) aligned, bit (36) aligned); 49 50 51 declare ( 52 log_output_io_$modes, 53 log_output_io_$control, 54 log_output_io_$put_chars 55 ) entry external; 56 declare log_output_io_$flush_pending_output 57 entry (pointer, fixed binary (35)); 58 declare log_write_$open entry (character (*), character (*), bit (1) aligned, pointer, fixed binary (35)) 59 ; 60 declare log_write_$close entry (pointer, fixed binary (35)); 61 62 declare sys_info$max_seg_size fixed bin (35) ext static; 63 declare ( 64 error_table_$badopt, 65 error_table_$bad_mode, 66 error_table_$improper_data_format, 67 error_table_$too_many_args, 68 error_table_$not_detached, 69 error_table_$noentry 70 ) fixed bin (35) external static; 71 72 declare cleanup condition; 73 declare ME character (32) init ("log_output_") internal static options (constant); 74 75 /* attach entrypoint */ 76 77 if IOCB_ptr -> iocb.attach_descrip_ptr ^= null () 78 then do; 79 Code = error_table_$not_detached; 80 return; 81 end; 82 attach_data_ptr = null (); 83 on cleanup call cleanup_attach; 84 call setup_attach; 85 call parse_atd; /* creates an attach data structure */ 86 call define_buffer_area; 87 call attach_switch; /* connects up iocb */ 88 return; 89 90 lo_detach: 91 entry (IOCB_ptr, Code); 92 call setup; /* actual_iocb_ptr */ 93 IOCB.attach_descrip_ptr = null (); 94 call release_area_ (attach_data.buffer_area_ptr); 95 free attach_data; 96 call propagate; 97 go to return_; 98 99 lo_close: 100 entry (IOCB_ptr, Code); 101 call setup; 102 103 call log_output_io_$flush_pending_output (addr (attach_data), (0)); 104 call log_write_$close (attach_data.log_info_ptr, (0)); 105 call mask; 106 IOCB.open = lo_open; 107 IOCB.detach_iocb = lo_detach; 108 IOCB.modes = iox_$err_not_open; 109 IOCB.control = iox_$err_not_open; 110 IOCB.open_descrip_ptr = null (); 111 call unmask; 112 call propagate; 113 114 go to return_; 115 116 117 118 lo_open: 119 entry (IOCB_ptr, Mode, Reserved, Code); 120 121 call setup; /* get actual_iocb_ptr, et al */ 122 123 if Mode = Stream_output 124 then do; 125 attach_data.open_mode = Stream_output; /* compiler should be cleverer with constant */ 126 attach_data.open_description = iox_modes (Stream_output); 127 call init_modes; 128 129 end; 130 else do; 131 code = error_table_$bad_mode; 132 go to return_; 133 end; 134 135 on cleanup call cleanup_open; 136 cleanup_proc = cleanup_open; /* for the benefit of return_ */ 137 138 call log_write_$open (attach_data.dir_name, attach_data.entryname, (attach_data.create_ok), 139 attach_data.log_info_ptr, code); 140 if code ^= 0 141 then go to return_; /* not according to log_mgr_ contract */ 142 143 call mask; 144 IOCB.open_descrip_ptr = addr (attach_data.open_description); 145 IOCB.put_chars = log_output_io_$put_chars; 146 IOCB.modes = log_output_io_$modes; 147 IOCB.control = log_output_io_$control; 148 IOCB.close = lo_close; 149 call unmask; 150 call propagate; 151 cleanup_proc = nulle; /* we do not want to clean up */ 152 go to return_; 153 154 return_: 155 call cleanup_proc; 156 Code = code; 157 return; 158 159 160 setup_attach: 161 procedure; 162 163 declare get_system_free_area_ entry () returns (ptr); 164 declare system_free_area area (1024 /*irrelevant*/) based (get_system_free_area_ ()); 165 166 iocb_ptr = IOCB_ptr; /* not actual iocb ptr for the attact entrypoint */ 167 cleanup_proc = cleanup_attach; /* return_ will call this */ 168 169 allocate attach_data in (system_free_area) set (attach_data_ptr); 170 attach_data.buffer_area_ptr = null (); /* window here, if we cleanup before this is executed */ 171 attach_data.open_mode = 0; 172 attach_data.log_info_ptr = null (); 173 string (attach_data.flags) = ""b; 174 attach_data.binary_data_class = ""; 175 attach_data.binary_data_ptr = null (); 176 attach_data.binary_data_length = 0; 177 attach_data.dir_name, attach_data.entryname = ""; 178 attach_data.attach_description, attach_data.open_description = ""; 179 attach_data.buffer_chain.head = null (); 180 attach_data.buffer_chain.tail = null (); 181 attach_data.create_ok = "1"b; /* on by default */ 182 code = 0; 183 end setup_attach; 184 185 186 parse_atd: 187 procedure; 188 189 declare current_option fixed bin; 190 declare last_option fixed bin; 191 declare option_length fixed bin (21); 192 193 current_option = lbound (Options, 1); 194 last_option = hbound (Options, 1); 195 option_length = maxlength (Options (1)); /* same answer for all of them */ 196 if last_option = 0 197 then call attach_error (0, "Usage: log_output_ LOG_PATHNAME {-control_args}"); 198 /* it does not return */ 199 do while (current_option <= last_option); 200 begin; 201 declare option character (option_length) varying defined (Options (current_option)); 202 declare next_option character (option_length) varying 203 defined (Options (current_option + 1)); 204 205 if index (option, "-") ^= 1 206 then do; /* not a control argument */ 207 if attach_data.entryname ^= "" 208 then call attach_error (error_table_$too_many_args, "Only one pathname may be given."); 209 call expand_pathname_ ((option), attach_data.dir_name, attach_data.entryname, code); 210 if code ^= 0 211 then call attach_error (code, (option)); 212 end; /* pathname taken care of */ 213 else do; /* control argument */ 214 if option = "-create" 215 then attach_data.create_ok = "1"b; 216 else if option = "-no_create" 217 then attach_data.create_ok = "0"b; 218 else call attach_error (error_table_$badopt, (option)); 219 end; 220 end; 221 current_option = current_option + 1; 222 end; 223 /*** The atd is now parse'd. so much for this */ 224 225 attach_data.attach_description = 226 rtrim (ME) || " " || rtrim (attach_data.dir_name) || ">" || rtrim (attach_data.entryname); 227 if attach_data.create_ok 228 then attach_data.attach_description = attach_data.attach_description || " -create"; 229 else attach_data.attach_description = attach_data.attach_description || " -no_create"; 230 231 end parse_atd; 232 233 234 attach_switch: 235 procedure; 236 237 call mask; 238 IOCB.open = lo_open; 239 IOCB.detach_iocb = lo_detach; 240 IOCB.attach_data_ptr = attach_data_ptr; 241 IOCB.attach_descrip_ptr = addr (attach_data.attach_description); 242 call unmask; 243 call propagate; 244 end attach_switch; 245 246 247 setup: 248 procedure; 249 250 cleanup_proc = nulle; 251 iocb_ptr = IOCB_ptr -> iocb.actual_iocb_ptr; 252 code = 0; 253 attach_data_ptr = IOCB.attach_data_ptr; 254 saved_mask = ""b; 255 end setup; 256 257 mask: 258 procedure; 259 call hcs_$set_ips_mask (""b, saved_mask); 260 return; 261 262 unmask: 263 entry; 264 call hcs_$reset_ips_mask (saved_mask, saved_mask); 265 return; 266 end mask; 267 268 propagate: 269 procedure; 270 call iox_$propagate (iocb_ptr); 271 end propagate; 272 273 cleanup_open: 274 procedure; 275 if attach_data.log_info_ptr ^= null () 276 then call log_write_$close (attach_data.log_info_ptr, (0)); 277 end cleanup_open; 278 279 cleanup_attach: 280 procedure; 281 if attach_data_ptr ^= null () 282 then do; 283 if unspec (attach_data.buffer_area_ptr) ^= ""b & attach_data.buffer_area_ptr ^= null 284 then call release_area_ (attach_data.buffer_area_ptr); 285 free attach_data; 286 end; 287 end cleanup_attach; 288 289 290 attach_error: 291 procedure (code, reason); 292 293 declare code fixed bin (35); 294 declare reason character (*); 295 296 declare com_err_ entry () options (variable); 297 declare sub_err_ entry () options (variable); 298 299 if Com_err_sw 300 then call com_err_ (code, ME, "^a.", reason); 301 else call sub_err_ (code, "Log output attach", "h", null (), (0), "^a", reason); 302 go to return_; 303 end attach_error; 304 305 init_modes: 306 procedure; 307 308 attach_data.mode_string = "severity=0."; 309 310 end init_modes; 311 312 nulle: 313 procedure; 314 end nulle; 315 316 define_buffer_area: 317 procedure; 318 319 declare 1 AI aligned like area_info; 320 321 unspec (AI) = ""b; 322 AI.version = area_info_version_1; 323 AI.owner = "log_output_ buffers"; 324 AI.size = sys_info$max_seg_size; 325 AI.areap = null (); 326 AI.control.extend = "1"b; 327 call define_area_ (addr (AI), code); 328 if code ^= 0 329 then call attach_error (code, "Failed to define buffer area."); 330 attach_data.buffer_area_ptr = AI.areap; 331 return; 332 end define_buffer_area; 333 334 335 end log_output_$log_output_attach; 336 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/17/85 0834.6 log_output_.pl1 >special_ldd>online>41-4>log_output_.pl1 26 1 01/10/85 1340.2 log_output_attach_data_.incl.pl1 >special_ldd>online>41-4>log_output_attach_data_.incl.pl1 28 2 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 30 3 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 31 4 05/23/83 0916.6 iox_entries.incl.pl1 >ldd>include>iox_dcls.incl.pl1 32 5 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. AI 000212 automatic structure level 1 dcl 319 set ref 321* 327 327 Code parameter fixed bin(35,0) dcl 16 set ref 13 79* 90 99 118 156* Com_err_sw parameter bit(1) dcl 16 ref 13 299 IOCB based structure level 1 dcl 39 IOCB_ptr parameter pointer dcl 16 ref 13 77 90 99 118 166 251 ME 000000 constant char(32) initial unaligned dcl 73 set ref 225 299* Mode parameter fixed bin(17,0) dcl 16 ref 118 123 Options parameter varying char array dcl 16 ref 13 193 194 195 205 205 209 209 210 210 214 214 216 216 218 218 Reserved parameter bit(1) dcl 16 ref 118 Stream_output constant fixed bin(17,0) initial dcl 3-15 ref 123 125 126 actual_iocb_ptr 12 based pointer level 2 dcl 2-6 ref 251 area_control based structure level 1 dcl 5-20 area_info based structure level 1 dcl 5-7 area_info_version_1 constant fixed bin(17,0) initial dcl 5-3 ref 322 areap 16 000212 automatic pointer level 2 dcl 319 set ref 325* 330 attach_data based structure level 1 dcl 1-7 set ref 95 103 103 169 285 attach_data_ptr 000100 automatic pointer dcl 1-6 in procedure "log_output_$log_output_attach" set ref 82* 94 95 103 103 104 125 126 138 138 138 138 144 169* 170 171 172 173 174 175 176 177 177 178 178 179 180 181 207 209 209 214 216 225 225 225 227 227 227 229 229 240 241 253* 275 275 281 283 283 283 285 308 330 attach_data_ptr 16 based pointer level 2 in structure "IOCB" dcl 39 in procedure "log_output_$log_output_attach" set ref 240* 253 attach_descrip_ptr 14 based pointer level 2 in structure "IOCB" dcl 39 in procedure "log_output_$log_output_attach" set ref 93* 241* attach_descrip_ptr 14 based pointer level 2 in structure "iocb" dcl 2-6 in procedure "log_output_$log_output_attach" ref 77 attach_description 70 based varying char(512) level 2 dcl 1-7 set ref 178* 225* 227* 227 229* 229 241 binary_data_class 341 based varying char(16) level 2 dcl 1-7 set ref 174* binary_data_length 346 based fixed bin(18,0) level 2 dcl 1-7 set ref 176* binary_data_ptr 350 based pointer level 2 dcl 1-7 set ref 175* buffer_area_ptr 334 based pointer level 2 dcl 1-7 set ref 94* 170* 283 283 283* 330* buffer_chain 336 based structure level 2 dcl 1-7 cleanup 000114 stack reference condition dcl 72 ref 83 135 cleanup_proc 000102 automatic entry variable dcl 35 set ref 136* 151* 154 167* 250* close 36 based entry variable level 2 dcl 39 set ref 148* code parameter fixed bin(35,0) dcl 293 in procedure "attach_error" set ref 290 299* 301* code 000106 automatic fixed bin(35,0) dcl 36 in procedure "log_output_$log_output_attach" set ref 131* 138* 140 156 182* 209* 210 210* 252* 327* 328 328* com_err_ 000056 constant entry external dcl 296 ref 299 control 66 based entry variable level 2 in structure "IOCB" dcl 39 in procedure "log_output_$log_output_attach" set ref 109* 147* control 1 000212 automatic structure level 2 in structure "AI" dcl 319 in procedure "define_buffer_area" create_ok 4(01) based bit(1) level 3 packed unaligned dcl 1-7 set ref 138 181* 214* 216* 227 current_option 000140 automatic fixed bin(17,0) dcl 189 set ref 193* 199 205 209 210 214 216 218 221* 221 define_area_ 000014 constant entry external dcl 41 ref 327 detach_iocb 26 based entry variable level 2 dcl 39 set ref 107* 239* dir_name 6 based char(168) level 2 packed unaligned dcl 1-7 set ref 138* 177* 209* 225 entryname 60 based char(32) level 2 packed unaligned dcl 1-7 set ref 138* 177* 207 209* 225 error_table_$bad_mode 000046 external static fixed bin(35,0) dcl 63 ref 131 error_table_$badopt 000044 external static fixed bin(35,0) dcl 63 set ref 218* error_table_$not_detached 000052 external static fixed bin(35,0) dcl 63 ref 79 error_table_$too_many_args 000050 external static fixed bin(35,0) dcl 63 set ref 207* expand_pathname_ 000016 constant entry external dcl 42 ref 209 extend 1 000212 automatic bit(1) level 3 packed unaligned dcl 319 set ref 326* flags 4 based structure level 2 dcl 1-7 set ref 173* get_system_free_area_ 000054 constant entry external dcl 163 ref 169 hcs_$reset_ips_mask 000024 constant entry external dcl 45 ref 264 hcs_$set_ips_mask 000022 constant entry external dcl 45 ref 259 head 337 based pointer level 3 dcl 1-7 set ref 179* iocb based structure level 1 dcl 2-6 iocb_ptr 000110 automatic pointer dcl 37 set ref 93 106 107 108 109 110 144 145 146 147 148 166* 238 239 240 241 251* 253 270* iox_$err_not_open 000010 constant entry external dcl 4-8 ref 108 109 iox_$propagate 000012 constant entry external dcl 4-8 ref 270 iox_modes 000010 constant char(24) initial array dcl 3-6 ref 126 last_option 000141 automatic fixed bin(17,0) dcl 190 set ref 194* 196 199 log_info_ptr 2 based pointer level 2 dcl 1-7 set ref 104* 138* 172* 275 275* log_output_io_$control 000030 constant entry external dcl 51 ref 147 log_output_io_$flush_pending_output 000034 constant entry external dcl 56 ref 103 log_output_io_$modes 000026 constant entry external dcl 51 ref 146 log_output_io_$put_chars 000032 constant entry external dcl 51 ref 145 log_write_$close 000040 constant entry external dcl 60 ref 104 275 log_write_$open 000036 constant entry external dcl 58 ref 138 mode_string 312 based varying char(64) level 2 dcl 1-7 set ref 308* modes 56 based entry variable level 2 dcl 39 set ref 108* 146* open 32 based entry variable level 2 dcl 39 set ref 106* 238* open_descrip_ptr 20 based pointer level 2 dcl 39 set ref 110* 144* open_description 271 based varying char(64) level 2 dcl 1-7 set ref 126* 144 178* open_mode based fixed bin(17,0) level 2 dcl 1-7 set ref 125* 171* option defined varying char dcl 201 ref 205 209 210 214 216 218 option_length 000142 automatic fixed bin(21,0) dcl 191 set ref 195* 201 202 owner 2 000212 automatic char(32) level 2 packed unaligned dcl 319 set ref 323* put_chars 52 based entry variable level 2 dcl 39 set ref 145* reason parameter char unaligned dcl 294 set ref 290 299* 301* release_area_ 000020 constant entry external dcl 43 ref 94 283 saved_mask 000112 automatic bit(36) dcl 38 set ref 254* 259* 264* 264* size 13 000212 automatic fixed bin(18,0) level 2 dcl 319 set ref 324* sub_err_ 000060 constant entry external dcl 297 ref 301 sys_info$max_seg_size 000042 external static fixed bin(35,0) dcl 62 ref 324 system_free_area based area(1024) dcl 164 ref 169 tail 340 based pointer level 3 dcl 1-7 set ref 180* version 000212 automatic fixed bin(17,0) level 2 dcl 319 set ref 322* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input internal static fixed bin(17,0) initial dcl 3-15 Direct_output internal static fixed bin(17,0) initial dcl 3-15 Direct_update internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 3-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 3-15 Sequential_input internal static fixed bin(17,0) initial dcl 3-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_output internal static fixed bin(17,0) initial dcl 3-15 Sequential_update internal static fixed bin(17,0) initial dcl 3-15 Stream_input internal static fixed bin(17,0) initial dcl 3-15 Stream_input_output internal static fixed bin(17,0) initial dcl 3-15 area_infop automatic pointer dcl 5-5 binary_data based bit(36) array dcl 1-39 buffer based structure level 1 dcl 1-33 buffer_area based area(1024) dcl 1-30 buffer_length automatic fixed bin(21,0) dcl 1-32 buffer_ptr automatic pointer dcl 1-31 error_table_$improper_data_format external static fixed bin(35,0) dcl 63 error_table_$noentry external static fixed bin(35,0) dcl 63 iox_$attach_loud 000000 constant entry external dcl 4-8 iox_$attach_name 000000 constant entry external dcl 4-8 iox_$attach_ptr 000000 constant entry external dcl 4-8 iox_$close 000000 constant entry external dcl 4-8 iox_$close_file 000000 constant entry external dcl 4-8 iox_$control 000000 constant entry external dcl 4-8 iox_$delete_record 000000 constant entry external dcl 4-8 iox_$destroy_iocb 000000 constant entry external dcl 4-8 iox_$detach 000000 constant entry external dcl 4-8 iox_$detach_iocb 000000 constant entry external dcl 4-8 iox_$err_no_operation 000000 constant entry external dcl 4-8 iox_$err_not_attached 000000 constant entry external dcl 4-8 iox_$err_not_closed 000000 constant entry external dcl 4-8 iox_$error_output external static pointer dcl 4-41 iox_$find_iocb 000000 constant entry external dcl 4-8 iox_$find_iocb_n 000000 constant entry external dcl 4-8 iox_$get_chars 000000 constant entry external dcl 4-8 iox_$get_line 000000 constant entry external dcl 4-8 iox_$iocb_version_sentinel external static char(4) dcl 2-51 iox_$look_iocb 000000 constant entry external dcl 4-8 iox_$modes 000000 constant entry external dcl 4-8 iox_$move_attach 000000 constant entry external dcl 4-8 iox_$open 000000 constant entry external dcl 4-8 iox_$open_file 000000 constant entry external dcl 4-8 iox_$position 000000 constant entry external dcl 4-8 iox_$put_chars 000000 constant entry external dcl 4-8 iox_$read_key 000000 constant entry external dcl 4-8 iox_$read_length 000000 constant entry external dcl 4-8 iox_$read_record 000000 constant entry external dcl 4-8 iox_$rewrite_record 000000 constant entry external dcl 4-8 iox_$seek_key 000000 constant entry external dcl 4-8 iox_$user_input external static pointer dcl 4-41 iox_$user_io external static pointer dcl 4-41 iox_$user_output external static pointer dcl 4-41 iox_$write_record 000000 constant entry external dcl 4-8 next_option defined varying char dcl 202 short_iox_modes internal static char(4) initial array dcl 3-12 NAMES DECLARED BY EXPLICIT CONTEXT. attach_error 001555 constant entry internal dcl 290 ref 196 207 210 218 328 attach_switch 001370 constant entry internal dcl 234 ref 87 cleanup_attach 001517 constant entry internal dcl 279 ref 83 167 cleanup_open 001471 constant entry internal dcl 273 ref 135 136 define_buffer_area 001726 constant entry internal dcl 316 ref 86 init_modes 001707 constant entry internal dcl 305 ref 127 lo_close 000366 constant entry external dcl 99 ref 148 lo_detach 000334 constant entry external dcl 90 ref 107 239 lo_open 000457 constant entry external dcl 118 ref 106 238 log_output_$log_output_attach 000250 constant entry external dcl 13 mask 001430 constant entry internal dcl 257 ref 105 143 237 nulle 001720 constant entry internal dcl 312 ref 151 250 parse_atd 000715 constant entry internal dcl 186 ref 85 propagate 001457 constant entry internal dcl 268 ref 96 112 150 243 return_ 000633 constant label dcl 154 ref 97 114 132 140 152 302 setup 001412 constant entry internal dcl 247 ref 92 101 121 setup_attach 000642 constant entry internal dcl 160 ref 84 unmask 001445 constant entry internal dcl 262 ref 111 149 242 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 103 103 144 241 327 327 hbound builtin function ref 194 index builtin function ref 205 lbound builtin function ref 193 maxlength builtin function ref 195 null builtin function ref 77 82 93 110 170 172 175 179 180 275 281 283 301 301 325 rtrim builtin function ref 225 225 225 string builtin function ref 173 unspec builtin function set ref 283 321* STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2402 2464 2014 2412 Length 3012 2014 62 311 366 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME log_output_$log_output_attach 310 external procedure is an external procedure. on unit on line 83 64 on unit on unit on line 135 64 on unit setup_attach internal procedure shares stack frame of external procedure log_output_$log_output_attach parse_atd internal procedure shares stack frame of external procedure log_output_$log_output_attach begin block on line 200 begin block shares stack frame of external procedure log_output_$log_output_attach attach_switch internal procedure shares stack frame of external procedure log_output_$log_output_attach setup internal procedure shares stack frame of external procedure log_output_$log_output_attach mask internal procedure shares stack frame of external procedure log_output_$log_output_attach propagate internal procedure shares stack frame of external procedure log_output_$log_output_attach cleanup_open 72 internal procedure is assigned to an entry variable. cleanup_attach 68 internal procedure is assigned to an entry variable. attach_error 118 internal procedure is called during a stack extension. init_modes internal procedure shares stack frame of external procedure log_output_$log_output_attach nulle 64 internal procedure is assigned to an entry variable. define_buffer_area internal procedure shares stack frame of external procedure log_output_$log_output_attach STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME log_output_$log_output_attach 000100 attach_data_ptr log_output_$log_output_attach 000102 cleanup_proc log_output_$log_output_attach 000106 code log_output_$log_output_attach 000110 iocb_ptr log_output_$log_output_attach 000112 saved_mask log_output_$log_output_attach 000140 current_option parse_atd 000141 last_option parse_atd 000142 option_length parse_atd 000212 AI define_buffer_area THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_var call_ext_out_desc call_ext_out call_int_this_desc call_int_other return tra_ext enable shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ define_area_ expand_pathname_ get_system_free_area_ hcs_$reset_ips_mask hcs_$set_ips_mask iox_$err_not_open iox_$propagate log_output_io_$control log_output_io_$flush_pending_output log_output_io_$modes log_output_io_$put_chars log_write_$close log_write_$open release_area_ sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_mode error_table_$badopt error_table_$not_detached error_table_$too_many_args sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000243 77 000266 79 000274 80 000276 82 000277 83 000301 84 000323 85 000324 86 000325 87 000326 88 000327 90 000330 92 000344 93 000345 94 000350 95 000360 96 000362 97 000363 99 000364 101 000376 103 000377 104 000413 105 000426 106 000427 107 000434 108 000437 109 000443 110 000445 111 000447 112 000450 114 000451 118 000452 121 000467 123 000470 125 000474 126 000476 127 000507 129 000510 131 000511 132 000514 135 000515 136 000537 138 000542 140 000600 143 000602 144 000603 145 000607 146 000614 147 000617 148 000622 149 000625 150 000626 151 000627 152 000632 154 000633 156 000637 157 000641 160 000642 166 000643 167 000647 169 000652 170 000666 171 000670 172 000671 173 000672 174 000673 175 000674 176 000675 177 000676 178 000704 179 000706 180 000710 181 000711 182 000713 183 000714 186 000715 193 000716 194 000722 195 000724 196 000726 199 000750 201 000753 202 000755 205 000756 207 001004 209 001031 210 001103 212 001146 214 001150 216 001161 218 001172 219 001221 221 001222 222 001223 225 001224 227 001336 229 001355 231 001367 234 001370 237 001371 238 001372 239 001377 240 001402 241 001404 242 001407 243 001410 244 001411 247 001412 250 001413 251 001416 252 001423 253 001424 254 001426 255 001427 257 001430 259 001431 260 001444 262 001445 264 001446 265 001456 268 001457 270 001460 271 001467 273 001470 275 001476 277 001515 279 001516 281 001524 283 001531 285 001550 287 001553 290 001554 299 001570 301 001625 302 001704 305 001707 308 001710 310 001716 312 001717 314 001725 316 001726 321 001727 322 001732 323 001734 324 001737 325 001742 326 001744 327 001746 328 001760 330 002001 331 002004 ----------------------------------------------------------- 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