COMPILATION LISTING OF SEGMENT add_symbols Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1058.78_Tue_mdt Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems * 5* * Inc., 1980. * 6* * * 7* * * 8* ****************************************************** */ 9 10 add_symbols: asb: procedure; 11 12 /* This procedure implements the add_symbols command. 13* * Created on 10/15/75 by Bill Silver as add_notescript. 14* * Changed on 06/07/77 by Bill Silver to add_symbols. 15* * Changed on 10/28/80 by Paul Benjamin for special suffixing. 16* * 17* * The add_symbols command will add a new symbol to the 18* * current Speedtype symbol dictionary. Its calling sequence is: 19* * 20* * add_symbols, asb symbol expansion {-control_args} 21* * 22* * where: 23* * 24* * -fc, -force Specifying this argument will force the replacement 25* * of the expansion of an already defined symbol. 26* * If the symbol is already defined and this argument is 27* * not specified then the user will be asked if he wants to 28* * replace this symbol. 29* * 30* * -plural AA SUFFIX options. 31* * -ed AA 32* * -ing AA 33* * -er AA 34* * -ly AA 35* * 36* * -suffix "on" or "off" 37**/ 38 39 /* AUTOMATIC DATA */ 40 41 dcl suffix_lens (5) fixed bin; /* Length of each suffix expansion. */ 42 dcl suffix_exps (5) char (56+4); /* +4 => room for suffix). */ 43 44 /* Note above that 5 is really hbound(exp.actionx,1) and 56 is really length(exp.expansion). */ 45 46 47 dcl answer char (4) varying; /* Answer to command query. */ 48 dcl arg_len fixed bin; /* Length of a command argument. */ 49 dcl arg_ptr ptr; /* Pointer to a command argument. */ 50 dcl argx fixed bin; /* Index of current command argument. */ 51 dcl dir_name char (168); /* Directory containing symbol dict. */ 52 dcl ecode fixed bin (35); /* Error table code. */ 53 dcl ent_name char (32); /* Symbol dictionary */ 54 dcl exp_len fixed bin; /* Length of expansion argument. */ 55 dcl expansion char (56); /* Expansion for the new symbol. */ 56 57 /* Note above that 56 is really length(exp.expansion). */ 58 59 dcl force_flag bit (1); /* ON => force the replacement of defined symbol. */ 60 dcl i fixed bin; 61 dcl symbol char (7); /* The new symbol. */ 62 dcl sbx fixed bin; /* Index of symbol entry. */ 63 dcl temp_code fixed bin (35); /* Used when already have non-zero ecode. */ 64 dcl num_args fixed bin; /* Number of command arguments. */ 65 dcl option char (8); /* Control argument option. */ 66 dcl optx fixed bin; /* Option index. */ 67 68 dcl 1 query_info aligned, /* Info structure for command_query_. */ 69 2 version fixed bin, 70 (2 yes_no bit (1), 71 2 suppress_name bit (1)) unaligned, 72 2 status_code fixed bin, 73 2 other_code fixed bin; 74 75 76 /* BASED DATA */ 77 78 dcl argument char (arg_len) based (arg_ptr); /* Command argument. */ 79 80 81 /* INTERNAL STATIC DATA */ 82 83 dcl options (6) char (8) /* Control argument options. */ 84 internal static init ("-plural", "-ed", "-ing", "-er", "-ly", "-suffix"); 85 86 dcl new_line char (1) /* Used to set up symbol entry. */ 87 internal static init (" 88 "); 89 90 91 /* EXTERNAL ENTRIES CALLED */ 92 93 dcl (addr, hbound, length, min) builtin; 94 95 dcl error_table_$bad_arg fixed bin (35) external; 96 dcl error_table_$badopt fixed bin (35) external; 97 dcl error_table_$no_w_permission fixed bin(35) ext static; 98 dcl error_table_$odd_no_of_args fixed bin (35) external; 99 dcl error_table_$wrong_no_of_args fixed bin (35) external; 100 101 dcl com_err_ entry options (variable); 102 dcl command_query_ entry options (variable); 103 dcl cu_$arg_count entry (fixed bin); 104 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 105 dcl speedtype_index_ entry (char (*), ptr, fixed bin, fixed bin (35)); 106 dcl speedtype_info_$expand_table entry (ptr, fixed bin(35)); 107 dcl speedtype_info_$name entry (char (*), char (*), fixed bin (35)); 108 dcl speedtype_info_$pointer entry (ptr, fixed bin (35)); 109 dcl speedtype_info_$set_bc entry (ptr, fixed bin (35)); 110 dcl speedtype_suffix_ entry (ptr, ptr, ptr, fixed bin, ptr, fixed bin); 111 /* */ 1 1 /* Begin include file ... speedtype_symbols.incl.pl1 1 2** Created on 09/06/76 by Bill Silver. 1 3** Modified 06/03/80 by Paul Benjamin to allow special suffixing. 1 4** 1 5** This include file defines the format of a Speedtype Symbol Dictionary. 1 6** The default Speedtype options are: 1 7** 1 8** ESCAPES: 1 9** temp "~" pad (Octal 177) perm "`" trans ":" space ";" 1 10** PREFIXES: 1 11** under "_" upper "+" 1 12** SUFFIXES: 1 13** plural "+" ed "-" ing "*" er "=" ly "|" 1 14** DELIMITERS: 1 15** ,"()?!<>[]{} 1 16**/ 1 17 dcl ssd_ptr ptr; /* Pointer to the base of a Speedtype Symbol Dictionary. */ 1 18 dcl exp_ptr ptr; /* Pointer to an expansion entry. */ 1 19 dcl sb_ptr ptr; /* Pointer to a symbol entry. */ 1 20 dcl spc_ptr ptr; /* Pointer to a special entry. */ 1 21 dcl delim_ptr ptr; /* Pointer to delimiter characters. */ 1 22 1 23 dcl ssd_version_2 fixed bin /* Version of this include file. */ 1 24 internal static init (2); 1 25 1 26 dcl 1 ssd based(ssd_ptr) aligned, /* Format of a Speedtype Symbol Dictionary. */ 1 27 2 version fixed bin, /* Version number. Currently = 2. */ 1 28 2 identifier char(12), /* "Seedtype_SD" => this is a Speedtype Symbol Dictionary. */ 1 29 2 flags bit(36), /* Not used, all zero. */ 1 30 2 delimiters char(24), /* Blank, New Line, Tab, Escapes, Others. */ 1 31 2 escapes char(5), /* Pad, Perm, Temp, Trans, Space */ 1 32 2 prefixes char(2), /* Under, Upper. */ 1 33 2 suffixes char(5), /* Plural, ed, ing, er, ly. */ 1 34 2 num_symbols fixed bin, /* Number of defined symbols. */ 1 35 2 table_size fixed bin, /* Size of the 3 tables to follow. */ 1 36 2 pad(14) bit(36), /* Round out header to 32 words. */ 1 37 2 spec_tab(table_size) like spc, /* Special entries. */ 1 38 2 exp_tab(table_size) like exp, /* Expansion entries. */ 1 39 2 sb_tab(table_size) like sb; /* Symbol entries. */ 1 40 1 41 dcl 1 delim_chars based(delim_ptr) aligned, /* Overlay of ssd.delimiters. */ 1 42 ( 2 blank char(1), 1 43 2 new_line char(1), 1 44 2 tab char(1), 1 45 2 escapes char(5), 1 46 2 others char(16)) unaligned; 1 47 1 48 dcl 1 sb based(sb_ptr) aligned, /* Symbol entry. */ 1 49 ( 2 new_line char(1), /* Needed to make index functions work. */ 1 50 2 symbol char(7)) unal; /* Actual symbol string. */ 1 51 1 52 dcl 1 exp based(exp_ptr) aligned, /* Expansion entry. */ 1 53 ( 2 actionx(5) fixed bin(8), /* Action index for each suffix. */ 1 54 2 pad fixed bin(17), /* Reserved for additional suffixes, flags, etc.. */ 1 55 2 len fixed bin(8), /* Actual length of expansion. */ 1 56 2 expansion char(56)) unal; /* Expansion of string (56 => size(exp) = 16 words). */ 1 57 dcl 1 spc based(spc_ptr) aligned, /* Special entry. */ 1 58 2 special (5) char(56) unal; /* One for each possible suffix. */ 1 59 1 60 /* End include file ... speedtype_symbols.incl.pl1 */ 112 113 /* */ 114 /* Begin add_symbols command. 115**/ 116 call speedtype_info_$pointer (ssd_ptr, ecode); 117 if ecode ^= 0 /* Did we get a pointer to the Speedtype symbol dictionary? */ 118 then do; 119 if ecode = error_table_$no_w_permission 120 then do; 121 call speedtype_info_$name (dir_name, ent_name, temp_code); 122 call com_err_ (ecode, "Speedtype", "Attempting to convert ^a>^a to new version.", dir_name, ent_name); 123 end; 124 return; 125 end; 126 127 force_flag = "0"b; /* Initialize flags. */ 128 do i = 1 to hbound (suffix_lens, 1); /* Initially default suffixes specified. */ 129 suffix_lens (i) = 0; 130 end; 131 132 call GET_ARGS; /* Get commmand arguments. */ 133 if ecode ^= 0 then return; /* Any errors? */ 134 135 if sbx = 0 /* Is symbol already defined? */ 136 then call GET_NEW_SBX; /* No, it is a new symbol. */ 137 else call GET_OLD_SBX; /* This symbol is already defined. */ 138 139 if sbx = 0 /* Are we ready to add this symbol? */ 140 then return; /* No, no valid symbol entry index. */ 141 142 sb_ptr = addr (ssd.sb_tab (sbx)); /* Get pointer to specified symbol entry. */ 143 exp_ptr = addr (ssd.exp_tab (sbx)); /* And corresponding expansion entry. */ 144 spc_ptr = addr (ssd.spec_tab (sbx)); /* AND corresponding special entry. */ 145 146 exp.expansion = expansion; /* First fill in expansion entry. */ 147 exp.pad = 0; 148 exp.len = exp_len; 149 150 sb.symbol = symbol; /* Next, fill in the symbol entry. */ 151 sb.new_line = new_line; 152 153 if sbx > ssd.num_symbols /* Is this a new symbol? */ 154 then ssd.num_symbols = sbx; /* Yes, add it to the list. */ 155 156 do i = 1 to hbound (suffix_lens, 1); /* Set all suffixes for this symbol. */ 157 call speedtype_suffix_ (sb_ptr, exp_ptr, spc_ptr, i, addr (suffix_exps (i)), suffix_lens (i)); 158 if (exp.actionx (i) = 0) & /* Note if desired expansion not actually set. */ 159 (suffix_lens (i) >0) 160 then call com_err_ (0, "Speedtype", "^a suffix ^a invalid, ^a turned off", 161 options (i), suffix_exps (i), options (i)); 162 end; 163 164 call speedtype_info_$set_bc (ssd_ptr, ecode); 165 166 return; 167 /* */ 168 GET_NEW_SBX: procedure; 169 170 /* This procedure will find a free symbol entry for the new symbol. 171* * It will always take the first free entry. 172**/ 173 sbx = ssd.num_symbols + 1; /* Adding another symbol to list. */ 174 175 if sbx > ssd.table_size /* Is this one too many symbols? */ 176 then call speedtype_info_$expand_table (ssd_ptr, ecode); 177 178 end GET_NEW_SBX; 179 180 181 182 183 GET_OLD_SBX: procedure; 184 185 /* This symbol is already defined. Unless the caller has specified 186* * that we force the replacement we will ask him what he wants to do. 187**/ 188 if force_flag /* Should we force the replacement? */ 189 then return; /* Yes. */ 190 191 query_info.version = 1; /* No, ask user what he wants to do. */ 192 query_info.yes_no = "1"b; 193 query_info.suppress_name = "0"b; 194 query_info.status_code, 195 query_info.other_code = 0; 196 197 call command_query_ (addr (query_info), answer, "Speedtype", 198 "^a already defined. ^/Do you want to replace it?", symbol); 199 200 if answer = "no" /* Does user want to replace this symbol? */ 201 then sbx = 0; /* No, make index invalid. */ 202 203 end GET_OLD_SBX; 204 /* */ 205 GET_ARGS: procedure; 206 207 /* This procedure is called to process all of the command arguments. 208**/ 209 call cu_$arg_count (num_args); 210 211 if num_args < 2 212 then do; /* Too few arguments. */ 213 ecode = error_table_$wrong_no_of_args; 214 call com_err_ (ecode, "Speedtype", "Usage is: asb symbol expansion {-control_args}"); 215 return; 216 end; 217 218 do argx = 1 to num_args; /* Process each argument. */ 219 call cu_$arg_ptr (argx, arg_ptr, arg_len, ecode); 220 if ecode ^= 0 221 then do; 222 call com_err_ (ecode, "Speedtype", "Error getting argument ^d", argx); 223 return; 224 end; 225 call PROCESS_ARG; /* Process this argument. */ 226 if ecode ^= 0 then return; /* Stop if any error. */ 227 end; 228 229 end GET_ARGS; 230 /* */ 231 PROCESS_ARG: procedure; 232 233 /* This procedure is called to process one or two command arguments. 234**/ 235 goto ARGUMENT (min (argx, 3)); /* Process according to position. */ 236 237 ARGUMENT (1): /* Symbol */ 238 symbol = argument; /* Save symbol, see if it is already defined. */ 239 call speedtype_index_ (argument, ssd_ptr, sbx, ecode); 240 if ecode ^= 0 then return; 241 242 ARGUMENT (2): /* Expansion */ 243 if arg_len > length (exp.expansion) /* Validate expansion length. */ 244 then do; /* It is too long. */ 245 ecode = error_table_$bad_arg; 246 call com_err_ (ecode, "Speedtype", "Expansion ^a is too long", argument); 247 return; 248 end; 249 expansion = argument; /* Save expansion. */ 250 exp_len = arg_len; /* Save actual expansion length. */ 251 return; 252 253 ARGUMENT (3): /* Control argument(s) */ 254 if (argument = "-fc") | /* Check for force control argument. */ 255 (argument = "-force") 256 then do; /* It is the force control argument. */ 257 force_flag = "1"b; /* User wants to force replacement. */ 258 return; 259 end; 260 261 option = argument; /* Option argument pair, save option. */ 262 263 argx = argx + 1; /* Get index of value argument. */ 264 if argx > num_args /* Is there another argument? */ 265 then do; /* No, error. */ 266 ecode = error_table_$odd_no_of_args; 267 call com_err_ (ecode, "Speedtype", "^a requires a value argument", option); 268 return; 269 end; 270 271 /* Get value argument. */ 272 call cu_$arg_ptr (argx, arg_ptr, arg_len, ecode); 273 if ecode ^= 0 274 then do; 275 call com_err_ (ecode, "Speedtype", "Error getting argument ^d", argx); 276 return; 277 end; 278 279 do optx = 1 to hbound (options, 1); /* Look for option. */ 280 if option = options (optx) /* Is this the option? */ 281 then goto OPTION (optx); /* Yes, we found it. */ 282 end; 283 284 ecode = error_table_$badopt; 285 call com_err_ (ecode, "Speedtype", "Control argument ^a unknown", option); 286 return; 287 288 OPTION (1): OPTION (2): OPTION (3): /* SUFFIX option. */ 289 OPTION (4): OPTION (5): 290 if argument = "on" /* ON => default suffix action. */ 291 then do; 292 suffix_lens (optx) = 0; 293 return; 294 end; 295 if argument = "off" /* OFF => disable this suffix. */ 296 then do; 297 suffix_lens (optx) = -1; 298 return; 299 end; 300 suffix_lens (optx) = arg_len; /* Set up special action for this suffix. */ 301 suffix_exps (optx) = argument; 302 return; 303 304 OPTION (6): /* -suffix "on" | "off" */ 305 if argument = "on" /* ON => default action for all suffixes. */ 306 then do; 307 do i = 1 to hbound (suffix_lens, 1); 308 suffix_lens (i) = 0; 309 end; 310 return; 311 end; 312 if argument = "off" /* OFF => disable all suffixes. */ 313 then do; 314 do i = 1 to hbound (suffix_lens, 1); 315 suffix_lens (i) = -1; 316 end; 317 return; 318 end; 319 ecode = error_table_$bad_arg; 320 call com_err_ (ecode, "Speedtype", "-suffix argument must be ""on"" or ""off"""); 321 return; 322 323 end PROCESS_ARG; 324 325 end add_symbols; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1058.7 add_symbols.pl1 >udd>sm>ds>w>ml>add_symbols.pl1 112 1 11/14/80 1252.8 speedtype_symbols.incl.pl1 >ldd>incl>speedtype_symbols.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. actionx based fixed bin(8,0) array level 2 packed packed unaligned dcl 1-52 ref 158 addr builtin function dcl 93 ref 142 143 144 157 157 197 197 answer 000220 automatic varying char(4) dcl 47 set ref 197* 200 arg_len 000222 automatic fixed bin(17,0) dcl 48 set ref 219* 237 239 239 242 246 246 249 250 253 253 261 272* 288 295 300 301 304 312 arg_ptr 000224 automatic pointer dcl 49 set ref 219* 237 239 246 249 253 253 261 272* 288 295 301 304 312 argument based char packed unaligned dcl 78 set ref 237 239* 246* 249 253 253 261 288 295 301 304 312 argx 000226 automatic fixed bin(17,0) dcl 50 set ref 218* 219* 222* 235 263* 263 264 272* 275* com_err_ 000036 constant entry external dcl 101 ref 122 158 214 222 246 267 275 285 320 command_query_ 000040 constant entry external dcl 102 ref 197 cu_$arg_count 000042 constant entry external dcl 103 ref 209 cu_$arg_ptr 000044 constant entry external dcl 104 ref 219 272 dir_name 000227 automatic char(168) packed unaligned dcl 51 set ref 121* 122* ecode 000301 automatic fixed bin(35,0) dcl 52 set ref 116* 117 119 122* 133 164* 175* 213* 214* 219* 220 222* 226 239* 240 245* 246* 266* 267* 272* 273 275* 284* 285* 319* 320* ent_name 000302 automatic char(32) packed unaligned dcl 53 set ref 121* 122* error_table_$bad_arg 000024 external static fixed bin(35,0) dcl 95 ref 245 319 error_table_$badopt 000026 external static fixed bin(35,0) dcl 96 ref 284 error_table_$no_w_permission 000030 external static fixed bin(35,0) dcl 97 ref 119 error_table_$odd_no_of_args 000032 external static fixed bin(35,0) dcl 98 ref 266 error_table_$wrong_no_of_args 000034 external static fixed bin(35,0) dcl 99 ref 213 exp based structure level 1 dcl 1-52 exp_len 000312 automatic fixed bin(17,0) dcl 54 set ref 148 250* exp_ptr 000354 automatic pointer dcl 1-18 set ref 143* 146 147 148 157* 158 242 exp_tab based structure array level 2 dcl 1-26 set ref 143 expansion 2 based char(56) level 2 in structure "exp" packed packed unaligned dcl 1-52 in procedure "asb" set ref 146* 242 expansion 000313 automatic char(56) packed unaligned dcl 55 in procedure "asb" set ref 146 249* force_flag 000331 automatic bit(1) packed unaligned dcl 59 set ref 127* 188 257* hbound builtin function dcl 93 ref 128 156 279 307 314 i 000332 automatic fixed bin(17,0) dcl 60 set ref 128* 129* 156* 157* 157 157 157 158 158 158 158 158* 307* 308* 314* 315* len 1(27) based fixed bin(8,0) level 2 packed packed unaligned dcl 1-52 set ref 148* length builtin function dcl 93 ref 242 min builtin function dcl 93 ref 235 new_line constant char(1) initial packed unaligned dcl 86 in procedure "asb" ref 151 new_line based char(1) level 2 in structure "sb" packed packed unaligned dcl 1-48 in procedure "asb" set ref 151* num_args 000340 automatic fixed bin(17,0) dcl 64 set ref 209* 211 218 264 num_symbols 20 based fixed bin(17,0) level 2 dcl 1-26 set ref 153 153* 173 option 000342 automatic char(8) packed unaligned dcl 65 set ref 261* 267* 280 285* options 000010 internal static char(8) initial array packed unaligned dcl 83 set ref 158* 158* 279 280 optx 000344 automatic fixed bin(17,0) dcl 66 set ref 279* 280 280* 292 297 300 301 other_code 3 000345 automatic fixed bin(17,0) level 2 dcl 68 set ref 194* pad 1(09) based fixed bin(17,0) level 2 packed packed unaligned dcl 1-52 set ref 147* query_info 000345 automatic structure level 1 dcl 68 set ref 197 197 sb based structure level 1 dcl 1-48 sb_ptr 000356 automatic pointer dcl 1-19 set ref 142* 150 151 157* sb_tab based structure array level 2 dcl 1-26 set ref 142 sbx 000336 automatic fixed bin(17,0) dcl 62 set ref 135 139 142 143 144 153 153 173* 175 200* 239* spc based structure level 1 dcl 1-57 spc_ptr 000360 automatic pointer dcl 1-20 set ref 144* 157* spec_tab 40 based structure array level 2 dcl 1-26 set ref 144 speedtype_index_ 000046 constant entry external dcl 105 ref 239 speedtype_info_$expand_table 000050 constant entry external dcl 106 ref 175 speedtype_info_$name 000052 constant entry external dcl 107 ref 121 speedtype_info_$pointer 000054 constant entry external dcl 108 ref 116 speedtype_info_$set_bc 000056 constant entry external dcl 109 ref 164 speedtype_suffix_ 000060 constant entry external dcl 110 ref 157 ssd based structure level 1 dcl 1-26 ssd_ptr 000352 automatic pointer dcl 1-17 set ref 116* 142 142 142 143 143 144 153 153 164* 173 175 175* 239* status_code 2 000345 automatic fixed bin(17,0) level 2 dcl 68 set ref 194* suffix_exps 000105 automatic char(60) array packed unaligned dcl 42 set ref 157 157 158* 301* suffix_lens 000100 automatic fixed bin(17,0) array dcl 41 set ref 128 129* 156 157* 158 292* 297* 300* 307 308* 314 315* suppress_name 1(01) 000345 automatic bit(1) level 2 packed packed unaligned dcl 68 set ref 193* symbol 0(09) based char(7) level 2 in structure "sb" packed packed unaligned dcl 1-48 in procedure "asb" set ref 150* symbol 000334 automatic char(7) packed unaligned dcl 61 in procedure "asb" set ref 150 197* 237* table_size 21 based fixed bin(17,0) level 2 dcl 1-26 ref 142 142 143 175 temp_code 000337 automatic fixed bin(35,0) dcl 63 set ref 121* version 000345 automatic fixed bin(17,0) level 2 dcl 68 set ref 191* yes_no 1 000345 automatic bit(1) level 2 packed packed unaligned dcl 68 set ref 192* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. delim_chars based structure level 1 dcl 1-41 delim_ptr automatic pointer dcl 1-21 ssd_version_2 internal static fixed bin(17,0) initial dcl 1-23 NAMES DECLARED BY EXPLICIT CONTEXT. ARGUMENT 000000 constant label array(3) dcl 237 ref 235 GET_ARGS 000637 constant entry internal dcl 205 ref 132 GET_NEW_SBX 000531 constant entry internal dcl 168 ref 135 GET_OLD_SBX 000552 constant entry internal dcl 183 ref 137 OPTION 000003 constant label array(6) dcl 288 ref 280 PROCESS_ARG 000776 constant entry internal dcl 231 ref 225 add_symbols 000176 constant entry external dcl 10 asb 000167 constant entry external dcl 10 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1664 1746 1464 1674 Length 2162 1464 62 200 177 14 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME asb 480 external procedure is an external procedure. GET_NEW_SBX internal procedure shares stack frame of external procedure asb. GET_OLD_SBX internal procedure shares stack frame of external procedure asb. GET_ARGS internal procedure shares stack frame of external procedure asb. PROCESS_ARG internal procedure shares stack frame of external procedure asb. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 options asb STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME asb 000100 suffix_lens asb 000105 suffix_exps asb 000220 answer asb 000222 arg_len asb 000224 arg_ptr asb 000226 argx asb 000227 dir_name asb 000301 ecode asb 000302 ent_name asb 000312 exp_len asb 000313 expansion asb 000331 force_flag asb 000332 i asb 000334 symbol asb 000336 sbx asb 000337 temp_code asb 000340 num_args asb 000342 option asb 000344 optx asb 000345 query_info asb 000352 ssd_ptr asb 000354 exp_ptr asb 000356 sb_ptr asb 000360 spc_ptr asb 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_ command_query_ cu_$arg_count cu_$arg_ptr speedtype_index_ speedtype_info_$expand_table speedtype_info_$name speedtype_info_$pointer speedtype_info_$set_bc speedtype_suffix_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$badopt error_table_$no_w_permission error_table_$odd_no_of_args error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000166 116 000203 117 000213 119 000215 121 000220 122 000240 124 000300 127 000301 128 000302 129 000307 130 000310 132 000312 133 000313 135 000315 137 000321 139 000322 142 000324 143 000342 144 000347 146 000353 147 000356 148 000360 150 000362 151 000366 153 000370 156 000374 157 000401 158 000426 162 000515 164 000517 166 000530 168 000531 173 000532 175 000536 178 000551 183 000552 188 000553 191 000556 192 000560 193 000562 194 000564 197 000566 200 000630 203 000636 205 000637 209 000640 211 000647 213 000652 214 000655 215 000704 218 000705 219 000713 220 000730 222 000732 223 000766 225 000767 226 000770 227 000773 229 000775 231 000776 235 000777 237 001004 239 001011 240 001041 242 001044 245 001047 246 001052 247 001110 249 001111 250 001115 251 001116 253 001117 257 001131 258 001133 261 001134 263 001137 264 001140 266 001143 267 001146 268 001201 272 001202 273 001217 275 001221 276 001255 279 001256 280 001263 282 001275 284 001277 285 001302 286 001335 288 001336 292 001344 293 001345 295 001346 297 001352 298 001354 300 001355 301 001357 302 001366 304 001367 307 001375 308 001403 309 001404 310 001406 312 001407 314 001413 315 001421 316 001424 317 001426 319 001427 320 001431 321 001460 ----------------------------------------------------------- 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