COMPILATION LISTING OF SEGMENT tape_ansi_parse_options_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 09/24/86 1454.0 mst Wed 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 12 13 /****^ HISTORY COMMENTS: 14* 1) change(86-08-18,GWMay), approve(), audit(), install(): 15* old history comments: 16* Modified 9/79 by R.J.C. Kissel to handle 6250 bpi tapes. 17* Modified 2/82 by Chris Jones to add speed specification 18* Modified 4/82 by J. A. Bush to allow blocksizes > 8192 bytes 19* 2) change(86-08-18,GWMay), approve(86-09-09,MCR7536), audit(86-09-15,Dupuis), 20* install(86-09-24,MR12.0-1162): 21* Changed to accommodate error message lengths > 32 chars. 22* END HISTORY COMMENTS */ 23 24 25 /* format: style4,delnl,insnl,indattr,ifthen,dclind9 */ 26 tape_ansi_parse_options_: 27 procedure (taoP, options, error, code); 28 29 /* parameters */ 30 dcl options (*) char (*) varying, /* attachment option array */ 31 error char (*) varying, /* invalid option */ 32 code fixed bin (35); /* error code */ 33 1 1 /* BEGIN INCLUDE FILE: tape_attach_options.incl.pl1 */ 1 2 1 3 /* format: style4,delnl,insnl,indattr,ifthen,dclind9 */ 1 4 dcl taoP ptr; /* pointer on which tao structure is based */ 1 5 1 6 dcl 1 tao based (taoP), 1 7 2 noptions fixed bin, /* number of elements in options array */ 1 8 2 ntracks fixed bin, /* number of tracks: 7 or 9 */ 1 9 2 density fixed bin, /* recording density */ 1 10 /* 0 - 200 bpi */ 1 11 /* 1 - 556 bpi */ 1 12 /* 2 - 800 bpi */ 1 13 /* 3 - 1600 bpi */ 1 14 2 speed bit (36), /* "100"->75ips, "010"->125ips, "001"->200ips */ 1 15 2 write_ring bit (1), /* write permit ring status */ 1 16 /* "0"b - no write ring */ 1 17 /* "1"b - write ring */ 1 18 2 clear_cseg bit (1), /* "0" - don't delete cseg if one exists */ 1 19 /* "1" - delete current cseg and create new one */ 1 20 2 retain fixed bin, /* detach retention */ 1 21 /* 0 - rcp_ default */ 1 22 /* 1 - retain none (neither devices or volumes */ 1 23 /* 2 - retain device(s) */ 1 24 /* 3 - retain volume(s) */ 1 25 /* 4 - retain all (both device(s) and volume(s)) */ 1 26 2 output_mode fixed bin, /* 0 - none specified */ 1 27 /* 1 - extend */ 1 28 /* 2 - modify */ 1 29 /* 3 - generate */ 1 30 /* 4 - create */ 1 31 2 force bit (1), /* force file overwrite */ 1 32 2 user_labels bit (1), /* process user labels switch */ 1 33 2 replace_id char (17), /* replace file identifier */ 1 34 2 file_id char (17), /* file identifier */ 1 35 2 sequence fixed bin, /* file sequence number */ 1 36 2 expiration char (5), /* expiration date in Julian form */ 1 37 2 format char (4) varying, /* record format */ 1 38 2 DOS bit (1), /* "0"b - OS/VS :: "1"b - DOS/VM */ 1 39 2 no_labels bit (1), /* "0"b - IBM Standard Labels :: "1"b - IBM no labels */ 1 40 2 blklen fixed bin, /* physical block length */ 1 41 2 reclen fixed bin (21), /* logical record length */ 1 42 2 mode fixed bin, /* recording mode */ 1 43 /* 1 - 9 mode, ASCII */ 1 44 /* 2 - 9 mode, EBCDIC */ 1 45 /* 3 - binary */ 1 46 2 ndrives fixed bin, /* number of drives to be used */ 1 47 2 nvolumes fixed bin, /* number of specified volumes */ 1 48 2 volname (tao_max_volnames) char (32), 1 49 /* volume names */ 1 50 2 comment (tao_max_volnames) char (64) varying; 1 51 /* mount comments */ 1 52 1 53 dcl tao_max_volnames fixed bin int static options (constant) init (63); 1 54 1 55 /* END INCLUDE FILE: tape_attach_options.incl.pl1 */ 34 35 2 1 /* Begin include file ... rcp_resource_types.incl.pl1 2 2* * 2 3* * Created 3/79 by Michael R. Jordan for MR7.0R 2 4* * 2 5* * This include file defines the official RCP resource types. 2 6* * The array of names is indexed by the corresponding device type. 2 7* * MOD by RAF for MCA 2 8**/ 2 9 2 10 2 11 2 12 /****^ HISTORY COMMENTS: 2 13* 1) change(85-09-09,Fawcett), approve(85-09-09,MCR6979), 2 14* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 2 15* Support of MCA. 2 16* END HISTORY COMMENTS */ 2 17 2 18 dcl DEVICE_TYPE (8) char (32) 2 19 internal static options (constant) 2 20 init ("tape_drive", "disk_drive", "console", "printer", "punch", "reader", "special", "mca"); 2 21 2 22 dcl NUM_QUALIFIERS (8) fixed bin /* Number of qualifiers for each device type. */ 2 23 internal static init (3, 0, 0, 2, 0, 0, 0, 0); 2 24 2 25 dcl VOLUME_TYPE (8) char (32) 2 26 internal static options (constant) 2 27 init ("tape_vol", "disk_vol", "", "", "", "", "", ""); 2 28 2 29 dcl TAPE_DRIVE_DTYPEX fixed bin static internal options (constant) init (1); 2 30 dcl DISK_DRIVE_DTYPEX fixed bin static internal options (constant) init (2); 2 31 dcl CONSOLE_DTYPEX fixed bin static internal options (constant) init (3); 2 32 dcl PRINTER_DTYPEX fixed bin static internal options (constant) init (4); 2 33 dcl PUNCH_DTYPEX fixed bin static internal options (constant) init (5); 2 34 dcl READER_DTYPEX fixed bin static internal options (constant) init (6); 2 35 dcl SPECIAL_DTYPEX fixed bin static internal options (constant) init (7); 2 36 dcl MCA_DTYPEX fixed bin static internal options (constant) init (8); 2 37 dcl TAPE_VOL_VTYPEX fixed bin static internal options (constant) init (1); 2 38 dcl DISK_VOL_VTYPEX fixed bin static internal options (constant) init (2); 2 39 2 40 2 41 /* End include file ... rcp_resource_types.incl.pl1 */ 36 37 38 39 /* based storage */ 40 dcl opt char (nc_opt) based (optP); /* adjustable string for (*) varying -> (*) conversion */ 41 42 /* automatic storage */ 43 dcl (i, j, k, temp) fixed bin, 44 hyphen_ok bit (1), /* volume name can begin with "-" switch */ 45 clock fixed bin (71), 46 nc_opt fixed bin, /* number of characters in opt string */ 47 optP ptr, /* pointer to 1st char of (*) varying char string */ 48 temp21 fixed bin (21), 49 vn char (32), 50 yy picture "99", 51 ddd picture "999"; 52 53 /* internal static storage */ 54 dcl 1 key internal static, /* option keywords */ 55 2 n fixed bin init (23), /* number of keywords */ 56 2 long (23) char (16) varying 57 init 58 /* long forms */ ("-name", "-number", "-ring", "-extend", "-modify", "-generate", 59 "-create", "-format", "-block", "-record", "-mode", "-expires", "-user_labels", 60 "-density", "-track", "-device", "-retain", "-force", "-replace", "-dos", "-no_labels", 61 "-clear", "-speed"), 62 2 short (23) char (4) varying 63 init ("-nm", "-nb", "-rg", "-ext", "-mod", "-gen", "-cr", "-fmt", "-bk", "-rec", "-md", 64 "-exp", "-ul", "-den", "-trk", "-dv", "-ret", "-fc", "-rpl", "", "-nlb", "-cl", "-ips"); 65 66 dcl 1 density internal static, /* -density interpretation */ 67 2 n fixed bin init (5), /* number of possibilities */ 68 2 type (5) char (4) varying init /* possibilities */ ("200", "556", "800", "1600", "6250"), 69 2 code (5) fixed bin init /* interpretation */ (0, 1, 2, 3, 4); 70 71 dcl 1 mode internal static, /* -mode interpretation */ 72 2 n fixed bin init (3), /* number of possibilities */ 73 2 type (3) char (8) varying init /* possibilities */ ("ascii", "ebcdic", "binary"), 74 2 code (3) fixed bin init /* interpretation */ (1, 2, 3); 75 76 dcl 1 retain internal static, /* -retain interpretation */ 77 2 n fixed bin init (4), /* number of possibilities */ 78 2 type (4) char (8) varying init /* possibilities */ ("none", "device", "volume", "all"), 79 2 code (4) fixed bin init /* interpretation */ (1, 2, 3, 4); 80 81 /* builtin functions */ 82 dcl (addr, dimension, fixed, index, length, rtrim, substr) 83 builtin; 84 85 /* external static */ 86 dcl sys_info$max_seg_size fixed bin (35) external static; 87 88 /* error codes */ 89 dcl ( 90 error_table_$bad_arg, 91 error_table_$bad_tapeid, 92 error_table_$badopt, 93 error_table_$noarg, 94 error_table_$nodescr, 95 error_table_$inconsistent 96 ) fixed bin (35) ext static; 97 98 /* external procedures */ 99 dcl convert_date_to_binary_ 100 ext entry (char (*), fixed bin (71), fixed bin (35)), 101 resource_info_$canonicalize_name 102 entry (char (*), char (*), char (*), fixed bin (35)), 103 cv_dec_check_ ext entry (char (*), fixed bin (35)) returns (fixed bin (35)), 104 datebin_ ext 105 entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, 106 fixed bin, fixed bin, fixed bin), 107 datebin_$dayr_clk ext entry (fixed bin (71), fixed bin); 108 109 error = ""; /* initialize error message */ 110 code = 0; /* initialize return code */ 111 112 tao.noptions = dimension (options, 1); /* get number of array entries */ 113 if tao.noptions = 0 then do; /* there must be at least a reel number */ 114 code = error_table_$noarg; 115 return; 116 end; 117 118 hyphen_ok = "0"b; /* initialize hyphen switch */ 119 i = 1; /* begin with 1st option */ 120 vol_loop: 121 if options (i) = "-volume" then 122 go to vol_op; /* option is -volume */ 123 if options (i) = "-vol" then do; /* option is -vol */ 124 vol_op: 125 hyphen_ok = "1"b; /* next option may begin with "-" */ 126 if no_next () then 127 return; /* no volume name follows */ 128 end; 129 130 if substr (options (i), 1, 1) = "-" then do; /* option begins with "-" */ 131 if hyphen_ok then 132 hyphen_ok = "0"b; /* allowed - reset ok switch */ 133 else do; /* not allowed */ 134 if i = 1 then do; /* must be at least 1 volume name */ 135 bad_volname: 136 error = options (i); 137 code = error_table_$bad_tapeid; 138 return; 139 end; 140 go to normal_options; /* this and remainder are control options */ 141 end; 142 end; 143 else hyphen_ok = "0"b; /* in case vol name doesn't begin with "-" */ 144 145 call resource_info_$canonicalize_name (VOLUME_TYPE (TAPE_VOL_VTYPEX), (options (i)), vn, code); 146 if code ^= 0 then 147 goto bad_volname; 148 options (i) = rtrim (vn); 149 150 if tao.nvolumes = tao_max_volnames then do; /* too many */ 151 error = "Volume limit of 63 exceeded."; 152 code = error_table_$bad_arg; 153 return; 154 end; 155 tao.nvolumes = tao.nvolumes + 1; /* increment volume count */ 156 tao.volname (tao.nvolumes) = vn; /* save the volume name */ 157 i = i + 1; /* increment to next option */ 158 if i > tao.noptions then 159 return; /* exit when done */ 160 161 if options (i) = "-comment" then 162 go to com_op; /* options is "-comment" */ 163 if options (i) = "-com" then do; /* option is "-com" */ 164 com_op: 165 if no_next () then 166 return; /* no comment string */ 167 if length (options (i)) > 64 then 168 go to bad2; /* too long */ 169 tao.comment (tao.nvolumes) = options (i); /* save the comment */ 170 i = i + 1; /* increment to next option */ 171 if i > tao.noptions then 172 return; /* done */ 173 end; 174 175 go to vol_loop; /* continue processing */ 176 177 normal_options: 178 do while (i <= tao.noptions); /* and continue as long as options remain */ 179 180 test: 181 do j = 1 to key.n; /* test each keyword */ 182 if options (i) = key.long (j) then 183 go to match (j); /* process when matched */ 184 if options (i) = key.short (j) then 185 go to match (j); /* ditto */ 186 end; 187 error = options (i); 188 code = error_table_$badopt; 189 return; 190 191 192 match (1): /* -name */ 193 if no_next () then 194 return; /* no fileid */ 195 if length (options (i)) > 17 then 196 go to bad2; /* bad fileid */ 197 tao.file_id = options (i); 198 go to next; 199 200 match (2): /* -number */ 201 if no_next () then 202 return; /* no sequence number */ 203 optP = addr (substr (options (i), 1)); 204 nc_opt = length (options (i)); 205 temp = fixed (cv_dec_check_ (opt, code), 17);/* convert to binary */ 206 if code ^= 0 then 207 go to bad2; /* bad fileseq */ 208 if temp < 1 then 209 go to bad2; 210 if temp > 9999 then 211 go to bad2; 212 tao.sequence = temp; /* ok */ 213 go to next; 214 215 216 match (3): /* -ring */ 217 tao.write_ring = "1"b; 218 go to next; 219 220 221 match (4): /* -extend */ 222 if tao.output_mode ^= 0 then do; /* previous mode */ 223 mult_mode: 224 error = long (j) || " and " || long (output_mode + 3); 225 code = error_table_$inconsistent; 226 return; 227 end; 228 tao.output_mode = 1; 229 tao.write_ring = "1"b; 230 go to next; 231 232 match (5): /* -modify */ 233 if tao.output_mode ^= 0 then 234 go to mult_mode; 235 tao.output_mode = 2; 236 tao.write_ring = "1"b; 237 go to next; 238 239 match (6): /* -generate */ 240 if tao.output_mode ^= 0 then 241 go to mult_mode; 242 tao.output_mode = 3; 243 tao.write_ring = "1"b; 244 go to next; 245 246 247 match (7): /* -create */ 248 if tao.output_mode ^= 0 then 249 go to mult_mode; 250 tao.output_mode = 4; 251 tao.write_ring = "1"b; 252 go to next; 253 254 255 match (8): /* -format */ 256 if no_next () then 257 return; /* no format */ 258 tao.format = options (i); /* save it */ 259 go to next; 260 261 262 match (9): /* -block */ 263 if no_next () then 264 return; /* no block length */ 265 optP = addr (substr (options (i), 1)); 266 nc_opt = length (options (i)); 267 temp = fixed (cv_dec_check_ (opt, code), 17); 268 if code ^= 0 then 269 go to bad2; 270 if temp < 18 then 271 go to bad2; 272 tao.blklen = temp; /* ok */ 273 go to next; 274 275 match (10): /* -record */ 276 if no_next () then 277 return; /* no record length */ 278 optP = addr (substr (options (i), 1)); 279 nc_opt = length (options (i)); 280 temp21 = fixed (cv_dec_check_ (opt, code), 21); 281 if code ^= 0 then 282 go to bad2; 283 if temp21 < 1 then 284 go to bad2; 285 if temp21 > sys_info$max_seg_size * 4 then 286 go to bad2; 287 tao.reclen = temp21; /* ok */ 288 go to next; 289 290 291 match (11): /* -mode */ 292 if no_next () then 293 return; /* no recording mode */ 294 do k = 1 to mode.n; /* validate */ 295 if options (i) = mode.type (k) then do; /* match? */ 296 tao.mode = mode.code (k); 297 go to next; 298 end; 299 end; 300 go to bad2; /* no match */ 301 302 match (12): /* -expires */ 303 if no_next () then 304 return; /* no date */ 305 optP = addr (substr (options (i), 1)); 306 nc_opt = length (options (i)); 307 call convert_date_to_binary_ (opt, clock, code); 308 /* convert date */ 309 if code ^= 0 then 310 go to bad2; 311 call datebin_$dayr_clk (clock, j); /* get day of year */ 312 call datebin_ (clock, 0, 0, 0, k, 0, 0, 0, 0, 0); 313 /* get year */ 314 ddd = j; /* convert to characters */ 315 yy = k - 1900; 316 tao.expiration = yy || ddd; /* form Julian date */ 317 go to next; 318 319 320 match (13): /* -user_labels */ 321 if tao.no_labels then do; /* -user_labels and -no_labels */ 322 lbl_error: 323 error = """-no_labels"" and ""-user_labels""."; 324 code = error_table_$inconsistent; 325 return; 326 end; 327 tao.user_labels = "1"b; 328 go to next; 329 330 331 match (14): /* -density */ 332 if no_next () then 333 return; /* no density */ 334 do k = 1 to density.n; /* validate */ 335 if options (i) = density.type (k) then do; 336 /* match? */ 337 tao.density = density.code (k); 338 go to next; 339 end; 340 end; 341 go to bad2; /* no match */ 342 343 344 match (15): /* -track */ 345 if no_next () then 346 return; /* no track specification */ 347 if options (i) = "7" then 348 tao.ntracks = 7; 349 else if options (i) = "9" then 350 tao.ntracks = 9; 351 else go to bad2; /* bad track */ 352 go to next; 353 354 match (16): /* -device */ 355 if no_next () then 356 return; /* no number of devices */ 357 optP = addr (substr (options (i), 1)); 358 nc_opt = length (options (i)); 359 temp = fixed (cv_dec_check_ (opt, code), 17);/* convert ndevices */ 360 if code ^= 0 then 361 go to bad2; /* bad ndevices */ 362 if temp < 1 then 363 go to bad2; 364 if temp > 63 then 365 go to bad2; 366 tao.ndrives = temp; /* ok */ 367 go to next; 368 369 match (17): /* -retain */ 370 if no_next () then 371 return; /* no retention option */ 372 do k = 1 to retain.n; /* test each valid retain */ 373 if options (i) = retain.type (k) then do; 374 /* match */ 375 tao.retain = retain.code (k); 376 go to next; 377 end; 378 end; 379 go to bad2; /* no match */ 380 381 382 match (18): /* -force */ 383 tao.force = "1"b; /* set force overwrite bit */ 384 go to next; 385 386 387 match (19): /* -replace */ 388 if no_next () then 389 return; /* no file identifier */ 390 if length (options (i)) > 17 then 391 go to bad2; 392 tao.replace_id = options (i); 393 go to next; 394 395 396 match (20): /* -dos */ 397 tao.DOS = "1"b; 398 go to next; 399 400 401 match (21): /* -no_labels */ 402 if tao.user_labels then 403 go to lbl_error; /* conflict */ 404 tao.no_labels = "1"b; 405 go to next; 406 407 match (22): 408 tao.clear_cseg = "1"b; /* flag to delete present cseg */ 409 goto next; 410 411 match (23): 412 begin; 413 dcl COMMA char (1) init (",") static options (constant); 414 dcl current_value char (32) varying; 415 dcl current_idx fixed bin; /* how far we've gotten into value */ 416 417 if no_next () then 418 return; 419 current_idx = 1; /* start from the beginning of the string */ 420 current_value = get_next_value (); 421 if current_value = "" then 422 goto bad2; /* insist on at least one */ 423 do while (current_value ^= ""); 424 if current_value = "75" then 425 tao.speed = tao.speed | "100"b; 426 else if current_value = "125" then 427 tao.speed = tao.speed | "010"b; 428 else if current_value = "200" then 429 tao.speed = tao.speed | "001"b; 430 else goto bad2; 431 current_value = get_next_value (); 432 end; /* do while ... */ 433 434 get_next_value: 435 proc returns (char (32) varying); 436 437 dcl next_value char (32) varying; 438 439 if current_idx = -1 then 440 return (""); 441 if index (substr (options (i), current_idx), COMMA) = 0 then do; 442 next_value = substr (options (i), current_idx); 443 current_idx = -1; /* so next call will stop */ 444 return (next_value); 445 end; 446 else do; 447 next_value = substr (options (i), current_idx, index (substr (options (i), current_idx), COMMA) - 1); 448 current_idx = current_idx + length (next_value) + 1; 449 return (next_value); 450 end; 451 452 end get_next_value; 453 454 end; /* the begin */ 455 goto next; 456 457 next: 458 i = i + 1; /* get next keyword */ 459 end; 460 return; /* done */ 461 462 bad2: 463 error = options (i - 1) || " " || options (i); /* form string */ 464 code = error_table_$bad_arg; 465 return; 466 467 no_next: 468 procedure returns (bit (1)); /* sees if 2nd part of two-part option exists */ 469 if i + 1 > tao.noptions then do; /* does 2nd part exist? */ 470 error = options (i); /* no - get keyword */ 471 code = error_table_$nodescr; 472 return ("1"b); 473 end; 474 else do; /* 2nd part does exist */ 475 i = i + 1; /* increment the option index */ 476 return ("0"b); 477 end; 478 end no_next; 479 480 481 end tape_ansi_parse_options_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/24/86 1453.0 tape_ansi_parse_options_.pl1 >spec>install>1162>tape_ansi_parse_options_.pl1 34 1 06/10/82 1045.3 tape_attach_options.incl.pl1 >ldd>include>tape_attach_options.incl.pl1 36 2 03/27/86 1120.0 rcp_resource_types.incl.pl1 >ldd>include>rcp_resource_types.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. COMMA constant char(1) initial unaligned dcl 413 ref 441 447 DOS 25 based bit(1) level 2 packed unaligned dcl 1-6 set ref 396* TAPE_VOL_VTYPEX constant fixed bin(17,0) initial dcl 2-37 ref 145 VOLUME_TYPE 000347 constant char(32) initial array unaligned dcl 2-25 set ref 145* addr builtin function dcl 82 ref 203 265 278 305 357 blklen 26 based fixed bin(17,0) level 2 dcl 1-6 set ref 272* clear_cseg 4(01) based bit(1) level 2 packed unaligned dcl 1-6 set ref 407* clock 000106 automatic fixed bin(71,0) dcl 43 set ref 307* 311* 312* code 15 000277 constant fixed bin(17,0) initial array level 2 in structure "retain" dcl 76 in procedure "tape_ansi_parse_options_" ref 375 code parameter fixed bin(35,0) dcl 30 in procedure "tape_ansi_parse_options_" set ref 26 110* 114* 137* 145* 146 152* 188* 205* 206 225* 267* 268 280* 281 307* 309 324* 359* 360 464* 471* code 13 000242 constant fixed bin(17,0) initial array level 2 in structure "density" dcl 66 in procedure "tape_ansi_parse_options_" ref 337 code 12 000262 constant fixed bin(17,0) initial array level 2 in structure "mode" dcl 71 in procedure "tape_ansi_parse_options_" ref 296 comment based varying char(64) array level 2 dcl 1-6 set ref 169* convert_date_to_binary_ 000026 constant entry external dcl 99 ref 307 current_idx 000144 automatic fixed bin(17,0) dcl 415 set ref 419* 439 441 442 443* 447 447 448* 448 current_value 000133 automatic varying char(32) dcl 414 set ref 420* 421 423 424 426 428 431* cv_dec_check_ 000032 constant entry external dcl 99 ref 205 267 280 359 datebin_ 000034 constant entry external dcl 99 ref 312 datebin_$dayr_clk 000036 constant entry external dcl 99 ref 311 ddd 000126 automatic picture(3) unaligned dcl 43 set ref 314* 316 density 2 based fixed bin(17,0) level 2 in structure "tao" dcl 1-6 in procedure "tape_ansi_parse_options_" set ref 337* density 000242 constant structure level 1 unaligned dcl 66 in procedure "tape_ansi_parse_options_" dimension builtin function dcl 82 ref 112 error parameter varying char dcl 30 set ref 26 109* 135* 151* 187* 223* 322* 462* 470* error_table_$bad_arg 000012 external static fixed bin(35,0) dcl 89 ref 152 464 error_table_$bad_tapeid 000014 external static fixed bin(35,0) dcl 89 ref 137 error_table_$badopt 000016 external static fixed bin(35,0) dcl 89 ref 188 error_table_$inconsistent 000024 external static fixed bin(35,0) dcl 89 ref 225 324 error_table_$noarg 000020 external static fixed bin(35,0) dcl 89 ref 114 error_table_$nodescr 000022 external static fixed bin(35,0) dcl 89 ref 471 expiration 21 based char(5) level 2 packed unaligned dcl 1-6 set ref 316* file_id 13(18) based char(17) level 2 packed unaligned dcl 1-6 set ref 197* fixed builtin function dcl 82 ref 205 267 280 359 force 7 based bit(1) level 2 packed unaligned dcl 1-6 set ref 382* format 23 based varying char(4) level 2 dcl 1-6 set ref 258* hyphen_ok 000104 automatic bit(1) unaligned dcl 43 set ref 118* 124* 131 131* 143* i 000100 automatic fixed bin(17,0) dcl 43 set ref 119* 120 123 130 134 135 145 148 157* 157 158 161 163 167 169 170* 170 171 177 182 184 187 195 197 203 204 258 265 266 278 279 295 305 306 335 347 349 357 358 373 390 392 441 442 447 447 457* 457 462 462 469 470 475* 475 index builtin function dcl 82 ref 441 447 j 000101 automatic fixed bin(17,0) dcl 43 set ref 180* 182 182 184 184* 223 311* 314 k 000102 automatic fixed bin(17,0) dcl 43 set ref 294* 295 296* 312* 315 334* 335 337* 372* 373 375* key 000000 constant structure level 1 unaligned dcl 54 length builtin function dcl 82 ref 167 195 204 266 279 306 358 390 448 long 1 000000 constant varying char(16) initial array level 2 dcl 54 ref 182 223 223 mode 000262 constant structure level 1 unaligned dcl 71 in procedure "tape_ansi_parse_options_" mode 30 based fixed bin(17,0) level 2 in structure "tao" dcl 1-6 in procedure "tape_ansi_parse_options_" set ref 296* n 000000 constant fixed bin(17,0) initial level 2 in structure "key" dcl 54 in procedure "tape_ansi_parse_options_" ref 180 n 000262 constant fixed bin(17,0) initial level 2 in structure "mode" dcl 71 in procedure "tape_ansi_parse_options_" ref 294 n 000242 constant fixed bin(17,0) initial level 2 in structure "density" dcl 66 in procedure "tape_ansi_parse_options_" ref 334 n 000277 constant fixed bin(17,0) initial level 2 in structure "retain" dcl 76 in procedure "tape_ansi_parse_options_" ref 372 nc_opt 000110 automatic fixed bin(17,0) dcl 43 set ref 204* 205 205 266* 267 267 279* 280 280 306* 307 307 358* 359 359 ndrives 31 based fixed bin(17,0) level 2 dcl 1-6 set ref 366* next_value 000154 automatic varying char(32) dcl 437 set ref 442* 444 447* 448 449 no_labels 25(01) based bit(1) level 2 packed unaligned dcl 1-6 set ref 320 404* noptions based fixed bin(17,0) level 2 dcl 1-6 set ref 112* 113 158 171 177 469 ntracks 1 based fixed bin(17,0) level 2 dcl 1-6 set ref 347* 349* nvolumes 32 based fixed bin(17,0) level 2 dcl 1-6 set ref 150 155* 155 156 169 opt based char unaligned dcl 40 set ref 205* 267* 280* 307* 359* optP 000112 automatic pointer dcl 43 set ref 203* 205 265* 267 278* 280 305* 307 357* 359 options parameter varying char array dcl 30 set ref 26 112 120 123 130 135 145 148* 161 163 167 169 182 184 187 195 197 203 204 258 265 266 278 279 295 305 306 335 347 349 357 358 373 390 392 441 442 447 447 462 462 470 output_mode 6 based fixed bin(17,0) level 2 dcl 1-6 set ref 221 223 228* 232 235* 239 242* 247 250* reclen 27 based fixed bin(21,0) level 2 dcl 1-6 set ref 287* replace_id 7(09) based char(17) level 2 packed unaligned dcl 1-6 set ref 392* resource_info_$canonicalize_name 000030 constant entry external dcl 99 ref 145 retain 000277 constant structure level 1 unaligned dcl 76 in procedure "tape_ansi_parse_options_" retain 5 based fixed bin(17,0) level 2 in structure "tao" dcl 1-6 in procedure "tape_ansi_parse_options_" set ref 375* rtrim builtin function dcl 82 ref 148 sequence 20 based fixed bin(17,0) level 2 dcl 1-6 set ref 212* short 164 000000 constant varying char(4) initial array level 2 dcl 54 ref 184 speed 3 based bit(36) level 2 packed unaligned dcl 1-6 set ref 424* 424 426* 426 428* 428 substr builtin function dcl 82 ref 130 203 265 278 305 357 441 442 447 447 sys_info$max_seg_size 000010 external static fixed bin(35,0) dcl 86 ref 285 tao based structure level 1 unaligned dcl 1-6 taoP parameter pointer dcl 1-4 ref 26 112 113 150 155 155 156 156 158 169 169 171 177 197 212 216 221 223 228 229 232 235 236 239 242 243 247 250 251 258 272 287 296 316 320 327 337 347 349 366 375 382 392 396 401 404 407 424 424 426 426 428 428 469 tao_max_volnames constant fixed bin(17,0) initial dcl 1-53 ref 150 169 temp 000103 automatic fixed bin(17,0) dcl 43 set ref 205* 208 210 212 267* 270 272 359* 362 364 366 temp21 000114 automatic fixed bin(21,0) dcl 43 set ref 280* 283 285 287 type 1 000242 constant varying char(4) initial array level 2 in structure "density" dcl 66 in procedure "tape_ansi_parse_options_" ref 335 type 1 000277 constant varying char(8) initial array level 2 in structure "retain" dcl 76 in procedure "tape_ansi_parse_options_" ref 373 type 1 000262 constant varying char(8) initial array level 2 in structure "mode" dcl 71 in procedure "tape_ansi_parse_options_" ref 295 user_labels 7(01) based bit(1) level 2 packed unaligned dcl 1-6 set ref 327* 401 vn 000115 automatic char(32) unaligned dcl 43 set ref 145* 148 156 volname 33 based char(32) array level 2 packed unaligned dcl 1-6 set ref 156* write_ring 4 based bit(1) level 2 packed unaligned dcl 1-6 set ref 216* 229* 236* 243* 251* yy 000125 automatic picture(2) unaligned dcl 43 set ref 315* 316 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CONSOLE_DTYPEX internal static fixed bin(17,0) initial dcl 2-31 DEVICE_TYPE internal static char(32) initial array unaligned dcl 2-18 DISK_DRIVE_DTYPEX internal static fixed bin(17,0) initial dcl 2-30 DISK_VOL_VTYPEX internal static fixed bin(17,0) initial dcl 2-38 MCA_DTYPEX internal static fixed bin(17,0) initial dcl 2-36 NUM_QUALIFIERS internal static fixed bin(17,0) initial array dcl 2-22 PRINTER_DTYPEX internal static fixed bin(17,0) initial dcl 2-32 PUNCH_DTYPEX internal static fixed bin(17,0) initial dcl 2-33 READER_DTYPEX internal static fixed bin(17,0) initial dcl 2-34 SPECIAL_DTYPEX internal static fixed bin(17,0) initial dcl 2-35 TAPE_DRIVE_DTYPEX internal static fixed bin(17,0) initial dcl 2-29 NAMES DECLARED BY EXPLICIT CONTEXT. bad2 003020 constant label dcl 462 ref 167 195 206 208 210 268 270 281 283 285 300 309 341 349 360 362 364 379 390 421 428 bad_volname 000652 constant label dcl 135 ref 146 com_op 001054 constant label dcl 164 ref 161 get_next_value 002675 constant entry internal dcl 434 ref 420 431 lbl_error 002215 constant label dcl 322 ref 401 match 000320 constant label array(23) dcl 192 ref 182 184 mult_mode 001402 constant label dcl 223 ref 232 239 247 next 003015 constant label dcl 457 ref 198 213 218 230 237 244 252 259 273 288 297 317 328 338 352 367 376 384 393 398 405 409 455 no_next 003104 constant entry internal dcl 467 ref 126 164 192 200 255 262 275 291 302 331 344 354 369 387 417 normal_options 001127 constant label dcl 177 ref 140 tape_ansi_parse_options_ 000526 constant entry external dcl 26 test 001135 constant label dcl 180 vol_loop 000571 constant label dcl 120 ref 175 vol_op 000616 constant label dcl 124 ref 120 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3404 3444 3225 3414 Length 3704 3225 40 224 157 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tape_ansi_parse_options_ 185 external procedure is an external procedure. begin block on line 411 begin block shares stack frame of external procedure tape_ansi_parse_options_. get_next_value internal procedure shares stack frame of external procedure tape_ansi_parse_options_. no_next internal procedure shares stack frame of external procedure tape_ansi_parse_options_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tape_ansi_parse_options_ 000100 i tape_ansi_parse_options_ 000101 j tape_ansi_parse_options_ 000102 k tape_ansi_parse_options_ 000103 temp tape_ansi_parse_options_ 000104 hyphen_ok tape_ansi_parse_options_ 000106 clock tape_ansi_parse_options_ 000110 nc_opt tape_ansi_parse_options_ 000112 optP tape_ansi_parse_options_ 000114 temp21 tape_ansi_parse_options_ 000115 vn tape_ansi_parse_options_ 000125 yy tape_ansi_parse_options_ 000126 ddd tape_ansi_parse_options_ 000133 current_value begin block on line 411 000144 current_idx begin block on line 411 000154 next_value get_next_value THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out begin_return_mac return_mac shorten_stack ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_date_to_binary_ cv_dec_check_ datebin_ datebin_$dayr_clk resource_info_$canonicalize_name THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_tapeid error_table_$badopt error_table_$inconsistent error_table_$noarg error_table_$nodescr sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 26 000521 109 000546 110 000551 112 000552 113 000562 114 000563 115 000565 118 000566 119 000567 120 000571 123 000611 124 000616 126 000620 130 000625 131 000643 134 000647 135 000652 137 000677 138 000702 140 000703 142 000704 143 000705 145 000706 146 000750 148 000754 150 000777 151 001004 152 001015 153 001020 155 001021 156 001022 157 001030 158 001031 161 001034 163 001047 164 001054 167 001061 169 001077 170 001122 171 001123 175 001126 177 001127 180 001135 182 001145 184 001174 186 001207 187 001211 188 001236 189 001241 192 001242 195 001247 197 001265 198 001275 200 001276 203 001303 204 001321 205 001332 206 001355 208 001360 210 001363 212 001365 213 001370 216 001371 218 001375 221 001376 223 001402 225 001453 226 001457 228 001460 229 001462 230 001464 232 001465 235 001471 236 001473 237 001475 239 001476 242 001502 243 001504 244 001506 247 001507 250 001513 251 001515 252 001517 255 001520 258 001525 259 001553 262 001554 265 001561 266 001577 267 001610 268 001633 270 001636 272 001641 273 001644 275 001645 278 001652 279 001670 280 001701 281 001724 283 001727 285 001732 287 001742 288 001746 291 001747 294 001754 295 001763 296 002007 297 002014 299 002015 300 002017 302 002020 305 002025 306 002043 307 002054 309 002076 311 002101 312 002112 314 002153 315 002163 316 002176 317 002207 320 002210 322 002215 324 002227 325 002232 327 002233 328 002235 331 002236 334 002243 335 002253 337 002277 338 002304 340 002305 341 002307 344 002310 347 002315 349 002342 352 002353 354 002354 357 002361 358 002377 359 002410 360 002433 362 002436 364 002441 366 002443 367 002446 369 002447 372 002454 373 002463 375 002507 376 002514 378 002515 379 002517 382 002520 384 002524 387 002525 390 002532 392 002550 393 002560 396 002561 398 002565 401 002566 404 002573 405 002575 407 002576 409 002602 417 002603 419 002612 420 002614 421 002616 423 002623 424 002631 426 002644 428 002657 431 002671 432 002673 454 002674 434 002675 439 002677 441 002705 442 002746 443 002757 444 002761 447 002770 448 003001 449 003005 455 003014 457 003015 459 003016 460 003017 462 003020 464 003077 465 003103 467 003104 469 003106 470 003114 471 003140 472 003143 475 003150 476 003151 ----------------------------------------------------------- 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