COMPILATION LISTING OF SEGMENT heals_sorted_report_gen_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 09/27/84 0746.4 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 heals_sorted_report_gen_: proc (heals_arg_info_p, heals_ior_args_p, r_code); 7 8 /* ****************************************************************************** 9* * * 10* * Comments: * 11* * * 12* * Written by RH Morrison Dec. 1, 1976 * 13* * Last modified by RH Morrison 01/03/77 * 14* * * 15* ****************************************************************************** */ 16 17 /* FF */ 18 /* ******** DECLARATIONS ******** */ 19 20 /* **** PROCEDURE ARGUMENTS **** */ 21 22 dcl heals_arg_info_p ptr; 23 dcl heals_ior_args_p ptr; 24 dcl r_code fixed bin (35); 25 26 /* **** EXTERNAL STATIC **** */ 27 28 dcl error_table_$end_of_info ext static fixed bin (35); 29 30 /* **** ENTRIES **** */ 31 dcl sort_ entry ((*)char (*), char (*), (*)ptr, char (*), char (*), float bin (27), 32 fixed bin (35)); 33 dcl clock_ entry returns (fixed bin (71)); 34 dcl get_pdir_ entry returns (char (168)); 35 dcl ioa_ entry options (variable); 36 dcl ioa_$ioa_switch entry options (variable); 37 dcl com_err_ entry options (variable); 38 dcl date_time_ entry (fixed bin (71), char (*)); 39 dcl iox_$attach_ioname entry (char (*), ptr, char (*), fixed bin (35)); 40 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 41 dcl iox_$close entry (ptr, fixed bin (35)); 42 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 43 dcl iox_$read_record entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 44 45 /* **** POINTERS **** */ 46 dcl flags_p ptr init (null); 47 dcl work_p1 ptr init (null); 48 49 /* Arguments */ 50 dcl sortsw_p ptr init (null); 51 dcl sort_data_p ptr init (null); 52 dcl sort_desc_p (3) ptr init (null, null, null); 53 dcl inbuf_p ptr init (null); 54 dcl insw_p ptr init (null); 55 dcl outsw_p ptr init (null); 56 57 /* Pointers declared in include files: 58* ior_flags_p 59* ior_prms_p 60* ch_nfo_p 61* heals_ior_avars_p 62* ioerr_rec_p 63* statp 64* iocbp 65* io_msgp 66* */ 67 68 /* **** CHARACTER STRING VARIABLES **** */ 69 dcl old_name char (4); 70 dcl whoami char (24) int static init ("heals_sorted_report_gen_"); 71 dcl inbuf char (inbuf_len) aligned; 72 dcl rprt_from_time char (16); 73 dcl rprt_to_time char (16); 74 dcl old_date char (8); 75 dcl date char (8); 76 dcl time char (6); 77 dcl date_time char (16); 78 dcl ch_nr pic "99"; 79 dcl dev_nr pic "99"; 80 81 /* Arguments */ 82 dcl version_date char (8) init ("12/15/76"); 83 84 /* **** ARITHMETIC VARIABLES **** */ 85 dcl clock_time fixed bin (71); 86 dcl line_cnt fixed bin; 87 dcl max_line_cnt fixed bin; 88 dcl page_nb fixed bin; 89 90 /* Arguments */ 91 dcl version_nb fixed bin init (1); 92 dcl code fixed bin (35); 93 dcl inrec_len fixed bin (21); 94 dcl inbuf_len fixed bin (21) int static init (1024); 95 dcl seq_in fixed bin int static init (4); 96 97 /* **** BIT STRING VARIABLES **** */ 98 dcl flags_word bit (36) aligned; 99 dcl eof bit (1) aligned; 100 101 /* Arguments */ 102 dcl unused bit (1) aligned init ("0"b); 103 104 /* **** BASED VARIABLES **** */ 105 dcl 1 arg_info like heals_arg_info aligned based (heals_arg_info_p); 106 dcl 1 flags aligned based (flags_p), 107 (2 trace bit (1), 108 2 db bit (1), 109 2 hdrs bit (1), 110 2 no_recs bit (1), 111 2 fill bit (1) 112 ) unal; 113 114 /* **** SORT DECLARATIONS **** */ 115 dcl sort_file_size float bin (27); 116 dcl sort_out_file char (168); 117 dcl sort_temp_dir char (168); 118 dcl sort_user_out_sw char (32); 119 dcl sortsw char (6) int static init ("sortsw"); 120 dcl sort_in_file (1) char (168); 121 dcl user_keys_number int static init (2); 122 dcl 1 keys, 123 2 version fixed bin init (1), 124 2 number fixed bin, 125 2 key_desc (user_keys_number), 126 3 datatype char (8), 127 3 size fixed bin (24), 128 3 word_offset fixed bin (18), 129 3 bit_offset fixed bin (6), 130 3 desc char (3); 131 132 /* **** MISC. DECLARATIONS **** */ 133 134 dcl (addr, addrel, before, fixed, null) builtin; 135 dcl cleanup condition; 136 137 /* FF */ 138 /* **** INCLUDE FILES **** */ 1 1 /* heals_arg_info.incl.pl1 contains the declaration 1 2* of the argument structure passed between heals releated utilities. 1 3* Created January 1976 by A. R. Downing */ 1 4 dcl 1 heals_arg_info aligned, 1 5 2 iocbp ptr, 1 6 2 report_iocbp ptr, 1 7 2 err_nb fixed bin (35), 1 8 2 info_selection bit (72) unal, 1 9 2 report_name char (64) varying, 1 10 2 heals_log_path_name char (168), /* path name of the heals log */ 1 11 2 system_id char (32) varying, 1 12 2 installation_id char (32) varying, 1 13 2 from_seq fixed bin (35), /* beginning seq_num */ 1 14 2 to_seq fixed bin (35), /* ending seq_num */ 1 15 2 from_time fixed bin (71), /* beginning of desired time period */ 1 16 2 to_time fixed bin (71); /* end of desired time period */ 1 17 /* end heals_arg_info. */ 139 2 1 /* BEGIN INCLUDE FILE heals_io_report_args.incl.pl1 */ 2 2 /* Created by RH Morrison Dec. 9,1976 */ 2 3 /* Last modified by RH Morrison 12/13/76 */ 2 4 2 5 dcl 1 ior_ptrs aligned based (heals_ior_args_p), 2 6 2 ior_flags_p ptr, 2 7 2 ior_prms_p ptr, 2 8 2 ch_nfo_ar_p ptr, 2 9 2 ioerr_log_sw_p ptr, 2 10 2 ior_avars_p ptr; 2 11 2 12 dcl 1 ior_flags aligned based (ior_ptrs.ior_flags_p), 2 13 (2 trace bit (1), 2 14 2 db bit (1), 2 15 2 no_recs bit (1) 2 16 ) unal; 2 17 2 18 dcl 1 ior_prms aligned based (ior_ptrs.ior_prms_p), 2 19 (2 max_iom_nb_a fixed bin, 2 20 2 max_ch_nb_a fixed bin, 2 21 2 max_tape_nb_a fixed bin, 2 22 2 max_line_cnt_a fixed bin) unal; 2 23 2 24 dcl ch_nfo_p ptr; 2 25 dcl 1 ch_nfo aligned based (ch_nfo_p), 2 26 (2 dev_nam char (4), 2 27 2 model fixed bin, 2 28 2 lchan fixed bin (6), 2 29 2 uchan fixed bin (6), 2 30 2 i_set bit (1) 2 31 ) unal; 2 32 2 33 dcl 1 ior_avars aligned based (ior_ptrs.ior_avars_p), 2 34 2 bulk_port fixed bin; 2 35 2 36 /* END INCLUDE FILE heals_io_report_args.incl.pl1 */ 140 3 1 /* BEGIN INCLUDE FILE heals_ioerr_rec.incl.pl1 */ 3 2 /* Created Dec. 1, 1976 by RH Morrison */ 3 3 /* Last modified by RH Morrison 01/03/77 */ 3 4 /* This include file defines the I/O error record derived from syserr_log records. */ 3 5 3 6 dcl ioerr_rec_p ptr; 3 7 dcl 1 ioerr_rec aligned based (ioerr_rec_p), 3 8 2 sort_rec aligned, 3 9 (3 sort_date char (8), 3 10 3 iom_nb fixed bin (3), 3 11 3 ch_nb fixed bin (6), 3 12 3 dev_nb fixed bin (6), 3 13 3 power_off bit (1), 3 14 3 maj_st bit (6), 3 15 3 sub_st bit (6), 3 16 3 ntrpt_no bit (1), 3 17 3 dev_cmnd bit (6), 3 18 3 iom_st bit (6), 3 19 3 rec_cnt_res bit (6)) unal, 3 20 2 report_nfo aligned, 3 21 (3 dev_nm pic "xxxx", 3 22 3 log_time char (6), 3 23 3 ntrpt_nm char (1), 3 24 3 rprt_flags, 3 25 4 ioerr bit (1), 3 26 4 diskerr bit (1), 3 27 4 disk_addr bit (1), 3 28 4 ext_stat bit (1), 3 29 4 iom_rec bit (1), 3 30 4 bad_rec bit (1), 3 31 4 msg bit (1), 3 32 4 bulk bit (1), 3 33 4 fill bit (1), 3 34 3 dev_model fixed bin) unal, 3 35 2 tape_disk_nfo aligned, 3 36 (3 tapno_diskad pic "xxxxxxx", 3 37 3 dens_cyl pic "xxxx", 3 38 3 ring_head pic "xx", 3 39 3 tracks_sector pic "xx") unal, 3 40 2 syserr_nfo aligned, 3 41 (3 tally_nb fixed bin (35), 3 42 3 seq_nb fixed bin (35), 3 43 3 time fixed bin (71), 3 44 3 code fixed bin (11), 3 45 3 msg_len fixed bin (11), 3 46 3 data_size fixed bin (11), 3 47 3 data (0 refer (ioerr_rec.data_size)) bit (36)) unal, 3 48 2 msg char (0 refer (ioerr_rec.msg_len)) aligned; 3 49 /* END INCLUDE FILE heals_ioerr_rec.incl.pl1 */ 141 4 1 /* Begin include file ..... io_syserr_msg.incl.pl1 */ 4 2 4 3 /* Created October 1975 by Larry Johnson */ 4 4 /* Modified 11/11/76 by Noel I. Morris */ 4 5 /* Modified November 1979 by Larry Johnson for detailed status */ 4 6 /* Modified February 1981 by Chris Jones to use channel names */ 4 7 4 8 /* This include file defines the format of the syserr message generated for I/O errors. */ 4 9 /* This message is also defined (size and type) by the "io_msg" and "io_msg_detail" 4 10* constants in syserr_binary_def.incl.pl1 */ 4 11 4 12 dcl io_msgp ptr; /* Pointer to syserr message structure */ 4 13 4 14 dcl 1 io_msg aligned based (io_msgp), 4 15 ( 4 16 2 level bit (3), /* Level of interrupt being logged */ 4 17 2 fill1 bit (9), 4 18 2 device bit (6), /* Device which caused error */ 4 19 2 time_out bit (1), /* Set if error caused by channel timeout */ 4 20 2 type bit (2), /* Type of last DCW */ 4 21 2 command bit (6), /* Command being executed by device */ 4 22 2 fill2 bit (3), 4 23 2 count bit (6) 4 24 ) unal, /* Count of message repetitions */ 4 25 2 channel char (8), /* Channel over which interrupt came */ 4 26 2 status bit (36), /* First word of IOM status */ 4 27 2 devname char (4), /* Device name */ 4 28 2 detailed_status bit (216); /* Optional detailed device status */ 4 29 4 30 /* End include file ..... io_syserr_msg.incl.pl1 */ 142 5 1 5 2 /* Begin include file ...... iom_stat.incl.pl1 */ 5 3 /* Last modified on 10/31/74 by Noel I. Morris */ 5 4 5 5 dcl statp ptr; /* pointer to status */ 5 6 5 7 dcl 1 status based (statp) aligned, /* IOM status information */ 5 8 (2 t bit (1), /* set to "1"b by IOM */ 5 9 2 power bit (1), /* non-zero if peripheral absent or power off */ 5 10 2 major bit (4), /* major status */ 5 11 2 sub bit (6), /* substatus */ 5 12 2 eo bit (1), /* even/odd bit */ 5 13 2 marker bit (1), /* non-zero if marker status */ 5 14 2 soft bit (2), /* software status */ 5 15 2 initiate bit (1), /* initiate bit */ 5 16 2 abort bit (1), /* software abort bit */ 5 17 2 channel_stat bit (3), /* IOM channel status */ 5 18 2 central_stat bit (3), /* IOM central status */ 5 19 2 mbz bit (6), 5 20 2 rcount bit (6), /* record count residue */ 5 21 2 address bit (18), /* DCW address residue */ 5 22 2 char_pos bit (3), /* character position residue */ 5 23 2 r bit (1), /* non-zero if reading */ 5 24 2 type bit (2), /* type of last DCW */ 5 25 2 tally bit (12)) unal; /* DCW tally residue */ 5 26 5 27 dcl 1 faultword based (statp) aligned, /* system fault word */ 5 28 (2 mbz1 bit (9), 5 29 2 channel bit (9), /* channel number */ 5 30 2 serv_req bit (5), /* service request */ 5 31 2 mbz2 bit (3), 5 32 2 controller_fault bit (4), /* system controller fault code */ 5 33 2 io_fault bit (6)) unal; /* I/O fault code */ 5 34 5 35 dcl 1 special_status based (statp) aligned, /* special status from PSIA */ 5 36 (2 t bit (1), /* entry present bit */ 5 37 2 channel bit (8), /* channel number */ 5 38 2 pad1 bit (3), 5 39 2 device bit (6), /* device address */ 5 40 2 pad2 bit (1), 5 41 2 byte2 bit (8), /* device dependent information */ 5 42 2 pad3 bit (1), 5 43 2 byte3 bit (8)) unal; /* device dependent information */ 5 44 5 45 /* End of include file iom_stat.incl.pl1 */ 5 46 143 6 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 6 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 6 3* version number to IOX2. */ 6 4 /* format: style2 */ 6 5 6 6 dcl 1 iocb aligned based, /* I/O control block. */ 6 7 2 version character (4) aligned, /* IOX2 */ 6 8 2 name char (32), /* I/O name of this block. */ 6 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 6 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 6 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 6 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 6 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 6 14 2 reserved bit (72), /* Reserved for future use. */ 6 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 6 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 6 17 /* open(p,mode,not_used,s) */ 6 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 6 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 6 20 /* get_line(p,bufptr,buflen,actlen,s) */ 6 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 6 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 6 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 6 24 /* put_chars(p,bufptr,buflen,s) */ 6 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 6 26 /* modes(p,newmode,oldmode,s) */ 6 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 6 28 /* position(p,u1,u2,s) */ 6 29 2 control entry (ptr, char (*), ptr, fixed (35)), 6 30 /* control(p,order,infptr,s) */ 6 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 6 32 /* read_record(p,bufptr,buflen,actlen,s) */ 6 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 6 34 /* write_record(p,bufptr,buflen,s) */ 6 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 6 36 /* rewrite_record(p,bufptr,buflen,s) */ 6 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 6 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 6 39 /* seek_key(p,key,len,s) */ 6 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 6 41 /* read_key(p,key,len,s) */ 6 42 2 read_length entry (ptr, fixed (21), fixed (35)), 6 43 /* read_length(p,len,s) */ 6 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 6 45 /* open_file(p,mode,desc,not_used,s) */ 6 46 2 close_file entry (ptr, char (*), fixed bin (35)), 6 47 /* close_file(p,desc,s) */ 6 48 2 detach entry (ptr, char (*), fixed bin (35)); 6 49 /* detach(p,desc,s) */ 6 50 6 51 declare iox_$iocb_version_sentinel 6 52 character (4) aligned external static; 6 53 6 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 144 145 /* **** END OF DECLARATIONS **** */ 146 /* FF */ 147 /* ******** PROCEDURE ******** */ 148 149 /* **** Procedure Initialization **** */ 150 151 on cleanup call clean_up; 152 153 /* Init returns. */ 154 r_code = 0; 155 arg_info.err_nb = 0; 156 157 /* Init pointers. */ 158 flags_p = addr (flags_word); 159 insw_p = ioerr_log_sw_p; 160 outsw_p = arg_info.report_iocbp; 161 inbuf_p = addr (inbuf); 162 ioerr_rec_p = addr (inbuf); 163 io_msgp = addr (ioerr_rec.data); 164 statp = addr (io_msg.status); 165 166 /* Init control flags. */ 167 flags_word = "0"b; 168 flags.hdrs = "1"b; 169 flags.no_recs = ior_flags.no_recs; 170 eof = "0"b; 171 172 /* Init all else. */ 173 174 code = 0; 175 old_date = ""; 176 page_nb = 0; 177 line_cnt = 0; 178 max_line_cnt = max_line_cnt_a; 179 call date_time_ (arg_info.from_time, rprt_from_time); 180 call date_time_ (arg_info.to_time, rprt_to_time); 181 182 /* Initialize for sort. */ 183 sort_in_file = "-if "||before (get_pdir_ (), " ") ||">heals_ioerr_log"; 184 sort_out_file = "-of " || before (get_pdir_ (), " ") || ">heals_sort_log"; 185 sort_desc_p (1) = addr (keys); 186 sort_desc_p (2) = null; 187 sort_desc_p (3) = null; 188 sort_file_size = 0; 189 sort_temp_dir = ""; 190 sort_user_out_sw = ""; 191 192 keys.number = user_keys_number; 193 194 key_desc.datatype (1) = "char"; 195 key_desc.size (1) = 8; 196 key_desc.word_offset (1) = 0; 197 key_desc.bit_offset (1) = 0; 198 key_desc.desc (1) = ""; 199 200 key_desc.datatype (2) = "bit"; 201 key_desc.size (2) = 44; 202 key_desc.word_offset (2) = 2; 203 key_desc.bit_offset (2) = 0; 204 key_desc.desc (2) = ""; 205 206 /* **** End Procedure Initialization **** */ 207 208 /* Run information. */ 209 clock_time = clock_ (); 210 call date_time_ (clock_time, date_time); 211 date = substr (date_time, 1, 8); 212 time = substr (date_time, 11, 6); 213 if flags.trace 214 | ior_flags.trace 215 then call ioa_ ("^a run info: date ^a, time ^a, version ^d of ^a.", 216 whoami, date, time, version_nb, version_date); 217 218 /* Sort heals_ioerr_log for the sorted_io_error report. */ 219 call sort_ (sort_in_file, sort_out_file, sort_desc_p, 220 sort_temp_dir, "", 0, code); 221 if code ^= 0 then call proc_err (45); 222 223 /* **** Write sorted_io_error report. **** */ 224 225 /* Attach and open heals_sort_log file. */ 226 if ^flags.no_recs 227 then do; 228 call iox_$attach_ioname (sortsw, sortsw_p, "vfile_ " || before ( 229 get_pdir_ (), " ") || ">heals_sort_log", code); 230 if code ^= 0 then call proc_err (22); 231 call iox_$open (sortsw_p, seq_in, unused, code); 232 if code ^= 0 then call proc_err (40); 233 234 /* Read first record. */ 235 call iox_$read_record (sortsw_p, inbuf_p, inbuf_len, inrec_len, code); 236 if code ^= 0 then if code = error_table_$end_of_info 237 then flags.no_recs = "1"b; 238 else call proc_err (41); 239 old_name = dev_nm; /* initialize from first record */ 240 end; 241 242 /* Record processing loop. */ 243 sorted_report_line_loop: 244 do while (^eof); 245 if flags.hdrs 246 then do; page_nb = page_nb + 1; 247 line_cnt = 5; 248 call ioa_$ioa_switch (outsw_p, 249 "^|SORTED_IO_ERROR_REPORT:^x^a^xto^x^a^5xPAGE^x^2d^/", 250 rprt_from_time, rprt_to_time, page_nb); 251 252 call ioa_$ioa_switch (outsw_p, 253 "_____D_E_V_I_C_E_____^3xS_T_A_T_U_S__^2xTLY^4xTAPE_NO^1xDENS^xRING^1xTRK^4xS_Y_S_E_R_R_____L_O_G_ 254 I-CC-DD NAME CM^3xMJ-SB-I^9xDISK_AD^2xCYL^xHEAD^1xSEC^4xTIME^3xNUMBER"); 255 256 if flags.no_recs then eof = "1"b; 257 end; 258 259 /* Write date line. */ 260 if ^eof 261 then do; if sort_date ^= old_date | flags.hdrs 262 then do; old_date = sort_date; 263 flags.hdrs = "0"b; 264 line_cnt = line_cnt +4; 265 call ioa_$ioa_switch (outsw_p, "^/^72(_^)^/DATE:^x^a^vxDATE:^x^a^/", 266 sort_date, 44, sort_date); 267 end; 268 269 ch_nr = fixed (ch_nb); 270 dev_nr = fixed (dev_nb); 271 272 /* Write sorted_io_error report line. */ 273 line_cnt = line_cnt + 1; 274 275 if rprt_flags.ioerr 276 then call ioa_$ioa_switch (outsw_p, 277 "^1d-^2a-^2a^x^4a^x^2.3b^3x^2.3b-^2.3b-^1a^2x^3d^4x^7a^1x^4a^3x^2a^2x^2a^4x^6a^x^6d", 278 iom_nb, ch_nr, dev_nr, dev_nm, dev_cmnd, maj_st, sub_st, ntrpt_nm, tally_nb, 279 tapno_diskad, dens_cyl, ring_head, tracks_sector, 280 log_time, seq_nb); 281 282 else if rprt_flags.diskerr 283 then do; call ioa_$ioa_switch (outsw_p, 284 "^1d-^2a-^2a^x^4a^x^2.3b^3x^2.3b-^2.3b-^1a^2x^3d^4x^7a^1x^4a^3x^2a^2x^2a^4x^6a^x^6d^/^18x^a", 285 iom_nb, ch_nr, dev_nr, dev_nm, dev_cmnd, maj_st, sub_st, ntrpt_nm, tally_nb, 286 tapno_diskad, dens_cyl, ring_head, tracks_sector, 287 log_time, seq_nb, ioerr_rec.msg); 288 line_cnt = line_cnt + 1; 289 end; 290 291 else if rprt_flags.disk_addr 292 then call ioa_$ioa_switch (outsw_p, 293 "^1d-^2a-^2a^x^4a^x^2.3b^19x^7a^1x^4a^3x^2a^2x^2a^4x^6a^x^6d", 294 iom_nb, ch_nr, dev_nr, dev_nm, dev_cmnd, 295 tapno_diskad, dens_cyl, ring_head, tracks_sector, log_time, seq_nb); 296 297 else if rprt_flags.ext_stat | rprt_flags.iom_rec 298 then call ioa_$ioa_switch (outsw_p, 299 "^1d-^2a-^2a^x^4a^x^2.3b^3x^38a^3x^6a^x^6d", 300 iom_nb, ch_nr, dev_nr, dev_nm, dev_cmnd, ioerr_rec.msg, log_time, seq_nb); 301 302 else if rprt_flags.msg 303 then call ioa_$ioa_switch (outsw_p, "^a", ioerr_rec.msg); 304 305 else if rprt_flags.bulk 306 then call ioa_$ioa_switch (outsw_p, 307 "^8x^50a^x^6a^x^6d", 308 ioerr_rec.msg, log_time, seq_nb); 309 310 /* Read next heals_sort_log record. */ 311 call iox_$read_record (sortsw_p, inbuf_p, inbuf_len, inrec_len, code); 312 if code ^= 0 313 then if code = error_table_$end_of_info 314 then eof = "1"b; 315 else call proc_err (42); 316 317 /* Write end of dev_nm errors line. */ 318 if dev_nm ^= old_name | sort_date ^= old_date 319 then do; line_cnt = line_cnt + 2; 320 if line_cnt > max_line_cnt -4 321 then flags.hdrs = "1"b; 322 call ioa_$ioa_switch (outsw_p, 323 "end: ^a errors^/", old_name); 324 old_name = dev_nm; 325 end; 326 327 /* Date change. */ 328 if sort_date ^= old_date 329 then if line_cnt > max_line_cnt - 10 330 then flags.hdrs = "1"b; 331 end; 332 333 if line_cnt > max_line_cnt 334 then flags.hdrs = "1"b; 335 end sorted_report_line_loop; 336 337 /* End of file on heals_sort_log. */ 338 if flags.no_recs 339 then call ioa_$ioa_switch (outsw_p, 340 "^/^11xThere were no io_errors during the report period."); 341 else call ioa_$ioa_switch (outsw_p, 342 "end: ^a errors", old_name); 343 call ioa_$ioa_switch (outsw_p, 344 "^/END: SORTED_IO_ERROR_REPORT"); 345 if ^flags.no_recs 346 then do; call iox_$close (sortsw_p, code); 347 if code ^= 0 then call proc_err (43); 348 call iox_$detach_iocb (sortsw_p, code); 349 if code ^= 0 then call proc_err (27); 350 end; 351 return; 352 353 /* FF */ 354 proc_err: proc (proc_err_nb); 355 dcl proc_err_nb fixed bin; 356 r_code = code; 357 arg_info.err_nb = proc_err_nb; 358 call com_err_ (code, whoami, "Procedure error number = ^d.", proc_err_nb); 359 call clean_up; 360 goto err_return; 361 end proc_err; 362 363 clean_up: proc; 364 if sortsw_p ^= null () then do; 365 call iox_$close (sortsw_p, code); 366 call iox_$detach_iocb (sortsw_p, code); 367 end; 368 return; 369 end clean_up; 370 371 err_return: return; 372 373 end heals_sorted_report_gen_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/27/84 0745.3 heals_sorted_report_gen_.pl1 >spec>on>heals>heals_sorted_report_gen_.pl1 139 1 11/02/76 1752.0 heals_arg_info.incl.pl1 >ldd>include>heals_arg_info.incl.pl1 140 2 10/25/77 1258.3 heals_io_report_args.incl.pl1 >ldd>include>heals_io_report_args.incl.pl1 141 3 10/25/77 1258.3 heals_ioerr_rec.incl.pl1 >ldd>include>heals_ioerr_rec.incl.pl1 142 4 08/10/81 1843.6 io_syserr_msg.incl.pl1 >ldd>include>io_syserr_msg.incl.pl1 143 5 01/10/75 1343.6 iom_stat.incl.pl1 >ldd>include>iom_stat.incl.pl1 144 6 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.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. addr builtin function dcl 134 ref 158 161 162 163 164 185 arg_info based structure level 1 dcl 105 before builtin function dcl 134 ref 183 184 228 bit_offset 6 000376 automatic fixed bin(6,0) array level 3 dcl 122 set ref 197* 203* bulk 6(34) based bit(1) level 4 packed unaligned dcl 3-7 ref 305 ch_nb 2(04) based fixed bin(6,0) level 3 packed unaligned dcl 3-7 ref 269 ch_nr 000150 automatic picture(2) unaligned dcl 78 set ref 269* 275* 283* 291* 297* cleanup 000376 stack reference condition dcl 135 ref 151 clock_ 000026 constant entry external dcl 33 ref 209 clock_time 000154 automatic fixed bin(71,0) dcl 85 set ref 209* 210* code 000162 automatic fixed bin(35,0) dcl 92 set ref 174* 219* 221 228* 230 231* 232 235* 236 236 311* 312 312 346* 347 348* 349 356 358* 365* 366* com_err_ 000036 constant entry external dcl 37 ref 358 data 21 based bit(36) array level 3 packed unaligned dcl 3-7 set ref 163 data_size 20(24) based fixed bin(11,0) level 3 packed unaligned dcl 3-7 ref 283 297 302 305 datatype 2 000376 automatic char(8) array level 3 packed unaligned dcl 122 set ref 194* 200* date 000140 automatic char(8) unaligned dcl 75 set ref 211* 213* date_time 000144 automatic char(16) unaligned dcl 77 set ref 210* 211 212 date_time_ 000040 constant entry external dcl 38 ref 179 180 210 dens_cyl 11(27) based picture(4) level 3 packed unaligned dcl 3-7 set ref 275* 283* 291* desc 7 000376 automatic char(3) array level 3 packed unaligned dcl 122 set ref 198* 204* dev_cmnd 2(32) based bit(6) level 3 packed unaligned dcl 3-7 set ref 275* 283* 291* 297* dev_nb 2(11) based fixed bin(6,0) level 3 packed unaligned dcl 3-7 ref 270 dev_nm 4 based picture(4) level 3 packed unaligned dcl 3-7 set ref 239 275* 283* 291* 297* 318 324 dev_nr 000151 automatic picture(2) unaligned dcl 79 set ref 270* 275* 283* 291* 297* disk_addr 6(29) based bit(1) level 4 packed unaligned dcl 3-7 ref 291 diskerr 6(28) based bit(1) level 4 packed unaligned dcl 3-7 ref 282 eof 000165 automatic bit(1) dcl 99 set ref 170* 243 256* 260 312* err_nb 4 based fixed bin(35,0) level 2 dcl 105 set ref 155* 357* error_table_$end_of_info 000022 external static fixed bin(35,0) dcl 28 ref 236 312 ext_stat 6(30) based bit(1) level 4 packed unaligned dcl 3-7 ref 297 fixed builtin function dcl 134 ref 269 270 flags based structure level 1 dcl 106 flags_p 000100 automatic pointer initial dcl 46 set ref 46* 158* 168 169 213 226 236 245 256 261 263 320 328 333 338 345 flags_word 000164 automatic bit(36) dcl 98 set ref 158 167* from_time 126 based fixed bin(71,0) level 2 dcl 105 set ref 179* get_pdir_ 000030 constant entry external dcl 34 ref 183 184 228 hdrs 0(02) based bit(1) level 2 packed unaligned dcl 106 set ref 168* 245 261 263* 320* 328* 333* heals_arg_info 000404 automatic structure level 1 dcl 1-4 heals_arg_info_p parameter pointer dcl 22 ref 6 155 160 179 180 357 heals_ior_args_p parameter pointer dcl 23 ref 6 159 169 178 213 inbuf 000125 automatic char dcl 71 set ref 161 162 inbuf_len 000016 internal static fixed bin(21,0) initial dcl 94 set ref 71 235* 311* inbuf_p 000116 automatic pointer initial dcl 53 set ref 53* 161* 235* 311* inrec_len 000163 automatic fixed bin(21,0) dcl 93 set ref 235* 311* insw_p 000120 automatic pointer initial dcl 54 set ref 54* 159* io_msg based structure level 1 dcl 4-14 io_msgp 000540 automatic pointer dcl 4-12 set ref 163* 164 ioa_ 000032 constant entry external dcl 35 ref 213 ioa_$ioa_switch 000034 constant entry external dcl 36 ref 248 252 265 275 283 291 297 302 305 322 338 341 343 ioerr 6(27) based bit(1) level 4 packed unaligned dcl 3-7 ref 275 ioerr_log_sw_p 6 based pointer level 2 dcl 2-5 ref 159 ioerr_rec based structure level 1 dcl 3-7 ioerr_rec_p 000536 automatic pointer dcl 3-6 set ref 162* 163 239 261 262 265 265 269 270 275 275 275 275 275 275 275 275 275 275 275 275 275 275 282 283 283 283 283 283 283 283 283 283 283 283 283 283 283 291 291 291 291 291 291 291 291 291 291 297 297 297 297 297 297 297 297 302 302 305 305 305 305 318 318 324 328 iom_nb 2 based fixed bin(3,0) level 3 packed unaligned dcl 3-7 set ref 275* 283* 291* 297* iom_rec 6(31) based bit(1) level 4 packed unaligned dcl 3-7 ref 297 ior_flags based structure level 1 dcl 2-12 ior_flags_p based pointer level 2 dcl 2-5 ref 169 213 ior_prms based structure level 1 dcl 2-18 ior_prms_p 2 based pointer level 2 dcl 2-5 ref 178 ior_ptrs based structure level 1 dcl 2-5 iox_$attach_ioname 000042 constant entry external dcl 39 ref 228 iox_$close 000046 constant entry external dcl 41 ref 346 365 iox_$detach_iocb 000044 constant entry external dcl 40 ref 348 366 iox_$open 000050 constant entry external dcl 42 ref 231 iox_$read_record 000052 constant entry external dcl 43 ref 235 311 key_desc 2 000376 automatic structure array level 2 unaligned dcl 122 keys 000376 automatic structure level 1 unaligned dcl 122 set ref 185 line_cnt 000156 automatic fixed bin(17,0) dcl 86 set ref 177* 247* 264* 264 273* 273 288* 288 319* 319 320 328 333 log_time 5 based char(6) level 3 packed unaligned dcl 3-7 set ref 275* 283* 291* 297* 305* maj_st 2(19) based bit(6) level 3 packed unaligned dcl 3-7 set ref 275* 283* max_line_cnt 000157 automatic fixed bin(17,0) dcl 87 set ref 178* 320 328 333 max_line_cnt_a 1(18) based fixed bin(17,0) level 2 packed unaligned dcl 2-18 ref 178 msg based char level 2 in structure "ioerr_rec" dcl 3-7 in procedure "heals_sorted_report_gen_" set ref 283* 297* 302* 305* msg 6(33) based bit(1) level 4 in structure "ioerr_rec" packed unaligned dcl 3-7 in procedure "heals_sorted_report_gen_" ref 302 msg_len 20(12) based fixed bin(11,0) level 3 packed unaligned dcl 3-7 ref 283 283 297 297 302 302 305 305 no_recs 0(03) based bit(1) level 2 in structure "flags" packed unaligned dcl 106 in procedure "heals_sorted_report_gen_" set ref 169* 226 236* 256 338 345 no_recs 0(02) based bit(1) level 2 in structure "ior_flags" packed unaligned dcl 2-12 in procedure "heals_sorted_report_gen_" ref 169 ntrpt_nm 6(18) based char(1) level 3 packed unaligned dcl 3-7 set ref 275* 283* null builtin function dcl 134 ref 46 47 50 51 52 52 52 53 54 55 186 187 364 number 1 000376 automatic fixed bin(17,0) level 2 dcl 122 set ref 192* old_date 000136 automatic char(8) unaligned dcl 74 set ref 175* 261 262* 318 328 old_name 000124 automatic char(4) unaligned dcl 69 set ref 239* 318 322* 324* 341* outsw_p 000122 automatic pointer initial dcl 55 set ref 55* 160* 248* 252* 265* 275* 283* 291* 297* 302* 305* 322* 338* 341* 343* page_nb 000160 automatic fixed bin(17,0) dcl 88 set ref 176* 246* 246 248* proc_err_nb parameter fixed bin(17,0) dcl 355 set ref 354 357 358* r_code parameter fixed bin(35,0) dcl 24 set ref 6 154* 356* report_iocbp 2 based pointer level 2 dcl 105 ref 160 report_nfo 4 based structure level 2 dcl 3-7 ring_head 12(27) based picture(2) level 3 packed unaligned dcl 3-7 set ref 275* 283* 291* rprt_flags 6(27) based structure level 3 packed unaligned dcl 3-7 rprt_from_time 000125 automatic char(16) unaligned dcl 72 set ref 179* 248* rprt_to_time 000131 automatic char(16) unaligned dcl 73 set ref 180* 248* seq_in 000017 internal static fixed bin(17,0) initial dcl 95 set ref 231* seq_nb 15 based fixed bin(35,0) level 3 packed unaligned dcl 3-7 set ref 275* 283* 291* 297* 305* size 4 000376 automatic fixed bin(24,0) array level 3 dcl 122 set ref 195* 201* sort_ 000024 constant entry external dcl 31 ref 219 sort_data_p 000106 automatic pointer initial dcl 51 set ref 51* sort_date based char(8) level 3 packed unaligned dcl 3-7 set ref 261 262 265* 265* 318 328 sort_desc_p 000110 automatic pointer initial array dcl 52 set ref 52* 52* 52* 185* 186* 187* 219* sort_file_size 000167 automatic float bin(27) dcl 115 set ref 188* sort_in_file 000324 automatic char(168) array unaligned dcl 120 set ref 183* 219* sort_out_file 000170 automatic char(168) unaligned dcl 116 set ref 184* 219* sort_rec based structure level 2 dcl 3-7 sort_temp_dir 000242 automatic char(168) unaligned dcl 117 set ref 189* 219* sort_user_out_sw 000314 automatic char(32) unaligned dcl 118 set ref 190* sortsw 000020 internal static char(6) initial unaligned dcl 119 set ref 228* sortsw_p 000104 automatic pointer initial dcl 50 set ref 50* 228* 231* 235* 311* 346* 348* 364 365* 366* statp 000542 automatic pointer dcl 5-5 set ref 164* status 3 based bit(36) level 2 dcl 4-14 set ref 164 sub_st 2(25) based bit(6) level 3 packed unaligned dcl 3-7 set ref 275* 283* syserr_nfo 14 based structure level 2 dcl 3-7 tally_nb 14 based fixed bin(35,0) level 3 packed unaligned dcl 3-7 set ref 275* 283* tape_disk_nfo 10 based structure level 2 dcl 3-7 tapno_diskad 10 based picture(7) level 3 packed unaligned dcl 3-7 set ref 275* 283* 291* time 000142 automatic char(6) unaligned dcl 76 set ref 212* 213* to_time 130 based fixed bin(71,0) level 2 dcl 105 set ref 180* trace based bit(1) level 2 in structure "flags" packed unaligned dcl 106 in procedure "heals_sorted_report_gen_" ref 213 trace based bit(1) level 2 in structure "ior_flags" packed unaligned dcl 2-12 in procedure "heals_sorted_report_gen_" ref 213 tracks_sector 13(09) based picture(2) level 3 packed unaligned dcl 3-7 set ref 275* 283* 291* unused 000166 automatic bit(1) initial dcl 102 set ref 102* 231* user_keys_number constant fixed bin(17,0) initial dcl 121 ref 122 192 version 000376 automatic fixed bin(17,0) initial level 2 dcl 122 set ref 122* version_date 000152 automatic char(8) initial unaligned dcl 82 set ref 82* 213* version_nb 000161 automatic fixed bin(17,0) initial dcl 91 set ref 91* 213* whoami 000010 internal static char(24) initial unaligned dcl 70 set ref 213* 358* word_offset 5 000376 automatic fixed bin(18,0) array level 3 dcl 122 set ref 196* 202* work_p1 000102 automatic pointer initial dcl 47 set ref 47* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. addrel builtin function dcl 134 ch_nfo based structure level 1 dcl 2-25 ch_nfo_p automatic pointer dcl 2-24 faultword based structure level 1 dcl 5-27 iocb based structure level 1 dcl 6-6 ior_avars based structure level 1 dcl 2-33 iox_$iocb_version_sentinel external static char(4) dcl 6-51 special_status based structure level 1 dcl 5-35 status based structure level 1 dcl 5-7 NAMES DECLARED BY EXPLICIT CONTEXT. clean_up 002701 constant entry internal dcl 363 ref 151 359 err_return 002630 constant label dcl 371 ref 360 heals_sorted_report_gen_ 000411 constant entry external dcl 6 proc_err 002631 constant entry internal dcl 354 ref 221 230 232 238 315 347 349 sorted_report_line_loop 001343 constant label dcl 243 NAME DECLARED BY CONTEXT OR IMPLICATION. substr builtin function ref 211 212 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3136 3212 2751 3146 Length 3542 2751 54 314 164 12 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME heals_sorted_report_gen_ 674 external procedure is an external procedure. on unit on line 151 64 on unit proc_err internal procedure shares stack frame of external procedure heals_sorted_report_gen_. clean_up 70 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 whoami heals_sorted_report_gen_ 000016 inbuf_len heals_sorted_report_gen_ 000017 seq_in heals_sorted_report_gen_ 000020 sortsw heals_sorted_report_gen_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME heals_sorted_report_gen_ 000100 flags_p heals_sorted_report_gen_ 000102 work_p1 heals_sorted_report_gen_ 000104 sortsw_p heals_sorted_report_gen_ 000106 sort_data_p heals_sorted_report_gen_ 000110 sort_desc_p heals_sorted_report_gen_ 000116 inbuf_p heals_sorted_report_gen_ 000120 insw_p heals_sorted_report_gen_ 000122 outsw_p heals_sorted_report_gen_ 000124 old_name heals_sorted_report_gen_ 000125 inbuf heals_sorted_report_gen_ 000125 rprt_from_time heals_sorted_report_gen_ 000131 rprt_to_time heals_sorted_report_gen_ 000136 old_date heals_sorted_report_gen_ 000140 date heals_sorted_report_gen_ 000142 time heals_sorted_report_gen_ 000144 date_time heals_sorted_report_gen_ 000150 ch_nr heals_sorted_report_gen_ 000151 dev_nr heals_sorted_report_gen_ 000152 version_date heals_sorted_report_gen_ 000154 clock_time heals_sorted_report_gen_ 000156 line_cnt heals_sorted_report_gen_ 000157 max_line_cnt heals_sorted_report_gen_ 000160 page_nb heals_sorted_report_gen_ 000161 version_nb heals_sorted_report_gen_ 000162 code heals_sorted_report_gen_ 000163 inrec_len heals_sorted_report_gen_ 000164 flags_word heals_sorted_report_gen_ 000165 eof heals_sorted_report_gen_ 000166 unused heals_sorted_report_gen_ 000167 sort_file_size heals_sorted_report_gen_ 000170 sort_out_file heals_sorted_report_gen_ 000242 sort_temp_dir heals_sorted_report_gen_ 000314 sort_user_out_sw heals_sorted_report_gen_ 000324 sort_in_file heals_sorted_report_gen_ 000376 keys heals_sorted_report_gen_ 000404 heals_arg_info heals_sorted_report_gen_ 000536 ioerr_rec_p heals_sorted_report_gen_ 000540 io_msgp heals_sorted_report_gen_ 000542 statp heals_sorted_report_gen_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return alloc_auto_adj enable shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ com_err_ date_time_ get_pdir_ ioa_ ioa_$ioa_switch iox_$attach_ioname iox_$close iox_$detach_iocb iox_$open iox_$read_record sort_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$end_of_info LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000405 46 000416 47 000420 50 000421 51 000422 52 000423 53 000446 54 000447 55 000450 71 000451 82 000460 91 000462 102 000464 122 000465 151 000475 154 000517 155 000521 158 000524 159 000526 160 000532 161 000534 162 000536 163 000540 164 000542 167 000544 168 000545 169 000547 170 000554 174 000555 175 000556 176 000560 177 000561 178 000562 179 000567 180 000604 183 000624 184 000702 185 000745 186 000750 187 000752 188 000753 189 000755 190 000760 192 000763 194 000766 195 000771 196 000773 197 000774 198 000775 200 000777 201 001002 202 001004 203 001006 204 001007 209 001011 210 001020 211 001035 212 001037 213 001042 219 001112 221 001154 226 001162 228 001165 230 001253 231 001262 232 001277 235 001305 236 001324 238 001334 239 001340 243 001343 245 001346 246 001351 247 001352 248 001354 252 001407 256 001427 260 001434 261 001436 262 001446 263 001451 264 001453 265 001455 269 001512 270 001527 273 001543 275 001544 282 001672 283 001675 288 002034 289 002035 291 002036 297 002141 302 002237 305 002277 311 002352 312 002371 315 002401 318 002405 319 002415 320 002417 322 002425 324 002452 328 002455 333 002467 335 002474 338 002475 341 002521 343 002546 345 002566 346 002571 347 002602 348 002610 349 002621 351 002627 371 002630 354 002631 356 002633 357 002636 358 002642 359 002673 360 002677 363 002700 364 002706 365 002713 366 002723 368 002735 ----------------------------------------------------------- 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