COMPILATION LISTING OF SEGMENT convert_configuration_deck Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/09/85 1130.3 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 convert_configuration_deck: proc; 7 8 /* Program to use config_deck_parse_ to convert an ascii source form of config 9*deck to binary. This would be done mostly to test the source for errors. It 10*also allows for a compare_configuration_deck against a binary deck. 11*Keith Loepere, February 1984. */ 12 13 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 14 15 dcl NL char (1) static options (constant) init (" 16 "); 17 dcl addr builtin; 18 dcl arg char (arg_len) based (arg_ptr); 19 dcl arg_count fixed bin; 20 dcl arg_len fixed bin (21); 21 dcl arg_ptr ptr; 22 dcl ascii_config_card char (256) var; 23 dcl ascii_ptr ptr; /* to ascii input file */ 24 dcl bit_count fixed bin (24); /* of ascii file */ 25 dcl card_len fixed bin (21); /* length of text in card (minus nl) */ 26 dcl cleanup condition; 27 dcl code fixed bin (35); 28 dcl com_err_ entry () options (variable); 29 dcl config_deck_parse_$ascii_to_binary entry (char (256) var, ptr, fixed bin); 30 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 31 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 32 dcl divide builtin; 33 dcl entryname char (32); /* with equals in it */ 34 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 35 dcl expand_pathname_$component entry (char (*), char (*), char (*), char (*), fixed bin (35)); 36 dcl file char (file_lth) based (ascii_ptr); /* ascii input file */ 37 dcl file_lth fixed bin (21); 38 dcl file_pos fixed bin (21); /* starting pos in file for this new line */ 39 dcl get_equal_name_ entry (char (*), char (*), char (32), fixed bin (35)); 40 dcl index builtin; 41 dcl input_card_num fixed bin; /* input line num */ 42 dcl initiate_file_$create entry (char (*), char (*), bit (*), ptr, bit (1) aligned, fixed bin (24), fixed bin (35)); 43 dcl initiate_file_$component entry (char (*), char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 44 dcl me char (26) static options (constant) init ("convert_configuration_deck"); 45 dcl null builtin; 46 dcl output_card_num fixed bin; /* index into config deck */ 47 dcl s_componentname char (32); 48 dcl s_dirname char (168); 49 dcl s_entryname char (32); 50 dcl size builtin; 51 dcl substr builtin; 52 dcl t_dirname char (168); 53 dcl t_entryname char (32); 54 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 55 56 call cu_$arg_count (arg_count, code); 57 if code ^= 0 | arg_count ^= 2 then do; 58 call com_err_ (code, me, "Usage: convert_configuration_deck ascii_file binary_file"); 59 return; 60 end; 61 ascii_ptr = null; 62 configp = null; 63 on cleanup call clean_up; 64 65 call cu_$arg_ptr (1, arg_ptr, arg_len, code); /* find ascii source */ 66 call expand_pathname_$component (arg, s_dirname, s_entryname, s_componentname, code); 67 if code ^= 0 then go to error; 68 call initiate_file_$component (s_dirname, s_entryname, s_componentname, R_ACCESS, ascii_ptr, bit_count, code); 69 if ascii_ptr = null then go to error; 70 file_lth = divide (bit_count + 8, 9, 21); 71 72 call cu_$arg_ptr (2, arg_ptr, arg_len, code); /* find binary output seg */ 73 call expand_pathname_ (arg, t_dirname, entryname, code); 74 if code ^= 0 then go to error; 75 call get_equal_name_ (s_entryname, entryname, t_entryname, code); 76 if code ^= 0 then go to error; 77 call initiate_file_$create (t_dirname, t_entryname, RW_ACCESS, configp, ("0"b), (0), code); 78 if configp = null then go to error; 79 80 config_max_cards, config_n_cards = 256; 81 input_card_num, output_card_num = 0; 82 file_pos = 1; 83 do while (file_pos <= file_lth); 84 input_card_num = input_card_num + 1; 85 card_len = index (substr (file, file_pos), NL); 86 if card_len = 0 then card_len = file_lth - file_pos + 1; 87 else card_len = card_len - 1; 88 ascii_config_card = substr (file, file_pos, card_len); 89 file_pos = file_pos + card_len + 1; 90 if card_len > 0 then do; 91 output_card_num = output_card_num + 1; 92 cardp = addr (config_deck.cards (output_card_num)); 93 call config_deck_parse_$ascii_to_binary (ascii_config_card, cardp, input_card_num); 94 end; 95 end; 96 do output_card_num = output_card_num + 1 to config_max_cards; /* blank out rest of deck */ 97 config_deck.cards (output_card_num).word = FREE_CARD_WORD; 98 end; 99 100 /* call total_config_deck_check; */ 101 102 call clean_up; 103 return; 104 105 error: call com_err_ (code, me, "^a", arg); 106 call clean_up; 107 return; 108 109 clean_up: proc; 110 111 if configp ^= null then call terminate_file_ (configp, 36 * size (config_deck), TERM_FILE_BC | TERM_FILE_TERM, code); 112 if ascii_ptr ^= null then call terminate_file_ (ascii_ptr, 0, TERM_FILE_TERM, code); 113 return; 114 end; 115 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 115 116 /* BEGIN INCLUDE FILE ... config_deck.incl.pl1 ... 11/13/80, W. Olin Sibert */ 2 2 2 3 dcl (configp, cardp) pointer; 2 4 dcl config_n_cards fixed bin; /* Number of cards used in config */ 2 5 dcl config_max_cards fixed bin; /* Max number of cards in config */ 2 6 2 7 dcl config_deck$ fixed bin external static; 2 8 2 9 dcl 1 config_deck aligned based (configp), 2 10 2 cards (config_n_cards) aligned like config_card, 2 11 2 pad_cards (config_max_cards - config_n_cards) aligned like config_card; 2 12 2 13 dcl 1 config_card aligned based (cardp), 2 14 2 word char (4) aligned, 2 15 2 data_field (14) bit (36) aligned, 2 16 2 type_word aligned like config_card_type_word; 2 17 2 18 dcl 1 config_card_type_word aligned based, 2 19 2 field_type (14) bit (2) unaligned, 2 20 2 pad1 bit (4) unaligned, 2 21 2 n_fields fixed bin (4) unsigned unaligned; 2 22 2 23 dcl (CONFIG_DECIMAL_TYPE init ("11"b), 2 24 CONFIG_OCTAL_TYPE init ("00"b), 2 25 CONFIG_SINGLE_CHAR_TYPE init ("01"b), 2 26 CONFIG_STRING_TYPE init ("10"b)) bit (2) aligned static options (constant); 2 27 2 28 dcl ZERO_CARD_WORD char (4) aligned internal static options (constant) init (""); 2 29 dcl FREE_CARD_WORD char (4) aligned internal static options (constant) init ("ÿÿÿÿ"); 2 30 2 31 dcl VALID_CARD_WORD_CHARACTERS char (38) internal static options (constant) init 2 32 ("abcdefghijklmnopqrstuvwxyz0123456789_."); /* lowercase letters, digits, period and underscore */ 2 33 2 34 dcl EMPTY_FIELD bit (36) aligned internal static options (constant) init ("777777777777"b3); 2 35 2 36 /* END INCLUDE FILE config_deck.incl.pl1 */ 116 117 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 3 2 /* format: style2,^inddcls,idind32 */ 3 3 3 4 declare 1 terminate_file_switches based, 3 5 2 truncate bit (1) unaligned, 3 6 2 set_bc bit (1) unaligned, 3 7 2 terminate bit (1) unaligned, 3 8 2 force_write bit (1) unaligned, 3 9 2 delete bit (1) unaligned; 3 10 3 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 3 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 3 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 3 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 3 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 3 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 3 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 3 18 3 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 117 118 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/08/85 1133.8 convert_configuration_deck.pl1 >spec>on>41-15>convert_configuration_deck.pl1 115 1 04/09/85 1109.7 access_mode_values.incl.pl1 >spec>on>41-15>access_mode_values.incl.pl1 116 2 05/08/81 1853.6 config_deck.incl.pl1 >ldd>include>config_deck.incl.pl1 117 3 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. FREE_CARD_WORD 000730 constant char(4) initial dcl 2-29 ref 97 NL constant char(1) initial unaligned dcl 15 ref 85 RW_ACCESS 000001 constant bit(3) initial unaligned dcl 1-11 set ref 77* R_ACCESS 000002 constant bit(3) initial unaligned dcl 1-11 set ref 68* TERM_FILE_BC constant bit(2) initial unaligned dcl 3-12 ref 111 TERM_FILE_TERM 000000 constant bit(3) initial unaligned dcl 3-14 set ref 111 112* addr builtin function dcl 17 ref 92 arg based char unaligned dcl 18 set ref 66* 73* 105* arg_count 000100 automatic fixed bin(17,0) dcl 19 set ref 56* 57 arg_len 000101 automatic fixed bin(21,0) dcl 20 set ref 65* 66 66 72* 73 73 105 105 arg_ptr 000102 automatic pointer dcl 21 set ref 65* 66 72* 73 105 ascii_config_card 000104 automatic varying char(256) dcl 22 set ref 88* 93* ascii_ptr 000206 automatic pointer dcl 23 set ref 61* 68* 69 85 88 112 112* bit_count 000210 automatic fixed bin(24,0) dcl 24 set ref 68* 70 card_len 000211 automatic fixed bin(21,0) dcl 25 set ref 85* 86 86* 87* 87 88 89 90 cardp 000414 automatic pointer dcl 2-3 set ref 92* 93* cards based structure array level 2 dcl 2-9 set ref 92 cleanup 000212 stack reference condition dcl 26 ref 63 code 000220 automatic fixed bin(35,0) dcl 27 set ref 56* 57 58* 65* 66* 67 68* 72* 73* 74 75* 76 77* 105* 111* 112* com_err_ 000010 constant entry external dcl 28 ref 58 105 config_card based structure level 1 dcl 2-13 config_card_type_word based structure level 1 dcl 2-18 config_deck based structure level 1 dcl 2-9 set ref 111 config_deck_parse_$ascii_to_binary 000012 constant entry external dcl 29 ref 93 config_max_cards 000417 automatic fixed bin(17,0) dcl 2-5 set ref 80* 96 111 config_n_cards 000416 automatic fixed bin(17,0) dcl 2-4 set ref 80* 111 111 configp 000412 automatic pointer dcl 2-3 set ref 62* 77* 78 92 97 111 111* 111 cu_$arg_count 000014 constant entry external dcl 30 ref 56 cu_$arg_ptr 000016 constant entry external dcl 31 ref 65 72 divide builtin function dcl 32 ref 70 entryname 000221 automatic char(32) unaligned dcl 33 set ref 73* 75* expand_pathname_ 000020 constant entry external dcl 34 ref 73 expand_pathname_$component 000022 constant entry external dcl 35 ref 66 file based char unaligned dcl 36 ref 85 88 file_lth 000231 automatic fixed bin(21,0) dcl 37 set ref 70* 83 85 86 88 file_pos 000232 automatic fixed bin(21,0) dcl 38 set ref 82* 83 85 86 88 89* 89 get_equal_name_ 000024 constant entry external dcl 39 ref 75 index builtin function dcl 40 ref 85 initiate_file_$component 000030 constant entry external dcl 43 ref 68 initiate_file_$create 000026 constant entry external dcl 42 ref 77 input_card_num 000233 automatic fixed bin(17,0) dcl 41 set ref 81* 84* 84 93* me 000003 constant char(26) initial unaligned dcl 44 set ref 58* 105* null builtin function dcl 45 ref 61 62 69 78 111 112 output_card_num 000234 automatic fixed bin(17,0) dcl 46 set ref 81* 91* 91 92 96* 96* 97* s_componentname 000235 automatic char(32) unaligned dcl 47 set ref 66* 68* s_dirname 000245 automatic char(168) unaligned dcl 48 set ref 66* 68* s_entryname 000317 automatic char(32) unaligned dcl 49 set ref 66* 68* 75* size builtin function dcl 50 ref 111 substr builtin function dcl 51 ref 85 88 t_dirname 000327 automatic char(168) unaligned dcl 52 set ref 73* 77* t_entryname 000401 automatic char(32) unaligned dcl 53 set ref 75* 77* terminate_file_ 000032 constant entry external dcl 54 ref 111 112 word based char(4) array level 3 dcl 2-9 set ref 97* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 CONFIG_DECIMAL_TYPE internal static bit(2) initial dcl 2-23 CONFIG_OCTAL_TYPE internal static bit(2) initial dcl 2-23 CONFIG_SINGLE_CHAR_TYPE internal static bit(2) initial dcl 2-23 CONFIG_STRING_TYPE internal static bit(2) initial dcl 2-23 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-33 EMPTY_FIELD internal static bit(36) initial dcl 2-34 E_ACCESS internal static bit(3) initial unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 M_ACCESS internal static bit(3) initial unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 REW_ACCESS internal static bit(3) initial unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 3-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 3-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 3-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 3-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 3-15 VALID_CARD_WORD_CHARACTERS internal static char(38) initial unaligned dcl 2-31 W_ACCESS internal static bit(3) initial unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 ZERO_CARD_WORD internal static char(4) initial dcl 2-28 config_deck$ external static fixed bin(17,0) dcl 2-7 terminate_file_switches based structure level 1 packed unaligned dcl 3-4 NAMES DECLARED BY EXPLICIT CONTEXT. clean_up 000622 constant entry internal dcl 109 ref 63 102 106 convert_configuration_deck 000051 constant entry external dcl 6 error 000562 constant label dcl 105 ref 67 69 74 76 78 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1104 1140 731 1114 Length 1404 731 34 227 152 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME convert_configuration_deck 361 external procedure is an external procedure. on unit on line 63 64 on unit clean_up 84 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME convert_configuration_deck 000100 arg_count convert_configuration_deck 000101 arg_len convert_configuration_deck 000102 arg_ptr convert_configuration_deck 000104 ascii_config_card convert_configuration_deck 000206 ascii_ptr convert_configuration_deck 000210 bit_count convert_configuration_deck 000211 card_len convert_configuration_deck 000220 code convert_configuration_deck 000221 entryname convert_configuration_deck 000231 file_lth convert_configuration_deck 000232 file_pos convert_configuration_deck 000233 input_card_num convert_configuration_deck 000234 output_card_num convert_configuration_deck 000235 s_componentname convert_configuration_deck 000245 s_dirname convert_configuration_deck 000317 s_entryname convert_configuration_deck 000327 t_dirname convert_configuration_deck 000401 t_entryname convert_configuration_deck 000412 configp convert_configuration_deck 000414 cardp convert_configuration_deck 000416 config_n_cards convert_configuration_deck 000417 config_max_cards convert_configuration_deck THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ config_deck_parse_$ascii_to_binary cu_$arg_count cu_$arg_ptr expand_pathname_ expand_pathname_$component get_equal_name_ initiate_file_$component initiate_file_$create terminate_file_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000050 56 000056 57 000066 58 000073 59 000117 61 000120 62 000122 63 000123 65 000145 66 000164 67 000217 68 000221 69 000261 70 000265 72 000271 73 000310 74 000340 75 000342 76 000365 77 000367 78 000433 80 000437 81 000442 82 000444 83 000446 84 000451 85 000452 86 000471 87 000477 88 000501 89 000511 90 000515 91 000517 92 000520 93 000525 95 000540 96 000541 97 000547 98 000553 102 000555 103 000561 105 000562 106 000614 107 000620 109 000621 111 000627 112 000674 113 000727 ----------------------------------------------------------- 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