COMPILATION LISTING OF SEGMENT gfms_substructure_records_ Compiled by: Multics PL/I Compiler, Release 32d, of September 19, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 09/20/89 1351.1 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(89-05-11,RBarstad), approve(89-09-19,MCR8117), 12* audit(89-06-26,Parisek), install(89-09-20,MR12.3-1069): 13* Allowed for catalog descriptors (type 1) to be out of sequence. 14* This is possible from a fragmented file system. 15* END HISTORY COMMENTS */ 16 17 18 gfms_substructure_records_: proc (); 19 20 /* Display SUBSTRUCTURE records information. 21* 22* Author: Dave Ward 10/28/80 23* Change: Dave Ward 11/07/80 print parent sector of type 0 cat. 24* Change: Dave Ward 11/11/80 carry parent sector from 0 to 1 cat records. 25* Change: Dave Ward 01/28/81 allow unfound parent sector. 26* Change: Ron Barstad 12/23/82 Fixed several bugs: 27* 1. skipping catalog entries after first null entry 28* 2. treating empty(type 63) catalog records as error- 29* this prevented processing of dontdo and doonlys and single cat or file saves 30* 31**/ 32 33 call ioa ("^|SUBSTRUCTURE RECORDS INFORMATION:"); 34 bc /* Count of blocks. */ 35 , e /* Count of total empty catalog records. */ 36 , tc /* Total count of catalog records. */ 37 , rl /* => require a new input record (see scan). */ 38 = 0; 39 unspec (parent_list) = "0"b; 40 call scan; 41 if scan_ss then do; 42 call gfms_dump_description_tree_; 43 signal cond (gfms_fail); 44 end; 45 return; 46 47 cat_0_1_entry: proc (ps, cel, ep); 48 49 /* Store the catalog entries (files or subcatalogs) 50* in the description tree. Link entries back to 51* the parent catalog (at tree cat entry "fcl"). 52**/ 53 dcl cel fixed bin parm; 54 dcl ep ptr parm; 55 dcl ps fixed bin(18)unsigned unal parm; 56 if ps = 0 then return; /* there is no parent */ 57 cep = ep; /* Pointer to initial name entry in catalog. */ 58 do i = 1 to cel; 59 if (ce.name = "0"b) | (ce.name = (12)"20"b3) then goto cont; /* skip on null or blank entry name. */ 60 61 n = rtrim (gfms_ascii_ ((ce.name))); /* n => name of this entry. */ 62 ic = ce.entry_is_catalog; /* Entry is a subcatalog. */ 63 cs = ce.description_sector_org; /* Sector where my child is found. */ 64 call ioa ( 65 "^12x^2i. ^12a ^[^^on-device^; on-device^] ^[catalog^; file^] ^6i" 66 , i 67 , n 68 , ce.not_on_this_device 69 , ic 70 , cs 71 ); 72 73 call gfms_hash_cat_ ( 74 ce.name /* entry name BCD. */ 75 , n /* entry name ASCII. */ 76 , ic /* "1"b=> catalog, "0"b=> file. */ 77 , ps /* sector number of parent. */ 78 , cs /* sector number of child. */ 79 ); 80 cont: ; 81 if i < cel then /* Position to the next name entry. */ 82 cep = addrel (cep, size (ce)); 83 end; 84 return; 85 dcl cs fixed bin(18)unsigned; 86 dcl gfms_hash_cat_ entry (bit(72) aligned, char(12) var, bit(1), uns fixed bin(18) unal, uns fixed bin(18)); 87 dcl i fixed bin; 88 dcl ic bit(1); 89 dcl n char(12)var; 90 end cat_0_1_entry; 91 92 cat_2_entry: proc; 93 94 /* Record descriptor information and 95* link it to its catalog structure (in the 96* description tree). Optionally display this 97* (type 2 catalog) information. 98**/ 99 call ioa ("^8x^3i type 2 file description record.", tc); 100 /* Obtain next desc entry. */ 101 n_desc = n_desc+1; 102 if n_desc > hbound (description, 1) then do; 103 call com_err_ ( 104 0 105 , "gfms_substructure_records_" 106 , "Exhausted ^i entries of desc table." 107 , hbound (description, 1) 108 ); 109 signal cond (gfms_fail); 110 end; 111 description (n_desc).name = gfms_catrec_2.filename; 112 s, description (n_desc).sector = gfms_catrec_2.dupl_sector_no; 113 114 /* Hash the sector number in the desc list. */ 115 k = mod (s, hbound (start_list.desc, 1)+1); 116 i = start_list.desc (k); 117 do while (i>0); /* Assure sector number unique. */ 118 if description (i).sector = s then do; 119 call com_err_ ( 120 0 121 , "gfms_substructure_records_" 122 , "BUG, duplicate entries in desc list (^i sector no.)" 123 ||"^/file ^12a smc ^12a" 124 , s 125 , gfms_ascii_ ((gfms_catrec_2.filename)) 126 , gfms_ascii_ ((gfms_catrec_2.SMC_name)) 127 ); 128 return; 129 end; 130 i = description (i).link; 131 end; 132 133 /* s is a new sector number entry. */ 134 description (n_desc).link = start_list.desc (k); /* Link to previous chain. */ 135 start_list.desc (k) = n_desc; /* Link new sector number to start of chain. */ 136 137 call ioa ( 138 "^12x" 139 ||"file ^12a " 140 ||"smc ^12a " 141 ||"created by ^12a " 142 ||"on ^a" 143 , gfms_ascii_ ((gfms_catrec_2.filename)) 144 , gfms_ascii_ ((gfms_catrec_2.SMC_name)) 145 , gfms_ascii_ ((gfms_catrec_2.creator_name)) 146 , gfms_date_ (gfms_catrec_2.create_date) 147 ); 148 149 /* Sector number of descriptor. */ 150 call ioa_nnl ("^12xdesc-sect^6i", s); 151 152 /* Maximum file size. */ 153 if max_size_in_llinks then 154 description (n_desc).max_size_llinks = maximum_file_size; 155 else 156 description (n_desc).max_size_llinks = maximum_file_size * 12; /* 12 llinks = link. */ 157 if maximum_file_size = 0 then 158 call ioa_nnl ("^1xmax-file-size UNLIMITED"); 159 else 160 call ioa_nnl ( 161 "^1xmax-file-size ^i " 162 ||"^[ llinks^; links^]" 163 ||"^[ orig-file-written^; orig-file-not-written^]" 164 , maximum_file_size 165 , max_size_in_llinks 166 , file_written_to 167 ); 168 169 /* User specified information. */ 170 description (n_desc).user_info.present = user_specified_info_present; 171 if user_specified_info_present then do; 172 description (n_desc).user_info.value = user_info_bits; 173 call ioa_nnl (" ^12.3b", "0"b||user_info_bits); 174 end; 175 else description (n_desc).user_info.value = "0"b; 176 177 /* Mode (type) of file. */ 178 modep = addr (description (n_desc).mode); 179 mode = "0"b; 180 if random_file then do; 181 mode = mode | "0100"b; 182 call ioa (" RANDOM"); 183 end; 184 if ASCII_file then do; 185 mode = mode|"0010"b; 186 call ioa (" ASCII"); 187 end; 188 if I_D_S_file then do; 189 mode = mode|"0001"b; 190 call ioa (" IDS"); 191 end; 192 if ^random_file & ^ASCII_file & ^I_D_S_file then do; 193 mode = mode | "1000"b; 194 call ioa (" SEQUENTIAL"); 195 end; 196 197 if file_on_nonstructured_vol = "1"b then 198 call ioa ("nonstructured volume (NOT CURRENTLY PROVIDED FOR)"); 199 else do; /* Structured volume. */ 200 do i = 1 to hbound (gfms_catrec_2.structured_info, 1); 201 cep = addr (gfms_catrec_2.structured_info (i)); 202 if cep -> b36 = "0"b then return; 203 if substr (cep -> b36, 1, 4) ^= "0101"b then /* not a device description. */ 204 call ioa ( 205 "^12xnumber llinks ^i starting llink ^i ^[ DEFECTIVE^;^s^]" 206 , number_llinks 207 , starting_llink 208 , defective 209 ); 210 end; 211 end; 212 return; 213 214 dcl i fixed bin; 215 dcl k fixed bin; 216 dcl mode bit(4)unal based(modep); 217 dcl modep ptr; 218 dcl s fixed bin(18)unsigned; 219 end cat_2_entry; 220 221 find_parent_sector: proc (pr, sn)returns (fixed bin (18)unsigned); 222 223 /* Look up prior sector number "pr" in the hash list 224* recording parent sector number. Store sector number "sn" 225* in hash list along with the recorded parent sector found. 226* Return parent sector found. 227* If no parent sector found then return zero. This catalog record is ignored. 228**/ 229 dcl pr fixed bin(18)unsigned unal parm; 230 dcl sn fixed bin(18)unsigned unal parm; 231 232 k = mod (pr, hbound (parent_list, 1)+1); 233 do j = k to hbound (parent_list, 1), 0 to (k-1); 234 if parent_list (j).cat_sector = pr then do; /* found. */ 235 parent_list (j).cat_sector = 0; /* Make entry available. */ 236 ps = parent_list (j).parent_sector; 237 call save_parent_sector (sn, (ps)); 238 return (ps); 239 end; 240 end; 241 242 return (0); /* not found */ 243 244 dcl j fixed bin(18)unsigned; 245 dcl k fixed bin(18)unsigned; 246 dcl ps fixed bin(18)unsigned; 247 end find_parent_sector; 248 249 first_rec: proc (cp); 250 251 /* Display first record(s) information. 252* Set "cp" to locate catalog records. 253**/ 254 dcl cp ptr parm; 255 bc = bc+1; /* Block count. */ 256 call ioa ( 257 "^6i. (block^6i) size^6i record-size^6i" 258 , bc 259 , sub.block_serial_number 260 , sub.block_size 261 , sub.record_size 262 ); 263 264 /* Display substructure records. */ 265 rl = nw-1; /* Remaining length (words) for catalog records. */ 266 if mod (rl, size (gfms_catrec_0)) ^= 0 then do; 267 call com_err_ ( 268 0 269 , "gfms_substructure_records_" 270 , "Not modulo (^i) number of words for catalog records (^i)" 271 , size (gfms_catrec_0) 272 , rl 273 ); 274 fail: ; 275 signal cond (gfms_fail); 276 end; 277 278 /* Set pointer to initial catalog record. */ 279 cp = addr (sub.catalog_records); 280 return; 281 end first_rec; 282 283 force_parent_sector: proc (pr, sn, cel, ep)returns (fixed bin (18)unsigned); 284 285 /* IF the entry in the type 1 catalog list is not null 286* THEN 287* put prior sector number "pr" in the hash list as the parent sector. 288* Store sector number "sn" in hash list along with the recorded parent. 289* Return sn as parent sector. 290* This "step" parent will be replaced with the "true" parent when the 291* subsequent type 0 or type 1 catalog pointed to by pr comes along. 292* (If it doesn't, then the files and catalogs in this and linked type 1's 293* are dumped at the top level and not where they belong.) 294* ELSE return zero. This catalog record is ignored. 295**/ 296 dcl pr fixed bin(18)unsigned unal parm; /* prior sector */ 297 dcl sn fixed bin(18)unsigned unal parm; /* this sector */ 298 dcl cel fixed bin parm; /* count of entries */ 299 dcl ep ptr parm; /* first entry pointer */ 300 301 cep = ep; /* Pointer to initial name entry in catalog. */ 302 do i = 1 to cel; 303 if (ce.name ^= "0"b) 304 then if (ce.name ^= (12)"20"b3) then goto force; 305 if i < cel then /* Position to the next name entry. */ 306 cep = addrel (cep, size (ce)); 307 end; 308 return(0); /* all null */ 309 310 force: call save_parent_sector (pr, pr); 311 ps = find_parent_sector (pr, sn); 312 313 call ioa ("^11x *** Parent not found yet. Prior ^6i, Sector ^6i, StepParent ^6i.", 314 pr, sn, ps); 315 316 return (ps); 317 /************/ 318 dcl ps fixed bin(18)unsigned; 319 dcl i fixed bin; 320 321 end force_parent_sector; 322 323 get_rec: proc returns (bit (1)); 324 325 /* Obtain the next SUBSTRUCTURE record from tape. 326* Return "1"b when record read is the EOF record 327* (position past the EOF record). 328* Return "0"b when SUBSTRUCTURE record read. 329**/ 330 call iox_$read_record ( 331 cbp /* (input) pointer to control block. */ 332 , addr (sub_space) /* (input) record buffer. */ 333 , size (sub_space)*4 /* (input) buffer length in bytes. */ 334 , nbr /* (output) number of bytes read. */ 335 , code /* (output) I/O system status. */ 336 ); 337 if code ^= 0 then 338 if code = error_table_$end_of_info then 339 if gfms_end_of_input_ ( 340 addr (sub_space) /* (input) pointer to input buffer. */ 341 , size (sub_space)*4 /* (input) length of buffer (bytes). */ 342 , nbr /* (input/output) current number bytes in buffer. */ 343 ) then do; /* No more tape input. */ 344 call com_err_ ( 345 0 346 , "gfms_substructure_records_" 347 , "End of tape input reached in substructure records." 348 ); 349 signal cond (gfms_fail); 350 end; 351 else goto cont; /* Next reel in process. */ 352 else 353 if code ^= error_table_$long_record then do; 354 call com_err_ ( 355 code 356 , "gfms_substructure_records_" 357 , "Attempting to read substructure record." 358 ||"^/Tape status ^4.3b" 359 ||"^/buffer length ^i (bytes)." 360 ||"^/bytes read ^i." 361 ||"^/attach description ""^a""" 362 , gfms_tape_status_ (cbp) 363 , size (sub_space)*4 364 , nbr 365 , attach_description 366 ); 367 fail: ; 368 signal cond (gfms_fail); 369 end; 370 371 /* Assure length in words is conistent. */ 372 cont: ; 373 if mod (nbr, 4) ^= 0 then 374 call com_err_ ( 375 0 376 , "gfms_substructure_records_" 377 , "Bytes read (^i) not word modulo, will truncate to word and continue." 378 , nbr 379 ); 380 nwr = divide (nbr, 4, 17); /* Number of words read. */ 381 nw = nwr-1; /* upper bound of sub structure. */ 382 if nw < 2 then do; 383 call com_err_ ( 384 0 385 , "gfms_substructure_records_" 386 , "Record ^i bytes long (<2 words)" 387 , nbr 388 ); 389 goto fail; 390 end; 391 392 /* Determine if EOF record reached. */ 393 if sub.eof_mark = "170017"b3 then do; 394 p = addr (sub_space); 395 if p -> k65 ^= 65 396 | p -> k64 ^= 64 397 | p -> EOF_number ^= 1 then 398 call com_err_ ( 399 0 400 , "gfms_sub_records_" 401 , "Faulty EOF record. Continuing." 402 ||"^/1st 4 words:^4( ^12.3b^)" 403 , unspec (p -> EOF_record.word0) 404 , unspec (p -> EOF_record.word1) 405 , unspec (p -> EOF_record.word2) 406 , unspec (p -> EOF_record.word3) 407 ); 408 call ioa ( 409 "^6i. (block^6i) EOF record." 410 , i 411 , p -> EOF_record.bsn 412 ); 413 return ("1"b); /* EOF record input, no more substructure. */ 414 end; 415 return ("0"b); /* Next substructure record. */ 416 417 dcl p ptr; 1 1 /* BEGIN INCLUDE FILE gfms_EOF_record.incl.pl1 (Wardd Multics) 10/20/80 1108.9 mst Mon */ 1 2 1 3 /* See DD14, Rev 1 (June 1976) SYSTEM TABLES 1 4* Pages 16-26 & 27 EOF RECORD (66 words) 1 5**/ 1 6 dcl 1 EOF_record aligned based 1 7 , 3 word0 1 8 , 4 bsn fixed bin(18)unsigned unal 1 9 , 4 k65 fixed bin(18)unsigned unal 1 10 , 3 word1 1 11 , 4 k64 fixed bin(18)unsigned unal 1 12 , 4 k170017 bit(18)unal 1 13 , 3 word2 1 14 , 4 EOF_number fixed bin(18)unsigned unal 1 15 , 4 zero fixed bin(18)unsigned unal 1 16 , 3 word3 fixed bin(35) 1 17 , 3 words4_65 (4:65)bit(36) 1 18 ; 1 19 1 20 /* END INCLUDE FILE gfms_EOF_record.incl.pl1 */ 418 419 end get_rec; 420 421 reunite_orphan: proc (step_parent, true_parent); 422 423 /* replace the step_parent sector with the true parent sector in the 424* parent_list and gfms_hash table. Needed to restore the actual cat/file 425* structure. See force_parent_sector. 426**/ 427 dcl step_parent fixed bin (18) unsigned unal parm; 428 dcl true_parent fixed bin (18) unsigned unal parm; 429 430 dcl i fixed bin; 431 432 if step_parent = true_parent then return; 433 434 do i = 0 to hbound(parent_list,1); 435 if parent_list(i).parent_sector = step_parent 436 then parent_list(i).parent_sector = true_parent; 437 end; 438 do i = 1 to n_cat; 439 if cat(i).parent_sector = step_parent 440 then cat(i).parent_sector = true_parent; 441 end; 442 443 call ioa ("^11x *** Replaced StepParent ^6i with Parent ^6i.", 444 step_parent, true_parent); 445 446 return; 447 end reunite_orphan; 448 449 save_parent_sector: proc (cs, ps); 450 451 /* Save parent sector number "ps" in a 452* hash list to provide for type 1 catalog 453* records obtaining parent sector of corresponding 454* type 0 catalog record. 455**/ 456 dcl cs fixed bin(18)unsigned unal parm; 457 dcl ps fixed bin(18)unsigned unal parm; 458 459 k = mod (cs, hbound (parent_list, 1)+1); 460 do j = k to hbound (parent_list, 1), 0 to (k-1); 461 if parent_list (j).cat_sector = 0 then do; /* Available. */ 462 parent_list (j).cat_sector = cs; 463 if (parent_list (j).parent_sector ^= ps) then 464 if (parent_list (j).parent_sector ^= 0) then call reunite_orphan(cs, ps); 465 else parent_list (j).parent_sector = ps; 466 return; 467 end; 468 end; 469 470 /* No entryies available. */ 471 call com_err_ ( 472 0 473 , "gfms_substructure_records_" 474 , "Exhaused ^i entries available for parent sector list." 475 ||" GCOS file structure is too large or too fragmented." 476 , hbound (parent_list, 1) 477 ); 478 signal cond (gfms_fail); 479 480 dcl j fixed bin(18)unsigned; 481 dcl k fixed bin(18)unsigned; 482 return; 483 end save_parent_sector; 484 485 scan: proc; 486 487 /* Scan the input tape substructure records. 488* For type 0 and 1 catalog records, store entry 489* information in cat array. 490* For type 2 catalog records, store description information. 491**/ 492 more: ; 493 if rl < 1 then do; /* Obtain next input record. */ 494 if get_rec () then return; 495 call first_rec (cat_ptr); /* Display header, position to 1st catalog record. */ 496 end; 497 else /* Record already available. */ 498 cat_ptr = addrel (cat_ptr, size (cat_common)); /* Position to the next catalog record (within input record). */ 499 tc = tc+1; /* Catalog record count. */ 500 t = cat_common.type; /* Type of catalog record. */ 501 goto cat (CTYPE (t)); 502 503 cat (-1): ; 504 call com_err_ ( 505 0 506 , "gfms_substructure_records_" 507 , "Catalog type ^i not expected on save tape." 508 , t 509 ); 510 call gfms_dump_rec_ (cat_ptr, 64); 511 goto cont; 512 513 cat (0): ; /* Catalog description */ 514 call ioa ( 515 "^8x^3i Type 0 catalog record (Prior ^6i, Parent-sector ^6i, Next ^6i)." 516 ||"^/^12x^12a create by ^12a on ^a modified ^a." 517 , tc 518 , gfms_catrec_0.prior_cat_sector_org 519 , gfms_catrec_0.dupl_sector_no 520 , gfms_catrec_0.cat_contin_sector_org 521 , gfms_ascii_ ((gfms_catrec_0.catname)) 522 , gfms_ascii_ ((gfms_catrec_0.creator_name)) 523 , gfms_date_ (gfms_catrec_0.create_date) 524 , gfms_date_ (gfms_catrec_0.modified_date) 525 ); 526 call save_parent_sector (gfms_catrec_0.dupl_sector_no, gfms_catrec_0.dupl_sector_no); 527 call cat_0_1_entry ( 528 gfms_catrec_0.dupl_sector_no 529 , hbound (gfms_catrec_0.entry, 1) 530 , addr (gfms_catrec_0.entry) 531 ); 532 goto cont; 533 534 cat (1): ; /* Catalog description (type 0) continuation */ 535 call ioa ("^8x^3i Type 1 catalog record. Prior ^6i, Sector ^6i, Next ^6i, empty ^3i." 536 , tc 537 , gfms_catrec_1.prior_cat_sector_org 538 , gfms_catrec_1.dupl_sector_no 539 , gfms_catrec_1.cat_contin_sector_org 540 , e 541 ); 542 p_sec = find_parent_sector (gfms_catrec_1.prior_cat_sector_org, gfms_catrec_1.dupl_sector_no); 543 if p_sec = 0 544 then p_sec = force_parent_sector (gfms_catrec_1.prior_cat_sector_org 545 , gfms_catrec_1.dupl_sector_no 546 , hbound (gfms_catrec_1.entry, 1) 547 , addr (gfms_catrec_1.entry) 548 ); 549 call cat_0_1_entry (p_sec 550 , hbound (gfms_catrec_1.entry, 1) 551 , addr (gfms_catrec_1.entry) 552 ); 553 goto cont; 554 555 cat (2): ; /* File Description */ 556 call ioa ("^8x^3i Type 2 catalog record.", tc); 557 call cat_2_entry; 558 goto cont; 559 560 cat (3): ; /* type 2 continuation ? */ 561 562 cat (4): ; /* Specific permissions */ 563 564 cat (5): ; /* type 4 continuation */ 565 566 cat (7): ; /* attributes */ 567 568 cat (9): ; /* timed passwords */ 569 570 cat (62): ; 571 call ioa ( 572 "^8x^3i Type ^2i catalog (^3i) not currently provided for." 573 ,tc 574 , t 575 , CTYPE (t) 576 ); 577 goto cont; 578 579 cat (63): ; /* Empty catalog record. */ 580 e = e+1; /* Count empties. */ 581 call ioa ("^8x^3i Empty (type 63) catalog record. Prior ^6i, sector ^6i, empty ^3i." 582 , tc 583 , gfms_catrec_1.prior_cat_sector_org 584 , gfms_catrec_1.dupl_sector_no 585 , e 586 ); 587 588 goto cont_1; 589 590 cont: ; 591 e = 0; /* all catalog types but empty initialize empty count */ 592 cont_1: ; 593 594 rl = rl - size (cat_common); 595 goto more; 596 /*************/ 597 dcl p_sec fixed bin(18) unsigned unal; 598 dcl t fixed bin; 599 600 dcl 1 cat_common aligned based(cat_ptr) 601 , 3 word0 602 , 4 type fixed bin(06)unsigned unal 603 , 4 fill1 bit(30)unal 604 , 3 words1_63 (1:63)bit(36) 605 ; 606 607 dcl CTYPE (0:63)fixed bin static int options(constant)init( 608 /* 00 */ 0 609 ,/* 01 */ 1 610 ,/* 02 */ 2 611 ,/* 03 */ 3 612 ,/* 04 */ 4 613 ,/* 05 */ 5 614 ,/* 06 */ -1 /* Not allowed. */ 615 ,/* 07 */ 7 616 ,/* 08 */ -1 /* Not allowed. */ 617 ,/* 09 */ 9 618 ,/* 10-61 */ (52)-1 619 ,/* 62 (76octal) */ 62 620 ,/* 63 (77octal) */ 63 621 ); 622 end scan; 623 624 /* Variables for gfms_substructure_records_: */ 625 /* IDENTIFIER ATTRIBUTES */ 626 dcl addr builtin; 627 dcl addrel builtin; 628 dcl b36 bit(36)aligned based; 629 dcl bc fixed bin; 630 dcl cat_ptr ptr init(null()); 631 dcl cep ptr; 632 dcl code fixed bin(35); 633 dcl com_err_ entry() options(variable); 634 dcl divide builtin; 635 dcl e fixed bin; 636 dcl error_table_$end_of_info fixed bin(35) ext static; 637 dcl error_table_$long_record fixed bin(35) ext static; 638 dcl gfms_ascii_ entry(bit(*))returns(char(*)); 639 dcl gfms_date_ entry (bit(36) aligned) returns(char(8)); 640 dcl gfms_dump_description_tree_ entry; 641 dcl gfms_dump_rec_ entry (ptr,fixed bin); 642 dcl gfms_end_of_input_ entry (ptr, fixed bin(21), fixed bin(21)) returns(bit(1)); 643 dcl gfms_fail condition ext; 644 dcl gfms_tape_status_ entry (ptr) returns(bit(12)); 645 dcl hbound builtin; 646 dcl i fixed bin; 647 dcl iox_$read_record entry (ptr, ptr, fixed bin(21), fixed bin(21), fixed bin(35)); 648 dcl mod builtin; 649 dcl nbr fixed bin(21); 650 dcl null builtin; 651 dcl nw fixed bin; 652 dcl nwr fixed bin; 653 dcl rl fixed bin; 654 dcl rtrim builtin; 655 dcl size builtin; 656 dcl substr builtin; 657 dcl sub_space (3842)bit(36)aligned; 658 dcl tc fixed bin; 659 dcl unspec builtin; 660 661 662 dcl 1 ce aligned like gfms_catrec_0.entry based(cep); 663 664 dcl 1 parent_list (0:1020)aligned 665 , 3 cat_sector fixed bin(18)unsigned unal 666 , 3 parent_sector fixed bin(18)unsigned unal 667 ; 668 669 /* See DD14, Rev 1 (June 1976) SYSTEM TABLES 670* Page 16-26 SUBSTRUCTURE RECORDS (<=3842 words) 671**/ 672 dcl 1 sub aligned based(addr(sub_space)) 673 , 3 word0 674 , 4 block_serial_number fixed bin(18)unsigned unal 675 , 4 block_size fixed bin(18)unsigned unal 676 , 3 word1 677 , 4 record_size fixed bin(18)unsigned unal 678 , 4 eof_mark bit(18)unal 679 , 3 words2_3841 680 , 4 catalog_records (2:nw)bit(36) 681 ; 682 683 /* From DC26 ??? page 4-12 684* description of array of FD2VAR fields in 685* type 2 catalog record. 686**/ 687 dcl 1 FS2VAR aligned based(cep) 688 , 3 b0_1 bit(2)unal 689 , 3 defective bit(1)unal 690 , 3 number_llinks fixed bin(15)unsigned unal 691 , 3 starting_llink fixed bin(18)unsigned unal 692 ; 693 2 1 /* BEGIN INCLUDE FILE gfms_description_tree.incl.pl1 (Wardd Multics) 10/28/80 1222.2 mst Tue */ 2 2 dcl 1 description_tree aligned based(dtp) 2 3 2 4 , 3 start_list 2 5 , 4 cat_child (0:1020)fixed bin(18)unsigned 2 6 , 4 file_child (0:1020)fixed bin(18)unsigned 2 7 , 4 desc (0:1020)fixed bin(18)unsigned 2 8 2 9 , 3 n_cat fixed bin 2 10 , 3 cat (20000) 2 11 , 4 name bit(72) 2 12 , 4 ascii_name char(12)var 2 13 , 4 is_cat bit(1)unal 2 14 , 4 fill bit(17)unal 2 15 , 4 parent_sector fixed bin(18)unsigned unal 2 16 , 4 child_sector fixed bin(18)unsigned unal 2 17 , 4 child_link fixed bin(18)unsigned unal 2 18 2 19 , 3 n_desc fixed bin 2 20 , 3 description (19000) 2 21 , 4 link fixed bin(18)unsigned unal 2 22 , 4 sector fixed bin(18)unsigned unal 2 23 , 4 name bit(72) 2 24 , 4 attributes 2 25 , 5 max_size_llinks fixed bin(18)unsigned unal 2 26 , 5 mode bit(4)unal /* 1000 seq 0100 random 0010 ascii 0001 ids */ 2 27 , 5 not_in_use bit(14)unal 2 28 , 5 user_info 2 29 , 6 present bit(1)unal 2 30 , 6 value bit(35)unal 2 31 ; 2 32 2 33 /* END INCLUDE FILE gfms_description_tree.incl.pl1 */ 694 695 3 1 /* BEGIN INCLUDE FILE gfms_catrec_0.incl.pl1 (Planalp Multics) 08/11/78 1517.8 mst Fri */ 3 2 /* Modified: Mel Wilson December 1979 changing sector numbers to fixed bin(18)unsigned */ 3 3 3 4 /* 64 words. */ 3 5 dcl 1 gfms_catrec_0 aligned based (cat_ptr), 3 6 3 7 /* word 0 */ 3 8 2 type bit(6)unal, /* =0 in this case */ 3 9 2 smc_section_no fixed bin(5)unsigned unal, 3 10 2 userno fixed bin(7)unsigned unal, 3 11 2 dupl_sector_no fixed bin(18)unsigned unal, 3 12 3 13 2 sector_pointers, 3 14 3 15 /* word 1 */ 3 16 3 next_llink_sector_org fixed bin(18)unsigned unal, 3 17 3 next_llink_sector_dupl fixed bin(18)unsigned unal, 3 18 3 19 /* word 2 */ 3 20 3 prior_llink_sector_org fixed bin(18)unsigned unal, 3 21 3 prior_llink_sector_dupl fixed bin(18)unsigned unal, 3 22 3 23 /* word 3 */ 3 24 3 prior_cat_sector_org fixed bin(18)unsigned unal, 3 25 3 prior_cat_sector_dupl fixed bin(18)unsigned unal, 3 26 3 27 /* word 4 */ 3 28 3 cat_contin_sector_org fixed bin(18)unsigned unal, 3 29 3 cat_contin_sector_dupl fixed bin(18)unsigned unal, 3 30 3 31 /* word 5 */ 3 32 2 spec_perm_sector_org fixed bin(18)unsigned unal, 3 33 2 spec_perm_sector_dupl fixed bin(18)unsigned unal, 3 34 3 35 /* words 6-7 */ 3 36 2 catname bit(72), 3 37 3 38 /* words 8-9 */ 3 39 2 creator_name bit(72), 3 40 3 41 /* words 10-11 */ 3 42 2 password bit(72), /* first word may be -1, then second word is timed pw sector #'s */ 3 43 3 44 /* word 12 */ 3 45 2 create_date bit(36), 3 46 3 47 /* word 13 */ 3 48 2 modified_date bit(36), 3 49 3 50 /* word 14 */ 3 51 2 fms_junk bit(36), 3 52 3 53 /* word 15 */ 3 54 2 gen_perm, 3 55 3 perms bit(36), 3 56 3 57 /* words 16-17 */ 3 58 2 resv3 (2) fixed bin(35), /* reserved */ 3 59 3 60 /* words 18-62 (15*3=45 words) */ 3 61 2 entry (15), 3 62 3 name bit(72), 3 63 3 not_on_this_device bit(1)unal, /* if ON unal, rest of word has different meaning */ 3 64 3 entry_is_catalog bit(1)unal, 3 65 3 description_llink_dupl bit(16)unal, 3 66 3 description_sector_org fixed bin(18)unsigned unal, 3 67 3 68 /* word 63. */ 3 69 2 cksm bit(36); 3 70 3 71 /* END INCLUDE FILE gfms_catrec_0.incl.pl1 */ 696 697 4 1 /* BEGIN INCLUDE FILE gfms_catrec_1.incl.pl1 (Planalp Multics) 08/11/78 1517.9 mst Fri */ 4 2 /* Modified: Mel Wilson December 1979, Changed sector numbers to fixed bin(18)unsigned */ 4 3 4 4 dcl 1 gfms_catrec_1 aligned based (cat_ptr), 4 5 4 6 2 type bit(6)unal, /* =0 in this case */ 4 7 2 smc_section_no fixed bin(5)unsigned unal, 4 8 2 userno fixed bin(7)unsigned unal, 4 9 2 dupl_sector_no fixed bin(18)unsigned unal, 4 10 4 11 2 sector_pointers, 4 12 4 13 3 next_llink_sector_org fixed bin(18)unsigned unal, 4 14 3 next_llink_sector_dupl fixed bin(18)unsigned unal, 4 15 3 prior_llink_sector_org fixed bin(18)unsigned unal, 4 16 3 prior_llink_sector_dupl fixed bin(18)unsigned unal, 4 17 3 prior_cat_sector_org fixed bin(18)unsigned unal, 4 18 3 prior_cat_sector_dupl fixed bin(18)unsigned unal, 4 19 3 cat_contin_sector_org fixed bin(18)unsigned unal, 4 20 3 cat_contin_sector_dupl fixed bin(18)unsigned unal, 4 21 2 resv bit(36), 4 22 2 entry (19), 4 23 3 name bit(72), 4 24 3 not_on_this_device bit(1)unal, /* if ON, rest of word has different meaning */ 4 25 3 entry_is_catalog bit(1)unal, 4 26 3 description_llink_dupl bit(16)unal, 4 27 3 description_sector_org fixed bin(18)unsigned unal, 4 28 2 cksm bit(36); 4 29 4 30 /* END INCLUDE FILE gfms_catrec_1.incl.pl1 */ 698 699 5 1 /* BEGIN INCLUDE FILE gfms_catrec_2.incl.pl1 (Planalp Multics) 08/11/78 1517.9 mst Fri */ 5 2 /* Modified: Mel Wilson December 1979, changed secto fixed bin(18)unsigned */ 5 3 /* Modified: Dave Ward 10/07/80 attribute overlay structures. */ 5 4 5 5 dcl 1 gfms_catrec_2 aligned based (cat_ptr), 5 6 5 7 /* word 0 */ 5 8 2 type bit(6)unal, /* =2 or 42 in this case */ 5 9 2 smc_section_no fixed bin(5)unsigned unal, 5 10 2 userno fixed bin(7)unsigned unal, 5 11 2 dupl_sector_no fixed bin(18)unsigned unal, 5 12 5 13 2 sector_pointers, 5 14 5 15 /* word 1 */ 5 16 3 next_llink_sector_org fixed bin(18)unsigned unal, 5 17 3 next_llink_sector_dupl fixed bin(18)unsigned unal, 5 18 5 19 /* word 2 */ 5 20 3 prior_llink_sector_org fixed bin(18)unsigned unal, 5 21 3 prior_llink_sector_dupl fixed bin(18)unsigned unal, 5 22 5 23 /* word 3 */ 5 24 3 prior_cat_sector_org fixed bin(18)unsigned unal, 5 25 3 prior_cat_sector_dupl fixed bin(18)unsigned unal, 5 26 5 27 /* word 4 */ 5 28 3 fildesc_contin_sector_org fixed bin(18)unsigned unal, 5 29 3 fildesc_contin_sector_dupl fixed bin(18)unsigned unal, 5 30 5 31 /* word 5 */ 5 32 2 spec_perm_sector_org fixed bin(18)unsigned unal, 5 33 2 spec_perm_sector_dupl fixed bin(18)unsigned unal, 5 34 5 35 /* words 6-7 */ 5 36 2 filename bit(72), 5 37 5 38 /* words 8-9 */ 5 39 2 creator_name bit(72), 5 40 5 41 /* words 10-11 */ 5 42 2 password bit(72), /* first wd may be -1, in which case 2nd wd is timed pw info */ 5 43 5 44 /* word 12 */ 5 45 2 create_date bit(36), 5 46 5 47 /* word 13 */ 5 48 2 description_dlm bit(36), 5 49 5 50 /* word 14 */ 5 51 2 fms_junk bit(36), 5 52 5 53 /* word 15 */ 5 54 2 perm_catdup_seclock_maxsize, 5 55 3 general_permissions bit(12)unal, 5 56 3 reserved bit(04)unal, 5 57 3 catalog_duplication_requested bit(01)unal, 5 58 3 security_lock_set bit(01)unal, 5 59 3 maximum_file_size fixed bin(18)unsigned unal, /* 0 => unlimited. */ 5 60 5 61 /* words 16-17 */ 5 62 2 SMC_name bit(72), 5 63 5 64 /* word 18 */ 5 65 2 attr1 bit(36), 5 66 5 67 /* word 19 */ 5 68 2 attr2 bit(36), 5 69 5 70 /* word 20 */ 5 71 2 attr3 bit(36), 5 72 5 73 /* word 21 */ 5 74 2 attr4 bit(36), 5 75 5 76 /* word 22 */ 5 77 2 last_deallocated bit(36), 5 78 5 79 /* word 23 */ 5 80 2 last_allocation bit(36), 5 81 5 82 /* word 24 */ 5 83 2 vol_data, 5 84 3 vol_type bit(6)unal, 5 85 3 vol_ser_no_last_save bit(30)unal, 5 86 5 87 /* word 25 */ 5 88 2 attr_sector_org fixed bin(18)unsigned unal, 5 89 2 attr_sector_dupl fixed bin(18)unsigned unal, 5 90 5 91 /* word 26 */ 5 92 2 dupl_fildesc_sector_org fixed bin(18)unsigned unal, 5 93 2 dupl_fildesc_sector_dupl fixed bin(18)unsigned unal, 5 94 5 95 /* word 27 */ 5 96 2 monitor_fildesc_sector_orig fixed bin(18)unsigned unal, 5 97 2 monitor_fildesc_sector_dupl fixed bin(18)unsigned unal, 5 98 5 99 /* words 28-31 */ 5 100 2 busy_stuff (4)fixed bin(35), 5 101 5 102 /* words 32-35 */ 5 103 2 tss_busy_stuff (4)fixed bin(35), 5 104 5 105 /* words 36-61 */ 5 106 2 structured_info (26)bit(36), 5 107 5 108 /* word 62 */ 5 109 2 whatever bit(36), 5 110 5 111 /* word 63 */ 5 112 2 cksm bit(36); 5 113 5 114 /* From DC26 ???? page 4-11 5 115* Detail of word 18 (octal 22). 5 116**/ 5 117 dcl 1 FS2FU1 aligned based(addr(gfms_catrec_2.attr1)) 5 118 , 3 reserved1 bit(1)unal 5 119 , 3 random_file bit(1)unal 5 120 , 3 ASCII_file bit(1)unal 5 121 , 3 I_D_S_file bit(1)unal 5 122 , 3 max_size_in_llinks bit(1)unal 5 123 , 3 file_on_nonstructured_vol bit(1)unal 5 124 , 3 reserved2 bit(1)unal 5 125 , 3 attributes_present bit(1)unal 5 126 , 3 user_specified_info_present bit(1)unal 5 127 , 3 user_specified_device_class_of_orig bit(1)unal 5 128 , 3 concurrency fixed bin(2)unsigned unal /* 0=normal 1=rww 2=mw 3=concurrent */ 5 129 , 3 user_specifide_device_class_code bit(6)unal 5 130 , 3 number_allocations fixed bin(18)unsigned unal 5 131 ; 5 132 5 133 dcl 1 FS2USI aligned based(addr(gfms_catrec_2.attr2)) 5 134 , 3 file_written_to bit(01)unal 5 135 , 3 user_info_bits bit(35)unal 5 136 ; 5 137 5 138 /* END INCLUDE FILE gfms_catrec_2.incl.pl1 */ 700 701 6 1 /* BEGIN INCLUDE FILE gfms_ext.incl.pl1 (Wardd Multics) 10/07/80 2142.2 mst Tue */ 6 2 /* Modified by: S. C. Akers 02/08/82 Add gfms_ext$working_dir, 6 3* mapping_rule, 6 4* umc_name 6 5* Modified Ron Barstad 83-06-03 attach_desc from 40 to 80 char 6 6**/ 6 7 6 8 dcl 1 gfms_ext$print_routines aligned ext 6 9 , 3 ioa entry variable options(variable) 6 10 , 3 ioa_nnl entry variable options(variable) 6 11 ; 6 12 6 13 dcl 1 gfms_ext$temp_segs aligned ext 6 14 , 3 dtp ptr 6 15 , 3 nlp ptr 6 16 , 3 inp ptr 6 17 ; 6 18 6 19 dcl 1 gfms_ext$tape_file aligned ext 6 20 , 3 cbp ptr 6 21 , 3 attach_description char(80)unal 6 22 , 3 density 6 23 , 4 ftd fixed bin /* First tape density to attempt. */ 6 24 , 4 ltd fixed bin /* Last tape density to attempt. */ 6 25 , 3 tape_reel_information 6 26 , 4 reel_serial_num char(6) 6 27 , 4 file_serial_num char(6) 6 28 , 4 reel_sequence_num char(6) 6 29 ; 6 30 6 31 dcl 1 gfms_ext$options aligned ext 6 32 , 3 close bit(1)unal /* perform iox close. */ 6 33 , 3 detach bit(1)unal /* perform iox detach. */ 6 34 , 3 dump bit(1)unal /* dump tape records/information. */ 6 35 , 3 gf bit(1)unal /* provide gtss file attributes. */ 6 36 , 3 prfn bit(1)unal /* print file names. */ 6 37 , 3 scan_ss bit(1)unal /* scan substructure, display, quit. */ 6 38 , 3 tll bit(1)unal /* print totals of llinks. */ 6 39 , 3 unload bit(1)unal /* unload files. */ 6 40 , 3 NOT_IN_USE bit(28)unal 6 41 ; 6 42 6 43 dcl gfms_ext$working_dir char (168) var ext static; /* Where to restore the files. 6 44* It may be the user's working 6 45* directory, or the UMC or SMC directory. */ 6 46 6 47 dcl gfms_ext$mapping_rule char(3) external static; 6 48 6 49 dcl gfms_ext$umc_name char(12) external static; 6 50 6 51 /* END INCLUDE FILE gfms_ext.incl.pl1 */ 702 703 end gfms_substructure_records_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/20/89 1351.1 gfms_substructure_records_.pl1 >spec>install>1069>gfms_substructure_records_.pl1 418 1 03/27/82 0424.8 gfms_EOF_record.incl.pl1 >ldd>include>gfms_EOF_record.incl.pl1 694 2 03/27/82 0424.8 gfms_description_tree.incl.pl1 >ldd>include>gfms_description_tree.incl.pl1 696 3 03/23/82 1506.5 gfms_catrec_0.incl.pl1 >ldd>include>gfms_catrec_0.incl.pl1 698 4 03/23/82 1506.5 gfms_catrec_1.incl.pl1 >ldd>include>gfms_catrec_1.incl.pl1 700 5 03/23/82 1506.6 gfms_catrec_2.incl.pl1 >ldd>include>gfms_catrec_2.incl.pl1 702 6 10/24/83 1642.4 gfms_ext.incl.pl1 >ldd>include>gfms_ext.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. ASCII_file 0(02) based bit(1) level 2 packed packed unaligned dcl 5-117 ref 184 192 CTYPE 000101 constant fixed bin(17,0) initial array dcl 607 set ref 501 571* EOF_number 2 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 1-6 ref 395 EOF_record based structure level 1 dcl 1-6 FS2FU1 based structure level 1 dcl 5-117 FS2USI based structure level 1 dcl 5-133 FS2VAR based structure level 1 dcl 687 I_D_S_file 0(03) based bit(1) level 2 packed packed unaligned dcl 5-117 ref 188 192 SMC_name 20 based bit(72) level 2 dcl 5-5 ref 119 137 addr builtin function dcl 626 ref 153 159 159 170 171 172 173 178 180 184 188 192 192 192 197 201 256 256 256 279 279 330 330 337 337 393 394 527 527 543 543 549 549 addrel builtin function dcl 627 ref 81 305 497 attach_description 2 000040 external static char(80) level 2 packed packed unaligned dcl 6-19 set ref 354* attr1 22 based bit(36) level 2 dcl 5-5 set ref 153 159 170 171 180 184 188 192 192 192 197 attr2 23 based bit(36) level 2 dcl 5-5 set ref 159 172 173 attributes 476374 based structure array level 3 dcl 2-2 b36 based bit(36) dcl 628 ref 202 203 bc 000100 automatic fixed bin(17,0) dcl 629 set ref 34* 255* 255 256* block_serial_number based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 672 set ref 256* block_size 0(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 672 set ref 256* bsn based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 1-6 set ref 408* cat 5770 based structure array level 2 dcl 2-2 cat_common based structure level 1 dcl 600 ref 497 594 cat_contin_sector_org 4 based fixed bin(18,0) level 3 in structure "gfms_catrec_1" packed packed unsigned unaligned dcl 4-4 in procedure "gfms_substructure_records_" set ref 535* cat_contin_sector_org 4 based fixed bin(18,0) level 3 in structure "gfms_catrec_0" packed packed unsigned unaligned dcl 3-5 in procedure "gfms_substructure_records_" set ref 514* cat_ptr 000102 automatic pointer initial dcl 630 set ref 111 112 119 119 137 137 137 137 137 153 153 155 157 159 159 159 170 171 172 173 180 184 188 192 192 192 197 200 201 266 267 267 495* 497* 497 497 500 510* 514 514 514 514 514 514 514 514 514 526 526 527 527 527 527 527 535 535 535 542 542 543 543 543 543 543 543 549 549 549 549 581 581 594 630* cat_sector 007526 automatic fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 664 set ref 234 235* 461 462* catalog_records 2 based bit(36) array level 3 dcl 672 set ref 279 catname 6 based bit(72) level 2 dcl 3-5 ref 514 cbp 000040 external static pointer level 2 dcl 6-19 set ref 330* 354* 354* ce based structure level 1 dcl 662 set ref 81 305 cel parameter fixed bin(17,0) dcl 53 in procedure "cat_0_1_entry" ref 47 58 81 cel parameter fixed bin(17,0) dcl 298 in procedure "force_parent_sector" ref 283 302 305 cep 000104 automatic pointer dcl 631 set ref 57* 59 59 61 62 63 64 73 81* 81 81 201* 202 203 203 203 203 301* 303 303 305* 305 305 code 000106 automatic fixed bin(35,0) dcl 632 set ref 330* 337 337 352 354* com_err_ 000010 constant entry external dcl 633 ref 103 119 267 344 354 373 383 395 471 504 cp parameter pointer dcl 254 set ref 249 279* create_date 14 based bit(36) level 2 in structure "gfms_catrec_0" dcl 3-5 in procedure "gfms_substructure_records_" set ref 514* 514* create_date 14 based bit(36) level 2 in structure "gfms_catrec_2" dcl 5-5 in procedure "gfms_substructure_records_" set ref 137* 137* creator_name 10 based bit(72) level 2 in structure "gfms_catrec_0" dcl 3-5 in procedure "gfms_substructure_records_" ref 514 creator_name 10 based bit(72) level 2 in structure "gfms_catrec_2" dcl 5-5 in procedure "gfms_substructure_records_" ref 137 cs 011532 automatic fixed bin(18,0) unsigned dcl 85 in procedure "cat_0_1_entry" set ref 63* 64* 73* cs parameter fixed bin(18,0) packed unsigned unaligned dcl 456 in procedure "save_parent_sector" set ref 449 459 462 463* defective 0(02) based bit(1) level 2 packed packed unaligned dcl 687 set ref 203* desc 3772 based fixed bin(18,0) array level 3 unsigned dcl 2-2 set ref 115 116 134 135* description 476371 based structure array level 2 dcl 2-2 set ref 102 103 103 description_sector_org 2(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 662 ref 63 description_tree based structure level 1 dcl 2-2 divide builtin function dcl 634 ref 380 dtp 000036 external static pointer level 2 dcl 6-13 ref 101 101 102 102 103 103 111 111 112 112 115 116 118 130 134 134 134 135 135 153 153 155 155 170 170 172 172 175 175 178 178 438 439 439 dupl_sector_no 0(18) based fixed bin(18,0) level 2 in structure "gfms_catrec_0" packed packed unsigned unaligned dcl 3-5 in procedure "gfms_substructure_records_" set ref 514* 526* 526* 527* dupl_sector_no 0(18) based fixed bin(18,0) level 2 in structure "gfms_catrec_2" packed packed unsigned unaligned dcl 5-5 in procedure "gfms_substructure_records_" ref 112 dupl_sector_no 0(18) based fixed bin(18,0) level 2 in structure "gfms_catrec_1" packed packed unsigned unaligned dcl 4-4 in procedure "gfms_substructure_records_" set ref 535* 542* 543* 581* e 000107 automatic fixed bin(17,0) dcl 635 set ref 34* 535* 580* 580 581* 591* entry 6 based structure array level 2 in structure "gfms_catrec_1" dcl 4-4 in procedure "gfms_substructure_records_" set ref 543 543 543 543 549 549 549 549 entry 22 based structure array level 2 in structure "gfms_catrec_0" dcl 3-5 in procedure "gfms_substructure_records_" set ref 527 527 527 527 entry_is_catalog 2(01) based bit(1) level 2 packed packed unaligned dcl 662 ref 62 eof_mark 1(18) based bit(18) level 3 packed packed unaligned dcl 672 ref 393 ep parameter pointer dcl 299 in procedure "force_parent_sector" ref 283 301 ep parameter pointer dcl 54 in procedure "cat_0_1_entry" ref 47 57 error_table_$end_of_info 000012 external static fixed bin(35,0) dcl 636 ref 337 error_table_$long_record 000014 external static fixed bin(35,0) dcl 637 ref 352 file_on_nonstructured_vol 0(05) based bit(1) level 2 packed packed unaligned dcl 5-117 ref 197 file_written_to based bit(1) level 2 packed packed unaligned dcl 5-133 set ref 159* filename 6 based bit(72) level 2 dcl 5-5 ref 111 119 137 gfms_ascii_ 000016 constant entry external dcl 638 ref 61 119 119 137 137 137 514 514 gfms_catrec_0 based structure level 1 dcl 3-5 set ref 266 267 267 gfms_catrec_1 based structure level 1 dcl 4-4 gfms_catrec_2 based structure level 1 dcl 5-5 gfms_date_ 000020 constant entry external dcl 639 ref 137 137 514 514 514 514 gfms_dump_description_tree_ 000022 constant entry external dcl 640 ref 42 gfms_dump_rec_ 000024 constant entry external dcl 641 ref 510 gfms_end_of_input_ 000026 constant entry external dcl 642 ref 337 gfms_ext$options 000042 external static structure level 1 dcl 6-31 gfms_ext$print_routines 000034 external static structure level 1 dcl 6-8 gfms_ext$tape_file 000040 external static structure level 1 dcl 6-19 gfms_ext$temp_segs 000036 external static structure level 1 dcl 6-13 gfms_fail 000110 stack reference condition dcl 643 ref 43 109 275 349 368 478 gfms_hash_cat_ 000044 constant entry external dcl 86 ref 73 gfms_tape_status_ 000030 constant entry external dcl 644 ref 354 354 hbound builtin function dcl 645 ref 102 103 103 115 200 232 233 434 459 460 471 471 527 527 543 543 549 549 i 000116 automatic fixed bin(17,0) dcl 646 in procedure "gfms_substructure_records_" set ref 408* i 011533 automatic fixed bin(17,0) dcl 87 in procedure "cat_0_1_entry" set ref 58* 64* 81* i 011550 automatic fixed bin(17,0) dcl 214 in procedure "cat_2_entry" set ref 116* 117 118 130* 130 200* 201* i 011625 automatic fixed bin(17,0) dcl 319 in procedure "force_parent_sector" set ref 302* 305* i 011654 automatic fixed bin(17,0) dcl 430 in procedure "reunite_orphan" set ref 434* 435 435* 438* 439 439* ic 011534 automatic bit(1) packed unaligned dcl 88 set ref 62* 64* 73* ioa 000034 external static entry variable level 2 dcl 6-8 ref 33 64 99 137 182 186 190 194 197 203 256 313 408 443 514 535 556 571 581 ioa_nnl 4 000034 external static entry variable level 2 dcl 6-8 ref 150 157 159 173 iox_$read_record 000032 constant entry external dcl 647 ref 330 j 011572 automatic fixed bin(18,0) unsigned dcl 244 in procedure "find_parent_sector" set ref 233* 234 235 236* j 011664 automatic fixed bin(18,0) unsigned dcl 480 in procedure "save_parent_sector" set ref 460* 461 462 463 463 465* k 011573 automatic fixed bin(18,0) unsigned dcl 245 in procedure "find_parent_sector" set ref 232* 233 233 k 011551 automatic fixed bin(17,0) dcl 215 in procedure "cat_2_entry" set ref 115* 116 134 135 k 011665 automatic fixed bin(18,0) unsigned dcl 481 in procedure "save_parent_sector" set ref 459* 460 460 k64 1 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 1-6 ref 395 k65 0(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 1-6 ref 395 link 476371 based fixed bin(18,0) array level 3 packed packed unsigned unaligned dcl 2-2 set ref 130 134* max_size_in_llinks 0(04) based bit(1) level 2 packed packed unaligned dcl 5-117 set ref 153 159* max_size_llinks 476374 based fixed bin(18,0) array level 4 packed packed unsigned unaligned dcl 2-2 set ref 153* 155* maximum_file_size 17(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 5-5 set ref 153 155 157 159* mod builtin function dcl 648 ref 115 232 266 373 459 mode based bit(4) packed unaligned dcl 216 in procedure "cat_2_entry" set ref 179* 181* 181 185* 185 189* 189 193* 193 mode 476374(18) based bit(4) array level 4 in structure "description_tree" packed packed unaligned dcl 2-2 in procedure "gfms_substructure_records_" set ref 178 modep 011552 automatic pointer dcl 217 set ref 178* 179 181 181 185 185 189 189 193 193 modified_date 15 based bit(36) level 2 dcl 3-5 set ref 514* 514* n 011535 automatic varying char(12) dcl 89 set ref 61* 64* 73* n_cat 5767 based fixed bin(17,0) level 2 dcl 2-2 ref 438 n_desc 476370 based fixed bin(17,0) level 2 dcl 2-2 set ref 101* 101 102 111 112 134 135 153 155 170 172 175 178 name based bit(72) level 2 in structure "ce" dcl 662 in procedure "gfms_substructure_records_" set ref 59 59 61 73* 303 303 name 476372 based bit(72) array level 3 in structure "description_tree" dcl 2-2 in procedure "gfms_substructure_records_" set ref 111* nbr 000117 automatic fixed bin(21,0) dcl 649 set ref 330* 337* 354* 373 373* 380 383* not_on_this_device 2 based bit(1) level 2 packed packed unaligned dcl 662 set ref 64* null builtin function dcl 650 ref 630 number_llinks 0(03) based fixed bin(15,0) level 2 packed packed unsigned unaligned dcl 687 set ref 203* nw 000120 automatic fixed bin(17,0) dcl 651 set ref 265 381* 382 nwr 000121 automatic fixed bin(17,0) dcl 652 set ref 380* 381 p 011636 automatic pointer dcl 417 set ref 394* 395 395 395 395 395 395 395 395 395 395 395 408 p_sec 011706 automatic fixed bin(18,0) packed unsigned unaligned dcl 597 set ref 542* 543 543* 549* parent_list 007526 automatic structure array level 1 dcl 664 set ref 39* 232 233 434 459 460 471 471 parent_sector 5776(18) based fixed bin(18,0) array level 3 in structure "description_tree" packed packed unsigned unaligned dcl 2-2 in procedure "gfms_substructure_records_" set ref 439 439* parent_sector 0(18) 007526 automatic fixed bin(18,0) array level 2 in structure "parent_list" packed packed unsigned unaligned dcl 664 in procedure "gfms_substructure_records_" set ref 236 435 435* 463 463 465* perm_catdup_seclock_maxsize 17 based structure level 2 dcl 5-5 pr parameter fixed bin(18,0) packed unsigned unaligned dcl 296 in procedure "force_parent_sector" set ref 283 310* 310* 311* 313* pr parameter fixed bin(18,0) packed unsigned unaligned dcl 229 in procedure "find_parent_sector" ref 221 232 234 present 476375 based bit(1) array level 5 packed packed unaligned dcl 2-2 set ref 170* prior_cat_sector_org 3 based fixed bin(18,0) level 3 in structure "gfms_catrec_0" packed packed unsigned unaligned dcl 3-5 in procedure "gfms_substructure_records_" set ref 514* prior_cat_sector_org 3 based fixed bin(18,0) level 3 in structure "gfms_catrec_1" packed packed unsigned unaligned dcl 4-4 in procedure "gfms_substructure_records_" set ref 535* 542* 543* 581* ps 011574 automatic fixed bin(18,0) unsigned dcl 246 in procedure "find_parent_sector" set ref 236* 237 238 ps parameter fixed bin(18,0) packed unsigned unaligned dcl 55 in procedure "cat_0_1_entry" set ref 47 56 73* ps parameter fixed bin(18,0) packed unsigned unaligned dcl 457 in procedure "save_parent_sector" set ref 449 463 463* 465 ps 011624 automatic fixed bin(18,0) unsigned dcl 318 in procedure "force_parent_sector" set ref 311* 313* 316 random_file 0(01) based bit(1) level 2 packed packed unaligned dcl 5-117 ref 180 192 record_size 1 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 672 set ref 256* rl 000122 automatic fixed bin(17,0) dcl 653 set ref 34* 265* 266 267* 493 594* 594 rtrim builtin function dcl 654 ref 61 s 011554 automatic fixed bin(18,0) unsigned dcl 218 set ref 112* 115 118 119* 150* scan_ss 0(05) 000042 external static bit(1) level 2 packed packed unaligned dcl 6-31 ref 41 sector 476371(18) based fixed bin(18,0) array level 3 packed packed unsigned unaligned dcl 2-2 set ref 112* 118 sector_pointers 1 based structure level 2 in structure "gfms_catrec_1" dcl 4-4 in procedure "gfms_substructure_records_" sector_pointers 1 based structure level 2 in structure "gfms_catrec_0" dcl 3-5 in procedure "gfms_substructure_records_" size builtin function dcl 655 ref 81 266 267 267 305 330 337 354 497 594 sn parameter fixed bin(18,0) packed unsigned unaligned dcl 297 in procedure "force_parent_sector" set ref 283 311* 313* sn parameter fixed bin(18,0) packed unsigned unaligned dcl 230 in procedure "find_parent_sector" set ref 221 237* start_list based structure level 2 dcl 2-2 starting_llink 0(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 687 set ref 203* step_parent parameter fixed bin(18,0) packed unsigned unaligned dcl 427 set ref 421 432 435 439 443* structured_info 44 based bit(36) array level 2 dcl 5-5 set ref 200 201 sub based structure level 1 dcl 672 sub_space 000123 automatic bit(36) array dcl 657 set ref 256 256 256 279 330 330 330 337 337 337 354 393 394 substr builtin function dcl 656 ref 203 t 011707 automatic fixed bin(17,0) dcl 598 set ref 500* 501 504* 571* 571 tc 007525 automatic fixed bin(17,0) dcl 658 set ref 34* 99* 499* 499 514* 535* 556* 571* 581* true_parent parameter fixed bin(18,0) packed unsigned unaligned dcl 428 set ref 421 432 435 439 443* type based fixed bin(6,0) level 3 packed packed unsigned unaligned dcl 600 ref 500 unspec builtin function dcl 659 set ref 39* 395 395 395 395 395 395 395 395 user_info 476375 based structure array level 4 dcl 2-2 user_info_bits 0(01) based bit(35) level 2 packed packed unaligned dcl 5-133 ref 172 173 user_specified_info_present 0(08) based bit(1) level 2 packed packed unaligned dcl 5-117 ref 170 171 value 476375(01) based bit(35) array level 5 packed packed unaligned dcl 2-2 set ref 172* 175* word0 based structure level 2 in structure "EOF_record" dcl 1-6 in procedure "get_rec" set ref 395 395 word0 based structure level 2 in structure "sub" dcl 672 in procedure "gfms_substructure_records_" word0 based structure level 2 in structure "cat_common" dcl 600 in procedure "scan" word1 1 based structure level 2 in structure "sub" dcl 672 in procedure "gfms_substructure_records_" word1 1 based structure level 2 in structure "EOF_record" dcl 1-6 in procedure "get_rec" ref 395 395 word2 2 based structure level 2 dcl 1-6 ref 395 395 word3 3 based fixed bin(35,0) level 2 dcl 1-6 ref 395 395 words2_3841 2 based structure level 2 dcl 672 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. gfms_ext$mapping_rule external static char(3) packed unaligned dcl 6-47 gfms_ext$umc_name external static char(12) packed unaligned dcl 6-49 gfms_ext$working_dir external static varying char(168) dcl 6-43 NAMES DECLARED BY EXPLICIT CONTEXT. cat 000000 constant label array(-1:63) dcl 503 ref 501 cat_0_1_entry 001221 constant entry internal dcl 47 ref 527 549 cat_2_entry 001423 constant entry internal dcl 92 ref 557 cont 003323 constant label dcl 372 in procedure "get_rec" set ref 337 cont 004662 constant label dcl 590 in procedure "scan" ref 511 532 553 558 577 cont 001410 constant label dcl 80 in procedure "cat_0_1_entry" ref 59 cont_1 004664 constant label dcl 592 ref 588 fail 002772 constant label dcl 274 in procedure "first_rec" fail 003317 constant label dcl 367 in procedure "get_rec" ref 389 find_parent_sector 002552 constant entry internal dcl 221 ref 311 542 first_rec 002663 constant entry internal dcl 249 ref 495 force 003041 constant label dcl 310 set ref 303 force_parent_sector 003002 constant entry internal dcl 283 ref 543 get_rec 003121 constant entry internal dcl 323 ref 494 gfms_substructure_records_ 001153 constant entry external dcl 18 more 004115 constant label dcl 492 ref 595 reunite_orphan 003572 constant entry internal dcl 421 ref 463 save_parent_sector 003741 constant entry internal dcl 449 ref 237 310 526 scan 004114 constant entry internal dcl 485 ref 40 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5120 5166 4713 5130 Length 5544 4713 46 342 205 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gfms_substructure_records_ 5682 external procedure is an external procedure. cat_0_1_entry internal procedure shares stack frame of external procedure gfms_substructure_records_. cat_2_entry internal procedure shares stack frame of external procedure gfms_substructure_records_. find_parent_sector internal procedure shares stack frame of external procedure gfms_substructure_records_. first_rec internal procedure shares stack frame of external procedure gfms_substructure_records_. force_parent_sector internal procedure shares stack frame of external procedure gfms_substructure_records_. get_rec internal procedure shares stack frame of external procedure gfms_substructure_records_. reunite_orphan internal procedure shares stack frame of external procedure gfms_substructure_records_. save_parent_sector internal procedure shares stack frame of external procedure gfms_substructure_records_. scan internal procedure shares stack frame of external procedure gfms_substructure_records_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gfms_substructure_records_ 000100 bc gfms_substructure_records_ 000102 cat_ptr gfms_substructure_records_ 000104 cep gfms_substructure_records_ 000106 code gfms_substructure_records_ 000107 e gfms_substructure_records_ 000116 i gfms_substructure_records_ 000117 nbr gfms_substructure_records_ 000120 nw gfms_substructure_records_ 000121 nwr gfms_substructure_records_ 000122 rl gfms_substructure_records_ 000123 sub_space gfms_substructure_records_ 007525 tc gfms_substructure_records_ 007526 parent_list gfms_substructure_records_ 011532 cs cat_0_1_entry 011533 i cat_0_1_entry 011534 ic cat_0_1_entry 011535 n cat_0_1_entry 011550 i cat_2_entry 011551 k cat_2_entry 011552 modep cat_2_entry 011554 s cat_2_entry 011572 j find_parent_sector 011573 k find_parent_sector 011574 ps find_parent_sector 011624 ps force_parent_sector 011625 i force_parent_sector 011636 p get_rec 011654 i reunite_orphan 011664 j save_parent_sector 011665 k save_parent_sector 011706 p_sec scan 011707 t scan THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ent_var_desc call_ext_out_desc call_ext_out return_mac mdfx1 signal_op shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ gfms_ascii_ gfms_date_ gfms_dump_description_tree_ gfms_dump_rec_ gfms_end_of_input_ gfms_hash_cat_ gfms_tape_status_ iox_$read_record THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$end_of_info error_table_$long_record gfms_ext$options gfms_ext$print_routines gfms_ext$tape_file gfms_ext$temp_segs LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 001152 630 001160 33 001162 34 001175 39 001201 40 001204 41 001205 42 001211 43 001215 45 001220 47 001221 56 001223 57 001233 58 001236 59 001245 61 001254 62 001320 63 001326 64 001331 73 001370 80 001410 81 001411 83 001420 84 001422 92 001423 99 001424 101 001444 102 001451 103 001454 109 001511 111 001514 112 001532 115 001537 116 001545 117 001547 118 001552 119 001565 128 001672 130 001674 131 001677 134 001700 135 001716 137 001720 150 002050 153 002073 155 002116 157 002137 159 002157 170 002212 171 002227 172 002233 173 002237 174 002261 175 002262 178 002264 179 002277 180 002302 181 002306 182 002317 184 002331 185 002335 186 002347 188 002362 189 002366 190 002400 192 002413 193 002420 194 002432 197 002447 200 002472 201 002477 202 002502 203 002505 210 002547 212 002551 221 002552 232 002554 233 002567 234 002575 235 002614 236 002617 237 002622 238 002634 240 002640 242 002660 249 002663 255 002665 256 002666 265 002722 266 002725 267 002730 274 002772 275 002773 279 002776 280 003001 283 003002 301 003004 302 003007 303 003017 305 003026 307 003034 308 003036 310 003041 311 003052 313 003065 316 003115 323 003121 330 003123 337 003147 344 003177 349 003227 350 003232 352 003233 354 003235 367 003317 368 003320 372 003323 373 003324 380 003364 381 003367 382 003371 383 003373 389 003427 393 003430 394 003434 395 003436 408 003532 413 003556 415 003564 421 003572 432 003574 434 003614 435 003621 437 003645 438 003647 439 003661 441 003712 443 003714 446 003740 449 003741 459 003743 460 003756 461 003765 462 003772 463 004001 465 004027 466 004032 468 004033 471 004052 478 004110 482 004113 485 004114 492 004115 493 004116 494 004121 495 004127 496 004131 497 004132 499 004135 500 004136 501 004141 503 004143 504 004144 510 004200 511 004213 513 004214 514 004215 526 004357 527 004373 532 004414 534 004415 535 004416 542 004456 543 004476 549 004532 553 004541 555 004542 556 004543 557 004563 558 004564 560 004565 562 004566 564 004567 566 004570 568 004571 570 004572 571 004573 577 004621 579 004622 580 004623 581 004624 588 004661 590 004662 591 004663 592 004664 594 004665 595 004667 ----------------------------------------------------------- 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