COMPILATION LISTING OF SEGMENT forum_input_requests_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1144.75_Tue_mdt Options: optimize map 1 /****^ *************************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Massachusetts Institute of Technology, 1986 * 6* * * 7* * Copyright (c) 1982 by Massachusetts Institute of Technology * 8* * * 9* *************************************************************** */ 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(86-07-29,Pattin), approve(86-07-29,MCR7354), 15* audit(86-08-07,Margolin), install(86-08-16,MR12.0-1128): 16* Fixed bug in apply request causing null ptr faults. 17* 2) change(90-09-03,Bubric), approve(90-09-03,MCR8200), 18* audit(90-09-26,Blackmore), install(90-10-05,MR12.4-1038): 19* Fix the forum request "apply" so that it doesn't change an unprocessed 20* transaction's meeting to the current meeting. 21* 3) change(91-09-05,Huen), approve(91-09-05,MCR8249), 22* audit(92-01-08,Zimmerman), install(92-04-27,MR12.5-1014): 23* phx20579: Fix the "apply" request to create new unproc trans when 24* no unproc trans exists and no trans_specs is given. 25* phx20578: Generate a complete header when printing an unproc trans which 26* is created iwth the use of the "spply" request. 27* 4) change(91-09-05,Huen), approve(91-09-05,MCR8250), 28* audit(92-01-08,Zimmerman), install(92-04-27,MR12.5-1014): 29* phx20898 & 20899: Fix the "enter" request to handle trans created with 30* "reply -mtg" 31* END HISTORY COMMENTS */ 32 /* This module contains the following forum requests: 33* 34* talk reply set_message enter subject fill 35* apply qedx ted 36* 37* Original coding 6/81 J. Spencer Love 38* Modified for ssu_ 8/21/81 Jay Pattin 39* added set_message 2/27/82 Jay Pattin 40* changed to use format_document_ and apply_request_util_ 6/27/82 Jay Pattin 41* changed to use qedx_ (FINALLY !!) 1/18/83 Jay Pattin */ 42 43 forum_input_requests_$talk_request: 44 procedure (P_ssu_ptr, P_passport_info_ptr); 45 46 declare (P_ssu_ptr, P_passport_info_ptr) 47 ptr parameter; 48 49 declare (addr, codeptr, divide, index, length, ltrim, min, null, rtrim, string, substr, translate, verify) 50 builtin; 51 52 declare (cleanup, linkage_error) condition; 53 54 declare answer char (6) varying, 55 arg_count fixed bin, 56 arg_idx fixed bin, 57 arg_len fixed bin (21), 58 arg_ptr ptr, 59 auto_rql bit (1) aligned, 60 auto_write bit (1) aligned, 61 bit_count fixed bin (24), 62 brief_switch bit (1), 63 buffer_len fixed bin (21), 64 buffer_ptr ptr, 65 default_switch bit (1) aligned, 66 dirname char (168), 67 entryname char (32), 68 fill_switch fixed bin, 69 first_nonwhite_pos fixed bin (21), 70 force bit (1) aligned, 71 idx fixed bin (21), 72 inhibit_auto_fill bit (1) aligned, 73 inhibit_input_cp_escape bit (1) aligned, 74 line_length fixed bin, 75 mask bit (36) aligned, 76 message char (256), 77 message_sw bit (1) aligned, 78 forum_idx fixed bin, 79 forum_dir char (168), 80 forum_name char (32), 81 full_forum_name char (32), 82 new_buffer_ptr ptr, 83 new_buffer_len fixed bin (21), 84 no_chars_read fixed bin (21), /* used for iox_ calls */ 85 reply_switch bit (1), 86 reply_trans_idx fixed bin, 87 request_loop bit (1) aligned, 88 return_arg_len fixed bin (21), 89 return_arg_ptr ptr, 90 ssu_ptr ptr, 91 status fixed binary (35), 92 subject_arg_len fixed bin (21), 93 subject_arg_ptr ptr, 94 subject_switch bit (1) aligned, 95 ted_data_p ptr, 96 temp_forum bit (1) aligned, 97 text_len fixed bin (21), 98 temp_seg_ptr ptr, 99 terminal_switch bit (1) aligned, 100 trans_pic pic "zz9999", /* pretty picture of trans no */ 101 user_file_len fixed bin (21), 102 user_file_ptr ptr, 103 whoami char (32), 104 whoami_really char (32); 105 106 declare 1 ted_info aligned like ted_data, 107 1 fdoc aligned like format_document_options, 108 1 qi aligned, 109 2 header like qedx_info.header, 110 2 buffers (2) like qedx_info.buffers; 111 112 declare arg char (arg_len) based (arg_ptr), 113 buffer char (buffer_len) based (buffer_ptr), 114 new_buffer char (new_buffer_len) based (new_buffer_ptr), 115 return_arg char (return_arg_len) varying based (return_arg_ptr), 116 subject char (no_chars_read - first_nonwhite_pos) 117 based (add_char_offset_ (buffer_ptr, first_nonwhite_pos)), 118 subject_arg char (subject_arg_len) based (subject_arg_ptr), 119 temp_seg char (4 * sys_info$max_seg_size) based (temp_seg_ptr), 120 temp_text char (text_len) based (temp_seg_ptr), 121 user_file char (user_file_len) based (user_file_ptr); 122 123 declare static_initialized bit (1) aligned static initial ("0"b), 124 my_person_id char (20) static, 125 my_project_id char (9) static; 126 127 declare NORMAL_TERMINATION initial (1) fixed bin static options (constant), 128 ENTER_REQUEST_LOOP initial (2) fixed bin static options (constant), 129 ENTER_EDITOR initial (3) fixed bin static options (constant); 130 131 declare LOWER_CASE initial ("abcdefghijklmnopqrstuvwxyz") char (26) static options (constant), 132 UPPER_CASE initial ("ABCDEFGHIJKLMNOPQRSTUVWXYZ") char (26) static options (constant); 133 134 declare NL char (1) static options (constant) initial (" 135 "), 136 SPACE_AND_TAB char (2) static options (constant) initial (" "), 137 WHITE_CHARS char (5) static options (constant) initial (" 138 "); /* NL VT FF HT SPACE */ 139 140 declare (forum_et_$cant_notify, 141 forum_et_$no_forum, 142 forum_et_$no_unprocessed, 143 forum_et_$read_only, 144 error_table_$bad_conversion, 145 error_table_$badopt, 146 error_table_$fatal_error, 147 error_table_$inconsistent, 148 error_table_$long_record, 149 error_table_$noarg, 150 error_table_$oldnamerr, 151 error_table_$recoverable_error, 152 error_table_$zero_length_seg, 153 sys_info$max_seg_size) fixed bin (35) external, 154 iox_$user_input ptr external; 155 156 declare add_char_offset_ entry (ptr, fixed bin (21)) returns (ptr) reducible, 157 command_query_ entry () options (variable), 158 format_document_$string entry (char (*), char (*), fixed bin (21), ptr, fixed bin (35)), 159 forum_requests_$open_forum 160 entry (char (*), fixed bin, char (*), char (*), fixed bin (35)), 161 forum_trans_specs_$parse_specs 162 entry (ptr, fixed bin, bit (36) aligned, entry, fixed bin, char (*), char (*), ptr), 163 forum_trans_util_$read_trans entry (ptr, fixed bin, fixed bin, ptr, fixed bin (35)), 164 forum_$close_forum entry (fixed bin, fixed bin (35)), 165 forum_$enter_trans entry (fixed bin, char (*), fixed bin, char (*), bit (1) aligned, fixed bin, 166 fixed bin (35)), 167 forum_$get_message entry (fixed bin, char (*), fixed bin (35)), 168 forum_$set_message entry (fixed bin, char (*), fixed bin (35)), 169 forum_$open_forum entry (char (*), char (*), fixed bin, fixed bin (35)), 170 cu_$cp entry (ptr, fixed bin (21), fixed bin (35)), 171 cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)), 172 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 173 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 174 hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)), 175 hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (2), ptr, 176 fixed bin (35)), 177 hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned), 178 hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)), 179 hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned), 180 hcs_$status_mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)), 181 hcs_$terminate_noname entry (ptr, fixed bin (35)), 182 iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 183 ioa_ entry options (variable), 184 ioa_$nnl entry options (variable), 185 ipc_$cutoff entry (fixed bin (71), fixed bin (35)), 186 ipc_$reconnect entry (fixed bin (71), fixed bin (35)), 187 qedx_ entry (ptr, fixed bin (35)), 188 release_temp_segment_ entry (char (*), ptr, fixed bin (35)), 189 requote_string_ entry (char (*)) returns (char (*)), 190 ssu_$abort_line entry options (variable), 191 ssu_$apply_request_util entry (ptr, fixed bin, ptr, fixed bin (21), fixed bin (21)), 192 ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)), 193 ssu_$get_request_name entry (ptr) returns (char (32) varying), 194 ssu_$get_subsystem_and_request_name 195 entry (ptr) returns (char (72) varying), 196 ssu_$print_message entry options (variable), 197 ssu_$return_arg entry (ptr, fixed bin, bit (1) aligned, ptr, fixed bin (21)), 198 user_info_$whoami entry (char (*), char (*), char (*)), 199 value_$get entry options (variable); 200 1 1 /* START OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 1 7* audit(86-08-03,Margolin), install(86-08-16,MR12.0-1128): 1 8* Added trailer_format. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 declare passport_info_ptr ptr; 1 13 1 14 declare 1 passport aligned based (passport_info_ptr), 1 15 2 version fixed bin, /* 2 */ 1 16 2 forum_idx fixed bin, /* current forum */ 1 17 2 forum_dir char (168) unal, /* where forum lives */ 1 18 2 forum_name char (32) unal, /* Current forum I'm at */ 1 19 2 forum_name_len fixed bin, /* length of forum_name without suffix */ 1 20 2 flags unal, 1 21 3 brief_sw bit (1) unal, /* specified at invocation */ 1 22 3 talk_fill bit (1) unal, /* God knows */ 1 23 3 print_fill bit (1) unal, /* God doesn't know */ 1 24 3 read_only bit (1) unal, 1 25 3 print_message bit (1) unal, /* Print chairman message on talk/reply */ 1 26 3 auto_write bit (1) unal, 1 27 3 mbz bit (30) unal, /* Future expansion */ 1 28 2 current_trans fixed bin, /* current transaction number */ 1 29 2 input_fill_width fixed bin, /* line length used for input filling */ 1 30 2 output_fill_width fixed bin, /* line length used for output filling */ 1 31 2 public_channel fixed bin (71), /* My transaction wakeup channel. */ 1 32 2 area_ptr ptr, /* used for random temporary storage */ 1 33 2 first_trans_ptr ptr, /* ptrs to linked list of transactions copied to */ 1 34 2 last_trans_ptr ptr, /* user ring */ 1 35 2 unprocessed_trans_ptr ptr, /* If this isn't null, we got one pending. */ 1 36 2 unprocessed_reply_trans fixed bin, /* If nonzero, unprocessed trans is a reply. */ 1 37 2 unprocessed_forum_dir char (168), /* Directory containing meeting unproc is for. */ 1 38 2 unprocessed_forum_name char (32), /* Name of meeting unproc is for */ 1 39 2 unprocessed_name_len fixed bin, /* length (w/o suffix) of Name of meeting unproc is for */ 1 40 2 ssu_ptr ptr, /* Department of Redundancy Department. */ 1 41 2 next_passport_ptr ptr, /* list of all invocations */ 1 42 2 trailer_format fixed bin; 1 43 1 44 declare passport_version_2 fixed bin static options (constant) initial (2); 1 45 1 46 declare forum_area area based (passport.area_ptr), 1 47 no_suffix_name char (passport.forum_name_len) based (addr (passport.forum_name)); 1 48 1 49 declare forum_data_$version_string character (8) external, 1 50 forum_data_$central_directory 1 51 character (168) unaligned external, 1 52 forum_data_$info_directory character (168) unaligned external; 1 53 1 54 declare (TFMT_none init (0), 1 55 TFMT_number init (1), 1 56 TFMT_more init (2), 1 57 TFMT_reference init (3)) 1 58 fixed bin static options (constant); 1 59 1 60 /* END OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 201 202 2 1 /* BEGIN INCLUDE FILE: forum_user_trans.incl.pl1 */ 2 2 2 3 dcl alloc_text_length fixed bin (21); /* length of text area to allocate */ 2 4 dcl alloc_subject_length fixed bin (21); /* length of subject area to allocate */ 2 5 dcl forum_user_trans_ptr ptr; /* pointer to below structure */ 2 6 2 7 dcl 1 forum_user_trans based (forum_user_trans_ptr) aligned, 2 8 2 type fixed bin, /* type of transaction */ 2 9 2 person_id char (22), /* person_id of author of this transaction */ 2 10 2 project_id char (9), /* project_id of author of this transaction */ 2 11 2 time fixed bin (71), /* time transaction was entered */ 2 12 2 trans_no fixed bin, /* number of this transaction */ 2 13 2 next_trans_ptr ptr, /* pointer (in user ring) of next transaction */ 2 14 2 prev_trans_ptr ptr, /* pointer (in user ring) of previous transaction */ 2 15 2 subject_length fixed bin (21), /* length of subject field of transaction */ 2 16 2 text_length fixed bin (21), /* length of text field of transaction */ 2 17 2 unfilled bit (1) aligned, /* set if transaction is NOT stored filled */ 2 18 2 subject char (alloc_subject_length refer (forum_user_trans.subject_length)) unaligned, /* subject of transaction */ 2 19 2 text char (alloc_text_length refer (forum_user_trans.text_length)) unaligned; /* text of transaction */ 2 20 2 21 declare user_trans_type fixed bin static options (constant) initial (1); 2 22 declare message_type fixed bin static options (constant) initial (2); 2 23 2 24 declare (ONLY_UNDELETED init (0), 2 25 INCLUDE_DELETED init (1), 2 26 ONLY_DELETED init (2)) 2 27 fixed bin static options (constant); 2 28 2 29 /* END INCLUDE FILE: forum_user_trans.incl.pl1 */ 203 204 3 1 /* ... BEGIN INCLUDE FILE forum_trans_list.incl.pl1 ... */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 3 7* audit(86-08-07,Margolin), install(86-08-16,MR12.0-1128): 3 8* Added deleted switch. 3 9* END HISTORY COMMENTS */ 3 10 3 11 3 12 dcl forum_trans_list_ptr ptr; 3 13 dcl alloc_trans_list_size fixed bin; 3 14 3 15 dcl 1 forum_trans_list aligned based (forum_trans_list_ptr), 3 16 2 max_size fixed bin, 3 17 2 size fixed bin, 3 18 2 max_personid_len fixed bin, 3 19 2 list (alloc_trans_list_size refer (forum_trans_list.max_size)), 3 20 3 trans_num fixed bin (17), /* must be aligned */ 3 21 3 nref fixed bin (17) unaligned, 3 22 3 pref fixed bin (17) unaligned, 3 23 3 flags unaligned, 3 24 4 deleted bit (1) unaligned, 3 25 4 pad bit (35) unaligned; 3 26 3 27 dcl parse_flags_word bit (36) aligned; 3 28 3 29 dcl 1 parse_flags aligned based (addr (parse_flags_word)), 3 30 2 non_null bit (1) unal, /* on if trans_spec cannot be empty */ 3 31 2 only_one bit (1) unal, /* on if only one transaction may be specified */ 3 32 2 allow_deleted bit (1) unal, /* on if deleted transactions may be specified */ 3 33 2 must_be_deleted bit (1) unal, /* on if must be deleted */ 3 34 2 disallow_unproc bit (1) unal, /* on if unprocessed transaction not valid */ 3 35 2 disallow_meeting bit (1) unal, /* on if -meeting not allowed */ 3 36 2 disallow_reverse bit (1) unal, /* on if -reverse not allowed */ 3 37 2 disallow_idl bit (1) unal, /* on if -include_deleted not allowed */ 3 38 2 dont_read bit (1) unal, /* on if regexps, -sj, -text, userids, time not allowed */ 3 39 2 disallow_initial bit (1) unal, /* on if -initial not allowed */ 3 40 2 default_to_all bit (1) unal, /* on if defaults to all rather than current */ 3 41 2 default_to_unproc bit (1) unal, /* on if defaults to unproc, not current */ 3 42 2 disallow_cmsg bit (1) unal, /* no chairman_message */ 3 43 2 disallow_by_chain bit (1) unal, /* no -by_chain */ 3 44 2 allow_inhibit_error bit (1) unal, /* don't complain if none selected and -ihe given */ 3 45 2 call_on_non_ctl_arg bit (1) unal, /* call request on bad arguments even if not ctl args */ 3 46 2 default_to_none bit (1) unal, /* allow no transactions to be selected */ 3 47 2 padding bit (19) unal; 3 48 3 49 dcl ANY bit (36) aligned init (""b); 3 50 dcl (NON_NULL init ("10000000000000000"b), 3 51 ONLY_ONE init ("01000000000000000"b), 3 52 ALLOW_DELETED init ("00100000000000000"b), 3 53 MUST_BE_DELETED init ("00110000000000000"b), 3 54 DISALLOW_UNPROC init ("00001000000000000"b), 3 55 DISALLOW_MTG init ("00000100000000000"b), 3 56 DISALLOW_REV init ("00000010000000000"b), 3 57 DISALLOW_IDL init ("00000001000000000"b), 3 58 DONT_READ init ("00000000100000000"b), 3 59 DISALLOW_INITIAL init ("00000000010000000"b), 3 60 DEFAULT_TO_ALL init ("00000000001000000"b), 3 61 DEFAULT_TO_UNPROC init ("00000000000100000"b), 3 62 DISALLOW_CMSG init ("00000000000010000"b), 3 63 DISALLOW_BYCHAIN init ("00000000000001000"b), 3 64 ALLOW_IHE init ("00000000000000100"b), 3 65 CALL_ON_BAD_ARGS init ("00000000000000010"b), 3 66 DEFAULT_TO_NONE init ("00000000000000001"b) 3 67 ) bit (17) aligned internal static options (constant); 3 68 3 69 /* ... END INCLUDE FILE forum_trans_list.incl.pl1 ... */ 205 206 4 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 4 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 4 3 /* version number changed to 4, 08/10/78 WOS */ 4 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 4 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 4 6 4 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 4 8 2 version fixed bin, /* version of this structure - must be set, see below */ 4 9 2 switches aligned, /* various bit switch values */ 4 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 4 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 4 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 4 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 4 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 4 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 4 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 4 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 4 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 4 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 4 20 4 21 /* Limit of data defined for version 2 */ 4 22 4 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 4 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 4 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 4 26 /* minimum of 30 seconds required for repeat */ 4 27 /* otherwise, no repeat will occur */ 4 28 /* Limit of data defined for version 4 */ 4 29 4 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 4 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 4 32 4 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 4 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 4 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 4 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 4 37 4 38 /* END INCLUDE FILE query_info.incl.pl1 */ 207 208 5 1 /**** format: ind3,ll80,initcol6,indattr,^inddcls,dclind4,idind16 */ 5 2 /**** format: struclvlind2,^ifthenstmt,^ifthendo,^ifthen,^indnoniterdo */ 5 3 /**** format: ^inditerdo,^indnoniterend,^indthenelse,case,^indproc,^indend */ 5 4 /**** format: ^delnl,^insnl,comcol41,^indcom,^indblkcom,linecom,^indcomtxt */ 5 5 /* BEGIN INCLUDE FILE ..... ted_.incl.pl1 ..... 12/08/77 J Falksen */ 5 6 /* 08/11/81 jaf Added version number in place of implied pad field */ 5 7 5 8 dcl ted_ entry (ptr, fixed bin (35)) options(variable); 5 9 5 10 /* call ted_ (ted_data_p,code); */ 5 11 dcl ted_data_version_1 fixed bin int static options (constant) init (1001); 5 12 5 13 dcl 1 ted_data based (ted_data_p), 5 14 2 tedname char (32) var, /* name which should appear in error */ 5 15 /* messages */ 5 16 2 version fixed bin (35), 5 17 2 ted_com_p ptr, /* string to be initially executed */ 5 18 2 ted_com_l fixed bin (21), /* length thereof */ 5 19 2 ted_mode fixed bin, /* ted operating mode */ 5 20 /* 0 - NORMAL */ 5 21 /* 1 - SAFE */ 5 22 /* 2 - COM */ 5 23 /* 3 - RESTART */ 5 24 5 25 2 arg_list_p ptr, /* pointer to the argument list */ 5 26 2 arg_list_1 fixed bin, /* first argument to be used */ 5 27 2 arg_list_n fixed bin, /* last argument to be used */ 5 28 5 29 /* To avoid forcing the caller to always manufacture an argument list for */ 5 30 /* arg_list_p to point to, ted_ will accept additional arguments (3...n). */ 5 31 /* If more than 2 are present, ted_'s argument pointer will be placed in */ 5 32 /* arg_list_p, 3 into arg_list_1 and the number of args into arg_list_n. */ 5 33 5 34 2 return_string_p ptr, /* active function return string */ 5 35 2 return_string_l fixed bin (21), /* length thereof */ 5 36 /* b(argn) is copied into this */ 5 37 /* string if it exists */ 5 38 2 input_p ptr, /* pointer to data to be edited */ 5 39 2 input_l fixed bin (21), /* length of data to be edited */ 5 40 /* if this exists, the the data is */ 5 41 /* copied into b0 */ 5 42 2 output_p ptr, /* pointer to output segment */ 5 43 2 output_l fixed bin (21), /* length of output data (output) */ 5 44 /* if output_p = null the data is */ 5 45 /* put back into input area */ 5 46 2 temp_dir char (168); /* directory to hold work segments */ 5 47 5 48 dcl tederror_table_$ted_com_abort fixed bin(35) ext static; 5 49 5 50 5 51 /* END INCLUDE FILE ..... ted_.incl.pl1 ..... */ 209 210 6 1 /* BEGIN INCLUDE FILE ... qedx_info.incl.pl1 */ 6 2 /* Created: January 1983 by G. Palter */ 6 3 6 4 /* Data structure which supplies input/output arguments to qedx_ subroutine */ 6 5 6 6 dcl 1 qedx_info aligned based (qedx_info_ptr), 6 7 2 header, /* allows use of like to build automatic version */ 6 8 3 version character (8), 6 9 3 editor_name character (72) unaligned, 6 10 3 buffer_io entry (pointer, bit (1) aligned), /* procedure invoked to read/write an editor buffer */ 6 11 3 flags, 6 12 4 no_rw_path bit (1) unaligned, /* ON => no r/w may use a pathname and R/W are illegal */ 6 13 4 query_if_modified bit (1) unaligned, /* ON => query on exit if modified buffers exist */ 6 14 4 caller_does_io bit (1) unaligned, /* ON => caller does actual work of read/write requests */ 6 15 4 quit_forced bit (1) unaligned, /* set ON => user used Q or asked to punt modified buffers */ 6 16 4 buffers_truncated bit (1) unaligned, /* set ON => some editing lost when written */ 6 17 4 pad bit (29) unaligned, 6 18 3 n_buffers fixed binary, /* # of buffers supplied by caller */ 6 19 2 buffers (qedx_info_n_buffers refer (qedx_info.n_buffers)), 6 20 3 buffer_name character (16) unaligned, /* name of the buffer */ 6 21 3 buffer_pathname character (256) unaligned, /* initial default pathname of buffer */ 6 22 3 region_ptr pointer, /* -> caller's optional region */ 6 23 3 region_max_lth fixed binary (21), /* # of characters which will fit in caller's region */ 6 24 3 region_initial_lth fixed binary (21), /* # of characters in caller's region for initial read */ 6 25 3 region_final_lth fixed binary (21), /* set to # of characters placed in caller's region on exit */ 6 26 3 flags, 6 27 4 read_write_region bit (1) unaligned, /* ON => use caller's region as default for read/write; 6 28* OFF => use file specified by pathname as default */ 6 29 4 locked_pathname bit (1) unaligned, /* ON => read/write will never change default pathname or 6 30* prevent qedx from trusting the default path; 6 31* OFF => read with pathname sets ^trusted and write with 6 32* pathname changes the default */ 6 33 4 execute_buffer bit (1) unaligned, /* ON => execute it's contents before reading from terminal */ 6 34 /*** following switches apply only when read_write_region is ON ... */ 6 35 4 default_read_ok bit (1) unaligned, /* ON => r without explicit pathname is OK */ 6 36 4 default_write_ok bit (1) unaligned, /* ON => w without explicit pathname is OK */ 6 37 4 auto_write bit (1) unaligned, /* ON => automatically write buffer contents on "q" */ 6 38 4 truncated bit (1) unaligned, /* set ON => edited version is too long for caller's region */ 6 39 4 pad bit (29) unaligned; 6 40 6 41 dcl qedx_info_ptr pointer; 6 42 dcl qedx_info_n_buffers fixed binary; /* needed to allocate above structure */ 6 43 6 44 dcl QEDX_INFO_VERSION_1 character (8) static options (constant) initial ("qxi_01.1"); 6 45 6 46 /* END INCLUDE FILE ... qedx_info.incl.pl1 */ 211 212 7 1 /* BEGIN INCLUDE FILE format_document_options.incl.pl1 7 2* 7 3* Modified 82.10.18 by Paul W. Benjamin to add dont_compress_sw and upgrade 7 4* to version_2. 7 5* Modified 83.02.15 by PWB to add break_word_sw and max_line_length_sw. 7 6* Modified 83.03.01 by PWB to add dont_break_indented_lines_sw. 7 7* Modified 83.03.03 by PWB to add sub_err_sw. 7 8* Modified 83.06.07 by PWB to add dont_fill_sw. 7 9* Modified 83.06.09 by PWB to add hyphenation_sw and syllable_size. 7 10**/ 7 11 7 12 dcl 1 format_document_options aligned based (format_document_options_ptr), 7 13 2 version_number fixed bin, /* input */ 7 14 /* must be format_document_version_2 */ 7 15 2 indentation fixed bin, /* input */ 7 16 /* all lines must be indented by this value */ 7 17 2 line_length fixed bin, /* input */ 7 18 /* initial line length */ 7 19 2 switches, 7 20 3 pgno_sw bit (1) unal, /* input */ 7 21 /* end each page with a centered page number */ 7 22 3 adj_sw bit (1) unal, /* input */ 7 23 /* adjust mode initially on */ 7 24 /* only meaningful if dont_fill_sw = "0"b */ 7 25 3 galley_sw bit (1) unal, /* input */ 7 26 /* galley mode -- no page breaks */ 7 27 3 error_sw bit (1) unal, /* input */ 7 28 /* report all errors on error_output */ 7 29 3 literal_sw bit (1) unal, /* input */ 7 30 /* "1"b - interpret all lines as text */ 7 31 /* "0"b - lines that start with "." are controls */ 7 32 3 file_sw bit (1) unal, /* output */ 7 33 /* has meaning for non-zero storage system status codes */ 7 34 /* "1"b code refers to output file */ 7 35 /* "0"b code refers to input file */ 7 36 3 dont_compress_sw bit (1) unal, /* input */ 7 37 /* "1"b - don't compress white space */ 7 38 /* "0"b - compress white space when filling */ 7 39 3 break_word_sw bit (1) unal, /* input */ 7 40 /* "1"b - break a word rather than exceed line_length */ 7 41 /* "0"b - write an overlength line if no spaces found */ 7 42 3 max_line_length_sw bit (1) unal, /* input */ 7 43 /* "1"b - line_length cannot be exceeded */ 7 44 /* "0"b - line_length can be exceeded (by .pdw controls) */ 7 45 3 dont_break_indented_lines_sw /* input */ 7 46 bit (1) unal, /* don't break a line that begins with whitespace */ 7 47 /* when it is the last line, or the next line is */ 7 48 /* null or the next line begins with whitespace */ 7 49 3 sub_err_sw bit (1) unal, /* input */ 7 50 /* quietly call sub_err_ with diagnostic errors */ 7 51 3 dont_fill_sw bit (1) unal, /* input */ 7 52 /* "1"b - fill mode off initially */ 7 53 /* "0"b - fill mode on initially */ 7 54 3 hyphenation_sw bit (1) unal, 7 55 3 mbz bit (23) unal, /* input */ 7 56 /* MUST be zero */ 7 57 2 syllable_size 7 58 fixed bin; /* input */ 7 59 /* smallest portion of word */ 7 60 /* to be left by hyphenation */ 7 61 7 62 dcl format_document_options_ptr ptr; 7 63 dcl format_document_version_2 fixed bin int static options (constant) init (2); 7 64 dcl format_document_version_1 fixed bin int static options (constant) init (1); 7 65 7 66 /* END INCLUDE FILE format_document_options.incl.pl1 */ 213 214 215 /* forum_input_requests_$talk_request: procedure (P_ssu_ptr, P_passport_info_ptr); */ 216 217 call setup_request (1); 218 219 reply_switch = "0"b; 220 auto_rql = "1"b; 221 222 on cleanup call clean_up_talk (); 223 224 do arg_idx = 1 to arg_count; 225 call parse_arg (arg_idx); 226 end; 227 228 call process_transaction (); 229 230 call clean_up_talk (); 231 232 return; 233 234 forum_input_requests_$reply_request: 235 entry (P_ssu_ptr, P_passport_info_ptr); 236 237 call setup_request (1); 238 if passport.forum_idx = 0 then call ssu_$abort_line (ssu_ptr, forum_et_$no_forum); 239 240 reply_switch = "1"b; 241 auto_rql = "1"b; 242 243 on cleanup call clean_up_talk (); 244 245 parse_flags_word = ""b; 246 parse_flags.only_one = "1"b; 247 parse_flags.disallow_unproc = "1"b; 248 parse_flags.disallow_meeting = "1"b; 249 parse_flags.disallow_reverse = "1"b; 250 parse_flags.disallow_idl = "1"b; 251 parse_flags.dont_read = "1"b; 252 parse_flags.disallow_cmsg = "1"b; 253 parse_flags.disallow_by_chain = "1"b; 254 call forum_trans_specs_$parse_specs (passport_info_ptr, 1, parse_flags_word, parse_arg, forum_idx, forum_dir, 255 forum_name, forum_trans_list_ptr); 256 257 if forum_idx ^= 0 then do; 258 temp_forum = "1"b; 259 if forum_idx < 0 then 260 full_forum_name = rtrim (forum_name) || ".forum"; 261 else full_forum_name = rtrim (forum_name) || ".control"; 262 end; 263 else forum_idx = passport.forum_idx; 264 reply_trans_idx = forum_trans_list.list (1).trans_num; /* get correct subject */ 265 266 free forum_trans_list; 267 268 call process_transaction (); 269 270 call clean_up_talk (); 271 272 return; 273 274 forum_input_requests_$set_message: 275 entry (P_ssu_ptr, P_passport_info_ptr); 276 277 call setup_request (1); 278 279 message_sw, auto_rql = "1"b; 280 281 on cleanup call clean_up_talk (); 282 283 do arg_idx = 1 to arg_count; 284 call parse_arg (arg_idx); 285 end; 286 287 call process_transaction (); 288 call clean_up_talk (); 289 290 return; 291 292 parse_arg: 293 procedure (arg_idx); 294 295 declare arg_idx fixed bin; 296 297 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 298 299 if substr (arg, 1, min (1, arg_len)) = "-" 300 then if arg = "-brief" | arg = "-bf" then brief_switch = "1"b; 301 else if arg = "-auto_write" then auto_write = "1"b; 302 else if arg = "-no_auto_write" then auto_write = "0"b; 303 else if arg = "-fill" | arg = "-fi" then fill_switch = 1; 304 else if arg = "-force" | arg = "-fc" then force = "1"b; 305 else if arg = "-input_file" | arg = "-if" then call get_input_file (arg_idx); 306 else if arg = "-line_length" | arg = "-ll" then do; 307 if arg_idx = arg_count then 308 call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Following ^a.", arg); 309 arg_idx = arg_idx + 1; 310 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 311 line_length = cv_dec_check_ (arg, status); 312 if status ^= 0 then 313 call ssu_$abort_line (ssu_ptr, error_table_$bad_conversion, "^a", arg); 314 315 if line_length < 40 then call ssu_$abort_line (ssu_ptr, 0, "Line length must be at least 40."); 316 fill_switch = 1; 317 end; 318 else if arg = "-long" | arg = "-lg" then brief_switch = "0"b; 319 else if ^message_sw & (arg = "-meeting" | arg = "-mtg") then call get_forum (arg_idx); 320 else if arg = "-no_fill" | arg = "-nfi" then fill_switch = -1; 321 else if arg = "-no_force" | arg = "-nfc" then force = "0"b; 322 else if arg = "-no_request_loop" | arg = "-nrql" then do; 323 request_loop = "0"b; 324 auto_rql = "0"b; 325 end; 326 else if arg = "-request_loop" | arg = "-rql" then do; 327 request_loop = "1"b; 328 auto_rql = "0"b; 329 end; 330 else if ^message_sw & (arg = "-subject" | arg = "-sj") then call get_subject (arg_idx); 331 else if arg = "-terminal_input" | arg = "-ti" then terminal_switch = "1"b; 332 333 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, """^a""", arg); 334 335 else call ssu_$abort_line (ssu_ptr, 0, "Usage: ^a ^[{trans_spec} ^]{-control_args}", whoami, reply_switch); 336 337 return; 338 339 end parse_arg; 340 341 get_input_file: 342 procedure (arg_idx); 343 344 declare arg_idx fixed bin; 345 346 if user_file_ptr ^= null () then call ssu_$abort_line (ssu_ptr, 0, "Only one -input_file is permitted."); 347 348 arg_idx = arg_idx + 1; 349 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 350 351 call expand_pathname_ (arg, dirname, entryname, status); 352 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "^a", arg); 353 354 call hcs_$initiate_count (dirname, entryname, "", bit_count, 0, user_file_ptr, status); 355 if user_file_ptr = null () 356 then call ssu_$abort_line (ssu_ptr, status, "Initiating ^a^[>^]^a.", dirname, dirname ^= ">", entryname); 357 358 user_file_len = divide (bit_count, 9, 21, 0); 359 if user_file_len <= 0 then 360 call ssu_$abort_line (ssu_ptr, error_table_$zero_length_seg, "^a^[>^]^a", dirname, dirname ^= ">", entryname); 361 362 return; 363 364 end get_input_file; 365 366 get_forum: 367 procedure (arg_idx); 368 369 declare arg_idx fixed bin; 370 371 if temp_forum then call ssu_$abort_line (ssu_ptr, 0, "-meeting may only be specified once."); 372 373 arg_idx = arg_idx + 1; 374 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 375 376 call forum_requests_$open_forum (arg, forum_idx, forum_dir, forum_name, status); 377 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "^a", arg); 378 379 temp_forum = "1"b; 380 if forum_idx < 0 then 381 full_forum_name = rtrim (forum_name) || ".forum"; 382 else full_forum_name = rtrim (forum_name) || ".control"; 383 return; 384 385 end get_forum; 386 387 get_subject: 388 procedure (arg_idx); 389 390 declare arg_idx fixed bin; 391 392 if subject_arg_ptr ^= null () 393 then call ssu_$abort_line (ssu_ptr, 0, "Only one ""-subject"" may be specified."); 394 395 arg_idx = arg_idx + 1; 396 call ssu_$arg_ptr (ssu_ptr, arg_idx, subject_arg_ptr, subject_arg_len); 397 398 subject_arg_len = length (rtrim (subject_arg, WHITE_CHARS)); 399 idx = verify (subject_arg, WHITE_CHARS) - 1; 400 if idx < 0 then idx = 0; 401 subject_arg_len = subject_arg_len - idx; 402 subject_arg_ptr = add_char_offset_ (subject_arg_ptr, idx); 403 404 if subject_arg_len = 0 then call ssu_$abort_line (ssu_ptr, 0, "The subject field may not be blank."); 405 406 return; 407 408 end get_subject; 409 410 ask_subject: 411 procedure (); 412 413 no_chars_read, first_nonwhite_pos = 0; 414 do while (no_chars_read <= first_nonwhite_pos); 415 call get_line ("Subject: "); 416 end; 417 418 call allocate_transaction (subject, "", inhibit_auto_fill); 419 420 return; 421 422 end ask_subject; 423 424 add_to_subject: 425 procedure (); 426 427 if buffer_ptr = null () then do; 428 buffer_len = 256; 429 allocate buffer in (forum_area); 430 end; 431 432 do while (subject_arg_len + arg_len + 1 > buffer_len); 433 call make_bigger_buffer (subject_arg_len); 434 end; 435 436 buffer = substr (buffer, 1, subject_arg_len) || arg || " "; 437 subject_arg_len = subject_arg_len + arg_len + 1; 438 439 return; 440 end add_to_subject; 441 442 process_transaction: 443 procedure (); 444 445 if forum_idx = 0 then call ssu_$abort_line (ssu_ptr, forum_et_$no_forum); 446 447 if user_file_ptr ^= null () & terminal_switch then 448 call ssu_$abort_line (ssu_ptr, error_table_$inconsistent, """-input_file"" and ""-terminal_input"""); 449 450 if user_file_ptr ^= null () then 451 if auto_rql then request_loop = "1"b; 452 else ; 453 else auto_rql = "0"b; 454 455 if fill_switch = 0 then 456 if user_file_ptr ^= null () | ^passport.talk_fill then fill_switch = -1; 457 else fill_switch = 1; 458 459 if passport.unprocessed_trans_ptr ^= null () 460 then if user_file_ptr ^= null () & ^request_loop 461 then forum_user_trans_ptr = null (); /* Don't affect unprocessed in this case. */ 462 else if ^force then do; 463 query_info.version = query_info_version_5; 464 query_info.suppress_name_sw = ""b; 465 query_info.yes_or_no_sw = "1"b; 466 call command_query_ (addr (query_info), answer, whoami_really, 467 "A previous unprocessed transaction has not been entered.^/Do you wish to overwrite it?"); 468 if answer = "no" then call ssu_$abort_line (ssu_ptr); 469 end; 470 471 inhibit_auto_fill = (fill_switch < 0); 472 473 if ^message_sw then do; 474 if ^brief_switch & passport.print_message then do; 475 call forum_$get_message (forum_idx, message, status); 476 if status = 0 then call ioa_$nnl ("^a", message); 477 passport.print_message = "0"b; 478 end; 479 480 if reply_switch then call print_subject ("", inhibit_auto_fill); 481 else if subject_arg_ptr ^= null () then call allocate_transaction (subject_arg, "", inhibit_auto_fill); 482 else call ask_subject (); 483 end; 484 else call allocate_transaction ((""), (""), inhibit_auto_fill); 485 486 if user_file_ptr ^= null () then do; 487 call allocate_transaction (forum_user_trans.subject, user_file, forum_user_trans.unfilled); 488 if ^request_loop then call enter_the_transaction (); 489 if auto_rql then 490 call ioa_ ("Use the ""enter"" request to enter the ^[message^;transaction^].", message_sw); 491 end; 492 493 else call build_transaction (); 494 495 return; 496 497 end process_transaction; 498 499 print_subject: 500 procedure (P_text, P_inhibit_auto_fill); 501 502 declare P_text char (*), 503 P_inhibit_auto_fill bit (1) aligned, 504 p ptr; 505 506 507 /* If -subject given in "reply" request, then override default subject specification. We needn't tell him, he knows. */ 508 509 if subject_arg_len > 0 then do; 510 call allocate_transaction (subject_arg, P_text, P_inhibit_auto_fill); 511 return; 512 end; 513 514 /* Now read out the forum to reply to so we can get its subject. Transaction is always from current meeting*/ 515 516 call forum_trans_util_$read_trans (passport_info_ptr, passport.forum_idx, reply_trans_idx, p, status); 517 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Transaction #^d.", reply_trans_idx); 518 519 /* If the unprocessed transaction has no associated forum_name, repair damage done by "subject -unthread". */ 520 521 if forum_name = "" then do; 522 forum_dir = passport.forum_dir; 523 full_forum_name = passport.forum_name; 524 forum_name = no_suffix_name; 525 end; 526 527 /* If subject already begins with "Re: " then we shouldn't add another one. */ 528 529 if substr (p -> forum_user_trans.subject, 1, min (4, p -> forum_user_trans.subject_length)) = "Re: " 530 then call allocate_transaction (p -> forum_user_trans.subject, P_text, P_inhibit_auto_fill); 531 else call allocate_transaction ("Re: " || p -> forum_user_trans.subject, P_text, P_inhibit_auto_fill); 532 533 /* OK, now we can tell the user what the subject is. */ 534 535 call ioa_ ("Subject: ^a", forum_user_trans.subject); 536 537 return; 538 539 end print_subject; 540 541 build_transaction: /* Internal procedure to handle interactive 'talk' requests */ 542 procedure (); 543 544 declare termination_type fixed bin; 545 546 call get_temp_segment_ (whoami_really, temp_seg_ptr, status); 547 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Getting temp segment."); 548 549 call ipc_$cutoff (passport.public_channel, (0)); 550 551 call ioa_ ("^[Message^;Transaction^]:", message_sw); 552 553 termination_type = add_lines (); 554 555 if termination_type = ENTER_EDITOR then call enter_the_editor (); 556 557 if termination_type = ENTER_REQUEST_LOOP & no_chars_read > first_nonwhite_pos + 2 558 then do; 559 first_nonwhite_pos = first_nonwhite_pos + 2; 560 if substr (buffer, no_chars_read, 1) = NL then no_chars_read = no_chars_read - 1; 561 if no_chars_read = first_nonwhite_pos then ; 562 else if translate (substr (buffer, first_nonwhite_pos + 1, no_chars_read - first_nonwhite_pos), 563 LOWER_CASE, UPPER_CASE) = "nf" 564 then forum_user_trans.unfilled = "1"b; 565 else call ssu_$print_message (ssu_ptr, 0, "Characters following ""q"" ignored."); 566 end; 567 568 call clean_up_talk (); 569 570 if termination_type = NORMAL_TERMINATION & ^request_loop then call enter_the_transaction (); 571 572 return; 573 574 end build_transaction; 575 576 add_lines: 577 procedure () returns (fixed bin); 578 579 declare idx fixed bin (21), 580 quote_switch bit (1) aligned, 581 second_char char (1) based (addr (substr (buffer, first_nonwhite_pos + 2))), 582 third_char char (1) based (addr (substr (buffer, first_nonwhite_pos + 3))); 583 584 quote_switch = "0"b; 585 text_len = 0; 586 do while ("1"b); 587 call get_line (""); 588 if no_chars_read = 2 589 then if substr (buffer, 1, 2) = "." || NL then return (NORMAL_TERMINATION); 590 591 first_nonwhite_pos = 0; 592 idx = index (substr (buffer, 1, no_chars_read), "\") - 1; 593 do while (idx >= 0); 594 if idx > 0 then call add_to_trans (buffer, first_nonwhite_pos, idx); 595 596 if quote_switch | no_chars_read - first_nonwhite_pos < 2 then 597 call add_to_trans (buffer, first_nonwhite_pos, 1); 598 else if second_char = "c" | second_char = "C" then do; 599 first_nonwhite_pos = first_nonwhite_pos + 2; 600 quote_switch = "1"b; 601 end; 602 else if second_char = "q" | second_char = "Q" then return (ENTER_REQUEST_LOOP); 603 else if second_char = "f" | second_char = "F" then do; 604 if idx ^= 0 then text_len = text_len - 1; /* In this case, the new line goes on the request */ 605 if no_chars_read - first_nonwhite_pos < 3 then return (ENTER_EDITOR); 606 else if third_char ^= "q" & third_char ^= "Q" then return (ENTER_EDITOR); 607 else do; 608 first_nonwhite_pos = first_nonwhite_pos + 1; 609 return (ENTER_REQUEST_LOOP); 610 end; 611 end; 612 else call add_to_trans (buffer, first_nonwhite_pos, 1); 613 614 idx = index (substr (buffer, first_nonwhite_pos + 1, no_chars_read - first_nonwhite_pos), "\") - 1; 615 end; 616 617 call add_to_trans (buffer, first_nonwhite_pos, no_chars_read - first_nonwhite_pos); 618 end; 619 620 add_to_trans: 621 procedure (buffer, pos, len); 622 623 declare buffer char (*), 624 pos fixed bin (21), 625 len fixed bin (21); 626 627 substr (temp_seg, text_len + 1, len) = substr (buffer, pos + 1, len); 628 text_len = text_len + len; 629 first_nonwhite_pos = first_nonwhite_pos + len; 630 quote_switch = "0"b; 631 632 return; 633 end add_to_trans; 634 635 end add_lines; 636 637 /* This procedure is used for the subject prompt and by the talk and reply requests to read in a transaction. 638* It returns its results in the global variables buffer, no_chars_read, and first_nonwhite_pos. It removes 639* the trailing newline from the line, if any, and trims off trailing whitespace. It optionally accepts the 640* ".." escape to execute command lines while doing input. The ".." must be the first white characters on the 641* line. The ".." is always accepted when the prompt field is nonblank; otherwise the "value" variable 642* "forum.input_cp_escape" is consulted. */ 643 644 get_line: 645 procedure (prompt); 646 647 declare prompt char (*), 648 newline bit (1) aligned; 649 650 do while ("1"b); 651 call read_a_line (); 652 653 newline = "0"b; /* Now hack off whitespace */ 654 if substr (buffer, no_chars_read, 1) = NL 655 then do; 656 newline = "1"b; 657 no_chars_read = no_chars_read - 1; 658 end; 659 no_chars_read = length (rtrim (substr (buffer, 1, no_chars_read), SPACE_AND_TAB)); 660 if newline & prompt = "" 661 then do; 662 substr (buffer, no_chars_read + 1, 1) = NL; 663 no_chars_read = no_chars_read + 1; 664 end; 665 666 first_nonwhite_pos = verify (substr (buffer, 1, no_chars_read), WHITE_CHARS) - 1; 667 if first_nonwhite_pos < 0 668 then do; 669 first_nonwhite_pos = no_chars_read; 670 return; /* Line is blank. Can't contain command processeor escape. */ 671 end; 672 673 if no_chars_read - first_nonwhite_pos < 2 then return; 674 if substr (buffer, first_nonwhite_pos + 1, 2) ^= ".." then return; 675 676 if prompt = "" 677 then if ^input_cp_escape_allowed () then return; 678 679 call cu_$cp (add_char_offset_ (addr (buffer), first_nonwhite_pos + 2), 680 no_chars_read - first_nonwhite_pos - 2, (0)); 681 682 if prompt = "" then call ioa_ ("Please continue entering your ^[reply^;transaction^].", reply_switch); 683 end; 684 685 /* The following internal procedure of get_line actually reads an entire line into a buffer. This is done as 686* a separate level to compensate for the losing I/O system behavior when the input buffer is too small. */ 687 688 read_a_line: 689 procedure (); 690 691 declare long_record bit (1) aligned, 692 no_new_chars_read fixed bin (21); 693 694 if buffer_ptr = null () 695 then do; 696 buffer_len = 256; 697 allocate buffer in (forum_area); 698 end; 699 700 long_record = "0"b; 701 no_chars_read = 0; 702 do while (long_record | no_chars_read = 0); 703 704 if prompt ^= "" & ^long_record then call ioa_$nnl (prompt); 705 706 call iox_$get_line (iox_$user_input, add_char_offset_ (buffer_ptr, no_chars_read), 707 buffer_len - no_chars_read, no_new_chars_read, status); 708 no_chars_read = no_chars_read + no_new_chars_read; 709 if status = 0 then long_record = "0"b; 710 else if status ^= error_table_$long_record then call ssu_$abort_line (ssu_ptr, status); 711 else do; 712 call make_bigger_buffer (no_chars_read); 713 long_record = "1"b; 714 end; 715 end; 716 717 return; 718 719 end read_a_line; 720 721 end get_line; 722 723 make_bigger_buffer: 724 proc (copy_len); 725 726 declare copy_len fixed bin (21); 727 728 new_buffer_len = 2 * buffer_len; 729 allocate new_buffer in (forum_area); 730 substr (new_buffer, 1, copy_len) = substr (buffer, 1, copy_len); 731 free buffer; 732 buffer_ptr = new_buffer_ptr; 733 buffer_len = new_buffer_len; 734 new_buffer_ptr = null (); 735 736 return; 737 end make_bigger_buffer; 738 739 input_cp_escape_allowed: 740 procedure () returns (bit (1) aligned); 741 742 declare tf_string char (5); 743 744 if inhibit_input_cp_escape then return ("0"b); 745 746 call value_$get (null (), "11"b, rtrim (my_person_id) || ".forum.input_cp_escape", tf_string, status); 747 if status ^= 0 748 then if status ^= error_table_$oldnamerr 749 then return ("0"b); 750 else do; 751 call value_$get (null (), "11"b, "forum.input_cp_escape", tf_string, status); 752 if status ^= 0 then return ("0"b); 753 end; 754 755 tf_string = translate (tf_string, LOWER_CASE, UPPER_CASE); 756 757 if tf_string = "true" then return ("1"b); 758 if tf_string = "t" then return ("1"b); 759 if tf_string = "on" then return ("1"b); 760 if tf_string = "yes" then return ("1"b); 761 if tf_string = "y" then return ("1"b); 762 763 inhibit_input_cp_escape = "1"b; 764 765 return ("0"b); 766 767 end input_cp_escape_allowed; 768 769 enter_the_editor: 770 procedure (); 771 772 first_nonwhite_pos = first_nonwhite_pos + 2; /* Skip the \f */ 773 774 call allocate_transaction (forum_user_trans.subject, temp_text, forum_user_trans.unfilled); 775 text_len = -1; 776 777 if standard_default_editor () then call call_qedx (subject); 778 else call call_ted (add_char_offset_ (buffer_ptr, first_nonwhite_pos), no_chars_read - first_nonwhite_pos); 779 780 return; 781 end enter_the_editor; 782 783 784 standard_default_editor: 785 procedure () returns (bit (1) aligned); 786 787 declare editor char (4); 788 789 on linkage_error go to USE_QEDX; 790 791 call value_$get (null (), "11"b, rtrim (my_person_id) || ".forum.editor", editor, status); 792 if status ^= 0 then 793 if status ^= error_table_$oldnamerr then return ("1"b); 794 else do; 795 call value_$get (null (), "11"b, "forum.editor", editor, status); 796 if status ^= 0 then return ("1"b); 797 end; 798 799 editor = translate (editor, LOWER_CASE, UPPER_CASE); 800 801 if editor ^= "ted" then return ("1"b); 802 803 if codeptr (ted_) ^= null () then return ("0"b); /* Provoke linkage error if possible. */ 804 805 USE_QEDX: 806 return ("1"b); 807 808 end standard_default_editor; 809 810 call_qedx: 811 proc (request); 812 813 declare request char (*); 814 815 qi.header.version = QEDX_INFO_VERSION_1; 816 qi.editor_name = whoami_really; 817 string (qi.header.flags) = ""b; 818 qi.header.query_if_modified = "1"b; 819 820 qi.buffers (1).buffer_name = "0"; 821 qi.buffers (1).buffer_pathname = ""; 822 qi.buffers (1).region_ptr = temp_seg_ptr; 823 qi.buffers (1).region_max_lth = 4 * sys_info$max_seg_size; 824 qi.buffers (1).region_initial_lth = forum_user_trans.text_length; 825 string (qi.buffers (1).flags) = ""b; 826 qi.buffers (1).read_write_region, qi.buffers (1).default_read_ok, qi.buffers (1).default_write_ok, 827 qi.buffers (1).locked_pathname = "1"b; 828 qi.buffers (1).auto_write = auto_write; 829 830 if request = "" then qi.n_buffers = 1; 831 else do; 832 qi.n_buffers = 2; 833 qi.buffers (2).buffer_name = "exec"; 834 qi.buffers (2).buffer_pathname = ""; 835 qi.buffers (2).region_ptr = addr (request); 836 qi.buffers (2).region_max_lth, qi.buffers (2).region_initial_lth = length (rtrim (request)); 837 string (qi.buffers (2).flags) = ""b; 838 qi.buffers (2).read_write_region, qi.buffers (2).execute_buffer = "1"b; 839 end; 840 841 call qedx_ (addr (qi), status); 842 if status = error_table_$fatal_error then call ssu_$abort_line (ssu_ptr, 0); 843 844 if qi.buffers (1).region_final_lth > 0 then text_len = qi.buffers (1).region_final_lth; 845 else if forum_user_trans.text_length > 0 then 846 call ssu_$abort_line (ssu_ptr, 0, "Qedx returned a zero length buffer. ^[Message^;Transaction^] not replaced.", 847 message_sw); 848 849 return; 850 end call_qedx; 851 852 call_ted: 853 proc (rq_ptr, rq_len); 854 855 declare rq_ptr ptr, 856 rq_len fixed bin (21), 857 rq char (rq_len) based (rq_ptr), 858 path char (168), 859 request char (2 * 172 + rq_len); 860 861 call hcs_$set_bc_seg (temp_seg_ptr, (9 * forum_user_trans.text_length), (0)); 862 call hcs_$fs_get_path_name (temp_seg_ptr, dirname, arg_idx, entryname, status); 863 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status); 864 865 path = substr (dirname, 1, arg_idx) || ">" || rtrim (entryname); 866 if ^auto_write then request = "r " || path || NL || "^r " || path || NL || rq; 867 else request = rq; 868 869 ted_info.tedname = rtrim (whoami_really); 870 ted_info.version = ted_data_version_1; 871 ted_info.ted_com_p = addr (request); 872 ted_info.ted_com_l = length (rtrim (request)); 873 ted_info.ted_mode = 0; /* NORMAL */ 874 ted_info.arg_list_p, ted_info.return_string_p = null (); 875 ted_info.arg_list_1, ted_info.arg_list_n, ted_info.return_string_l = 0; 876 ted_info.input_l, ted_info.output_l = 0; 877 ted_info.temp_dir = ""; 878 879 if auto_write then do; 880 ted_info.input_p, ted_info.output_p = temp_seg_ptr; 881 ted_info.input_l = forum_user_trans.text_length; 882 end; 883 else ted_info.input_p, ted_info.output_p = null (); 884 885 call ted_ (addr (ted_info), status); 886 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status); 887 888 if auto_write then text_len = ted_info.output_l; 889 else do; 890 call hcs_$status_mins (temp_seg_ptr, (0), bit_count, status); 891 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Getting bit count."); 892 893 text_len = divide (bit_count, 9, 21, 0); 894 end; 895 896 if text_len = 0 then 897 if forum_user_trans.text_length > 0 then 898 call ssu_$abort_line (ssu_ptr, 0, "Ted returned a zero length buffer. ^[Message^;Transaction^] not replaced.", 899 message_sw); 900 901 return; 902 end call_ted; 903 904 forum_input_requests_$enter_request: 905 entry (P_ssu_ptr, P_passport_info_ptr); 906 907 call setup_request (-1); 908 909 on cleanup call clean_up_talk (); 910 911 do arg_idx = 1 to arg_count; 912 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 913 914 if arg = "-meeting" | arg = "-mtg" 915 then if reply_trans_idx = 0 | message_sw 916 then call get_forum (arg_idx); 917 else call ssu_$abort_line (ssu_ptr, 0, "Cannot use -meeting entering a reply or message."); 918 else if arg = "-brief" | arg = "-bf" then brief_switch = "1"b; 919 else if arg = "-long" | arg = "-lg" then brief_switch = "0"b; 920 921 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, """^a""", arg); 922 end; 923 924 call enter_the_transaction (); 925 926 call clean_up_talk (); 927 928 return; 929 930 enter_the_transaction: 931 procedure (); 932 933 if forum_user_trans.text_length = 0 934 then call ssu_$abort_line (ssu_ptr, 0, "Zero-length ^[message^;transaction^] - not entered.", message_sw); 935 936 if forum_user_trans.type = message_type then do; 937 call forum_$set_message (forum_idx, forum_user_trans.text, status); 938 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Message not set."); 939 free forum_user_trans; 940 passport.unprocessed_trans_ptr = null (); 941 end; 942 943 else do; 944 if full_forum_name ^= passport.forum_name then do; 945 call forum_$open_forum (forum_dir, full_forum_name, forum_idx, status); 946 if status ^= 0 then 947 call ssu_$abort_line (ssu_ptr, status, "Opening ^a^[>^]^a.", forum_dir, forum_dir ^= ">", 948 forum_name); 949 end; 950 951 mask = ""b; 952 on cleanup begin; 953 if substr (mask, 36, 1) then 954 call hcs_$reset_ips_mask (mask, mask); 955 call clean_up_talk (); 956 end; 957 958 call hcs_$set_ips_mask (""b, mask); 959 960 /* TR20898 & 20899: If entering the trans in another mtg with the use of reply, trans shouldn't be chained; 961* therefore, reply_trans_idx which is used previously to get correct subject, has to be set to zero. */ 962 963 if reply_switch & (passport.forum_idx ^= forum_idx) 964 then reply_trans_idx = 0; 965 966 call forum_$enter_trans (forum_idx, forum_user_trans.text, reply_trans_idx, forum_user_trans.subject, 967 forum_user_trans.unfilled, forum_user_trans.trans_no, status); 968 if status ^= 0 then 969 if status = forum_et_$cant_notify then 970 call ssu_$print_message (ssu_ptr, status, "The transaction was entered."); 971 else call ssu_$abort_line (ssu_ptr, status, "Transaction not entered."); 972 973 if forum_user_trans_ptr = passport.unprocessed_trans_ptr then passport.unprocessed_trans_ptr = null (); 974 975 call hcs_$reset_ips_mask (mask, mask); 976 977 if ^brief_switch then do; 978 trans_pic = forum_user_trans.trans_no; 979 call ioa_ ("Transaction [^a] entered in ^a^[>^]^a meeting.", ltrim (trans_pic), forum_dir, 980 forum_dir ^= ">", forum_name); 981 end; 982 983 if forum_idx = passport.forum_idx then forum_user_trans_ptr = null (); 984 985 else do; 986 free forum_user_trans; 987 call forum_$close_forum (forum_idx, (0)); 988 forum_idx = passport.forum_idx; 989 passport.unprocessed_forum_dir = ""; 990 passport.unprocessed_forum_name = ""; 991 passport.unprocessed_reply_trans = 0; 992 end; 993 end; 994 995 return; 996 997 end enter_the_transaction; 998 999 /* This routine allocates a transaction, possibly replacing in a race-free way the currently allocated transaction. */ 1000 1001 allocate_transaction: 1002 procedure (P_subject, P_text, P_fill_trans); 1003 1004 declare P_subject char (*), 1005 P_text char (*), 1006 P_fill_trans bit (1) aligned, 1007 p ptr, 1008 saved_forum_user_trans_ptr ptr; 1009 1010 alloc_subject_length = length (rtrim (P_subject, WHITE_CHARS)); 1011 alloc_text_length = length (rtrim (P_text, WHITE_CHARS)); 1012 if alloc_text_length > 0 then alloc_text_length = alloc_text_length + 1; 1013 1014 saved_forum_user_trans_ptr = forum_user_trans_ptr; 1015 p = null (); 1016 on cleanup 1017 begin; 1018 if p ^= null () 1019 then if p ^= forum_user_trans_ptr then free p -> forum_user_trans; 1020 else if saved_forum_user_trans_ptr ^= null () 1021 then if saved_forum_user_trans_ptr = passport.unprocessed_trans_ptr 1022 then free passport.unprocessed_trans_ptr -> forum_user_trans; 1023 else free saved_forum_user_trans_ptr -> forum_user_trans; 1024 end; 1025 1026 allocate forum_user_trans in (forum_area) set (p); 1027 1028 if message_sw then p -> forum_user_trans.type = message_type; 1029 else p -> forum_user_trans.type = user_trans_type; 1030 p -> forum_user_trans.person_id = my_person_id; 1031 p -> forum_user_trans.project_id = my_project_id; 1032 p -> forum_user_trans.next_trans_ptr, p -> forum_user_trans.prev_trans_ptr = null (); 1033 p -> forum_user_trans.unfilled = P_fill_trans; 1034 1035 p -> forum_user_trans.subject = substr (P_subject, 1, alloc_subject_length); 1036 1037 if alloc_text_length > 0 1038 then do; 1039 substr (p -> forum_user_trans.text, 1, alloc_text_length - 1) = 1040 substr (P_text, 1, alloc_text_length - 1); 1041 substr (p -> forum_user_trans.text, alloc_text_length, 1) = NL; 1042 end; 1043 1044 forum_user_trans_ptr = p; 1045 1046 text_len = -1; 1047 1048 if saved_forum_user_trans_ptr ^= null () 1049 then if saved_forum_user_trans_ptr = passport.unprocessed_trans_ptr 1050 then free passport.unprocessed_trans_ptr -> forum_user_trans; 1051 else free saved_forum_user_trans_ptr -> forum_user_trans; 1052 1053 return; 1054 1055 end allocate_transaction; 1056 1057 forum_input_requests_$subject_request: 1058 entry (P_ssu_ptr, P_passport_info_ptr); 1059 1060 call setup_request (-1); 1061 if message_sw then call ssu_$abort_line (ssu_ptr, 0, "Messages do not have subjects."); 1062 1063 if arg_count = 0 then 1064 if return_arg_ptr ^= null () then do; 1065 return_arg = requote_string_ (forum_user_trans.subject); 1066 return; 1067 end; 1068 else do; 1069 call ioa_ ("Subject: ^a", forum_user_trans.subject); 1070 return; 1071 end; 1072 1073 if return_arg_ptr ^= null () then call ssu_$abort_line (ssu_ptr, 0, "Usage: [sj]"); 1074 1075 on cleanup call clean_up_talk (); 1076 1077 do arg_idx = 1 to arg_count; 1078 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 1079 1080 if index (arg, "-") = 1 & ^subject_switch then 1081 if arg = "-default" then default_switch = "1"b; 1082 else if arg = "-subject" | arg = "-sj" then subject_switch = "1"b; 1083 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 1084 else call add_to_subject (); 1085 end; 1086 subject_arg_ptr = buffer_ptr; 1087 1088 if default_switch & buffer_ptr ^= null () then 1089 call ssu_$abort_line (ssu_ptr, error_table_$inconsistent, "You cannot give both a subject and -default."); 1090 1091 if default_switch & reply_trans_idx = 0 then 1092 call ssu_$abort_line (ssu_ptr, 0, "-default may only be used with replies."); 1093 1094 if default_switch then do; 1095 if forum_idx = 0 then do; 1096 call forum_$open_forum (forum_dir, full_forum_name, forum_idx, status); 1097 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Opening ^a>^a", forum_dir, forum_name); 1098 end; 1099 call print_subject (forum_user_trans.text, forum_user_trans.unfilled); 1100 end; 1101 1102 else if subject_arg_len > 0 then 1103 call allocate_transaction (subject_arg, forum_user_trans.text, forum_user_trans.unfilled); 1104 else if subject_arg_ptr ^= null () then 1105 call ssu_$abort_line (ssu_ptr, 0, "The subject field may not be blank."); 1106 1107 call clean_up_talk (); 1108 1109 return; 1110 1111 forum_input_requests_$fill_request: 1112 entry (P_ssu_ptr, P_passport_info_ptr); 1113 1114 call setup_request (-1); 1115 1116 do arg_idx = 1 to arg_count; 1117 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 1118 1119 if index (arg, "-") = 1 then 1120 if arg = "-line_length" | arg = "-ll" then do; 1121 arg_idx = arg_idx + 1; 1122 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 1123 1124 line_length = cv_dec_check_ (arg, status); 1125 if status ^= 0 1126 then call ssu_$abort_line (ssu_ptr, error_table_$bad_conversion, "^a", arg); 1127 end; 1128 else if arg = "-on" then fill_switch = 1; 1129 else if arg = "-off" then fill_switch = -1; 1130 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 1131 else call ssu_$abort_line (ssu_ptr, 0, "Usage: fill {-control_args}"); 1132 end; 1133 1134 if fill_switch ^= 0 then do; 1135 forum_user_trans.unfilled = (fill_switch < 0); 1136 return; 1137 end; 1138 1139 if line_length < 10 | line_length > 136 then 1140 call ssu_$abort_line (ssu_ptr, 0, "Invalid line length. ^d", line_length); 1141 1142 on cleanup call clean_up_talk (); 1143 1144 text_len = forum_user_trans.text_length; 1145 1146 if forum_user_trans.unfilled then do; 1147 call fill_the_transaction (forum_user_trans.text); 1148 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Filling transaction."); 1149 end; 1150 else call unpack_trans_to_temp_seg (); /* clean up talk will fill it */ 1151 1152 call clean_up_talk (); 1153 return; 1154 1155 forum_input_requests_$apply_request: 1156 entry (P_ssu_ptr, P_passport_info_ptr); 1157 1158 declare new_unpro_trans bit (1); 1159 1160 call setup_request (2); 1161 1162 if arg_count = 0 then 1163 APPLY_USAGE: call ssu_$abort_line (ssu_ptr, 0, "Usage: apply {trans_specs} {-control_args} command_line"); 1164 1165 on cleanup call clean_up_apply (); 1166 /* TR20579 & 20810: apply can create unproc trans */ 1167 parse_flags_word = DISALLOW_MTG | DEFAULT_TO_UNPROC | DISALLOW_CMSG | CALL_ON_BAD_ARGS | CREATE_UNPROC; 1168 arg_idx = 0; 1169 1170 call forum_trans_specs_$parse_specs (passport_info_ptr, 1, parse_flags_word, apply_args, (0), "", "", 1171 forum_trans_list_ptr); 1172 if arg_idx = 0 then call ssu_$abort_line (ssu_ptr, 0, "No command line given."); 1173 1174 new_unpro_trans = "0"b; 1175 1176 /* TR20579: If no unproc trans and no trans_specs given, create new unproc trans */ 1177 1178 if (passport.unprocessed_trans_ptr = null () & forum_trans_list.size = 0) then do; 1179 forum_trans_list.size = 1; 1180 forum_trans_list.trans_num (1) = 0; /* force to unproc instead of using current trans */ 1181 new_unpro_trans = "1"b; 1182 end; 1183 1184 do idx = 1 to forum_trans_list.size; 1185 1186 if forum_trans_list.trans_num (idx) = 0 then do; /* if unproc */ 1187 forum_user_trans_ptr = passport.unprocessed_trans_ptr; 1188 reply_trans_idx = passport.unprocessed_reply_trans; 1189 if forum_user_trans_ptr ^= null () then 1190 message_sw = (forum_user_trans.type = message_type); 1191 if passport.read_only then 1192 call ssu_$abort_line (ssu_ptr, forum_et_$read_only); 1193 end; 1194 else do; 1195 call forum_trans_util_$read_trans (passport_info_ptr, forum_idx, forum_trans_list.trans_num (idx), 1196 forum_user_trans_ptr, status); 1197 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Reading transaction ^d.", 1198 forum_trans_list.trans_num (idx)); 1199 end; 1200 1201 call unpack_trans_to_temp_seg (); 1202 call ssu_$apply_request_util (ssu_ptr, arg_idx, temp_seg_ptr, forum_user_trans.text_length, text_len); 1203 1204 if forum_trans_list.trans_num (idx) = 0 then do; 1205 if text_len = 0 then call ssu_$abort_line (ssu_ptr, 0, 1206 "Command returned a zero length file. ^[Message^;Transaction^] not replaced.", message_sw); 1207 1208 if ^forum_user_trans.unfilled & fill_switch >= 0 then begin; 1209 1210 declare text char (text_len); 1211 text = temp_text; 1212 call fill_the_transaction (text); 1213 end; 1214 if status = 0 then do; 1215 call allocate_transaction (forum_user_trans.subject, temp_text, forum_user_trans.unfilled); 1216 passport.unprocessed_trans_ptr = forum_user_trans_ptr; 1217 passport.unprocessed_reply_trans = reply_trans_idx; 1218 /* TR20578: If new_unproc_trans, generate correct meeting_name */ 1219 if new_unpro_trans then do; 1220 passport.unprocessed_forum_dir = forum_dir; 1221 passport.unprocessed_forum_name = full_forum_name; 1222 passport.unprocessed_name_len = length (rtrim (forum_name)); 1223 new_unpro_trans = "0"b; 1224 end; 1225 end; 1226 text_len = -1; /* prevent cleanup from doing it again */ 1227 forum_user_trans_ptr = null (); 1228 end; 1229 end; 1230 1231 call clean_up_apply (); 1232 1233 return; 1234 1235 apply_args: 1236 proc (P_arg_idx); 1237 1238 declare P_arg_idx fixed bin; 1239 1240 call ssu_$arg_ptr (ssu_ptr, P_arg_idx, arg_ptr, arg_len); 1241 if index (arg, "-") = 1 then 1242 if arg = "-fill" | arg = "-fi" then fill_switch = 1; 1243 else if arg = "-no_fill" | arg = "-nfi" then fill_switch = -1; 1244 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 1245 else do; 1246 arg_idx = P_arg_idx; 1247 P_arg_idx = arg_count + 1; 1248 end; 1249 1250 return; 1251 end apply_args; 1252 1253 1254 clean_up_apply: 1255 proc (); 1256 1257 if forum_trans_list_ptr ^= null () then free forum_trans_list; 1258 if passport.unprocessed_trans_ptr = forum_user_trans_ptr then call clean_up_talk (); 1259 1260 if temp_seg_ptr ^= null () then call release_temp_segment_ (whoami_really, temp_seg_ptr, (0)); 1261 1262 return; 1263 end clean_up_apply; 1264 1265 forum_input_requests_$qedx_request: /* Entry to enter qedx */ 1266 entry (P_ssu_ptr, P_passport_info_ptr); 1267 1268 call editor_request ("1"b); 1269 1270 return; 1271 1272 1273 forum_input_requests_$ted_request: 1274 entry (P_ssu_ptr, P_passport_info_ptr); 1275 1276 on linkage_error 1277 call ssu_$abort_line (ssu_ptr, 0, "The ""ted"" editor appears not to be available at this site."); 1278 1279 if codeptr (ted_) = null () then return; /* Provoke linkage_error if possible. */ 1280 1281 revert linkage_error; 1282 1283 call editor_request ("0"b); 1284 return; 1285 1286 editor_request: 1287 proc (qedx_switch); 1288 1289 declare qedx_switch bit (1) aligned; 1290 1291 call setup_request (0); 1292 1293 do arg_idx = 1 to arg_count; 1294 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_len); 1295 if index (arg, "-") = 1 then 1296 if arg = "-fill" | arg = "-fi" then fill_switch = 1; 1297 else if arg = "-no_fill" | arg = "-nfi" then fill_switch = -1; 1298 else if arg = "-auto_write" then auto_write = "1"b; 1299 else if arg = "-no_auto_write" then auto_write = "0"b; 1300 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 1301 else call ssu_$abort_line (ssu_ptr, 0, "Usage: ^[qx^;ted^] {-control_args}", qedx_switch); 1302 end; 1303 1304 on cleanup call clean_up_talk (); 1305 1306 call unpack_trans_to_temp_seg (); 1307 1308 call ipc_$cutoff (passport.public_channel, (0)); 1309 1310 if qedx_switch then call call_qedx (""); 1311 else call call_ted (null (), (0)); 1312 1313 call clean_up_talk (); 1314 1315 return; 1316 end editor_request; 1317 1318 unpack_trans_to_temp_seg: 1319 procedure (); 1320 1321 if forum_user_trans_ptr = null () then do; 1322 if passport.forum_idx = 0 then 1323 call ssu_$abort_line (ssu_ptr, forum_et_$no_forum); 1324 call ask_subject (); 1325 end; 1326 1327 if temp_seg_ptr = null () then do; 1328 call get_temp_segment_ (whoami_really, temp_seg_ptr, status); 1329 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Getting temp segment."); 1330 end; 1331 1332 substr (temp_seg, 1, forum_user_trans.text_length) = forum_user_trans.text; 1333 1334 return; 1335 1336 end unpack_trans_to_temp_seg; 1337 1338 1339 fill_the_transaction: 1340 proc (transaction); 1341 1342 declare transaction char (*); 1343 1344 if temp_seg_ptr = null () then do; 1345 call get_temp_segment_ (whoami_really, temp_seg_ptr, status); 1346 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Getting temp segment."); 1347 end; 1348 1349 fdoc.version_number = format_document_version_2; 1350 fdoc.indentation = 0; 1351 fdoc.line_length = line_length; 1352 string (fdoc.switches) = ""b; 1353 fdoc.galley_sw, fdoc.literal_sw, fdoc.dont_break_indented_lines_sw = "1"b; 1354 fdoc.syllable_size = 3; /* Make fdoc happy */ 1355 call format_document_$string (transaction, temp_seg, text_len, addr (fdoc), status); 1356 if status = error_table_$recoverable_error then status = 0; 1357 1358 return; 1359 end fill_the_transaction; 1360 1361 clean_up_talk: 1362 procedure (); 1363 1364 declare p ptr; 1365 1366 status = 0; 1367 if new_buffer_ptr ^= null () then free new_buffer; 1368 if buffer_ptr ^= null () then free buffer; 1369 1370 if forum_trans_list_ptr ^= null () then free forum_trans_list; 1371 if forum_idx ^= passport.forum_idx then call forum_$close_forum (forum_idx, (0)); 1372 1373 if user_file_ptr ^= null () then do; 1374 p = user_file_ptr; 1375 user_file_ptr = null (); 1376 call hcs_$terminate_noname (p, (0)); 1377 if forum_user_trans_ptr ^= null () then 1378 if ^forum_user_trans.unfilled & fill_switch >= 0 then do; 1379 call fill_the_transaction (forum_user_trans.text); 1380 if status = 0 then 1381 call allocate_transaction (forum_user_trans.subject, temp_text, forum_user_trans.unfilled); 1382 call release_temp_segment_ (whoami_really, temp_seg_ptr, (0)); 1383 end; 1384 end; 1385 1386 if temp_seg_ptr ^= null () then do; 1387 if text_len >= 0 then do; 1388 if ^forum_user_trans.unfilled & fill_switch >= 0 then begin; 1389 1390 declare text char (text_len); 1391 text = temp_text; 1392 call fill_the_transaction (text); 1393 end; 1394 if status = 0 then 1395 call allocate_transaction (forum_user_trans.subject, temp_text, forum_user_trans.unfilled); 1396 end; 1397 call release_temp_segment_ (whoami_really, temp_seg_ptr, (0)); 1398 end; 1399 1400 if forum_user_trans_ptr ^= null then do; 1401 if passport.unprocessed_trans_ptr ^= forum_user_trans_ptr & passport.unprocessed_trans_ptr ^= null () then 1402 free passport.unprocessed_trans_ptr -> forum_user_trans; 1403 1404 passport.unprocessed_trans_ptr = forum_user_trans_ptr; 1405 passport.unprocessed_reply_trans = reply_trans_idx; 1406 passport.unprocessed_forum_dir = forum_dir; 1407 passport.unprocessed_forum_name = full_forum_name; 1408 passport.unprocessed_name_len = length (rtrim (forum_name)); 1409 end; 1410 1411 call ipc_$reconnect (passport.public_channel, (0)); 1412 1413 return; 1414 1415 end clean_up_talk; 1416 1417 setup_request: 1418 procedure (P_new_trans_switch); 1419 1420 declare P_new_trans_switch fixed bin; 1421 1422 ssu_ptr = P_ssu_ptr; 1423 passport_info_ptr = P_passport_info_ptr; 1424 1425 whoami = ssu_$get_request_name (ssu_ptr); 1426 whoami_really = ssu_$get_subsystem_and_request_name (ssu_ptr); 1427 buffer_ptr, forum_trans_list_ptr, new_buffer_ptr, subject_arg_ptr, temp_seg_ptr, user_file_ptr = null (); 1428 brief_switch, default_switch, force, inhibit_auto_fill, inhibit_input_cp_escape, request_loop = "0"b; 1429 fill_switch, subject_arg_len = 0; 1430 if passport.input_fill_width ^= 0 then line_length = passport.input_fill_width; 1431 else line_length = 72; 1432 forum_idx = passport.forum_idx; 1433 text_len = -1; 1434 message_sw, subject_switch, temp_forum, terminal_switch = "0"b; 1435 auto_write = passport.auto_write; 1436 1437 if P_new_trans_switch = 1 & passport.read_only then 1438 call ssu_$abort_line (ssu_ptr, forum_et_$read_only); 1439 1440 if P_new_trans_switch > 0 | (passport.unprocessed_trans_ptr = null () & P_new_trans_switch = 0) then do; 1441 forum_user_trans_ptr = null (); 1442 if passport.forum_idx = 0 then forum_dir, full_forum_name, forum_name = ""; 1443 else do; 1444 forum_dir = passport.forum_dir; 1445 full_forum_name = passport.forum_name; 1446 forum_name = no_suffix_name; 1447 end; 1448 reply_trans_idx = 0; 1449 end; 1450 1451 else if passport.unprocessed_trans_ptr = null () then 1452 call ssu_$abort_line (ssu_ptr, forum_et_$no_unprocessed); 1453 1454 else do; 1455 forum_user_trans_ptr = passport.unprocessed_trans_ptr; 1456 forum_dir = passport.unprocessed_forum_dir; 1457 full_forum_name = passport.unprocessed_forum_name; 1458 forum_name = substr (passport.unprocessed_forum_name, 1, passport.unprocessed_name_len); 1459 reply_trans_idx = passport.unprocessed_reply_trans; 1460 message_sw = (forum_user_trans.type = message_type); 1461 end; 1462 1463 if ^static_initialized then do; 1464 call user_info_$whoami (my_person_id, my_project_id, ("")); 1465 static_initialized = "1"b; 1466 end; 1467 1468 call ssu_$return_arg (ssu_ptr, arg_count, ("0"b), return_arg_ptr, return_arg_len); 1469 1470 return; 1471 1472 end setup_request; 1473 1474 end forum_input_requests_$talk_request; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1144.7 forum_input_requests_.pl1 >udd>sm>ds>w>ml>forum_input_requests_.pl1 201 1 08/16/86 1638.0 forum_passport.incl.pl1 >ldd>incl>forum_passport.incl.pl1 203 2 10/31/84 1215.4 forum_user_trans.incl.pl1 >ldd>incl>forum_user_trans.incl.pl1 205 3 08/16/86 1638.0 forum_trans_list.incl.pl1 >ldd>incl>forum_trans_list.incl.pl1 207 4 03/11/83 1304.3 query_info.incl.pl1 >ldd>incl>query_info.incl.pl1 209 5 11/23/82 1424.6 ted_.incl.pl1 >ldd>incl>ted_.incl.pl1 211 6 05/04/83 1218.0 qedx_info.incl.pl1 >ldd>incl>qedx_info.incl.pl1 213 7 11/01/84 1614.0 format_document_options.incl.pl1 >ldd>incl>format_document_options.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. ANY 001105 automatic bit(36) initial dcl 3-49 set ref 3-49* CALL_ON_BAD_ARGS constant bit(17) initial dcl 3-50 ref 1167 DEFAULT_TO_UNPROC constant bit(17) initial dcl 3-50 ref 1167 DISALLOW_CMSG constant bit(17) initial dcl 3-50 ref 1167 DISALLOW_MTG constant bit(17) initial dcl 3-50 ref 1167 ENTER_EDITOR constant fixed bin(17,0) initial dcl 127 ref 555 605 606 ENTER_REQUEST_LOOP constant fixed bin(17,0) initial dcl 127 ref 557 602 609 LOWER_CASE 000013 constant char(26) initial packed unaligned dcl 131 ref 562 755 799 NL 016274 constant char(1) initial packed unaligned dcl 134 ref 560 588 654 662 866 866 1041 NORMAL_TERMINATION constant fixed bin(17,0) initial dcl 127 ref 570 588 P_arg_idx parameter fixed bin(17,0) dcl 1238 set ref 1235 1240* 1246 1247* P_fill_trans parameter bit(1) dcl 1004 ref 1001 1033 P_inhibit_auto_fill parameter bit(1) dcl 502 set ref 499 510* 529* 531* P_new_trans_switch parameter fixed bin(17,0) dcl 1420 ref 1417 1437 1440 1440 P_passport_info_ptr parameter pointer dcl 46 ref 43 234 274 904 1057 1111 1155 1265 1273 1423 P_ssu_ptr parameter pointer dcl 46 ref 43 234 274 904 1057 1111 1155 1265 1273 1422 P_subject parameter char packed unaligned dcl 1004 ref 1001 1010 1035 P_text parameter char packed unaligned dcl 502 in procedure "print_subject" set ref 499 510* 529* 531* P_text parameter char packed unaligned dcl 1004 in procedure "allocate_transaction" ref 1001 1011 1039 QEDX_INFO_VERSION_1 000000 constant char(8) initial packed unaligned dcl 6-44 ref 815 SPACE_AND_TAB constant char(2) initial packed unaligned dcl 134 ref 659 UPPER_CASE 000004 constant char(26) initial packed unaligned dcl 131 ref 562 755 799 WHITE_CHARS 000002 constant char(5) initial packed unaligned dcl 134 ref 398 399 666 1010 1011 add_char_offset_ 000060 constant entry external dcl 156 ref 402 418 679 679 706 706 777 778 778 addr builtin function dcl 49 ref 246 247 248 249 250 251 252 253 466 466 524 598 598 602 602 603 603 606 606 679 679 679 679 835 841 841 871 885 885 1355 1355 1446 alloc_subject_length 001077 automatic fixed bin(21,0) dcl 2-4 set ref 1010* 1026 1026 1035 alloc_text_length 001076 automatic fixed bin(21,0) dcl 2-3 set ref 1011* 1012 1012* 1012 1026 1026 1037 1039 1039 1041 answer 000114 automatic varying char(6) dcl 54 set ref 466* 468 answer_iocbp 6 001106 automatic pointer initial level 2 dcl 4-7 set ref 4-7* area_ptr 74 based pointer level 2 dcl 1-14 ref 429 697 729 1026 arg based char packed unaligned dcl 112 set ref 299 299 299 301 302 303 303 304 304 305 305 306 306 307* 311* 312* 318 318 319 319 320 320 321 321 322 322 326 326 330 330 331 331 333* 351* 352* 376* 377* 436 914 914 918 918 919 919 921* 1080 1080 1082 1082 1083* 1119 1119 1119 1124* 1125* 1128 1129 1130* 1241 1241 1241 1243 1243 1244* 1295 1295 1295 1297 1297 1298 1299 1300* arg_count 000117 automatic fixed bin(17,0) dcl 54 set ref 224 283 307 911 1063 1077 1116 1162 1247 1293 1468* arg_idx parameter fixed bin(17,0) dcl 295 in procedure "parse_arg" set ref 292 297* 305* 307 309* 309 310* 319* 330* arg_idx 000120 automatic fixed bin(17,0) dcl 54 in procedure "forum_input_requests_$talk_request" set ref 224* 225* 283* 284* 862* 865 911* 912* 914* 1077* 1078* 1116* 1117* 1121* 1121 1122* 1168* 1172 1202* 1246* 1293* 1294* arg_idx parameter fixed bin(17,0) dcl 344 in procedure "get_input_file" set ref 341 348* 348 349* arg_idx parameter fixed bin(17,0) dcl 369 in procedure "get_forum" set ref 366 373* 373 374* arg_idx parameter fixed bin(17,0) dcl 390 in procedure "get_subject" set ref 387 395* 395 396* arg_len 000121 automatic fixed bin(21,0) dcl 54 set ref 297* 299 299 299 299 301 302 303 303 304 304 305 305 306 306 307 307 310* 311 311 312 312 318 318 319 319 320 320 321 321 322 322 326 326 330 330 331 331 333 333 349* 351 351 352 352 374* 376 376 377 377 432 436 437 912* 914 914 918 918 919 919 921 921 1078* 1080 1080 1082 1082 1083 1083 1117* 1119 1119 1119 1122* 1124 1124 1125 1125 1128 1129 1130 1130 1240* 1241 1241 1241 1243 1243 1244 1244 1294* 1295 1295 1295 1297 1297 1298 1299 1300 1300 arg_list_1 20 000502 automatic fixed bin(17,0) level 2 dcl 106 set ref 875* arg_list_n 21 000502 automatic fixed bin(17,0) level 2 dcl 106 set ref 875* arg_list_p 16 000502 automatic pointer level 2 dcl 106 set ref 874* arg_ptr 000122 automatic pointer dcl 54 set ref 297* 299 299 299 301 302 303 303 304 304 305 305 306 306 307 310* 311 312 318 318 319 319 320 320 321 321 322 322 326 326 330 330 331 331 333 349* 351 352 374* 376 377 436 912* 914 914 918 918 919 919 921 1078* 1080 1080 1082 1082 1083 1117* 1119 1119 1119 1122* 1124 1125 1128 1129 1130 1240* 1241 1241 1241 1243 1243 1244 1294* 1295 1295 1295 1297 1297 1298 1299 1300 auto_rql 000124 automatic bit(1) dcl 54 set ref 220* 241* 279* 324* 328* 450 453* 489 auto_write 143(05) 000616 automatic bit(1) array level 4 in structure "qi" packed packed unaligned dcl 106 in procedure "forum_input_requests_$talk_request" set ref 828* auto_write 000125 automatic bit(1) dcl 54 in procedure "forum_input_requests_$talk_request" set ref 301* 302* 828 866 879 888 1298* 1299* 1435* auto_write 65(05) based bit(1) level 3 in structure "passport" packed packed unaligned dcl 1-14 in procedure "forum_input_requests_$talk_request" ref 1435 bit_count 000126 automatic fixed bin(24,0) dcl 54 set ref 354* 358 890* 893 brief_switch 000127 automatic bit(1) packed unaligned dcl 54 set ref 299* 318* 474 918* 919* 977 1428* buffer based char packed unaligned dcl 112 in procedure "forum_input_requests_$talk_request" set ref 429 436* 436 560 562 588 592 594* 596* 598 598 602 602 603 603 606 606 612* 614 617* 654 659 662* 666 674 679 679 679 679 697 730 731 1368 buffer parameter char packed unaligned dcl 623 in procedure "add_to_trans" ref 620 627 buffer_len 000130 automatic fixed bin(21,0) dcl 54 set ref 428* 429 429 432 436 436 560 562 588 592 594 594 596 596 598 598 602 602 603 603 606 606 612 612 614 617 617 654 659 662 666 674 679 679 679 679 696* 697 697 706 728 730 731 731 733* 1368 1368 buffer_name 32 000616 automatic char(16) array level 3 packed packed unaligned dcl 106 set ref 820* 833* buffer_pathname 36 000616 automatic char(256) array level 3 packed packed unaligned dcl 106 set ref 821* 834* buffer_ptr 000132 automatic pointer dcl 54 set ref 418* 427 429* 436 436 560 562 588 592 594 596 598 598 602 602 603 603 606 606 612 614 617 654 659 662 666 674 679 679 679 679 694 697* 706* 706* 730 731 732* 777* 778* 778* 1086 1088 1368 1368 1427* buffers 32 000616 automatic structure array level 2 in structure "qi" dcl 106 in procedure "forum_input_requests_$talk_request" buffers 32 based structure array level 2 in structure "qedx_info" dcl 6-6 in procedure "forum_input_requests_$talk_request" cleanup 000100 stack reference condition dcl 52 ref 222 243 281 909 952 1016 1075 1142 1165 1304 codeptr builtin function dcl 49 ref 803 1279 command_query_ 000062 constant entry external dcl 156 ref 466 copy_len parameter fixed bin(21,0) dcl 726 ref 723 730 730 cp_escape_control 1(02) 001106 automatic bit(2) initial level 3 packed packed unaligned dcl 4-7 set ref 4-7* cu_$cp 000106 constant entry external dcl 156 ref 679 cv_dec_check_ 000110 constant entry external dcl 156 ref 311 1124 default_read_ok 143(03) 000616 automatic bit(1) array level 4 packed packed unaligned dcl 106 set ref 826* default_switch 000134 automatic bit(1) dcl 54 set ref 1080* 1088 1091 1094 1428* default_write_ok 143(04) 000616 automatic bit(1) array level 4 packed packed unaligned dcl 106 set ref 826* dirname 000135 automatic char(168) packed unaligned dcl 54 set ref 351* 354* 355* 355 359* 359 862* 865 disallow_by_chain 0(13) based bit(1) level 2 packed packed unaligned dcl 3-29 set ref 253* disallow_cmsg 0(12) based bit(1) level 2 packed packed unaligned dcl 3-29 set ref 252* disallow_idl 0(07) based bit(1) level 2 packed packed unaligned dcl 3-29 set ref 250* disallow_meeting 0(05) based bit(1) level 2 packed packed unaligned dcl 3-29 set ref 248* disallow_reverse 0(06) based bit(1) level 2 packed packed unaligned dcl 3-29 set ref 249* disallow_unproc 0(04) based bit(1) level 2 packed packed unaligned dcl 3-29 set ref 247* divide builtin function dcl 49 ref 358 893 dont_break_indented_lines_sw 3(09) 000611 automatic bit(1) level 3 packed packed unaligned dcl 106 set ref 1353* dont_read 0(08) based bit(1) level 2 packed packed unaligned dcl 3-29 set ref 251* editor 000100 automatic char(4) packed unaligned dcl 787 set ref 791* 795* 799* 799 801 editor_name 2 000616 automatic char(72) level 3 packed packed unaligned dcl 106 set ref 816* entryname 000207 automatic char(32) packed unaligned dcl 54 set ref 351* 354* 355* 359* 862* 865 error_table_$bad_conversion 000032 external static fixed bin(35,0) dcl 140 set ref 312* 1125* error_table_$badopt 000034 external static fixed bin(35,0) dcl 140 set ref 333* 921* 1083* 1130* 1244* 1300* error_table_$fatal_error 000036 external static fixed bin(35,0) dcl 140 ref 842 error_table_$inconsistent 000040 external static fixed bin(35,0) dcl 140 set ref 447* 1088* error_table_$long_record 000042 external static fixed bin(35,0) dcl 140 ref 710 error_table_$noarg 000044 external static fixed bin(35,0) dcl 140 set ref 307* error_table_$oldnamerr 000046 external static fixed bin(35,0) dcl 140 ref 747 792 error_table_$recoverable_error 000050 external static fixed bin(35,0) dcl 140 ref 1356 error_table_$zero_length_seg 000052 external static fixed bin(35,0) dcl 140 set ref 359* execute_buffer 143(02) 000616 automatic bit(1) array level 4 packed packed unaligned dcl 106 set ref 838* expand_pathname_ 000112 constant entry external dcl 156 ref 351 explanation_len 14 001106 automatic fixed bin(21,0) initial level 2 dcl 4-7 set ref 4-7* explanation_ptr 12 001106 automatic pointer initial level 2 dcl 4-7 set ref 4-7* fdoc 000611 automatic structure level 1 dcl 106 set ref 1355 1355 fill_switch 000217 automatic fixed bin(17,0) dcl 54 set ref 303* 316* 320* 455 455* 457* 471 1128* 1129* 1134 1135 1208 1241* 1243* 1295* 1297* 1377 1388 1429* first_nonwhite_pos 000220 automatic fixed bin(21,0) dcl 54 set ref 413* 414 418* 418 418 557 559* 559 561 562 562 591* 594* 596 596* 598 598 599* 599 602 602 603 603 605 606 606 608* 608 612* 614 614 617* 617 629* 629 666* 667 669* 673 674 679 679 679 772* 772 777* 777 777 778* 778* 778 flags 65 based structure level 2 in structure "passport" packed packed unaligned dcl 1-14 in procedure "forum_input_requests_$talk_request" flags 30 000616 automatic structure level 3 in structure "qi" dcl 106 in procedure "forum_input_requests_$talk_request" set ref 817* flags 143 000616 automatic structure array level 3 in structure "qi" dcl 106 in procedure "forum_input_requests_$talk_request" set ref 825* 837* force 000221 automatic bit(1) dcl 54 set ref 304* 321* 462 1428* format_document_$string 000064 constant entry external dcl 156 ref 1355 format_document_options based structure level 1 dcl 7-12 format_document_version_2 constant fixed bin(17,0) initial dcl 7-63 ref 1349 forum_$close_forum 000074 constant entry external dcl 156 ref 987 1371 forum_$enter_trans 000076 constant entry external dcl 156 ref 966 forum_$get_message 000100 constant entry external dcl 156 ref 475 forum_$open_forum 000104 constant entry external dcl 156 ref 945 1096 forum_$set_message 000102 constant entry external dcl 156 ref 937 forum_area based area(1024) dcl 1-46 ref 429 697 729 1026 forum_dir 2 based char(168) level 2 in structure "passport" packed packed unaligned dcl 1-14 in procedure "forum_input_requests_$talk_request" ref 522 1444 forum_dir 000331 automatic char(168) packed unaligned dcl 54 in procedure "forum_input_requests_$talk_request" set ref 254* 376* 522* 945* 946* 946 979* 979 1096* 1097* 1220 1406 1442* 1444* 1456* forum_et_$cant_notify 000022 external static fixed bin(35,0) dcl 140 ref 968 forum_et_$no_forum 000024 external static fixed bin(35,0) dcl 140 set ref 238* 445* 1322* forum_et_$no_unprocessed 000026 external static fixed bin(35,0) dcl 140 set ref 1451* forum_et_$read_only 000030 external static fixed bin(35,0) dcl 140 set ref 1191* 1437* forum_idx 000330 automatic fixed bin(17,0) dcl 54 in procedure "forum_input_requests_$talk_request" set ref 254* 257 259 263* 376* 380 445 475* 937* 945* 963 966* 983 987* 988* 1095 1096* 1195* 1371 1371* 1432* forum_idx 1 based fixed bin(17,0) level 2 in structure "passport" dcl 1-14 in procedure "forum_input_requests_$talk_request" set ref 238 263 516* 963 983 988 1322 1371 1432 1442 forum_name 000403 automatic char(32) packed unaligned dcl 54 in procedure "forum_input_requests_$talk_request" set ref 254* 259 261 376* 380 382 521 524* 946* 979* 1097* 1222 1408 1442* 1446* 1458* forum_name 54 based char(32) level 2 in structure "passport" packed packed unaligned dcl 1-14 in procedure "forum_input_requests_$talk_request" set ref 523 524 944 1445 1446 forum_name_len 64 based fixed bin(17,0) level 2 dcl 1-14 ref 524 1446 forum_requests_$open_forum 000066 constant entry external dcl 156 ref 376 forum_trans_list based structure level 1 dcl 3-15 set ref 266 1257 1370 forum_trans_list_ptr 001102 automatic pointer dcl 3-12 set ref 254* 264 266 1170* 1178 1179 1180 1184 1186 1195 1197 1204 1257 1257 1370 1370 1427* forum_trans_specs_$parse_specs 000070 constant entry external dcl 156 ref 254 1170 forum_trans_util_$read_trans 000072 constant entry external dcl 156 ref 516 1195 forum_user_trans based structure level 1 dcl 2-7 set ref 939 986 1018 1020 1023 1026 1048 1051 1401 forum_user_trans_ptr 001100 automatic pointer dcl 2-5 set ref 459* 487 487 535 562 774 774 824 845 861 881 896 933 936 937 939 966 966 966 966 973 978 983* 986 1014 1018 1044* 1065 1069 1099 1099 1102 1102 1135 1144 1146 1147 1187* 1189 1189 1195* 1202 1208 1215 1215 1216 1227* 1258 1321 1332 1332 1377 1377 1379 1380 1380 1388 1394 1394 1400 1401 1404 1441* 1455* 1460 full_forum_name 000413 automatic char(32) packed unaligned dcl 54 set ref 259* 261* 380* 382* 523* 944 945* 1096* 1221 1407 1442* 1445* 1457* galley_sw 3(02) 000611 automatic bit(1) level 3 packed packed unaligned dcl 106 set ref 1353* get_temp_segment_ 000114 constant entry external dcl 156 ref 546 1328 1345 hcs_$fs_get_path_name 000116 constant entry external dcl 156 ref 862 hcs_$initiate_count 000120 constant entry external dcl 156 ref 354 hcs_$reset_ips_mask 000122 constant entry external dcl 156 ref 953 975 hcs_$set_bc_seg 000124 constant entry external dcl 156 ref 861 hcs_$set_ips_mask 000126 constant entry external dcl 156 ref 958 hcs_$status_mins 000130 constant entry external dcl 156 ref 890 hcs_$terminate_noname 000132 constant entry external dcl 156 ref 1376 header 000616 automatic structure level 2 in structure "qi" dcl 106 in procedure "forum_input_requests_$talk_request" header based structure level 2 in structure "qedx_info" dcl 6-6 in procedure "forum_input_requests_$talk_request" idx 001176 automatic fixed bin(21,0) dcl 579 in procedure "add_lines" set ref 592* 593 594 594* 604 614* idx 000222 automatic fixed bin(21,0) dcl 54 in procedure "forum_input_requests_$talk_request" set ref 399* 400 400* 401 402* 1184* 1186 1195 1197 1204* indentation 1 000611 automatic fixed bin(17,0) level 2 dcl 106 set ref 1350* index builtin function dcl 49 ref 592 614 1080 1119 1241 1295 inhibit_auto_fill 000223 automatic bit(1) dcl 54 set ref 418* 471* 480* 481* 484* 1428* inhibit_input_cp_escape 000224 automatic bit(1) dcl 54 set ref 744 763* 1428* input_fill_width 67 based fixed bin(17,0) level 2 dcl 1-14 ref 1430 1430 input_l 30 000502 automatic fixed bin(21,0) level 2 dcl 106 set ref 876* 881* input_p 26 000502 automatic pointer level 2 dcl 106 set ref 880* 883* ioa_ 000136 constant entry external dcl 156 ref 489 535 551 682 979 1069 ioa_$nnl 000140 constant entry external dcl 156 ref 476 704 iox_$get_line 000134 constant entry external dcl 156 ref 706 iox_$user_input 000056 external static pointer dcl 140 set ref 706* ipc_$cutoff 000142 constant entry external dcl 156 ref 549 1308 ipc_$reconnect 000144 constant entry external dcl 156 ref 1411 len parameter fixed bin(21,0) dcl 623 ref 620 627 627 628 629 length builtin function dcl 49 ref 398 659 836 872 1010 1011 1222 1408 line_length 000225 automatic fixed bin(17,0) dcl 54 in procedure "forum_input_requests_$talk_request" set ref 311* 315 1124* 1139 1139 1139* 1351 1430* 1431* line_length 2 000611 automatic fixed bin(17,0) level 2 in structure "fdoc" dcl 106 in procedure "forum_input_requests_$talk_request" set ref 1351* linkage_error 000106 stack reference condition dcl 52 ref 789 1276 1281 list 3 based structure array level 2 dcl 3-15 literal_sw 1(05) 001106 automatic bit(1) initial level 3 in structure "query_info" packed packed unaligned dcl 4-7 in procedure "forum_input_requests_$talk_request" set ref 4-7* literal_sw 3(04) 000611 automatic bit(1) level 3 in structure "fdoc" packed packed unaligned dcl 106 in procedure "forum_input_requests_$talk_request" set ref 1353* locked_pathname 143(01) 000616 automatic bit(1) array level 4 packed packed unaligned dcl 106 set ref 826* long_record 000110 automatic bit(1) dcl 691 set ref 700* 702 704 709* 713* ltrim builtin function dcl 49 ref 979 979 mask 000226 automatic bit(36) dcl 54 set ref 951* 953 953* 953* 958* 975* 975* max_size based fixed bin(17,0) level 2 dcl 3-15 ref 266 1257 1370 message 000227 automatic char(256) packed unaligned dcl 54 set ref 475* 476* message_sw 000327 automatic bit(1) dcl 54 set ref 279* 319 330 473 489* 551* 845* 896* 914 933* 1028 1061 1189* 1205* 1434* 1460* message_type constant fixed bin(17,0) initial dcl 2-22 ref 936 1028 1189 1460 min builtin function dcl 49 ref 299 529 my_person_id 000011 internal static char(20) packed unaligned dcl 123 set ref 746 791 1030 1464* my_project_id 000016 internal static char(9) packed unaligned dcl 123 set ref 1031 1464* n_buffers 31 000616 automatic fixed bin(17,0) level 3 dcl 106 set ref 830* 832* new_buffer based char packed unaligned dcl 112 set ref 729 730* 1367 new_buffer_len 000426 automatic fixed bin(21,0) dcl 54 set ref 728* 729 729 730 733 1367 1367 new_buffer_ptr 000424 automatic pointer dcl 54 set ref 729* 730 732 734* 1367 1367 1427* new_unpro_trans 001123 automatic bit(1) packed unaligned dcl 1158 set ref 1174* 1181* 1219 1223* newline 000100 automatic bit(1) dcl 647 set ref 653* 656* 660 next_trans_ptr 16 based pointer level 2 dcl 2-7 set ref 1032* no_chars_read 000427 automatic fixed bin(21,0) dcl 54 set ref 413* 414 418 418 557 560 560* 560 561 562 588 592 596 605 614 617 654 657* 657 659* 659 662 663* 663 666 669 673 679 701* 702 706* 706* 706 708* 708 712* 777 777 778 no_new_chars_read 000111 automatic fixed bin(21,0) dcl 691 set ref 706* 708 no_suffix_name based char packed unaligned dcl 1-46 ref 524 1446 null builtin function dcl 49 ref 1063 1073 1088 1104 1178 1189 1227 1279 4-7 4-7 4-7 346 355 392 427 447 450 455 459 459 459 481 486 694 734 746 746 751 751 791 791 795 795 803 874 883 940 973 983 1015 1018 1020 1032 1048 1257 1260 1311 1311 1321 1327 1344 1367 1368 1370 1373 1375 1377 1386 1400 1401 1427 1440 1441 1451 only_one 0(01) based bit(1) level 2 packed packed unaligned dcl 3-29 set ref 246* output_l 34 000502 automatic fixed bin(21,0) level 2 dcl 106 set ref 876* 888 output_p 32 000502 automatic pointer level 2 dcl 106 set ref 880* 883* p 000100 automatic pointer dcl 1004 in procedure "allocate_transaction" set ref 1015* 1018 1018 1018 1026* 1028 1029 1030 1031 1032 1032 1033 1035 1039 1041 1044 p 000100 automatic pointer dcl 1364 in procedure "clean_up_talk" set ref 1374* 1376* p 001156 automatic pointer dcl 502 in procedure "print_subject" set ref 516* 529 529 529 531 padding 1(07) 001106 automatic bit(29) initial level 3 packed packed unaligned dcl 4-7 set ref 4-7* parse_flags based structure level 1 dcl 3-29 parse_flags_word 001104 automatic bit(36) dcl 3-27 set ref 245* 246 247 248 249 250 251 252 253 254* 1167* 1170* passport based structure level 1 dcl 1-14 passport_info_ptr 001074 automatic pointer dcl 1-12 set ref 238 254* 263 429 455 459 474 477 516* 516 522 523 524 524 549 697 729 940 944 963 973 973 983 988 989 990 991 1020 1020 1026 1048 1048 1170* 1178 1187 1188 1191 1195* 1216 1217 1220 1221 1222 1258 1308 1322 1371 1401 1401 1401 1404 1405 1406 1407 1408 1411 1423* 1430 1430 1432 1435 1437 1440 1442 1444 1445 1446 1446 1451 1455 1456 1457 1458 1458 1459 path 000100 automatic char(168) packed unaligned dcl 855 set ref 865* 866 866 person_id 1 based char(22) level 2 dcl 2-7 set ref 1030* pos parameter fixed bin(21,0) dcl 623 ref 620 627 prev_trans_ptr 20 based pointer level 2 dcl 2-7 set ref 1032* print_message 65(04) based bit(1) level 3 packed packed unaligned dcl 1-14 set ref 474 477* project_id 7 based char(9) level 2 dcl 2-7 set ref 1031* prompt parameter char packed unaligned dcl 647 set ref 644 660 676 682 704 704* prompt_after_explanation 1(06) 001106 automatic bit(1) initial level 3 packed packed unaligned dcl 4-7 set ref 4-7* public_channel 72 based fixed bin(71,0) level 2 dcl 1-14 set ref 549* 1308* 1411* qedx_ 000146 constant entry external dcl 156 ref 841 qedx_info based structure level 1 dcl 6-6 qedx_switch parameter bit(1) dcl 1289 set ref 1286 1301* 1310 qi 000616 automatic structure level 1 dcl 106 set ref 841 841 query_code 3 001106 automatic fixed bin(35,0) initial level 2 dcl 4-7 set ref 4-7* query_if_modified 30(01) 000616 automatic bit(1) level 4 packed packed unaligned dcl 106 set ref 818* query_info 001106 automatic structure level 1 dcl 4-7 set ref 466 466 query_info_version_5 constant fixed bin(17,0) initial dcl 4-35 ref 463 question_iocbp 4 001106 automatic pointer initial level 2 dcl 4-7 set ref 4-7* quote_switch 001177 automatic bit(1) dcl 579 set ref 584* 596 600* 630* read_only 65(03) based bit(1) level 3 packed packed unaligned dcl 1-14 ref 1191 1437 read_write_region 143 000616 automatic bit(1) array level 4 packed packed unaligned dcl 106 set ref 826* 838* region_final_lth 142 000616 automatic fixed bin(21,0) array level 3 dcl 106 set ref 844 844 region_initial_lth 141 000616 automatic fixed bin(21,0) array level 3 dcl 106 set ref 824* 836* region_max_lth 140 000616 automatic fixed bin(21,0) array level 3 dcl 106 set ref 823* 836* region_ptr 136 000616 automatic pointer array level 3 dcl 106 set ref 822* 835* release_temp_segment_ 000150 constant entry external dcl 156 ref 1260 1382 1397 repeat_time 10 001106 automatic fixed bin(71,0) initial level 2 dcl 4-7 set ref 4-7* reply_switch 000430 automatic bit(1) packed unaligned dcl 54 set ref 219* 240* 335* 480 682* 963 reply_trans_idx 000431 automatic fixed bin(17,0) dcl 54 set ref 264* 516* 517* 914 963* 966* 1091 1188* 1217 1405 1448* 1459* request parameter char packed unaligned dcl 813 in procedure "call_qedx" set ref 810 830 835 836 request 000152 automatic char packed unaligned dcl 855 in procedure "call_ted" set ref 866* 867* 871 872 request_loop 000432 automatic bit(1) dcl 54 set ref 323* 327* 450* 459 488 570 1428* requote_string_ 000152 constant entry external dcl 156 ref 1065 return_arg based varying char dcl 112 set ref 1065* return_arg_len 000433 automatic fixed bin(21,0) dcl 54 set ref 1065 1468* return_arg_ptr 000434 automatic pointer dcl 54 set ref 1063 1065 1073 1468* return_string_l 24 000502 automatic fixed bin(21,0) level 2 dcl 106 set ref 875* return_string_p 22 000502 automatic pointer level 2 dcl 106 set ref 874* rq based char packed unaligned dcl 855 ref 866 867 rq_len parameter fixed bin(21,0) dcl 855 ref 852 855 866 867 rq_ptr parameter pointer dcl 855 ref 852 866 867 rtrim builtin function dcl 49 ref 259 261 380 382 398 659 746 791 836 865 869 872 1010 1011 1222 1408 saved_forum_user_trans_ptr 000102 automatic pointer dcl 1004 set ref 1014* 1020 1020 1023 1048 1048 1051 second_char based char(1) packed unaligned dcl 579 ref 598 598 602 602 603 603 size 1 based fixed bin(17,0) level 2 dcl 3-15 set ref 1178 1179* 1184 ssu_$abort_line 000154 constant entry external dcl 156 ref 238 307 312 315 333 335 346 352 355 359 371 377 392 404 445 447 468 517 547 710 842 845 863 886 891 896 917 921 933 938 946 971 1061 1073 1083 1088 1091 1097 1104 1125 1130 1131 1139 1148 1162 1172 1191 1197 1205 1244 1276 1300 1301 1322 1329 1346 1437 1451 ssu_$apply_request_util 000156 constant entry external dcl 156 ref 1202 ssu_$arg_ptr 000160 constant entry external dcl 156 ref 297 310 349 374 396 912 1078 1117 1122 1240 1294 ssu_$get_request_name 000162 constant entry external dcl 156 ref 1425 ssu_$get_subsystem_and_request_name 000164 constant entry external dcl 156 ref 1426 ssu_$print_message 000166 constant entry external dcl 156 ref 565 968 ssu_$return_arg 000170 constant entry external dcl 156 ref 1468 ssu_ptr 000436 automatic pointer dcl 54 set ref 238* 297* 307* 310* 312* 315* 333* 335* 346* 349* 352* 355* 359* 371* 374* 377* 392* 396* 404* 445* 447* 468* 517* 547* 565* 710* 842* 845* 863* 886* 891* 896* 912* 917* 921* 933* 938* 946* 968* 971* 1061* 1073* 1078* 1083* 1088* 1091* 1097* 1104* 1117* 1122* 1125* 1130* 1131* 1139* 1148* 1162* 1172* 1191* 1197* 1202* 1205* 1240* 1244* 1276* 1294* 1300* 1301* 1322* 1329* 1346* 1422* 1425* 1426* 1437* 1451* 1468* static_initialized 000010 internal static bit(1) initial dcl 123 set ref 1463 1465* status 000440 automatic fixed bin(35,0) dcl 54 set ref 311* 312 351* 352 352* 354* 355* 376* 377 377* 475* 476 516* 517 517* 546* 547 547* 706* 709 710 710* 746* 747 747 751* 752 791* 792 792 795* 796 841* 842 862* 863 863* 885* 886 886* 890* 891 891* 937* 938 938* 945* 946 946* 966* 968 968 968* 971* 1096* 1097 1097* 1124* 1125 1148 1148* 1195* 1197 1197* 1214 1328* 1329 1329* 1345* 1346 1346* 1355* 1356 1356* 1366* 1380 1394 status_code 2 001106 automatic fixed bin(35,0) initial level 2 dcl 4-7 set ref 4-7* string builtin function dcl 49 set ref 817* 825* 837* 1352* subject 25 based char level 2 in structure "forum_user_trans" packed packed unaligned dcl 2-7 in procedure "forum_input_requests_$talk_request" set ref 487* 529 529* 531 535* 774* 966* 1035* 1065* 1069* 1215* 1380* 1394* subject based char packed unaligned dcl 112 in procedure "forum_input_requests_$talk_request" set ref 418* 777* subject_arg based char packed unaligned dcl 112 set ref 398 399 481* 510* 1102* subject_arg_len 000441 automatic fixed bin(21,0) dcl 54 set ref 396* 398* 398 399 401* 401 404 432 433* 436 437* 437 481 481 509 510 510 1102 1102 1102 1429* subject_arg_ptr 000442 automatic pointer dcl 54 set ref 392 396* 398 399 402* 402* 481 481 510 1086* 1102 1104 1427* subject_length 22 based fixed bin(21,0) level 2 dcl 2-7 set ref 487 487 529 529 529 529 531 535 535 774 774 937 939 966 966 966 986 1018 1020 1023 1026* 1035 1039 1041 1048 1051 1065 1065 1069 1069 1099 1102 1147 1215 1215 1332 1379 1380 1380 1394 1394 1401 subject_switch 000444 automatic bit(1) dcl 54 set ref 1080 1082* 1434* substr builtin function dcl 49 set ref 299 436 529 560 562 588 592 598 598 602 602 603 603 606 606 614 627* 627 654 659 662* 666 674 730* 730 865 953 1035 1039* 1039 1041* 1332* 1458 suppress_name_sw 1(01) 001106 automatic bit(1) initial level 3 packed packed unaligned dcl 4-7 set ref 4-7* 464* suppress_spacing 1(04) 001106 automatic bit(1) initial level 3 packed packed unaligned dcl 4-7 set ref 4-7* switches 1 001106 automatic structure level 2 in structure "query_info" dcl 4-7 in procedure "forum_input_requests_$talk_request" switches 3 000611 automatic structure level 2 in structure "fdoc" dcl 106 in procedure "forum_input_requests_$talk_request" set ref 1352* syllable_size 4 000611 automatic fixed bin(17,0) level 2 dcl 106 set ref 1354* sys_info$max_seg_size 000054 external static fixed bin(35,0) dcl 140 ref 627 823 1332 1355 1355 talk_fill 65(01) based bit(1) level 3 packed packed unaligned dcl 1-14 ref 455 ted_ 000176 constant entry external dcl 5-8 ref 803 885 1279 ted_com_l 14 000502 automatic fixed bin(21,0) level 2 dcl 106 set ref 872* ted_com_p 12 000502 automatic pointer level 2 dcl 106 set ref 871* ted_data based structure level 1 unaligned dcl 5-13 ted_data_version_1 constant fixed bin(17,0) initial dcl 5-11 ref 870 ted_info 000502 automatic structure level 1 dcl 106 set ref 885 885 ted_mode 15 000502 automatic fixed bin(17,0) level 2 dcl 106 set ref 873* tedname 000502 automatic varying char(32) level 2 dcl 106 set ref 869* temp_dir 35 000502 automatic char(168) level 2 dcl 106 set ref 877* temp_forum 000445 automatic bit(1) dcl 54 set ref 258* 371 379* 1434* temp_seg based char packed unaligned dcl 112 set ref 627* 1332* 1355* temp_seg_ptr 000450 automatic pointer dcl 54 set ref 546* 627 774 822 861* 862* 880 890* 1202* 1211 1215 1260 1260* 1327 1328* 1332 1344 1345* 1355 1380 1382* 1386 1391 1394 1397* 1427* temp_text based char packed unaligned dcl 112 set ref 774* 1211 1215* 1380* 1391 1394* terminal_switch 000452 automatic bit(1) dcl 54 set ref 331* 447 1434* termination_type 001166 automatic fixed bin(17,0) dcl 544 set ref 553* 555 557 570 text based char level 2 in structure "forum_user_trans" packed packed unaligned dcl 2-7 in procedure "forum_input_requests_$talk_request" set ref 937* 966* 1039* 1041* 1099* 1102* 1147* 1332 1379* text 000100 automatic char packed unaligned dcl 1210 in begin block on line 1208 set ref 1211* 1212* text 000100 automatic char packed unaligned dcl 1390 in begin block on line 1388 set ref 1391* 1392* text_len 000446 automatic fixed bin(21,0) dcl 54 set ref 585* 604* 604 627 628* 628 774 774 775* 844* 888* 893* 896 1046* 1144* 1202* 1205 1210 1211 1215 1215 1226* 1355* 1380 1380 1387 1390 1391 1394 1394 1433* text_length 23 based fixed bin(21,0) level 2 dcl 2-7 set ref 824 845 861 881 896 933 937 937 939 966 966 986 1018 1020 1023 1026* 1039 1041 1048 1051 1099 1099 1102 1102 1144 1147 1147 1202* 1332 1332 1379 1379 1401 tf_string 000120 automatic char(5) packed unaligned dcl 742 set ref 746* 751* 755* 755 757 758 759 760 761 third_char based char(1) packed unaligned dcl 579 ref 606 606 trans_no 14 based fixed bin(17,0) level 2 dcl 2-7 set ref 966* 978 trans_num 3 based fixed bin(17,0) array level 3 dcl 3-15 set ref 264 1180* 1186 1195* 1197* 1204 trans_pic 000454 automatic picture(6) packed unaligned dcl 54 set ref 978* 979 979 transaction parameter char packed unaligned dcl 1342 set ref 1339 1355* translate builtin function dcl 49 ref 562 755 799 type based fixed bin(17,0) level 2 dcl 2-7 set ref 936 1028* 1029* 1189 1460 unfilled 24 based bit(1) level 2 dcl 2-7 set ref 487* 562* 774* 966* 1033* 1099* 1102* 1135* 1146 1208 1215* 1377 1380* 1388 1394* unprocessed_forum_dir 105 based char(168) level 2 dcl 1-14 set ref 989* 1220* 1406* 1456 unprocessed_forum_name 157 based char(32) level 2 dcl 1-14 set ref 990* 1221* 1407* 1457 1458 unprocessed_name_len 167 based fixed bin(17,0) level 2 dcl 1-14 set ref 1222* 1408* 1458 unprocessed_reply_trans 104 based fixed bin(17,0) level 2 dcl 1-14 set ref 991* 1188 1217* 1405* 1459 unprocessed_trans_ptr 102 based pointer level 2 dcl 1-14 set ref 459 940* 973 973* 1020 1020 1048 1048 1178 1187 1216* 1258 1401 1401 1401 1404* 1440 1451 1455 user_file based char packed unaligned dcl 112 set ref 487* user_file_len 000456 automatic fixed bin(21,0) dcl 54 set ref 358* 359 487 487 user_file_ptr 000460 automatic pointer dcl 54 set ref 346 354* 355 447 450 455 459 486 487 1373 1374 1375* 1427* user_info_$whoami 000172 constant entry external dcl 156 ref 1464 user_trans_type constant fixed bin(17,0) initial dcl 2-21 ref 1029 value_$get 000174 constant entry external dcl 156 ref 746 751 791 795 verify builtin function dcl 49 ref 399 666 version 11 000502 automatic fixed bin(35,0) level 2 in structure "ted_info" dcl 106 in procedure "forum_input_requests_$talk_request" set ref 870* version 001106 automatic fixed bin(17,0) level 2 in structure "query_info" dcl 4-7 in procedure "forum_input_requests_$talk_request" set ref 463* version 000616 automatic char(8) level 3 in structure "qi" dcl 106 in procedure "forum_input_requests_$talk_request" set ref 815* version_number 000611 automatic fixed bin(17,0) level 2 dcl 106 set ref 1349* whoami 000462 automatic char(32) packed unaligned dcl 54 set ref 335* 1425* whoami_really 000472 automatic char(32) packed unaligned dcl 54 set ref 466* 546* 816 869 1260* 1328* 1345* 1382* 1397* 1426* yes_or_no_sw 1 001106 automatic bit(1) initial level 3 packed packed unaligned dcl 4-7 set ref 4-7* 465* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALLOW_DELETED internal static bit(17) initial dcl 3-50 ALLOW_IHE internal static bit(17) initial dcl 3-50 DEFAULT_TO_ALL internal static bit(17) initial dcl 3-50 DEFAULT_TO_NONE internal static bit(17) initial dcl 3-50 DISALLOW_BYCHAIN internal static bit(17) initial dcl 3-50 DISALLOW_IDL internal static bit(17) initial dcl 3-50 DISALLOW_INITIAL internal static bit(17) initial dcl 3-50 DISALLOW_REV internal static bit(17) initial dcl 3-50 DISALLOW_UNPROC internal static bit(17) initial dcl 3-50 DONT_READ internal static bit(17) initial dcl 3-50 INCLUDE_DELETED internal static fixed bin(17,0) initial dcl 2-24 MUST_BE_DELETED internal static bit(17) initial dcl 3-50 NON_NULL internal static bit(17) initial dcl 3-50 ONLY_DELETED internal static fixed bin(17,0) initial dcl 2-24 ONLY_ONE internal static bit(17) initial dcl 3-50 ONLY_UNDELETED internal static fixed bin(17,0) initial dcl 2-24 TFMT_more internal static fixed bin(17,0) initial dcl 1-54 TFMT_none internal static fixed bin(17,0) initial dcl 1-54 TFMT_number internal static fixed bin(17,0) initial dcl 1-54 TFMT_reference internal static fixed bin(17,0) initial dcl 1-54 alloc_trans_list_size automatic fixed bin(17,0) dcl 3-13 format_document_options_ptr automatic pointer dcl 7-62 format_document_version_1 internal static fixed bin(17,0) initial dcl 7-64 forum_data_$central_directory external static char(168) packed unaligned dcl 1-49 forum_data_$info_directory external static char(168) packed unaligned dcl 1-49 forum_data_$version_string external static char(8) packed unaligned dcl 1-49 passport_version_2 internal static fixed bin(17,0) initial dcl 1-44 qedx_info_n_buffers automatic fixed bin(17,0) dcl 6-42 qedx_info_ptr automatic pointer dcl 6-41 query_info_version_3 internal static fixed bin(17,0) initial dcl 4-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 4-34 query_info_version_6 internal static fixed bin(17,0) initial dcl 4-36 ted_data_p automatic pointer dcl 54 tederror_table_$ted_com_abort external static fixed bin(35,0) dcl 5-48 NAMES DECLARED BY EXPLICIT CONTEXT. APPLY_USAGE 003377 constant label dcl 1162 USE_QEDX 011275 constant label dcl 805 ref 789 add_lines 007403 constant entry internal dcl 576 ref 553 add_to_subject 006150 constant entry internal dcl 424 ref 1084 add_to_trans 007732 constant entry internal dcl 620 ref 594 596 612 617 allocate_transaction 013106 constant entry internal dcl 1001 ref 418 481 484 487 510 529 531 774 1102 1215 1380 1394 apply_args 013411 constant entry internal dcl 1235 ref 1170 1170 ask_subject 006054 constant entry internal dcl 410 ref 482 1324 build_transaction 007157 constant entry internal dcl 541 ref 493 call_qedx 011302 constant entry internal dcl 810 ref 777 1310 call_ted 011525 constant entry internal dcl 852 ref 778 1311 clean_up_apply 013542 constant entry internal dcl 1254 ref 1165 1231 clean_up_talk 014457 constant entry internal dcl 1361 ref 222 230 243 270 281 288 568 909 926 955 1075 1107 1142 1152 1258 1304 1313 editor_request 013625 constant entry internal dcl 1286 ref 1268 1283 enter_the_editor 010724 constant entry internal dcl 769 ref 555 enter_the_transaction 012233 constant entry internal dcl 930 ref 488 570 924 fill_the_transaction 014275 constant entry internal dcl 1339 ref 1147 1212 1379 1392 forum_input_requests_$apply_request 003357 constant entry external dcl 1155 forum_input_requests_$enter_request 001621 constant entry external dcl 904 forum_input_requests_$fill_request 002713 constant entry external dcl 1111 forum_input_requests_$qedx_request 004163 constant entry external dcl 1265 forum_input_requests_$reply_request 001241 constant entry external dcl 234 forum_input_requests_$set_message 001527 constant entry external dcl 274 forum_input_requests_$subject_request 002056 constant entry external dcl 1057 forum_input_requests_$talk_request 001146 constant entry external dcl 43 forum_input_requests_$ted_request 004204 constant entry external dcl 1273 get_forum 005446 constant entry internal dcl 366 ref 319 914 get_input_file 005106 constant entry internal dcl 341 ref 305 get_line 007765 constant entry internal dcl 644 ref 415 587 get_subject 005701 constant entry internal dcl 387 ref 330 input_cp_escape_allowed 010433 constant entry internal dcl 739 ref 676 make_bigger_buffer 010364 constant entry internal dcl 723 ref 433 712 parse_arg 004276 constant entry internal dcl 292 ref 225 254 254 284 print_subject 006676 constant entry internal dcl 499 ref 480 1099 process_transaction 006243 constant entry internal dcl 442 ref 228 268 287 read_a_line 010205 constant entry internal dcl 688 ref 651 setup_request 015121 constant entry internal dcl 1417 ref 217 237 277 907 1060 1114 1160 1291 standard_default_editor 011052 constant entry internal dcl 784 ref 777 unpack_trans_to_temp_seg 014145 constant entry internal dcl 1318 ref 1150 1201 1306 NAME DECLARED BY CONTEXT OR IMPLICATION. CREATE_UNPROC 001131 automatic fixed bin(17,0) ref 1167 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 17716 20116 16305 17726 Length 20744 16305 200 611 1410 12 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME forum_input_requests_$talk_request 936 external procedure is an external procedure. on unit on line 222 64 on unit on unit on line 243 64 on unit on unit on line 281 64 on unit parse_arg 228 internal procedure is assigned to an entry variable. get_input_file internal procedure shares stack frame of internal procedure parse_arg. get_forum 112 internal procedure is called by several nonquick procedures. get_subject internal procedure shares stack frame of internal procedure parse_arg. ask_subject 96 internal procedure is called by several nonquick procedures. add_to_subject internal procedure shares stack frame of external procedure forum_input_requests_$talk_re process_transaction internal procedure shares stack frame of external procedure forum_input_requests_$talk_re print_subject internal procedure shares stack frame of external procedure forum_input_requests_$talk_re build_transaction internal procedure shares stack frame of external procedure forum_input_requests_$talk_re add_lines internal procedure shares stack frame of external procedure forum_input_requests_$talk_re add_to_trans internal procedure shares stack frame of external procedure forum_input_requests_$talk_re get_line 204 internal procedure is called by several nonquick procedures. read_a_line internal procedure shares stack frame of internal procedure get_line. make_bigger_buffer 64 internal procedure is called by several nonquick procedures. input_cp_escape_allowed internal procedure shares stack frame of internal procedure get_line. enter_the_editor internal procedure shares stack frame of external procedure forum_input_requests_$talk_re standard_default_editor 124 internal procedure enables or reverts conditions. on unit on line 789 64 on unit call_qedx 122 internal procedure is called by several nonquick procedures. call_ted 164 internal procedure uses auto adjustable storage. on unit on line 909 64 on unit enter_the_transaction 162 internal procedure enables or reverts conditions. on unit on line 952 70 on unit allocate_transaction 80 internal procedure is called during a stack extension, and enables or reverts conditions. on unit on line 1016 64 on unit on unit on line 1075 64 on unit on unit on line 1142 64 on unit on unit on line 1165 64 on unit begin block on line 1208 78 begin block uses auto adjustable storage. apply_args 94 internal procedure is assigned to an entry variable. clean_up_apply 80 internal procedure is called by several nonquick procedures. on unit on line 1276 96 on unit editor_request 110 internal procedure enables or reverts conditions. on unit on line 1304 64 on unit unpack_trans_to_temp_seg 88 internal procedure is called by several nonquick procedures. fill_the_transaction 118 internal procedure is called by several nonquick procedures. clean_up_talk 98 internal procedure is called by several nonquick procedures. begin block on line 1388 78 begin block uses auto adjustable storage. setup_request 102 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_initialized forum_input_requests_$talk_request 000011 my_person_id forum_input_requests_$talk_request 000016 my_project_id forum_input_requests_$talk_request STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME allocate_transaction 000100 p allocate_transaction 000102 saved_forum_user_trans_ptr allocate_transaction begin block on line 1208 000100 text begin block on line 1208 begin block on line 1388 000100 text begin block on line 1388 call_ted 000100 path call_ted 000152 request call_ted clean_up_talk 000100 p clean_up_talk forum_input_requests_$talk_request 000114 answer forum_input_requests_$talk_request 000117 arg_count forum_input_requests_$talk_request 000120 arg_idx forum_input_requests_$talk_request 000121 arg_len forum_input_requests_$talk_request 000122 arg_ptr forum_input_requests_$talk_request 000124 auto_rql forum_input_requests_$talk_request 000125 auto_write forum_input_requests_$talk_request 000126 bit_count forum_input_requests_$talk_request 000127 brief_switch forum_input_requests_$talk_request 000130 buffer_len forum_input_requests_$talk_request 000132 buffer_ptr forum_input_requests_$talk_request 000134 default_switch forum_input_requests_$talk_request 000135 dirname forum_input_requests_$talk_request 000207 entryname forum_input_requests_$talk_request 000217 fill_switch forum_input_requests_$talk_request 000220 first_nonwhite_pos forum_input_requests_$talk_request 000221 force forum_input_requests_$talk_request 000222 idx forum_input_requests_$talk_request 000223 inhibit_auto_fill forum_input_requests_$talk_request 000224 inhibit_input_cp_escape forum_input_requests_$talk_request 000225 line_length forum_input_requests_$talk_request 000226 mask forum_input_requests_$talk_request 000227 message forum_input_requests_$talk_request 000327 message_sw forum_input_requests_$talk_request 000330 forum_idx forum_input_requests_$talk_request 000331 forum_dir forum_input_requests_$talk_request 000403 forum_name forum_input_requests_$talk_request 000413 full_forum_name forum_input_requests_$talk_request 000424 new_buffer_ptr forum_input_requests_$talk_request 000426 new_buffer_len forum_input_requests_$talk_request 000427 no_chars_read forum_input_requests_$talk_request 000430 reply_switch forum_input_requests_$talk_request 000431 reply_trans_idx forum_input_requests_$talk_request 000432 request_loop forum_input_requests_$talk_request 000433 return_arg_len forum_input_requests_$talk_request 000434 return_arg_ptr forum_input_requests_$talk_request 000436 ssu_ptr forum_input_requests_$talk_request 000440 status forum_input_requests_$talk_request 000441 subject_arg_len forum_input_requests_$talk_request 000442 subject_arg_ptr forum_input_requests_$talk_request 000444 subject_switch forum_input_requests_$talk_request 000445 temp_forum forum_input_requests_$talk_request 000446 text_len forum_input_requests_$talk_request 000450 temp_seg_ptr forum_input_requests_$talk_request 000452 terminal_switch forum_input_requests_$talk_request 000454 trans_pic forum_input_requests_$talk_request 000456 user_file_len forum_input_requests_$talk_request 000460 user_file_ptr forum_input_requests_$talk_request 000462 whoami forum_input_requests_$talk_request 000472 whoami_really forum_input_requests_$talk_request 000502 ted_info forum_input_requests_$talk_request 000611 fdoc forum_input_requests_$talk_request 000616 qi forum_input_requests_$talk_request 001074 passport_info_ptr forum_input_requests_$talk_request 001076 alloc_text_length forum_input_requests_$talk_request 001077 alloc_subject_length forum_input_requests_$talk_request 001100 forum_user_trans_ptr forum_input_requests_$talk_request 001102 forum_trans_list_ptr forum_input_requests_$talk_request 001104 parse_flags_word forum_input_requests_$talk_request 001105 ANY forum_input_requests_$talk_request 001106 query_info forum_input_requests_$talk_request 001123 new_unpro_trans forum_input_requests_$talk_request 001131 CREATE_UNPROC forum_input_requests_$talk_request 001156 p print_subject 001166 termination_type build_transaction 001176 idx add_lines 001177 quote_switch add_lines get_line 000100 newline get_line 000110 long_record read_a_line 000111 no_new_chars_read read_a_line 000120 tf_string input_cp_escape_allowed standard_default_editor 000100 editor standard_default_editor THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars enter_begin_block leave_begin_block call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 alloc_auto_adj signal_op enable_op shorten_stack ext_entry int_entry int_entry_desc op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. add_char_offset_ command_query_ cu_$cp cv_dec_check_ expand_pathname_ format_document_$string forum_$close_forum forum_$enter_trans forum_$get_message forum_$open_forum forum_$set_message forum_requests_$open_forum forum_trans_specs_$parse_specs forum_trans_util_$read_trans get_temp_segment_ hcs_$fs_get_path_name hcs_$initiate_count hcs_$reset_ips_mask hcs_$set_bc_seg hcs_$set_ips_mask hcs_$status_mins hcs_$terminate_noname ioa_ ioa_$nnl iox_$get_line ipc_$cutoff ipc_$reconnect qedx_ release_temp_segment_ requote_string_ ssu_$abort_line ssu_$apply_request_util ssu_$arg_ptr ssu_$get_request_name ssu_$get_subsystem_and_request_name ssu_$print_message ssu_$return_arg ted_ user_info_$whoami value_$get THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$fatal_error error_table_$inconsistent error_table_$long_record error_table_$noarg error_table_$oldnamerr error_table_$recoverable_error error_table_$zero_length_seg forum_et_$cant_notify forum_et_$no_forum forum_et_$no_unprocessed forum_et_$read_only iox_$user_input sys_info$max_seg_size WARNING 77 ON LINE 1167 The undeclared identifier "CREATE_UNPROC" has been declared by implication. It will acquire default attributes. WARNING 307 The variable "CREATE_UNPROC" has been referenced but has never been set. WARNING 233 ON LINE 1167 "CREATE_UNPROC" has been converted from an arithmetic value to a string value. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 49 001107 4 7 001110 43 001142 217 001154 219 001164 220 001165 222 001167 224 001211 225 001221 226 001227 228 001231 230 001232 232 001236 234 001237 237 001247 238 001257 240 001277 241 001301 243 001303 245 001325 246 001326 247 001330 248 001332 249 001334 250 001336 251 001340 252 001342 253 001344 254 001346 257 001416 258 001420 259 001422 261 001453 262 001502 263 001504 264 001507 266 001512 268 001517 270 001520 272 001524 274 001525 277 001535 279 001545 281 001550 283 001572 284 001601 285 001607 287 001611 288 001612 290 001616 904 001617 907 001627 909 001637 911 001661 912 001671 914 001706 917 001734 918 001762 919 001775 921 002007 922 002041 924 002043 926 002047 928 002053 1057 002054 1060 002064 1061 002074 1063 002124 1065 002132 1066 002170 1069 002172 1070 002220 1073 002221 1075 002253 1077 002275 1078 002305 1080 002322 1082 002350 1083 002363 1084 002415 1085 002416 1086 002420 1088 002422 1091 002454 1094 002505 1095 002507 1096 002511 1097 002536 1099 002575 1100 002617 1102 002620 1104 002653 1107 002704 1109 002710 1111 002711 1114 002721 1116 002731 1117 002741 1119 002756 1121 003002 1122 003003 1124 003020 1125 003045 1127 003101 1128 003102 1129 003111 1130 003120 1131 003153 1132 003200 1134 003202 1135 003204 1136 003207 1139 003210 1142 003251 1144 003273 1146 003276 1147 003301 1148 003315 1149 003343 1150 003344 1152 003350 1153 003354 1155 003355 1160 003365 1162 003375 1165 003424 1167 003446 1168 003461 1170 003462 1172 003532 1174 003564 1178 003565 1179 003575 1180 003577 1181 003600 1184 003602 1186 003613 1187 003617 1188 003622 1189 003625 1191 003635 1193 003655 1195 003656 1197 003676 1201 003737 1202 003743 1204 003763 1205 003767 1208 004022 1210 004033 1212 004043 1211 004046 1212 004054 1213 004064 1214 004065 1215 004067 1216 004116 1217 004121 1219 004123 1220 004125 1221 004130 1222 004133 1223 004145 1226 004146 1227 004150 1229 004152 1231 004154 1233 004160 1265 004161 1268 004171 1270 004201 1273 004202 1276 004212 1279 004254 1281 004263 1283 004264 1284 004274 292 004275 297 004303 299 004321 301 004350 302 004357 303 004365 304 004400 305 004413 306 004433 307 004443 309 004503 310 004505 311 004523 312 004552 315 004606 316 004637 317 004642 318 004643 319 004655 320 004704 321 004720 322 004732 323 004742 324 004743 325 004744 326 004745 327 004755 328 004757 329 004760 330 004761 331 005003 333 005016 335 005050 337 005105 341 005106 346 005110 348 005142 349 005144 351 005162 352 005213 354 005250 355 005313 358 005370 359 005374 362 005444 366 005445 371 005453 373 005502 374 005504 376 005522 377 005557 379 005614 380 005617 382 005650 383 005677 387 005701 392 005703 395 005735 396 005737 398 005755 399 005771 400 006003 401 006005 402 006007 404 006022 406 006052 410 006053 413 006061 414 006064 415 006070 416 006105 418 006106 420 006147 424 006150 427 006151 428 006155 429 006157 432 006167 433 006176 434 006204 436 006205 437 006236 439 006242 442 006243 445 006244 447 006263 450 006315 452 006325 453 006326 455 006327 457 006344 459 006346 462 006364 463 006366 464 006370 465 006372 466 006374 468 006426 471 006444 473 006447 474 006452 475 006460 476 006501 477 006522 480 006525 481 006534 482 006564 483 006570 484 006571 486 006610 487 006614 488 006643 489 006651 491 006673 493 006674 495 006675 499 006676 509 006707 510 006711 511 006735 516 006736 517 006756 521 007011 522 007015 523 007021 524 007024 529 007030 531 007070 535 007127 537 007156 541 007157 546 007160 547 007201 549 007232 551 007245 553 007265 555 007267 557 007273 559 007302 560 007304 561 007314 562 007320 565 007337 568 007365 570 007371 572 007402 576 007403 584 007405 585 007406 586 007407 587 007410 588 007420 591 007437 592 007440 593 007452 594 007454 596 007477 598 007532 599 007552 600 007554 601 007556 602 007557 603 007567 604 007573 605 007577 606 007607 608 007632 609 007633 612 007637 614 007663 615 007677 617 007700 618 007725 635 007726 620 007732 627 007743 628 007756 629 007760 630 007762 632 007763 644 007764 651 010000 653 010001 654 010002 656 010011 657 010013 659 010015 660 010027 662 010040 663 010044 666 010045 667 010057 669 010060 670 010062 673 010063 674 010070 676 010075 679 010111 682 010153 683 010203 721 010204 688 010205 694 010206 696 010213 697 010215 700 010227 701 010230 702 010231 704 010237 706 010262 708 010321 709 010324 710 010330 712 010350 713 010357 715 010361 717 010362 723 010363 728 010371 729 010375 730 010407 731 010415 732 010422 733 010426 734 010430 736 010432 739 010433 744 010435 746 010442 747 010525 751 010537 752 010601 755 010607 757 010617 758 010633 759 010650 760 010665 761 010702 763 010717 765 010721 769 010724 772 010725 774 010727 775 010756 777 010760 778 011022 780 011050 784 011051 789 011057 791 011076 792 011162 795 011175 796 011235 799 011244 801 011252 803 011263 805 011275 810 011301 815 011315 816 011320 817 011323 818 011324 820 011326 821 011331 822 011334 823 011336 824 011341 825 011344 826 011345 828 011355 830 011362 832 011374 833 011376 834 011401 835 011404 836 011406 837 011421 838 011422 841 011426 842 011440 844 011462 845 011467 849 011523 852 011524 855 011532 861 011543 862 011563 863 011615 865 011635 866 011677 867 011760 869 011772 870 012012 871 012014 872 012016 873 012032 874 012033 875 012036 876 012041 877 012043 879 012046 880 012050 881 012053 882 012056 883 012057 885 012062 886 012075 888 012115 890 012123 891 012141 893 012170 896 012174 901 012231 930 012232 933 012240 936 012274 937 012300 938 012327 939 012357 940 012370 941 012374 944 012375 945 012402 946 012427 951 012502 952 012504 953 012520 955 012534 956 012541 958 012542 963 012556 966 012567 968 012637 971 012671 973 012717 975 012727 977 012737 978 012742 979 012753 981 013035 983 013036 986 013046 987 013056 988 013071 989 013075 990 013100 991 013103 995 013104 1001 013105 1010 013126 1011 013144 1012 013160 1014 013162 1015 013164 1016 013166 1018 013202 1020 013225 1023 013247 1024 013257 1026 013260 1028 013300 1029 013306 1030 013310 1031 013314 1032 013321 1033 013324 1035 013330 1037 013336 1039 013340 1041 013346 1044 013352 1046 013353 1048 013355 1051 013377 1053 013407 1235 013410 1240 013416 1241 013434 1243 013464 1244 013477 1246 013532 1247 013535 1250 013540 1254 013541 1257 013547 1258 013561 1260 013574 1262 013623 1286 013624 1291 013632 1293 013642 1294 013654 1295 013671 1297 013721 1298 013734 1299 013743 1300 013751 1301 014004 1302 014036 1304 014041 1306 014063 1308 014070 1310 014104 1311 014122 1313 014136 1315 014143 1318 014144 1321 014152 1322 014157 1324 014176 1327 014203 1328 014210 1329 014231 1332 014263 1334 014273 1339 014274 1344 014310 1345 014315 1346 014335 1349 014367 1350 014372 1351 014373 1352 014375 1353 014376 1354 014404 1355 014406 1356 014447 1358 014455 1361 014456 1366 014464 1367 014466 1368 014477 1370 014511 1371 014523 1373 014542 1374 014547 1375 014551 1376 014553 1377 014565 1379 014600 1380 014616 1382 014651 1386 014674 1387 014701 1388 014703 1390 014714 1392 014725 1391 014730 1392 014736 1393 014746 1394 014747 1397 015002 1400 015025 1401 015032 1404 015053 1405 015060 1406 015063 1407 015066 1408 015071 1411 015103 1413 015117 1417 015120 1422 015126 1423 015133 1425 015136 1426 015153 1427 015171 1428 015200 1429 015206 1430 015210 1431 015215 1432 015217 1433 015221 1434 015223 1435 015227 1437 015233 1440 015257 1441 015272 1442 015275 1444 015312 1445 015315 1446 015320 1448 015324 1449 015325 1451 015326 1455 015350 1456 015352 1457 015356 1458 015361 1459 015365 1460 015367 1463 015373 1464 015376 1465 015416 1468 015421 1470 015442 ----------------------------------------------------------- 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