COMPILATION LISTING OF SEGMENT list_tape_contents Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 04/19/88 0823.1 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(76-05-01,Phillipps), approve(), audit(), install(): 17* old history comments. 18* Written by J.B. Phillipps. 19* change 76-09-01 Phillipps. 20* change 78-06-01 Jordan. 21* change 78-10-01 Jordan. 22* change 80-06-01 Jordan to remove backspace characters from usage message. 23* change 81-06-01 Jordan to fix some bugs. 24* 2) change(85-10-01,GWMay), approve(84-02-29,MCR7154), 25* audit(86-10-22,Gilcrease), install(86-10-22,MR12.0-1191): 26* Complete Rewrite - changed to use mtape_ instead of the tape_ansi_ 27* and tape_ibm_ i/o modules. Removed the -io_module(iom) control by 28* undocumenting it and replaced it with the -volume_type(-vt) control 29* arg when -iom is used -vt is assumed. Removed the -retain control by 30* undocumenting and ingnoring the control in the code. 31* 3) change(88-02-17,GWMay), approve(88-03-14,MCR7856), 32* audit(88-03-15,Wallman), install(88-04-19,MR12.2-1039): 33* Changed to use -next_file for first open call. 34* END HISTORY COMMENTS */ 35 36 37 /****^ PROGRAM DESCRIPTION: 38* 39* Command to list tape characteristics and file attributes of 40* OS and ANSI standard labeled volumes. 41* END PROGRAM DESCRIPTION */ 42 43 44 list_tape_contents: ltc: procedure; 45 46 /* based storage */ 47 48 dcl arg char (Larg) aligned based (Parg); 49 50 /* builtin functions */ 51 52 dcl (addr, char, fixed, length, null, rtrim, search, substr) 53 builtin; 54 55 /* conditions */ 56 57 dcl (cleanup, command_error) condition; 58 59 /* automatic storage */ 60 61 dcl 1 lto aligned, 62 2 print_mode fixed bin, /* 1 - long info; 2 - brief info; */ 63 /* 3 - default info */ 64 2 list_limit fixed bin (24), /* list list_limit number */ 65 2 volid char (6); /* volume-set name */ 66 67 68 dcl Larg fixed bin, 69 Lcurrent_line fixed bin, 70 Parg_list ptr, 71 Parg ptr, 72 Piocb ptr, 73 Sprint_banner bit(1), 74 cmd_name char (18), 75 code fixed bin (35), 76 number_of_like_files fixed bin initial (0), 77 1 current_file aligned like mtape_fst, 78 current_file_no fixed bin (24), 79 current_line char(256) varying, 80 input_attach_args char (270) aligned varying, 81 mtape_attach_desc char (270) aligned varying, 82 mtape_open_desc char (270) aligned varying, 83 n_args fixed bin, 84 next_arg fixed bin, 85 previous_line char(256) varying, 86 tape_io_switch char (26), 87 temp fixed bin(24); 88 89 90 /* constants */ 91 92 dcl ANSI_TAPE_ATTACH_DESC char (104) internal static 93 options (constant) init 94 ("mtape_ -volume_type ansi -no_display -density 1600 -track 9 -error -device 1 -label -no_system -no_wait "), 95 ANSI_TAPE_OPEN_DESC char (46) internal static 96 options (constant) init 97 ("-no_display -not_last_file -next_file"), 98 BRIEF fixed bin (2) internal static 99 options (constant) init (2), 100 DEFAULT fixed bin (2) internal static 101 options (constant) init (3), 102 FALSE bit(1) internal static 103 options (constant) init ("0"b), 104 IBM_TAPE_ATTACH_DESC char (103) internal static 105 options (constant) init 106 ("mtape_ -volume_type ibm -no_display -density 1600 -track 9 -error -device 1 -label -no_system -no_wait "), 107 IBM_TAPE_OPEN_DESC char (69) internal static 108 options (constant) init 109 ("-no_display -not_last_file -next_file -no_system_use -ndos"), 110 LONG fixed bin (2) internal static 111 options (constant) init (1), 112 TRUE bit(1) internal static 113 options (constant) init ("1"b); 114 115 /* error codes */ 116 117 dcl (error_table_$bad_arg, 118 error_table_$bad_volid, 119 error_table_$noarg, 120 error_table_$nodescr, 121 error_table_$no_file, 122 error_table_$not_detached) fixed bin (35) ext; 123 124 /* external procedures */ 125 126 dcl com_err_ entry options (variable), 127 convert_date_to_binary_ entry (char(*), fixed bin(71), 128 fixed bin(35)), 129 cu_$arg_count entry (fixed bin), 130 cu_$arg_list_ptr entry (ptr), 131 cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin, 132 fixed bin (35), ptr), 133 cv_dec_check_ ext entry (char (*), fixed bin (35)) 134 returns (fixed bin (35)), 135 date_time_$format entry (char(*), fixed bin(71), char(*), 136 char(*)) returns(char(250) var), 137 ioa_ entry() options(variable), 138 ioa_$rsnnl entry() options(variable), 139 iox_$attach_ioname entry (char (*), ptr, char (*), 140 fixed bin (35)), 141 iox_$close_file entry (ptr, char(*), fixed bin(35)), 142 iox_$control entry (ptr, char(*), ptr, 143 fixed bin(35)), 144 iox_$detach entry (ptr, char(*), fixed bin(35)), 145 iox_$open_file entry (ptr, fixed bin, char(*), 146 bit(1) aligned, fixed bin(35)), 147 requote_string_ entry (char (*)) returns (char (*)); 148 149 /* ************************************************************************ */ 150 /* */ 151 /* Begin Execution Here: */ 152 /* 1) set up condition handlers. */ 153 /* 2) set up work area. */ 154 /* 3) check for arguments, if none found abort. */ 155 /* 4) check arguments for conditional input of first argument. It must be*/ 156 /* either "-volume", "-vol" or a value that does not begin with a "-". */ 157 /* 5) If the first input value is the volume identifier, prefice it with */ 158 /* the word " -volume ". */ 159 /* */ 160 /* ************************************************************************ */ 161 162 program_setup: 163 do; 164 cmd_name = "list_tape_contents"; 165 Piocb = null(); 166 on cleanup call janitor; 167 168 mtape_attach_desc = ANSI_TAPE_ATTACH_DESC; 169 mtape_open_desc = ANSI_TAPE_OPEN_DESC; 170 temp = 0; 171 lto.print_mode = DEFAULT; 172 lto.list_limit = 99999; /* set to no limit */ 173 /* set the default IO module */ 174 current_file_no = 0; /* default start -next_file */ 175 Sprint_banner = TRUE; 176 number_of_like_files = 0; 177 current_file.version = fst_version_1; 178 179 call cu_$arg_count (n_args); /* get number of args typed in */ 180 if n_args = 0 then 181 code = error_table_$noarg; 182 else do; 183 call cu_$arg_list_ptr (Parg_list); 184 next_arg = 1; 185 call get_arg_ptr; 186 if length (arg) = 0 then 187 code = error_table_$noarg; 188 else do; 189 if substr(arg, 1, length("-")) = "-" then 190 if arg = "-volume" | arg = "-vol" then 191 if get_another_arg () then; 192 else code = error_table_$noarg; 193 else 194 code = error_table_$bad_volid; 195 end; 196 end; 197 198 if code = 0 then do; 199 input_attach_args = " -volume "; 200 lto.volid = arg; 201 tape_io_switch = cmd_name || "." || lto.volid; 202 if search (arg, """ ") ^= 0 then 203 input_attach_args = 204 input_attach_args || requote_string_ ((arg)); 205 else 206 input_attach_args = input_attach_args || arg; 207 end; 208 else do; 209 call com_err_ (code, cmd_name, " 210 Usage: list_tape_contents vn1 {-comment c1} ... vnN {-comment cN} 211 {-attach_args} {-control_args} 212 213 attach_args: any combination of mtape_ attach control arguments."); 214 call ioa_ (" 215 control_args: -volume_type (""ansi""|""ibm""), -vt (""ansi""|""ibm"") 216 -from file_number, 0 < file_number < 10000 217 -to file_number, 0 < file_number < 10000 218 -long, -lg 219 -brief, -bf"); 220 221 return; 222 end; 223 end program_setup; 224 225 /* ************************************************************************ */ 226 /* */ 227 /* Argument Processing Loop: */ 228 /* 1) get the next arg. */ 229 /* 2) if found, check for a length > 0. */ 230 /* 3) if ok, then check to see if it is a control for ltc. If so, */ 231 /* evaluate it. */ 232 /* if not, pass it along to mtape_ for evaluation. */ 233 /* */ 234 /* ************************************************************************ */ 235 process_input_arg_loop: 236 237 do while (get_another_arg ()); 238 239 if arg = "-long" | arg = "-lg" then lto.print_mode = LONG; 240 241 else 242 if arg = "-brief" | arg = "-bf" then lto.print_mode = BRIEF; 243 244 245 246 /* convert to binary */ 247 /* only up to 4 digit file sequence */ 248 /* numbers allowed */ 249 else 250 if arg = "-from" then 251 from_ctl: do; 252 if get_another_arg () then do; 253 temp = fixed (cv_dec_check_ ((arg), code), 17); 254 if code = 0 then 255 if temp > 0 & temp < 10000 then 256 current_file_no = temp; 257 else call com_err_ (error_table_$bad_arg, cmd_name, " 258 -from ^a 259 value must be an integer from 1 to 9999.", arg); 260 else call com_err_ (error_table_$bad_arg, cmd_name, " 261 -from ^a 262 value must be an integer from 1 to 9999.", arg); 263 end; 264 else call com_err_ (error_table_$noarg, cmd_name, " 265 -from requires an operand of an integer from 1 to 9999."); 266 end from_ctl; 267 268 269 270 /* convert to binary */ 271 /* only up to 4 digit file sequence */ 272 /* numbers allowed */ 273 else 274 if arg = "-to" then 275 to_ctl: do; 276 if get_another_arg () then do; 277 temp = fixed (cv_dec_check_ ((arg), code), 17); 278 if code = 0 then 279 if temp > 0 & temp < 10000 then 280 lto.list_limit = temp; 281 else call com_err_ (error_table_$bad_arg, cmd_name, " 282 -to ^a 283 value must be an integer from 1 to 9999.", arg); 284 else call com_err_ (error_table_$bad_arg, cmd_name, " 285 -to ^a 286 value must be an integer from 1 to 9999.", arg); 287 end; 288 else call com_err_ (error_table_$noarg, cmd_name, " 289 -to requires an operand of an integer from 1 to 9999."); 290 end to_ctl; 291 292 293 294 else 295 if arg = "-io_module" | arg = "-iom" then 296 iom_ctl: do; 297 if get_another_arg () then 298 if arg = "tape_ansi_" then do; 299 mtape_attach_desc = ANSI_TAPE_ATTACH_DESC; 300 mtape_open_desc = ANSI_TAPE_OPEN_DESC; 301 end; 302 else if arg = "ibm" then do; 303 mtape_attach_desc = IBM_TAPE_ATTACH_DESC; 304 mtape_open_desc = IBM_TAPE_OPEN_DESC; 305 end; 306 else call com_err_ (error_table_$bad_arg, cmd_name, " 307 -io_module(-iom) ^a 308 operand value must be ""tape_ansi_"" or ""tape_ibm_"".", arg); 309 else call com_err_ (error_table_$noarg, cmd_name, " 310 -io_module(-iom) requires an operand of ""tape_ansi_"" or ""tape_ibm_""."); 311 end iom_ctl; 312 313 314 315 else 316 if arg = "volume_type" | arg = "-vt" then 317 vt_ctl: do; 318 if get_another_arg () then 319 if arg = "tape_ansi_" then do; 320 mtape_attach_desc = ANSI_TAPE_ATTACH_DESC; 321 mtape_open_desc = ANSI_TAPE_OPEN_DESC; 322 end; 323 else if arg = "ibm" then do; 324 mtape_attach_desc = IBM_TAPE_ATTACH_DESC; 325 mtape_open_desc = IBM_TAPE_OPEN_DESC; 326 end; 327 else call com_err_ (error_table_$bad_arg, cmd_name, " 328 -volume_type(-vt) ^a 329 operand must be ""ansi"" or ""ibm"".", arg); 330 else call com_err_ (error_table_$noarg, cmd_name, " 331 -volume_type(-vt) requires an operand value of ""ansi"" or ""ibm""."); 332 end vt_ctl; 333 334 335 336 else 337 if arg = "-retain" | arg = "-ret" then 338 retain_ctl: do; 339 if get_another_arg () then; 340 end retain_ctl; 341 342 343 344 else 345 mtape_ctls: do; /* all remaining input arguments are*/ 346 /* passed along to mtape_ for */ 347 /* evaluation. */ 348 input_attach_args = input_attach_args || " "; 349 if search (arg, """ ") ^= 0 then 350 input_attach_args = 351 input_attach_args || requote_string_ ((arg)); 352 else input_attach_args = input_attach_args || arg; 353 354 end mtape_ctls; 355 356 357 end process_input_arg_loop; 358 359 360 361 /* If any of the arguments were found to be in error, then stop the */ 362 /* program. */ 363 364 if code ^= error_table_$nodescr then 365 return; 366 367 /* ************************************************************************ */ 368 /* */ 369 /* Attach mtape_ to the requested volume set. */ 370 /* 1) establish a condition handler to trap mtape_ errors. */ 371 /* */ 372 /* ************************************************************************ */ 373 374 mtape_attach_desc = mtape_attach_desc || input_attach_args; 375 376 on command_error code=0; 377 378 call iox_$attach_ioname 379 (tape_io_switch, Piocb, (mtape_attach_desc), code); 380 if code = error_table_$not_detached | code = 0 then; 381 else do; /* unable to attach tape file */ 382 call com_err_ (code, cmd_name, " 383 While attaching file number ^d, volume ^a. Attach description:^/^a", 384 current_file_no, lto.volid, mtape_attach_desc); 385 call janitor; 386 return; 387 end; 388 389 /* ************************************************************************ */ 390 /* Print information about the files in the volume set */ 391 /* ************************************************************************ */ 392 print_loop: 393 394 do while (current_file_no <= lto.list_limit & code = 0); 395 if current_file_no > 0 then 396 call iox_$open_file (Piocb, 4, 397 (mtape_open_desc || " -number" || char(current_file_no)), 398 "0"b, code); 399 else 400 call iox_$open_file (Piocb, 4, (mtape_open_desc), "0"b, code); 401 402 if code = 0 then 403 call iox_$control (Piocb, "file_status", addr (current_file), 404 code); 405 406 407 408 if code = 0 then 409 print_file_info: 410 do; 411 if lto.print_mode = BRIEF then 412 brief_print_mode: 413 do; 414 if Sprint_banner then do; 415 call ioa_ (" 416 ID Number 417 "); 418 Sprint_banner = FALSE; 419 end; 420 call ioa_ ("^32a^3x^5d", current_file.file_id, 421 current_file.file_seq); 422 end brief_print_mode; 423 424 425 426 else 427 if lto.print_mode = LONG then 428 long_print_mode: 429 do; 430 call ioa_$rsnnl ("Section:^5x^4d 431 Created:^1x^8a^20tExpires:^1x^8a^40tGeneration:^1x^4d^58tVersion:^5x^4d 432 ^[Format:^2x^4a^20tMode:^4x^6a^40tBlksize:^3x^5d^58tLrecl:^4x^7d^]", 433 current_line, 434 Lcurrent_line, 435 current_file.begin_vol_index, 436 cv_date (current_file.creation), 437 cv_date (current_file.expiration), 438 current_file.generation, 439 current_file.gen_version, 440 current_file.file_format ^= "", 441 current_file.file_format, 442 current_file.recording_mode, 443 current_file.block_len, 444 current_file.reclen); 445 446 if current_line = previous_line then 447 number_of_like_files = number_of_like_files + 1; 448 else 449 if number_of_like_files > 0 then do; 450 call ioa_ (" 451 The last ^d files have the same characteristics.", number_of_like_files + 1); 452 number_of_like_files = 0; 453 end; 454 455 call ioa_ (" 456 ID: ^32a^40tNumber:^4x^5d^[^58t^a^]", 457 current_file.file_id, 458 current_file.file_seq, 459 current_line ^= previous_line, 460 current_line); 461 462 previous_line = current_line; 463 end long_print_mode; 464 465 466 467 else 468 default_print_mode: 469 do; 470 if Sprint_banner then do; 471 call ioa_ (" 472 ID Number Format Blksize Lrecl Mode Created Expires 473 "); 474 Sprint_banner = FALSE; 475 end; 476 477 call ioa_$rsnnl ("^[****^6x****^4x****^4x**** ^s4" 478 || "^;^3a^5x^5d^2x^7d^3x^6a^]^2x^8a^2x^8a", 479 current_line, 480 Lcurrent_line, 481 current_file.file_format = "", 482 current_file.file_format, 483 current_file.block_len, 484 current_file.reclen, 485 current_file.recording_mode, 486 cv_date (current_file.creation), 487 cv_date (current_file.expiration)); 488 489 if current_line = previous_line then 490 number_of_like_files = number_of_like_files + 1; 491 else 492 if number_of_like_files > 0 then do; 493 call ioa_ (" 494 The last ^d files have the same characteristics.", number_of_like_files + 1); 495 number_of_like_files = 0; 496 end; 497 498 call ioa_ ("^[^17a^;^a^/^17x^]^5d^[^7x^a^]", 499 length (rtrim (current_file.file_id)) < 18, 500 current_file.file_id, 501 current_file.file_seq, 502 current_line ^= previous_line, 503 current_line); 504 505 previous_line = current_line; 506 end default_print_mode; 507 508 509 510 call iox_$close_file (Piocb, 511 "-no_display -close_position leave", code); 512 513 end print_file_info; 514 current_file_no = current_file_no + 1; 515 end print_loop; 516 517 518 519 if code = error_table_$no_file | code = 0 then; 520 else 521 call com_err_ (code, cmd_name, " 522 While processing file number ^d, volume ^a 523 Attach description:^/^a", current_file_no, lto.volid, mtape_attach_desc); 524 525 call janitor; 526 527 if number_of_like_files > 0 then 528 call ioa_ (" 529 The last ^d files have the same characteristics.", number_of_like_files + 1); 530 531 if lto.list_limit = 99999 then; 532 else if lto.list_limit > current_file_no then 533 call ioa_ (" 534 Warning: file listing limit ^d, specified exceeds the number of 535 files on the tape, ^d.", lto.list_limit, current_file_no); 536 537 /* ************************************************************************ */ 538 /* sees if 2nd part of two-part option exists */ 539 /* ************************************************************************ */ 540 541 get_another_arg: procedure returns (bit (1)); 542 543 if next_arg + 1 > n_args then do; 544 code = error_table_$nodescr; 545 return (FALSE); 546 end; 547 else do; /* 2nd part does exist */ 548 next_arg = next_arg + 1; /* increment the option index */ 549 call get_arg_ptr; 550 if code ^= 0 then 551 return (FALSE); 552 else 553 return (TRUE); 554 end; 555 556 end get_another_arg; 557 558 559 /* ************************************************************************ */ 560 get_arg_ptr: procedure; 561 562 code = 0; 563 call cu_$arg_ptr_rel (next_arg, Parg, Larg, code, Parg_list); 564 return; 565 end get_arg_ptr; 566 567 /* ************************************************************************ */ 568 janitor: procedure; /* cleanup control file, temp, obj, */ 569 /* and status segments */ 570 571 if Piocb ^= null () then do; 572 call iox_$close_file (Piocb, "-no_display -close_position leave", 573 code); 574 call iox_$detach (Piocb, "-no_display -rewind", code); 575 end; 576 return; 577 end janitor; 578 579 /* ************************************************************************ */ 580 cv_date: proc (julian) returns (char (8) aligned); 581 582 /* date in form: yyddd */ 583 dcl julian char(6) aligned; 584 585 dcl clock_value fixed bin (71), 586 code fixed bin (35); 587 588 589 call convert_date_to_binary_ (("January 1, 19" || 590 substr(julian, 2, length("yy")) || " +" || 591 substr(julian, 4, length("ddd")) || "days -1day"), 592 clock_value, code); 593 594 if code ^= 0 then 595 return (" unknown"); 596 597 return (date_time_$format ("multics_date", clock_value, "", "")); 598 599 end cv_date; 600 1 1 /* BEGIN INCLUDE FILE mtape_file_status.incl.pl1. Created 02/02/83 by J. A. Bush */ 1 2 /* format: style4 */ 1 3 /* This include file defines the structures returned by the "file_status" ("fst"), 1 4* and the "file_set_status" ("fsst") control operations */ 1 5 1 6 dcl fst_ptr ptr; /* Pointer to the file_status info structure */ 1 7 dcl fsst_ptr ptr; /* Pointer to the file_set_status info structure */ 1 8 dcl f_statp ptr; /* Pointer to file_status structure */ 1 9 1 10 dcl fst_version_1 char (8) int static options (constant) init ("fstv0001"); 1 11 dcl fsst_version_1 char (8) int static options (constant) init ("fsstv001"); 1 12 1 13 dcl mtape_fsst_nfiles fixed bin; /* Set this variable before allocating mtape_fsst structure */ 1 14 1 15 dcl 1 mtape_fst aligned based (fst_ptr), /* "file_status" info structure */ 1 16 2 version char (8), /* Current version */ 1 17 2 file_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 1 18 2 f_stat like file_status; /* See file_status structure below */ 1 19 1 20 dcl 1 mtape_fsst aligned based (fsst_ptr), /* "file_set_status" info structure */ 1 21 2 version char (8), /* Current version */ 1 22 2 file_set_id char (32), /* File set identifier */ 1 23 2 file_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 1 24 2 nfiles fixed bin, /* # of files in file set */ 1 25 2 fs_stat (mtape_fsst_nfiles refer (mtape_fsst.nfiles)) like file_status; /* See file_status structure below */ 1 26 1 27 dcl 1 file_status based (f_statp) aligned, /* file status info template */ 1 28 2 file_state fixed bin, /* 0 => Never opened; 1 => File not currently open; 1 29* 2 => File open; 3 => File open & locked for error */ 1 30 2 error_code fixed bin (35), /* Error code if file_state = 3 */ 1 31 2 file_id char (32), /* File name or identifier */ 1 32 2 file_seq fixed bin, /* File sequence number */ 1 33 2 begin_vol_index fixed bin, /* Index to volume file begins on */ 1 34 2 end_vol_index fixed bin, /* Index to volume file ends on */ 1 35 2 file_sections fixed bin, /* Number of file sections within file */ 1 36 2 generation fixed bin, /* File generation number */ 1 37 2 gen_version fixed bin, /* File generation version number */ 1 38 2 creation char (6), /* File creation date (" yyddd") */ 1 39 2 expiration char (6), /* File expiration date (" yyddd") */ 1 40 2 file_format char (3), /* File/block format, PFM dependent */ 1 41 2 block_len fixed bin, /* Maximum block length (in 9 bit bytes) */ 1 42 2 reclen fixed bin (21), /* Maximum record length (in 9 bit bytes) */ 1 43 2 recording_mode char (6), /* ASCII, EBCDIC, BCD, etc */ 1 44 2 block_count fixed bin (35), /* # of blocks in this file */ 1 45 2 read_errors fixed bin (35), /* # of read errors encountered reading this file */ 1 46 2 write_errors fixed bin (35); /* # of write errors encountered writing this file */ 1 47 1 48 /* END INCLUDE FILE mtape_file_status.incl.pl1 */ 601 602 603 end list_tape_contents; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/19/88 0823.2 list_tape_contents.pl1 >spec>install>1039>list_tape_contents.pl1 601 1 02/16/84 1452.3 mtape_file_status.incl.pl1 >ldd>include>mtape_file_status.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. ANSI_TAPE_ATTACH_DESC 000072 constant char(104) initial packed unaligned dcl 92 ref 168 299 320 ANSI_TAPE_OPEN_DESC 000056 constant char(46) initial packed unaligned dcl 92 ref 169 300 321 BRIEF constant fixed bin(2,0) initial dcl 92 ref 241 411 DEFAULT constant fixed bin(2,0) initial dcl 92 ref 171 FALSE constant bit(1) initial packed unaligned dcl 92 ref 418 474 545 550 IBM_TAPE_ATTACH_DESC 000024 constant char(103) initial packed unaligned dcl 92 ref 303 324 IBM_TAPE_OPEN_DESC 000002 constant char(69) initial packed unaligned dcl 92 ref 304 325 LONG constant fixed bin(2,0) initial dcl 92 ref 239 426 Larg 000120 automatic fixed bin(17,0) dcl 68 set ref 186 189 189 189 200 202 202 205 239 239 241 241 249 253 257 257 260 260 273 277 281 281 284 284 294 294 297 302 306 306 315 315 318 323 327 327 336 336 349 349 352 563* Lcurrent_line 000121 automatic fixed bin(17,0) dcl 68 set ref 430* 477* Parg 000124 automatic pointer dcl 68 set ref 186 189 189 189 200 202 202 205 239 239 241 241 249 253 257 260 273 277 281 284 294 294 297 302 306 315 315 318 323 327 336 336 349 349 352 563* Parg_list 000122 automatic pointer dcl 68 set ref 183* 563* Piocb 000126 automatic pointer dcl 68 set ref 165* 378* 395* 399* 402* 510* 571 572* 574* Sprint_banner 000130 automatic bit(1) packed unaligned dcl 68 set ref 175* 414 418* 470 474* TRUE constant bit(1) initial packed unaligned dcl 92 ref 175 552 addr builtin function dcl 52 ref 402 402 arg based char dcl 48 set ref 186 189 189 189 200 202 202 205 239 239 241 241 249 253 257* 260* 273 277 281* 284* 294 294 297 302 306* 315 315 318 323 327* 336 336 349 349 352 begin_vol_index 16 000140 automatic fixed bin(17,0) level 3 dcl 68 set ref 430* block_len 30 000140 automatic fixed bin(17,0) level 3 dcl 68 set ref 430* 477* char builtin function dcl 52 ref 395 cleanup 000100 stack reference condition dcl 57 ref 166 clock_value 000756 automatic fixed bin(71,0) dcl 585 set ref 589* 597* cmd_name 000131 automatic char(18) packed unaligned dcl 68 set ref 164* 201 209* 257* 260* 264* 281* 284* 288* 306* 309* 327* 330* 382* 520* code 000136 automatic fixed bin(35,0) dcl 68 in procedure "ltc" set ref 180* 186* 192* 193* 198 209* 253* 254 277* 278 364 376* 378* 380 380 382* 392 395* 399* 402 402* 408 510* 519 519 520* 544* 550 562* 563* 572* 574* code 000760 automatic fixed bin(35,0) dcl 585 in procedure "cv_date" set ref 589* 594 com_err_ 000024 constant entry external dcl 126 ref 209 257 260 264 281 284 288 306 309 327 330 382 520 command_error 000106 stack reference condition dcl 57 ref 376 convert_date_to_binary_ 000026 constant entry external dcl 126 ref 589 creation 23 000140 automatic char(6) level 3 dcl 68 set ref 430* 430* 477* 477* cu_$arg_count 000030 constant entry external dcl 126 ref 179 cu_$arg_list_ptr 000032 constant entry external dcl 126 ref 183 cu_$arg_ptr_rel 000034 constant entry external dcl 126 ref 563 current_file 000140 automatic structure level 1 dcl 68 set ref 402 402 current_file_no 000177 automatic fixed bin(24,0) dcl 68 set ref 174* 254* 382* 392 395 395 514* 514 520* 532 532* current_line 000200 automatic varying char(256) dcl 68 set ref 430* 446 455 455* 462 477* 489 498 498* 505 cv_dec_check_ 000036 constant entry external dcl 126 ref 253 277 date_time_$format 000040 constant entry external dcl 126 ref 597 error_table_$bad_arg 000010 external static fixed bin(35,0) dcl 117 set ref 257* 260* 281* 284* 306* 327* error_table_$bad_volid 000012 external static fixed bin(35,0) dcl 117 ref 193 error_table_$no_file 000020 external static fixed bin(35,0) dcl 117 ref 519 error_table_$noarg 000014 external static fixed bin(35,0) dcl 117 set ref 180 186 192 264* 288* 309* 330* error_table_$nodescr 000016 external static fixed bin(35,0) dcl 117 ref 364 544 error_table_$not_detached 000022 external static fixed bin(35,0) dcl 117 ref 380 expiration 25 000140 automatic char(6) level 3 dcl 68 set ref 430* 430* 477* 477* f_stat 3 000140 automatic structure level 2 dcl 68 file_format 27 000140 automatic char(3) level 3 dcl 68 set ref 430 430* 477 477* file_id 5 000140 automatic char(32) level 3 dcl 68 set ref 420* 455* 498 498* file_seq 15 000140 automatic fixed bin(17,0) level 3 dcl 68 set ref 420* 455* 498* file_status based structure level 1 dcl 1-27 fixed builtin function dcl 52 ref 253 277 fst_version_1 000000 constant char(8) initial packed unaligned dcl 1-10 ref 177 gen_version 22 000140 automatic fixed bin(17,0) level 3 dcl 68 set ref 430* generation 21 000140 automatic fixed bin(17,0) level 3 dcl 68 set ref 430* input_attach_args 000301 automatic varying char(270) dcl 68 set ref 199* 202* 202 205* 205 348* 348 349* 349 352* 352 374 ioa_ 000042 constant entry external dcl 126 ref 214 415 420 450 455 471 493 498 527 532 ioa_$rsnnl 000044 constant entry external dcl 126 ref 430 477 iox_$attach_ioname 000046 constant entry external dcl 126 ref 378 iox_$close_file 000050 constant entry external dcl 126 ref 510 572 iox_$control 000052 constant entry external dcl 126 ref 402 iox_$detach 000054 constant entry external dcl 126 ref 574 iox_$open_file 000056 constant entry external dcl 126 ref 395 399 julian parameter char(6) dcl 583 ref 580 589 589 length builtin function dcl 52 ref 186 189 498 589 589 list_limit 1 000114 automatic fixed bin(24,0) level 2 dcl 61 set ref 172* 278* 392 531 532 532* lto 000114 automatic structure level 1 dcl 61 mtape_attach_desc 000406 automatic varying char(270) dcl 68 set ref 168* 299* 303* 320* 324* 374* 374 378 382* 520* mtape_fst based structure level 1 dcl 1-15 mtape_open_desc 000513 automatic varying char(270) dcl 68 set ref 169* 300* 304* 321* 325* 395 399 n_args 000620 automatic fixed bin(17,0) dcl 68 set ref 179* 180 543 next_arg 000621 automatic fixed bin(17,0) dcl 68 set ref 184* 543 548* 548 563* null builtin function dcl 52 ref 165 571 number_of_like_files 000137 automatic fixed bin(17,0) initial dcl 68 set ref 68* 176* 446* 446 448 450 452* 489* 489 491 493 495* 527 527 previous_line 000622 automatic varying char(256) dcl 68 set ref 446 455 462* 489 498 505* print_mode 000114 automatic fixed bin(17,0) level 2 dcl 61 set ref 171* 239* 241* 411 426 reclen 31 000140 automatic fixed bin(21,0) level 3 dcl 68 set ref 430* 477* recording_mode 32 000140 automatic char(6) level 3 dcl 68 set ref 430* 477* requote_string_ 000060 constant entry external dcl 126 ref 202 349 rtrim builtin function dcl 52 ref 498 search builtin function dcl 52 ref 202 349 substr builtin function dcl 52 ref 189 589 589 tape_io_switch 000723 automatic char(26) packed unaligned dcl 68 set ref 201* 378* temp 000732 automatic fixed bin(24,0) dcl 68 set ref 170* 253* 254 254 254 277* 278 278 278 version 000140 automatic char(8) level 2 dcl 68 set ref 177* volid 2 000114 automatic char(6) level 2 dcl 61 set ref 200* 201 382* 520* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. f_statp automatic pointer dcl 1-8 fsst_ptr automatic pointer dcl 1-7 fsst_version_1 internal static char(8) initial packed unaligned dcl 1-11 fst_ptr automatic pointer dcl 1-6 mtape_fsst based structure level 1 dcl 1-20 mtape_fsst_nfiles automatic fixed bin(17,0) dcl 1-13 NAMES DECLARED BY EXPLICIT CONTEXT. brief_print_mode 003135 constant label dcl 411 cv_date 004201 constant entry internal dcl 580 ref 430 430 430 430 477 477 477 477 default_print_mode 003416 constant label dcl 467 from_ctl 001561 constant label dcl 249 get_another_arg 004032 constant entry internal dcl 541 ref 189 235 252 276 297 318 339 get_arg_ptr 004070 constant entry internal dcl 560 ref 185 549 iom_ctl 002147 constant label dcl 294 janitor 004113 constant entry internal dcl 568 ref 166 385 525 list_tape_contents 001154 constant entry external dcl 44 long_print_mode 003204 constant label dcl 426 ltc 001144 constant entry external dcl 44 mtape_ctls 002451 constant label dcl 344 print_file_info 003132 constant label dcl 408 print_loop 002721 constant label dcl 392 process_input_arg_loop 001520 constant label dcl 235 program_setup 001162 constant label dcl 162 retain_ctl 002443 constant label dcl 336 to_ctl 001752 constant label dcl 273 vt_ctl 002305 constant label dcl 315 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5062 5144 4577 5072 Length 5420 4577 62 240 263 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ltc 780 external procedure is an external procedure. on unit on line 166 64 on unit on unit on line 376 64 on unit get_another_arg internal procedure shares stack frame of external procedure ltc. get_arg_ptr internal procedure shares stack frame of external procedure ltc. janitor 88 internal procedure is called by several nonquick procedures. cv_date internal procedure shares stack frame of external procedure ltc. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ltc 000114 lto ltc 000120 Larg ltc 000121 Lcurrent_line ltc 000122 Parg_list ltc 000124 Parg ltc 000126 Piocb ltc 000130 Sprint_banner ltc 000131 cmd_name ltc 000136 code ltc 000137 number_of_like_files ltc 000140 current_file ltc 000177 current_file_no ltc 000200 current_line ltc 000301 input_attach_args ltc 000406 mtape_attach_desc ltc 000513 mtape_open_desc ltc 000620 n_args ltc 000621 next_arg ltc 000622 previous_line ltc 000723 tape_io_switch ltc 000732 temp ltc 000756 clock_value cv_date 000760 code cv_date THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ convert_date_to_binary_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr_rel cv_dec_check_ date_time_$format ioa_ ioa_$rsnnl iox_$attach_ioname iox_$close_file iox_$control iox_$detach iox_$open_file requote_string_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_volid error_table_$no_file error_table_$noarg error_table_$nodescr error_table_$not_detached LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 68 001140 44 001143 164 001162 165 001165 166 001167 168 001211 169 001216 170 001223 171 001224 172 001226 174 001230 175 001231 176 001233 177 001234 179 001236 180 001245 183 001253 184 001262 185 001264 186 001265 189 001273 192 001317 193 001323 198 001326 199 001330 200 001335 201 001343 202 001363 205 001443 207 001456 209 001457 214 001503 221 001517 235 001520 239 001525 241 001542 249 001555 252 001561 253 001566 254 001620 257 001631 260 001665 263 001720 264 001721 266 001745 273 001746 276 001752 277 001757 278 002011 281 002022 284 002056 287 002111 288 002112 290 002136 294 002137 297 002147 299 002162 300 002167 301 002174 302 002175 303 002201 304 002206 305 002213 306 002214 309 002250 311 002274 315 002275 318 002305 320 002320 321 002325 322 002332 323 002333 324 002337 325 002344 326 002351 327 002352 330 002406 332 002432 336 002433 339 002443 340 002450 348 002451 349 002460 352 002537 357 002552 364 002553 374 002557 376 002571 378 002610 380 002645 382 002655 385 002714 386 002720 392 002721 395 002727 399 003024 402 003072 408 003130 411 003132 414 003135 415 003137 418 003153 420 003154 422 003201 426 003202 430 003204 446 003310 448 003320 450 003322 452 003344 455 003345 462 003410 463 003415 470 003416 471 003420 474 003434 477 003435 489 003530 491 003540 493 003542 495 003564 498 003565 505 003647 510 003654 514 003700 515 003701 519 003702 520 003711 525 003750 527 003754 531 004000 532 004004 603 004031 541 004032 543 004034 544 004040 545 004043 548 004050 549 004051 550 004052 552 004062 560 004070 562 004071 563 004072 564 004111 568 004112 571 004120 572 004125 574 004150 576 004200 580 004201 589 004203 594 004256 597 004267 ----------------------------------------------------------- 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