COMPILATION LISTING OF SEGMENT make_pps_tape Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/18/82 1648.4 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 make_pps_tape: proc (); 12 13 14 15 /* CONSTANTS */ 16 17 18 dcl ME char (13) static internal options (constant) init ("make_pps_tape"); 19 dcl silent bit(1) static internal options (constant) init("1"b); 20 21 22 23 /* AUTOMATIC */ 24 25 26 dcl arg_len fixed bin; 27 dcl arg_no fixed bin; 28 dcl arg_ptr ptr; 29 dcl attach_arg_len fixed bin; 30 dcl attach_arg_ptr ptr; 31 dcl attach_desc_supplied bit (1); 32 dcl bit_count fixed bin (24); 33 dcl code fixed bin (35); 34 dcl dir char (168); 35 dcl ent char (32); 36 dcl header_printed bit (1); 37 dcl iocb_ptr ptr; 38 dcl job_num fixed bin; 39 dcl modestring char (256) varying; 40 dcl modestring_next bit (1); 41 dcl n_bytes fixed bin (21); 42 dcl nargs fixed bin; 43 dcl seg_ptr ptr; 44 dcl target_switch_name char (19); 45 46 47 /* BASED */ 48 49 50 dcl arg char (arg_len) based (arg_ptr); 51 dcl attach_arg char (attach_arg_len) based (attach_arg_ptr); 52 53 54 /* EXTERNAL ENTRIES */ 55 56 57 dcl com_err_ entry options (variable); 58 dcl cu_$arg_count entry (fixed bin); 59 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 60 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 61 dcl hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (2), ptr, fixed bin (35)); 62 dcl ioa_ entry options (variable); 63 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 64 dcl iox_$close entry (ptr, fixed bin (35)); 65 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 66 dcl iox_$destroy_iocb entry (ptr, fixed bin(35)); 67 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 68 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 69 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 70 dcl make_pps_tape$make_pps_tape ext; 71 dcl unique_chars_ entry (bit (*)) returns (char (15)); 72 73 74 /* CONDITIONS */ 75 76 dcl cleanup condition; 77 78 79 /* ERROR CODES */ 80 81 82 dcl error_table_$badopt fixed bin (35) ext; 83 dcl error_table_$noarg fixed bin (35) ext; 84 85 86 /* BUILTIN FUNCTIONS */ 87 88 89 dcl addr builtin; 90 dcl divide builtin; 91 dcl null builtin; 92 93 code = 0; 94 job_num = 1; 95 iocb_ptr = null (); 96 on cleanup call DETACH_PPS(silent); 97 modestring = ""; 98 modestring_next = "0"b; 99 header_printed = "0"b; 100 target_switch_name = "PPS." || unique_chars_ ("0"b); 101 102 103 call cu_$arg_count (nargs); 104 call cu_$arg_ptr (2, attach_arg_ptr, attach_arg_len, code); 105 if code ^= 0 then do; 106 USAGE: call com_err_ (code, ME, 107 "^/Usage is: make_pps_tape {-volume XX|-vol XX|-target_description XX|-tds XX} paths"); 108 return; 109 end; 110 111 112 call cu_$arg_ptr (1, arg_ptr, arg_len, code); 113 if code ^= 0 then do; 114 call com_err_ (code, ME); 115 return; 116 end; 117 if arg = "-volume" 118 | arg = "-vol" 119 then attach_desc_supplied = "0"b; 120 else if arg = "-target_description" 121 | arg = "-tds" 122 then attach_desc_supplied = "1"b; 123 else do; 124 code = error_table_$badopt; 125 goto USAGE; 126 end; 127 128 129 call ATTACH_PPS (); 130 if code ^= 0 then return; 131 132 133 do arg_no = 3 to nargs while (code = 0); 134 call cu_$arg_ptr (arg_no, arg_ptr, arg_len, code); 135 if code ^= 0 then do; 136 call com_err_ (code, ME, "Error referencing argument #^d.", arg_no); 137 return; 138 end; 139 call PRINT_ON_PPS ((arg_no >= nargs)); 140 end; 141 142 143 call DETACH_PPS (^silent); 144 145 146 return; 147 148 ATTACH_PPS: proc (); 149 150 151 if attach_desc_supplied then do; 152 call iox_$attach_name (target_switch_name, iocb_ptr, attach_arg, addr (make_pps_tape$make_pps_tape), 153 code); 154 if code ^= 0 then do; 155 call com_err_ (code, ME, "Error while attaching PPS tape.^/Attach description: ^a", attach_arg); 156 call DETACH_PPS(silent); 157 return; 158 end; 159 end; 160 else do; 161 call iox_$attach_name (target_switch_name, iocb_ptr, "pps_ -vol " || attach_arg, 162 addr (make_pps_tape$make_pps_tape), code); 163 if code ^= 0 then do; 164 call com_err_ (code, ME, "Error while attaching PPS tape.^/Attach description: pps_ -vol ^a", 165 attach_arg); 166 call DETACH_PPS(silent); 167 return; 168 end; 169 end; 170 171 call iox_$open (iocb_ptr, 2, "0"b, code); 172 if code ^= 0 then do; 173 call com_err_ (code, ME, "Error attempting to open PPS file."); 174 call DETACH_PPS(silent); 175 return; 176 end; 177 178 179 return; 180 181 182 end ATTACH_PPS; 183 184 DETACH_PPS: proc (quiet_sw); 185 186 dcl quiet_sw bit(1), 187 code fixed bin(35); 188 189 if iocb_ptr ^= null() then do; 190 call iox_$close (iocb_ptr, code); 191 if (code ^= 0 & ^quiet_sw) then 192 call com_err_ (code, ME, "Error attempting to close PPS file."); 193 194 call iox_$detach_iocb (iocb_ptr, code); 195 if (code ^= 0 & ^quiet_sw) then 196 call com_err_ (code, ME, "Error attempting to detach PPS file."); 197 198 call iox_$destroy_iocb(iocb_ptr, code); 199 end; 200 201 return; 202 203 204 end DETACH_PPS; 205 206 PRINT_ON_PPS: proc (last_request); 207 208 209 dcl last_request bit (1); /* ON => last request for this command invocation. */ 210 211 212 call expand_pathname_ (arg, dir, ent, code); 213 if code ^= 0 then do; 214 call com_err_ (code, ME, "^a", arg); 215 return; 216 end; 217 218 if ^header_printed then 219 call ioa_ ("JOB #^-PATH"); 220 header_printed = "1"b; 221 222 call hcs_$initiate_count (dir, ent, "", bit_count, 0, seg_ptr, code); 223 if seg_ptr = null () then do; 224 call com_err_ (code, ME, "^a^[>^]^a", dir, (dir ^= ">"), ent); 225 return; 226 end; 227 n_bytes = divide (bit_count, 9, 24, 0); 228 229 call iox_$put_chars (iocb_ptr, seg_ptr, n_bytes, code); 230 if code ^= 0 then 231 call com_err_ (code, ME, "Error attempting to write to PPS file."); 232 233 call ioa_ ("^5d^-^a^[>^]^a", job_num, dir, (dir ^= ">"), ent); 234 job_num = job_num+1; 235 236 if ^last_request then do; 237 call iox_$control (iocb_ptr, "new_report", null (), code); 238 if code ^= 0 then 239 call com_err_ (code, ME, "Error starting new report."); 240 end; 241 242 return; 243 244 245 end PRINT_ON_PPS; 246 247 248 end make_pps_tape; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/18/82 1626.5 make_pps_tape.pl1 >dumps>old>recomp>make_pps_tape.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. ME 000000 constant char(13) initial unaligned dcl 18 set ref 106* 114* 136* 155* 164* 173* 191* 195* 214* 224* 230* 238* addr builtin function dcl 89 ref 152 152 161 161 arg based char unaligned dcl 50 set ref 117 117 120 120 212* 214* arg_len 000100 automatic fixed bin(17,0) dcl 26 set ref 112* 117 117 120 120 134* 212 212 214 214 arg_no 000101 automatic fixed bin(17,0) dcl 27 set ref 133* 134* 136* 139* arg_ptr 000102 automatic pointer dcl 28 set ref 112* 117 117 120 120 134* 212 214 attach_arg based char unaligned dcl 51 set ref 152* 155* 161 164* attach_arg_len 000104 automatic fixed bin(17,0) dcl 29 set ref 104* 152 152 155 155 161 164 164 attach_arg_ptr 000106 automatic pointer dcl 30 set ref 104* 152 155 161 164 attach_desc_supplied 000110 automatic bit(1) unaligned dcl 31 set ref 117* 120* 151 bit_count 000111 automatic fixed bin(24,0) dcl 32 set ref 222* 227 cleanup 000316 stack reference condition dcl 76 ref 96 code 000100 automatic fixed bin(35,0) dcl 186 in procedure "DETACH_PPS" set ref 190* 191 191* 194* 195 195* 198* code 000112 automatic fixed bin(35,0) dcl 33 in procedure "make_pps_tape" set ref 93* 104* 105 106* 112* 113 114* 124* 130 133 134* 135 136* 152* 154 155* 161* 163 164* 171* 172 173* 212* 213 214* 222* 224* 229* 230 230* 237* 238 238* com_err_ 000010 constant entry external dcl 57 ref 106 114 136 155 164 173 191 195 214 224 230 238 cu_$arg_count 000012 constant entry external dcl 58 ref 103 cu_$arg_ptr 000014 constant entry external dcl 59 ref 104 112 134 dir 000113 automatic char(168) unaligned dcl 34 set ref 212* 222* 224* 224 233* 233 divide builtin function dcl 90 ref 227 ent 000165 automatic char(32) unaligned dcl 35 set ref 212* 222* 224* 233* error_table_$badopt 000046 external static fixed bin(35,0) dcl 82 ref 124 expand_pathname_ 000016 constant entry external dcl 60 ref 212 hcs_$initiate_count 000020 constant entry external dcl 61 ref 222 header_printed 000175 automatic bit(1) unaligned dcl 36 set ref 99* 218 220* ioa_ 000022 constant entry external dcl 62 ref 218 233 iocb_ptr 000176 automatic pointer dcl 37 set ref 95* 152* 161* 171* 189 190* 194* 198* 229* 237* iox_$attach_name 000024 constant entry external dcl 63 ref 152 161 iox_$close 000026 constant entry external dcl 64 ref 190 iox_$control 000030 constant entry external dcl 65 ref 237 iox_$destroy_iocb 000032 constant entry external dcl 66 ref 198 iox_$detach_iocb 000034 constant entry external dcl 67 ref 194 iox_$open 000036 constant entry external dcl 68 ref 171 iox_$put_chars 000040 constant entry external dcl 69 ref 229 job_num 000200 automatic fixed bin(17,0) dcl 38 set ref 94* 233* 234* 234 last_request parameter bit(1) unaligned dcl 209 ref 206 236 make_pps_tape$make_pps_tape 000042 external static fixed bin(17,0) dcl 70 set ref 152 152 161 161 modestring 000201 automatic varying char(256) dcl 39 set ref 97* modestring_next 000302 automatic bit(1) unaligned dcl 40 set ref 98* n_bytes 000303 automatic fixed bin(21,0) dcl 41 set ref 227* 229* nargs 000304 automatic fixed bin(17,0) dcl 42 set ref 103* 133 139 null builtin function dcl 91 ref 95 189 223 237 237 quiet_sw parameter bit(1) unaligned dcl 186 ref 184 191 195 seg_ptr 000306 automatic pointer dcl 43 set ref 222* 223 229* silent 000033 constant bit(1) initial unaligned dcl 19 set ref 96* 143 156* 166* 174* target_switch_name 000310 automatic char(19) unaligned dcl 44 set ref 100* 152* 161* unique_chars_ 000044 constant entry external dcl 71 ref 100 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. error_table_$noarg external static fixed bin(35,0) dcl 83 NAMES DECLARED BY EXPLICIT CONTEXT. ATTACH_PPS 000613 constant entry internal dcl 148 ref 129 DETACH_PPS 001115 constant entry internal dcl 184 ref 96 143 156 166 174 PRINT_ON_PPS 001254 constant entry internal dcl 206 ref 139 USAGE 000366 constant label dcl 106 ref 125 make_pps_tape 000250 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2116 2166 1707 2126 Length 2372 1707 50 170 206 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME make_pps_tape 382 external procedure is an external procedure. on unit on line 96 70 on unit ATTACH_PPS internal procedure shares stack frame of external procedure make_pps_tape. DETACH_PPS 96 internal procedure is called by several nonquick procedures. PRINT_ON_PPS internal procedure shares stack frame of external procedure make_pps_tape. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME DETACH_PPS 000100 code DETACH_PPS make_pps_tape 000100 arg_len make_pps_tape 000101 arg_no make_pps_tape 000102 arg_ptr make_pps_tape 000104 attach_arg_len make_pps_tape 000106 attach_arg_ptr make_pps_tape 000110 attach_desc_supplied make_pps_tape 000111 bit_count make_pps_tape 000112 code make_pps_tape 000113 dir make_pps_tape 000165 ent make_pps_tape 000175 header_printed make_pps_tape 000176 iocb_ptr make_pps_tape 000200 job_num make_pps_tape 000201 modestring make_pps_tape 000302 modestring_next make_pps_tape 000303 n_bytes make_pps_tape 000304 nargs make_pps_tape 000306 seg_ptr make_pps_tape 000310 target_switch_name make_pps_tape THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as r_ge_a alloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr expand_pathname_ hcs_$initiate_count ioa_ iox_$attach_name iox_$close iox_$control iox_$destroy_iocb iox_$detach_iocb iox_$open iox_$put_chars unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt make_pps_tape$make_pps_tape LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000247 93 000255 94 000256 95 000260 96 000262 97 000306 98 000307 99 000310 100 000311 103 000336 104 000345 105 000364 106 000366 108 000412 112 000413 113 000432 114 000434 115 000451 117 000452 120 000466 124 000501 125 000504 129 000505 130 000506 133 000510 134 000521 135 000536 136 000540 137 000570 139 000571 140 000577 143 000601 146 000612 148 000613 151 000614 152 000616 154 000653 155 000655 156 000710 157 000716 159 000717 161 000720 163 000770 164 000773 166 001026 167 001034 171 001035 172 001056 173 001060 174 001104 175 001112 179 001113 184 001114 189 001122 190 001127 191 001137 194 001173 195 001205 198 001241 201 001253 206 001254 212 001256 213 001306 214 001310 215 001342 218 001343 220 001362 222 001364 223 001426 224 001432 225 001501 227 001502 229 001505 230 001522 233 001550 234 001612 236 001613 237 001621 238 001653 242 001701 ----------------------------------------------------------- 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