COMPILATION LISTING OF SEGMENT charge_disk Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1921.51_Mon_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(87-10-06,Parisek), approve(88-02-03,MCR7845), 17* audit(88-04-18,Lippard), install(88-04-26,MR12.2-1043): 18* Implemment multi-segment file application for possible >256K disk_stat 19* segment. 20* END HISTORY COMMENTS */ 21 22 23 charge_disk: proc; 24 25 /* procedure to run through the daily disk statistics and store usage values into the projfile. 26* Modified by TAC and THVV, April 1976, to charge for directory pages under NSS 27* Modified by T. casey, Sept 1977 to charge for all lv's when none specified. 28* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures. 29* Modified 1984-07-09 BIM for dir_disk_quota in projfile. 30* */ 31 32 dcl path char (168), 33 acpx fixed bin, 34 cpx fixed bin, 35 dn char (168) init (get_wdir_ ()), 36 en char (32) init ("disk_stat"), 37 ap ptr, al fixed bin, bchr char (al) based (ap), 38 fcbp ptr, 39 pp ptr, /* projfile ptr */ 40 proj char (32), /* project id */ 41 oldx fixed bin, /* length of proj id */ 42 (i, j, k, nd, np, nn, ti) fixed bin, /* indices */ 43 ec fixed bin (35); /* error code */ 44 45 dcl ioa_ entry options (variable), 46 get_wdir_ entry () returns (char (168)), 47 com_err_ entry options (variable), 48 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 49 expand_path_ entry (ptr, fixed bin, ptr, ptr, fixed bin (35)), 50 hcs_$initiate entry (char (*), char (*), char (*), 51 fixed bin (1), fixed bin (2), ptr, fixed bin (35)), 52 hcs_$terminate_noname entry (ptr, fixed bin (35)), 53 msf_manager_$close entry (ptr), 54 msf_manager_$get_ptr entry (ptr, fixed bin, bit (1), ptr, fixed bin (24), fixed bin (35)), 55 msf_manager_$open entry (char (*), char (*), ptr, fixed bin (35)); 56 dcl search_sat_$rs_number entry (char (*), fixed bin, fixed bin (35)); 57 dcl search_sat_$clean_up entry; 58 dcl system_info_$prices_rs entry (fixed bin, 59 (0:7) float bin, (0:7) float bin, (0:7) float bin, (0:7) float bin, float bin, float bin); 60 dcl system_info_$max_rs_number entry (fixed bin); 61 dcl rs_count fixed bin; 62 dcl rs_number fixed bin; 63 dcl mdc_$find_lvid entry (char (*), bit (36) aligned, fixed bin (35)); 64 dcl proj_psec fixed bin (71) init (0); 65 dcl lvname char (32); 66 dcl lvid (50) bit (36) aligned; /* more than enough */ 67 dcl (bad_lv_count, lv_count) fixed bin init (0); 68 dcl npd fixed bin init (0); 69 dcl lv_arg bit (1) aligned init (""b); 70 dcl lvi fixed bin; 71 dcl cp_array (0:4) ptr; 72 dcl dummy (0:7) float bin; 73 dcl dummy1 float bin; 74 dcl disk_price float bin; 75 dcl (error_table_$badopt, error_table_$too_many_args, error_table_$noentry) ext fixed bin (35); 76 dcl last_nd fixed bin; 77 dcl (addr, hbound, null, substr, rtrim, index) builtin; 78 dcl sys_info$max_seg_size fixed bin (35) ext static; 79 1 1 /* BEGIN INCLUDE FILE .. projfile.incl.pl1 */ 1 2 /* Modified by T. Casey April 1976 to change disk_infs (obsolete) to dir_disk_use */ 1 3 /* Modified 1984-07-09 BIM for dir_disk_quota, version */ 1 4 /* Modified 1984-09-14 BIM for reasonable array size */ 1 5 1 6 dcl 1 projfile based (pp) aligned, /* Project history file */ 1 7 2 nproj fixed bin (35), /* number of entries */ 1 8 2 version fixed bin, 1 9 2 projfilexx0 (6) bit (36) aligned, 1 10 2 projfiletab (3000), /* in seg limit */ 1 11 3 id char (12) unal, /* project ID */ 1 12 3 title char (52) unal, /* project title */ 1 13 3 inv char (32) unal, /* name of principal investigator */ 1 14 3 inv_addr char (32) unal, /* address */ 1 15 3 sup char (32) unal, /* name of supervisor */ 1 16 3 sup_addr char (32) unal, /* address */ 1 17 3 sup_phone char (16) unal, /* telephone */ 1 18 3 on fixed bin (71), /* date on */ 1 19 3 off fixed bin (71), /* date off */ 1 20 3 disk_psec fixed bin (71), /* project disk page-seconds */ 1 21 3 disk_quota fixed bin (35), /* project disk quota */ 1 22 3 dir_disk_quota fixed bin (35), /* project dir disk quota */ 1 23 3 disk_use fixed bin (35), /* total segment pages used */ 1 24 3 dir_disk_use fixed bin (35), /* total directory pages used */ 1 25 3 misc_charges float bin, /* manuals, etc */ 1 26 3 n_misc fixed bin, /* number of entries */ 1 27 3 processed fixed bin, /* temp for usage-report */ 1 28 3 pad bit (36) aligned; /* out to even number of words */ 1 29 1 30 dcl loph int static fixed bin (17) options (constant) init (8), /* lth of projfile header */ 1 31 lope int static fixed bin (17) options (constant) init (66); /* lth of projflile entry */ 1 32 1 33 dcl PROJFILE_VERSION fixed bin init (3) int static options (constant); 1 34 1 35 /* END INCLUDE FILE ... projfile.incl.pl1 */ 80 81 2 1 /* BEGIN INCLUDE FILE ... disk_stat.incl.pl1 */ 2 2 2 3 /* This segment is created by "sweep" and read by "charge_disk" when disk stats are being charged. */ 2 4 /* Modified April 1976 by TAC to add dqta, duse, and dtpp */ 2 5 2 6 dcl sp ptr; /* pointer to segment */ 2 7 2 8 dcl 1 disk_stat based (sp) aligned, /* structure of segment */ 2 9 2 dents fixed bin, /* number of entries */ 2 10 2 dpad1 fixed bin, 2 11 2 dtime fixed bin (71), /* Time file was generated */ 2 12 2 dreset fixed bin (71), /* Time of disk reset */ 2 13 2 dpad2 (2) fixed bin, 2 14 2 dtab (1000), /* one for each dir with a quota */ 2 15 3 spth char (168), /* path name */ 2 16 3 sqta fixed bin, /* segment quota */ 2 17 3 dqta fixed bin, /* directory quota */ 2 18 3 suse fixed bin, /* segment pages qued */ 2 19 3 duse fixed bin, /* directory pages used */ 2 20 3 stpp fixed bin (71), /* time-page product for segments */ 2 21 3 dtpp fixed bin (71), /* time-page product for directories */ 2 22 3 slvid bit (36), /* son's lvid of this dir */ 2 23 3 slev fixed bin; /* recursion level */ 2 24 2 25 dcl lodh fixed bin init (8), /* lth of disk_stat head */ 2 26 lode fixed bin init (52); /* lth of disk_stat entry */ 2 27 2 28 /* END INCLUDE FILE ... disk_stat.incl.pl1 */ 82 83 84 /* ======================================================== */ 85 86 ec = 0; 87 do i = 1 by 1 while (ec = 0); 88 call cu_$arg_ptr (i, ap, al, ec); 89 if ec = 0 then do; 90 if lv_arg then do; /* all remaining args are lv names */ 91 lv_count = lv_count + 1; 92 if lv_count > hbound (lvid, 1) then do; 93 ec = error_table_$too_many_args; 94 arg_err: call com_err_ (ec, "charge_disk", "^a", bchr); 95 return; 96 end; 97 lvname = bchr; 98 call mdc_$find_lvid (lvname, lvid (lv_count), ec); 99 if ec ^= 0 then do; 100 call com_err_ (ec, "charge_disk", "^a", bchr); 101 lv_count = lv_count - 1; 102 bad_lv_count = bad_lv_count + 1; 103 end; 104 end; 105 else if bchr = "-lv" | bchr = "-logical_volume" then 106 lv_arg = "1"b; /* all remaining args are lvnames */ 107 108 else if substr (bchr, 1, 1) = "-" then do; 109 ec = error_table_$badopt; 110 goto arg_err; 111 end; 112 else do; 113 call expand_path_ (ap, al, addr (dn), addr (en), ec); 114 if ec ^= 0 then go to arg_err; 115 end; 116 end; 117 end; 118 119 if bad_lv_count > 0 then 120 call com_err_ (0, "charge_disk", 121 "Error in logical volume specification. Segment page charges may be incorrect."); 122 123 if lv_count = 0 then 124 call com_err_ (0, "charge_disk", 125 "No logical volumes specified. Storage on all logical volumes will be charged for."); 126 127 call msf_manager_$open (dn, en, fcbp, ec); 128 if ec ^= 0 then go to init_err; 129 acpx, cpx, ti = 0; 130 cpx_loop: 131 call msf_manager_$get_ptr (fcbp, cpx, "0"b, cp_array (cpx), 0, ec); 132 if ec = 0 then do; 133 cpx = cpx + 1; 134 goto cpx_loop; 135 end; 136 137 call hcs_$initiate ((get_wdir_ ()), "projfile", "", 0, 1, pp, ec); /* initiate projfile */ 138 if pp = null then do; 139 dn = get_wdir_ (); 140 en = "projfile"; 141 init_err: call com_err_ (ec, "charge_disk", "^a>^a", dn, en); 142 return; 143 end; 144 145 call system_info_$max_rs_number (rs_count); /* see if site has multiple rate structures */ 146 147 sp = cp_array (0); 148 nd = disk_stat.dents; /* Get number of dirs we have disk statistics on. */ 149 np = projfile.nproj; /* Get number of projects we have in projfile. */ 150 nn = 0; /* count of dirs with disk statistics stored into projfile */ 151 152 do i = 1 to np; /* clear disk use for project */ 153 projfile.projfiletab (i).disk_quota = 0; /* clear quota for project */ 154 projfile.projfiletab (i).dir_disk_quota = 0; /* ditto for dir flavor */ 155 projfile.projfiletab (i).disk_use = 0; /* clear disk use for project */ 156 projfile.projfiletab (i).dir_disk_use = 0; 157 end; 158 oldx = 32; /* set max lngth of projname */ 159 proj = (32)"!"; /* set proj to schreek */ 160 j = 0; /* initialize projfile entry index */ 161 162 last_nd = nd; 163 comp_loop: 164 do i = 1 to last_nd; /* Look at every dir we have disk statistics (quota) on. */ 165 if disk_stat.dtab (i).slev < 2 then go to skip; 166 /* ignore superstructure */ 167 168 dn = disk_stat.dtab (i).spth; /* Get directory name. */ 169 if substr (dn, 1, 4) ^= ">udd" /* Ignore those not in >udd */ 170 then if substr (dn, 1, 4) ^= ">UDD" /* ... */ 171 then if substr (dn, 1, 13) ^= ">user_dir_dir" then go to skip; 172 173 if lv_count > 0 then /* if a list of logical volumes to charge for was given */ 174 do lvi = 1 to lv_count /* see if this dir's sons lvid is in the list */ 175 while (lvid (lvi) ^= disk_stat.dtab (i).slvid); 176 end; /* if no match, lvi = lv_count+1, which is checked below */ 177 else lvi = -1; /* fool that guy below into charging for this one */ 178 substr (dn, 1, 1) = " "; /* Remove root (>) */ 179 k = index (dn, ">"); /* Find beginning of project name. */ 180 path = substr (dn, k+1, 168-k); /* Get directory name. */ 181 if substr (path, 1, oldx) = proj & substr (path, oldx+1, 1) = ">" then do; 182 add_dir_to_project: nn = nn + 1; /* Same project as last one. Count. */ 183 npd = npd + 1; /* count dirs belonging to this project */ 184 projfile.projfiletab (j).disk_quota 185 = projfile.projfiletab (j).disk_quota + disk_stat.dtab (i).sqta; 186 projfile.projfiletab (j).dir_disk_quota 187 = projfile.projfiletab (j).dir_disk_quota + disk_stat.dtab (i).dqta; 188 projfile.projfiletab (j).disk_use 189 = projfile.projfiletab (j).disk_use + disk_stat.dtab (i).suse; 190 projfile.projfiletab (j).dir_disk_use 191 = projfile.projfiletab (j).dir_disk_use + disk_stat.dtab (i).duse; 192 193 proj_psec = proj_psec + disk_stat.dtab (i).dtpp; /* charge for all dirs - they are on the RLV */ 194 if lvi <= lv_count then /* if we are charging for seg pages on this lvol */ 195 proj_psec = proj_psec + disk_stat.dtab (i).stpp; /* do so */ 196 197 end; 198 199 else do; /* New project. */ 200 201 if npd > 0 then /* if there were dirs belonging to a previous project */ 202 call charge_proj; /* go record those charges, if they look reasonable */ 203 204 if disk_stat.dtab (i).slev > 2 then do; /* This should be a project directory. */ 205 call ioa_ ("charge_disk: ^a not at level 2 but shd be project dir", path); 206 go to skip; /* If not, ignore it. Look for next proj. */ 207 end; 208 proj = rtrim(path); /* Save project name for comparison. */ 209 do j = 1 to np while (proj ^= projfile.id (j)); end; 210 if j > np then do; 211 call ioa_ ("charge_disk: project ^a not in projfile", proj); 212 proj = " "; /* Blank proj id */ 213 end; /* Ignore missing project. */ 214 215 else do; /* new project looks ok */ 216 oldx = index (path, " ") - 1; /* get length of project name */ 217 goto add_dir_to_project; /* go add figures for this dir into projfile entry */ 218 end; 219 220 end; 221 skip: if (lodh + (i+1) * lode) > sys_info$max_seg_size then do; 222 ti = ti + i; 223 last_nd = nd - ti; 224 acpx = acpx + 1; 225 sp = cp_array (acpx); 226 goto comp_loop; 227 end; 228 end; 229 230 if npd > 0 then /* if last few dirs belonged to a project */ 231 call charge_proj; /* go record the charges */ 232 233 call hcs_$terminate_noname (sp, ec); /* Terminate stats */ 234 call hcs_$terminate_noname (pp, ec); /* ... and projfile */ 235 236 if fcbp ^= null then 237 call msf_manager_$close (fcbp); 238 239 if rs_count > 0 then 240 call search_sat_$clean_up; /* tidy up */ 241 242 call ioa_ ("charge_disk: charged ^d dirs out of ^d to ^d projects", nn, nd, np); 243 244 return; 245 246 charge_proj: proc; /* procedure to check reasonableness of project disk charge, and 247* either record it if it looks ok, or complain if it doesn't */ 248 249 /* For now, we just check for charge decreasing (impossible unless something has been clobbered); 250* later, checks for unreasonably large increases can be added. */ 251 if proj_psec < projfile.projfiletab (j).disk_psec then do; 252 if rs_count > 0 then do; /* if site has multiple rate structures */ 253 call search_sat_$rs_number (projfile.projfiletab (j).id, rs_number, ec); /* get rate index */ 254 if ec ^= 0 then 255 if ec = error_table_$noentry then 256 call com_err_ (ec, "charge_disk", 257 "Trying to locate project ""^a"" in the sat. Default rates will be used.", 258 projfile.projfiletab (j).id); 259 else call com_err_ (ec, "charge_disk", "Accessing the sat. Default rates will be used"); 260 end; 261 else rs_number = 0; 262 call system_info_$prices_rs (rs_number, dummy, dummy, dummy, dummy, disk_price, dummy1); 263 /* get disk price, just for printing charge in error messages */ 264 call ioa_ ("charge_disk: Total tpp of ^a project's directories (^d, $^.2f) is less than the 265 ^-previous value (^d, $^.2f) in projfile; the projfile value has not been modified;", 266 projfile.projfiletab (j).id, proj_psec, (disk_price*proj_psec), 267 projfile.projfiletab (j).disk_psec, (disk_price*projfile.projfiletab (j).disk_psec)); 268 call ioa_ ("^-whichever value is incorrect must be adjusted before billing is run."); 269 end; 270 271 else projfile.projfiletab (j).disk_psec = proj_psec; 272 273 proj_psec = 0; /* clear the adder so the next project starts at zero */ 274 npd = 0; /* same for the count of dirs charged to the project */ 275 276 return; 277 278 end charge_proj; 279 280 end charge_disk; 281 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1921.5 charge_disk.pl1 >udd>sm>ds>w>ml>charge_disk.pl1 80 1 09/20/84 1025.7 projfile.incl.pl1 >ldd>incl>projfile.incl.pl1 82 2 06/22/76 1455.6 disk_stat.incl.pl1 >ldd>incl>disk_stat.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. acpx 000152 automatic fixed bin(17,0) dcl 32 set ref 129* 224* 224 225 addr builtin function dcl 77 ref 113 113 113 113 al 000240 automatic fixed bin(17,0) dcl 32 set ref 88* 94 94 97 100 100 105 105 108 113* ap 000236 automatic pointer dcl 32 set ref 88* 94 97 100 105 105 108 113* bad_lv_count 000366 automatic fixed bin(17,0) initial dcl 67 set ref 67* 102* 102 119 bchr based char packed unaligned dcl 32 set ref 94* 97 100* 105 105 108 com_err_ 000014 constant entry external dcl 45 ref 94 100 119 123 141 254 259 cp_array 000374 automatic pointer array dcl 71 set ref 130* 147 225 cpx 000153 automatic fixed bin(17,0) dcl 32 set ref 129* 130* 130 133* 133 cu_$arg_ptr 000016 constant entry external dcl 45 ref 88 dents based fixed bin(17,0) level 2 dcl 2-8 ref 148 dir_disk_quota 103 based fixed bin(35,0) array level 3 dcl 1-6 set ref 154* 186* 186 dir_disk_use 105 based fixed bin(35,0) array level 3 dcl 1-6 set ref 156* 190* 190 disk_price 000417 automatic float bin(27) dcl 74 set ref 262* 264 264 disk_psec 100 based fixed bin(71,0) array level 3 dcl 1-6 set ref 251 264* 264 271* disk_quota 102 based fixed bin(35,0) array level 3 dcl 1-6 set ref 153* 184* 184 disk_stat based structure level 1 dcl 2-8 disk_use 104 based fixed bin(35,0) array level 3 dcl 1-6 set ref 155* 188* 188 dn 000154 automatic char(168) initial packed unaligned dcl 32 set ref 32* 113 113 127* 139* 141* 168* 169 169 169 178* 179 180 dqta 63 based fixed bin(17,0) array level 3 dcl 2-8 ref 186 dtab 10 based structure array level 2 dcl 2-8 dtpp 70 based fixed bin(71,0) array level 3 dcl 2-8 ref 193 dummy 000406 automatic float bin(27) array dcl 72 set ref 262* 262* 262* 262* dummy1 000416 automatic float bin(27) dcl 73 set ref 262* duse 65 based fixed bin(17,0) array level 3 dcl 2-8 ref 190 ec 000266 automatic fixed bin(35,0) dcl 32 set ref 86* 87 88* 89 93* 94* 98* 99 100* 109* 113* 114 127* 128 130* 132 137* 141* 233* 234* 253* 254 254 254* 259* en 000226 automatic char(32) initial packed unaligned dcl 32 set ref 32* 113 113 127* 140* 141* error_table_$badopt 000046 external static fixed bin(35,0) dcl 75 ref 109 error_table_$noentry 000052 external static fixed bin(35,0) dcl 75 ref 254 error_table_$too_many_args 000050 external static fixed bin(35,0) dcl 75 ref 93 expand_path_ 000020 constant entry external dcl 45 ref 113 fcbp 000242 automatic pointer dcl 32 set ref 127* 130* 236 236* get_wdir_ 000012 constant entry external dcl 45 ref 32 137 139 hbound builtin function dcl 77 ref 92 hcs_$initiate 000022 constant entry external dcl 45 ref 137 hcs_$terminate_noname 000024 constant entry external dcl 45 ref 233 234 i 000257 automatic fixed bin(17,0) dcl 32 set ref 87* 88* 152* 153 154 155 156* 163* 165 168 173 184 186 188 190 193 194 204 221 222* id 10 based char(12) array level 3 packed packed unaligned dcl 1-6 set ref 209 253* 254* 264* index builtin function dcl 77 ref 179 216 ioa_ 000010 constant entry external dcl 45 ref 205 211 242 264 268 j 000260 automatic fixed bin(17,0) dcl 32 set ref 160* 184 184 186 186 188 188 190 190 209* 209* 210 251 253 254 264 264 264 271 k 000261 automatic fixed bin(17,0) dcl 32 set ref 179* 180 180 last_nd 000420 automatic fixed bin(17,0) dcl 76 set ref 162* 163 223* lode 000425 automatic fixed bin(17,0) initial dcl 2-25 set ref 221 2-25* lodh 000424 automatic fixed bin(17,0) initial dcl 2-25 set ref 221 2-25* lv_arg 000371 automatic bit(1) initial dcl 69 set ref 69* 90 105* lv_count 000367 automatic fixed bin(17,0) initial dcl 67 set ref 67* 91* 91 92 98 101* 101 123 173 173 194 lvi 000372 automatic fixed bin(17,0) dcl 70 set ref 173* 173* 177* 194 lvid 000304 automatic bit(36) array dcl 66 set ref 92 98* 173 lvname 000274 automatic char(32) packed unaligned dcl 65 set ref 97* 98* mdc_$find_lvid 000044 constant entry external dcl 63 ref 98 msf_manager_$close 000026 constant entry external dcl 45 ref 236 msf_manager_$get_ptr 000030 constant entry external dcl 45 ref 130 msf_manager_$open 000032 constant entry external dcl 45 ref 127 nd 000262 automatic fixed bin(17,0) dcl 32 set ref 148* 162 223 242* nn 000264 automatic fixed bin(17,0) dcl 32 set ref 150* 182* 182 242* np 000263 automatic fixed bin(17,0) dcl 32 set ref 149* 152 209 210 242* npd 000370 automatic fixed bin(17,0) initial dcl 68 set ref 68* 183* 183 201 230 274* nproj based fixed bin(35,0) level 2 dcl 1-6 ref 149 null builtin function dcl 77 ref 138 236 oldx 000256 automatic fixed bin(17,0) dcl 32 set ref 158* 181 181 216* path 000100 automatic char(168) packed unaligned dcl 32 set ref 180* 181 181 205* 208 216 pp 000244 automatic pointer dcl 32 set ref 137* 138 149 153 154 155 156 184 184 186 186 188 188 190 190 209 234* 251 253 254 264 264 264 271 proj 000246 automatic char(32) packed unaligned dcl 32 set ref 159* 181 208* 209 211* 212* proj_psec 000272 automatic fixed bin(71,0) initial dcl 64 set ref 64* 193* 193 194* 194 251 264* 264 271 273* projfile based structure level 1 dcl 1-6 projfiletab 10 based structure array level 2 dcl 1-6 rs_count 000267 automatic fixed bin(17,0) dcl 61 set ref 145* 239 252 rs_number 000270 automatic fixed bin(17,0) dcl 62 set ref 253* 261* 262* rtrim builtin function dcl 77 ref 208 search_sat_$clean_up 000036 constant entry external dcl 57 ref 239 search_sat_$rs_number 000034 constant entry external dcl 56 ref 253 slev 73 based fixed bin(17,0) array level 3 dcl 2-8 ref 165 204 slvid 72 based bit(36) array level 3 dcl 2-8 ref 173 sp 000422 automatic pointer dcl 2-6 set ref 147* 148 165 168 173 184 186 188 190 193 194 204 225* 233* spth 10 based char(168) array level 3 dcl 2-8 ref 168 sqta 62 based fixed bin(17,0) array level 3 dcl 2-8 ref 184 stpp 66 based fixed bin(71,0) array level 3 dcl 2-8 ref 194 substr builtin function dcl 77 set ref 108 169 169 169 178* 180 181 181 suse 64 based fixed bin(17,0) array level 3 dcl 2-8 ref 188 sys_info$max_seg_size 000054 external static fixed bin(35,0) dcl 78 ref 221 system_info_$max_rs_number 000042 constant entry external dcl 60 ref 145 system_info_$prices_rs 000040 constant entry external dcl 58 ref 262 ti 000265 automatic fixed bin(17,0) dcl 32 set ref 129* 222* 222 223 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. PROJFILE_VERSION internal static fixed bin(17,0) initial dcl 1-33 lope internal static fixed bin(17,0) initial dcl 1-30 loph internal static fixed bin(17,0) initial dcl 1-30 NAMES DECLARED BY EXPLICIT CONTEXT. add_dir_to_project 001317 constant label dcl 182 ref 217 arg_err 000422 constant label dcl 94 ref 110 114 charge_disk 000335 constant entry external dcl 23 charge_proj 001637 constant entry internal dcl 246 ref 201 230 comp_loop 001205 constant label dcl 163 ref 226 cpx_loop 000753 constant label dcl 130 ref 134 init_err 001100 constant label dcl 141 ref 128 skip 001512 constant label dcl 221 ref 165 169 206 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2344 2422 2107 2354 Length 2654 2107 56 215 234 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME charge_disk 564 external procedure is an external procedure. charge_proj internal procedure shares stack frame of external procedure charge_disk. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME charge_disk 000100 path charge_disk 000152 acpx charge_disk 000153 cpx charge_disk 000154 dn charge_disk 000226 en charge_disk 000236 ap charge_disk 000240 al charge_disk 000242 fcbp charge_disk 000244 pp charge_disk 000246 proj charge_disk 000256 oldx charge_disk 000257 i charge_disk 000260 j charge_disk 000261 k charge_disk 000262 nd charge_disk 000263 np charge_disk 000264 nn charge_disk 000265 ti charge_disk 000266 ec charge_disk 000267 rs_count charge_disk 000270 rs_number charge_disk 000272 proj_psec charge_disk 000274 lvname charge_disk 000304 lvid charge_disk 000366 bad_lv_count charge_disk 000367 lv_count charge_disk 000370 npd charge_disk 000371 lv_arg charge_disk 000372 lvi charge_disk 000374 cp_array charge_disk 000406 dummy charge_disk 000416 dummy1 charge_disk 000417 disk_price charge_disk 000420 last_nd charge_disk 000422 sp charge_disk 000424 lodh charge_disk 000425 lode charge_disk THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr expand_path_ get_wdir_ hcs_$initiate hcs_$terminate_noname ioa_ mdc_$find_lvid msf_manager_$close msf_manager_$get_ptr msf_manager_$open search_sat_$clean_up search_sat_$rs_number system_info_$max_rs_number system_info_$prices_rs THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noentry error_table_$too_many_args sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 23 000334 32 000342 64 000353 67 000355 68 000357 69 000360 2 25 000361 86 000365 87 000366 88 000372 89 000407 90 000411 91 000413 92 000414 93 000417 94 000422 95 000461 97 000462 98 000467 99 000510 100 000512 101 000551 102 000553 104 000554 105 000555 108 000572 109 000576 110 000601 113 000602 114 000625 117 000627 119 000631 123 000665 127 000721 128 000746 129 000750 130 000753 132 001001 133 001003 134 001004 137 001005 138 001062 139 001066 140 001075 141 001100 142 001140 145 001141 147 001150 148 001152 149 001154 150 001156 152 001157 153 001165 154 001167 155 001171 156 001172 157 001173 158 001175 159 001177 160 001202 162 001203 163 001205 165 001215 168 001223 169 001230 173 001241 176 001260 177 001263 178 001265 179 001267 180 001300 181 001306 182 001317 183 001320 184 001321 186 001334 188 001341 190 001345 193 001351 194 001354 197 001362 201 001363 204 001366 205 001375 206 001415 208 001416 209 001432 209 001450 210 001452 211 001455 212 001475 213 001500 216 001501 217 001511 221 001512 222 001524 223 001526 224 001531 225 001532 226 001536 228 001537 230 001541 233 001544 234 001555 236 001566 239 001601 242 001610 244 001636 246 001637 251 001640 252 001650 253 001652 254 001673 259 001737 260 001767 261 001770 262 001771 264 002011 268 002063 269 002077 271 002100 273 002101 274 002103 276 002104 ----------------------------------------------------------- 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