COMPILATION LISTING OF SEGMENT online_dump_fnp Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1728.0 mst Mon 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 od_fnp: online_dump_fnp: proc; 12 13 /* Command to access a dump created online by fdump_fnp_ 14* * Dump (in >dumps) has entry name of the form fnp.TAG.MMDDYY.HHMM 15* * 16* * Usage: od_fnp -dt MMDDYY -device DEVICE -dim DIM [-tm HHMM] [-tag TAG] 17* * 18* * If time or tag is not supplied, a starname will be formed, but if more than one entry 19* * matches it, an error code will be returned. 20**/ 21 22 23 /* ARGUMENT STUFF */ 24 25 dcl nargs fixed bin; 26 dcl iarg fixed bin; 27 dcl argptr ptr; 28 dcl arglen fixed bin; 29 dcl arg char (arglen) based (argptr); 30 31 32 /* ENTRIES */ 33 34 dcl cu_$arg_count entry (fixed bin); 35 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 36 dcl com_err_ entry options (variable); 37 dcl clock_ entry returns (fixed bin (71)); 38 dcl date_time_ entry (fixed bin (71), char (*)); 39 dcl expand_path_ entry (ptr, fixed bin, ptr, ptr, fixed bin (35)); 40 dcl ioa_ entry options (variable); 41 dcl ioa_$rsnnl entry options (variable); 42 dcl ioa_$rs entry options (variable); 43 dcl get_system_free_area_ entry (ptr); 44 dcl hcs_$star_ entry (char (*), char (*), fixed bin, ptr, fixed bin, ptr, ptr, fixed bin (35)); 45 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 46 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 47 dcl ios_$attach entry (char (*), char (*), char (*), char (*), bit (72) aligned); 48 dcl ios_$detach entry (char (*), char (*), char (*), bit (72) aligned); 49 dcl ios_$write entry (char (*), ptr, fixed bin, fixed bin, fixed bin, bit (72) aligned); 50 dcl online_355_dump_ entry (ptr, fixed bin); 51 dcl parse_fnp_name_ entry (char (*), fixed bin); 52 53 /* AUTOMATIC */ 54 55 dcl ap ptr; 56 dcl code fixed bin (35); 57 dcl starname char (32); 58 dcl namelen fixed bin; 59 60 dcl tag char (1) init ("*"); 61 dcl date char (6) init ("*"); 62 dcl time char (4) init ("*"); 63 dcl device char (168) init ("*"); 64 dcl dim char (32) init ("*"); 65 dcl path char (168) init ("*"); 66 67 dcl outline char (64); 68 dcl iostat bit (72) aligned; 69 dcl init bit (1) init ("0"b); 70 dcl date_string char (24); 71 dcl pathlen fixed bin; 72 dcl dirname char (168); 73 dcl segname char (32); 74 dcl count fixed bin; 75 dcl ep ptr; 76 dcl np ptr; 77 dcl dump_ptr ptr; 78 dcl fnp_no fixed bin; 79 80 /* INTERNAL STATIC */ 81 82 dcl myname char (15) internal static options (constant) init ("online_dump_fnp"); 83 dcl DUMP_DIR char (6) internal static options (constant) init (">dumps"); 84 dcl output_stream char (32) internal static options (constant) init ("od_output_"); 85 86 87 /* EXTERNAL STATIC */ 88 89 dcl (error_table_$badopt, 90 error_table_$noarg, 91 error_table_$inconsistent) 92 fixed bin (35) external static; 93 94 95 /* BASED */ 96 97 dcl the_area area (50) based (ap); 98 dcl based_name char (32) based; 99 dcl names (count) char (32) aligned based (np); 100 dcl entries (count) fixed bin based (ep); 101 102 dcl 1 io aligned based (addr (iostat)), 103 2 code fixed bin (35), 104 2 junk bit (36); 105 106 107 /* CONDITIONS & BUILTINS */ 108 109 dcl cleanup condition; 110 111 dcl (addr, index, null, substr) builtin; 112 /* */ 113 call cu_$arg_count (nargs); 114 if nargs < 2 115 then do; 116 call com_err_ (0, myname, "Usage: online_dump_fnp -device DEVICE -dim DIM -date MMDDYY [-time HHMM] [-tag FNP_TAG] [-pathname PATH]"); 117 return; 118 end; 119 120 do iarg = 1 to nargs by 2; 121 call cu_$arg_ptr (iarg, argptr, arglen, code); 122 123 if arg = "-tag" 124 then call get_value (tag); 125 126 else 127 if arg = "-date" | arg = "-dt" 128 then call get_value (date); 129 130 else 131 if arg = "-time" | arg = "-tm" 132 then call get_value (time); 133 134 else 135 if arg = "-device" | arg = "-dv" | arg = "-dev" 136 then call get_value (device); 137 138 else 139 if arg = "-dim" 140 then call get_value (dim); 141 142 else 143 if arg = "-pn" | arg = "-pathname" 144 then do; 145 call get_value (path); 146 pathlen = arglen; 147 end; 148 149 else code = error_table_$badopt; 150 151 if code ^= 0 /* either set by preceding statement or by get_value */ 152 then do; 153 call com_err_ (code, myname, arg); 154 return; 155 end; 156 end; 157 158 /* make sure required arguments were specified */ 159 160 if device = "*" then call noarg ("device"); 161 if dim = "*" then call noarg ("dim"); 162 if code ^= 0 then return; /* noarg sets code */ 163 164 if path ^= "*" /* pathname of dump specified */ 165 then do; 166 call expand_path_ (addr (path), pathlen, addr (dirname), addr (segname), code); 167 if code ^= 0 then do; 168 call com_err_ (code, myname, path); 169 return; 170 end; 171 172 if tag = "*" then tag = "a"; /* fake it */ 173 end; 174 175 /* else apply starname */ 176 177 else do; 178 dirname = DUMP_DIR; 179 if date = "*" /* date defaults */ 180 then do; 181 call date_time_ (clock_ (), date_string); 182 date = substr (date_string, 1, 2) || substr (date_string, 4, 2) || substr (date_string, 7, 2); 183 end; 184 185 call ioa_$rsnnl ("fnp.^a.^a.^a", starname, namelen, tag, date, time); 186 call get_system_free_area_ (ap); 187 188 call hcs_$star_ (DUMP_DIR, substr (starname, 1, namelen), 2, ap, count, ep, np, code); 189 if code ^= 0 then do; 190 call com_err_ (code, myname, starname); 191 return; 192 end; 193 194 segname = np -> based_name; 195 free entries in (the_area); 196 free names in (the_area); 197 198 if count > 1 then do; 199 call com_err_ (0, myname, "^a identifies more than one dump.", starname); 200 return; 201 end; 202 203 if tag = "*" then tag = substr (segname, 5, 1); 204 if time = "*" then time = substr (segname, 14, 4); 205 end; 206 207 208 call ios_$attach (output_stream, dim, device, "w", iostat); 209 if io.code ^= 0 210 then do; 211 call com_err_ (io.code, myname, "Could not make attachment."); 212 return; 213 end; 214 215 on cleanup call clean; 216 217 call hcs_$initiate (dirname, segname, "", 0, 1, dump_ptr, code); 218 if dump_ptr = null 219 then do; 220 call com_err_ (code, myname, "Could not initiate ^a", segname); 221 call clean; 222 return; 223 end; 224 else init = "1"b; 225 226 /* now we do what we came here to do */ 227 228 if path ^= "*" 229 then call ioa_$rs ("FNP dump ^a>^a", outline, namelen, dirname, segname); 230 else call ioa_$rs ("Dump of FNP ^a taken on ^a at ^a", outline, namelen, tag, date, time); 231 call ios_$write (output_stream, addr (outline), 0, namelen, (0), iostat); 232 233 call parse_fnp_name_ (tag, fnp_no); 234 if fnp_no = -1 then fnp_no = 0; 235 call online_355_dump_ (dump_ptr, fnp_no); 236 237 call clean; 238 call ioa_ ("Finished dump"); 239 return; 240 /* */ 241 get_value: proc (result); 242 243 /* Internal procedure to get value for keyword parameter */ 244 245 dcl result char (*); 246 dcl oldarg char (6); 247 248 if result ^= "*" /* this one has already been specified */ 249 then code = error_table_$inconsistent; 250 251 else do; 252 oldarg = arg; 253 call cu_$arg_ptr (iarg+1, argptr, arglen, code); 254 if code ^= 0 255 then arg = oldarg; 256 257 else result = arg; 258 end; 259 260 return; 261 end /* get_value */ ; 262 /* */ 263 noarg: proc (name); 264 265 /* Internal procedure to print error message for unspecified keyword */ 266 267 dcl name char (*); 268 269 code = error_table_$noarg; 270 call com_err_ (code, myname, "-^a must be supplied.", name); 271 return; 272 end /* noarg */ ; 273 274 275 276 clean: proc; 277 278 /* cleanup handler, also called at normal exit */ 279 280 call ios_$detach (output_stream, "", "", iostat); 281 if init then call hcs_$terminate_noname (dump_ptr, code); 282 return; 283 end /* clean */ ; 284 285 end /* od_fnp */ ; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1517.2 online_dump_fnp.pl1 >dumps>old>recomp>online_dump_fnp.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. DUMP_DIR 000010 constant char(6) initial unaligned dcl 83 set ref 178 188* addr builtin function dcl 111 ref 166 166 166 166 166 166 209 211 231 231 ap 000106 automatic pointer dcl 55 set ref 186* 188* 195 196 arg based char unaligned dcl 29 set ref 123 126 126 130 130 134 134 134 138 142 142 153* 252 254* 257 arglen 000104 automatic fixed bin(17,0) dcl 28 set ref 121* 123 126 126 130 130 134 134 134 138 142 142 146 153 153 252 253* 254 257 argptr 000102 automatic pointer dcl 27 set ref 121* 123 126 126 130 130 134 134 134 138 142 142 153 252 253* 254 257 based_name based char(32) unaligned dcl 98 ref 194 cleanup 000412 stack reference condition dcl 109 ref 215 clock_ 000016 constant entry external dcl 37 ref 181 181 code based fixed bin(35,0) level 2 in structure "io" dcl 102 in procedure "online_dump_fnp" set ref 209 211* code 000110 automatic fixed bin(35,0) dcl 56 in procedure "online_dump_fnp" set ref 121* 149* 151 153* 162 166* 167 168* 188* 189 190* 217* 220* 248* 253* 254 269* 270* 281* com_err_ 000014 constant entry external dcl 36 ref 116 153 168 190 199 211 220 270 count 000400 automatic fixed bin(17,0) dcl 74 set ref 188* 195 196 198 cu_$arg_count 000010 constant entry external dcl 34 ref 113 cu_$arg_ptr 000012 constant entry external dcl 35 ref 121 253 date 000124 automatic char(6) initial unaligned dcl 61 set ref 61* 126* 179 182* 185* 230* date_string 000307 automatic char(24) unaligned dcl 70 set ref 181* 182 182 182 date_time_ 000020 constant entry external dcl 38 ref 181 device 000127 automatic char(168) initial unaligned dcl 63 set ref 63* 134* 160 208* dim 000201 automatic char(32) initial unaligned dcl 64 set ref 64* 138* 161 208* dirname 000316 automatic char(168) unaligned dcl 72 set ref 166 166 178* 217* 228* dump_ptr 000406 automatic pointer dcl 77 set ref 217* 218 235* 281* entries based fixed bin(17,0) array dcl 100 ref 195 ep 000402 automatic pointer dcl 75 set ref 188* 195 error_table_$badopt 000054 external static fixed bin(35,0) dcl 89 ref 149 error_table_$inconsistent 000060 external static fixed bin(35,0) dcl 89 ref 248 error_table_$noarg 000056 external static fixed bin(35,0) dcl 89 ref 269 expand_path_ 000022 constant entry external dcl 39 ref 166 fnp_no 000410 automatic fixed bin(17,0) dcl 78 set ref 233* 234 234* 235* get_system_free_area_ 000032 constant entry external dcl 43 ref 186 hcs_$initiate 000036 constant entry external dcl 45 ref 217 hcs_$star_ 000034 constant entry external dcl 44 ref 188 hcs_$terminate_noname 000040 constant entry external dcl 46 ref 281 iarg 000101 automatic fixed bin(17,0) dcl 26 set ref 120* 121* 253 init 000306 automatic bit(1) initial unaligned dcl 69 set ref 69* 224* 281 io based structure level 1 dcl 102 ioa_ 000024 constant entry external dcl 40 ref 238 ioa_$rs 000030 constant entry external dcl 42 ref 228 230 ioa_$rsnnl 000026 constant entry external dcl 41 ref 185 ios_$attach 000042 constant entry external dcl 47 ref 208 ios_$detach 000044 constant entry external dcl 48 ref 280 ios_$write 000046 constant entry external dcl 49 ref 231 iostat 000304 automatic bit(72) dcl 68 set ref 208* 209 211 231* 280* myname 000012 constant char(15) initial unaligned dcl 82 set ref 116* 153* 168* 190* 199* 211* 220* 270* name parameter char unaligned dcl 267 set ref 263 270* namelen 000121 automatic fixed bin(17,0) dcl 58 set ref 185* 188 188 228* 230* 231* names based char(32) array dcl 99 ref 196 nargs 000100 automatic fixed bin(17,0) dcl 25 set ref 113* 114 120 np 000404 automatic pointer dcl 76 set ref 188* 194 196 null builtin function dcl 111 ref 218 oldarg 000430 automatic char(6) unaligned dcl 246 set ref 252* 254 online_355_dump_ 000050 constant entry external dcl 50 ref 235 outline 000263 automatic char(64) unaligned dcl 67 set ref 228* 230* 231 231 output_stream 000000 constant char(32) initial unaligned dcl 84 set ref 208* 231* 280* parse_fnp_name_ 000052 constant entry external dcl 51 ref 233 path 000211 automatic char(168) initial unaligned dcl 65 set ref 65* 145* 164 166 166 168* 228 pathlen 000315 automatic fixed bin(17,0) dcl 71 set ref 146* 166* result parameter char unaligned dcl 245 set ref 241 248 257* segname 000370 automatic char(32) unaligned dcl 73 set ref 166 166 194* 203 204 217* 220* 228* starname 000111 automatic char(32) unaligned dcl 57 set ref 185* 188 188 190* 199* substr builtin function dcl 111 ref 182 182 182 188 188 203 204 tag 000122 automatic char(1) initial unaligned dcl 60 set ref 60* 123* 172 172* 185* 203 203* 230* 233* the_area based area(50) dcl 97 ref 195 196 time 000126 automatic char(4) initial unaligned dcl 62 set ref 62* 130* 185* 204 204* 230* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. index builtin function dcl 111 NAMES DECLARED BY EXPLICIT CONTEXT. clean 001735 constant entry internal dcl 276 ref 215 221 237 get_value 001571 constant entry internal dcl 241 ref 123 126 130 134 138 145 noarg 001663 constant entry internal dcl 263 ref 160 161 od_fnp 000252 constant entry external dcl 11 online_dump_fnp 000242 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 2340 2422 2066 2350 Length 2640 2066 62 202 252 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME online_dump_fnp 414 external procedure is an external procedure. on unit on line 215 64 on unit get_value internal procedure shares stack frame of external procedure online_dump_fnp. noarg internal procedure shares stack frame of external procedure online_dump_fnp. clean 84 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME online_dump_fnp 000100 nargs online_dump_fnp 000101 iarg online_dump_fnp 000102 argptr online_dump_fnp 000104 arglen online_dump_fnp 000106 ap online_dump_fnp 000110 code online_dump_fnp 000111 starname online_dump_fnp 000121 namelen online_dump_fnp 000122 tag online_dump_fnp 000124 date online_dump_fnp 000126 time online_dump_fnp 000127 device online_dump_fnp 000201 dim online_dump_fnp 000211 path online_dump_fnp 000263 outline online_dump_fnp 000304 iostat online_dump_fnp 000306 init online_dump_fnp 000307 date_string online_dump_fnp 000315 pathlen online_dump_fnp 000316 dirname online_dump_fnp 000370 segname online_dump_fnp 000400 count online_dump_fnp 000402 ep online_dump_fnp 000404 np online_dump_fnp 000406 dump_ptr online_dump_fnp 000410 fnp_no online_dump_fnp 000430 oldarg get_value THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry int_entry free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ com_err_ cu_$arg_count cu_$arg_ptr date_time_ expand_path_ get_system_free_area_ hcs_$initiate hcs_$star_ hcs_$terminate_noname ioa_ ioa_$rs ioa_$rsnnl ios_$attach ios_$detach ios_$write online_355_dump_ parse_fnp_name_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent error_table_$noarg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 60 000217 61 000221 62 000223 63 000225 64 000230 65 000233 69 000236 11 000241 113 000260 114 000267 116 000272 117 000317 120 000320 121 000326 123 000343 126 000355 130 000371 134 000405 138 000425 142 000435 145 000445 146 000450 147 000452 149 000453 151 000456 153 000460 154 000504 156 000505 160 000510 161 000521 162 000532 164 000534 166 000540 167 000565 168 000567 169 000610 172 000611 173 000617 178 000620 179 000623 181 000634 182 000660 185 000700 186 000741 188 000750 189 001023 190 001026 191 001047 194 001050 195 001054 196 001056 198 001062 199 001065 200 001116 203 001117 204 001125 208 001136 209 001170 211 001174 212 001217 215 001220 217 001242 218 001306 220 001312 221 001345 222 001351 224 001352 228 001354 230 001416 231 001456 233 001515 234 001532 235 001536 237 001547 238 001553 239 001570 241 001571 248 001602 252 001614 253 001622 254 001642 257 001652 260 001662 263 001663 269 001674 270 001677 271 001733 276 001734 280 001742 281 001766 282 002002 ----------------------------------------------------------- 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