COMPILATION LISTING OF SEGMENT gtss_aft_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/10/84 1221.8 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ************************************************************* 10* * * 11* * Copyright (c) 1979 by Honeywell Information Systems, Inc. * 12* * * 13* ************************************************************* */ 14 gtss_aft_: proc; 15 16 /** Provide gtss AFT (Available File Table) functions. 17* 18* Authors: Robert J. Grimes Created 19* Albert N. Kepner 1978 20* Robert M. May 21* David B. Ward 22* **/ 23 24 /** Declaration of parameters for all 25* entry points. 26* **/ 27 dcl status fixed bin(24)parm; 28 dcl name char(8)parm; 29 dcl file_no fixed bin(24)parm; 30 call com_err_ (0, "gtss_aft_", 31 "See gtss_aft_ documentation for meaningful entries."); 32 return; 33 34 initialize: entry (status); 35 /** Initialize gtss_ext_$aft structure (external) 36* to make all entries available. 37* **/ 38 status = 0; /* => successful. */ 39 start_list = 0; /* => start list empty. */ 40 used = "0"b; /* => AFT empty. */ 41 altname = " "; 42 previous_add = 0; 43 next_add = 0; 44 do i = 2 to hbound (aft_entry, 1); /* Link all entries available. */ 45 next_entry (i-1) = i; 46 end; 47 next_entry (hbound (aft_entry, 1)) = 0; /* End of available chain. */ 48 free_space = 1; /* 1st aft_entry available. */ 49 first_added, last_added = 0; /* No entries yet. */ 50 return; 51 52 add: entry (name, file_no, status); 53 n = translate (name, lower, upper); 54 i = mod (n_fb72, hbound (start_list, 1)+1); 55 k = start_list (i); 56 do while (k>0); /* Examine for name in aft table. */ 57 if n = altname (k) then do; /* Already in table. */ 58 file_no = k; 59 status = 1; 60 return; 61 end; 62 k = next_entry (k); /* Link to next entry. */ 63 end; 64 /* (good) name not in table. */ 65 k = free_space; 66 if k = 0 then do; /* No entries available. */ 67 file_no = 0; 68 status = 2; 69 return; 70 end; 71 72 free_space = next_entry (k); /* Set free_space to next available. */ 73 altname (k) = n; /* Place new name in aft. */ 74 next_entry (k) = start_list (i); /* Link name into hash chain. */ 75 used (k) = "1"b; /* => in use. */ 76 start_list (i) = k; /* Reset start of hash chain. */ 77 78 /** Update order added chain. **/ 79 if last_added = 0 then do; /* First aft entry. */ 80 first_added, last_added = k; 81 previous_add (k), next_add (k) = 0; 82 end; 83 else do; /* Not the first entry. */ 84 previous_add (k) = last_added; /* The current last is before me. */ 85 next_add (last_added) = k; /* Place me at end of order added chain. */ 86 next_add (k) = 0; /* I am the last. */ 87 last_added = k; /* Now I'm the last. */ 88 end; 89 90 file_no = k; 91 status = 0; /* New name successfully added. */ 92 return; 93 94 find: entry (name, file_no, status); 95 n = translate (name, lower, upper); 96 k = start_list (mod (n_fb72, hbound (start_list, 1)+1)); 97 do while (k>0); 98 if n = altname (k) then do; /* Found. */ 99 file_no = k; 100 status = 0; 101 return; 102 end; 103 k = next_entry (k); /* Link to next entry in hash chain. */ 104 end; 105 /* Not found. */ 106 file_no = 0; 107 status = 1; 108 return; 109 110 delete: entry (name, file_no, status); 111 n = translate (name, lower, upper); 112 i = mod (n_fb72, hbound (start_list, 1)+1); 113 k = start_list (i); 114 p = addr (start_list (i)); /* To be reset. */ 115 do while (k>0); 116 if n = altname (k) then do; /* Found. */ 117 p -> fb = next_entry (k); /* Link around k-th entry. */ 118 next_entry (k) = free_space; /* Make k-th entry available. */ 119 used (k) = "0"b; /* => not in use. */ 120 free_space = k; /* Reset start of free entry chain. */ 121 122 /** Adjust add order chain. **/ 123 goto FL (fixed ((first_added = k)|| (last_added = k))); 124 125 FL(0):; /** Neither first nor last. **/ 126 previous_add (next_add (k)) = previous_add (k); 127 next_add (previous_add (k)) = next_add (k); 128 goto fin_FL; 129 130 FL(1):; /** Not the first but is the last. **/ 131 i = previous_add (k); 132 last_added = i; 133 next_add (i) = 0; 134 goto fin_FL; 135 136 FL(2):; /** First but not last. **/ 137 i = next_add (k); 138 first_added = i; 139 previous_add (i) = 0; 140 goto fin_FL; 141 142 FL(3):; /** First and last. **/ 143 first_added, last_added = 0; /* Final name deleted. */ 144 145 fin_FL: ; 146 147 file_no = k; 148 status = 0; 149 return; 150 end; 151 p = addr (next_entry (k)); /* To be reset. */ 152 k = next_entry (k); /* Link to next entry in hash chain. */ 153 end; 154 /* Not found. */ 155 file_no = 0; 156 status = 1; 157 return; 158 159 /** Variables for gtss_aft_: 160* IDENTIFIER ATTRIBUTES **/ 161 dcl com_err_ entry options(variable); 162 dcl fb fixed bin(24)based; 163 dcl hbound builtin; 164 dcl i fixed bin(24); 165 dcl k fixed bin(24); 166 dcl lower char(26)aligned static int options(constant)init("abcdefghijklmnopqrstuvwxyz"); 167 dcl mod builtin; 168 dcl n char(8)aligned /* Local name value. */; 169 dcl n_fb72 fixed bin(71)aligned based(addr(n)) /* Name as numeric value. */; 170 dcl p ptr; 171 dcl translate builtin; 172 dcl upper char(26)aligned static int options(constant)init("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 173 1 1 /* BEGIN INCLUDE FILE gtss_ext_.incl.pl1 */ 1 2 /* 1 3* Created: (Wardd Multics) 05/20/78 1307.6 mst Sat 1 4* Modified: Ward 1981 add suspended_process dcl 1 5* Modified: Ron Barstad 83-07-21 Fixed level number on mcfc to 3 1 6* Modified: Ron Barstad 83-07-25 Fixed derail range in statistics to 4js3 number 1 7**/ 1 8 dcl gtss_ext_$aem fixed bin static ext /* >0 Print "additional" error information. */; 1 9 dcl gtss_ext_$bad_drl_rtrn static ext label /* Default for drl_rtrn. */; 1 10 dcl gtss_ext_$db (72)bit(1)unal static ext; 1 11 dcl gtss_ext_$deferred_catalogs_ptr ptr ext; 1 12 dcl gtss_ext_$dispose_of_drl static ext label /* quit handlers for some derails use this label to abort */; 1 13 dcl gtss_ext_$drl_rtrn (4)static ext label /* where to return at subsystem end */; 1 14 dcl gtss_ext_$drm_path char(168)static ext /* gtss_expand_pathname_stores drm_path */; 1 15 dcl gtss_ext_$drun_jid char (5) static ext /* valid only for DRUN executing under absentee */; 1 16 dcl gtss_ext_$event_channel fixed bin (71) static ext /* used for DABT signals */; 1 17 dcl gtss_ext_$finished static ext label /* Return to gtss for normal conclusion. */; 1 18 dcl gtss_ext_$gdb_name char(8)ext /* Name H* module to debug. */; 1 19 dcl gtss_ext_$get_line entry(ptr,ptr,fixed bin(21),fixed bin(21),fixed bin(35))variable ext /* Build mode input procedure. */; 1 20 dcl gtss_ext_$gtss_slave_area_seg (4) ext static ptr /* pointer to gtss slave area segment */; 1 21 dcl gtss_ext_$hcs_work_area_ptr ptr ext static /* Temp seg for acl lists. */; 1 22 dcl gtss_ext_$homedir char (64) static ext /* user's home dir */; 1 23 dcl gtss_ext_$last_k_was_out bit (1)aligned ext static /* "1"b => last tty output was output. */; 1 24 dcl gtss_ext_$pdir char (168) varying ext static /* pathname of process directory */; 1 25 dcl gtss_ext_$popup_from_pi static ext label /* transfer to this label after pi simulates popup primitive */; 1 26 dcl gtss_ext_$process_type fixed bin (17) static ext; 1 27 dcl gtss_ext_$put_chars entry(ptr,ptr,fixed bin(24),fixed bin(35)) variable ext /* Terminal output procedure. */; 1 28 dcl gtss_ext_$restart_from_pi static ext label /* transfer to this label after pi restores machine conditions */; 1 29 dcl gtss_ext_$restart_seg_ptr ptr static ext /* points to DRUN restart file when exec under absentee */; 1 30 dcl gtss_ext_$sig_ptr ext static ptr /* saved ptr to signal_ */; 1 31 dcl gtss_ext_$stack_level_ fixed bin ext static; 1 32 dcl gtss_ext_$suspended_process bit(1) ext static; 1 33 dcl gtss_ext_$SYstarstar_file_no fixed bin (24) static ext; 1 34 dcl gtss_ext_$user_id char (26)var ext; 1 35 dcl gtss_ext_$work_area_ptr ptr ext; 1 36 1 37 dcl 1 gtss_ext_$CFP_bits aligned static external 1 38 , 3 no_input_yet bit (1) unaligned /* used in gtss_CFP_input_, gtss_read_starCFP_ */ 1 39 , 3 rtn_bits bit (4) unaligned /* used in gtss_CFP_input_, gtss_CFP_output_ */ 1 40 , 3 cpos_called bit (1) unaligned /* used in gtss_CFP_input_, gtss_drl_t_cfio_, gtss_abandon_CFP_ */ 1 41 , 3 cout_called bit (1) unaligned /* used in gtss_read_starCFP_, gtss_abandon_CFP_ */ 1 42 , 3 build_mode bit (1) unaligned /* used in gtss_build_, gtss_dsd_process_ */ 1 43 ; 1 44 1 45 dcl 1 gtss_ext_$com_reg aligned static ext, 1 46 3 tsdmx, 1 47 4 dst fixed bin (18) unsigned unaligned, 1 48 4 dit fixed bin (18) unsigned unaligned, 1 49 3 tsdpt fixed bin (36) unsigned unaligned, 1 50 3 tsddt fixed bin (36) unsigned unaligned, 1 51 3 tsdid bit (72) unaligned, 1 52 3 tsdsd bit (36) unaligned, 1 53 3 tsdst fixed bin (36) unsigned unaligned, 1 54 3 tsdjb fixed bin (35) unaligned, 1 55 3 tsdgt, 1 56 4 ust_loc fixed bin (18) unsigned unaligned, 1 57 4 gating_ctl fixed bin (18) unsigned unaligned, 1 58 3 tcdfr bit (36) unaligned; 1 59 1 60 dcl 1 gtss_ext_$flags aligned static ext 1 61 , 3 dispose_of_drl_on_pi bit (01) unal /* 1 => drl that should be aborted after quit-pi sequence */ 1 62 , 3 drl_in_progress bit (01) unal /* 1 => drl handler executing; 0 => gcos code executing */ 1 63 , 3 popup_from_pi bit (01) unal /* 1 => derail processor will simulate Gcos break instead of returning */ 1 64 , 3 unfinished_drl bit (01) unal /* 1 => subsystem is handling breaks and quit was raised during a drl */ 1 65 , 3 ss_time_limit_set bit (01) unal /* 1 => exec time limit set for subsystem */ 1 66 , 3 timer_ranout bit (01) unal /* 1 => user is executing timer runout code */ 1 67 , 3 gtss_com_err_sw bit (01) unal /* 1 => stop com_err_ string from going to terminal */ 1 68 , 3 available bit (65) unal 1 69 ; 1 70 1 71 1 72 dcl 1 gtss_ext_$statistics aligned static ext, /* Derail usage statistics */ 1 73 3 total_time (-10:71)fixed bin (71), 1 74 3 count (-10:71)fixed bin (17); 1 75 1 76 /* Declaration of Available File Table 1 77* */ 1 78 dcl 1 gtss_ext_$aft aligned ext, /* aft structure */ 1 79 1 80 3 start_list (0:102) fixed bin (24), /* >0 => 1st aft_entry row to start of next entry chain. */ 1 81 1 82 3 aft_entry (20), 1 83 4 altname char (8), /* altname name for attaching this file */ 1 84 4 next_entry fixed bin (24), /* Next aft_entry in hash chain. */ 1 85 4 previous_add fixed bin (24), /* Previously added entry. */ 1 86 4 next_add fixed bin (24), /* Entry added after this one. */ 1 87 4 used bit (1) unal, /* "1"b => aft_entry contains AFT value. */ 1 88 4 forced bit(1) unal, /* "1"b => gtss_verify_access_ forced access on this file. */ 1 89 1 90 3 free_space fixed bin (24), /* Index of start of free space list for aft entries. */ 1 91 3 first_added fixed bin (24), /* >0 => start of chain in add order. */ 1 92 3 last_added fixed bin (24) /* >0 => end of chain in added order. */; 1 93 1 94 dcl gtss_ext_$ppt ptr ext /* switch name for tapein drl */; 1 95 /** Data structure to provide access to installed 1 96* subsystems fast library load. 1 97* **/ 1 98 dcl 1 gtss_ext_$fast_lib aligned ext 1 99 , 3 fast_lib_fcb ptr /* Pointer to msf fcb. */ 1 100 , 3 fast_lib_ncp fixed bin (24) /* Number of components. */ 1 101 , 3 comp_ptr (0:9)ptr /* Pointer to component. */ 1 102 , 3 comp_wds (0:9)fixed bin (24) /* Component length (words). */ 1 103 ; 1 104 1 105 /* Pointers to segments to regulate multipler 1 106* callers to files. Same segments are used to regulate 1 107* all simulator callers. 1 108**/ 1 109 dcl 1 gtss_ext_$mcfc aligned ext, 1 110 3 multics_lock_id bit(36), 1 111 3 wait_time fixed bin, 1 112 3 files_ptr ptr, 1 113 3 names_ptr ptr, 1 114 3 callers_ptr (0:3)ptr 1 115 ; 1 116 1 117 /* END INCLUDE FILE gtss_ext_.incl.pl1 */ 174 175 end /* gtss_aft_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/10/84 1042.8 gtss_aft_.pl1 >spec>on>7105>gtss_aft_.pl1 174 1 09/09/83 1713.8 gtss_ext_.incl.pl1 >ldd>include>gtss_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. aft_entry 147 000012 external static structure array level 2 dcl 1-78 set ref 44 47 altname 147 000012 external static char(8) array level 3 dcl 1-78 set ref 41* 57 73* 98 116 com_err_ 000010 constant entry external dcl 161 ref 30 fb based fixed bin(24,0) dcl 162 set ref 117* file_no parameter fixed bin(24,0) dcl 29 set ref 52 58* 67* 90* 94 99* 106* 110 147* 155* first_added 340 000012 external static fixed bin(24,0) level 2 dcl 1-78 set ref 49* 80* 123 138* 143* free_space 337 000012 external static fixed bin(24,0) level 2 dcl 1-78 set ref 48* 65 72* 118 120* gtss_ext_$aft 000012 external static structure level 1 dcl 1-78 hbound builtin function dcl 163 ref 44 47 54 96 112 i 000100 automatic fixed bin(24,0) dcl 164 set ref 44* 45 45* 54* 55 74 76 112* 113 114 131* 132 133 137* 138 139 k 000101 automatic fixed bin(24,0) dcl 165 set ref 55* 56 57 58 62* 62 65* 66 72 73 74 75 76 80 81 81 84 85 86 87 90 96* 97 98 99 103* 103 113* 115 116 117 118 119 120 123 123 126 126 127 127 131 137 147 151 152* 152 last_added 341 000012 external static fixed bin(24,0) level 2 dcl 1-78 set ref 49* 79 80* 84 85 87* 123 132* 143* lower 000013 constant char(26) initial dcl 166 ref 53 95 111 mod builtin function dcl 167 ref 54 96 112 n 000102 automatic char(8) dcl 168 set ref 53* 54 57 73 95* 96 98 111* 112 116 n_fb72 based fixed bin(71,0) dcl 169 ref 54 96 112 name parameter char(8) unaligned dcl 28 ref 52 53 94 95 110 111 next_add 153 000012 external static fixed bin(24,0) array level 3 dcl 1-78 set ref 43* 81* 85* 86* 126 127* 127 133* 137 next_entry 151 000012 external static fixed bin(24,0) array level 3 dcl 1-78 set ref 45* 47* 62 72 74* 103 117 118* 151 152 p 000104 automatic pointer dcl 170 set ref 114* 117 151* previous_add 152 000012 external static fixed bin(24,0) array level 3 dcl 1-78 set ref 42* 81* 84* 126* 126 127 131 139* start_list 000012 external static fixed bin(24,0) array level 2 dcl 1-78 set ref 39* 54 55 74 76* 96 96 112 113 114 status parameter fixed bin(24,0) dcl 27 set ref 34 38* 52 59* 68* 91* 94 100* 107* 110 148* 156* translate builtin function dcl 171 ref 53 95 111 upper 000004 constant char(26) initial dcl 172 ref 53 95 111 used 154 000012 external static bit(1) array level 3 packed unaligned dcl 1-78 set ref 40* 75* 119* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. gtss_ext_$CFP_bits external static structure level 1 dcl 1-37 gtss_ext_$SYstarstar_file_no external static fixed bin(24,0) dcl 1-33 gtss_ext_$aem external static fixed bin(17,0) dcl 1-8 gtss_ext_$bad_drl_rtrn external static label variable dcl 1-9 gtss_ext_$com_reg external static structure level 1 dcl 1-45 gtss_ext_$db external static bit(1) array unaligned dcl 1-10 gtss_ext_$deferred_catalogs_ptr external static pointer dcl 1-11 gtss_ext_$dispose_of_drl external static label variable dcl 1-12 gtss_ext_$drl_rtrn external static label variable array dcl 1-13 gtss_ext_$drm_path external static char(168) unaligned dcl 1-14 gtss_ext_$drun_jid external static char(5) unaligned dcl 1-15 gtss_ext_$event_channel external static fixed bin(71,0) dcl 1-16 gtss_ext_$fast_lib external static structure level 1 dcl 1-98 gtss_ext_$finished external static label variable dcl 1-17 gtss_ext_$flags external static structure level 1 dcl 1-60 gtss_ext_$gdb_name external static char(8) unaligned dcl 1-18 gtss_ext_$get_line external static entry variable dcl 1-19 gtss_ext_$gtss_slave_area_seg external static pointer array dcl 1-20 gtss_ext_$hcs_work_area_ptr external static pointer dcl 1-21 gtss_ext_$homedir external static char(64) unaligned dcl 1-22 gtss_ext_$last_k_was_out external static bit(1) dcl 1-23 gtss_ext_$mcfc external static structure level 1 dcl 1-109 gtss_ext_$pdir external static varying char(168) dcl 1-24 gtss_ext_$popup_from_pi external static label variable dcl 1-25 gtss_ext_$ppt external static pointer dcl 1-94 gtss_ext_$process_type external static fixed bin(17,0) dcl 1-26 gtss_ext_$put_chars external static entry variable dcl 1-27 gtss_ext_$restart_from_pi external static label variable dcl 1-28 gtss_ext_$restart_seg_ptr external static pointer dcl 1-29 gtss_ext_$sig_ptr external static pointer dcl 1-30 gtss_ext_$stack_level_ external static fixed bin(17,0) dcl 1-31 gtss_ext_$statistics external static structure level 1 dcl 1-72 gtss_ext_$suspended_process external static bit(1) unaligned dcl 1-32 gtss_ext_$user_id external static varying char(26) dcl 1-34 gtss_ext_$work_area_ptr external static pointer dcl 1-35 NAMES DECLARED BY EXPLICIT CONTEXT. FL 000000 constant label array(0:3) dcl 125 ref 123 add 000253 constant entry external dcl 52 delete 000467 constant entry external dcl 110 fin_FL 000614 constant label dcl 145 ref 128 134 140 find 000406 constant entry external dcl 94 gtss_aft_ 000053 constant entry external dcl 14 initialize 000114 constant entry external dcl 34 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 54 96 112 114 151 fixed builtin function ref 123 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1122 1136 1035 1132 Length 1332 1035 14 160 65 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gtss_aft_ 108 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gtss_aft_ 000100 i gtss_aft_ 000101 k gtss_aft_ 000102 n gtss_aft_ 000104 p gtss_aft_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc return mod_fx3 ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. gtss_ext_$aft LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000052 30 000060 32 000110 34 000111 38 000124 39 000125 40 000140 41 000154 42 000172 43 000205 44 000221 45 000227 46 000235 47 000237 48 000242 49 000244 50 000246 52 000247 53 000263 54 000271 55 000277 56 000302 57 000304 58 000316 59 000321 60 000323 62 000324 63 000326 65 000327 66 000333 67 000334 68 000336 69 000340 72 000341 73 000345 74 000350 75 000353 76 000355 79 000357 80 000362 81 000365 82 000367 84 000370 85 000371 86 000376 87 000377 90 000400 91 000402 92 000403 94 000404 95 000416 96 000424 97 000434 98 000436 99 000450 100 000453 101 000454 103 000455 104 000457 106 000460 107 000462 108 000464 110 000465 111 000477 112 000505 113 000513 114 000516 115 000521 116 000524 117 000536 118 000540 119 000542 120 000544 123 000546 125 000557 126 000560 127 000565 128 000572 130 000573 131 000574 132 000576 133 000577 134 000601 136 000602 137 000603 138 000605 139 000606 140 000610 142 000611 143 000612 145 000614 147 000615 148 000620 149 000621 151 000622 152 000624 153 000626 155 000627 156 000631 157 000633 ----------------------------------------------------------- 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