COMPILATION LISTING OF SEGMENT file_util Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1032.3 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 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 file_util: procedure; /* File System Interface Module utility procedures. */ 14 15 /* Modified 13 August 1972, M J Grady - Honeywell. */ 16 /* Modified July 1973 by E. Stone to work both for 64k and 256k MSFs */ 17 /* Modified 750915 by PG to be able to attach to branches with many names */ 18 19 dcl code2 fixed binary (35); /* Error code (returned). */ 20 dcl pibp pointer; /* Pointer to file control block. */ 21 dcl ap pointer; /* Temporary pointer. */ 22 dcl b36 (0: 1) based fixed binary (35); /* Overlay to access thirtysix-bit elements (words). */ 23 dcl bit_count fixed binary (24); /* Bits in segment or segments in directory. */ 24 dcl bits_per_seg fixed bin (24); 25 dcl dname based character (168) aligned; /* Overlay for directory path name. */ 26 dcl ename based character (32) aligned; /* Overlay for entry name. */ 27 dcl entry character (32) aligned; /* Temporary for lower level entry name. */ 28 dcl ep pointer; /* Pointer to entry structure. */ 29 dcl error_table_$bad_ms_file external fixed binary (35); 30 dcl error_table_$moderr external fixed binary (35); /* File system error codes. */ 31 dcl error_table_$noentry external fixed binary (35); 32 dcl error_table_$toomanylinks external fixed binary (35); 33 dcl error_table_$seg_unknown external fixed bin (35); 34 dcl i fixed bin; /* Index. */ 35 dcl infinity static fixed binary (35) initial (34359738367); /* 2 .P. 35 - 1 */ 36 dcl kind fixed binary (2); /* Entry type. */ 37 dcl max_length fixed bin (19); /* max length of component in words */ 38 dcl msf_sw bit (3) aligned; /* bit switch for msf_manager_$adjust. */ 39 dcl n fixed bin; /* Temporary length. */ 40 dcl p pointer; /* Pointer to file control block. */ 41 dcl path character (168) aligned; /* Aligned storage for path name. */ 42 dcl suffix fixed binary; /* Suffix of desired segment. */ 43 dcl sys_info$max_seg_size ext fixed bin (19); /* system maximum segment size in words */ 44 dcl expand_path_ entry (pointer, fixed binary, pointer, pointer, fixed binary (35)); 45 dcl hcs_$get_max_length entry (char (*) aligned, char (*) aligned, fixed bin (19), fixed bin (35)); 46 dcl hcs_$status_long entry (character (*) aligned, character (*) aligned, fixed binary (1), pointer, 47 pointer, fixed binary (35)); 48 dcl hcs_$status_minf entry (character (*) aligned, character (*) aligned, fixed binary (1), 49 fixed binary (2), fixed binary (24), fixed binary (35)); 50 dcl ioa_$rsnnl entry options (variable); /* Variable argument list. */ 51 dcl msf_manager_$open entry (char (*) aligned, char (*) aligned, ptr, fixed bin (35)), 52 msf_manager_$get_ptr entry (ptr, fixed bin, bit (1), ptr, fixed bin (24), fixed bin (35)), 53 msf_manager_$adjust entry (ptr, fixed bin, fixed bin (24), bit (3) aligned, fixed bin (35)), 54 msf_manager_$close entry (ptr); 55 56 dcl (addr, baseno, baseptr, bit, divide, fixed, empty, mod, null, substr) builtin; 57 58 dcl 1 branch, /* Branch structure filled by status_long. */ 59 2 ((dir, seg) bit (1), nnames bit (16), nrp bit (18)), /* Type, number of names, pointer to names. */ 60 2 dtm bit (36), /* Date-time segment modified. */ 61 2 dtu bit (36), /* Date-time used. */ 62 2 ((t, r, e, w, a) bit (1), pad1 bit (13), records bit (18)), /* Mode, number of records. */ 63 2 dtd bit (36), /* Date-time dumped. */ 64 2 dtem bit (36), /* Date-time entry modified. */ 65 2 acct bit (36), /* Account ID. */ 66 2 (curlen bit (12), bit_count bit (24)), /* Current length, bit count. */ 67 2 ((did, mdid) bit (4), copysw bit (1), pad2 bit (9), rb (3) bit (6)), /* Dev. ID's, copy sw., rings. */ 68 2 uid bit (36); /* Unique ID. */ 69 70 /* Single element from file control block. */ 1 1 /* BEGIN INCLUDE FILE ... file_pib.incl.pl1 ... last modified July 1973 */ 1 2 1 3 dcl 1 pib aligned based, 1 4 2 outer_module_name char (32), /* Our name. */ 1 5 2 device_name_list ptr, /* Pointer to list of attached ioname2's. */ 1 6 2 device_name aligned, /* Bead containing original ioname2 for IOS. */ 1 7 3 next_device ptr, /* Chaining pointer. */ 1 8 3 name_size fixed bin (24), /* Length of string. */ 1 9 3 name_string char (168), /* Original ioname2. */ 1 10 2 dir_name char (168), /* Path name of directory containing file. */ 1 11 2 entry_name char (32), /* Entry name of file. */ 1 12 2 bits_per_segment fixed bin (24), /* Maximum number of bits per segment. */ 1 13 2 (busy, r, w, level, changed) bit (1) unaligned, /* Packed status bits. */ 1 14 2 extra bit (31) unaligned, 1 15 2 elsize fixed bin (24), 1 16 2 readbit fixed bin (35), 1 17 2 writebit fixed bin (35), 1 18 2 lastbit fixed bin (35), 1 19 2 highbit fixed bin (35), 1 20 2 boundbit fixed bin (35), 1 21 2 lastcomp fixed bin, /* component number for current seg */ 1 22 2 lastseg ptr, /* ptr to current seg */ 1 23 2 fcb_ptr ptr, /* fcb ptr for msf_manager_ */ 1 24 2 seg (0: 9) aligned, /* Memory for up to 10 segment numbers. */ 1 25 3 no bit (18) unaligned, /* Segment number. */ 1 26 3 used bit (1) unaligned, /* Flagged when read or written. */ 1 27 3 key bit (17) unaligned, /* Suffix of segment name. */ 1 28 2 search_type fixed bin, /* Type of delimiter search which may be employed. */ 1 29 2 nreads fixed bin, /* Number of read delimiters. */ 1 30 2 readlist bit (720), /* Any number of delimiters. */ 1 31 2 call fixed bin; /* File system call whose error was last reflected. */ 1 32 1 33 /* END INCLUDE FILE ... file_pib.incl.pl1 */ 71 72 dcl 1 seg1 based aligned, /* Overlay for word of ring memory. */ 73 2 (no bit (18), used bit (1), key bit (17)) unaligned; 74 /* */ 75 file_util$attach_file: /* Entry to attach file */ 76 entry (pibp, code2); 77 p = pibp; /* Copy pointer to file control block. */ 78 ap = addr (p -> pib.device_name.name_string); /* Get pointer to input string. */ 79 n = p -> pib.device_name.name_size; /* Compute total number of characters. */ 80 ep = addr (branch); /* Get pointer to branch structure. */ 81 call expand_path_ (ap, n, addr (p -> pib.dir_name), addr (p -> pib.entry_name), code2); 82 if code2 ^= 0 then /* Error in path name? */ 83 do; /* Yes. */ 84 p -> pib.call = 1; /* Mark place of failure. */ 85 return; /* Give error return. */ 86 end; 87 call hcs_$status_long (p -> pib.dir_name, p -> pib.entry_name, 1, ep, null, code2); 88 if code2 ^= 0 then /* Some error? */ 89 do; /* Yes. */ 90 if code2 = error_table_$noentry then /* Is the entry missing? */ 91 if p -> pib.w then /* Can we create it? */ 92 do; /* Yes. */ 93 p -> pib.level = ""b; /* File is at top level. */ 94 /* Initialize actual length. */ 95 p -> pib.writebit, p -> pib.lastbit = 0; 96 p -> pib.bits_per_segment = sys_info$max_seg_size * 36; 97 go to attach_common; /* Go do common stuff. */ 98 end; 99 p -> pib.call = 2; /* Mark point of failure. */ 100 return; /* Call foul. */ 101 end; 102 if branch.seg then /* Is the entry a segment? */ 103 do; /* Yes. */ 104 /* Check for requested mode. */ 105 if ^ branch.r & p -> pib.r | ^ branch.w & p -> pib.w then 106 do; /* No. */ 107 code2 = error_table_$moderr; /* Report discrepancy. */ 108 return; 109 end; 110 p -> pib.level = ""b; /* File is at upper level. */ 111 /* Set write, last pointers according to bit count. */ 112 p -> pib.writebit, p -> pib.lastbit = fixed (branch.bit_count, 35); 113 call hcs_$get_max_length (p -> pib.dir_name, p -> pib.entry_name, max_length, code2); 114 if code2 ^= 0 then do; 115 p -> pib.call = 3; 116 return; 117 end; 118 p -> pib.bits_per_segment = max_length * 36; 119 go to attach_common; /* Go set other initial values. */ 120 end; 121 if branch.dir then /* Is the entry a directory? */ 122 do; /* Yes. */ 123 suffix = fixed (branch.bit_count, 24) - 1; /* Get suffix of last segment. */ 124 if suffix < 0 then /* Was "bit count" zero? */ 125 do; /* Yes. */ 126 suffix = 0; /* Set number of complete segments to zero. */ 127 go to attach_length_zero; /* Continue attach of zero-length file. */ 128 end; 129 call create_lower_level_names (null, suffix, addr (path), addr (entry)); 130 /* Examine statistics. */ 131 call hcs_$status_minf (path, entry, 0, kind, bit_count, code2); 132 if code2 ^= 0 then /* Successful? */ 133 do; /* No. */ 134 if code2 = error_table_$noentry then /* Is segment missing? */ 135 if p -> pib.w then /* May we create it? */ 136 do; /* Yes. */ 137 attach_length_zero: bit_count = 0; /* Assume zero bits in this segment. */ 138 max_length = sys_info$max_seg_size; /* And system maximum for max length */ 139 go to attach_lower_level; /* Go compute total bit count. */ 140 end; 141 p -> pib.call = 4; /* Mark point of failure. */ 142 return; /* Reflect error. */ 143 end; 144 if kind ^= 1 then /* Is this a segment? */ 145 do; /* No. */ 146 code2 = error_table_$bad_ms_file; /* Set error code. */ 147 return; /* Give error return. */ 148 end; 149 call hcs_$get_max_length (path, entry, max_length, code2); 150 if code2 ^= 0 then do; 151 p -> pib.call = 5; 152 return; 153 end; 154 attach_lower_level: p -> pib.level = "1"b; /* File is at lower level. */ 155 /* Set up current size. */ 156 p -> pib.bits_per_segment = max_length * 36; 157 p -> pib.writebit, p -> pib.lastbit = p -> pib.bits_per_segment * suffix + bit_count; 158 go to attach_common; /* Do common initialization. */ 159 end; 160 code2 = error_table_$toomanylinks; 161 return; 162 163 attach_common: /* Some of this initialization should be moved to caller. */ 164 p -> pib.changed = ""b; /* Mark bit count as as yet unchanged. */ 165 p -> pib.elsize = 9; /* Default size is one character. */ 166 p -> pib.readbit = 0; /* Begin reading from beginning. */ 167 p -> pib.highbit = p -> pib.lastbit; 168 p -> pib.boundbit = infinity - mod (infinity, 9); /* Default bound is 2 .P. 35 - 1. */ 169 p -> pib.lastcomp = -1; /* init lastcomp to null */ 170 p -> pib.lastseg = null; /* init ptr null too */ 171 ap = addr (p -> pib.seg); /* Get pointer to ring memory. */ 172 do i = 0 to 9; /* Initialize each element. */ 173 ap -> b36 (i) = 011111111111111111b; /* Not used, null key. */ 174 end; 175 p -> pib.search_type = 1; /* Special case of delimiter search. */ 176 p -> pib.nreads = 1; /* Default is one read delimiter.. */ 177 substr (p -> pib.readlist, 1, 9) = "000001010"b; /* .. a new-line character. */ 178 179 call msf_manager_$open (p -> pib.dir_name, p -> pib.entry_name, p -> pib.fcb_ptr, 180 code2); 181 if code2 = error_table_$noentry then code2 = 0; 182 183 return; /* Return to caller. */ 184 /* */ 185 file_util$detach_file: /* Entry to detach file. */ 186 entry (pibp, code2); /* Returns IO system formatted codes. */ 187 p = pibp; /* Copy pointer to control data. */ 188 bits_per_seg = p -> pib.bits_per_segment; 189 suffix = divide (p -> pib.lastbit, bits_per_seg, 17, 0); /* calc number of last segment. */ 190 bit_count = mod (p -> pib.lastbit, bits_per_seg); /* bit count for last seg */ 191 msf_sw = p -> pib.changed || p -> pib.changed || "1"b; /* this switch controls $adjust */ 192 193 call msf_manager_$adjust (p -> pib.fcb_ptr, suffix, bit_count, msf_sw, code2); 194 /* call to adjust last bit count and terminate all segs */ 195 if code2 ^= 0 then 196 if code2 ^= error_table_$seg_unknown 197 & code2 ^= error_table_$noentry then return; 198 199 call msf_manager_$close (p -> pib.fcb_ptr); 200 p -> pib.fcb_ptr = null; 201 202 code2 = 0; /* Detach successful. */ 203 return; /* Return to caller. */ 204 /* */ 205 find_seg_ptr: /* Entry to get pointer to segment. */ 206 entry (pibp, bv_can_create, which, seg, code5); /* Returns raw codes. */ 207 208 /* parameters */ 209 210 dcl bv_can_create bit (1) aligned parameter; /* ON if missing component can be created */ 211 dcl which fixed binary; /* Number of desired segment in file. */ 212 dcl seg pointer; /* Pointer to segment (returned). */ 213 dcl code5 fixed binary (35); /* Error code (returned). */ 214 215 p = pibp; /* Copy pointer to control block. */ 216 i = mod (which, 10); /* Look in the ring memory. */ 217 ap = addr (p -> pib.seg (i)); /* Get pointer to appropriate word. */ 218 if ^ap -> seg1.used then goto skip_ck; /* Is this entry in use? */ 219 if fixed (ap -> seg1.key, 17) = which then /* Is this it? */ 220 do; /* Yes. */ 221 seg = baseptr (ap -> seg1.no); /* Make up pointer to segment. */ 222 go to have_seg; /* Give normal return. */ 223 end; 224 skip_ck: /* Call msf_manager_ to get ptr to component */ 225 226 call msf_manager_$get_ptr (p -> pib.fcb_ptr, which, (bv_can_create & p -> pib.w), seg, bit_count, code5); 227 if seg = null then return; /* Return with code5 set to reason */ 228 229 ap = addr (p -> pib.seg (i)); 230 ap -> seg1.no = baseno (seg); 231 ap -> seg1.key = bit (which, 17); 232 233 /* set entry in ring memory */ 234 235 have_seg: ap -> seg1.used = "1"b; /* Indicate recent use of this segment. */ 236 code5 = 0; /* No error: clear code. */ 237 return; /* Return to caller. */ 238 /* */ 239 create_lower_level_names: /* Procedure to make up names of "multi"-segments. */ 240 procedure (enp1, suffix, path, entry); 241 dcl enp1 pointer, /* Pointer to entry name to append to directory name. */ 242 suffix fixed binary, /* Suffix desired on entry name. */ 243 (path, /* Pointer to storage for directory path name. */ 244 entry) pointer, /* Pointer to storage for entry name. */ 245 n fixed bin, /* Length of resultant string (ignored). */ 246 enp pointer; /* Pointer to entry name in control block. */ 247 248 if path ^= null then /* Is directory path name wanted? */ 249 do; /* Yes. */ 250 enp = enp1; /* Copy pointer to desired entry name. */ 251 if enp = null then /* If none, use entry name in control block. */ 252 enp = addr (p -> pib.entry_name); /* .. */ 253 if substr (p -> pib.dir_name, 1, 4) = "> " then /* Is it the root directory? */ 254 call ioa_$rsnnl (">^a", path -> dname, n, enp -> ename); 255 else 256 call ioa_$rsnnl ("^a>^a", path -> dname, n, p -> pib.dir_name, enp -> ename); 257 end; 258 if entry ^= null then /* Is entry name desired? */ 259 call ioa_$rsnnl ("^d", entry -> ename, n, suffix); 260 end create_lower_level_names; /* Return to caller. */ 261 end file_util; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0800.7 file_util.pl1 >spec>install>1110>file_util.pl1 71 1 05/06/74 1741.2 file_pib.incl.pl1 >ldd>include>file_pib.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. addr builtin function dcl 56 ref 78 80 81 81 81 81 129 129 129 129 171 217 229 251 ap 000100 automatic pointer dcl 21 set ref 78* 81* 171* 173 217* 218 219 221 229* 230 231 235 b36 based fixed bin(35,0) array dcl 22 set ref 173* baseno builtin function dcl 56 ref 230 baseptr builtin function dcl 56 ref 221 bit builtin function dcl 56 ref 231 bit_count 7(12) 000201 automatic bit(24) level 2 in structure "branch" packed packed unaligned dcl 58 in procedure "file_util" set ref 112 123 bit_count 000102 automatic fixed bin(24,0) dcl 23 in procedure "file_util" set ref 131* 137* 157 190* 193* 224* bits_per_seg 000103 automatic fixed bin(24,0) dcl 24 set ref 188* 189 190 bits_per_segment 151 based fixed bin(24,0) level 2 dcl 1-3 set ref 96* 118* 156* 157 188 boundbit 160 based fixed bin(35,0) level 2 dcl 1-3 set ref 168* branch 000201 automatic structure level 1 packed packed unaligned dcl 58 set ref 80 bv_can_create parameter bit(1) dcl 210 ref 205 224 call 226 based fixed bin(17,0) level 2 dcl 1-3 set ref 84* 99* 115* 141* 151* changed 152(04) based bit(1) level 2 packed packed unaligned dcl 1-3 set ref 163* 191 191 code2 parameter fixed bin(35,0) dcl 19 set ref 75 81* 82 87* 88 90 107* 113* 114 131* 132 134 146* 149* 150 160* 179* 181 181* 185 193* 195 195 195 202* code5 parameter fixed bin(35,0) dcl 213 set ref 205 224* 236* device_name 12 based structure level 2 dcl 1-3 dir 000201 automatic bit(1) level 2 packed packed unaligned dcl 58 set ref 121 dir_name 67 based char(168) level 2 dcl 1-3 set ref 81 81 87* 113* 179* 253 255* divide builtin function dcl 56 ref 189 dname based char(168) dcl 25 set ref 253* 255* elsize 153 based fixed bin(24,0) level 2 dcl 1-3 set ref 165* ename based char(32) dcl 26 set ref 253* 255* 258* enp 000224 automatic pointer dcl 241 set ref 250* 251 251* 253 255 enp1 parameter pointer dcl 241 ref 239 250 entry parameter pointer dcl 241 in procedure "create_lower_level_names" ref 239 258 258 entry 000104 automatic char(32) dcl 27 in procedure "file_util" set ref 129 129 131* 149* entry_name 141 based char(32) level 2 dcl 1-3 set ref 81 81 87* 113* 179* 251 ep 000114 automatic pointer dcl 28 set ref 80* 87* error_table_$bad_ms_file 000010 external static fixed bin(35,0) dcl 29 ref 146 error_table_$moderr 000012 external static fixed bin(35,0) dcl 30 ref 107 error_table_$noentry 000014 external static fixed bin(35,0) dcl 31 ref 90 134 181 195 error_table_$seg_unknown 000020 external static fixed bin(35,0) dcl 33 ref 195 error_table_$toomanylinks 000016 external static fixed bin(35,0) dcl 32 ref 160 expand_path_ 000024 constant entry external dcl 44 ref 81 fcb_ptr 164 based pointer level 2 dcl 1-3 set ref 179* 193* 199* 200* 224* fixed builtin function dcl 56 ref 112 123 219 hcs_$get_max_length 000026 constant entry external dcl 45 ref 113 149 hcs_$status_long 000030 constant entry external dcl 46 ref 87 hcs_$status_minf 000032 constant entry external dcl 48 ref 131 highbit 157 based fixed bin(35,0) level 2 dcl 1-3 set ref 167* i 000116 automatic fixed bin(17,0) dcl 34 set ref 172* 173* 216* 217 229 infinity 000000 constant fixed bin(35,0) initial dcl 35 ref 168 168 ioa_$rsnnl 000034 constant entry external dcl 50 ref 253 255 258 key 0(19) based bit(17) level 2 packed packed unaligned dcl 72 set ref 219 231* kind 000117 automatic fixed bin(2,0) dcl 36 set ref 131* 144 lastbit 156 based fixed bin(35,0) level 2 dcl 1-3 set ref 95* 112* 157* 167 189 190 lastcomp 161 based fixed bin(17,0) level 2 dcl 1-3 set ref 169* lastseg 162 based pointer level 2 dcl 1-3 set ref 170* level 152(03) based bit(1) level 2 packed packed unaligned dcl 1-3 set ref 93* 110* 154* max_length 000120 automatic fixed bin(19,0) dcl 37 set ref 113* 118 138* 149* 156 mod builtin function dcl 56 ref 168 190 216 msf_manager_$adjust 000042 constant entry external dcl 51 ref 193 msf_manager_$close 000044 constant entry external dcl 51 ref 199 msf_manager_$get_ptr 000040 constant entry external dcl 51 ref 224 msf_manager_$open 000036 constant entry external dcl 51 ref 179 msf_sw 000121 automatic bit(3) dcl 38 set ref 191* 193* n 000222 automatic fixed bin(17,0) dcl 241 in procedure "create_lower_level_names" set ref 253* 255* 258* n 000122 automatic fixed bin(17,0) dcl 39 in procedure "file_util" set ref 79* 81* name_size 14 based fixed bin(24,0) level 3 dcl 1-3 ref 79 name_string 15 based char(168) level 3 dcl 1-3 set ref 78 no based bit(18) level 2 packed packed unaligned dcl 72 set ref 221 230* nreads 201 based fixed bin(17,0) level 2 dcl 1-3 set ref 176* null builtin function dcl 56 ref 87 87 129 129 170 200 227 248 251 258 p 000124 automatic pointer dcl 40 set ref 77* 78 79 81 81 81 81 84 87 87 90 93 95 95 96 99 105 105 110 112 112 113 113 115 118 134 141 151 154 156 157 157 157 163 165 166 167 167 168 169 170 171 175 176 177 179 179 179 187* 188 189 190 191 191 193 199 200 215* 217 224 224 229 251 253 255 path 000126 automatic char(168) dcl 41 in procedure "file_util" set ref 129 129 131* 149* path parameter pointer dcl 241 in procedure "create_lower_level_names" ref 239 248 253 255 pib based structure level 1 dcl 1-3 pibp parameter pointer dcl 20 ref 75 77 185 187 205 215 r 3(01) 000201 automatic bit(1) level 2 in structure "branch" packed packed unaligned dcl 58 in procedure "file_util" set ref 105 r 152(01) based bit(1) level 2 in structure "pib" packed packed unaligned dcl 1-3 in procedure "file_util" ref 105 readbit 154 based fixed bin(35,0) level 2 dcl 1-3 set ref 166* readlist 202 based bit(720) level 2 dcl 1-3 set ref 177* search_type 200 based fixed bin(17,0) level 2 dcl 1-3 set ref 175* seg 0(01) 000201 automatic bit(1) level 2 in structure "branch" packed packed unaligned dcl 58 in procedure "file_util" set ref 102 seg 166 based structure array level 2 in structure "pib" dcl 1-3 in procedure "file_util" set ref 171 217 229 seg parameter pointer dcl 212 in procedure "file_util" set ref 205 221* 224* 227 230 seg1 based structure level 1 dcl 72 substr builtin function dcl 56 set ref 177* 253 suffix 000200 automatic fixed bin(17,0) dcl 42 in procedure "file_util" set ref 123* 124 126* 129* 157 189* 193* suffix parameter fixed bin(17,0) dcl 241 in procedure "create_lower_level_names" set ref 239 258* sys_info$max_seg_size 000022 external static fixed bin(19,0) dcl 43 ref 96 138 used 0(18) based bit(1) level 2 packed packed unaligned dcl 72 set ref 218 235* w 152(02) based bit(1) level 2 in structure "pib" packed packed unaligned dcl 1-3 in procedure "file_util" ref 90 105 134 224 w 3(03) 000201 automatic bit(1) level 2 in structure "branch" packed packed unaligned dcl 58 in procedure "file_util" set ref 105 which parameter fixed bin(17,0) dcl 211 set ref 205 216 219 224* 231 writebit 155 based fixed bin(35,0) level 2 dcl 1-3 set ref 95* 112* 157* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. empty builtin function dcl 56 NAMES DECLARED BY EXPLICIT CONTEXT. attach_common 000461 constant label dcl 163 ref 97 119 158 attach_length_zero 000366 constant label dcl 137 ref 127 attach_lower_level 000442 constant label dcl 154 ref 139 create_lower_level_names 001013 constant entry internal dcl 239 ref 129 file_util 000025 constant entry external dcl 13 file_util$attach_file 000037 constant entry external dcl 75 file_util$detach_file 000567 constant entry external dcl 185 find_seg_ptr 000675 constant entry external dcl 205 have_seg 001007 constant label dcl 235 ref 222 skip_ck 000731 constant label dcl 224 ref 218 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1440 1506 1201 1450 Length 1724 1201 46 201 237 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME file_util 240 external procedure is an external procedure. create_lower_level_names internal procedure shares stack frame of external procedure file_util. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME file_util 000100 ap file_util 000102 bit_count file_util 000103 bits_per_seg file_util 000104 entry file_util 000114 ep file_util 000116 i file_util 000117 kind file_util 000120 max_length file_util 000121 msf_sw file_util 000122 n file_util 000124 p file_util 000126 path file_util 000200 suffix file_util 000201 branch file_util 000222 n create_lower_level_names 000224 enp create_lower_level_names THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac mdfx1 ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. expand_path_ hcs_$get_max_length hcs_$status_long hcs_$status_minf ioa_$rsnnl msf_manager_$adjust msf_manager_$close msf_manager_$get_ptr msf_manager_$open THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_ms_file error_table_$moderr error_table_$noentry error_table_$seg_unknown error_table_$toomanylinks sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000024 75 000032 77 000044 78 000050 79 000052 80 000054 81 000056 82 000100 84 000103 85 000106 87 000107 88 000150 90 000153 93 000162 95 000164 96 000166 97 000171 99 000172 100 000175 102 000176 105 000201 107 000217 108 000222 110 000223 112 000226 113 000232 114 000257 115 000262 116 000265 118 000266 119 000272 121 000273 123 000276 124 000302 126 000303 127 000304 129 000305 131 000315 132 000354 134 000357 137 000366 138 000367 139 000372 141 000373 142 000376 144 000377 146 000402 147 000405 149 000406 150 000433 151 000436 152 000441 154 000442 156 000445 157 000450 158 000454 160 000455 161 000460 163 000461 165 000463 166 000465 167 000466 168 000470 169 000502 170 000504 171 000506 172 000510 173 000515 174 000520 175 000522 176 000525 177 000526 179 000530 181 000556 183 000564 185 000565 187 000574 188 000600 189 000602 190 000605 191 000611 193 000623 195 000642 199 000652 200 000662 202 000665 203 000667 205 000670 215 000702 216 000706 217 000712 218 000714 219 000717 221 000723 222 000730 224 000731 227 000762 229 000767 230 000773 231 001000 235 001007 236 001011 237 001012 239 001013 248 001015 250 001021 251 001024 253 001033 255 001071 258 001125 260 001161 ----------------------------------------------------------- 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