COMPILATION LISTING OF SEGMENT fst_process_overseer_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1038.9 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(87-12-02,TLNguyen), approve(87-12-02,MCR6357), 17* audit(87-12-10,Lippard), install(88-01-19,MR12.2-1015): 18* - Asign null to f.alt_ptr and "0"b to the f.flags.pad fields 19* to meeting coding standards. 20* - Remove the hcs_$get_system_search_rules from the source because 21* it is not referenced anywhere within the source. 22* - Declare the empty as builtin type because it is referenced 23* within the source. 24* END HISTORY COMMENTS */ 25 26 27 fst_process_overseer_: proc; 28 29 /* * This procedure is the listener for the FAST subsystem and the command fast. 30* * A line is read from user_input and leading blanks and tabs are ignored. 31* * 1. Blank lines are ignored. 32* * 2. The line is assumed to be an edit request and fst_edit_ is called. 33* * 3. If fst_edit_ sets continue to 1, then the command has not be processed and 34* * fst_command_processor_ is called. 35**/ 36 /* Modified 1/77 by S.E. Barr to use FAST */ 37 /* Modified 10/31/83 by C Spitzer to add cleanup handler, default to sp_basic if used as process_overseer_ */ 38 /* Modified 1984-08-20 BIM for pit instead of pitmsg. */ 39 40 /* automatic */ 41 42 dcl bit_count fixed bin (24); /* bit coun of message of the day */ 43 dcl code fixed bin (35); /* standard Multics code */ 44 dcl continue fixed bin; /* 0= edit; 1= not edit; -1= quit */ 45 dcl edit_ptr ptr; /* ptr to edit_info structure */ 46 dcl entry_value entry init (cp_handler); /* contrivance to get proc_ptr to cp_handler */ 47 dcl 1 f aligned like fst_edit_info; 48 dcl line char (150); /* line typed by user */ 49 dcl line_length fixed bin (21); /* number of characters in line */ 50 dcl line_start fixed bin; /* index in line of first non blank */ 51 dcl pp ptr; 52 dcl mothd_ptr ptr; 53 dcl print_prompt_char bit (1) unal; 54 dcl quit_prompt bit (1); 55 dcl saved_precision_length fixed bin; 56 dcl 1 search_rules aligned, 57 2 number fixed bin init (1), 58 2 names (1) char (168) aligned init ("fast"); 59 dcl 1 saved_search_rules aligned, /* FAST as a command saves the old search rules */ 60 2 number fixed bin, 61 2 names (21) char (168) aligned; 62 dcl saved_cp_ptr ptr; /* FAST as a command save the old value for cu_$cp */ 63 64 65 dcl (addr, divide, empty, null, length, index, reverse, substr, verify) builtin; 66 67 dcl proc_ptr ptr based (addr (entry_value)); /* contrivance to get proc_ptr to cp_handler */ 68 dcl ptr_array (2) ptr based; 69 70 dcl (cleanup, quit) condition; 71 72 /* constants */ 73 74 dcl WHITE_SPACE char (2) int static options (constant) init (" "); /* blank tab */ 75 76 /* external */ 77 78 dcl basic_$precision_length ext fixed bin; 79 dcl cu_$get_cp entry (ptr); 80 dcl cu_$set_cp entry (ptr); 81 dcl clock_ entry () returns (fixed bin (71)); 82 dcl date_time_ entry (fixed bin (71), char (*)); 83 dcl dfast_error_ entry (fixed bin (35), char (*), char (*)); 84 dcl condition_ entry (char (*) aligned, entry); 85 dcl hcs_$get_search_rules entry (ptr); 86 dcl hcs_$initiate_search_rules entry (ptr, fixed bin (35)); 87 dcl hcs_$initiate_count entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (24), fixed bin (2), ptr, fixed bin (35)); 88 dcl hcs_$make_seg entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (5), ptr, fixed bin (35)); 89 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 90 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 91 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 92 dcl iox_$user_output ptr ext; 93 dcl fast_related_data_$in_fast_or_dfast bit (1) aligned ext; 94 dcl fast_related_data_$in_dfast bit (1) aligned ext; 95 dcl fst_command_processor_ entry (char (*), bit (1)unal); 96 dcl fst_edit_ entry (ptr, char (*), fixed bin, bit (1) unal); 97 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 98 dcl get_wdir_ entry () returns (char (168)); 99 dcl release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 100 dcl ioa_$ioa_switch entry options (variable); 101 dcl iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 102 dcl iox_$user_input ptr ext; 103 dcl sys_info$max_seg_size fixed bin (35) ext; 104 105 /* */ 1 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 1 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 1 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 1 8* attribute switches. 1 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 1 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 1 12* be deleted. 1 13* B) Add constants identifying attributes that can be changed by user at 1 14* login, etc. 1 15* END HISTORY COMMENTS */ 1 16 1 17 1 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 1 19 1 20 /* format: style4 */ 1 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 1 22 (2 administrator bit (1), /* 1 system administrator privileges */ 1 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 1 24 2 nobump bit (1), /* 2 user cannot be bumped */ 1 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 1 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 1 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 1 28* . of same project (distinct from "nobump") */ 1 29 2 nolist bit (1), /* 7 don't list user on "who" */ 1 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 1 31 2 multip bit (1), /* 9 user may have several processes */ 1 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 1 33 2 brief bit (1), /* 11 no login or logout message */ 1 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 1 35 2 vhomedir bit (1), /* 13 user may change homedir */ 1 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 1 37 2 sb_ok bit (1), /* 15 user may be standby */ 1 38 2 pm_ok bit (1), /* 16 user may be primary */ 1 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 1 40 2 daemon bit (1), /* 18 user may login as daemon */ 1 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 1 42 2 no_warning bit (1), /* 20 no warning message */ 1 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 1 44* . in PDT: this user has an individual load control group */ 1 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 1 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 1 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 1 48 2 pad bit (12)) unaligned; 1 49 1 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 1 51 ("none", /* 0 */ 1 52 "administrator", /* 1 */ 1 53 "primary_line", /* 2 */ 1 54 "nobump", /* 3 */ 1 55 "guaranteed_login", /* 4 */ 1 56 "anonymous", /* 5 */ 1 57 "nopreempt", /* 6 */ 1 58 "nolist", /* 7 */ 1 59 "dialok", /* 8 */ 1 60 "multip", /* 9 */ 1 61 "bumping", /* 10 */ 1 62 "brief", /* 11 */ 1 63 "vinitproc", /* 12 */ 1 64 "vhomedir", /* 13 */ 1 65 "nostartup", /* 14 */ 1 66 "no_secondary", /* 15 */ 1 67 "no_prime", /* 16 */ 1 68 "no_eo", /* 17 */ 1 69 "daemon", /* 18 */ 1 70 "", /* 19 vdim OBSOLETE */ 1 71 "no_warning", /* 20 */ 1 72 "igroup", /* 21 */ 1 73 "save_pdir", /* 22 */ 1 74 "disconnect_ok", /* 23 */ 1 75 "save_on_disconnect"); /* 24 */ 1 76 1 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 1 78 ("null", /* 0 */ 1 79 "admin", /* 1 */ 1 80 "", "", /* 2 - 3 */ 1 81 "guar", /* 4 */ 1 82 "anon", /* 5 */ 1 83 "", "", /* 6 - 7 */ 1 84 "dial", /* 8 */ 1 85 "multi_login", /* 9 */ 1 86 "preempting", /* 10 */ 1 87 "", /* 11 */ 1 88 "v_process_overseer", /* 12 */ 1 89 "v_home_dir", /* 13 */ 1 90 "no_start_up", /* 14 */ 1 91 "no_sec", /* 15 */ 1 92 "no_primary", /* 16 */ 1 93 "no_edit_only", /* 17 */ 1 94 "op_login", /* 18 */ 1 95 "", /* 19 */ 1 96 "nowarn", /* 20 */ 1 97 "", "", "", /* 21 - 23 */ 1 98 "save"); /* 24 */ 1 99 1 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 1 101 options(constant) init("000000000010000000010000000000000000"b); 1 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 1 103 1 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 1 105 options(constant) init("000000000010000000010000000000000000"b); 1 106 /* PDT value for (brief, no_warning) is default */ 1 107 1 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 1 109 options(constant) init("000100000110010000010000000000000000"b); 1 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 1 111 2 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* This include file describes the attributes of an absentee job. It is */ 2 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 2 7 /* and PIT.incl.pl1. */ 2 8 /* */ 2 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 10 2 11 /****^ HISTORY COMMENTS: 2 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 2 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 14* Separated abs_attributes from the request structure 2 15* (abs_message_format.incl.pl1) so that the identical structure could be 2 16* used in the ute structure (user_table_entry.incl.pl1). 2 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 2 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 19* Added ABS_ATTRIBUTE_NAMES array. 2 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 2 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 2 22* Added the no_start_up flag. SCP6367 2 23* END HISTORY COMMENTS */ 2 24 2 25 dcl 1 user_abs_attributes aligned based, 2 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 2 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 2 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 2 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 2 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 2 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 2 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 2 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 2 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 2 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 2 36 2 attributes_pad bit (26) unaligned; 2 37 2 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 2 39 "restartable", 2 40 "user_deferred_until_time", 2 41 "proxy", 2 42 "set_bit_cnt", 2 43 "time_in_gmt", 2 44 "user_deferred_indefinitely", 2 45 "secondary_ok", 2 46 "truncate_absout", 2 47 "restarted", 2 48 "no_start_up"); 2 49 2 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 2 51 1 112 1 113 1 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 106 3 1 /* BEGIN INCLUDE FILE ... pit.incl.pl1 */ 3 2 3 3 /****^ ******************************************** 3 4* * * 3 5* * Copyright, (C) Honeywell Bull Inc., 1988 * 3 6* * * 3 7* ******************************************** */ 3 8 3 9 /* Requires user_attributes.incl.pl1 */ 3 10 /* Declaration of the Process Inititalization Table (PIT) */ 3 11 3 12 /****^ HISTORY COMMENTS: 3 13* 1) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 3 14* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 3 15* First comment for hcom. Modified 750430 by PG to add terminal_access_class 3 16* Modified 6/20/77 by J. Stern to add term_type_name Modified Feb 1980 by M. 3 17* B. Armstrong to implement multiple rate structures. (UNCA) Modified by R. 3 18* McDonald May 1980 to include page charges, replaces cpu in iod (UNCA) 3 19* Modified by Benson I. Margulies November 1981 do declare pit_$, pit_ptr, 3 20* and unaligned character strings. Modified by E. N. Kittlitz January 1982 3 21* for user_attributes.incl.pl1 changes Modified by E. N. Kittlitz October 3 22* 1982 for request_id. Modified by BIM 1984-09-12 for auth range. The max 3 23* copies the pds, but this is the only home of the min. 3 24* 2) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 3 25* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 3 26* Add the truncate_absout and restarted bits for the 3 27* -truncate .absout SCP 6297, version 3. 3 28* 3) change(86-12-11,GDixon), approve(87-07-16,MCR7741), 3 29* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 30* Changed structure under pit.abs_attributes to use like structure in 3 31* abs_attributes.incl.pl1. This allows the same attributes to be used 3 32* in abs_message_format.incl.pl1 and user_table_entry.incl.pl1 as well as 3 33* this include file. 3 34* 4) change(88-06-03,Parisek), approve(88-06-10,MCR7920), 3 35* audit(88-06-23,Hunter), install(87-07-05,MR12.2-1053): 3 36* Remove "pitmsg" in END comment string. pitmsg.incl.pl1 is no longer a 3 37* name of pit.incl.pl1. 3 38* 5) change(88-07-11,Parisek), approve(88-07-11,MCR7849), 3 39* audit(88-07-03,Lippard), install(88-07-13,MR12.2-1047): 3 40* Removed the ringpad element and added the min_ring & max_ring elements so 3 41* users may access their lowest and/or highest possible login ring value. 3 42* SCP6367. 3 43* END HISTORY COMMENTS */ 3 44 3 45 3 46 /* format: style4 */ 3 47 declare pit_$ bit (36) aligned external static; 3 48 declare pit_ptr pointer; 3 49 3 50 dcl 1 pit aligned based (pit_ptr), 3 51 2 version fixed bin, /* indicates which version of the pit */ 3 52 2 process_type fixed bin, /* initializer, interactive, or absentee process */ 3 53 2 login_responder char (64) unal, /* path name of login responder */ 3 54 3 55 /* All of these are going to be word aligned whether or not they are declared aligned, 3 56* and unaligning them cleans up code in many places */ 3 57 3 58 2 homedir char (64) unal, /* path name of home directory */ 3 59 2 project char (28) unal, /* name of this process' project affiliation */ 3 60 2 account char (32) unal, /* name of account to which this process is charged */ 3 61 2 n_processes fixed bin, /* number of previous processes for this session */ 3 62 2 login_time fixed bin (71), /* clock time at login */ 3 63 2 proc_creation_time fixed bin (71), /* clock time at creation of this process */ 3 64 2 old_proc_cpu fixed bin (71), /* cpu time used by previous processes in this session */ 3 65 2 user_weight fixed bin, /* weight of this process */ 3 66 2 anonymous fixed bin, /* 1 if anonymous user */ 3 67 2 login_name char (28) unal, /* name of user given at login */ 3 68 2 logout_pid bit (36), /* process id of answering service */ 3 69 2 logout_channel fixed bin (71), /* channel for signalling logouts to answering service */ 3 70 2 group char (8) unal, /* party group */ 3 71 2 min_ring fixed bin, /* min ring */ 3 72 2 max_ring fixed bin, /* max ring */ 3 73 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 3 74 2 whox fixed bin, /* this process's index in whotab (or 0) */ 3 75 2 outer_module char (32) unaligned, 3 76 2 pad (2) fixed bin, 3 77 2 dont_call_init_admin bit (1) aligned, /* Call process_overseer_ directly */ 3 78 2 terminal_access_class bit (72) aligned, /* access class of user's terminal */ 3 79 2 dollar_charge float bin, /* Month-to-date expenditure */ 3 80 2 dollar_limit float bin, /* Limit stop on usage */ 3 81 2 shift_limit (0:7) float bin, /* Stops on each shift's usage */ 3 82 2 logins fixed bin, /* Number of logins this month */ 3 83 2 crashes fixed bin, /* Number of sessions crashed */ 3 84 2 interactive (0:7), /* interactive usage by shift */ 3 85 3 charge float bin, /* Total charge */ 3 86 3 xxx fixed bin, 3 87 3 cpu fixed bin (71), /* CPU usage in microseconds */ 3 88 3 core fixed bin (71), /* Memory usage in page-microseconds */ 3 89 3 connect fixed bin (71), /* Connect time in microseconds */ 3 90 3 io_ops fixed bin (71), /* Terminal I/O operations */ 3 91 2 absentee (4), /* Absentee usage by queue */ 3 92 3 charge float bin, /* Total absentee charge */ 3 93 3 jobs fixed bin, /* Number of jobs */ 3 94 3 cpu fixed bin (71), /* CPU usage in microseconds */ 3 95 3 memory fixed bin (71), /* Memory usage in mu */ 3 96 2 iod (4), /* IO Daemon usage, by queue */ 3 97 3 charge float bin, /* Total charge */ 3 98 3 pieces fixed bin, /* Number of requests */ 3 99 3 pad fixed bin (35), 3 100 3 pages fixed bin (35), /* number of pages output */ 3 101 3 lines fixed bin (71), /* Record count */ 3 102 2 devices (16) float bin, /* Usage of attached devices */ 3 103 2 time_last_reset fixed bin (71), /* time last updated the PDT */ 3 104 2 absolute_limit float bin, /* Limit, not reset monthly */ 3 105 2 absolute_spent float bin, /* Spending against this */ 3 106 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 3 107 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 3 108 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0= default rates) */ 3 109 2 pad1a fixed bin (27) unsigned unaligned, /* remainder of word */ 3 110 2 request_id fixed bin (71), /* absentee request id */ 3 111 2 authorization_range (2) bit (72) aligned, 3 112 2 pad1 (73) fixed bin, /* extra space */ 3 113 2 charge_type fixed bin, /* device charge type of console */ 3 114 2 term_type_name char (32) unal, /* terminal type name */ 3 115 2 line_type fixed bin, /* line type of user's console */ 3 116 2 tty_type fixed bin, /* old terminal type (obsolete, kept for compatibility) */ 3 117 2 service_type fixed bin, /* type of service console is performing */ 3 118 2 tty_answerback char (4) unaligned, /* original answerback of user's console */ 3 119 2 old_tty char (6), /* (obsolete) attachment name of user's console */ 3 120 2 standby fixed bin, /* 1 if standby user */ 3 121 2 login_line char (120) unal, /* line typed at login */ 3 122 2 cant_bump_until fixed bin (71), /* cannot be preempted until this time (0 for abs) */ 3 123 2 input_seg char (168) unal, /* path name of absentee input file */ 3 124 2 output_seg char (168) unal, /* path name of absentee output file */ 3 125 2 max_cpu_time fixed bin, /* max number of seconds allowed to this absentee proc */ 3 126 2 abs_queue fixed bin, /* absentee queue if absentee, else -1 */ 3 127 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 3 128 2 arg_info_ptr fixed bin (18) unsigned, /* Relative pointer to information on absentee args. */ 3 129 2 old_proc_core fixed bin (71), /* Memory usage by previous processes in this session */ 3 130 2 old_proc_io_ops fixed bin (71), /* I/O operations from previous processes in this session */ 3 131 2 tty char (32) unaligned, /* Attachment name of users channel */ 3 132 2 start_arg_info fixed bin; /* Put absentee args information here. */ 3 133 3 134 3 135 /* Structure to contain information on absentee arguments */ 3 136 dcl 1 arg_info aligned based, 3 137 2 arg_count fixed bin, /* Number of arguments for replacement in absentee segment */ 3 138 2 ln_args fixed bin, /* Length of string containing arguments. */ 3 139 2 arg_lengths (25 refer (arg_info.arg_count)) fixed bin, /* Array of argument lengths */ 3 140 2 args char (128 refer (arg_info.ln_args)) unal; 3 141 /* Args used for replacement in absentee control segment. */ 3 142 3 143 declare PIT_version_3 fixed bin int static options (constant) init (3); 3 144 3 145 /* END INCLUDE FILE ... pit.incl.pl1 */ 107 4 1 /* BEGIN INCLUDE FILE ... fst_edit_info.incl.pl1 */ 4 2 4 3 dcl 1 fst_edit_info aligned based (edit_ptr), 4 4 2 pathname char (168) var, /* path last used with new, old, save command */ 4 5 2 text_ptr ptr, /* ptr to text being edited */ 4 6 2 alt_ptr ptr, /* ptr to text additions not yet included */ 4 7 2 text_length fixed bin (21), /* number of characters in text */ 4 8 2 alt_length fixed bin (21), /* number of characters in pending changes */ 4 9 2 max_seg_size fixed bin (21), /* max. number of characters per segment */ 4 10 2 working_dir char (168) var, /* path of the working directory */ 4 11 2 end_line_number fixed bin, /* value of line number of the last line */ 4 12 2 flags aligned, 4 13 3 subsystem bit (1) unal, /* ON if entered as subsystem, OFF if command */ 4 14 3 text_modified bit (1) unal, /* ON if changes since last save */ 4 15 3 basic_source bit (1) unal, /* ON if name ends with .basic */ 4 16 3 prompt bit (1) unal, /* ON if should prompt after commands */ 4 17 3 pad bit (32) unal; 4 18 4 19 /* END INCLUDE FILE ... fst_edit_info.incl.pl1 */ 108 109 110 /* */ 111 /* print message of the day, if the user did not use the -brief option. */ 112 113 call hcs_$make_seg ("", "pit", "", 01000b, pp, code); 114 if ^pp -> pit.at.brief then do; 115 call hcs_$initiate_count (">system_control_1", "message_of_the_day", "", bit_count, 1, mothd_ptr, code); 116 if mothd_ptr ^= null then do; 117 call iox_$put_chars (iox_$user_output, mothd_ptr, divide (bit_count, 9, 21, 0), code); 118 call hcs_$terminate_noname (mothd_ptr, code); 119 end; 120 end; 121 122 /* setup quit and condition handler; set default vaules for edit_info */ 123 124 f.working_dir = substr (pp -> pit.homedir, 1, length (pp -> pit.homedir) + 1 - verify (reverse (pp -> 125 pit.homedir), " ")); 126 call hcs_$terminate_noname (pp, code); 127 128 f.subsystem = "1"b; 129 basic_$precision_length = 1; 130 131 COMMON: 132 f.text_ptr = null; 133 f.alt_ptr = null; 134 saved_precision_length = basic_$precision_length; 135 on cleanup begin; 136 if f.text_ptr ^= null then call release_temp_segments_ ("fast", addr (f.text_ptr) -> ptr_array, (0)); 137 basic_$precision_length = saved_precision_length; 138 end; 139 140 call initial (code); 141 if code ^= 0 & f.subsystem then goto RETURN; 142 143 call condition_ ("any_other", any_other_handler); 144 call cu_$set_cp (proc_ptr); /* Prevent the execution of an E request in edm */ 145 146 on quit begin; 147 call iox_$control (iox_$user_input, "resetread", addr (line), code); 148 call ioa_$ioa_switch (iox_$user_output, "QUIT"); 149 quit_prompt = "1"b; 150 goto READ_LOOP; 151 end; 152 153 /* If the FAST search rules can't be set, then use the default ones. */ 154 call hcs_$initiate_search_rules (addr(search_rules), code); 155 if code ^= 0 then do; 156 search_rules.names(1) = "default"; 157 call hcs_$initiate_search_rules (addr(search_rules), code); 158 end; 159 if f.subsystem then call iox_$control (iox_$user_input, "quit_enable", addr (line), code); 160 161 /* When FAST is entered from command level, the loop terminates when the "quit" command sets continue to -1. 162* When FAST is entered as a subsystem, the loop terminates when the user logs out. 163* fst_edit_ is called with the entire line. fst_command_processor_ is called without the new line character. 164**/ 165 166 READ_LOOP: 167 continue = 0; 168 do while (continue > -1); 169 continue = 0; 170 171 if print_prompt_char | quit_prompt then do; 172 call date_time_ (clock_ (), line); 173 call ioa_$ioa_switch (iox_$user_output, "r ^a^/", substr (line, 11, 4)); 174 quit_prompt = "0"b; 175 end; 176 call iox_$get_line (iox_$user_input, addr (line), length (line), line_length, code); 177 if code = 0 then do; 178 179 line_start = verify (substr (line, 1, line_length), WHITE_SPACE); 180 if line_start < line_length then do; 181 line_length = line_length - line_start + 1; 182 call fst_edit_ (edit_ptr, substr (line, line_start, line_length), continue, print_prompt_char); 183 if continue = 1 then call fst_command_processor_ (substr (line, line_start, line_length - 1), 184 (f.alt_length > 0 | f.text_modified)); 185 end; 186 else print_prompt_char = "0"b; 187 end; 188 else call dfast_error_ (code, "fast", ""); 189 end; 190 191 RETURN: 192 call release_temp_segments_ ("fast", addr (f.text_ptr) -> ptr_array, code); 193 if code ^= 0 then call dfast_error_ (code, "fast", "Could not release temporary segments"); 194 fast_related_data_$in_dfast, fast_related_data_$in_fast_or_dfast = "0"b; 195 call hcs_$initiate_search_rules (addr (saved_search_rules), code); 196 call cu_$set_cp (saved_cp_ptr); 197 if code ^= 0 then call dfast_error_ (code, "fast", ""); 198 basic_$precision_length = saved_precision_length; 199 200 return; 201 202 203 /* FAST command. The current search rules and command processor are saved, as FAST will change them. 204* The flag f.subsystem is set off, so the "quit" command will be allowed. 205**/ 206 fast: entry; 207 208 f.subsystem = "0"b; 209 f.working_dir = get_wdir_ (); 210 call hcs_$get_search_rules (addr (saved_search_rules)); 211 call cu_$get_cp (saved_cp_ptr); 212 213 goto COMMON; 214 215 /* */ 216 /* This procedure is called when the user attempts to execute a command line from edm. 217* It prints an error message and returns to edm. 218**/ 219 cp_handler: proc; 220 221 call ioa_$ioa_switch (iox_$user_output, "Illegal entry to command level"); 222 223 return; 224 225 end cp_handler; 226 227 228 /* */ 229 initial: proc (arg_code); 230 231 dcl arg_code fixed bin (35); 232 233 234 arg_code = 0; 235 edit_ptr = addr (f); 236 fast_related_data_$in_dfast = "0"b; /* switches for BASIC */ 237 fast_related_data_$in_fast_or_dfast = "1"b; 238 239 print_prompt_char, f.prompt = "1"b; 240 quit_prompt = "0"b; 241 f.pathname = ""; 242 f.text_length = 0; 243 f.alt_length = 0; 244 f.text_modified = "0"b; 245 f.basic_source = "0"b; 246 f.max_seg_size = sys_info$max_seg_size; 247 f.end_line_number = 0; 248 f.flags.pad = "0"b; 249 call get_temp_segments_ ("fast", addr (f.text_ptr) -> ptr_array, arg_code); 250 if arg_code ^= 0 then call dfast_error_ (arg_code, "fast", "temp segments"); 251 252 return; 253 254 end initial; 255 256 257 /* */ 258 any_other_handler: proc (mcptr, cond_name, wcptr, info_ptr, cont); 259 260 dcl mcptr ptr, 261 cond_name char (*), 262 wcptr ptr, 263 info_ptr ptr, 264 cont bit (1) aligned; 265 dcl area area (300); 266 dcl (i, l) fixed bin; 267 dcl NEW_LINE char (1) init (" 268 "); 269 dcl message_len fixed bin (21); 270 dcl message char (message_len) based (message_ptr); 271 dcl message_ptr ptr; 272 273 dcl condition_interpreter_ entry (ptr, ptr, fixed bin (21), fixed bin, ptr, char (*), ptr, ptr); 274 5 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 5 2 5 3 /* Structure for find_condition_info_. 5 4* 5 5* Written 1-Mar-79 by M. N. Davidoff. 5 6**/ 5 7 5 8 /* automatic */ 5 9 5 10 declare condition_info_ptr pointer; 5 11 5 12 /* based */ 5 13 5 14 declare 1 condition_info aligned based (condition_info_ptr), 5 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 5 16 2 version fixed binary, /* Must be 1 */ 5 17 2 condition_name char (32) varying, /* name of condition */ 5 18 2 info_ptr pointer, /* pointer to the condition data structure */ 5 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 5 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 5 21 2 flags unaligned, 5 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 5 23 3 pad1 bit (35), 5 24 2 pad2 bit (36), 5 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 5 26 2 pad3 (4) bit (36); 5 27 5 28 /* internal static */ 5 29 5 30 declare condition_info_version_1 5 31 fixed binary internal static options (constant) initial (1); 5 32 5 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 275 6 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 6 2 /* format: style2 */ 6 3 6 4 declare condition_info_header_ptr 6 5 pointer; 6 6 declare 1 condition_info_header 6 7 aligned based (condition_info_header_ptr), 6 8 2 length fixed bin, /* length in words of this structure */ 6 9 2 version fixed bin, /* version number of this structure */ 6 10 2 action_flags aligned, /* tell handler how to proceed */ 6 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 6 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 6 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 6 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 6 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 6 16 3 pad bit (32) unaligned, 6 17 2 info_string char (256) varying, /* may contain printable message */ 6 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 6 19 6 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 276 277 278 if cond_name = "command_error" | 279 cond_name = "command_question" | cond_name = "string_size" then return; 280 281 call condition_interpreter_ (addr (area), message_ptr, message_len, 1, mcptr, cond_name, wcptr, info_ptr); 282 if cond_name = "command_abort_" then goto READ_LOOP; 283 if message_len > 0 then do; 284 285 /* * This code modifies the error message to remove the shriek name and the phrase "(in process dir)" 286* * 287* * Error: ... condition by !BBBJFbDjnMccfW.temp.0310$main_|50 (line 20) (in process dir) 288* * 289* * Error: ... condition by main_|50 (line 20) 290**/ 291 if substr (message, 2, 6) = "Error:" then do; 292 l = index (substr (message, 2), NEW_LINE); 293 if l > 0 then do; 294 i = index (substr (message, 2, l), "by !"); 295 if i = 0 then i = index (substr (message, 2, l), "at !"); 296 if i > 0 then do; 297 i = i + 4; 298 if substr (message, i+15, 5) = ".temp" & substr (message, i + 25, 1) = "$" then do; 299 substr (message, i) = substr (message, i+26, message_len - i -26+1); 300 message_len = message_len - 26; 301 i = index (substr (message, 1, l+1), "(in process dir)"); 302 if i > 0 then do; 303 substr (message, i) = substr (message, i+16); 304 message_len = message_len - 16; 305 end; 306 end; 307 end; 308 end; 309 end; 310 311 call iox_$put_chars (iox_$user_output, message_ptr, message_len, code); 312 end; 313 314 if cond_name = "finish" then return; 315 316 if info_ptr ^= null 317 then do; /* can we see if it's eligable to restart? */ 318 condition_info_header_ptr = info_ptr -> condition_info.info_ptr; 319 if condition_info_header.length > 0 /* is it filled in? */ 320 then if condition_info_header.default_restart | condition_info_header.quiet_restart 321 then return; /* no further action besides printing error msg */ 322 else if condition_info_header.cant_restart 323 then goto READ_LOOP; /* can't do anything further with error */ 324 else if ask_for_continue () 325 then return; 326 else goto READ_LOOP; 327 else if ask_for_continue () 328 then return; 329 else goto READ_LOOP; 330 end; 331 else if ask_for_continue () 332 then return; 333 else goto READ_LOOP; 334 335 336 ask_for_continue: 337 proc () returns (bit (1) aligned); 338 339 dcl answer char (4) varying; 340 dcl maxlength builtin; 341 342 dcl command_query_ entry() options(variable); 343 344 dcl EXPLAIN_MSG char (120) int static options (constant) init ( 345 "If you answer ""yes"", the user program will be ""start""ed. 346 If you answer ""no"", the user program will be aborted."); 347 7 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 7 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 7 3 /* version number changed to 4, 08/10/78 WOS */ 7 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 7 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 7 6 7 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 7 8 2 version fixed bin, /* version of this structure - must be set, see below */ 7 9 2 switches aligned, /* various bit switch values */ 7 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 7 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 7 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 7 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 7 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 7 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 7 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 7 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 7 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 7 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 7 20 7 21 /* Limit of data defined for version 2 */ 7 22 7 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 7 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 7 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 7 26 /* minimum of 30 seconds required for repeat */ 7 27 /* otherwise, no repeat will occur */ 7 28 /* Limit of data defined for version 4 */ 7 29 7 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 7 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 7 32 7 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 7 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 7 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 7 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 7 37 7 38 /* END INCLUDE FILE query_info.incl.pl1 */ 348 349 350 query_info.version = query_info_version_6; 351 query_info.yes_or_no_sw = "1"b; 352 query_info.suppress_name_sw = "1"b; 353 query_info.cp_escape_control = "10"b; 354 query_info.prompt_after_explanation = "1"b; 355 query_info.explanation_ptr = addr (EXPLAIN_MSG); 356 query_info.explanation_len = maxlength (EXPLAIN_MSG); 357 call command_query_ (addr (query_info), answer, "fast", "Do you wish to continue the user program? "); 358 if answer = "yes" 359 then return ("1"b); /* return to user program */ 360 else return ("0"b); /* abort the user program */ 361 362 end ask_for_continue; 363 364 end any_other_handler; 365 366 end fst_process_overseer_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0935.8 fst_process_overseer_.pl1 >special_ldd>install>MR12.2-1047>fst_process_overseer_.pl1 106 1 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 1-112 2 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 107 3 07/13/88 0930.5 pit.incl.pl1 >special_ldd>install>MR12.2-1047>pit.incl.pl1 108 4 12/03/76 1658.6 fst_edit_info.incl.pl1 >ldd>include>fst_edit_info.incl.pl1 275 5 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 276 6 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 348 7 03/11/83 1204.3 query_info.incl.pl1 >ldd>include>query_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. EXPLAIN_MSG 000000 constant char(120) initial packed unaligned dcl 344 set ref 355 356 NEW_LINE 000556 automatic char(1) initial packed unaligned dcl 267 set ref 267* 292 WHITE_SPACE constant char(2) initial packed unaligned dcl 74 ref 179 action_flags 2 based structure level 2 dcl 6-6 addr builtin function dcl 65 ref 136 144 147 147 154 154 157 157 159 159 176 176 191 195 195 210 210 235 249 281 281 355 357 357 alt_length 61 000112 automatic fixed bin(21,0) level 2 dcl 47 set ref 183 243* alt_ptr 56 000112 automatic pointer level 2 dcl 47 set ref 133* answer 000572 automatic varying char(4) dcl 339 set ref 357* 358 answer_iocbp 6 000574 automatic pointer initial level 2 dcl 7-7 set ref 7-7* area 000100 automatic area(300) dcl 265 set ref 265* 281 281 arg_code parameter fixed bin(35,0) dcl 231 set ref 229 234* 249* 250 250* at 110 based structure level 2 dcl 3-50 basic_$precision_length 000010 external static fixed bin(17,0) dcl 78 set ref 129* 134 137* 198* basic_source 137(02) 000112 automatic bit(1) level 3 packed packed unaligned dcl 47 set ref 245* bit_count 000100 automatic fixed bin(24,0) dcl 42 set ref 115* 117 117 brief 110(10) based bit(1) level 3 packed packed unaligned dcl 3-50 ref 114 cant_restart 2 based bit(1) level 3 packed packed unaligned dcl 6-6 ref 322 cleanup 002172 stack reference condition dcl 70 ref 135 clock_ 000016 constant entry external dcl 81 ref 172 172 code 000101 automatic fixed bin(35,0) dcl 43 set ref 113* 115* 117* 118* 126* 140* 141 147* 154* 155 157* 159* 176* 177 188* 191* 193 193* 195* 197 197* 311* command_query_ 000076 constant entry external dcl 342 ref 357 cond_name parameter char packed unaligned dcl 260 set ref 258 278 278 278 281* 282 314 condition_ 000024 constant entry external dcl 84 ref 143 condition_info based structure level 1 dcl 5-14 condition_info_header based structure level 1 dcl 6-6 condition_info_header_ptr 000562 automatic pointer dcl 6-4 set ref 318* 319 319 319 322 condition_interpreter_ 000074 constant entry external dcl 273 ref 281 cont parameter bit(1) dcl 260 ref 258 continue 000102 automatic fixed bin(17,0) dcl 44 set ref 166* 168 169* 182* 183 cp_escape_control 1(02) 000574 automatic bit(2) initial level 3 packed packed unaligned dcl 7-7 set ref 353* 7-7* cu_$get_cp 000012 constant entry external dcl 79 ref 211 cu_$set_cp 000014 constant entry external dcl 80 ref 144 196 date_time_ 000020 constant entry external dcl 82 ref 172 default_restart 2(01) based bit(1) level 3 packed packed unaligned dcl 6-6 ref 319 dfast_error_ 000022 constant entry external dcl 83 ref 188 193 197 250 divide builtin function dcl 65 ref 117 117 edit_ptr 000104 automatic pointer dcl 45 set ref 182* 235* empty builtin function dcl 65 ref 265 end_line_number 136 000112 automatic fixed bin(17,0) level 2 dcl 47 set ref 247* entry_value 000106 automatic entry variable initial dcl 46 set ref 46* 144 explanation_len 14 000574 automatic fixed bin(21,0) initial level 2 dcl 7-7 set ref 356* 7-7* explanation_ptr 12 000574 automatic pointer initial level 2 dcl 7-7 set ref 355* 7-7* f 000112 automatic structure level 1 dcl 47 set ref 235 fast_related_data_$in_dfast 000050 external static bit(1) dcl 94 set ref 194* 236* fast_related_data_$in_fast_or_dfast 000046 external static bit(1) dcl 93 set ref 194* 237* flags 137 000112 automatic structure level 2 dcl 47 fst_command_processor_ 000052 constant entry external dcl 95 ref 183 fst_edit_ 000054 constant entry external dcl 96 ref 182 fst_edit_info based structure level 1 dcl 4-3 get_temp_segments_ 000056 constant entry external dcl 97 ref 249 get_wdir_ 000060 constant entry external dcl 98 ref 209 hcs_$get_search_rules 000026 constant entry external dcl 85 ref 210 hcs_$initiate_count 000032 constant entry external dcl 87 ref 115 hcs_$initiate_search_rules 000030 constant entry external dcl 86 ref 154 157 195 hcs_$make_seg 000034 constant entry external dcl 88 ref 113 hcs_$terminate_noname 000036 constant entry external dcl 89 ref 118 126 homedir 22 based char(64) level 2 packed packed unaligned dcl 3-50 ref 124 124 124 i 000554 automatic fixed bin(17,0) dcl 266 set ref 294* 295 295* 296 297* 297 298 298 299 299 299 301* 302 303 303 index builtin function dcl 65 ref 292 294 295 301 info_ptr 14 based pointer level 2 in structure "condition_info" dcl 5-14 in procedure "any_other_handler" ref 318 info_ptr parameter pointer dcl 260 in procedure "any_other_handler" set ref 258 281* 316 318 ioa_$ioa_switch 000064 constant entry external dcl 100 ref 148 173 221 iox_$control 000040 constant entry external dcl 90 ref 147 159 iox_$get_line 000066 constant entry external dcl 101 ref 176 iox_$put_chars 000042 constant entry external dcl 91 ref 117 311 iox_$user_input 000070 external static pointer dcl 102 set ref 147* 159* 176* iox_$user_output 000044 external static pointer dcl 92 set ref 117* 148* 173* 221* 311* l 000555 automatic fixed bin(17,0) dcl 266 set ref 292* 293 294 295 301 length builtin function dcl 65 in procedure "fst_process_overseer_" ref 124 176 176 length based fixed bin(17,0) level 2 in structure "condition_info_header" dcl 6-6 in procedure "any_other_handler" ref 319 line 000252 automatic char(150) packed unaligned dcl 48 set ref 147 147 159 159 172* 173 173 176 176 176 176 179 182 182 183 183 line_length 000320 automatic fixed bin(21,0) dcl 49 set ref 176* 179 180 181* 181 182 182 183 183 line_start 000321 automatic fixed bin(17,0) dcl 50 set ref 179* 180 181 182 182 183 183 literal_sw 1(05) 000574 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* max_seg_size 62 000112 automatic fixed bin(21,0) level 2 dcl 47 set ref 246* maxlength builtin function dcl 340 ref 356 mcptr parameter pointer dcl 260 set ref 258 281* message based char packed unaligned dcl 270 set ref 291 292 294 295 298 298 299* 299 301 303* 303 message_len 000557 automatic fixed bin(21,0) dcl 269 set ref 281* 283 291 292 294 295 298 298 299 299 299 300* 300 301 303 303 304* 304 311* message_ptr 000560 automatic pointer dcl 271 set ref 281* 291 292 294 295 298 298 299 299 301 303 303 311* mothd_ptr 000324 automatic pointer dcl 52 set ref 115* 116 117* 118* names 1 000331 automatic char(168) initial array level 2 dcl 56 set ref 56* 156* null builtin function dcl 65 ref 116 131 133 136 316 7-7 7-7 7-7 number 000331 automatic fixed bin(17,0) initial level 2 dcl 56 set ref 56* pad 137(04) 000112 automatic bit(32) level 3 packed packed unaligned dcl 47 set ref 248* padding 1(07) 000574 automatic bit(29) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* pathname 000112 automatic varying char(168) level 2 dcl 47 set ref 241* pit based structure level 1 dcl 3-50 pp 000322 automatic pointer dcl 51 set ref 113* 114 124 124 124 126* print_prompt_char 000326 automatic bit(1) packed unaligned dcl 53 set ref 171 182* 186* 239* proc_ptr based pointer dcl 67 set ref 144* prompt 137(03) 000112 automatic bit(1) level 3 packed packed unaligned dcl 47 set ref 239* prompt_after_explanation 1(06) 000574 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 354* 7-7* ptr_array based pointer array dcl 68 set ref 136* 191* 249* query_code 3 000574 automatic fixed bin(35,0) initial level 2 dcl 7-7 set ref 7-7* query_info 000574 automatic structure level 1 dcl 7-7 set ref 357 357 query_info_version_6 constant fixed bin(17,0) initial dcl 7-36 ref 350 question_iocbp 4 000574 automatic pointer initial level 2 dcl 7-7 set ref 7-7* quiet_restart 2(02) based bit(1) level 3 packed packed unaligned dcl 6-6 ref 319 quit 002200 stack reference condition dcl 70 ref 146 quit_prompt 000327 automatic bit(1) packed unaligned dcl 54 set ref 149* 171 174* 240* release_temp_segments_ 000062 constant entry external dcl 99 ref 136 191 repeat_time 10 000574 automatic fixed bin(71,0) initial level 2 dcl 7-7 set ref 7-7* reverse builtin function dcl 65 ref 124 saved_cp_ptr 002170 automatic pointer dcl 62 set ref 196* 211* saved_precision_length 000330 automatic fixed bin(17,0) dcl 55 set ref 134* 137 198 saved_search_rules 000404 automatic structure level 1 dcl 59 set ref 195 195 210 210 search_rules 000331 automatic structure level 1 dcl 56 set ref 154 154 157 157 status_code 2 000574 automatic fixed bin(35,0) initial level 2 dcl 7-7 set ref 7-7* substr builtin function dcl 65 set ref 124 173 173 179 182 182 183 183 291 292 294 295 298 298 299* 299 301 303* 303 subsystem 137 000112 automatic bit(1) level 3 packed packed unaligned dcl 47 set ref 128* 141 159 208* suppress_name_sw 1(01) 000574 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 352* 7-7* suppress_spacing 1(04) 000574 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 7-7* switches 1 000574 automatic structure level 2 dcl 7-7 sys_info$max_seg_size 000072 external static fixed bin(35,0) dcl 103 ref 246 text_length 60 000112 automatic fixed bin(21,0) level 2 dcl 47 set ref 242* text_modified 137(01) 000112 automatic bit(1) level 3 packed packed unaligned dcl 47 set ref 183 244* text_ptr 54 000112 automatic pointer level 2 dcl 47 set ref 131* 136 136 191 249 user_abs_attributes based structure level 1 dcl 2-25 user_attributes based structure level 1 dcl 1-21 verify builtin function dcl 65 ref 124 179 version 000574 automatic fixed bin(17,0) level 2 dcl 7-7 set ref 350* wcptr parameter pointer dcl 260 set ref 258 281* working_dir 63 000112 automatic varying char(168) level 2 dcl 47 set ref 124* 209* yes_or_no_sw 1 000574 automatic bit(1) initial level 3 packed packed unaligned dcl 7-7 set ref 351* 7-7* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 2-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-77 PIT_version_3 internal static fixed bin(17,0) initial dcl 3-143 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 1-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 1-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 1-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 1-50 arg_info based structure level 1 dcl 3-136 condition_info_ptr automatic pointer dcl 5-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 5-30 pit_$ external static bit(36) dcl 3-47 pit_ptr automatic pointer dcl 3-48 query_info_version_3 internal static fixed bin(17,0) initial dcl 7-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 7-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 7-35 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000500 constant label dcl 131 ref 213 READ_LOOP 001007 constant label dcl 166 set ref 150 282 322 324 327 331 RETURN 001272 constant label dcl 191 ref 141 any_other_handler 001627 constant entry internal dcl 258 ref 143 143 ask_for_continue 002222 constant entry internal dcl 336 ref 324 327 331 cp_handler 001471 constant entry internal dcl 219 ref 46 fast 001423 constant entry external dcl 206 fst_process_overseer_ 000253 constant entry external dcl 27 initial 001516 constant entry internal dcl 229 ref 140 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3172 3272 2566 3202 Length 3710 2566 100 401 404 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME fst_process_overseer_ 1308 external procedure is an external procedure. on unit on line 135 80 on unit on unit on line 146 88 on unit cp_handler 82 internal procedure is assigned to an entry variable. initial internal procedure shares stack frame of external procedure fst_process_overseer_. any_other_handler 466 internal procedure is assigned to an entry variable. ask_for_continue internal procedure shares stack frame of internal procedure any_other_handler. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME any_other_handler 000100 area any_other_handler 000554 i any_other_handler 000555 l any_other_handler 000556 NEW_LINE any_other_handler 000557 message_len any_other_handler 000560 message_ptr any_other_handler 000562 condition_info_header_ptr any_other_handler 000572 answer ask_for_continue 000574 query_info ask_for_continue fst_process_overseer_ 000100 bit_count fst_process_overseer_ 000101 code fst_process_overseer_ 000102 continue fst_process_overseer_ 000104 edit_ptr fst_process_overseer_ 000106 entry_value fst_process_overseer_ 000112 f fst_process_overseer_ 000252 line fst_process_overseer_ 000320 line_length fst_process_overseer_ 000321 line_start fst_process_overseer_ 000322 pp fst_process_overseer_ 000324 mothd_ptr fst_process_overseer_ 000326 print_prompt_char fst_process_overseer_ 000327 quit_prompt fst_process_overseer_ 000330 saved_precision_length fst_process_overseer_ 000331 search_rules fst_process_overseer_ 000404 saved_search_rules fst_process_overseer_ 002170 saved_cp_ptr fst_process_overseer_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a alloc_char_temp call_ext_out_desc call_ext_out return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry int_entry_desc set_chars_eis index_chars_eis op_empty_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ command_query_ condition_ condition_interpreter_ cu_$get_cp cu_$set_cp date_time_ dfast_error_ fst_command_processor_ fst_edit_ get_temp_segments_ get_wdir_ hcs_$get_search_rules hcs_$initiate_count hcs_$initiate_search_rules hcs_$make_seg hcs_$terminate_noname ioa_$ioa_switch iox_$control iox_$get_line iox_$put_chars release_temp_segments_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. basic_$precision_length fast_related_data_$in_dfast fast_related_data_$in_fast_or_dfast iox_$user_input iox_$user_output sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 46 000233 56 000236 27 000252 113 000261 114 000321 115 000325 116 000401 117 000405 118 000425 124 000436 126 000462 128 000473 129 000475 131 000500 133 000502 134 000503 135 000506 136 000522 137 000552 138 000556 140 000557 141 000561 143 000566 144 000613 146 000622 147 000636 148 000672 149 000711 150 000714 154 000717 155 000732 156 000734 157 000737 159 000752 166 001007 168 001010 169 001013 171 001014 172 001021 173 001045 174 001073 176 001074 177 001117 179 001121 180 001134 181 001136 182 001142 183 001176 185 001241 186 001243 187 001245 188 001246 189 001271 191 001272 193 001315 194 001345 195 001350 196 001362 197 001371 198 001416 200 001421 206 001422 208 001431 209 001433 210 001447 211 001460 213 001467 219 001470 221 001476 223 001515 229 001516 234 001520 235 001521 236 001523 237 001525 239 001527 240 001533 241 001534 242 001535 243 001536 244 001537 245 001541 246 001543 247 001545 248 001546 249 001550 250 001573 252 001625 258 001626 265 001642 267 001645 278 001647 281 001666 282 001734 283 001746 291 001750 292 001755 293 001767 294 001770 295 002000 296 002011 297 002012 298 002014 299 002025 300 002052 301 002054 302 002064 303 002065 304 002115 311 002117 314 002135 316 002144 318 002150 319 002154 322 002161 324 002167 327 002200 331 002211 336 002222 7 7 002224 350 002254 351 002256 352 002260 353 002262 354 002266 355 002270 356 002272 357 002274 358 002330 360 002341 ----------------------------------------------------------- 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