COMPILATION LISTING OF SEGMENT vip7760_meters_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/25/89 1052.7 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* format: style4,delnl,insnl,^ifthendo */ 7 vip7760_meters_: 8 proc; 9 10 /* This subroutine contains entries for allocating, freeing, and displaying 11* meters for a polled VIP multiplexer and its subchannels. 12**/ 13 14 /* Written June 1981 by Robert Coren */ 15 16 /* PARAMETERS */ 17 18 dcl a_area_ptr ptr; 19 dcl a_meterp ptr; 20 dcl a_code fixed bin (35); 21 dcl a_chan_name char (*); 22 dcl a_iocbp ptr; 23 dcl a_chan_meterp ptr; 24 dcl a_flags bit (36) aligned; 25 dcl a_since_boot bit (1); 26 dcl a_summary_ptr ptr; 27 28 29 /* AUTOMATIC */ 30 31 dcl areap ptr; 32 dcl code fixed bin (35); 33 dcl iocbp ptr; 34 dcl flags bit (36) aligned; 35 dcl brief bit (1); 36 dcl error bit (1); 37 dcl since_boot bit (1); 38 dcl printer bit (1); 39 dcl parent_fnp bit (1); 40 dcl pvip_meterp ptr; 41 dcl current_meterp ptr; 42 dcl saved_meterp ptr; 43 dcl current_fnp_meterp ptr; 44 dcl saved_fnp_meterp ptr; 45 46 dcl input_naks fixed bin (35); 47 dcl output_naks fixed bin (35); 48 dcl timeouts fixed bin (35); 49 dcl timeout_limit fixed bin (35); 50 dcl inc_frame fixed bin (35); 51 dcl input_frames_lost fixed bin (35); 52 dcl output_frames_lost fixed bin (35); 53 dcl bad_output_frames fixed bin (35); 54 dcl output_timeouts fixed bin (35); 55 dcl printer_naks fixed bin (35); 56 dcl discarded_printer_frames fixed bin (35); 57 dcl display_pgofs fixed bin (35); 58 dcl pgof_limit_reached fixed bin (35); 59 60 dcl total_input_naks fixed bin (35); 61 dcl total_output_naks fixed bin (35); 62 dcl total_timeouts fixed bin (35); 63 dcl total_timeout_limit fixed bin (35); 64 dcl total_inc_frame fixed bin (35); 65 dcl total_input_frames_lost fixed bin (35); 66 dcl total_output_frames_lost fixed bin (35); 67 dcl total_bad_output_frames fixed bin (35); 68 dcl total_output_timeouts fixed bin (35); 69 dcl total_printer_naks fixed bin (35); 70 dcl total_discarded_printer_frames fixed bin (35); 71 dcl total_display_pgofs fixed bin (35); 72 dcl total_pgof_limit_reached fixed bin (35); 73 74 75 /* BASED */ 76 77 dcl m_area area (100) based (areap); 78 79 80 /* EXTERNAL STATIC */ 81 82 dcl error_table_$noalloc external static fixed bin (35); 83 dcl iox_$user_output external static ptr; 84 85 86 /* ENTRIES */ 87 88 dcl ioa_$ioa_switch entry options (variable); 89 dcl meter_format_$picture entry (fixed bin (35), fixed bin) returns (char (15) varying); 90 91 92 /* CONDITIONS & BUILTINS */ 93 94 dcl area condition; 95 dcl (addr, null) builtin; 96 97 allocate_mpx: 98 entry (a_area_ptr, a_meterp, a_code); 99 100 areap = a_area_ptr; 101 a_code = 0; 102 103 on area 104 begin; 105 a_code = error_table_$noalloc; 106 go to exit; 107 end; 108 109 allocate pvip_mpx_meter_struc in (m_area) set (a_meterp); 110 a_meterp -> pvip_mpx_meter_struc.version = PVIP_MPX_METERS_VERSION_1; 111 exit: 112 return; 113 114 115 free_subchan: 116 entry (a_meterp, a_code); 117 118 free a_meterp -> pvip_subchan_meter_struc; 119 a_code = 0; 120 return; 121 122 allocate_subchan: 123 entry (a_area_ptr, a_meterp, a_code); 124 125 areap = a_area_ptr; 126 a_code = 0; 127 128 on area 129 begin; 130 a_code = error_table_$noalloc; 131 go to exit; 132 end; 133 134 allocate pvip_subchan_meter_struc in (m_area) set (a_meterp); 135 a_meterp -> pvip_subchan_meter_struc.version = PVIP_SUBCHAN_METERS_VERSION_1; 136 137 return; 138 139 140 free_mpx: 141 entry (a_meterp, a_code); 142 143 free a_meterp -> pvip_mpx_meter_struc; 144 a_code = 0; 145 return; 146 147 display_mpx: 148 entry (a_chan_name, a_iocbp, a_chan_meterp, a_flags, a_code); 149 150 iocbp = a_iocbp; 151 if iocbp = null () 152 then iocbp = iox_$user_output; 153 154 chan_meterp = a_chan_meterp; 155 flags = a_flags; 156 a_code = 0; 157 158 if flags & DISPLAY_MPX_SUMMARY /* we don't handle this */ 159 then return; 160 161 if flags & DISPLAY_MPX_BRIEF 162 then brief = "1"b; 163 else brief = "0"b; 164 165 if flags & DISPLAY_MPX_ERROR 166 then error = "1"b; 167 if flags & DISPLAY_MPX_SINCE_BOOT 168 then since_boot = "1"b; 169 else since_boot = "0"b; 170 171 if brief 172 then return; /* no "brief" meters from this multiplexer */ 173 174 call set_mpx_values; 175 176 if parent_fnp 177 then do; 178 call ioa_$ioa_switch (iocbp, "Invalid input messages^28t^a", meter_format_$picture (input_naks, 11)); 179 call ioa_$ioa_switch (iocbp, "NAK for output messages^28t^a", meter_format_$picture (output_naks, 11)); 180 if ^error 181 then do; 182 call ioa_$ioa_switch (iocbp, "Response timeouts^28t^a", meter_format_$picture (timeouts, 11)); 183 call ioa_$ioa_switch (iocbp, "Incomplete frame from host^28t^a", 184 meter_format_$picture (inc_frame, 11)); 185 end; 186 end; 187 188 call ioa_$ioa_switch (iocbp, "No response after 3 tries^30t^a", meter_format_$picture (timeout_limit, 9)); 189 call ioa_$ioa_switch (iocbp, "Lost input frames^30t^a", meter_format_$picture (input_frames_lost, 9)); 190 call ioa_$ioa_switch (iocbp, "Lost output frames^30t^a", meter_format_$picture (output_frames_lost, 9)); 191 call ioa_$ioa_switch (iocbp, "Bad output frame format^28t^a", meter_format_$picture (bad_output_frames, 7)); 192 call ioa_$ioa_switch (iocbp, "Output frame not completed in time^28t^a", 193 meter_format_$picture (output_timeouts, 7)); 194 195 return; 196 197 display_subchan: 198 entry (a_chan_name, a_iocbp, a_chan_meterp, a_flags, a_code); 199 200 iocbp = a_iocbp; 201 if iocbp = null () 202 then iocbp = iox_$user_output; 203 204 chan_meterp = a_chan_meterp; 205 flags = a_flags; 206 a_code = 0; 207 208 if flags & DISPLAY_MPX_SUMMARY /* we don't handle this */ 209 then return; 210 211 if flags & DISPLAY_MPX_BRIEF 212 then brief = "1"b; 213 else brief = "0"b; 214 215 if flags & DISPLAY_MPX_ERROR 216 then error = "1"b; 217 if flags & DISPLAY_MPX_SINCE_BOOT 218 then since_boot = "1"b; 219 else since_boot = "0"b; 220 221 if brief 222 then return; /* no "brief" meters from this multiplexer */ 223 224 call set_subchan_values; 225 226 if printer 227 then do; 228 call ioa_$ioa_switch (iocbp, "NAK from printer^28t^a", meter_format_$picture (printer_naks, 11)); 229 call ioa_$ioa_switch (iocbp, "Discarded printer frames^28t^a", 230 meter_format_$picture (discarded_printer_frames, 11)); 231 end; 232 233 else do; 234 if ^error 235 then call ioa_$ioa_switch (iocbp, "Page overflows^28t^a", meter_format_$picture (display_pgofs, 11)); 236 call ioa_$ioa_switch (iocbp, "Exceeded page overflow limit^32t^a", 237 meter_format_$picture (pgof_limit_reached, 7)); 238 end; 239 240 return; 241 242 mpx_summary: 243 entry (a_chan_meterp, a_since_boot, a_summary_ptr, a_code); 244 245 /* entry to fill in values used by channel_comm_meters -summary */ 246 247 a_code = 0; 248 chan_meterp = a_chan_meterp; 249 summary_ptr = a_summary_ptr; 250 since_boot = a_since_boot; 251 call set_mpx_values; 252 253 channel_summary.error_count = timeout_limit; 254 if parent_fnp 255 then channel_summary.error_count = channel_summary.error_count + input_naks + output_naks; 256 257 return; 258 259 subchan_summary: 260 entry (a_chan_meterp, a_since_boot, a_summary_ptr, a_code); 261 262 /* entry to fill in values used by channel_comm_meters -summary */ 263 264 a_code = 0; 265 chan_meterp = a_chan_meterp; 266 summary_ptr = a_summary_ptr; 267 since_boot = a_since_boot; 268 269 call set_subchan_values; 270 if printer 271 then channel_summary.error_count = printer_naks; 272 else channel_summary.error_count = 0; 273 return; 274 275 set_mpx_values: 276 procedure; 277 278 /* internal procedure to set metering values (either cumulative or since load) 279* for multiplexer channel */ 280 281 pvip_meterp = channel_meters.mpx_specific_meterp; 282 if channel_meters.parent_type = MCS_MPX /* if parent is an FNP */ 283 then do; /* then we know something about the next level of metering */ 284 fnp_chan_meterp = channel_meters.parent_meterp; 285 current_fnp_meterp = addr (fnp_chan_meter_struc.current_meters); 286 saved_fnp_meterp = addr (fnp_chan_meter_struc.saved_meters); 287 parent_fnp = "1"b; 288 end; 289 290 else parent_fnp = "0"b; 291 292 current_meterp = addr (pvip_meterp -> pvip_mpx_meter_struc.current_meters); 293 saved_meterp = addr (pvip_meterp -> pvip_mpx_meter_struc.saved_meters); 294 295 total_timeout_limit = current_meterp -> pvip_mpx_meters.input_timeouts; 296 total_input_frames_lost = current_meterp -> pvip_mpx_meters.input_frames_lost; 297 total_output_frames_lost = current_meterp -> pvip_mpx_meters.output_frames_lost; 298 total_bad_output_frames = current_meterp -> pvip_mpx_meters.bad_output_frames; 299 total_output_timeouts = current_meterp -> pvip_mpx_meters.output_timeouts; 300 301 if parent_fnp 302 then do; 303 total_input_naks = current_fnp_meterp -> fnp_sync_meters.counters (1); 304 total_output_naks = current_fnp_meterp -> fnp_sync_meters.counters (2); 305 total_timeouts = current_fnp_meterp -> fnp_sync_meters.counters (3); 306 total_inc_frame = current_fnp_meterp -> fnp_sync_meters.counters (4); 307 end; 308 309 if since_boot 310 then do; 311 timeout_limit = total_timeout_limit; 312 input_frames_lost = total_input_frames_lost; 313 output_frames_lost = total_output_frames_lost; 314 bad_output_frames = total_bad_output_frames; 315 output_timeouts = total_output_timeouts; 316 317 if parent_fnp 318 then do; 319 input_naks = total_input_naks; 320 output_naks = total_output_naks; 321 timeouts = total_timeouts; 322 inc_frame = total_inc_frame; 323 end; 324 end; 325 326 else do; 327 timeout_limit = total_timeout_limit - saved_meterp -> pvip_mpx_meters.input_timeouts; 328 input_frames_lost = total_input_frames_lost - saved_meterp -> pvip_mpx_meters.input_frames_lost; 329 output_frames_lost = total_output_frames_lost - saved_meterp -> pvip_mpx_meters.output_frames_lost; 330 bad_output_frames = total_bad_output_frames - saved_meterp -> pvip_mpx_meters.bad_output_frames; 331 output_timeouts = total_output_timeouts - saved_meterp -> pvip_mpx_meters.output_timeouts; 332 333 if parent_fnp 334 then do; 335 input_naks = total_input_naks - saved_fnp_meterp -> fnp_sync_meters.counters (1); 336 output_naks = total_output_naks - saved_fnp_meterp -> fnp_sync_meters.counters (2); 337 timeouts = total_timeouts - saved_fnp_meterp -> fnp_sync_meters.counters (3); 338 inc_frame = total_inc_frame - saved_fnp_meterp -> fnp_sync_meters.counters (4); 339 end; 340 end; 341 end set_mpx_values; 342 343 set_subchan_values: 344 procedure; 345 346 /* internal procedure to set metering values (either cumulative or since dialup) 347* for subchannel */ 348 349 pvip_meterp = channel_meters.parent_meterp; 350 current_meterp = addr (pvip_meterp -> pvip_subchan_meter_struc.current_meters); 351 saved_meterp = addr (pvip_meterp -> pvip_subchan_meter_struc.saved_meters); 352 printer = pvip_meterp -> pvip_subchan_meter_struc.printer; 353 354 if printer 355 then do; 356 total_printer_naks = current_meterp -> pvip_subchan_meters.printer_naks; 357 total_discarded_printer_frames = current_meterp -> pvip_subchan_meters.discarded_printer_frame; 358 end; 359 360 else do; 361 total_display_pgofs = current_meterp -> pvip_subchan_meters.display_pgofs; 362 total_pgof_limit_reached = current_meterp -> pvip_subchan_meters.pgof_limit_reached; 363 end; 364 365 if since_boot 366 then if printer 367 then do; 368 printer_naks = total_printer_naks; 369 discarded_printer_frames = total_discarded_printer_frames; 370 end; 371 372 else do; 373 display_pgofs = total_display_pgofs; 374 pgof_limit_reached = total_pgof_limit_reached; 375 end; 376 377 else if printer 378 then do; 379 printer_naks = total_printer_naks - saved_meterp -> pvip_subchan_meters.printer_naks; 380 discarded_printer_frames = total_discarded_printer_frames - saved_meterp -> pvip_subchan_meters.discarded_printer_frame; 381 end; 382 383 else do; 384 display_pgofs = total_display_pgofs - saved_meterp -> pvip_subchan_meters.display_pgofs; 385 pgof_limit_reached = total_pgof_limit_reached - saved_meterp -> pvip_subchan_meters.pgof_limit_reached; 386 end; 387 end set_subchan_values; 388 1 1 /* BEGIN INCLUDE FILE...channel_meters.incl.pl1 */ 1 2 1 3 /* Include file to define meters reported by comm_meters_ for all channels */ 1 4 1 5 /* Created February 1981 by Robert Coren */ 1 6 1 7 dcl chan_meterp pointer; 1 8 1 9 dcl CHANNEL_METERS_VERSION_1 fixed bin int static options (constant) init (1); 1 10 1 11 dcl 1 channel_meters aligned based (chan_meterp), 1 12 2 version fixed bin, 1 13 2 multiplexer_type fixed bin, /* of this channel */ 1 14 2 parent_type fixed bin, /* multiplexer type of parent (or -1 if this is level 1 */ 1 15 2 line_type fixed bin, /* line type of this channel */ 1 16 2 flags, 1 17 3 reserved bit (36) unaligned, 1 18 2 pad1 fixed bin, 1 19 2 channel_name char (32), 1 20 2 mpx_specific_meterp pointer, /* pointer to meters for this channel's multiplexer type */ 1 21 2 parent_meterp pointer, /* pointer to meters kept for channel by its parent */ 1 22 2 next_channelp pointer, /* pointer to structure for next channel in list */ 1 23 2 cumulative, /* meters accumulated since last load of parent */ 1 24 3 unconverted_input_chars fixed bin (35), /* characters input (before conversion) */ 1 25 3 converted_output_chars fixed bin (35), /* characters output (after conversion) */ 1 26 3 read_calls fixed bin, /* calls to channel_manager$read */ 1 27 3 write_calls fixed bin, /* calls to channel_manager$write */ 1 28 3 control_calls fixed bin, /* calls to channel_manager$control */ 1 29 3 software_interrupts fixed bin, /* calls to channel$manager$interrupt on behalf of this channel */ 1 30 3 read_call_time fixed bin (71), /* time accumulated in channel_manager$read */ 1 31 3 write_call_time fixed bin (71), /* time accumulated in channel_manager$write */ 1 32 3 control_call_time fixed bin (71), /* time accumulated in channel_manager$control */ 1 33 3 interrupt_time fixed bin (71), /* time spent handling software interrupts */ 1 34 3 pad (4) fixed bin, 1 35 2 saved like channel_meters.cumulative; /* meters saved when channel last dialed up */ 1 36 1 37 /* END INCLUDE FILE...channel_meters.incl.pl1 */ 389 390 2 1 /* Begin include file ..... multiplexer_types.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(89-03-20,Parisek), approve(89-06-01,MCR8110), 2 7* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 2 8* Add support of protocol mpx. 2 9* END HISTORY COMMENTS */ 2 10 2 11 2 12 /* This include file defines known multiplexer types */ 2 13 /* Prepared August 1978 by Larry Johnson */ 2 14 /* Changed April 1979 to rename the fnp multiplexer mcs */ 2 15 2 16 dcl (TTY_MPX init (0), /* nonmultiplexed channel */ 2 17 MCS_MPX init (1), /* FNP running MCS */ 2 18 USER1_MPX init (2), /* a range of values for user defined multiplexers */ 2 19 USER2_MPX init (3), 2 20 USER3_MPX init (4), 2 21 USER4_MPX init (5), 2 22 USER5_MPX init (6), 2 23 IBM3270_MPX init (7), /* IBM 3270 display terminal controller */ 2 24 VIP7760_MPX init (8), /* Honeywell VIP 7760 terminal controller */ 2 25 STY_MPX init (9), /* Software Terminal Facility */ 2 26 LAP_MPX init (10), /* Link Access Protocol (X.25 level 2) */ 2 27 X25_MPX init (11), /* CCITT X.25 level 3 */ 2 28 HASP_MPX init (12), /* HASP RJE protocol */ 2 29 UNCP_MPX init (13), /* DSA protocol */ 2 30 SYSTEM2_MPX init (14), 2 31 SYSTEM1_MPX init (15), 2 32 PROTOCOL_MPX init (16)) /* TCP/IP network X.25 protocol */ 2 33 int static options (constant); 2 34 2 35 dcl mpx_types (0:16) char (32) int static options (constant) init ( 2 36 "tty", "mcs", "user1", "user2", "user3", "user4", "user5", "ibm3270", 2 37 "vip7760", "sty", "lap", "x25", "hasp", "uncp", "system2", "system1", 2 38 "protocol"); 2 39 2 40 dcl mpx_special_lock (0:16) bit (1) int static options (constant) init ( 2 41 "0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, 2 42 "0"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b, "0"b); 2 43 2 44 /* End include file ..... multiplexer_types.incl.pl1 */ 391 392 3 1 /* BEGIN INCLUDE FILE ... polled_vip_mpx_meters.incl.pl1 */ 3 2 3 3 /* Defines the structure used for metering of a polled_vip multiplexer */ 3 4 3 5 /* Written June 1981 by Robert Coren */ 3 6 3 7 dcl 1 pvip_mpx_meter_struc based aligned, 3 8 2 version fixed bin, 3 9 2 pad fixed bin, 3 10 2 current_meters like pvip_mpx_meters, 3 11 2 saved_meters like pvip_mpx_meters; 3 12 3 13 dcl 1 pvip_mpx_meters based aligned, 3 14 2 input_timeouts fixed bin, 3 15 2 input_frames_lost fixed bin, 3 16 2 output_frames_lost fixed bin, 3 17 2 bad_output_frames fixed bin, 3 18 2 output_timeouts fixed bin; 3 19 3 20 dcl PVIP_MPX_METERS_VERSION_1 internal static options (constant) init (1); 3 21 3 22 /* END INCLUDE FILE ... polled_vip_mpx_meters.incl.p1l */ 393 394 4 1 /* BEGIN INCLUDE FILE ... pvip_subchan_meters.incl.pl1 */ 4 2 4 3 /* Defines the structure used for meters kept by polled_vip_mpx on behalf of its subchannels */ 4 4 4 5 /* Written June 1981 by Robert Coren */ 4 6 4 7 dcl 1 pvip_subchan_meter_struc based aligned, 4 8 2 version fixed bin, 4 9 2 flags, 4 10 3 printer bit (1) unaligned, 4 11 3 pad bit (35) unaligned, 4 12 2 current_meters like pvip_subchan_meters, 4 13 2 saved_meters like pvip_subchan_meters; 4 14 4 15 dcl 1 pvip_subchan_meters based aligned, 4 16 2 printer_naks fixed bin (35), 4 17 2 discarded_printer_frame fixed bin (35), 4 18 2 display_pgofs fixed bin (35), 4 19 2 pgof_limit_reached fixed bin (35); 4 20 4 21 dcl PVIP_SUBCHAN_METERS_VERSION_1 internal static options (constant) init (1); 4 22 4 23 4 24 /* END INCLUDE FILE ... pvip_subchan_meters.incl.pl1 */ 395 396 5 1 /* BEGIN INCLUDE FILE...fnp_channel_meters.incl.pl1 */ 5 2 5 3 /* This include file defines meters returned for subchannels of an FNP. */ 5 4 5 5 /* Created February 1981 by Robert Coren from fnp_meters.incl.pl1. */ 5 6 5 7 dcl fnp_chan_meterp pointer; 5 8 dcl FNP_CHANNEL_METERS_VERSION_1 fixed bin int static options (constant) init (1); 5 9 5 10 dcl 1 fnp_chan_meter_struc based (fnp_chan_meterp) aligned, 5 11 2 version fixed bin, 5 12 2 flags, 5 13 3 synchronous bit (1) unaligned, 5 14 3 reserved bit (35) unaligned, 5 15 2 current_meters like fnp_channel_meters, 5 16 2 saved_meters like fnp_channel_meters; 5 17 5 18 dcl 1 fnp_channel_meters based aligned, 5 19 2 header, 5 20 3 dia_request_q_len fixed bin (35), /* cumulative */ 5 21 3 dia_rql_updates fixed bin (35), /* updates to above */ 5 22 3 pending_status fixed bin (35), /* cumulative */ 5 23 3 pending_status_updates fixed bin (35), /* updates to above */ 5 24 3 output_overlaps fixed bin (18) unsigned unaligned, /* output chained to already-existing chain */ 5 25 3 parity_errors fixed bin (18) unsigned unaligned, /* parity on the channel */ 5 26 3 software_status_overflows fixed bin (18) unsigned unaligned, 5 27 3 hardware_status_overflows fixed bin (18) unsigned unaligned, 5 28 3 input_alloc_failures fixed bin (18) unsigned unaligned, 5 29 3 dia_current_q_len fixed bin (18) unsigned unaligned, /* current length of dia request queue */ 5 30 3 exhaust fixed bin (35), 5 31 3 software_xte fixed bin (18) unsigned unaligned, 5 32 3 pad bit (18) unaligned, 5 33 2 sync_or_async (17) fixed bin; /* placeholder for meters for sync or async channels */ 5 34 5 35 dcl 1 fnp_sync_meters based aligned, 5 36 2 header like fnp_channel_meters.header, 5 37 2 input, 5 38 3 message_count fixed bin (35), /* total number of messages */ 5 39 3 cum_length fixed bin (35), /* total cumulative length in characters */ 5 40 3 min_length fixed bin (18) unsigned unaligned, /* length of shortest message */ 5 41 3 max_length fixed bin (18) unsigned unaligned, /* length of longest message */ 5 42 2 output like fnp_sync_meters.input, 5 43 2 counters (8) fixed bin (35), 5 44 2 pad (3) fixed bin; 5 45 5 46 dcl 1 fnp_async_meters based aligned, 5 47 2 header like fnp_channel_meters.header, 5 48 2 pre_exhaust fixed bin (35), 5 49 2 echo_buf_overflow fixed bin (35), /* number of times echo buffer has overflowed */ 5 50 2 bell_quits fixed bin (18) unsigned unaligned, 5 51 2 padb bit (18) unaligned, 5 52 2 pad (14) fixed bin; 5 53 5 54 /* END INCLUDE FILE...fnp_channel_meters.incl.pl1 */ 397 398 6 1 /* BEGIN INCLUDE FILE ... comm_meters_disp_flags.incl.pl1 */ 6 2 6 3 6 4 /* This include file defines named values for the bits in the flags argument passed 6 5* to the various MPX_meters_$display entries. 6 6**/ 6 7 6 8 /* Created April 1981 by Robert Coren */ 6 9 6 10 dcl DISPLAY_MPX_BRIEF bit (36) internal static options (constant) init ("1"b); 6 11 dcl DISPLAY_MPX_ERROR bit (36) internal static options (constant) init ("01"b); 6 12 dcl DISPLAY_MPX_SUMMARY bit (36) internal static options (constant) init ("001"b); 6 13 dcl DISPLAY_MPX_SINCE_BOOT bit (36) internal static options (constant) init ("0001"b); 6 14 6 15 /* END INCLUDE FILE ... comm_meters_disp_flags.incl.pl1 */ 399 400 7 1 /* BEGIN INCLUDE FILE ... channel_summary.incl.pl1 */ 7 2 7 3 /* Include file describing structure filled in by mpx_summary and subchan_summary 7 4* entries of multiplexer-specific metering subroutines for use by comm_channel_meters -summary 7 5**/ 7 6 7 7 /* Created April 1981 by Robert Coren */ 7 8 7 9 dcl summary_ptr ptr; 7 10 dcl CHANNEL_SUMMARY_VERSION_1 fixed bin internal static options (constant) init (1); 7 11 7 12 dcl 1 channel_summary based (summary_ptr) aligned, 7 13 2 version fixed bin, 7 14 2 baud_rate fixed bin, 7 15 2 time_since_dial fixed bin (71), 7 16 2 flags, 7 17 3 invalid_input bit (1) unal, 7 18 3 output_re_xmit bit (1) unal, 7 19 3 timeout bit (1) unal, 7 20 3 pre_exhaust bit (1) unal, 7 21 3 exhaust bit (1) unal, 7 22 3 xte bit (1) unal, 7 23 3 bell_quit bit (1) unal, 7 24 3 echo_overflow bit (1) unal, 7 25 3 parity bit (1) unal, 7 26 3 ssqo bit (1) unal, 7 27 3 hsqo bit (1) unal, 7 28 3 alloc_failure bit (1) unal, 7 29 3 synchronous bit (1) unal, 7 30 3 breakall bit (1) unal, 7 31 3 echoplex bit (1) unal, 7 32 3 padb bit (21) unal, 7 33 2 error_count fixed bin, 7 34 2 user_process bit (36); 7 35 7 36 /* END INCLUDE FILE ... channel_summary.incl.pl1 */ 401 402 end vip7760_meters_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/25/89 1005.2 vip7760_meters_.pl1 >special_ldd>install>MR12.3-1100>vip7760_meters_.pl1 389 1 06/19/81 2115.0 channel_meters.incl.pl1 >ldd>include>channel_meters.incl.pl1 391 2 10/25/89 0959.9 multiplexer_types.incl.pl1 >special_ldd>install>MR12.3-1100>multiplexer_types.incl.pl1 393 3 03/27/82 0430.3 polled_vip_mpx_meters.incl.pl1 >ldd>include>polled_vip_mpx_meters.incl.pl1 395 4 03/27/82 0430.3 pvip_subchan_meters.incl.pl1 >ldd>include>pvip_subchan_meters.incl.pl1 397 5 08/10/81 1843.6 fnp_channel_meters.incl.pl1 >ldd>include>fnp_channel_meters.incl.pl1 399 6 06/19/81 2115.0 comm_meters_disp_flags.incl.pl1 >ldd>include>comm_meters_disp_flags.incl.pl1 401 7 06/19/81 2115.0 channel_summary.incl.pl1 >ldd>include>channel_summary.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. DISPLAY_MPX_BRIEF constant bit(36) initial packed unaligned dcl 6-10 ref 161 211 DISPLAY_MPX_ERROR constant bit(36) initial packed unaligned dcl 6-11 ref 165 215 DISPLAY_MPX_SINCE_BOOT constant bit(36) initial packed unaligned dcl 6-13 ref 167 217 DISPLAY_MPX_SUMMARY constant bit(36) initial packed unaligned dcl 6-12 ref 158 208 MCS_MPX constant fixed bin(17,0) initial dcl 2-16 ref 282 PVIP_MPX_METERS_VERSION_1 constant fixed bin(17,0) initial dcl 3-20 ref 110 PVIP_SUBCHAN_METERS_VERSION_1 constant fixed bin(17,0) initial dcl 4-21 ref 135 a_area_ptr parameter pointer dcl 18 ref 97 100 122 125 a_chan_meterp parameter pointer dcl 23 ref 147 154 197 204 242 248 259 265 a_chan_name parameter char packed unaligned dcl 21 ref 147 197 a_code parameter fixed bin(35,0) dcl 20 set ref 97 101* 105* 115 119* 122 126* 130* 140 144* 147 156* 197 206* 242 247* 259 264* a_flags parameter bit(36) dcl 24 ref 147 155 197 205 a_iocbp parameter pointer dcl 22 ref 147 150 197 200 a_meterp parameter pointer dcl 19 set ref 97 109* 110 115 118 122 134* 135 140 143 a_since_boot parameter bit(1) packed unaligned dcl 25 ref 242 250 259 267 a_summary_ptr parameter pointer dcl 26 ref 242 249 259 266 addr builtin function dcl 95 ref 285 286 292 293 350 351 area 000156 stack reference condition dcl 94 ref 103 128 areap 000100 automatic pointer dcl 31 set ref 100* 109 125* 134 bad_output_frames 000133 automatic fixed bin(35,0) dcl 53 in procedure "vip7760_meters_" set ref 191* 314* 330* bad_output_frames 3 based fixed bin(17,0) level 2 in structure "pvip_mpx_meters" dcl 3-13 in procedure "vip7760_meters_" ref 298 330 brief 000105 automatic bit(1) packed unaligned dcl 35 set ref 161* 163* 171 211* 213* 221 chan_meterp 000164 automatic pointer dcl 1-7 set ref 154* 204* 248* 265* 281 282 284 349 channel_meters based structure level 1 dcl 1-11 channel_summary based structure level 1 dcl 7-12 counters 17 based fixed bin(35,0) array level 2 dcl 5-35 ref 303 304 305 306 335 336 337 338 cumulative 24 based structure level 2 dcl 1-11 current_fnp_meterp 000120 automatic pointer dcl 43 set ref 285* 303 304 305 306 current_meterp 000114 automatic pointer dcl 41 set ref 292* 295 296 297 298 299 350* 356 357 361 362 current_meters 2 based structure level 2 in structure "fnp_chan_meter_struc" dcl 5-10 in procedure "vip7760_meters_" set ref 285 current_meters 2 based structure level 2 in structure "pvip_subchan_meter_struc" dcl 4-7 in procedure "vip7760_meters_" set ref 350 current_meters 2 based structure level 2 in structure "pvip_mpx_meter_struc" dcl 3-7 in procedure "vip7760_meters_" set ref 292 discarded_printer_frame 1 based fixed bin(35,0) level 2 dcl 4-15 ref 357 380 discarded_printer_frames 000136 automatic fixed bin(35,0) dcl 56 set ref 229* 369* 380* display_pgofs 2 based fixed bin(35,0) level 2 in structure "pvip_subchan_meters" dcl 4-15 in procedure "vip7760_meters_" ref 361 384 display_pgofs 000137 automatic fixed bin(35,0) dcl 57 in procedure "vip7760_meters_" set ref 234* 373* 384* error 000106 automatic bit(1) packed unaligned dcl 36 set ref 165* 180 215* 234 error_count 5 based fixed bin(17,0) level 2 dcl 7-12 set ref 253* 254* 254 270* 272* error_table_$noalloc 000010 external static fixed bin(35,0) dcl 82 ref 105 130 flags 000104 automatic bit(36) dcl 34 in procedure "vip7760_meters_" set ref 155* 158 161 165 167 205* 208 211 215 217 flags 1 based structure level 2 in structure "pvip_subchan_meter_struc" dcl 4-7 in procedure "vip7760_meters_" fnp_chan_meter_struc based structure level 1 dcl 5-10 fnp_chan_meterp 000166 automatic pointer dcl 5-7 set ref 284* 285 286 fnp_channel_meters based structure level 1 dcl 5-18 fnp_sync_meters based structure level 1 dcl 5-35 header 34 based structure level 3 in structure "fnp_chan_meter_struc" dcl 5-10 in procedure "vip7760_meters_" header based structure level 2 in structure "fnp_channel_meters" dcl 5-18 in procedure "vip7760_meters_" header 2 based structure level 3 in structure "fnp_chan_meter_struc" dcl 5-10 in procedure "vip7760_meters_" inc_frame 000130 automatic fixed bin(35,0) dcl 50 set ref 183* 322* 338* input 11 based structure level 2 dcl 5-35 input_frames_lost 1 based fixed bin(17,0) level 2 in structure "pvip_mpx_meters" dcl 3-13 in procedure "vip7760_meters_" ref 296 328 input_frames_lost 000131 automatic fixed bin(35,0) dcl 51 in procedure "vip7760_meters_" set ref 189* 312* 328* input_naks 000124 automatic fixed bin(35,0) dcl 46 set ref 178* 254 319* 335* input_timeouts based fixed bin(17,0) level 2 dcl 3-13 ref 295 327 ioa_$ioa_switch 000014 constant entry external dcl 88 ref 178 179 182 183 188 189 190 191 192 228 229 234 236 iocbp 000102 automatic pointer dcl 33 set ref 150* 151 151* 178* 179* 182* 183* 188* 189* 190* 191* 192* 200* 201 201* 228* 229* 234* 236* iox_$user_output 000012 external static pointer dcl 83 ref 151 201 m_area based area(100) dcl 77 ref 109 134 meter_format_$picture 000016 constant entry external dcl 89 ref 178 179 182 183 188 189 190 191 192 228 229 234 236 mpx_specific_meterp 16 based pointer level 2 dcl 1-11 ref 281 null builtin function dcl 95 ref 151 201 output_frames_lost 2 based fixed bin(17,0) level 2 in structure "pvip_mpx_meters" dcl 3-13 in procedure "vip7760_meters_" ref 297 329 output_frames_lost 000132 automatic fixed bin(35,0) dcl 52 in procedure "vip7760_meters_" set ref 190* 313* 329* output_naks 000125 automatic fixed bin(35,0) dcl 47 set ref 179* 254 320* 336* output_timeouts 000134 automatic fixed bin(35,0) dcl 54 in procedure "vip7760_meters_" set ref 192* 315* 331* output_timeouts 4 based fixed bin(17,0) level 2 in structure "pvip_mpx_meters" dcl 3-13 in procedure "vip7760_meters_" ref 299 331 parent_fnp 000111 automatic bit(1) packed unaligned dcl 39 set ref 176 254 287* 290* 301 317 333 parent_meterp 20 based pointer level 2 dcl 1-11 ref 284 349 parent_type 2 based fixed bin(17,0) level 2 dcl 1-11 ref 282 pgof_limit_reached 000140 automatic fixed bin(35,0) dcl 58 in procedure "vip7760_meters_" set ref 236* 374* 385* pgof_limit_reached 3 based fixed bin(35,0) level 2 in structure "pvip_subchan_meters" dcl 4-15 in procedure "vip7760_meters_" ref 362 385 printer 000110 automatic bit(1) packed unaligned dcl 38 in procedure "vip7760_meters_" set ref 226 270 352* 354 365 377 printer 1 based bit(1) level 3 in structure "pvip_subchan_meter_struc" packed packed unaligned dcl 4-7 in procedure "vip7760_meters_" ref 352 printer_naks 000135 automatic fixed bin(35,0) dcl 55 in procedure "vip7760_meters_" set ref 228* 270 368* 379* printer_naks based fixed bin(35,0) level 2 in structure "pvip_subchan_meters" dcl 4-15 in procedure "vip7760_meters_" ref 356 379 pvip_meterp 000112 automatic pointer dcl 40 set ref 281* 292 293 349* 350 351 352 pvip_mpx_meter_struc based structure level 1 dcl 3-7 set ref 109 143 pvip_mpx_meters based structure level 1 dcl 3-13 pvip_subchan_meter_struc based structure level 1 dcl 4-7 set ref 118 134 pvip_subchan_meters based structure level 1 dcl 4-15 saved_fnp_meterp 000122 automatic pointer dcl 44 set ref 286* 335 336 337 338 saved_meterp 000116 automatic pointer dcl 42 set ref 293* 327 328 329 330 331 351* 379 380 384 385 saved_meters 34 based structure level 2 in structure "fnp_chan_meter_struc" dcl 5-10 in procedure "vip7760_meters_" set ref 286 saved_meters 7 based structure level 2 in structure "pvip_mpx_meter_struc" dcl 3-7 in procedure "vip7760_meters_" set ref 293 saved_meters 6 based structure level 2 in structure "pvip_subchan_meter_struc" dcl 4-7 in procedure "vip7760_meters_" set ref 351 since_boot 000107 automatic bit(1) packed unaligned dcl 37 set ref 167* 169* 217* 219* 250* 267* 309 365 summary_ptr 000170 automatic pointer dcl 7-9 set ref 249* 253 254 254 266* 270 272 timeout_limit 000127 automatic fixed bin(35,0) dcl 49 set ref 188* 253 311* 327* timeouts 000126 automatic fixed bin(35,0) dcl 48 set ref 182* 321* 337* total_bad_output_frames 000150 automatic fixed bin(35,0) dcl 67 set ref 298* 314 330 total_discarded_printer_frames 000153 automatic fixed bin(35,0) dcl 70 set ref 357* 369 380 total_display_pgofs 000154 automatic fixed bin(35,0) dcl 71 set ref 361* 373 384 total_inc_frame 000145 automatic fixed bin(35,0) dcl 64 set ref 306* 322 338 total_input_frames_lost 000146 automatic fixed bin(35,0) dcl 65 set ref 296* 312 328 total_input_naks 000141 automatic fixed bin(35,0) dcl 60 set ref 303* 319 335 total_output_frames_lost 000147 automatic fixed bin(35,0) dcl 66 set ref 297* 313 329 total_output_naks 000142 automatic fixed bin(35,0) dcl 61 set ref 304* 320 336 total_output_timeouts 000151 automatic fixed bin(35,0) dcl 68 set ref 299* 315 331 total_pgof_limit_reached 000155 automatic fixed bin(35,0) dcl 72 set ref 362* 374 385 total_printer_naks 000152 automatic fixed bin(35,0) dcl 69 set ref 356* 368 379 total_timeout_limit 000144 automatic fixed bin(35,0) dcl 63 set ref 295* 311 327 total_timeouts 000143 automatic fixed bin(35,0) dcl 62 set ref 305* 321 337 version based fixed bin(17,0) level 2 in structure "pvip_mpx_meter_struc" dcl 3-7 in procedure "vip7760_meters_" set ref 110* version based fixed bin(17,0) level 2 in structure "pvip_subchan_meter_struc" dcl 4-7 in procedure "vip7760_meters_" set ref 135* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CHANNEL_METERS_VERSION_1 internal static fixed bin(17,0) initial dcl 1-9 CHANNEL_SUMMARY_VERSION_1 internal static fixed bin(17,0) initial dcl 7-10 FNP_CHANNEL_METERS_VERSION_1 internal static fixed bin(17,0) initial dcl 5-8 HASP_MPX internal static fixed bin(17,0) initial dcl 2-16 IBM3270_MPX internal static fixed bin(17,0) initial dcl 2-16 LAP_MPX internal static fixed bin(17,0) initial dcl 2-16 PROTOCOL_MPX internal static fixed bin(17,0) initial dcl 2-16 STY_MPX internal static fixed bin(17,0) initial dcl 2-16 SYSTEM1_MPX internal static fixed bin(17,0) initial dcl 2-16 SYSTEM2_MPX internal static fixed bin(17,0) initial dcl 2-16 TTY_MPX internal static fixed bin(17,0) initial dcl 2-16 UNCP_MPX internal static fixed bin(17,0) initial dcl 2-16 USER1_MPX internal static fixed bin(17,0) initial dcl 2-16 USER2_MPX internal static fixed bin(17,0) initial dcl 2-16 USER3_MPX internal static fixed bin(17,0) initial dcl 2-16 USER4_MPX internal static fixed bin(17,0) initial dcl 2-16 USER5_MPX internal static fixed bin(17,0) initial dcl 2-16 VIP7760_MPX internal static fixed bin(17,0) initial dcl 2-16 X25_MPX internal static fixed bin(17,0) initial dcl 2-16 code automatic fixed bin(35,0) dcl 32 fnp_async_meters based structure level 1 dcl 5-46 mpx_special_lock internal static bit(1) initial array packed unaligned dcl 2-40 mpx_types internal static char(32) initial array packed unaligned dcl 2-35 NAMES DECLARED BY EXPLICIT CONTEXT. allocate_mpx 000176 constant entry external dcl 97 allocate_subchan 000273 constant entry external dcl 122 display_mpx 000371 constant entry external dcl 147 display_subchan 001142 constant entry external dcl 197 exit 000246 constant label dcl 111 ref 106 131 free_mpx 000346 constant entry external dcl 140 free_subchan 000253 constant entry external dcl 115 mpx_summary 001455 constant entry external dcl 242 set_mpx_values 001563 constant entry internal dcl 275 ref 174 251 set_subchan_values 001761 constant entry internal dcl 343 ref 224 269 subchan_summary 001522 constant entry external dcl 259 vip7760_meters_ 000164 constant entry external dcl 7 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2250 2270 2060 2260 Length 2654 2060 20 347 167 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vip7760_meters_ 192 external procedure is an external procedure. on unit on line 103 64 on unit on unit on line 128 64 on unit set_mpx_values internal procedure shares stack frame of external procedure vip7760_meters_. set_subchan_values internal procedure shares stack frame of external procedure vip7760_meters_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME vip7760_meters_ 000100 areap vip7760_meters_ 000102 iocbp vip7760_meters_ 000104 flags vip7760_meters_ 000105 brief vip7760_meters_ 000106 error vip7760_meters_ 000107 since_boot vip7760_meters_ 000110 printer vip7760_meters_ 000111 parent_fnp vip7760_meters_ 000112 pvip_meterp vip7760_meters_ 000114 current_meterp vip7760_meters_ 000116 saved_meterp vip7760_meters_ 000120 current_fnp_meterp vip7760_meters_ 000122 saved_fnp_meterp vip7760_meters_ 000124 input_naks vip7760_meters_ 000125 output_naks vip7760_meters_ 000126 timeouts vip7760_meters_ 000127 timeout_limit vip7760_meters_ 000130 inc_frame vip7760_meters_ 000131 input_frames_lost vip7760_meters_ 000132 output_frames_lost vip7760_meters_ 000133 bad_output_frames vip7760_meters_ 000134 output_timeouts vip7760_meters_ 000135 printer_naks vip7760_meters_ 000136 discarded_printer_frames vip7760_meters_ 000137 display_pgofs vip7760_meters_ 000140 pgof_limit_reached vip7760_meters_ 000141 total_input_naks vip7760_meters_ 000142 total_output_naks vip7760_meters_ 000143 total_timeouts vip7760_meters_ 000144 total_timeout_limit vip7760_meters_ 000145 total_inc_frame vip7760_meters_ 000146 total_input_frames_lost vip7760_meters_ 000147 total_output_frames_lost vip7760_meters_ 000150 total_bad_output_frames vip7760_meters_ 000151 total_output_timeouts vip7760_meters_ 000152 total_printer_naks vip7760_meters_ 000153 total_discarded_printer_frames vip7760_meters_ 000154 total_display_pgofs vip7760_meters_ 000155 total_pgof_limit_reached vip7760_meters_ 000164 chan_meterp vip7760_meters_ 000166 fnp_chan_meterp vip7760_meters_ 000170 summary_ptr vip7760_meters_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac tra_ext_1 enable_op ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$ioa_switch meter_format_$picture THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noalloc iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 000163 97 000171 100 000210 101 000214 103 000215 105 000231 106 000234 109 000237 110 000244 111 000246 115 000247 118 000265 119 000267 120 000270 122 000271 125 000305 126 000311 128 000312 130 000326 131 000331 134 000334 135 000341 137 000343 140 000344 143 000360 144 000362 145 000363 147 000364 150 000411 151 000415 154 000425 155 000430 156 000432 158 000433 161 000435 163 000442 165 000443 167 000450 169 000456 171 000457 174 000461 176 000462 178 000464 179 000525 180 000566 182 000570 183 000631 188 000672 189 000733 190 000774 191 001035 192 001076 195 001137 197 001140 200 001162 201 001166 204 001176 205 001201 206 001203 208 001204 211 001206 213 001213 215 001214 217 001221 219 001227 221 001230 224 001232 226 001233 228 001235 229 001276 231 001337 234 001340 236 001406 240 001447 242 001450 247 001467 248 001470 249 001473 250 001477 251 001504 253 001505 254 001510 257 001517 259 001520 264 001534 265 001535 266 001540 267 001544 269 001551 270 001552 272 001560 273 001562 275 001563 281 001564 282 001567 284 001573 285 001575 286 001577 287 001601 288 001603 290 001604 292 001605 293 001610 295 001613 296 001615 297 001617 298 001621 299 001623 301 001625 303 001627 304 001632 305 001634 306 001636 309 001640 311 001642 312 001644 313 001646 314 001650 315 001652 317 001654 319 001656 320 001660 321 001662 322 001664 324 001666 327 001667 328 001675 329 001703 330 001711 331 001717 333 001725 335 001727 336 001736 337 001744 338 001752 341 001760 343 001761 349 001762 350 001765 351 001767 352 001771 354 001774 356 001775 357 001777 358 002001 361 002002 362 002004 365 002006 368 002012 369 002014 370 002016 373 002017 374 002021 375 002023 377 002024 379 002026 380 002034 381 002042 384 002043 385 002051 387 002057 ----------------------------------------------------------- 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