COMPILATION LISTING OF SEGMENT forum_output_requests_ Compiled by: Multics PL/I Compiler, Release 33d, of April 24, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 92-04-27_1039.42_Mon_mdt Options: optimize map 1 /****^ *************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1986 * 4* * * 5* * Copyright (c) 1982 by Massachusetts Institute of Technology * 6* * * 7* *************************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(86-07-29,Pattin), approve(86-07-29,MCR7354), 13* audit(86-08-07,Margolin), install(86-08-16,MR12.0-1128): 14* Fixed bugs in formatted writes involving form-feeds and 15* multi-line subjects. 16* Added -trailer_format to print and write. 17* Changed to use date_time_$format 18* Added -no_header. 19* Changed list to mark deleted transactions. 20* Report pref of unprocessed. 21* 2) change(91-08-29,Huen), approve(91-08-29,MCR8248), 22* audit(92-01-08,Zimmerman), install(92-04-27,MR12.5-1014): 23* Fix several TRs (phx21375, 21376, 21377) relatled to current trans. 24* 3) change(91-08-29,Huen), approve(91-08-29,MCR8249), 25* audit(92-01-08,Zimmerman), install(92-04-27,MR12.5-1014): 26* phx21386: Fix the "list" request to generate correct summary for unproc 27* trans. 28* END HISTORY COMMENTS */ 29 30 31 forum_output_requests_$write_transactions: 32 procedure (P_ssu_ptr, P_passport_info_ptr); 33 34 /* This module implements the following forum requests: 35* 36* 1) 'print' to print specified transactions on users terminal. 37* 2) 'write' to write specified transactions to a segment. 38* 3) 'list' to list specified transactions on users terminal. 39* 4) 'delete' and 'retrieve' to allow the chairman to logically remove 40* transactions from a forum and retrieve them later. 41* 5) 'reset' to change the current and last-seen transactions. 42* 43* Initial coding: 10 March 1980 by M. Auerbach 44* rewritten for version 4 6/19/81 Jay Pattin 45* modified for ssu_ 08/21/81 Jay Pattin 46* renamed for forum, added -bf, -lg, -sep, -nsep, -line_len to write Jay Pattin 1/82 47* added cmsg to write, print, delete 5/14/82 Jay Pattin 48* made list work as active function, use format_document_ for filling 6/25/82 Jay Pattin 49* added reset_more in print request 9/24/82 Jay Pattin 50* added -new, -next to reset, -bf, -lg to list 10/20/82 Jay Pattin 51* simple formatted write 12/31/82 Jay Pattin */ 52 53 declare (P_ssu_ptr, P_passport_info_ptr) 54 pointer parameter; 55 56 declare argument_idx fixed bin, 57 active_function bit (1) aligned, 58 ret_val char (ret_len) varying based (ret_ptr), 59 ret_ptr ptr, 60 ret_len fixed bin (21), 61 (arg_count, arg_len) fixed bin, 62 arg_ptr ptr, 63 (tidx, forum_idx) fixed bin, 64 code fixed bin (35), 65 forum_dir char (168), /* where the current forum is */ 66 forum_name char (32), /* and what it is called */ 67 fill_index fixed bin, /* to fill, or not to fill ... */ 68 (write_switch, extend_switch, header_switch, list_switch, temp_forum, delete_switch, formatted, 69 current_switch, print_switch, update_current, dont_truncate, long_switch) 70 bit (1) aligned, 71 trans_pic pic "zz9999", /* pretty picture of trans no */ 72 trans_time char (24), /* mm/dd/yy etc. of trans */ 73 fmt_trans_time char (250) varying,/* header uses date_time_$format */ 74 iocb_ptr ptr, /* used for print & write */ 75 no_lines fixed bin, /* length of transaction in lines */ 76 owner char (72), /* temp seg owner */ 77 current_line fixed bin, 78 page_len fixed bin, 79 page_number fixed bin, 80 page_header char (256), 81 page_subject char (72), /* first sj on page */ 82 temp_idx fixed bin, 83 (text_ptr, prseg_ptr) ptr, 84 fill_len fixed bin (21), 85 fill_seg char (1044480) based (prseg_ptr), 86 text char (fill_len) based (text_ptr), 87 control char (80) varying, /* used for ioa_ */ 88 message char (256), /* used by ioa_$rs */ 89 messlen fixed bin (21), 90 separator char (256) varying, 91 (sep_switch, sep_switch_given) 92 bit (1) aligned, 93 ssu_ptr ptr, 94 trailer_format fixed bin, 95 user_dir char (168), /* where write segment is */ 96 user_entry char (32), /* and what it is called */ 97 i fixed bin, 98 sj_width fixed bin, 99 line_len fixed bin; 100 101 declare arg char (arg_len) based (arg_ptr); 102 declare 1 fdoc aligned like format_document_options; 103 declare NL char (1) static options (constant) init (" 104 "); 105 declare FF char (1) static options (constant) init (" "); 106 107 declare (error_table_$bad_conversion, 108 error_table_$badopt, 109 error_table_$bigarg, 110 error_table_$inconsistent, 111 error_table_$noarg, 112 error_table_$noentry, 113 error_table_$recoverable_error, 114 forum_et_$invalid_trans_idx, 115 forum_et_$trans_reaped) fixed bin (35) external; 116 117 declare iox_$user_output external pointer; 118 119 declare iox_$close entry (pointer, fixed binary (35)), 120 iox_$control entry (ptr, char (*), ptr, fixed bin (35)), 121 iox_$detach_iocb entry (pointer, fixed binary (35)), 122 iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed binary (35)), 123 iox_$destroy_iocb entry (ptr, fixed bin (35)), 124 cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)), 125 get_line_length_$switch entry (ptr, fixed bin (35)) returns (fixed bin (17)), 126 hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)), 127 iox_$open entry (pointer, fixed binary, bit (1) aligned, fixed binary (35)), 128 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 129 expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)), 130 date_time_ entry (fixed binary (71), char (*)), 131 date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) 132 returns (char (250) varying), 133 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 134 release_temp_segment_ entry (char (*), ptr, fixed bin (35)), 135 request_id_ entry (fixed bin (71)) returns (char (19)), 136 ipc_$cutoff entry (fixed binary (71), fixed binary (35)), 137 ipc_$reconnect entry (fixed binary (71), fixed binary (35)), 138 ioa_ entry options (variable), 139 ioa_$rsnnl entry options (variable), 140 ioa_$ioa_switch entry options (variable), 141 ioa_$ioa_switch_nnl entry options (variable), 142 format_document_$string entry (char (*), char (*), fixed bin (21), ptr, fixed bin (35)), 143 forum_$close_forum entry (fixed bin, fixed bin (35)), 144 forum_$forum_limits entry (fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, 145 fixed bin, bit (36) aligned, fixed bin (35)), 146 forum_$get_message entry (fixed bin, char (*), fixed bin (35)), 147 forum_$set_delete_sw entry (fixed bin, fixed bin, bit (1) aligned, fixed bin (35)), 148 forum_$set_last_seen_idx entry (fixed bin, fixed bin, bit (1) aligned, fixed bin (35)), 149 forum_$set_message entry (fixed bin, char (*), fixed bin (35)), 150 forum_$set_seen_switch entry (fixed bin, char (*), fixed bin, bit (1) aligned, fixed bin (35)), 151 forum_$trans_ref_info entry (fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, bit (1) aligned, 152 fixed bin (35)), 153 forum_trans_specs_$parse_specs 154 entry (ptr, fixed bin, bit (36) aligned, entry, fixed bin, char (*), char (*), ptr), 155 forum_trans_util_$read_trans entry (ptr, fixed bin, fixed bin, ptr, fixed bin (35)), 156 ssu_$abort_line entry options (variable), 157 ssu_$return_arg entry (ptr, fixed bin, bit (1) aligned, ptr, fixed bin (21)), 158 ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin), 159 ssu_$get_subsystem_and_request_name 160 entry (ptr) returns (char (72) varying), 161 ssu_$print_message entry options (variable); 162 163 declare (addcharno, addr, char, index, length, max, null, clock, ltrim, maxlength, min, rtrim, string, substr) 164 builtin, 165 cleanup condition; 166 1 1 /* ... BEGIN INCLUDE FILE forum_trans_list.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-07,Margolin), install(86-08-16,MR12.0-1128): 1 8* Added deleted switch. 1 9* 2) change(91-09-05,Huen), approve(91-09-05,MCR8249), 1 10* audit(92-01-08,Zimmerman), install(92-04-27,MR12.5-1014): 1 11* phx20579: Added parse_flags.default_to_unproc & CREATE_UNPROC 1 12* END HISTORY COMMENTS */ 1 13 1 14 1 15 dcl forum_trans_list_ptr ptr; 1 16 dcl alloc_trans_list_size fixed bin; 1 17 1 18 dcl 1 forum_trans_list aligned based (forum_trans_list_ptr), 1 19 2 max_size fixed bin, 1 20 2 size fixed bin, 1 21 2 max_personid_len fixed bin, 1 22 2 list (alloc_trans_list_size refer (forum_trans_list.max_size)), 1 23 3 trans_num fixed bin (17), /* must be aligned */ 1 24 3 nref fixed bin (17) unaligned, 1 25 3 pref fixed bin (17) unaligned, 1 26 3 flags unaligned, 1 27 4 deleted bit (1) unaligned, 1 28 4 pad bit (35) unaligned; 1 29 1 30 dcl parse_flags_word bit (36) aligned; 1 31 1 32 dcl 1 parse_flags aligned based (addr (parse_flags_word)), 1 33 2 non_null bit (1) unal, /* on if trans_spec cannot be empty */ 1 34 2 only_one bit (1) unal, /* on if only one transaction may be specified */ 1 35 2 allow_deleted bit (1) unal, /* on if deleted transactions may be specified */ 1 36 2 must_be_deleted bit (1) unal, /* on if must be deleted */ 1 37 2 disallow_unproc bit (1) unal, /* on if unprocessed transaction not valid */ 1 38 2 disallow_meeting bit (1) unal, /* on if -meeting not allowed */ 1 39 2 disallow_reverse bit (1) unal, /* on if -reverse not allowed */ 1 40 2 disallow_idl bit (1) unal, /* on if -include_deleted not allowed */ 1 41 2 dont_read bit (1) unal, /* on if regexps, -sj, -text, userids, time not allowed */ 1 42 2 disallow_initial bit (1) unal, /* on if -initial not allowed */ 1 43 2 default_to_all bit (1) unal, /* on if defaults to all rather than current */ 1 44 2 default_to_unproc bit (1) unal, /* on if defaults to unproc, not current */ 1 45 2 disallow_cmsg bit (1) unal, /* no chairman_message */ 1 46 2 disallow_by_chain bit (1) unal, /* no -by_chain */ 1 47 2 allow_inhibit_error bit (1) unal, /* don't complain if none selected and -ihe given */ 1 48 2 call_on_non_ctl_arg bit (1) unal, /* call request on bad arguments even if not ctl args */ 1 49 2 default_to_none bit (1) unal, /* allow no transactions to be selected */ 1 50 2 create_unproc bit (1) unal, /* allow unproc even if there isn't one */ 1 51 2 padding bit (18) unal; 1 52 1 53 dcl ANY bit (36) aligned init (""b); 1 54 dcl (NON_NULL init ("100000000000000000"b), 1 55 ONLY_ONE init ("010000000000000000"b), 1 56 ALLOW_DELETED init ("001000000000000000"b), 1 57 MUST_BE_DELETED init ("001100000000000000"b), 1 58 DISALLOW_UNPROC init ("000010000000000000"b), 1 59 DISALLOW_MTG init ("000001000000000000"b), 1 60 DISALLOW_REV init ("000000100000000000"b), 1 61 DISALLOW_IDL init ("000000010000000000"b), 1 62 DONT_READ init ("000000001000000000"b), 1 63 DISALLOW_INITIAL init ("000000000100000000"b), 1 64 DEFAULT_TO_ALL init ("000000000010000000"b), 1 65 DEFAULT_TO_UNPROC init ("000000000001000000"b), 1 66 DISALLOW_CMSG init ("000000000000100000"b), 1 67 DISALLOW_BYCHAIN init ("000000000000010000"b), 1 68 ALLOW_IHE init ("000000000000001000"b), 1 69 CALL_ON_BAD_ARGS init ("000000000000000100"b), 1 70 DEFAULT_TO_NONE init ("000000000000000010"b), 1 71 CREATE_UNPROC init ("000000000000000001"b) 1 72 ) bit (18) aligned internal static options (constant); 1 73 1 74 /* ... END INCLUDE FILE forum_trans_list.incl.pl1 ... */ 167 168 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 */ 169 170 3 1 /* START OF: forum_passport.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-03,Margolin), install(86-08-16,MR12.0-1128): 3 8* Added trailer_format. 3 9* END HISTORY COMMENTS */ 3 10 3 11 3 12 declare passport_info_ptr ptr; 3 13 3 14 declare 1 passport aligned based (passport_info_ptr), 3 15 2 version fixed bin, /* 2 */ 3 16 2 forum_idx fixed bin, /* current forum */ 3 17 2 forum_dir char (168) unal, /* where forum lives */ 3 18 2 forum_name char (32) unal, /* Current forum I'm at */ 3 19 2 forum_name_len fixed bin, /* length of forum_name without suffix */ 3 20 2 flags unal, 3 21 3 brief_sw bit (1) unal, /* specified at invocation */ 3 22 3 talk_fill bit (1) unal, /* God knows */ 3 23 3 print_fill bit (1) unal, /* God doesn't know */ 3 24 3 read_only bit (1) unal, 3 25 3 print_message bit (1) unal, /* Print chairman message on talk/reply */ 3 26 3 auto_write bit (1) unal, 3 27 3 mbz bit (30) unal, /* Future expansion */ 3 28 2 current_trans fixed bin, /* current transaction number */ 3 29 2 input_fill_width fixed bin, /* line length used for input filling */ 3 30 2 output_fill_width fixed bin, /* line length used for output filling */ 3 31 2 public_channel fixed bin (71), /* My transaction wakeup channel. */ 3 32 2 area_ptr ptr, /* used for random temporary storage */ 3 33 2 first_trans_ptr ptr, /* ptrs to linked list of transactions copied to */ 3 34 2 last_trans_ptr ptr, /* user ring */ 3 35 2 unprocessed_trans_ptr ptr, /* If this isn't null, we got one pending. */ 3 36 2 unprocessed_reply_trans fixed bin, /* If nonzero, unprocessed trans is a reply. */ 3 37 2 unprocessed_forum_dir char (168), /* Directory containing meeting unproc is for. */ 3 38 2 unprocessed_forum_name char (32), /* Name of meeting unproc is for */ 3 39 2 unprocessed_name_len fixed bin, /* length (w/o suffix) of Name of meeting unproc is for */ 3 40 2 ssu_ptr ptr, /* Department of Redundancy Department. */ 3 41 2 next_passport_ptr ptr, /* list of all invocations */ 3 42 2 trailer_format fixed bin; 3 43 3 44 declare passport_version_2 fixed bin static options (constant) initial (2); 3 45 3 46 declare forum_area area based (passport.area_ptr), 3 47 no_suffix_name char (passport.forum_name_len) based (addr (passport.forum_name)); 3 48 3 49 declare forum_data_$version_string character (8) external, 3 50 forum_data_$central_directory 3 51 character (168) unaligned external, 3 52 forum_data_$info_directory character (168) unaligned external; 3 53 3 54 declare (TFMT_none init (0), 3 55 TFMT_number init (1), 3 56 TFMT_more init (2), 3 57 TFMT_reference init (3)) 3 58 fixed bin static options (constant); 3 59 3 60 /* END OF: forum_passport.incl.pl1 * * * * * * * * * * * * * * * * */ 171 172 4 1 /* BEGIN INCLUDE FILE format_document_options.incl.pl1 4 2* 4 3* Modified 82.10.18 by Paul W. Benjamin to add dont_compress_sw and upgrade 4 4* to version_2. 4 5* Modified 83.02.15 by PWB to add break_word_sw and max_line_length_sw. 4 6* Modified 83.03.01 by PWB to add dont_break_indented_lines_sw. 4 7* Modified 83.03.03 by PWB to add sub_err_sw. 4 8* Modified 83.06.07 by PWB to add dont_fill_sw. 4 9* Modified 83.06.09 by PWB to add hyphenation_sw and syllable_size. 4 10**/ 4 11 4 12 dcl 1 format_document_options aligned based (format_document_options_ptr), 4 13 2 version_number fixed bin, /* input */ 4 14 /* must be format_document_version_2 */ 4 15 2 indentation fixed bin, /* input */ 4 16 /* all lines must be indented by this value */ 4 17 2 line_length fixed bin, /* input */ 4 18 /* initial line length */ 4 19 2 switches, 4 20 3 pgno_sw bit (1) unal, /* input */ 4 21 /* end each page with a centered page number */ 4 22 3 adj_sw bit (1) unal, /* input */ 4 23 /* adjust mode initially on */ 4 24 /* only meaningful if dont_fill_sw = "0"b */ 4 25 3 galley_sw bit (1) unal, /* input */ 4 26 /* galley mode -- no page breaks */ 4 27 3 error_sw bit (1) unal, /* input */ 4 28 /* report all errors on error_output */ 4 29 3 literal_sw bit (1) unal, /* input */ 4 30 /* "1"b - interpret all lines as text */ 4 31 /* "0"b - lines that start with "." are controls */ 4 32 3 file_sw bit (1) unal, /* output */ 4 33 /* has meaning for non-zero storage system status codes */ 4 34 /* "1"b code refers to output file */ 4 35 /* "0"b code refers to input file */ 4 36 3 dont_compress_sw bit (1) unal, /* input */ 4 37 /* "1"b - don't compress white space */ 4 38 /* "0"b - compress white space when filling */ 4 39 3 break_word_sw bit (1) unal, /* input */ 4 40 /* "1"b - break a word rather than exceed line_length */ 4 41 /* "0"b - write an overlength line if no spaces found */ 4 42 3 max_line_length_sw bit (1) unal, /* input */ 4 43 /* "1"b - line_length cannot be exceeded */ 4 44 /* "0"b - line_length can be exceeded (by .pdw controls) */ 4 45 3 dont_break_indented_lines_sw /* input */ 4 46 bit (1) unal, /* don't break a line that begins with whitespace */ 4 47 /* when it is the last line, or the next line is */ 4 48 /* null or the next line begins with whitespace */ 4 49 3 sub_err_sw bit (1) unal, /* input */ 4 50 /* quietly call sub_err_ with diagnostic errors */ 4 51 3 dont_fill_sw bit (1) unal, /* input */ 4 52 /* "1"b - fill mode off initially */ 4 53 /* "0"b - fill mode on initially */ 4 54 3 hyphenation_sw bit (1) unal, 4 55 3 mbz bit (23) unal, /* input */ 4 56 /* MUST be zero */ 4 57 2 syllable_size 4 58 fixed bin; /* input */ 4 59 /* smallest portion of word */ 4 60 /* to be left by hyphenation */ 4 61 4 62 dcl format_document_options_ptr ptr; 4 63 dcl format_document_version_2 fixed bin int static options (constant) init (2); 4 64 dcl format_document_version_1 fixed bin int static options (constant) init (1); 4 65 4 66 /* END INCLUDE FILE format_document_options.incl.pl1 */ 173 174 175 call setup_request (); 176 177 if arg_count = 0 then call ssu_$abort_line (ssu_ptr, 0, "Usage: w trans_specs {-control_args}"); 178 179 extend_switch, header_switch, sep_switch = "1"b; /* add to existing segment by default */ 180 write_switch = "1"b; 181 long_switch = ^passport.brief_sw; 182 fill_index = 0; 183 page_len = 60; 184 page_number = 0; 185 formatted, sep_switch_given = "0"b; 186 separator = "^|"; 187 iocb_ptr = null (); 188 on cleanup call cleanup_handler (); 189 190 parse_flags_word = DEFAULT_TO_UNPROC | NON_NULL; 191 call forum_trans_specs_$parse_specs (passport_info_ptr, 1, parse_flags_word, write_args, temp_idx, forum_dir, 192 forum_name, forum_trans_list_ptr); 193 194 if temp_idx ^= 0 then do; 195 temp_forum = "1"b; /* remember so we can clean up */ 196 forum_idx = temp_idx; 197 end; 198 199 if user_entry = "" then /* default to [wd]>forum_name.trans */ 200 call expand_pathname_$add_suffix (forum_name, "trans", user_dir, user_entry, (0)); 201 202 if formatted & (sep_switch_given | ^header_switch) then 203 call ssu_$abort_line (ssu_ptr, error_table_$inconsistent, """-formatted"" and ""-separator"" or ""-no_header"""); 204 205 if formatted then do; 206 page_len = page_len - 4; 207 current_line = page_len + 1; /* force page break */ 208 if line_len = 0 then line_len = 80; 209 else if line_len < 65 then 210 call ssu_$abort_line (ssu_ptr, 0, "Formatted write must have a line length of at least 65."); 211 fmt_trans_time = date_time_$format ("date_time", clock (), "", ""); 212 call ioa_$rsnnl ("^a^5x^a^vtPage: ^^3d^/^v(_^)", page_header, (0), fmt_trans_time, forum_name, line_len - 8, line_len); 213 end; 214 else do; 215 if line_len = 0 then line_len = 72; 216 if ^header_switch then trailer_format = TFMT_none; 217 end; 218 goto print_write_common; 219 220 221 write_args: /* process write's arguments */ 222 proc (L_arg_idx); 223 224 declare L_arg_idx fixed bin; 225 226 argument_idx = L_arg_idx; 227 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 228 229 if arg = "-pathname" | arg = "-pn" then do; 230 argument_idx = argument_idx + 1; 231 if argument_idx > arg_count then 232 call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Pathname of segment."); 233 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 234 call expand_pathname_$add_suffix (arg, "trans", user_dir, user_entry, code); 235 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Expanding ^a.", arg); 236 end; 237 238 else if arg = "-brief" | arg = "-bf" then long_switch = "0"b; 239 else if arg = "-long" | arg = "-lg" then long_switch = "1"b; 240 else if arg = "-truncate" | arg = "-tc" then extend_switch = "0"b; 241 else if arg = "-extend" then extend_switch = "1"b; 242 else if arg = "-fill" | arg = "-fi" then fill_index = 1; 243 else if arg = "-format" | arg = "-fmt" then do; 244 formatted = "1"b; 245 sep_switch = "0"b; 246 end; 247 else if arg = "-no_format" | arg = "-nfmt" then formatted = "0"b; 248 else if arg = "-header" | arg = "-he" then header_switch = "1"b; 249 else if arg = "-no_header" | arg = "-nhe" then header_switch = "0"b; 250 else if arg = "-line_length" | arg = "-ll" then do; 251 line_len = get_numeric_arg (); 252 if line_len < 40 then call ssu_$abort_line (ssu_ptr, 0, "Line length must be at least 40."); 253 if fill_index = 0 then fill_index = 1; 254 end; 255 else if arg = "-page_length" | arg = "-pl" then do; 256 page_len = get_numeric_arg (); 257 if page_len < 20 then call ssu_$abort_line (ssu_ptr, 0, "Page length must be at least 20"); 258 end; 259 else if arg = "-no_fill" | arg = "-nfi" then fill_index = 2; 260 else if arg = "-separator" | arg = "-sep" then do; 261 if argument_idx = arg_count then 262 call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Following ""^a"".", arg); 263 argument_idx = argument_idx + 1; 264 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 265 if arg_len > maxlength (separator) then call 266 ssu_$abort_line (ssu_ptr, error_table_$bigarg, "The separator must be less than ^d characters.", 267 maxlength (separator)); 268 separator = arg; 269 sep_switch, sep_switch_given = "1"b; 270 end; 271 else if arg = "-no_separator" | arg = "-nsep" then sep_switch = "0"b; 272 else if arg = "-trailer_format" | arg = "-tfmt" then trailer_format = get_trailer_format (); 273 274 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, arg); 275 L_arg_idx = argument_idx; 276 return; 277 278 end write_args; 279 280 get_numeric_arg: 281 procedure returns (fixed bin); 282 283 declare x fixed bin; 284 285 argument_idx = argument_idx + 1; 286 if argument_idx > arg_count then 287 call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Following ""^a"".", arg); 288 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 289 x = cv_dec_check_ (arg, code); 290 if code ^= 0 then call ssu_$abort_line (ssu_ptr, error_table_$bad_conversion, "^a", arg); 291 return (x); 292 end get_numeric_arg; 293 294 list_transactions: /* Entry to list out trans numbers, authors, and date/times */ 295 entry (P_ssu_ptr, P_passport_info_ptr); 296 297 call setup_request (); 298 299 iocb_ptr = iox_$user_output; /* list only goes to terminal */ 300 fill_index = 0; 301 list_switch, update_current = "1"b; 302 header_switch = "1"b; /* print header by default */ 303 sep_switch = "0"b; 304 long_switch = ^passport.brief_sw; 305 306 parse_flags_word = DEFAULT_TO_ALL | DISALLOW_CMSG; 307 if active_function then parse_flags_word = parse_flags_word | ALLOW_IHE; 308 309 on cleanup call cleanup_handler (); 310 call forum_trans_specs_$parse_specs (passport_info_ptr, 1, parse_flags_word, list_args, temp_idx, forum_dir, 311 forum_name, forum_trans_list_ptr); 312 313 if temp_idx ^= 0 then do; 314 temp_forum = "1"b; /* remember so we can clean up */ 315 forum_idx = temp_idx; 316 end; 317 318 if active_function then do; 319 ret_val = ""; 320 do i = 1 to forum_trans_list.size; 321 if forum_trans_list.trans_num (i) = 0 then ret_val = ret_val || "unprocessed "; 322 else ret_val = ret_val || ltrim (char (forum_trans_list.trans_num (i))) || " "; 323 end; 324 call cleanup_handler (); 325 return; 326 end; 327 328 goto print_write_common; 329 330 331 list_args: /* process list's arguments */ 332 proc (L_arg_idx); 333 334 declare L_arg_idx fixed bin; 335 336 argument_idx = L_arg_idx; 337 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 338 339 if active_function then goto BADOPT; 340 if arg = "-brief" | arg = "-bf" then long_switch = "0"b; 341 else if arg = "-header" | arg = "-he" then header_switch = "1"b; 342 else if arg = "-no_header" | arg = "-nhe" then header_switch = "0"b; 343 else if arg = "-long_subject" | arg = "-lgsj" then dont_truncate = "1"b; 344 else if arg = "-output_file" | arg = "-of" then do; 345 argument_idx = argument_idx + 1; 346 if argument_idx > arg_count then 347 call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Pathname of output file."); 348 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 349 call expand_pathname_ (arg, user_dir, user_entry, code); 350 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Expanding ^a.", arg); 351 extend_switch = "1"b; 352 end; 353 else if arg = "-fill" | arg = "-fi" then fill_index = 1; 354 else if arg = "-line_length" | arg = "-ll" then do; 355 line_len = get_numeric_arg (); 356 if line_len < 40 then call ssu_$abort_line (ssu_ptr, 0, "Line length must be at least 40."); 357 if fill_index = 0 then fill_index = 1; 358 end; 359 else if arg = "-long" | arg = "-lg" then long_switch = "1"b; 360 else if arg = "-no_fill" | arg = "-nfi" then fill_index = 2; 361 else if arg = "-no_update" | arg = "-nud" then update_current = "0"b; 362 else if arg = "-update" | arg = "-ud" then update_current = "1"b; 363 else 364 BADOPT: call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 365 366 L_arg_idx = argument_idx; 367 return; 368 end list_args; 369 370 print_transactions: /* Entry to print specified portions of proceedings */ 371 entry (P_ssu_ptr, P_passport_info_ptr); 372 373 call setup_request (); 374 375 fill_index, page_len = 0; 376 print_switch, header_switch = "1"b; 377 separator = ""; 378 sep_switch = "0"b; 379 iocb_ptr = iox_$user_output; /* only sends to terminal */ 380 code = 0; 381 382 on cleanup call cleanup_handler (); 383 parse_flags_word = DEFAULT_TO_UNPROC; 384 call forum_trans_specs_$parse_specs (passport_info_ptr, 1, parse_flags_word, print_args, temp_idx, forum_dir, 385 forum_name, forum_trans_list_ptr); 386 387 if temp_idx ^= 0 then do; 388 temp_forum = "1"b; /* remember so we can cleanup */ 389 forum_idx = temp_idx; 390 end; 391 goto print_write_common; 392 393 print_args: /* process print's arguments */ 394 proc (L_arg_idx); 395 396 declare L_arg_idx fixed bin; 397 398 argument_idx = L_arg_idx; 399 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 400 if arg = "-fill" | arg = "-fi" then fill_index = 1; 401 else if arg = "-line_length" | arg = "-ll" then do; 402 line_len = get_numeric_arg (); 403 if line_len < 40 then call ssu_$abort_line (ssu_ptr, 0, "Line length must be at least 40."); 404 if fill_index = 0 then fill_index = 1; 405 end; 406 else if arg = "-no_fill" | arg = "-nfi" then fill_index = 2; 407 else if arg = "-trailer_format" | arg = "-tfmt" then trailer_format = get_trailer_format (); 408 409 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, arg); 410 L_arg_idx = argument_idx; 411 return; 412 end print_args; 413 414 print_write_common: 415 416 if ^write_switch then do; 417 if line_len = 0 then do; 418 line_len = get_line_length_$switch (iocb_ptr, code); 419 if code ^= 0 | line_len < 72 then do; 420 line_len = 72; 421 dont_truncate = "1"b; 422 code = 0; 423 end; 424 end; 425 if long_switch then sj_width = line_len - 56; 426 else sj_width = line_len - 18 - forum_trans_list.max_personid_len; 427 sj_width = max (sj_width, 6); 428 end; 429 430 call ipc_$cutoff (passport.public_channel, (0)); /* Inhibit 'New transaction' messages */ 431 432 if should_be_filled ("0"b) then 433 call get_temp_segment_ ((owner), prseg_ptr, (0)); /* fill needs some working space */ 434 else prseg_ptr = null (); 435 436 if write_switch then do; /* open output segment */ 437 call hcs_$status_minf (user_dir, user_entry, (0), (0), (0), code); 438 if code = error_table_$noentry then extend_switch = "0"b; 439 code = 0; 440 call open_iocb (); 441 442 if long_switch then 443 call ioa_ ("^[Append^;Writ^]ing ^d transaction^[s^] to ^a>^a.", extend_switch, forum_trans_list.size, 444 (forum_trans_list.size > 1), user_dir, user_entry); 445 if extend_switch & formatted then call ioa_$ioa_switch_nnl (iocb_ptr, "^|"); 446 end; 447 else if user_entry ^= "" then call open_iocb (); 448 449 if list_switch then do; 450 if header_switch then do; 451 if long_switch then call ioa_$ioa_switch (iocb_ptr, "Trans# Lines Date Time Author^56tSubject"); 452 else call ioa_$ioa_switch (iocb_ptr, "Trans# Lines Author^vtSubject", line_len - sj_width); 453 end; 454 455 if update_current then do; 456 do tidx = 1 to forum_trans_list.size while (update_current); 457 if forum_trans_list.trans_num (tidx) = passport.current_trans then update_current = "0"b; 458 end; 459 if update_current & forum_trans_list.trans_num (1) > 0 then 460 passport.current_trans = forum_trans_list.trans_num (1); 461 end; 462 end; 463 464 fdoc.version_number = format_document_version_2; 465 fdoc.indentation = 0; 466 fdoc.line_length = line_len; 467 string (fdoc.switches) = ""b; 468 fdoc.galley_sw, fdoc.literal_sw, fdoc.dont_break_indented_lines_sw = "1"b; 469 fdoc.syllable_size = 3; /* Make fdoc happy */ 470 471 do tidx = 1 to forum_trans_list.size; /* do the output */ 472 call output_transaction (iocb_ptr, 473 forum_trans_list.trans_num (tidx), 474 forum_trans_list.list.pref (tidx), 475 forum_trans_list.list.nref (tidx), 476 forum_trans_list.list.flags.deleted (tidx)); 477 end; 478 if formatted then call new_page ("1"b, "0"b); /* spit out footer */ 479 480 call cleanup_handler (); /* cleanup everything else */ 481 return; 482 483 open_iocb: 484 proc (); 485 486 declare iocb_name char (32); 487 488 call ioa_$rsnnl ("vfile_ ""^a>^a"" ^[-extend^]", message, messlen, user_dir, user_entry, (extend_switch)); 489 490 iocb_name = request_id_ (clock ()) || ".forum"; 491 call iox_$attach_name (iocb_name, iocb_ptr, message, null (), code); 492 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Attaching iocb."); 493 494 call iox_$open (iocb_ptr, 2, ""b, code); 495 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Opening iocb."); 496 497 return; 498 end open_iocb; 499 500 output_transaction: /* Internal procedure to output specified transactions */ 501 procedure (iocb_ptr, trans_index, pref, nref, deleted); 502 503 declare (iocb_ptr pointer, 504 trans_index fixed binary, 505 (nref, pref) fixed binary unaligned, 506 deleted bit (1) unaligned) parameter; 507 508 declare (pref_pic, nref_pic) pic "zz9999"; 509 510 if trans_index = -1 then do; /* Chairman message */ 511 call forum_$get_message (forum_idx, message, code); 512 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code); 513 call ioa_$ioa_switch_nnl (iocb_ptr, "^a", message); 514 return; 515 end; 516 /* get the transaction */ 517 call forum_trans_util_$read_trans (passport_info_ptr, temp_idx, trans_index, forum_user_trans_ptr, code); 518 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Transaction ^d.", trans_index); 519 520 trans_pic = trans_index; 521 call date_time_ (forum_user_trans.time, trans_time); 522 fmt_trans_time = date_time_$format ("date_time", forum_user_trans.time, "", ""); 523 524 if should_be_filled (forum_user_trans.unfilled) then do; 525 call format_document_$string (forum_user_trans.text, fill_seg, fill_len, addr (fdoc), code); 526 if code ^= 0 & code ^= error_table_$recoverable_error then 527 call ssu_$abort_line (ssu_ptr, code, "Filling transaction."); 528 text_ptr = prseg_ptr; 529 end; 530 else do; 531 fill_len = forum_user_trans.text_length; 532 text_ptr = addr (forum_user_trans.text); 533 end; 534 no_lines = line_count (text, fill_len); 535 536 if ^list_switch then do; 537 538 if ^temp_forum & trans_index ^= 0 then passport.current_trans = trans_index; 539 /* don't set current to unproc */ 540 if formatted & current_line + no_lines + 4 >= page_len then call new_page ("0"b, "0"b); 541 542 if header_switch then do; 543 if trans_index = 0 then 544 call ioa_$ioa_switch (iocb_ptr, "^/[????] (^d line^[s^]) ^a.^a **UNPROCESSED**^[ ^a^]", no_lines, 545 (no_lines ^= 1), forum_user_trans.person_id, forum_user_trans.project_id, 546 ^formatted, substr (passport.unprocessed_forum_name, 1, passport.unprocessed_name_len)); 547 548 else call ioa_$ioa_switch (iocb_ptr, "^/[^a] (^i line^[s^]) ^a.^a ^a^[ ^a^]", ltrim (trans_pic), no_lines, 549 (no_lines ^= 1), forum_user_trans.person_id, forum_user_trans.project_id, fmt_trans_time, ^formatted, forum_name); 550 551 if forum_user_trans.subject ^= "" then do; 552 if forum_user_trans.subject_length > line_len - 10 then call format_subject (); 553 else call ioa_$ioa_switch (iocb_ptr, "Subject: ^a", forum_user_trans.subject); 554 end; 555 end; 556 557 if formatted & 558 ((no_lines > page_len - 4) | (index (text, FF) > 0)) then call print_split (); 559 else do; 560 call ioa_$ioa_switch_nnl (iocb_ptr, "^a", text); 561 current_line = current_line + no_lines + 4; 562 end; 563 564 if trans_index = 0 then pref = passport.unprocessed_reply_trans; 565 pref_pic = pref; 566 nref_pic = nref; 567 call ioa_$ioa_switch_nnl (iocb_ptr, "^[---[^[^s????^;^a^]]---^[ (^[pref = [^a]^[, nref = [^a]) ^;^s) ^]^;^s^snref = [^a]) ^]^;^4s^]^[ (more)^]^;^8s^]^[" || separator || "^;^[^/^]^]", 568 (trailer_format > TFMT_none), 569 (trans_index = 0), ltrim (trans_pic), 570 ((pref ^= 0) | (nref ^= 0)) & trailer_format = TFMT_reference, 571 (pref ^= 0), ltrim (pref_pic), (nref ^= 0), ltrim (nref_pic), 572 ((trailer_format = TFMT_more) & (nref ^= 0)), 573 sep_switch, (trailer_format > TFMT_none)); 574 575 if print_switch then call iox_$control (iox_$user_output, "reset_more", null (), (0)); 576 577 if trans_index ^= 0 then do; 578 if forum_idx < 0 then 579 call forum_$set_seen_switch (forum_idx, "", trans_index, "1"b, code); 580 else call forum_$set_last_seen_idx (forum_idx, trans_index, "0"b, code); 581 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Setting seen switch."); 582 end; 583 584 end; /* ^list */ 585 586 else do; /* list */ 587 if ^long_switch then control = "[^[????^s^;^a^]]^[*^s^;^[!^; ^]^]^9t(^d)^16t^3s^a^s^vt^[^a^s^;^s^a^v.0t^]"; 588 else do; 589 /* TR21386: Fix list request to generate valid summary for unproc trans */ 590 if trans_index = 0 then control = "^4s[????] (^d)^16t**UNPROCESSED**^32t^3s"; 591 else control = "^s[^a]^[*^s^;^[!^; ^]^]^9t(^i)^16t^8a ^2a:^2a "; 592 control = control || "^a.^a^s^56t^[^a^s^;^s^a^v.0t^]"; 593 end; 594 call ioa_$ioa_switch (iocb_ptr, control, (trans_index = 0), ltrim (trans_pic), 595 (trans_index = passport.current_trans), deleted, no_lines, substr (trans_time, 1, 8), 596 substr (trans_time, 11, 2), substr (trans_time, 13, 2), forum_user_trans.person_id, 597 forum_user_trans.project_id, line_len - sj_width, 598 (length (rtrim (forum_user_trans.subject)) <= sj_width | dont_truncate), 599 forum_user_trans.subject, substr (forum_user_trans.subject, 1, sj_width - 6), sj_width); 600 end; 601 return; 602 end output_transaction; 603 604 print_split: 605 proc (); 606 607 declare (idx, jdx) fixed bin, 608 found_ff bit (1) aligned; 609 610 idx = split (text, fill_len, page_len - 4); /* header already printed */ 611 current_line = current_line + 3; 612 613 do while ("1"b); 614 jdx = index (substr (text, 1, idx), FF); 615 if jdx > 0 then do; 616 found_ff = "1"b; 617 idx = jdx - 1; 618 do while (substr (text, jdx + 1, 1) = NL); 619 jdx = jdx + 1; /* Skip NL's after FF, not needed. */ 620 end; 621 current_line = current_line + line_count (text, (idx)); 622 end; 623 else do; 624 jdx = idx; 625 found_ff = "0"b; 626 end; 627 628 call ioa_$ioa_switch_nnl (iocb_ptr, "^a", substr (text, 1, idx)); 629 if jdx = fill_len then do; 630 current_line = line_count (text, (idx)) + 2; 631 return; 632 end; 633 634 call new_page ("0"b, ^found_ff); 635 call ioa_$ioa_switch (iocb_ptr, ""); /* blank line after header */ 636 current_line = 1; 637 text_ptr = addcharno (text_ptr, jdx); 638 fill_len = fill_len - jdx; 639 idx = split (text, fill_len, page_len - 2); 640 end; 641 end print_split; 642 643 line_count: 644 proc (string, len) returns (fixed bin); 645 646 declare string char (*), 647 (len, kdx) fixed bin (21), 648 P_max fixed bin, 649 (count, max) fixed bin, 650 (idx, jdx) fixed bin; 651 652 max = 100000; 653 goto COMMON; 654 655 split: entry (string, len, P_max) returns (fixed bin); 656 657 max = P_max; 658 COMMON: 659 660 /* 524288 = 128K words of characters */ 661 662 if len > 524288 then return (max); 663 idx, count = 0; 664 kdx = len; 665 666 begin; 667 668 declare 1 text, 669 2 used char (idx), 670 2 after char (kdx); 671 672 text = string; 673 do while (kdx > 0 & count < max); 674 jdx = index (after, NL); 675 if jdx = 0 then kdx = -1; 676 else do; 677 idx = idx + jdx; 678 kdx = kdx - jdx; 679 count = count + 1; 680 end; 681 end; 682 end; 683 if max = 100000 then return (count); 684 if kdx = -1 then idx = len; 685 return (idx); 686 687 end line_count; 688 689 690 new_page: 691 proc (last_page, in_trans); 692 693 declare (last_page, in_trans) bit (1) aligned, 694 blanks fixed bin; 695 696 if page_number > 0 then do; /* write footer */ 697 if in_trans then blanks = 1; 698 else blanks = page_len - current_line; 699 call ioa_$ioa_switch_nnl (iocb_ptr, "^v(^/^)^v(_^)^/Subject: ^a^[^|^]", blanks, line_len, 700 substr (page_subject, 1, min (72, line_len) - 9), ^last_page); 701 end; 702 703 if last_page then return; 704 page_number = page_number + 1; 705 current_line = 0; 706 page_subject = forum_user_trans.subject; 707 call ioa_$ioa_switch (iocb_ptr, rtrim (page_header), page_number); 708 709 return; 710 end new_page; 711 712 format_subject: 713 proc (); 714 715 declare 1 fdo aligned like format_document_options, 716 subject_lines fixed bin, 717 temp char (2 * forum_user_trans.subject_length), 718 temp_len fixed bin (21); 719 720 fdo.version_number = format_document_version_2; 721 fdo.indentation = 10; 722 fdo.line_length = line_len - 10; 723 string (fdo.switches) = ""b; 724 fdo.literal_sw, fdo.galley_sw, fdo.dont_compress_sw, fdo.dont_break_indented_lines_sw = "1"b; 725 fdo.syllable_size = 3; /* Make fdoc happy */ 726 727 call format_document_$string (forum_user_trans.subject, temp, temp_len, addr (fdo), code); 728 if (code ^= 0) & code ^= error_table_$recoverable_error then 729 call ssu_$abort_line (ssu_ptr, code, "Unable to format subject."); 730 731 if formatted then do; /* account for multi-line subject */ 732 subject_lines = line_count (temp, temp_len) - 1; /* -1 because we already counted subject as one line */ 733 current_line = current_line + subject_lines; 734 no_lines = no_lines + subject_lines; 735 end; 736 737 call ioa_$ioa_switch (iocb_ptr, "Subject: ^a", substr (temp, 11, temp_len - 11)); 738 return; 739 end format_subject; 740 741 delete_transactions: /* Entry to allow chairman to logically remove */ 742 entry (P_ssu_ptr, P_passport_info_ptr); /* and retrieve transactions */ 743 744 delete_switch = "1"b; 745 goto DLRT_COMMON; 746 747 retrieve_transactions: 748 entry (P_ssu_ptr, P_passport_info_ptr); 749 750 delete_switch = "0"b; 751 DLRT_COMMON: 752 call setup_request (); 753 754 on cleanup call cleanup_handler (); 755 parse_flags_word = NON_NULL | DISALLOW_MTG | DISALLOW_REV | DISALLOW_IDL | DISALLOW_BYCHAIN; 756 757 if ^delete_switch then 758 parse_flags_word = parse_flags_word | MUST_BE_DELETED | DISALLOW_UNPROC | DISALLOW_CMSG; 759 else parse_flags_word = parse_flags_word | ALLOW_DELETED; 760 761 call forum_trans_specs_$parse_specs (passport_info_ptr, 1, parse_flags_word, delete_args, temp_idx, forum_dir, 762 forum_name, forum_trans_list_ptr); 763 764 current_switch = "0"b; 765 do tidx = 1 to forum_trans_list.size; 766 i = forum_trans_list.trans_num (tidx); 767 if i = 0 then call delete_unproc (); 768 else if i = -1 then do; 769 call forum_$set_message (forum_idx, "", code); 770 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Deleting message."); 771 end; 772 else do; 773 call forum_$set_delete_sw (forum_idx, i, delete_switch, code); 774 if code ^= 0 then 775 call ssu_$print_message (ssu_ptr, code, "Setting delete switch on transaction ^d.", i); 776 if delete_switch then 777 if i = passport.current_trans then current_switch = "1"b; /* oops, deleted current */ 778 end; 779 end; 780 781 if current_switch then do; /* set current to next undeleted transaction */ 782 do tidx = passport.current_trans repeat tidx + 1 while (current_switch & delete_switch); 783 call forum_$trans_ref_info (forum_idx, tidx, (0), (0), (0), delete_switch, code); 784 if code = forum_et_$invalid_trans_idx then current_switch = "0"b; 785 else if code = forum_et_$trans_reaped 786 then do; 787 delete_switch = "1"b; /* expluge is very deleted */ 788 current_switch = "0"b; 789 end; 790 else if code ^= 0 then call ssu_$abort_line (ssu_ptr, code); 791 end; 792 if current_switch then passport.current_trans = tidx - 1; 793 else do; 794 passport.current_trans = 0; 795 call forum_$forum_limits (forum_idx, ONLY_UNDELETED, (0), (0), tidx, (0), ("0"b), code); 796 if code ^= 0 then do; 797 call ssu_$abort_line (ssu_ptr, code); 798 end; 799 end; 800 end; 801 802 call cleanup_handler; 803 return; 804 805 delete_args: /* process dl/rt args - there aren't any */ 806 proc (L_arg_idx); 807 808 declare L_arg_idx fixed bin; 809 810 call ssu_$arg_ptr (ssu_ptr, L_arg_idx, arg_ptr, arg_len); 811 call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 812 return; 813 end delete_args; 814 815 816 delete_unproc: 817 proc (); 818 819 free passport.unprocessed_trans_ptr -> forum_user_trans; 820 passport.unprocessed_reply_trans = 0; 821 passport.unprocessed_forum_dir = ""; 822 passport.unprocessed_forum_name = ""; 823 return; 824 end delete_unproc; 825 826 reset_transaction: /* Entry to allow user to reset current trans index */ 827 entry (P_ssu_ptr, P_passport_info_ptr); 828 829 call setup_request (); 830 831 current_switch = "1"b; /* reset current by default */ 832 833 parse_flags_word = ONLY_ONE | NON_NULL | DISALLOW_MTG | DISALLOW_REV | DISALLOW_IDL | DISALLOW_UNPROC | 834 DISALLOW_BYCHAIN | DISALLOW_CMSG; 835 i = 0; 836 837 on cleanup call cleanup_handler (); 838 839 call forum_trans_specs_$parse_specs (passport_info_ptr, 1, parse_flags_word, reset_args, temp_idx, forum_dir, 840 forum_name, forum_trans_list_ptr); 841 842 tidx = forum_trans_list.trans_num (1); 843 844 if i = 0 then passport.current_trans = tidx; 845 else if i = 2 then passport.current_trans = tidx - 1; 846 else do; 847 if i = 1 then tidx = tidx + 1; 848 if forum_idx > 0 then do; 849 call forum_$set_last_seen_idx (forum_idx, tidx - 1, "1"b, code); 850 if code ^= 0 then call ssu_$abort_line (ssu_ptr, code, "Setting highest seen."); 851 end; 852 else call ssu_$abort_line (ssu_ptr, 0, "reset -^[highest^;new^] is obsolete, use seen switches instead.", 853 i = 1); 854 end; 855 call cleanup_handler (); 856 return; 857 858 reset_args: /* process reset's arg */ 859 proc (L_arg_idx); 860 861 declare L_arg_idx fixed bin; 862 863 argument_idx = L_arg_idx; 864 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 865 866 if arg = "-current" then i = 0; 867 else if arg = "-highest" then i = 1; 868 else if arg = "-next" then i = 2; 869 else if arg = "-new" then i = 3; 870 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, arg); 871 return; 872 end reset_args; 873 874 should_be_filled: 875 proc (filled_bit) returns (bit (1)); 876 877 declare filled_bit bit (1) aligned; 878 879 if fill_index = 1 then return ("1"b); 880 if fill_index = 2 then return ("0"b); 881 if passport.print_fill then return (^filled_bit); 882 return ("0"b); 883 884 end; 885 886 get_trailer_format: 887 procedure () returns (fixed bin); 888 889 if argument_idx = arg_count then 890 call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Following ^a.", arg); 891 argument_idx = argument_idx + 1; 892 call ssu_$arg_ptr (ssu_ptr, argument_idx, arg_ptr, arg_len); 893 894 if arg = "none" then return (TFMT_none); 895 else if arg = "number" | arg = "nb" then return (TFMT_number); 896 else if arg = "more" then return (TFMT_more); 897 else if arg = "references" | arg = "refs" then return (TFMT_reference); 898 else call ssu_$abort_line (ssu_ptr, 0, "Invalid trailer format: ^a.", arg); 899 900 end get_trailer_format; 901 902 setup_request: 903 procedure (); 904 905 ssu_ptr = P_ssu_ptr; 906 passport_info_ptr = P_passport_info_ptr; 907 call ssu_$return_arg (ssu_ptr, arg_count, active_function, ret_ptr, ret_len); 908 owner = ssu_$get_subsystem_and_request_name (ssu_ptr); 909 910 forum_idx = passport.forum_idx; 911 forum_name = no_suffix_name; 912 temp_forum, formatted, dont_truncate = "0"b; 913 temp_idx = 0; 914 line_len = passport.output_fill_width; 915 write_switch, print_switch, list_switch = "0"b; 916 user_entry = ""; 917 forum_trans_list_ptr, iocb_ptr, prseg_ptr = null (); 918 trailer_format = passport.trailer_format; 919 return; 920 921 end setup_request; 922 923 cleanup_handler: 924 procedure (); 925 926 if temp_forum then call forum_$close_forum (forum_idx, (0)); 927 928 if iocb_ptr ^= iox_$user_output & iocb_ptr ^= null () then do; 929 call iox_$close (iocb_ptr, (0)); 930 call iox_$detach_iocb (iocb_ptr, (0)); 931 call iox_$destroy_iocb (iocb_ptr, (0)); 932 end; 933 934 call ipc_$reconnect (passport.public_channel, (0)); 935 if prseg_ptr ^= null then call release_temp_segment_ (owner, prseg_ptr, (0)); 936 937 if forum_trans_list_ptr ^= null () then free forum_trans_list; 938 939 return; 940 end cleanup_handler; 941 942 end forum_output_requests_$write_transactions; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/27/92 1032.0 forum_output_requests_.pl1 >spec>install>MR12.5-1014>forum_output_requests_.pl1 167 1 04/27/92 1033.8 forum_trans_list.incl.pl1 >spec>install>MR12.5-1014>forum_trans_list.incl.pl1 169 2 10/31/84 1215.4 forum_user_trans.incl.pl1 >ldd>incl>forum_user_trans.incl.pl1 171 3 08/16/86 1638.0 forum_passport.incl.pl1 >ldd>incl>forum_passport.incl.pl1 173 4 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. ALLOW_DELETED constant bit(18) initial dcl 1-54 ref 759 ALLOW_IHE constant bit(18) initial dcl 1-54 ref 307 ANY 001045 automatic bit(36) initial dcl 1-53 set ref 1-53* DEFAULT_TO_ALL constant bit(18) initial dcl 1-54 ref 306 DEFAULT_TO_UNPROC constant bit(18) initial dcl 1-54 ref 190 383 DISALLOW_BYCHAIN constant bit(18) initial dcl 1-54 ref 755 833 DISALLOW_CMSG constant bit(18) initial dcl 1-54 ref 306 757 833 DISALLOW_IDL constant bit(18) initial dcl 1-54 ref 755 833 DISALLOW_MTG constant bit(18) initial dcl 1-54 ref 755 833 DISALLOW_REV constant bit(18) initial dcl 1-54 ref 755 833 DISALLOW_UNPROC constant bit(18) initial dcl 1-54 ref 757 833 FF constant char(1) initial packed unaligned dcl 105 ref 557 614 L_arg_idx parameter fixed bin(17,0) dcl 334 in procedure "list_args" set ref 331 336 366* L_arg_idx parameter fixed bin(17,0) dcl 808 in procedure "delete_args" set ref 805 810* L_arg_idx parameter fixed bin(17,0) dcl 224 in procedure "write_args" set ref 221 226 275* L_arg_idx parameter fixed bin(17,0) dcl 861 in procedure "reset_args" ref 858 863 L_arg_idx parameter fixed bin(17,0) dcl 396 in procedure "print_args" set ref 393 398 410* MUST_BE_DELETED constant bit(18) initial dcl 1-54 ref 757 NL 011750 constant char(1) initial packed unaligned dcl 103 ref 618 674 NON_NULL constant bit(18) initial dcl 1-54 ref 190 755 833 ONLY_ONE constant bit(18) initial dcl 1-54 ref 833 ONLY_UNDELETED 000105 constant fixed bin(17,0) initial dcl 2-24 set ref 795* P_max parameter fixed bin(17,0) dcl 646 ref 655 657 P_passport_info_ptr parameter pointer dcl 53 ref 31 294 370 741 747 826 906 P_ssu_ptr parameter pointer dcl 53 ref 31 294 370 741 747 826 905 TFMT_more constant fixed bin(17,0) initial dcl 3-54 ref 567 896 TFMT_none constant fixed bin(17,0) initial dcl 3-54 ref 216 567 567 894 TFMT_number constant fixed bin(17,0) initial dcl 3-54 ref 895 TFMT_reference constant fixed bin(17,0) initial dcl 3-54 ref 567 897 active_function 000101 automatic bit(1) dcl 56 set ref 307 318 339 907* addcharno builtin function dcl 163 ref 637 addr builtin function dcl 163 ref 525 525 532 727 727 911 after 000100 automatic char level 2 packed packed unaligned dcl 668 set ref 674 arg based char packed unaligned dcl 101 set ref 229 229 234* 235* 238 238 239 239 240 240 241 242 242 243 243 247 247 248 248 249 249 250 250 255 255 259 259 260 260 261* 268 271 271 272 272 274* 286* 289* 290* 340 340 341 341 342 342 343 343 344 344 349* 350* 353 353 354 354 359 359 360 360 361 361 362 362 363* 400 400 401 401 406 406 407 407 409* 811* 866 867 868 869 870* 889* 894 895 895 896 897 897 898* arg_count 000105 automatic fixed bin(17,0) dcl 56 set ref 177 231 261 286 346 889 907* arg_len 000106 automatic fixed bin(17,0) dcl 56 set ref 227* 229 229 233* 234 234 235 235 238 238 239 239 240 240 241 242 242 243 243 247 247 248 248 249 249 250 250 255 255 259 259 260 260 261 261 264* 265 268 271 271 272 272 274 274 286 286 288* 289 289 290 290 337* 340 340 341 341 342 342 343 343 344 344 348* 349 349 350 350 353 353 354 354 359 359 360 360 361 361 362 362 363 363 399* 400 400 401 401 406 406 407 407 409 409 810* 811 811 864* 866 867 868 869 870 870 889 889 892* 894 895 895 896 897 897 898 898 arg_ptr 000110 automatic pointer dcl 56 set ref 227* 229 229 233* 234 235 238 238 239 239 240 240 241 242 242 243 243 247 247 248 248 249 249 250 250 255 255 259 259 260 260 261 264* 268 271 271 272 272 274 286 288* 289 290 337* 340 340 341 341 342 342 343 343 344 344 348* 349 350 353 353 354 354 359 359 360 360 361 361 362 362 363 399* 400 400 401 401 406 406 407 407 409 810* 811 864* 866 867 868 869 870 889 892* 894 895 895 896 897 897 898 argument_idx 000100 automatic fixed bin(17,0) dcl 56 set ref 226* 227* 230* 230 231 233* 261 263* 263 264* 275 285* 285 286 288* 336* 337* 345* 345 346 348* 366 398* 399* 410 863* 864* 889 891* 891 892* blanks 001126 automatic fixed bin(17,0) dcl 693 set ref 697* 698* 699* brief_sw 65 based bit(1) level 3 packed packed unaligned dcl 3-14 ref 181 304 char builtin function dcl 163 ref 322 cleanup 001034 stack reference condition dcl 163 ref 188 309 382 754 837 clock builtin function dcl 163 ref 211 211 490 490 code 000114 automatic fixed bin(35,0) dcl 56 set ref 234* 235 235* 289* 290 349* 350 350* 380* 418* 419 422* 437* 438 439* 491* 492 492* 494* 495 495* 511* 512 512* 517* 518 518* 525* 526 526 526* 578* 580* 581 581* 727* 728 728 728* 769* 770 770* 773* 774 774* 783* 784 785 790 790* 795* 796 797* 849* 850 850* control 000505 automatic varying char(80) dcl 56 set ref 587* 590* 591* 592* 592 594* count 000101 automatic fixed bin(17,0) dcl 646 set ref 663* 673 679* 679 683 current_line 000351 automatic fixed bin(17,0) dcl 56 set ref 207* 540 561* 561 611* 611 621* 621 630* 636* 698 705* 733* 733 current_switch 000207 automatic bit(1) dcl 56 set ref 764* 776* 781 782 784* 788* 792 831* current_trans 66 based fixed bin(17,0) level 2 dcl 3-14 set ref 457 459* 538* 594 776 782 792* 794* 844* 845* cv_dec_check_ 000046 constant entry external dcl 119 ref 289 date_time_ 000062 constant entry external dcl 119 ref 521 date_time_$format 000064 constant entry external dcl 119 ref 211 522 delete_switch 000205 automatic bit(1) dcl 56 set ref 744* 750* 757 773* 776 782 783* 787* deleted 5 based bit(1) array level 4 in structure "forum_trans_list" packed packed unaligned dcl 1-18 in procedure "forum_output_requests_$write_transactions" set ref 472* deleted parameter bit(1) packed unaligned dcl 503 in procedure "output_transaction" set ref 500 594* dont_break_indented_lines_sw 3(09) 000100 automatic bit(1) level 3 in structure "fdo" packed packed unaligned dcl 715 in procedure "format_subject" set ref 724* dont_break_indented_lines_sw 3(09) 001026 automatic bit(1) level 3 in structure "fdoc" packed packed unaligned dcl 102 in procedure "forum_output_requests_$write_transactions" set ref 468* dont_compress_sw 3(06) 000100 automatic bit(1) level 3 packed packed unaligned dcl 715 set ref 724* dont_truncate 000212 automatic bit(1) dcl 56 set ref 343* 421* 594 912* error_table_$bad_conversion 000010 external static fixed bin(35,0) dcl 107 set ref 290* error_table_$badopt 000012 external static fixed bin(35,0) dcl 107 set ref 274* 363* 409* 811* 870* error_table_$bigarg 000014 external static fixed bin(35,0) dcl 107 set ref 265* error_table_$inconsistent 000016 external static fixed bin(35,0) dcl 107 set ref 202* error_table_$noarg 000020 external static fixed bin(35,0) dcl 107 set ref 231* 261* 286* 346* 889* error_table_$noentry 000022 external static fixed bin(35,0) dcl 107 ref 438 error_table_$recoverable_error 000024 external static fixed bin(35,0) dcl 107 ref 526 728 expand_pathname_ 000056 constant entry external dcl 119 ref 349 expand_pathname_$add_suffix 000060 constant entry external dcl 119 ref 199 234 extend_switch 000201 automatic bit(1) dcl 56 set ref 179* 240* 241* 351* 438* 442* 445 488 fdo 000100 automatic structure level 1 dcl 715 set ref 727 727 fdoc 001026 automatic structure level 1 dcl 102 set ref 525 525 fill_index 000177 automatic fixed bin(17,0) dcl 56 set ref 182* 242* 253 253* 259* 300* 353* 357 357* 360* 375* 400* 404 404* 406* 879 880 fill_len 000504 automatic fixed bin(21,0) dcl 56 set ref 525* 531* 534 534 534* 557 560 560 610 610 610* 614 618 621 621 628 628 629 630 630 638* 638 639 639 639* fill_seg based char(1044480) packed unaligned dcl 56 set ref 525* filled_bit parameter bit(1) dcl 877 ref 874 881 flags 65 based structure level 2 in structure "passport" packed packed unaligned dcl 3-14 in procedure "forum_output_requests_$write_transactions" flags 5 based structure array level 3 in structure "forum_trans_list" packed packed unaligned dcl 1-18 in procedure "forum_output_requests_$write_transactions" fmt_trans_time 000224 automatic varying char(250) dcl 56 set ref 211* 212* 522* 548* format_document_$string 000110 constant entry external dcl 119 ref 525 727 format_document_options based structure level 1 dcl 4-12 format_document_version_2 constant fixed bin(17,0) initial dcl 4-63 ref 464 720 formatted 000206 automatic bit(1) dcl 56 set ref 185* 202 205 244* 247* 445 478 540 543 548 557 731 912* forum_$close_forum 000112 constant entry external dcl 119 ref 926 forum_$forum_limits 000114 constant entry external dcl 119 ref 795 forum_$get_message 000116 constant entry external dcl 119 ref 511 forum_$set_delete_sw 000120 constant entry external dcl 119 ref 773 forum_$set_last_seen_idx 000122 constant entry external dcl 119 ref 580 849 forum_$set_message 000124 constant entry external dcl 119 ref 769 forum_$set_seen_switch 000126 constant entry external dcl 119 ref 578 forum_$trans_ref_info 000130 constant entry external dcl 119 ref 783 forum_dir 000115 automatic char(168) packed unaligned dcl 56 set ref 191* 310* 384* 761* 839* forum_et_$invalid_trans_idx 000026 external static fixed bin(35,0) dcl 107 ref 784 forum_et_$trans_reaped 000030 external static fixed bin(35,0) dcl 107 ref 785 forum_idx 1 based fixed bin(17,0) level 2 in structure "passport" dcl 3-14 in procedure "forum_output_requests_$write_transactions" ref 910 forum_idx 000113 automatic fixed bin(17,0) dcl 56 in procedure "forum_output_requests_$write_transactions" set ref 196* 315* 389* 511* 578 578* 580* 769* 773* 783* 795* 848 849* 910* 926* forum_name 54 based char(32) level 2 in structure "passport" packed packed unaligned dcl 3-14 in procedure "forum_output_requests_$write_transactions" set ref 911 forum_name 000167 automatic char(32) packed unaligned dcl 56 in procedure "forum_output_requests_$write_transactions" set ref 191* 199* 212* 310* 384* 548* 761* 839* 911* forum_name_len 64 based fixed bin(17,0) level 2 dcl 3-14 ref 911 forum_trans_list based structure level 1 dcl 1-18 set ref 937 forum_trans_list_ptr 001042 automatic pointer dcl 1-15 set ref 191* 310* 320 321 322 384* 426 442 442 456 457 459 459 471 472 472 472 472 761* 765 766 839* 842 917* 937 937 forum_trans_specs_$parse_specs 000132 constant entry external dcl 119 ref 191 310 384 761 839 forum_trans_util_$read_trans 000134 constant entry external dcl 119 ref 517 forum_user_trans based structure level 1 dcl 2-7 set ref 819 forum_user_trans_ptr 001046 automatic pointer dcl 2-5 set ref 517* 521 522 524 525 531 532 543 543 548 548 551 552 553 594 594 594 594 594 594 706 715 727 found_ff 001116 automatic bit(1) dcl 607 set ref 616* 625* 634 galley_sw 3(02) 000100 automatic bit(1) level 3 in structure "fdo" packed packed unaligned dcl 715 in procedure "format_subject" set ref 724* galley_sw 3(02) 001026 automatic bit(1) level 3 in structure "fdoc" packed packed unaligned dcl 102 in procedure "forum_output_requests_$write_transactions" set ref 468* get_line_length_$switch 000050 constant entry external dcl 119 ref 418 get_temp_segment_ 000066 constant entry external dcl 119 ref 432 hcs_$status_minf 000052 constant entry external dcl 119 ref 437 header_switch 000202 automatic bit(1) dcl 56 set ref 179* 202 216 248* 249* 302* 341* 342* 376* 450 542 i 001023 automatic fixed bin(17,0) dcl 56 set ref 320* 321 322* 766* 767 768 773* 774* 776 835* 844 845 847 852 866* 867* 868* 869* idx 001114 automatic fixed bin(17,0) dcl 607 in procedure "print_split" set ref 610* 614 617* 621 624 628 628 630 639* idx 000103 automatic fixed bin(17,0) dcl 646 in procedure "line_count" set ref 663* 668 672 672 674 677* 677 684* 685 in_trans parameter bit(1) dcl 693 ref 690 697 indentation 1 001026 automatic fixed bin(17,0) level 2 in structure "fdoc" dcl 102 in procedure "forum_output_requests_$write_transactions" set ref 465* indentation 1 000100 automatic fixed bin(17,0) level 2 in structure "fdo" dcl 715 in procedure "format_subject" set ref 721* index builtin function dcl 163 ref 557 614 674 ioa_ 000100 constant entry external dcl 119 ref 442 ioa_$ioa_switch 000104 constant entry external dcl 119 ref 451 452 543 548 553 594 635 707 737 ioa_$ioa_switch_nnl 000106 constant entry external dcl 119 ref 445 513 560 567 628 699 ioa_$rsnnl 000102 constant entry external dcl 119 ref 212 488 iocb_name 001064 automatic char(32) packed unaligned dcl 486 set ref 490* 491* iocb_ptr 000324 automatic pointer dcl 56 in procedure "forum_output_requests_$write_transactions" set ref 187* 299* 379* 418* 445* 451* 452* 472* 491* 494* 628* 635* 699* 707* 737* 917* 928 928 929* 930* 931* iocb_ptr parameter pointer dcl 503 in procedure "output_transaction" set ref 500 513* 543* 548* 553* 560* 567* 594* iox_$attach_name 000042 constant entry external dcl 119 ref 491 iox_$close 000034 constant entry external dcl 119 ref 929 iox_$control 000036 constant entry external dcl 119 ref 575 iox_$destroy_iocb 000044 constant entry external dcl 119 ref 931 iox_$detach_iocb 000040 constant entry external dcl 119 ref 930 iox_$open 000054 constant entry external dcl 119 ref 494 iox_$user_output 000032 external static pointer dcl 117 set ref 299 379 575* 928 ipc_$cutoff 000074 constant entry external dcl 119 ref 430 ipc_$reconnect 000076 constant entry external dcl 119 ref 934 jdx 001115 automatic fixed bin(17,0) dcl 607 in procedure "print_split" set ref 614* 615 617 618 619* 619 624* 629 637 638 jdx 000104 automatic fixed bin(17,0) dcl 646 in procedure "line_count" set ref 674* 675 677 678 kdx 000100 automatic fixed bin(21,0) dcl 646 set ref 664* 668 672 673 674 675* 678* 678 684 last_page parameter bit(1) dcl 693 ref 690 699 703 len parameter fixed bin(21,0) dcl 646 ref 643 655 658 664 684 length builtin function dcl 163 ref 594 line_len 001025 automatic fixed bin(17,0) dcl 56 set ref 208 208* 209 212 212* 215 215* 251* 252 355* 356 402* 403 417 418* 419 420* 425 426 452 466 552 594 699* 699 699 722 914* line_length 2 001026 automatic fixed bin(17,0) level 2 in structure "fdoc" dcl 102 in procedure "forum_output_requests_$write_transactions" set ref 466* line_length 2 000100 automatic fixed bin(17,0) level 2 in structure "fdo" dcl 715 in procedure "format_subject" set ref 722* list 3 based structure array level 2 dcl 1-18 list_switch 000203 automatic bit(1) dcl 56 set ref 301* 449 536 915* literal_sw 3(04) 001026 automatic bit(1) level 3 in structure "fdoc" packed packed unaligned dcl 102 in procedure "forum_output_requests_$write_transactions" set ref 468* literal_sw 3(04) 000100 automatic bit(1) level 3 in structure "fdo" packed packed unaligned dcl 715 in procedure "format_subject" set ref 724* long_switch 000213 automatic bit(1) dcl 56 set ref 181* 238* 239* 304* 340* 359* 425 442 451 587 ltrim builtin function dcl 163 ref 322 548 548 567 567 567 567 567 567 594 594 max 000102 automatic fixed bin(17,0) dcl 646 in procedure "line_count" set ref 652* 657* 658 673 683 max builtin function dcl 163 in procedure "forum_output_requests_$write_transactions" ref 427 max_personid_len 2 based fixed bin(17,0) level 2 dcl 1-18 ref 426 max_size based fixed bin(17,0) level 2 dcl 1-18 ref 937 maxlength builtin function dcl 163 ref 265 265 265 message 000532 automatic char(256) packed unaligned dcl 56 set ref 488* 491* 511* 513* messlen 000632 automatic fixed bin(21,0) dcl 56 set ref 488* min builtin function dcl 163 ref 699 699 no_lines 000326 automatic fixed bin(17,0) dcl 56 set ref 534* 540 543* 543 548* 548 557 561 594* 734* 734 no_suffix_name based char packed unaligned dcl 3-46 ref 911 nref parameter fixed bin(17,0) packed unaligned dcl 503 in procedure "output_transaction" ref 500 566 567 567 567 nref 4 based fixed bin(17,0) array level 3 in structure "forum_trans_list" packed packed unaligned dcl 1-18 in procedure "forum_output_requests_$write_transactions" set ref 472* nref_pic 001104 automatic picture(6) packed unaligned dcl 508 set ref 566* 567 567 null builtin function dcl 163 ref 187 434 491 491 575 575 917 928 935 937 output_fill_width 70 based fixed bin(17,0) level 2 dcl 3-14 ref 914 owner 000327 automatic char(72) packed unaligned dcl 56 set ref 432 908* 935* page_header 000354 automatic char(256) packed unaligned dcl 56 set ref 212* 707 707 page_len 000352 automatic fixed bin(17,0) dcl 56 set ref 183* 206* 206 207 256* 257 375* 540 557 610 639 698 page_number 000353 automatic fixed bin(17,0) dcl 56 set ref 184* 696 704* 704 707* page_subject 000454 automatic char(72) packed unaligned dcl 56 set ref 699 699 706* parse_flags_word 001044 automatic bit(36) dcl 1-30 set ref 190* 191* 306* 307* 307 310* 383* 384* 755* 757* 757 759* 759 761* 833* 839* passport based structure level 1 dcl 3-14 passport_info_ptr 001050 automatic pointer dcl 3-12 set ref 181 191* 304 310* 384* 430 457 459 517* 538 543 543 543 543 564 594 761* 776 782 792 794 819 820 821 822 839* 844 845 881 906* 910 911 911 914 918 934 person_id 1 based char(22) level 2 dcl 2-7 set ref 543* 548* 594* pref 4(18) based fixed bin(17,0) array level 3 in structure "forum_trans_list" packed packed unaligned dcl 1-18 in procedure "forum_output_requests_$write_transactions" set ref 472* pref parameter fixed bin(17,0) packed unaligned dcl 503 in procedure "output_transaction" set ref 500 564* 565 567 567 pref_pic 001102 automatic picture(6) packed unaligned dcl 508 set ref 565* 567 567 print_fill 65(02) based bit(1) level 3 packed packed unaligned dcl 3-14 ref 881 print_switch 000210 automatic bit(1) dcl 56 set ref 376* 575 915* project_id 7 based char(9) level 2 dcl 2-7 set ref 543* 548* 594* prseg_ptr 000502 automatic pointer dcl 56 set ref 432* 434* 525 528 917* 935 935* public_channel 72 based fixed bin(71,0) level 2 dcl 3-14 set ref 430* 934* release_temp_segment_ 000070 constant entry external dcl 119 ref 935 request_id_ 000072 constant entry external dcl 119 ref 490 ret_len 000104 automatic fixed bin(21,0) dcl 56 set ref 319 321 322 907* ret_ptr 000102 automatic pointer dcl 56 set ref 319 321 321 322 322 907* ret_val based varying char dcl 56 set ref 319* 321* 321 322* 322 rtrim builtin function dcl 163 ref 594 707 707 sep_switch 000734 automatic bit(1) dcl 56 set ref 179* 245* 269* 271* 303* 378* 567* sep_switch_given 000735 automatic bit(1) dcl 56 set ref 185* 202 269* separator 000633 automatic varying char(256) dcl 56 set ref 186* 265 265 265 268* 377* 567 size 1 based fixed bin(17,0) level 2 dcl 1-18 set ref 320 442* 442 456 471 765 sj_width 001024 automatic fixed bin(17,0) dcl 56 set ref 425* 426* 427* 427 452 594 594 594 594 594* ssu_$abort_line 000136 constant entry external dcl 119 ref 177 202 209 231 235 252 257 261 265 274 286 290 346 350 356 363 403 409 492 495 512 518 526 581 728 770 790 797 811 850 852 870 889 898 ssu_$arg_ptr 000142 constant entry external dcl 119 ref 227 233 264 288 337 348 399 810 864 892 ssu_$get_subsystem_and_request_name 000144 constant entry external dcl 119 ref 908 ssu_$print_message 000146 constant entry external dcl 119 ref 774 ssu_$return_arg 000140 constant entry external dcl 119 ref 907 ssu_ptr 000736 automatic pointer dcl 56 set ref 177* 202* 209* 227* 231* 233* 235* 252* 257* 261* 264* 265* 274* 286* 288* 290* 337* 346* 348* 350* 356* 363* 399* 403* 409* 492* 495* 512* 518* 526* 581* 728* 770* 774* 790* 797* 810* 811* 850* 852* 864* 870* 889* 892* 898* 905* 907* 908* string parameter char packed unaligned dcl 646 in procedure "line_count" ref 643 655 672 string builtin function dcl 163 in procedure "forum_output_requests_$write_transactions" set ref 467* 723* subject 25 based char level 2 packed packed unaligned dcl 2-7 set ref 551 553* 594 594* 594 594 706 727* subject_length 22 based fixed bin(21,0) level 2 dcl 2-7 ref 525 532 551 552 553 553 594 594 594 594 594 706 715 727 727 819 subject_lines 000105 automatic fixed bin(17,0) dcl 715 set ref 732* 733 734 substr builtin function dcl 163 ref 543 543 594 594 594 594 594 594 594 594 614 618 628 628 699 699 737 737 switches 3 000100 automatic structure level 2 in structure "fdo" dcl 715 in procedure "format_subject" set ref 723* switches 3 001026 automatic structure level 2 in structure "fdoc" dcl 102 in procedure "forum_output_requests_$write_transactions" set ref 467* syllable_size 4 001026 automatic fixed bin(17,0) level 2 in structure "fdoc" dcl 102 in procedure "forum_output_requests_$write_transactions" set ref 469* syllable_size 4 000100 automatic fixed bin(17,0) level 2 in structure "fdo" dcl 715 in procedure "format_subject" set ref 725* temp 000106 automatic char packed unaligned dcl 715 set ref 727* 732* 737 737 temp_forum 000204 automatic bit(1) dcl 56 set ref 195* 314* 388* 538 912* 926 temp_idx 000476 automatic fixed bin(17,0) dcl 56 set ref 191* 194 196 310* 313 315 384* 387 389 517* 761* 839* 913* temp_len 000106 automatic fixed bin(21,0) dcl 715 set ref 727* 732* 737 737 text based char level 2 in structure "forum_user_trans" packed packed unaligned dcl 2-7 in procedure "forum_output_requests_$write_transactions" set ref 525* 532 text 000100 automatic structure level 1 packed packed unaligned dcl 668 in begin block on line 666 set ref 672* text based char packed unaligned dcl 56 in procedure "forum_output_requests_$write_transactions" set ref 534* 557 560* 610* 614 618 621* 628 628 630* 639* text_length 23 based fixed bin(21,0) level 2 dcl 2-7 ref 525 525 531 532 819 text_ptr 000500 automatic pointer dcl 56 set ref 528* 532* 534 557 560 610 614 618 621 628 628 630 637* 637 639 tidx 000112 automatic fixed bin(17,0) dcl 56 set ref 456* 457* 471* 472 472 472 472* 765* 766* 782* 783* 791* 792 795* 842* 844 845 847* 847 849 time 12 based fixed bin(71,0) level 2 dcl 2-7 set ref 521* 522* trailer_format 000740 automatic fixed bin(17,0) dcl 56 in procedure "forum_output_requests_$write_transactions" set ref 216* 272* 407* 567 567 567 567 918* trailer_format 174 based fixed bin(17,0) level 2 in structure "passport" dcl 3-14 in procedure "forum_output_requests_$write_transactions" ref 918 trans_index parameter fixed bin(17,0) dcl 503 set ref 500 510 517* 518* 520 538 538 543 564 567 577 578* 580* 590 594 594 trans_num 3 based fixed bin(17,0) array level 3 dcl 1-18 set ref 321 322 457 459 459 472* 766 842 trans_pic 000214 automatic picture(6) packed unaligned dcl 56 set ref 520* 548 548 567 567 594 594 trans_time 000216 automatic char(24) packed unaligned dcl 56 set ref 521* 594 594 594 594 594 594 unfilled 24 based bit(1) level 2 dcl 2-7 set ref 524* unprocessed_forum_dir 105 based char(168) level 2 dcl 3-14 set ref 821* unprocessed_forum_name 157 based char(32) level 2 dcl 3-14 set ref 543 543 822* unprocessed_name_len 167 based fixed bin(17,0) level 2 dcl 3-14 ref 543 543 unprocessed_reply_trans 104 based fixed bin(17,0) level 2 dcl 3-14 set ref 564 820* unprocessed_trans_ptr 102 based pointer level 2 dcl 3-14 ref 819 update_current 000211 automatic bit(1) dcl 56 set ref 301* 361* 362* 455 456 457* 459 user_dir 000741 automatic char(168) packed unaligned dcl 56 set ref 199* 234* 349* 437* 442* 488* user_entry 001013 automatic char(32) packed unaligned dcl 56 set ref 199 199* 234* 349* 437* 442* 447 488* 916* version_number 001026 automatic fixed bin(17,0) level 2 in structure "fdoc" dcl 102 in procedure "forum_output_requests_$write_transactions" set ref 464* version_number 000100 automatic fixed bin(17,0) level 2 in structure "fdo" dcl 715 in procedure "format_subject" set ref 720* write_switch 000200 automatic bit(1) dcl 56 set ref 180* 414 436 915* x 000100 automatic fixed bin(17,0) dcl 283 set ref 289* 291 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CALL_ON_BAD_ARGS internal static bit(18) initial dcl 1-54 CREATE_UNPROC internal static bit(18) initial dcl 1-54 DEFAULT_TO_NONE internal static bit(18) initial dcl 1-54 DISALLOW_INITIAL internal static bit(18) initial dcl 1-54 DONT_READ internal static bit(18) initial dcl 1-54 INCLUDE_DELETED internal static fixed bin(17,0) initial dcl 2-24 ONLY_DELETED internal static fixed bin(17,0) initial dcl 2-24 alloc_subject_length automatic fixed bin(21,0) dcl 2-4 alloc_text_length automatic fixed bin(21,0) dcl 2-3 alloc_trans_list_size automatic fixed bin(17,0) dcl 1-16 format_document_options_ptr automatic pointer dcl 4-62 format_document_version_1 internal static fixed bin(17,0) initial dcl 4-64 forum_area based area(1024) dcl 3-46 forum_data_$central_directory external static char(168) packed unaligned dcl 3-49 forum_data_$info_directory external static char(168) packed unaligned dcl 3-49 forum_data_$version_string external static char(8) packed unaligned dcl 3-49 message_type internal static fixed bin(17,0) initial dcl 2-22 parse_flags based structure level 1 dcl 1-32 passport_version_2 internal static fixed bin(17,0) initial dcl 3-44 user_trans_type internal static fixed bin(17,0) initial dcl 2-21 NAMES DECLARED BY EXPLICIT CONTEXT. BADOPT 005271 constant label dcl 363 ref 339 COMMON 010235 constant label dcl 658 ref 653 DLRT_COMMON 002574 constant label dcl 751 ref 745 cleanup_handler 011544 constant entry internal dcl 923 ref 188 309 324 382 480 754 802 837 855 delete_args 010765 constant entry internal dcl 805 ref 761 761 delete_transactions 002552 constant entry external dcl 741 delete_unproc 011044 constant entry internal dcl 816 ref 767 format_subject 010533 constant entry internal dcl 712 ref 552 forum_output_requests_$write_transactions 000774 constant entry external dcl 31 get_numeric_arg 004467 constant entry internal dcl 280 ref 251 256 355 402 get_trailer_format 011244 constant entry internal dcl 886 ref 272 407 line_count 010172 constant entry internal dcl 643 ref 534 621 630 732 list_args 004644 constant entry internal dcl 331 ref 310 310 list_transactions 001440 constant entry external dcl 294 new_page 010355 constant entry internal dcl 690 ref 478 540 634 open_iocb 005536 constant entry internal dcl 483 ref 440 447 output_transaction 005767 constant entry internal dcl 500 ref 472 print_args 005331 constant entry internal dcl 393 ref 384 384 print_split 007673 constant entry internal dcl 604 ref 557 print_transactions 001730 constant entry external dcl 370 print_write_common 002055 constant label dcl 414 ref 218 328 391 reset_args 011070 constant entry internal dcl 858 ref 839 839 reset_transaction 003254 constant entry external dcl 826 retrieve_transactions 002565 constant entry external dcl 747 setup_request 011444 constant entry internal dcl 902 ref 175 297 373 751 829 should_be_filled 011200 constant entry internal dcl 874 ref 432 524 split 010214 constant entry internal dcl 655 ref 610 639 write_args 003532 constant entry internal dcl 221 ref 191 191 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12770 13140 11754 13000 Length 13630 11754 150 453 1013 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME forum_output_requests_$write_transactions 1120 external procedure is an external procedure. on unit on line 188 64 on unit write_args 114 internal procedure is assigned to an entry variable. get_numeric_arg 89 internal procedure is called by several nonquick procedures. on unit on line 309 64 on unit list_args 108 internal procedure is assigned to an entry variable. on unit on line 382 64 on unit print_args 90 internal procedure is assigned to an entry variable. open_iocb internal procedure shares stack frame of external procedure forum_output_requests_$write_ output_transaction internal procedure shares stack frame of external procedure forum_output_requests_$write_ print_split internal procedure shares stack frame of external procedure forum_output_requests_$write_ line_count 73 internal procedure is called by several nonquick procedures. begin block on line 666 66 begin block uses auto adjustable storage. new_page internal procedure shares stack frame of external procedure forum_output_requests_$write_ format_subject 118 internal procedure uses auto adjustable storage. on unit on line 754 64 on unit delete_args 94 internal procedure is assigned to an entry variable. delete_unproc internal procedure shares stack frame of external procedure forum_output_requests_$write_ on unit on line 837 64 on unit reset_args 90 internal procedure is assigned to an entry variable. should_be_filled internal procedure shares stack frame of external procedure forum_output_requests_$write_ get_trailer_format 106 internal procedure is called by several nonquick procedures. setup_request internal procedure shares stack frame of external procedure forum_output_requests_$write_ cleanup_handler 86 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 666 000100 text begin block on line 666 format_subject 000100 fdo format_subject 000105 subject_lines format_subject 000106 temp format_subject 000106 temp_len format_subject forum_output_requests_$write_transactions 000100 argument_idx forum_output_requests_$write_transactions 000101 active_function forum_output_requests_$write_transactions 000102 ret_ptr forum_output_requests_$write_transactions 000104 ret_len forum_output_requests_$write_transactions 000105 arg_count forum_output_requests_$write_transactions 000106 arg_len forum_output_requests_$write_transactions 000110 arg_ptr forum_output_requests_$write_transactions 000112 tidx forum_output_requests_$write_transactions 000113 forum_idx forum_output_requests_$write_transactions 000114 code forum_output_requests_$write_transactions 000115 forum_dir forum_output_requests_$write_transactions 000167 forum_name forum_output_requests_$write_transactions 000177 fill_index forum_output_requests_$write_transactions 000200 write_switch forum_output_requests_$write_transactions 000201 extend_switch forum_output_requests_$write_transactions 000202 header_switch forum_output_requests_$write_transactions 000203 list_switch forum_output_requests_$write_transactions 000204 temp_forum forum_output_requests_$write_transactions 000205 delete_switch forum_output_requests_$write_transactions 000206 formatted forum_output_requests_$write_transactions 000207 current_switch forum_output_requests_$write_transactions 000210 print_switch forum_output_requests_$write_transactions 000211 update_current forum_output_requests_$write_transactions 000212 dont_truncate forum_output_requests_$write_transactions 000213 long_switch forum_output_requests_$write_transactions 000214 trans_pic forum_output_requests_$write_transactions 000216 trans_time forum_output_requests_$write_transactions 000224 fmt_trans_time forum_output_requests_$write_transactions 000324 iocb_ptr forum_output_requests_$write_transactions 000326 no_lines forum_output_requests_$write_transactions 000327 owner forum_output_requests_$write_transactions 000351 current_line forum_output_requests_$write_transactions 000352 page_len forum_output_requests_$write_transactions 000353 page_number forum_output_requests_$write_transactions 000354 page_header forum_output_requests_$write_transactions 000454 page_subject forum_output_requests_$write_transactions 000476 temp_idx forum_output_requests_$write_transactions 000500 text_ptr forum_output_requests_$write_transactions 000502 prseg_ptr forum_output_requests_$write_transactions 000504 fill_len forum_output_requests_$write_transactions 000505 control forum_output_requests_$write_transactions 000532 message forum_output_requests_$write_transactions 000632 messlen forum_output_requests_$write_transactions 000633 separator forum_output_requests_$write_transactions 000734 sep_switch forum_output_requests_$write_transactions 000735 sep_switch_given forum_output_requests_$write_transactions 000736 ssu_ptr forum_output_requests_$write_transactions 000740 trailer_format forum_output_requests_$write_transactions 000741 user_dir forum_output_requests_$write_transactions 001013 user_entry forum_output_requests_$write_transactions 001023 i forum_output_requests_$write_transactions 001024 sj_width forum_output_requests_$write_transactions 001025 line_len forum_output_requests_$write_transactions 001026 fdoc forum_output_requests_$write_transactions 001042 forum_trans_list_ptr forum_output_requests_$write_transactions 001044 parse_flags_word forum_output_requests_$write_transactions 001045 ANY forum_output_requests_$write_transactions 001046 forum_user_trans_ptr forum_output_requests_$write_transactions 001050 passport_info_ptr forum_output_requests_$write_transactions 001064 iocb_name open_iocb 001102 pref_pic output_transaction 001104 nref_pic output_transaction 001114 idx print_split 001115 jdx print_split 001116 found_ff print_split 001126 blanks new_page get_numeric_arg 000100 x get_numeric_arg line_count 000100 kdx line_count 000101 count line_count 000102 max line_count 000103 idx line_count 000104 jdx line_count THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as r_le_a 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 alloc_auto_adj signal_op enable_op shorten_stack ext_entry int_entry int_entry_desc op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_dec_check_ date_time_ date_time_$format expand_pathname_ expand_pathname_$add_suffix format_document_$string forum_$close_forum forum_$forum_limits forum_$get_message forum_$set_delete_sw forum_$set_last_seen_idx forum_$set_message forum_$set_seen_switch forum_$trans_ref_info forum_trans_specs_$parse_specs forum_trans_util_$read_trans get_line_length_$switch get_temp_segment_ hcs_$status_minf ioa_ ioa_$ioa_switch ioa_$ioa_switch_nnl ioa_$rsnnl iox_$attach_name iox_$close iox_$control iox_$destroy_iocb iox_$detach_iocb iox_$open ipc_$cutoff ipc_$reconnect release_temp_segment_ request_id_ ssu_$abort_line ssu_$arg_ptr ssu_$get_subsystem_and_request_name ssu_$print_message ssu_$return_arg THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$bigarg error_table_$inconsistent error_table_$noarg error_table_$noentry error_table_$recoverable_error forum_et_$invalid_trans_idx forum_et_$trans_reaped iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 53 000765 31 000770 175 001002 177 001003 179 001032 180 001036 181 001037 182 001044 183 001045 184 001047 185 001050 186 001052 187 001056 188 001060 190 001102 191 001105 194 001155 195 001157 196 001161 199 001162 202 001221 205 001253 206 001255 207 001257 208 001262 209 001267 211 001316 212 001354 213 001424 215 001425 216 001431 218 001435 294 001436 297 001446 299 001447 300 001453 301 001454 302 001457 303 001460 304 001461 306 001466 307 001471 309 001476 310 001520 313 001570 314 001572 315 001574 318 001575 319 001600 320 001601 321 001611 322 001631 323 001715 324 001720 325 001724 328 001725 370 001726 373 001736 375 001737 376 001741 377 001744 378 001745 379 001746 380 001752 382 001753 383 001775 384 001777 387 002047 388 002051 389 002053 391 002054 414 002055 417 002057 418 002061 419 002074 420 002101 421 002103 422 002105 425 002106 426 002113 427 002117 430 002123 432 002136 434 002173 436 002175 437 002177 438 002237 439 002244 440 002245 442 002246 445 002314 446 002340 447 002341 449 002346 450 002350 451 002352 452 002375 455 002424 456 002426 457 002441 458 002450 459 002452 464 002461 465 002463 466 002464 467 002466 468 002467 469 002475 471 002477 472 002507 477 002531 478 002533 480 002543 481 002547 741 002550 744 002560 745 002562 747 002563 750 002573 751 002574 754 002575 755 002617 757 002625 759 002636 761 002640 764 002710 765 002711 766 002721 767 002724 768 002727 769 002731 770 002752 771 003003 773 003004 774 003021 776 003053 779 003064 781 003066 782 003070 783 003101 784 003127 785 003135 787 003137 788 003141 789 003142 790 003143 791 003161 792 003163 794 003172 795 003174 796 003226 797 003230 802 003245 803 003251 826 003252 829 003262 831 003263 833 003265 835 003276 837 003277 839 003321 842 003371 844 003374 845 003402 847 003411 848 003414 849 003416 850 003440 851 003466 852 003467 855 003524 856 003530 221 003531 226 003537 227 003543 229 003557 230 003572 231 003573 233 003622 234 003640 235 003677 236 003740 238 003741 239 003753 240 003766 241 004000 242 004007 243 004022 244 004032 245 004034 246 004035 247 004036 248 004050 249 004063 250 004075 251 004105 252 004114 253 004145 254 004152 255 004153 256 004163 257 004172 258 004223 259 004224 260 004237 261 004247 263 004310 264 004312 265 004327 268 004365 269 004377 270 004402 271 004403 272 004415 274 004435 275 004461 276 004465 280 004466 285 004474 286 004476 288 004536 289 004554 290 004602 291 004637 331 004643 336 004651 337 004655 339 004671 340 004675 341 004711 342 004724 343 004736 344 004751 345 004761 346 004762 348 005011 349 005027 350 005060 351 005121 352 005124 353 005125 354 005140 355 005150 356 005157 357 005210 358 005215 359 005216 360 005231 361 005244 362 005256 363 005271 366 005323 367 005327 393 005330 398 005336 399 005342 400 005356 401 005374 402 005404 403 005413 404 005444 405 005451 406 005452 407 005465 409 005505 410 005531 411 005535 483 005536 488 005537 490 005602 491 005630 492 005663 494 005714 495 005735 497 005766 500 005767 510 005771 511 005774 512 006015 513 006034 514 006060 517 006061 518 006101 520 006137 521 006151 522 006167 524 006224 525 006240 526 006301 528 006334 529 006336 531 006337 532 006342 534 006346 536 006371 538 006373 540 006402 542 006416 543 006420 548 006513 551 006624 552 006633 553 006644 557 006676 560 006721 561 006750 564 006754 565 006767 566 007006 567 007025 575 007257 577 007316 578 007321 580 007356 581 007375 584 007423 587 007424 590 007434 591 007445 592 007452 594 007464 600 007671 601 007672 604 007673 610 007674 611 007725 613 007727 614 007730 615 007743 616 007744 617 007746 618 007750 619 007756 620 007757 621 007760 622 010007 624 010010 625 010012 628 010013 629 010046 630 010052 631 010102 634 010103 635 010112 636 010127 637 010131 638 010135 639 010137 640 010167 641 010170 643 010171 652 010210 653 010212 655 010213 657 010232 658 010235 663 010244 664 010246 666 010247 668 010252 672 010261 673 010301 674 010310 675 010324 677 010330 678 010331 679 010333 681 010334 682 010335 683 010336 684 010344 685 010352 690 010355 696 010357 697 010361 698 010367 699 010372 701 010452 703 010453 704 010460 705 010461 706 010462 707 010467 709 010530 712 010532 715 010540 727 010552 732 010555 720 010560 721 010562 722 010564 723 010567 724 010570 725 010600 727 010602 728 010637 731 010670 732 010673 733 010717 734 010721 737 010722 738 010762 805 010764 810 010772 811 011010 812 011043 816 011044 819 011045 820 011056 821 011060 822 011063 823 011066 858 011067 863 011075 864 011101 866 011115 867 011126 868 011135 869 011144 870 011153 871 011177 874 011200 879 011202 880 011212 881 011221 882 011236 886 011243 889 011251 891 011312 892 011314 894 011331 895 011344 896 011360 897 011370 898 011404 900 011440 902 011444 905 011445 906 011451 907 011454 908 011473 910 011510 911 011513 912 011517 913 011522 914 011523 915 011525 916 011530 917 011533 918 011537 919 011542 923 011543 926 011551 928 011565 929 011577 930 011610 931 011623 934 011636 935 011652 937 011701 939 011713 ----------------------------------------------------------- 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