COMPILATION LISTING OF SEGMENT apl Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 11/29/83 1556.6 mst Tue Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 /* Command program for Version 2 APL 11* Modified 19 January 1974 by PG to call apl_attach_streams_. 12* Modified 740322 by PG to properly return code in subsystem entry. 13* Modified in July 1974 by G. Gordon Benedict to remove change_ops call and to change call to 14* create_apl_workspace_ to be a call to apl_create_workspace_. 15* Modified 741017 by PG for -temp_dir option, and recursive capability. 16* Modified 750904 by PG to make -terminal_type (-ttp) synonym for -device. 17* Modified 761006 by PG to add -iip to aid Questa. 18* Modified 780901 by PG to delete -iip (didn't really help), and fix bug 329. 19* Modified 790110 by WMY to fix bug 363 (apl_subsystem_ dies if there is no continue workspace 20* for the user). 21* Modified 790213 by WMY to call file system to untie all files upon exiting APL. 22* Modified 790322 by PG to update -ttp error message to include latest terminal types. 23* Modified 791219 by PG to print version number before trying to autoload the ws. 24* Modified 800411 by PG to say adieu! 25* Modified 800814 by WMY to refuse gracefully when invoked as an active 26* function (bug 464). 27* Modified 811210 by TO to include CR in input prompt. 28**/ 29 30 apl: 31 v2apl: 32 procedure (); 33 34 /* Check for invocation as an active function and complain */ 35 36 call cu_$af_arg_count ((0), code); 37 if code ^= error_table_$not_act_fnc 38 then do; 39 call active_fnc_err_ (0, "apl", "Cannot be called as an active function."); 40 return; 41 end; 42 43 autoload_ws = "continue"; 44 autoload_lock = ""; 45 devicename = ""; 46 temporary_segments_dir = get_pdir_ (); 47 48 string (command_options.flags) = ""b; 49 command_options.user_number = 100; 50 51 do argno = 1 to cu_$arg_count (); 52 53 call cu_$arg_ptr (argno, argp, argl, code); 54 if code ^= 0 55 then go to nomoreargsIguess; 56 57 if arg = "-db" | arg = "-debug" 58 then flags.debug_mode = "1"b; 59 60 else if arg = "-nqh" | arg = "-no_quit_handler" 61 then flags.no_quit_handler = "1"b; 62 63 else if arg = "-bfe" | arg = "-brief_errors" | arg = "-bf" | arg = "-brief" 64 /* -bf, -brief for compat. */ 65 then flags.long_error_mode = "0"b; 66 67 else if arg = "-lge" | arg = "-long_errors" | arg = "-lg" | arg = "-long" 68 /* -lg, -long for compat. */ 69 then flags.long_error_mode = "1"b; 70 71 else if arg = "-ck" | arg = "-check" 72 then flags.compatibility_check_mode = "1"b; 73 74 else if arg = "-meter" 75 then flags.meter_mode = "1"b; 76 77 else if arg = "-ttp" | arg = "-terminal_type" 78 then do; 79 argno = argno + 1; 80 call cu_$arg_ptr (argno, argp, argl, code); 81 if code ^= 0 82 then do; 83 call com_err_ (code, "apl", "-terminal_type must be followed by terminal name. 84 Possible names are: 1050, 2741, CORR2741, 1030, TEK4013, TEK4015, TN300, 85 ARDS, ASCII, TTY33, TTY38, TYPEPAIRED, BITPAIRED, TELERAY11, LA36."); 86 return; 87 end; 88 89 devicename = arg; 90 end; 91 92 else if arg = "-user_number" 93 then do; 94 argno = argno + 1; 95 call cu_$arg_ptr (argno, argp, argl, code); 96 if code ^= 0 97 then do; 98 call com_err_ (code, "apl", "-user_number must be followed by a decimal integer."); 99 return; 100 end; 101 102 command_options.user_number = cv_dec_check_ (arg, code); 103 if code ^= 0 | command_options.user_number <= 0 104 then do; 105 call com_err_ (0, "apl", "Invalid user number. ^a", arg); 106 return; 107 end; 108 end; 109 110 else if arg = "-temp_dir" | arg = "-td" 111 then do; 112 argno = argno + 1; 113 call cu_$arg_ptr (argno, argp, argl, code); 114 if code ^= 0 115 then do; 116 call com_err_ (code, "apl", "-temp_dir must be followed by directory pathname."); 117 return; 118 end; 119 120 call absolute_pathname_ (arg, temporary_segments_dir, code); 121 if code ^= 0 122 then do; 123 call com_err_ (code, "apl", "^a", arg); 124 return; 125 end; 126 end; 127 128 else if substr (arg, 1, 1) = "-" /* must be misspelled control arg */ 129 then do; 130 call com_err_ (error_table_$badopt, "apl", "^a", arg); 131 return; 132 end; 133 134 else do; 135 autoload_ws = before (arg, ":"); 136 autoload_lock = after (arg, ":"); 137 end; 138 end; 139 140 nomoreargsIguess: 141 save_ws_info_ptr = apl_static_$ws_info_ptr.static_ws_info_ptr; 142 /* copy old ws info ptr into our stack frame. */ 143 144 on cleanup 145 call clean_up; /* handler to revert I/O streams & throw away ws. */ 146 147 apl_static_$immediate_input_prompt = byte (13) || (6)" "; /* kludge */ 148 149 call initialize_apl (temporary_segments_dir, devicename, code); 150 /* create the workspace, attach the dim. */ 151 if code ^= 0 152 then do; 153 call com_err_ (code, "apl", "Unable to initialize apl."); 154 apl_static_$ws_info_ptr.static_ws_info_ptr = save_ws_info_ptr; 155 /* just in case */ 156 return; 157 end; 158 159 ws_info_ptr = apl_static_$ws_info_ptr.static_ws_info_ptr; 160 /* refresh auto copy */ 161 string (ws_info.switches) = string (command_options.flags); 162 ws_info.user_number = command_options.user_number; 163 164 call ioa_$ioa_switch (apl_static_$apl_output, "apl ^a^/", apl_static_$version_number); 165 166 call apl_load_command_$autoload (autoload_ws, autoload_lock, code); 167 if code ^= 0 & code ^= apl_error_table_$cant_autoload 168 then do; 169 call com_err_ (code, "apl", "^a", autoload_ws); 170 call clean_up; 171 return; 172 end; 173 174 call apl_parse_; 175 176 if ws_info.signoff_lock ^= "" 177 then call ioa_$ioa_switch (apl_static_$apl_output, "apl: signoff lock ignored."); 178 179 call clean_up; 180 return; 181 182 clean_up: 183 procedure (); 184 185 call apl_file_system_$untie_all_files; 186 187 if detach_streams /* if we attached them, we detach them. */ 188 then do; 189 call apl_detach_streams_ (code); 190 191 if code ^= 0 192 then call com_err_ (code, "apl", "While detaching apl I/O streams."); 193 end; 194 195 if apl_static_$ws_info_ptr.static_ws_info_ptr ^= null 196 then call apl_dispose_of_storage_ (); 197 198 apl_static_$ws_info_ptr.static_ws_info_ptr = save_ws_info_ptr; 199 /* restore old ws info ptr. */ 200 end; 201 202 initialize_apl: 203 procedure (a_temp_dir, a_devicename, a_code); 204 205 declare ( 206 a_devicename char (*), 207 a_temp_dir char (*), 208 a_code fixed bin (35) 209 ) parameter; 210 211 212 call apl_segment_manager_$set_temp_dir (a_temp_dir); 213 call apl_attach_streams_ (a_devicename, a_code); 214 if a_code = error_table_$ionmat 215 then do; 216 detach_streams = "0"b; 217 a_code = 0; 218 end; 219 else detach_streams = "1"b; 220 221 if a_code ^= 0 /* attach the streams now because apl_create_workspace_ will look */ 222 then return; /* at line length, etc. anyway, guy probably changed typeball before 223* hitting return on the apl command */ 224 call apl_create_workspace_ (); 225 226 end initialize_apl; 227 228 /*** this entry is for use by the APL closed subsystem ***/ 229 230 apl_subsystem_: 231 entry (a_user_number, a_switches, a_initial_ws, a_initial_ws_lock, a_terminal_type, a_temporary_segments_dir, 232 a_signoff_lock, a_result); 233 234 dcl a_user_number fixed bin (35) parameter, /* .. */ 235 a_switches bit (*) aligned parameter, /* = string(ws_info.switches) (Input) */ 236 a_initial_ws char (*) parameter, /* workspace to load (Input) */ 237 a_initial_ws_lock char (*) parameter, /* lock of workspace to load (Input) */ 238 a_terminal_type char (*) parameter, /* terminal conversion table to use. (Input) */ 239 a_temporary_segments_dir 240 char (*) parameter, /* directory in which to put workspace segments. */ 241 a_signoff_lock char (*) parameter, /* user-specified signoff lock (Output) - "*" = nolock */ 242 a_result fixed bin parameter; /* termination code (Output) 243* 0 = normal termination 244* apl_error_table_$cant_load_ws, 245* apl_error_table_$off_hold 246* */ 247 248 /* Note: the following code is secure since no amount of fiddling with the quit button 249* can have any effect until apl is entered */ 250 251 save_ws_info_ptr = apl_static_$ws_info_ptr.static_ws_info_ptr; 252 253 on cleanup 254 call clean_up; 255 256 if a_temporary_segments_dir = "" 257 then temporary_segments_dir = get_pdir_ (); 258 else temporary_segments_dir = a_temporary_segments_dir; 259 260 apl_static_$immediate_input_prompt = (6)" "; 261 262 call initialize_apl (temporary_segments_dir, a_terminal_type, code); 263 if code ^= 0 264 then do; 265 a_result = code; 266 return; /* no clean_up necessary. */ 267 end; 268 269 ws_info_ptr = apl_static_$ws_info_ptr.static_ws_info_ptr; 270 /* refresh auto copy */ 271 ws_info.user_number = a_user_number; 272 string (ws_info.switches) = a_switches; 273 ws_info.switches.transparent_to_signals = "0"b; /* no you don't! */ 274 275 if a_initial_ws = "" 276 then autoload_ws = "continue"; 277 else autoload_ws = a_initial_ws; 278 279 call apl_load_command_$autoload (autoload_ws, a_initial_ws_lock, code); 280 281 /* If the ws could not be loaded, it is a "security violation" 282* unless no ws was explicitly specified. */ 283 284 if code ^= 0 285 then if ^(code = apl_error_table_$cant_autoload & a_initial_ws = "") 286 then do; 287 a_result = code; 288 call clean_up; 289 return; 290 end; 291 292 call ioa_$ioa_switch (apl_static_$apl_output, "apl ^a^/", apl_static_$version_number); 293 294 call apl_parse_ (); 295 296 a_signoff_lock = ws_info.signoff_lock; 297 298 if ws_info.off_hold 299 then a_result = apl_error_table_$off_hold; 300 else a_result = 0; 301 302 call clean_up; 303 return; 304 305 /* entries */ 306 307 declare absolute_pathname_ entry (char (*), char (*), fixed bin (35)), 308 apl_create_workspace_ 309 entry (), 310 apl_load_command_$autoload 311 entry (char (*), char (*), fixed bin (35)), 312 apl_segment_manager_$set_temp_dir 313 entry (char (*)), 314 get_pdir_ entry () returns (char (168) aligned), 315 cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin), 316 cu_$af_arg_count entry (fixed bin, fixed bin(35)), 317 cu_$arg_count entry () returns (fixed bin), 318 cu_$arg_ptr entry (fixed bin, ptr, fixed bin (24), fixed bin (35)), 319 active_fnc_err_ entry() options(variable), 320 com_err_ entry options (variable), 321 ioa_$ioa_switch entry options (variable), 322 apl_file_system_$untie_all_files 323 entry, 324 (apl_parse_, apl_dispose_of_storage_) 325 entry (), 326 apl_attach_streams_ entry (char (*), fixed bin (35)), 327 apl_detach_streams_ entry (fixed bin (35)); 328 329 330 /* conditions */ 331 332 declare cleanup condition; 333 334 /* builtins */ 335 336 declare (after, before, null, string, substr) 337 builtin; 338 339 /* automatic */ 340 341 declare argno fixed bin, 342 argp ptr, 343 argl fixed bin (24), 344 autoload_lock char (32), 345 autoload_ws char (168), 346 code fixed bin (35), 347 detach_streams bit (1) aligned initial ("1"b), 348 devicename char (16), 349 save_ws_info_ptr ptr unaligned, 350 temporary_segments_dir 351 char (168), 352 1 command_options aligned, 353 2 flags unaligned like ws_info.switches, 354 2 user_number fixed bin (35); 355 356 /* based */ 357 358 declare arg char (argl) unaligned based (argp); 359 360 /* external static */ 361 362 declare ( 363 apl_error_table_$cant_autoload 364 fixed bin (35), 365 apl_error_table_$off_hold 366 fixed bin (35), 367 apl_static_$immediate_input_prompt 368 char (32) varying, 369 error_table_$not_act_fnc fixed bin (35), 370 error_table_$badopt fixed bin (35), 371 error_table_$ionmat fixed bin (35), 372 apl_static_$version_number 373 char (5), 374 apl_static_$apl_output 375 pointer 376 ) external static; 377 378 /* include files */ 379 1 1 /* ====== BEGIN INCLUDE SEGMENT apl_number_data.incl.pl1 ================================== */ 1 2 1 3 /* 1 4* This include file contains information about the machine representation of numbers. 1 5* In all programs numbers should simply be declared 'float'. 1 6* All default statements should be in this include file. 1 7* 1 8* This is the binary version. The manifest constant Binary should be used by programs 1 9* that need to know whether we are using binary or decimal. 1 10* */ 1 11 1 12 /* format: style3,initlm0,idind30 */ 1 13 1 14 default (float & ^decimal & ^binary & ^precision & ^constant) float binary (63); 1 15 1 16 declare ( 1 17 TheBiggestNumberWeveGot float initial (0.1701411834604692317e+39), 1 18 TheSmallestNumberWeveGot float initial (.1469367938527859385e-38), 1 19 Binary bit (1) aligned initial ("1"b) 1 20 ) internal static options (constant); 1 21 1 22 /* Number of characters in a number datum entry; used for copying float number arrays as strings. 1 23* (Obsolete! use array copies!) */ 1 24 1 25 declare NumberSize fixed binary precision (4) internal static initial (8); 1 26 1 27 /* ------ END INCLUDE SEGMENT apl_number_data.incl.pl1 ---------------------------------- */ 380 2 1 /* ====== BEGIN INCLUDE SEGMENT apl_ws_info.incl.pl1 ====================================== */ 2 2 2 3 /* This structure contains all of the global data (or pointers to it) for the APL subsystem */ 2 4 2 5 /* automatic */ 2 6 2 7 declare ws_info_ptr ptr initial (apl_static_$ws_info_ptr.static_ws_info_ptr); 2 8 2 9 /* external static */ 2 10 2 11 declare 1 apl_static_$ws_info_ptr external static aligned structure, 2 12 2 static_ws_info_ptr unaligned pointer; 2 13 2 14 /* based */ 2 15 2 16 declare 1 ws_info aligned based (ws_info_ptr), 2 17 2 version_number fixed bin, /* version of this structure (3) */ 2 18 2 switches unaligned, /* mainly ws parameters */ 2 19 3 long_error_mode bit, /* if 1, long Multics format, else APL/360 format */ 2 20 3 debug_mode bit, /* if 1, system error causes escape to command level */ 2 21 3 canonicalize_mode bit, /* if 1, the editor canonicalizes user input */ 2 22 3 restrict_exec_command bit, /* if 1, the )EXEC command may not be used */ 2 23 3 restrict_debug_command bit, /* if 1, the )DEBUG command may not be used */ 2 24 3 restrict_external_functions 2 25 bit, /* if 1, the )ZFN, )MFN, and )DFN commands may not be used */ 2 26 3 restrict_load bit, /* if 1, the )LOAD and )COPY commands may not be used */ 2 27 3 restrict_load_directory bit, /* if 1, no directory allowed in )LOAD or )COPY pathnames */ 2 28 3 restrict_save bit, /* if 1, the )SAVE command may not be used */ 2 29 3 restrict_save_directory bit, /* if 1, no directory allowed in )SAVE pathnames */ 2 30 3 off_hold bit, /* if 1, )OFF HOLD was typed, else just )OFF */ 2 31 3 transparent_to_signals bit, /* if 1, any conditions slip right past APL */ 2 32 3 meter_mode bit, /* if 1, metering may be done, else speed is all-important */ 2 33 3 restrict_msg_command bit, /* if 1, the )MSG command may not be used. */ 2 34 3 compatibility_check_mode 2 35 bit, /* if 1, check for incompatible operators */ 2 36 3 no_quit_handler bit, /* if 1, do not trap QUITs. */ 2 37 /* remaining 20 bits not presently used */ 2 38 2 39 2 values, /* attributes of the workspace */ 2 40 3 digits fixed bin, /* number of digits of precision printed on output */ 2 41 3 width fixed bin, /* line length for formatted output */ 2 42 3 index_origin fixed bin, /* the index origin (0 or 1) */ 2 43 3 random_link fixed bin(35), /* seed for random number generator */ 2 44 3 fuzz float, /* comparison tolerance (relative fuzz) */ 2 45 3 float_index_origin float, /* the index origin in floating point */ 2 46 3 number_of_symbols fixed bin, /* the number of symbol_beads currently in existence */ 2 47 3 maximum_value_stack_size 2 48 fixed bin (18), /* maximum number of words in one segment of value stack */ 2 49 2 50 2 pointers, /* pointers to various internal tables */ 2 51 3 symbol_table_ptr unaligned pointer, /* -> symbol_table (apl_symbol_table.incl.pl1) */ 2 52 3 current_parse_frame_ptr unaligned pointer, /* -> topmost parse frame */ 2 53 3 value_stack_ptr unaligned pointer, /* -> next free location on value stack */ 2 54 3 alloc_free_info_ptr unaligned pointer, /* -> apl_storage_mngr_ data (apl_storage_system_data.incl.pl1) */ 2 55 2 56 2 time_invoked fixed bin(71), /* clock time that APL was entered */ 2 57 2 integer_fuzz float, /* the absolute fuzz used in checking for integers */ 2 58 2 user_number fixed bin(35), /* number under which the user is signed on */ 2 59 2 latent_expression unaligned pointer, /* -> value_bead for QuadLX */ 2 60 2 lock char(32), /* the lock currently set on this workspace (password) */ 2 61 2 wsid char(100), /* the workspace identification: name, number name, or clear ws */ 2 62 2 last_error_code fixed bin(35), /* last code passed to apl_error_ */ 2 63 2 signoff_lock character (32), 2 64 2 65 2 interrupt_info aligned, /* bits used by apl_interpreter_ to tell when to abort */ 2 66 3 dont_interrupt_parse bit, /* if 1, don't do a dirty stop because the parser is running */ 2 67 3 dont_interrupt_operator bit, /* if 1, don't do a dirty stop because an operator is running */ 2 68 3 dont_interrupt_storage_manager /* if 1, don't stop because apl_storage_mngr_ is */ 2 69 bit, /* munging his tables */ 2 70 3 unused_interrupt_bit bit, /* not presently used */ 2 71 3 dont_interrupt_command bit, 2 72 3 can_be_interrupted bit, /* if 1, OK to do a clean stop (we are between lines, reading) */ 2 73 3 clean_interrupt_pending bit, /* interrupt occured, break cleanly (between lines) */ 2 74 3 dirty_interrupt_pending bit, /* interrupt occured, break as soon as not inhibited */ 2 75 2 76 2 user_name char (32), /* process group id of user */ 2 77 2 immediate_input_prompt char (32) varying, /* normal input */ 2 78 2 evaluated_input_prompt char (32) varying, /* quad input */ 2 79 2 character_input_prompt char (32) varying, /* quad-quote input */ 2 80 2 vcpu_time aligned, 2 81 3 total fixed bin (71), 2 82 3 setup fixed bin (71), 2 83 3 parse fixed bin (71), 2 84 3 lex fixed bin (71), 2 85 3 operator fixed bin (71), 2 86 3 storage_manager fixed bin (71), 2 87 2 output_info aligned, /* data pertaining to output buffer */ 2 88 3 output_buffer_ptr unal ptr, /* ptr to output buffer */ 2 89 3 output_buffer_len fixed bin (21), /* length (bytes) of output buffer */ 2 90 3 output_buffer_pos fixed bin (21), /* index of next byte to write in */ 2 91 3 output_buffer_ll fixed bin (21), /* print positions used up so far */ 2 92 2 tab_width fixed bin (21); /* number of columns a tabs moves cursor */ 2 93 2 94 declare output_buffer char (ws_info.output_buffer_len) based (ws_info.output_buffer_ptr); 2 95 2 96 /* internal static */ 2 97 2 98 declare max_parse_stack_depth fixed bin int static init(64536); 2 99 2 100 /* ------ END INCLUDE SEGMENT apl_ws_info.incl.pl1 -------------------------------------- */ 381 382 383 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/29/83 1346.2 apl.pl1 >special_ldd>on>apl.1129>apl.pl1 380 1 03/27/82 0429.8 apl_number_data.incl.pl1 >ldd>include>apl_number_data.incl.pl1 381 2 03/27/82 0439.2 apl_ws_info.incl.pl1 >ldd>include>apl_ws_info.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. a_code parameter fixed bin(35,0) dcl 205 set ref 202 213* 214 217* 221 a_devicename parameter char unaligned dcl 205 set ref 202 213* a_initial_ws parameter char unaligned dcl 234 ref 230 275 277 284 a_initial_ws_lock parameter char unaligned dcl 234 set ref 230 279* a_result parameter fixed bin(17,0) dcl 234 set ref 230 265* 287* 298* 300* a_signoff_lock parameter char unaligned dcl 234 set ref 230 296* a_switches parameter bit dcl 234 ref 230 272 a_temp_dir parameter char unaligned dcl 205 set ref 202 212* a_temporary_segments_dir parameter char unaligned dcl 234 ref 230 256 258 a_terminal_type parameter char unaligned dcl 234 set ref 230 262* a_user_number parameter fixed bin(35,0) dcl 234 ref 230 271 absolute_pathname_ 000010 constant entry external dcl 307 ref 120 active_fnc_err_ 000032 constant entry external dcl 307 ref 39 after builtin function dcl 336 ref 136 apl_attach_streams_ 000046 constant entry external dcl 307 ref 213 apl_create_workspace_ 000012 constant entry external dcl 307 ref 224 apl_detach_streams_ 000050 constant entry external dcl 307 ref 189 apl_dispose_of_storage_ 000044 constant entry external dcl 307 ref 195 apl_error_table_$cant_autoload 000052 external static fixed bin(35,0) dcl 362 ref 167 284 apl_error_table_$off_hold 000054 external static fixed bin(35,0) dcl 362 ref 298 apl_file_system_$untie_all_files 000040 constant entry external dcl 307 ref 185 apl_load_command_$autoload 000014 constant entry external dcl 307 ref 166 279 apl_parse_ 000042 constant entry external dcl 307 ref 174 294 apl_segment_manager_$set_temp_dir 000016 constant entry external dcl 307 ref 212 apl_static_$apl_output 000070 external static pointer dcl 362 set ref 164* 176* 292* apl_static_$immediate_input_prompt 000056 external static varying char(32) dcl 362 set ref 147* 260* apl_static_$version_number 000066 external static char(5) unaligned dcl 362 set ref 164* 292* apl_static_$ws_info_ptr 000072 external static structure level 1 dcl 2-11 arg based char unaligned dcl 358 set ref 57 57 60 60 63 63 63 63 67 67 67 67 71 71 74 77 77 89 92 102* 105* 110 110 120* 123* 128 130* 135 136 argl 000112 automatic fixed bin(24,0) dcl 341 set ref 53* 57 57 60 60 63 63 63 63 67 67 67 67 71 71 74 77 77 80* 89 92 95* 102 102 105 105 110 110 113* 120 120 123 123 128 130 130 135 136 argno 000106 automatic fixed bin(17,0) dcl 341 set ref 51* 53* 79* 79 80* 94* 94 95* 112* 112 113* argp 000110 automatic pointer dcl 341 set ref 53* 57 57 60 60 63 63 63 63 67 67 67 67 71 71 74 77 77 80* 89 92 95* 102 105 110 110 113* 120 123 128 130 135 136 autoload_lock 000113 automatic char(32) unaligned dcl 341 set ref 44* 136* 166* autoload_ws 000123 automatic char(168) unaligned dcl 341 set ref 43* 135* 166* 169* 275* 277* 279* before builtin function dcl 336 ref 135 cleanup 000100 stack reference condition dcl 332 ref 144 253 code 000175 automatic fixed bin(35,0) dcl 341 set ref 36* 37 53* 54 80* 81 83* 95* 96 98* 102* 103 113* 114 116* 120* 121 123* 149* 151 153* 166* 167 167 169* 189* 191 191* 262* 263 265 279* 284 284 287 com_err_ 000034 constant entry external dcl 307 ref 83 98 105 116 123 130 153 169 191 command_options 000256 automatic structure level 1 dcl 341 compatibility_check_mode 0(14) 000256 automatic bit(1) level 3 packed unaligned dcl 341 set ref 71* cu_$af_arg_count 000024 constant entry external dcl 307 ref 36 cu_$arg_count 000026 constant entry external dcl 307 ref 51 cu_$arg_ptr 000030 constant entry external dcl 307 ref 53 80 95 113 cv_dec_check_ 000022 constant entry external dcl 307 ref 102 debug_mode 0(01) 000256 automatic bit(1) level 3 packed unaligned dcl 341 set ref 57* detach_streams 000176 automatic bit(1) initial dcl 341 set ref 187 216* 219* 341* devicename 000177 automatic char(16) unaligned dcl 341 set ref 45* 89* 149* error_table_$badopt 000062 external static fixed bin(35,0) dcl 362 set ref 130* error_table_$ionmat 000064 external static fixed bin(35,0) dcl 362 ref 214 error_table_$not_act_fnc 000060 external static fixed bin(35,0) dcl 362 ref 37 flags 000256 automatic structure level 2 packed unaligned dcl 341 set ref 48* 161 get_pdir_ 000020 constant entry external dcl 307 ref 46 256 ioa_$ioa_switch 000036 constant entry external dcl 307 ref 164 176 292 long_error_mode 000256 automatic bit(1) level 3 packed unaligned dcl 341 set ref 63* 67* meter_mode 0(12) 000256 automatic bit(1) level 3 packed unaligned dcl 341 set ref 74* no_quit_handler 0(15) 000256 automatic bit(1) level 3 packed unaligned dcl 341 set ref 60* null builtin function dcl 336 ref 195 off_hold 1(10) based bit(1) level 3 packed unaligned dcl 2-16 set ref 298 save_ws_info_ptr 000203 automatic pointer unaligned dcl 341 set ref 140* 154 198 251* signoff_lock 70 based char(32) level 2 dcl 2-16 ref 176 296 static_ws_info_ptr 000072 external static pointer level 2 packed unaligned dcl 2-11 set ref 140 154* 159 251 269 2-7 195 198* string builtin function dcl 336 set ref 48* 161* 161 272* substr builtin function dcl 336 ref 128 switches 1 based structure level 2 packed unaligned dcl 2-16 set ref 161* 272* temporary_segments_dir 000204 automatic char(168) unaligned dcl 341 set ref 46* 120* 149* 256* 258* 262* transparent_to_signals 1(11) based bit(1) level 3 packed unaligned dcl 2-16 set ref 273* user_number 24 based fixed bin(35,0) level 2 in structure "ws_info" dcl 2-16 in procedure "v2apl" set ref 162* 271* user_number 1 000256 automatic fixed bin(35,0) level 2 in structure "command_options" dcl 341 in procedure "v2apl" set ref 49* 102* 103 162 ws_info based structure level 1 dcl 2-16 ws_info_ptr 000260 automatic pointer initial dcl 2-7 set ref 159* 161 162 176 269* 271 272 273 296 298 2-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Binary internal static bit(1) initial dcl 1-16 NumberSize internal static fixed bin(4,0) initial dcl 1-25 TheBiggestNumberWeveGot internal static float bin(63) initial dcl 1-16 TheSmallestNumberWeveGot internal static float bin(63) initial dcl 1-16 max_parse_stack_depth internal static fixed bin(17,0) initial dcl 2-98 output_buffer based char unaligned dcl 2-94 NAMES DECLARED BY EXPLICIT CONTEXT. apl 000314 constant entry external dcl 30 apl_subsystem_ 001542 constant entry external dcl 230 clean_up 002072 constant entry internal dcl 182 ref 144 170 179 253 288 302 initialize_apl 002163 constant entry internal dcl 202 ref 149 262 nomoreargsIguess 001256 constant label dcl 140 set ref 54 v2apl 000304 constant entry external dcl 30 NAME DECLARED BY CONTEXT OR IMPLICATION. byte builtin function ref 147 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2700 2774 2301 2710 Length 3264 2301 74 254 376 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME v2apl 336 external procedure is an external procedure. on unit on line 144 64 on unit clean_up 92 internal procedure is called by several nonquick procedures. initialize_apl internal procedure shares stack frame of external procedure v2apl. on unit on line 253 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME v2apl 000106 argno v2apl 000110 argp v2apl 000112 argl v2apl 000113 autoload_lock v2apl 000123 autoload_ws v2apl 000175 code v2apl 000176 detach_streams v2apl 000177 devicename v2apl 000203 save_ws_info_ptr v2apl 000204 temporary_segments_dir v2apl 000256 command_options v2apl 000260 ws_info_ptr v2apl 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 ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absolute_pathname_ active_fnc_err_ apl_attach_streams_ apl_create_workspace_ apl_detach_streams_ apl_dispose_of_storage_ apl_file_system_$untie_all_files apl_load_command_$autoload apl_parse_ apl_segment_manager_$set_temp_dir com_err_ cu_$af_arg_count cu_$arg_count cu_$arg_ptr cv_dec_check_ get_pdir_ ioa_$ioa_switch THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. apl_error_table_$cant_autoload apl_error_table_$off_hold apl_static_$apl_output apl_static_$immediate_input_prompt apl_static_$version_number apl_static_$ws_info_ptr error_table_$badopt error_table_$ionmat error_table_$not_act_fnc LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 341 000274 2 7 000276 30 000303 36 000322 37 000334 39 000340 40 000366 43 000367 44 000372 45 000375 46 000400 48 000411 49 000413 51 000415 53 000431 54 000446 57 000450 60 000465 63 000500 67 000523 71 000546 74 000561 77 000570 79 000600 80 000601 81 000616 83 000620 86 000646 89 000647 90 000654 92 000655 94 000661 95 000662 96 000677 98 000701 99 000727 102 000730 103 000756 105 000762 106 001020 108 001021 110 001022 112 001032 113 001033 114 001050 116 001052 117 001100 120 001101 121 001125 123 001127 124 001163 126 001164 128 001165 130 001171 131 001225 135 001226 136 001236 138 001254 140 001256 144 001261 147 001303 149 001317 151 001322 153 001324 154 001352 156 001355 159 001356 161 001361 162 001365 164 001367 166 001411 167 001432 169 001437 170 001467 171 001473 174 001474 176 001501 179 001526 180 001532 230 001533 251 001607 253 001612 256 001634 258 001656 260 001661 262 001670 263 001712 265 001714 266 001716 269 001717 271 001722 272 001725 273 001732 275 001734 277 001746 279 001751 284 001772 287 002006 288 002010 289 002014 292 002015 294 002040 296 002045 298 002054 300 002063 302 002064 303 002070 182 002071 185 002077 187 002103 189 002106 191 002115 195 002146 198 002156 200 002162 202 002163 212 002201 213 002214 214 002233 216 002240 217 002241 218 002242 219 002243 221 002245 224 002250 226 002254 ----------------------------------------------------------- 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