COMPILATION LISTING OF SEGMENT gfms_hash_cat_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/10/84 1208.4 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 gfms_hash_cat_: proc (b_name, a_name, ic, ps, cs); 7 8 /* Store the catalog entry in the description tree. 9* Entry is a catalog (ic="1"b) or a file (ic="0"b). 10* Sector number of parent is "ps" and of child is "cs". 11* The name of the entry is BCD "b_name" and equivently 12* ASCII "a_name". 13* 14* Author: Dave Ward 11/08/80 15**/ 16 dcl b_name bit(72)aligned parm; 17 dcl a_name char(12)var parm; 18 dcl ic bit(1)parm; 19 dcl ps fixed bin(18)unsigned unal parm; 20 dcl cs fixed bin(18)unsigned parm; 21 22 /* Record entry name in cat array. */ 23 n_cat = n_cat+1; 24 if n_cat > hbound (cat, 1) then do; 25 call com_err_ ( 26 0 27 , "gfms_hash_cat_" 28 , "Exhausted ^i entries of cat table." 29 , hbound (cat, 1) 30 ); 31 signal cond (gfms_fail); 32 end; 33 cat (n_cat).name = b_name; /* entry name BCD. */ 34 cat (n_cat).ascii_name = a_name; /* entry name ASCII. */ 35 cat (n_cat).is_cat = ic; /* catalog ("1"b) or file ("0"b) entry. */ 36 cat (n_cat).parent_sector = ps; /* sector of my parent. */ 37 cat (n_cat).child_sector = cs; /* sector of my child (subcatalog or file description). */ 38 39 /* Hash child sector number into one of two lists 40* according to whether this is a catalog entry or 41* a file entry. 42**/ 43 if ic then /* entry is a catalog. */ 44 slp = addr (start_list.cat_child); 45 else /* entry is a file. */ 46 slp = addr (start_list.file_child); 47 k = mod (cs, hbound (slp -> start_list, 1)+1); 48 j = slp -> start_list (k); 49 do while (j>0); /* Assure name not currently hashed. */ 50 if cat (j).child_sector = cs then do; 51 call com_err_ ( 52 0 53 , "gfms_hash_cat_" 54 , "BUG, multiple occurance of ""^a"" (sector ^6i ^6.3b oct)" 55 , a_name 56 , cs 57 , unspec (cs) 58 ); 59 return; 60 end; 61 j = cat (j).child_link; 62 end; 63 64 /* New name to enter in the hashed list. */ 65 cat (n_cat).child_link = slp -> start_list (k); /* Link new name to previous hash entry. */ 66 slp -> start_list (k) = n_cat; /* Link this name as the first in hash list. */ 67 return; 68 69 /* Variables for gfms_hash_cat_: */ 70 /* IDENTIFIER ATTRIBUTES */ 71 dcl gfms_fail condition ext; 72 dcl com_err_ entry() options(variable); 73 dcl mod builtin; 74 dcl hbound builtin; 75 dcl addr builtin; 76 dcl j fixed bin; 77 dcl k fixed bin; 78 dcl slp ptr; 79 dcl start_list (0:1020)fixed bin(18)unsigned based; 80 1 1 /* BEGIN INCLUDE FILE gfms_description_tree.incl.pl1 (Wardd Multics) 10/28/80 1222.2 mst Tue */ 1 2 dcl 1 description_tree aligned based(dtp) 1 3 1 4 , 3 start_list 1 5 , 4 cat_child (0:1020)fixed bin(18)unsigned 1 6 , 4 file_child (0:1020)fixed bin(18)unsigned 1 7 , 4 desc (0:1020)fixed bin(18)unsigned 1 8 1 9 , 3 n_cat fixed bin 1 10 , 3 cat (20000) 1 11 , 4 name bit(72) 1 12 , 4 ascii_name char(12)var 1 13 , 4 is_cat bit(1)unal 1 14 , 4 fill bit(17)unal 1 15 , 4 parent_sector fixed bin(18)unsigned unal 1 16 , 4 child_sector fixed bin(18)unsigned unal 1 17 , 4 child_link fixed bin(18)unsigned unal 1 18 1 19 , 3 n_desc fixed bin 1 20 , 3 description (19000) 1 21 , 4 link fixed bin(18)unsigned unal 1 22 , 4 sector fixed bin(18)unsigned unal 1 23 , 4 name bit(72) 1 24 , 4 attributes 1 25 , 5 max_size_llinks fixed bin(18)unsigned unal 1 26 , 5 mode bit(4)unal /* 1000 seq 0100 random 0010 ascii 0001 ids */ 1 27 , 5 not_in_use bit(14)unal 1 28 , 5 user_info 1 29 , 6 present bit(1)unal 1 30 , 6 value bit(35)unal 1 31 ; 1 32 1 33 /* END INCLUDE FILE gfms_description_tree.incl.pl1 */ 81 82 2 1 /* BEGIN INCLUDE FILE gfms_ext.incl.pl1 (Wardd Multics) 10/07/80 2142.2 mst Tue */ 2 2 /* Modified by: S. C. Akers 02/08/82 Add gfms_ext$working_dir, 2 3* mapping_rule, 2 4* umc_name 2 5* Modified Ron Barstad 83-06-03 attach_desc from 40 to 80 char 2 6**/ 2 7 2 8 dcl 1 gfms_ext$print_routines aligned ext 2 9 , 3 ioa entry variable options(variable) 2 10 , 3 ioa_nnl entry variable options(variable) 2 11 ; 2 12 2 13 dcl 1 gfms_ext$temp_segs aligned ext 2 14 , 3 dtp ptr 2 15 , 3 nlp ptr 2 16 , 3 inp ptr 2 17 ; 2 18 2 19 dcl 1 gfms_ext$tape_file aligned ext 2 20 , 3 cbp ptr 2 21 , 3 attach_description char(80)unal 2 22 , 3 density 2 23 , 4 ftd fixed bin /* First tape density to attempt. */ 2 24 , 4 ltd fixed bin /* Last tape density to attempt. */ 2 25 , 3 tape_reel_information 2 26 , 4 reel_serial_num char(6) 2 27 , 4 file_serial_num char(6) 2 28 , 4 reel_sequence_num char(6) 2 29 ; 2 30 2 31 dcl 1 gfms_ext$options aligned ext 2 32 , 3 close bit(1)unal /* perform iox close. */ 2 33 , 3 detach bit(1)unal /* perform iox detach. */ 2 34 , 3 dump bit(1)unal /* dump tape records/information. */ 2 35 , 3 gf bit(1)unal /* provide gtss file attributes. */ 2 36 , 3 prfn bit(1)unal /* print file names. */ 2 37 , 3 scan_ss bit(1)unal /* scan substructure, display, quit. */ 2 38 , 3 tll bit(1)unal /* print totals of llinks. */ 2 39 , 3 unload bit(1)unal /* unload files. */ 2 40 , 3 NOT_IN_USE bit(28)unal 2 41 ; 2 42 2 43 dcl gfms_ext$working_dir char (168) var ext static; /* Where to restore the files. 2 44* It may be the user's working 2 45* directory, or the UMC or SMC directory. */ 2 46 2 47 dcl gfms_ext$mapping_rule char(3) external static; 2 48 2 49 dcl gfms_ext$umc_name char(12) external static; 2 50 2 51 /* END INCLUDE FILE gfms_ext.incl.pl1 */ 83 84 end gfms_hash_cat_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/10/84 1041.9 gfms_hash_cat_.pl1 >spec>on>7105>gfms_hash_cat_.pl1 81 1 03/27/82 0424.8 gfms_description_tree.incl.pl1 >ldd>include>gfms_description_tree.incl.pl1 83 2 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. a_name parameter varying char(12) dcl 17 set ref 6 34 51* addr builtin function dcl 75 ref 43 45 ascii_name 5772 based varying char(12) array level 3 dcl 1-2 set ref 34* b_name parameter bit(72) dcl 16 ref 6 33 cat 5770 based structure array level 2 dcl 1-2 set ref 24 25 25 cat_child based fixed bin(18,0) array level 3 unsigned dcl 1-2 set ref 43 child_link 5777(18) based fixed bin(18,0) array level 3 packed unsigned unaligned dcl 1-2 set ref 61 65* child_sector 5777 based fixed bin(18,0) array level 3 packed unsigned unaligned dcl 1-2 set ref 37* 50 com_err_ 000010 constant entry external dcl 72 ref 25 51 cs parameter fixed bin(18,0) unsigned dcl 20 set ref 6 37 47 50 51* 51 51 description_tree based structure level 1 dcl 1-2 dtp 000012 external static pointer level 2 dcl 2-13 ref 23 23 24 24 25 25 33 33 34 34 35 35 36 36 37 37 43 45 50 61 65 65 66 file_child 1775 based fixed bin(18,0) array level 3 unsigned dcl 1-2 set ref 45 gfms_ext$temp_segs 000012 external static structure level 1 dcl 2-13 gfms_fail 000100 stack reference condition dcl 71 ref 31 hbound builtin function dcl 74 ref 24 25 25 47 ic parameter bit(1) unaligned dcl 18 ref 6 35 43 is_cat 5776 based bit(1) array level 3 packed unaligned dcl 1-2 set ref 35* j 000106 automatic fixed bin(17,0) dcl 76 set ref 48* 49 50 61* 61 k 000107 automatic fixed bin(17,0) dcl 77 set ref 47* 48 65 66 mod builtin function dcl 73 ref 47 n_cat 5767 based fixed bin(17,0) level 2 dcl 1-2 set ref 23* 23 24 33 34 35 36 37 65 66 name 5770 based bit(72) array level 3 dcl 1-2 set ref 33* parent_sector 5776(18) based fixed bin(18,0) array level 3 packed unsigned unaligned dcl 1-2 set ref 36* ps parameter fixed bin(18,0) unsigned unaligned dcl 19 ref 6 36 slp 000110 automatic pointer dcl 78 set ref 43* 45* 47 48 65 66 start_list based structure level 2 in structure "description_tree" dcl 1-2 in procedure "gfms_hash_cat_" start_list based fixed bin(18,0) array unsigned dcl 79 in procedure "gfms_hash_cat_" set ref 47 48 65 66* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. gfms_ext$mapping_rule external static char(3) unaligned dcl 2-47 gfms_ext$options external static structure level 1 dcl 2-31 gfms_ext$print_routines external static structure level 1 dcl 2-8 gfms_ext$tape_file external static structure level 1 dcl 2-19 gfms_ext$umc_name external static char(12) unaligned dcl 2-49 gfms_ext$working_dir external static varying char(168) dcl 2-43 NAME DECLARED BY EXPLICIT CONTEXT. gfms_hash_cat_ 000056 constant entry external dcl 6 NAME DECLARED BY CONTEXT OR IMPLICATION. unspec builtin function ref 51 51 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 372 406 325 402 Length 606 325 14 164 44 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gfms_hash_cat_ 134 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gfms_hash_cat_ 000106 j gfms_hash_cat_ 000107 k gfms_hash_cat_ 000110 slp gfms_hash_cat_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return mod_fx1 signal ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. gfms_ext$temp_segs LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000051 23 000063 24 000066 25 000071 31 000127 33 000132 34 000146 35 000155 36 000162 37 000171 43 000175 45 000205 47 000207 48 000215 49 000217 50 000222 51 000234 59 000302 61 000303 62 000307 65 000310 66 000322 67 000324 ----------------------------------------------------------- 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