COMPILATION LISTING OF SEGMENT report_ Compiled by: Multics PL/I Compiler, Release 25c, of February 18, 1980 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 05/20/80 1924.4 mst Tue Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 report_: proc; 11 12 call com_err_ (0, "report_", "Cannot call I/O switch directly."); 13 return; 14 15 report_attach: entry (iocb_ptr, option_array, com_err_sw, code); 16 17 dcl iocb_ptr ptr, /* points to the control block of switch to be attached */ 18 option_array (*)char (*)var, 19 com_err_sw bit (1), 20 code fixed bin (35); 21 22 iocbp = iocb_ptr; 23 if (iocbp -> iocb.attach_descrip_ptr ^= null ()) 24 then do; 25 code = error_table_$not_detached; 26 return; 27 end; 28 29 if (hbound (option_array, 1) = 0) 30 then do; 31 code = error_table_$insufficient_open; 32 if com_err_sw 33 then do; 34 call com_err_(code,"report_","Missing report name."); 35 end; 36 return; 37 end; 38 call hcs_$make_ptr (null(), (option_array (1)), "attach", ep_ptr, code); 39 if (code ^= 0) 40 then do; 41 if com_err_sw 42 then do; 43 call com_err_(code,"report_","^a$attach",option_array(1)); 44 end; 45 return; 46 end; 47 48 rcbp = null (); 49 call cu_$ptr_call (ep_ptr, rcbp, option_array, code); 50 if (code ^= 0) 51 then do; 52 if com_err_sw 53 then do; 54 call com_err_(code,"report_"); 55 end; 56 return; 57 end; 58 59 iocbp -> iocb.open = report_$open; 60 iocbp -> iocb.detach_iocb = report_$detach; 61 iocbp -> iocb.attach_data_ptr = rcbp; 62 aloc_len = length (option_array (1)) + 8; 63 allocate descrip; 64 descrip.string = "report_ " || option_array (1); 65 iocbp -> iocb.attach_descrip_ptr = d_ptr; 66 67 code = 0; 68 call iox_$propagate (iocb_ptr); 69 return; 70 71 dcl 1 descrip based (d_ptr), 72 2 leng fixed bin, 73 2 string char (aloc_len refer (leng)); 74 dcl aloc_len fixed bin; 75 dcl d_ptr ptr; 76 dcl cmode char (20)var; 77 dcl rcbp ptr; 78 dcl 1 rcb based (rcbp), 79 2 E, 80 3 mode fixed bin, 81 3 write entry (ptr, ptr, fixed bin (21), fixed bin (35)), 82 3 close entry (ptr, fixed bin (35)); 83 84 open: entry (iocb_ptr, mode, unused, code); 85 dcl mode fixed bin, 86 unused bit (1); 87 88 iocbp = iocb_ptr -> iocb.actual_iocb_ptr; 89 rcbp = iocbp -> attach_data_ptr; 90 if (mode ^= E.mode) 91 then do; 92 code = error_table_$missent; 93 return; 94 end; 95 if (mode = 2) 96 then do; 97 cmode = "stream_output"; 98 iocbp -> iocb.put_chars = report_$put; 99 end; 100 else if (mode = 5) 101 then do; 102 cmode = "sequential_output"; 103 iocbp -> iocb.write_record = report_$put; 104 end; 105 else do; 106 code = error_table_$no_operation; 107 return; 108 end; 109 aloc_len = length (cmode); 110 allocate descrip; 111 descrip.string = cmode; 112 iocbp -> iocb.open_descrip_ptr = d_ptr; 113 iocbp -> iocb.close = report_$close; 114 call iox_$propagate (iocb_ptr); 115 return; 116 117 118 put: entry (iocb_ptr, buff_ptr, rec_len, code); 119 120 dcl buff_ptr ptr, 121 rec_len fixed bin (21); 122 iocbp = iocb_ptr -> actual_iocb_ptr; 123 rcbp = iocbp -> attach_data_ptr; 124 code = 0; 125 call E.write (rcbp, buff_ptr, rec_len, code); 126 return; 127 128 129 close: entry (iocb_ptr, code); 130 131 iocbp = iocb_ptr -> actual_iocb_ptr; 132 rcbp = iocbp -> iocb.attach_data_ptr; 133 call E.close (rcbp, code); 134 iocbp -> iocb.open = report_$reopen; 135 iocbp -> iocb.detach_iocb = report_$detach; 136 iocbp -> iocb.open_descrip_ptr = null (); 137 call iox_$propagate (iocb_ptr); 138 return; 139 140 reopen: entry (iocb_ptr, mode, unused, code); 141 142 code = error_table_$not_detached; 143 return; 144 145 detach: entry (iocb_ptr, code); 146 147 iocb_ptr -> iocb.attach_descrip_ptr = null (); 148 call iox_$propagate (iocb_ptr); 149 return; 150 151 152 dcl com_err_ entry options(variable); 153 dcl cu_$decode_entry_value entry; 154 dcl cu_$ptr_call entry options(variable); 155 dcl env_ptr ptr; 156 dcl ep_ptr ptr; 157 dcl error_table_$insufficient_open fixed bin(35)ext static; 158 dcl error_table_$missent fixed bin(35)ext static; 159 dcl error_table_$no_operation fixed bin(35)ext static; 160 dcl error_table_$not_detached fixed bin(35)ext static; 161 dcl hcs_$make_ptr entry(ptr,char(*),char(*),ptr,fixed bin(35)); 162 dcl iocbp ptr; 163 dcl iox_$propagate entry (ptr); 164 dcl report_$close entry; 165 dcl report_$detach entry; 166 dcl report_$open entry; 167 dcl report_$put entry; 168 dcl report_$reopen entry; 1 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 1 2 1 3 dcl 1 iocb aligned based, /* I/O control block. */ 1 4 2 version fixed init(1), /* Version number of structure. */ 1 5 2 name char(32), /* I/O name of this block. */ 1 6 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 7 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 8 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 9 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 10 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 11 2 reserved bit(72), /* Reserved for future use. */ 1 12 2 detach_iocb entry(ptr,fixed(35)), /* detach_iocb(p,s) */ 1 13 2 open entry(ptr,fixed,bit(1)aligned,fixed(35)), /* open(p,mode,not_used,s) */ 1 14 2 close entry(ptr,fixed(35)), /* close(p,s) */ 1 15 2 get_line entry(ptr,ptr,fixed(21),fixed(21),fixed(35)), /* get_line(p,bufptr,buflen,actlen,s) */ 1 16 2 get_chars entry(ptr,ptr,fixed(21),fixed(21),fixed(35)), /* get_chars(p,bufptr,buflen,actlen,s) */ 1 17 2 put_chars entry(ptr,ptr,fixed(21),fixed(35)), /* put_chars(p,bufptr,buflen,s) */ 1 18 2 modes entry(ptr,char(*),char(*),fixed(35)), /* modes(p,newmode,oldmode,s) */ 1 19 2 position entry(ptr,fixed,fixed(21),fixed(35)), /* position(p,u1,u2,s) */ 1 20 2 control entry(ptr,char(*),ptr,fixed(35)), /* control(p,order,infptr,s) */ 1 21 2 read_record entry(ptr,ptr,fixed(21),fixed(21),fixed(35)), /* read_record(p,bufptr,buflen,actlen,s) */ 1 22 2 write_record entry(ptr,ptr,fixed(21),fixed(35)), /* write_record(p,bufptr,buflen,s) */ 1 23 2 rewrite_record entry(ptr,ptr,fixed(21),fixed(35)), /* rewrite_record(p,bufptr,buflen,s) */ 1 24 2 delete_record entry(ptr,fixed(35)), /* delete_record(p,s) */ 1 25 2 seek_key entry(ptr,char(256)varying,fixed(21),fixed(35)), /* seek_key(p,key,len,s) */ 1 26 2 read_key entry(ptr,char(256)varying,fixed(21),fixed(35)), /* read_key(p,key,len,s) */ 1 27 2 read_length entry(ptr,fixed(21),fixed(35)); /* read_length(p,len,s) */ 1 28 1 29 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 169 170 171 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/20/80 1924.4 report_.pl1 >spec>online>mrpg0520>report_.pl1 169 1 08/27/75 1703.2 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. E based structure level 2 unaligned dcl 78 actual_iocb_ptr 12 based pointer level 2 dcl 1-3 ref 88 122 131 aloc_len 000100 automatic fixed bin(17,0) dcl 74 set ref 62* 63 63 109* 110 110 attach_data_ptr 16 based pointer level 2 dcl 1-3 set ref 61* 89 123 132 attach_descrip_ptr 14 based pointer level 2 dcl 1-3 set ref 23 65* 147* buff_ptr parameter pointer dcl 120 set ref 118 125* close 36 based entry variable level 2 in structure "iocb" dcl 1-3 in procedure "report_" set ref 113* close 6 based entry variable level 3 in structure "rcb" dcl 78 in procedure "report_" ref 133 cmode 000104 automatic varying char(20) dcl 76 set ref 97* 102* 109 111 code parameter fixed bin(35,0) dcl 17 set ref 15 25* 31* 34* 38* 39 43* 49* 50 54* 67* 84 92* 106* 118 124* 125* 129 133* 140 142* 145 com_err_ 000010 constant entry external dcl 152 ref 12 34 43 54 com_err_sw parameter bit(1) unaligned dcl 17 ref 15 32 41 52 cu_$ptr_call 000012 constant entry external dcl 154 ref 49 d_ptr 000102 automatic pointer dcl 75 set ref 63* 64 65 110* 111 112 descrip based structure level 1 unaligned dcl 71 set ref 63 110 detach_iocb 26 based entry variable level 2 dcl 1-3 set ref 60* 135* ep_ptr 000114 automatic pointer dcl 156 set ref 38* 49* error_table_$insufficient_open 000014 external static fixed bin(35,0) dcl 157 ref 31 error_table_$missent 000016 external static fixed bin(35,0) dcl 158 ref 92 error_table_$no_operation 000020 external static fixed bin(35,0) dcl 159 ref 106 error_table_$not_detached 000022 external static fixed bin(35,0) dcl 160 ref 25 142 hcs_$make_ptr 000024 constant entry external dcl 161 ref 38 iocb based structure level 1 dcl 1-3 iocb_ptr parameter pointer dcl 17 set ref 15 22 68* 84 88 114* 118 122 129 131 137* 140 145 147 148* iocbp 000116 automatic pointer dcl 162 set ref 22* 23 59 60 61 65 88* 89 98 103 112 113 122* 123 131* 132 134 135 136 iox_$propagate 000026 constant entry external dcl 163 ref 68 114 137 148 leng based fixed bin(17,0) level 2 dcl 71 set ref 63* 64 110* 111 mode based fixed bin(17,0) level 3 in structure "rcb" dcl 78 in procedure "report_" ref 90 mode parameter fixed bin(17,0) dcl 85 in procedure "report_" ref 84 90 95 100 140 open 32 based entry variable level 2 dcl 1-3 set ref 59* 134* open_descrip_ptr 20 based pointer level 2 dcl 1-3 set ref 112* 136* option_array parameter varying char array dcl 17 set ref 15 29 38 43* 49* 62 64 put_chars 52 based entry variable level 2 dcl 1-3 set ref 98* rcb based structure level 1 unaligned dcl 78 rcbp 000112 automatic pointer dcl 77 set ref 48* 49* 61 89* 90 123* 125 125* 132* 133 133* rec_len parameter fixed bin(21,0) dcl 120 set ref 118 125* report_$close 000030 constant entry external dcl 164 ref 113 report_$detach 000032 constant entry external dcl 165 ref 60 135 report_$open 000034 constant entry external dcl 166 ref 59 report_$put 000036 constant entry external dcl 167 ref 98 103 report_$reopen 000040 constant entry external dcl 168 ref 134 string 1 based char level 2 packed unaligned dcl 71 set ref 64* 111* unused parameter bit(1) unaligned dcl 85 ref 84 140 write 2 based entry variable level 3 dcl 78 ref 125 write_record 76 based entry variable level 2 dcl 1-3 set ref 103* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. cu_$decode_entry_value 000000 constant entry external dcl 153 env_ptr automatic pointer dcl 155 NAMES DECLARED BY EXPLICIT CONTEXT. close 000721 constant entry external dcl 129 detach 001013 constant entry external dcl 145 open 000531 constant entry external dcl 84 put 000660 constant entry external dcl 118 reopen 000775 constant entry external dcl 140 report_ 000064 constant entry external dcl 10 report_attach 000125 constant entry external dcl 15 NAMES DECLARED BY CONTEXT OR IMPLICATION. hbound builtin function ref 29 length builtin function ref 62 109 null builtin function ref 23 38 38 48 136 147 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1240 1302 1042 1250 Length 1516 1042 42 177 175 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME report_ 136 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME report_ 000100 aloc_len report_ 000102 d_ptr report_ 000104 cmode report_ 000112 rcbp report_ 000114 ep_ptr report_ 000116 iocbp report_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_var call_ext_out_desc call_ext_out return shorten_stack ext_entry ext_entry_desc alloc_based_storage THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$ptr_call hcs_$make_ptr iox_$propagate report_$close report_$detach report_$open report_$put report_$reopen THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$insufficient_open error_table_$missent error_table_$no_operation error_table_$not_detached LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000063 12 000071 13 000117 15 000120 22 000143 23 000147 25 000153 26 000156 29 000157 31 000163 32 000166 34 000173 36 000223 38 000224 39 000301 41 000304 43 000312 45 000351 48 000352 49 000354 50 000402 52 000404 54 000412 56 000431 59 000432 60 000440 61 000443 62 000445 63 000453 64 000464 65 000507 67 000513 68 000514 69 000523 84 000524 88 000541 89 000546 90 000550 92 000553 93 000556 95 000557 97 000561 98 000566 99 000573 100 000574 102 000576 103 000603 104 000610 106 000611 107 000614 109 000615 110 000617 111 000630 112 000634 113 000636 114 000643 115 000652 118 000653 122 000670 123 000675 124 000677 125 000700 126 000714 129 000715 131 000731 132 000736 133 000740 134 000750 135 000756 136 000761 137 000763 138 000772 140 000773 142 001005 143 001010 145 001011 147 001023 148 001030 149 001037 ----------------------------------------------------------- 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