COMPILATION LISTING OF SEGMENT xforum_trans_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/06/87 1023.7 mst Thu Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(86-02-07,LJAdams), approve(86-02-18,MCR7350), 13* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 14* Added the lastref "lref" and restref "rref" options. 15* 2) change(87-04-09,LJAdams), approve(87-04-22,MCR7684), 16* audit(87-04-27,Blair), install(87-08-06,MR12.1-1065): 17* For last_ref entry point initialize return parameter to 0 before start of 18* processing. 19* END HISTORY COMMENTS */ 20 21 22 xforum_trans_: proc; 23 24 /* 25* BEGIN DESCRIPTION 26* 27* function: 28* This programs contains entries for reading the current, and for finding 29* next, previous, first transactions, also previous, next and first 30* references to current transaction. 31* 32* read: This entry reads the transaction specified by the input index from 33* the current meeting, and returns a pointer to the transaction structure. 34* forum_ is called to get a pointer to the transaction structure. This 35* structure is allocated in system_free and is freed in the xforum_format_ 36* module. In addition if the requested transaction has an index higher 37* than the current last_seen transaction index the value of last_seen is 38* updated. 39* 40* first_trans: This entry point finds and returns a pointer to the 41* first transaction in the current meeting. This is done by looping though 42* the transactions 1, 2, 3, etc. looking for one that has not been deleted. 43* forum_ is called to get a transaction pointer. The 44* last_seen value is also updated if the just read transaction has a higher 45* index than the last_seen value. Note that if an error code other than 46* trans_deleted or trans_reaped is returned by forum_ the entry will return 47* with and undefined pointer value and that error code value. 48* 49* prev_trans: This entry point finds and returns a pointer to the 50* prev transaction in the current meeting. The previous transaction is the 51* next non-deleted transaction with an index smaller than the current 52* transaction. The logic is similar to that in the first_trans entry except 53* that the loop index starts at current_index - 1 and is decremented. 54* 55* next_trans: This entry finds and returns a pointer to the next 56* transaction in the current meeting. The next transaction is the next 57* non-deleted transaction with an index larger than the current 58* transaction. The logic is similar to that in the first_trans entry 59* except that the loop index starts at current_index + 1. 60* 61* first_ref: This entry point finds and returns a pointer to the 62* first transaction for the current subject chain in the current meeting. 63* The first transaction is found by calling forum_ to get the next and 64* previous references to the current transaction and then by looping 65* on the previous transaction to get its previous transaction until there 66* are no more previous transaction. Once the first transaction is found 67* a call to forum_ is made to get the transaction structure ptr. If that 68* call fails (returns a non-zero error code) a call to 69* xforum_trans_$next_ref is made. If that call fails the error code is 70* returned to the caller. Note that the xforum_meeting_info table is not 71* updated or used in any way by this entry. 72* 73* prev_ref: This entry point finds and returns a pointer to the previous 74* transaction for the current subject chain in the current meeting. 75* A call to forum_ is made to get the previous and next references. If 76* there is not a previous reference the error code invalid_trans_idx is 77* returned. If there is a previous reference and it has not been deleted 78* a call to forum_ is made to get the transaction pointer and that pointer 79* is returned. If an error occurs then the error is returned. If the 80* transaction has been deleted a call is made to get its previous and next 81* transactions and the loop repeats. A flag is returned by forum_ to 82* indicate if the transaction has been deleted - the xforum_meeting_info 83* table is not used. 84* 85* next_ref: This entry point finds and returns a pointer to the next 86* transaction for the current subject chain in the current meeting. 87* The logic is identical to that in prev_ref with the exception that the 88* next reference is used instead of the prev reference. 89* 90* last_ref: This entry point finds and returns a pointer to the last 91* transaction for the current suject chain in the current meeting. 92* The logic is identical to that in prev_ref except that the next 93* reference is used instead of the prev reference and the looping 94* continues until there are no more next references. 95* 96* description: 97* 98* known bugs: 99* 100* notes: 101* 102* history: 103* 83-12-?? DBarkey: Originally written 104* 105* 84-09-25 Davids: Removed references to xforum_trans_array. The array is 106* being deleted because it enforces an upper limit on the number of 107* transaction that xforum can handle. The entries read, first_trans, 108* prev_trans, and next_trans needed to be restructured quite a bit. None 109* of the other entries were effected. 110* 111* 84-11-08 Davids: Audit changes: 1) Simplified the loops for the 112* first_trans, prev_trans, and next_trans entries, removed the repeat 113* and while clauses and added to and by clauses. Also reformated 114* declarations. 115* 116* END DESCRIPTION 117**/ 118 119 /* PARAMETERS */ 120 121 dcl P_tidx fixed bin parameter; 122 dcl P_forum_user_trans_ptr ptr parameter; 123 dcl P_code fixed bin (35) parameter; 124 125 /* EXTERNAL STATIC */ 126 127 dcl forum_error_table_$invalid_trans_idx fixed bin (35) ext static; 128 dcl forum_error_table_$trans_deleted fixed bin (35) ext static; 129 dcl forum_error_table_$trans_reaped fixed bin (35) ext static; 130 131 /* ENTRIES */ 132 133 dcl xforum_trans_$read entry (fixed bin, ptr, fixed bin (35)); 134 dcl xforum_trans_$next_ref entry (fixed bin, ptr, fixed bin (35)); 135 dcl xforum_trans_$prev_ref entry (fixed bin, ptr, fixed bin (35)); 136 137 /* CONDITIONS */ 138 139 /* INTERNAL AUTOMATIC */ 140 141 dcl code fixed bin (35); 142 dcl delete_sw bit (1) aligned; 143 dcl i fixed bin; 144 dcl nref fixed bin; 145 dcl pref fixed bin; 146 dcl tidx fixed bin; 147 148 /* INTERNAL STATIC */ 149 150 /* CONSTANTS */ 151 152 dcl TRUE bit (1) aligned init ("1"b) static options (constant); 153 154 /* BUILTINS */ 155 156 /* BASED */ 157 158 /* INCLUDE FILES */ 159 1 1 /* START OF: forum_dcls.incl.pl1 * * * * * */ 1 2 1 3 dcl forum_$close_forum entry (fixed bin, fixed bin (35)); 1 4 dcl forum_$enter_trans entry (fixed bin, char (*), fixed bin, char (*), 1 5 bit (1) aligned, fixed bin, 1 6 fixed bin (35)); 1 7 dcl forum_$forum_info entry (char (*), char (*), char (*), 1 8 fixed bin (71), ptr, fixed bin (35)); 1 9 dcl forum_$forum_limits entry (fixed bin, fixed bin, fixed bin, 1 10 fixed bin, fixed bin, fixed bin, 1 11 bit(36) aligned, fixed bin (35)); 1 12 dcl forum_$get_forum_path entry (char (*), char (*), char (*), char (*), 1 13 fixed bin (35)); 1 14 dcl forum_$get_forum_path_idx entry (fixed bin, char (*), char (*), 1 15 fixed bin (35)); 1 16 dcl forum_$get_message entry (fixed bin, char (*), fixed bin (35)); 1 17 dcl forum_$get_transaction_map_idx entry (fixed bin, char (*), bit (*), fixed bin (35)); 1 18 dcl forum_$list_users_idx entry (fixed bin, ptr, ptr, fixed bin (35)); 1 19 dcl forum_$open_forum entry (char(*), char(*), fixed bin, 1 20 fixed bin (35)); 1 21 dcl forum_$read_trans entry (fixed bin, fixed bin, ptr, ptr, 1 22 fixed bin (35)); 1 23 dcl forum_$set_last_seen_idx entry (fixed bin, fixed bin, bit (1) aligned, 1 24 fixed bin (35)); 1 25 dcl forum_$set_seen_switch entry (fixed bin, char (*), fixed bin, 1 26 bit (1) aligned, fixed bin (35)); 1 27 dcl forum_$set_message entry (fixed bin, char (*), fixed bin (35)); 1 28 dcl forum_$set_switch entry (char (*), char (*), char (*), char (*), 1 29 bit (1) aligned, fixed bin (35)); 1 30 dcl forum_$set_switch_idx entry (fixed bin, char (*), char (*), 1 31 bit (1) aligned, fixed bin (35)); 1 32 dcl forum_$trans_ref_info entry (fixed bin, fixed bin, fixed bin, 1 33 fixed bin, fixed bin, bit (1) aligned, 1 34 fixed bin (35)); 1 35 1 36 /* END OF: forum_dcls.incl.pl1 * * * * * */ 160 161 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 */ 162 163 3 1 /* START OF: xforum_meeting_info.incl.pl1 * * * * * */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(84-05-03,Davids), approve(84-05-03,MCR7350), 3 7* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 3 8* Changed the length of name from 20 characters to 32 characters. 3 9* Version 2 forum names can be 26 characters long (forum suffix) - 3 10* and a little extra incase version 3 uses a shorter suffix yet. 3 11* 3 12* 84-10-03 Davids: added the unread_count, next_unread, and 3 13* seen_map_ptr elements. Also the declaration for the 3 14* seen_map_string and seen_map. 3 15* 3 16* 85-01-24 Davids: added the set_array_ptr to the 3 17* xforum_meeting_info structure and the set_array structure and 3 18* SET_ARRAY_SPEC_LEN variable. 3 19* 2) change(86-02-17,LJAdams), approve(86-02-17,MCR7350), 3 20* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 3 21* Added restref flag. 3 22* END HISTORY COMMENTS */ 3 23 3 24 declare 1 xforum_meeting_info based (xforum_meeting_info_ptr), 3 25 2 name char (32), 3 26 2 lidx fixed bin, 3 27 2 idx fixed bin, 3 28 2 current fixed bin, 3 29 2 last_seen fixed bin, 3 30 2 first_trans fixed bin, 3 31 2 last_trans fixed bin, 3 32 2 new_trans fixed bin, 3 33 2 flags unal, 3 34 3 all bit (1), 3 35 3 allref bit (1), 3 36 3 restref bit (1), 3 37 3 new bit (1), 3 38 3 range bit (1), 3 39 3 set bit (1), 3 40 2 current_ref fixed bin, 3 41 2 low fixed bin, 3 42 2 high fixed bin, 3 43 2 trans_struct_ptr ptr, 3 44 2 next_unread fixed bin, 3 45 2 unread_count fixed bin, 3 46 2 seen_map_ptr ptr, 3 47 2 set_array_ptr ptr; 3 48 3 49 dcl seen_map_string bit (1000000) based; 3 50 dcl seen_map (1000000) bit (1) unaligned based; 3 51 3 52 dcl 01 set_array based (xforum_meeting_info.set_array_ptr), 3 53 02 number fixed bin, 3 54 02 spec char (80) varying, 3 55 02 index (100000); 3 56 3 57 dcl SET_ARRAY_SPEC_LEN fixed bin init (80) internal static options (constant); 3 58 3 59 /* END OF: xforum_meeting_info.incl.pl1 * * * * * */ 164 165 4 1 /* START OF: xforum_meeting_list.incl.pl1 * * * * * */ 4 2 4 3 /* 4 4* 84-03-27 Davids: added the forum_version element 4 5* 4 6* 84-05-03 Davids: Changed the length of long_name and short_name from 4 7* 24 characters to 32 characters. Version 2 forum names can be 26 characters 4 8* long (forum suffix) - and a little extra incase version 3 uses a shorter 4 9* suffix yet. 4 10* 4 11* 84-09-24 Davids: Added the date_time, npath, and path elements. 4 12**/ 4 13 4 14 declare 1 xforum_meeting_list aligned 4 15 based (xforum_meeting_list_ptr), 4 16 2 date_time fixed bin (71), 4 17 2 no_selected fixed bin, 4 18 2 no_participant fixed bin, 4 19 2 no_changed fixed bin, 4 20 2 current_selected fixed bin, 4 21 2 current_participant fixed bin, 4 22 2 current_changed fixed bin, 4 23 2 forums (0 refer 4 24 (xforum_meeting_list.no_selected)), 4 25 3 long_name char (32) unaligned, 4 26 3 short_name char (32) unaligned, 4 27 3 directory char (168) unaligned, 4 28 3 forum_version fixed bin, 4 29 3 chairman char (32) unaligned, 4 30 3 uid bit (36) aligned, 4 31 3 flags unaligned, 4 32 4 eligible bit (1), 4 33 4 removed bit (1), 4 34 4 notify bit (1), 4 35 4 participant bit (1), 4 36 4 two_names bit (1), 4 37 4 read_only bit (1), 4 38 4 attended bit (1), 4 39 4 changed bit (1), 4 40 4 been_to bit (1), 4 41 4 mbz bit (27), 4 42 2 npaths fixed bin, 4 43 2 paths (0 refer (xforum_meeting_list.npaths)) 4 44 char (168) varying; 4 45 4 46 /* END OF: xforum_meeting_list.incl.pl1 * * * * * */ 166 167 5 1 /* START OF: xforum_ptr_struct_.incl.pl1 * * * * * */ 5 2 5 3 declare 1 xforum_ptr_struct_ external static, 5 4 2 xforum_meeting_list_ptr ptr, 5 5 2 xforum_meeting_info_ptr ptr, 5 6 2 xforum_trans_array_ptr ptr, 5 7 2 xforum_system_area_ptr ptr; 5 8 5 9 /* END OF: xforum_ptr_struct_.incl.pl1 * * * * * */ 168 169 170 171 read: entry (P_tidx, P_forum_user_trans_ptr, P_code); 172 173 idx = xforum_meeting_info.idx; 174 tidx = P_tidx; 175 P_code = 0; 176 177 call forum_$read_trans (idx, tidx, xforum_system_area_ptr, 178 forum_user_trans_ptr, code); 179 if code ^= 0 then do; 180 P_code = code; 181 return; 182 end; 183 184 P_forum_user_trans_ptr = forum_user_trans_ptr; 185 186 if tidx > xforum_meeting_info.last_trans 187 then xforum_meeting_info.last_trans = tidx; 188 /* this could have appeared 189* recently */ 190 191 return; 192 193 first_trans: entry (P_forum_user_trans_ptr, P_code); 194 195 P_code = 0; 196 197 do i = 1 by 1; 198 call forum_$read_trans (idx, i, xforum_system_area_ptr, 199 forum_user_trans_ptr, code); 200 if code ^= 0 201 then do; 202 if code ^= forum_error_table_$trans_deleted 203 & code ^= forum_error_table_$trans_reaped 204 then do; 205 P_code = code; 206 return; 207 end; 208 end; 209 else do; 210 P_forum_user_trans_ptr = forum_user_trans_ptr; 211 if xforum_meeting_info.last_trans < i 212 then xforum_meeting_info.last_trans = i; 213 return; 214 end; 215 end; 216 217 prev_trans: entry (P_tidx, P_forum_user_trans_ptr, P_code); 218 219 P_code = 0; 220 221 tidx = P_tidx; 222 223 do i = tidx - 1 to 1 by -1; 224 call forum_$read_trans (idx, i, xforum_system_area_ptr, 225 forum_user_trans_ptr, code); 226 if code ^= 0 227 then do; 228 if code ^= forum_error_table_$trans_deleted 229 & code ^= forum_error_table_$trans_reaped 230 then do; 231 P_code = code; 232 return; 233 end; 234 end; 235 else do; 236 P_forum_user_trans_ptr = forum_user_trans_ptr; 237 if xforum_meeting_info.last_trans < i 238 then xforum_meeting_info.last_trans = i; 239 return; 240 end; 241 end; 242 P_code = forum_error_table_$invalid_trans_idx; 243 return; 244 245 next_trans: entry (P_tidx, P_forum_user_trans_ptr, P_code); 246 247 P_code = 0; 248 249 tidx = P_tidx; 250 251 do i = tidx + 1 by 1; 252 call forum_$read_trans (idx, i, xforum_system_area_ptr, 253 forum_user_trans_ptr, code); 254 if code ^= 0 255 then do; 256 if code ^= forum_error_table_$trans_deleted 257 & code ^= forum_error_table_$trans_reaped 258 then do; 259 P_code = code; 260 return; 261 end; 262 end; 263 else do; 264 P_forum_user_trans_ptr = forum_user_trans_ptr; 265 if xforum_meeting_info.last_trans < i 266 then xforum_meeting_info.last_trans = i; 267 return; 268 end; 269 end; 270 271 first_ref: entry (P_tidx, P_forum_user_trans_ptr, P_code); 272 273 P_code = 0; 274 275 tidx = P_tidx; 276 277 call forum_$trans_ref_info (idx, tidx, ONLY_UNDELETED, pref, nref, delete_sw, code); 278 if code ^= 0 then do; 279 P_code = code; 280 return; 281 end; 282 283 if pref = 0 then do; /* this was the first */ 284 call xforum_trans_$read (tidx, forum_user_trans_ptr, code); 285 P_code = code; 286 P_forum_user_trans_ptr = forum_user_trans_ptr; 287 return; 288 end; 289 290 do i = pref repeat pref while (TRUE); 291 call forum_$trans_ref_info (idx, i, ONLY_UNDELETED, pref, nref, delete_sw, 292 code); 293 if code ^= 0 then do; 294 P_code = code; 295 return; 296 end; 297 298 if pref = 0 then do; 299 call xforum_trans_$read (i, forum_user_trans_ptr, code); 300 if code ^= 0 301 then /* fref not there get next */ 302 call xforum_trans_$next_ref (i, forum_user_trans_ptr, 303 code); 304 P_code = code; /* one way or another */ 305 P_forum_user_trans_ptr = forum_user_trans_ptr; 306 return; 307 end; 308 end; 309 310 prev_ref: entry (P_tidx, P_forum_user_trans_ptr, P_code); 311 312 P_code = 0; 313 314 tidx = P_tidx; 315 316 call forum_$trans_ref_info (idx, tidx, ONLY_UNDELETED, pref, nref, delete_sw, code); 317 if code ^= 0 then do; 318 P_code = code; 319 return; 320 end; 321 322 if pref = 0 then do; 323 P_code = forum_error_table_$invalid_trans_idx; 324 return; 325 end; 326 327 do i = pref repeat pref while (TRUE); 328 if ^delete_sw then do; 329 call xforum_trans_$read (i, forum_user_trans_ptr, code); 330 if code ^= 0 then do; 331 P_code = code; 332 return; 333 end; 334 else do; 335 P_forum_user_trans_ptr = forum_user_trans_ptr; 336 return; 337 end; 338 end; /* deleted - try for next */ 339 call forum_$trans_ref_info (idx, i, ONLY_UNDELETED, pref, nref, delete_sw, 340 code); 341 if code ^= 0 then do; 342 P_code = code; 343 return; 344 end; 345 346 if pref = 0 then do; 347 P_code = forum_error_table_$invalid_trans_idx; 348 return; 349 end; 350 end; 351 352 next_ref: entry (P_tidx, P_forum_user_trans_ptr, P_code); 353 354 P_code = 0; 355 356 tidx = P_tidx; 357 358 call forum_$trans_ref_info (idx, tidx, ONLY_UNDELETED, pref, nref, delete_sw, code); 359 if code ^= 0 then do; 360 P_code = code; 361 return; 362 end; 363 364 if nref = 0 then do; 365 P_code = forum_error_table_$invalid_trans_idx; 366 return; 367 end; 368 369 do i = nref repeat nref while (TRUE); 370 if ^delete_sw then do; 371 call xforum_trans_$read (i, forum_user_trans_ptr, code); 372 if code ^= 0 then do; 373 P_code = code; 374 return; 375 end; 376 else do; 377 P_forum_user_trans_ptr = forum_user_trans_ptr; 378 return; 379 end; 380 end; /* deleted - try for next */ 381 call forum_$trans_ref_info (idx, i, ONLY_UNDELETED, pref, nref, delete_sw, 382 code); 383 if code ^= 0 then do; 384 P_code = code; 385 return; 386 end; 387 388 if nref = 0 then do; 389 P_code = forum_error_table_$invalid_trans_idx; 390 return; 391 end; 392 end; 393 394 395 last_ref: entry (P_tidx, P_forum_user_trans_ptr, P_code); 396 397 nref = P_tidx; 398 P_code, code = 0; 399 400 do while(nref ^= 0 & code = 0); 401 tidx = nref; 402 call forum_$trans_ref_info (idx, tidx, ONLY_UNDELETED, pref, nref, delete_sw, code); 403 if code ^= 0 then do; 404 P_code = code; 405 return; 406 end; 407 end; 408 409 if ^delete_sw then do; 410 call xforum_trans_$read (tidx, forum_user_trans_ptr, code); 411 if code ^= 0 then do; 412 P_code = code; 413 return; 414 end; 415 else do; 416 P_forum_user_trans_ptr = forum_user_trans_ptr; 417 return; 418 end; 419 end; 420 else do; /* get last undeleted */ 421 call xforum_trans_$prev_ref (tidx, forum_user_trans_ptr, code); 422 P_forum_user_trans_ptr = forum_user_trans_ptr; 423 return; 424 end; 425 426 end xforum_trans_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/06/87 1014.9 xforum_trans_.pl1 >special_ldd>install>MR12.1-1065>xforum_trans_.pl1 160 1 12/03/84 1241.4 forum_dcls.incl.pl1 >ldd>include>forum_dcls.incl.pl1 162 2 10/31/84 1115.4 forum_user_trans.incl.pl1 >ldd>include>forum_user_trans.incl.pl1 164 3 04/25/86 0859.6 xforum_meeting_info.incl.pl1 >ldd>include>xforum_meeting_info.incl.pl1 166 4 12/03/84 1241.5 xforum_meeting_list.incl.pl1 >ldd>include>xforum_meeting_list.incl.pl1 168 5 12/03/84 1241.6 xforum_ptr_struct_.incl.pl1 >ldd>include>xforum_ptr_struct_.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. ONLY_UNDELETED 000000 constant fixed bin(17,0) initial dcl 2-24 set ref 277* 291* 316* 339* 358* 381* 402* P_code parameter fixed bin(35,0) dcl 123 set ref 171 175* 180* 193 195* 205* 217 219* 231* 242* 245 247* 259* 271 273* 279* 285* 294* 304* 310 312* 318* 323* 331* 342* 347* 352 354* 360* 365* 373* 384* 389* 395 398* 404* 412* P_forum_user_trans_ptr parameter pointer dcl 122 set ref 171 184* 193 210* 217 236* 245 264* 271 286* 305* 310 335* 352 377* 395 416* 422* P_tidx parameter fixed bin(17,0) dcl 121 ref 171 174 217 221 245 249 271 275 310 314 352 356 395 397 TRUE constant bit(1) initial dcl 152 ref 290 327 369 code 000100 automatic fixed bin(35,0) dcl 141 set ref 177* 179 180 198* 200 202 202 205 224* 226 228 228 231 252* 254 256 256 259 277* 278 279 284* 285 291* 293 294 299* 300 300* 304 316* 317 318 329* 330 331 339* 341 342 358* 359 360 371* 372 373 381* 383 384 398* 400 402* 403 404 410* 411 412 421* delete_sw 000101 automatic bit(1) dcl 142 set ref 277* 291* 316* 328 339* 358* 370 381* 402* 409 forum_$read_trans 000024 constant entry external dcl 1-21 ref 177 198 224 252 forum_$trans_ref_info 000026 constant entry external dcl 1-32 ref 277 291 316 339 358 381 402 forum_error_table_$invalid_trans_idx 000010 external static fixed bin(35,0) dcl 127 ref 242 323 347 365 389 forum_error_table_$trans_deleted 000012 external static fixed bin(35,0) dcl 128 ref 202 228 256 forum_error_table_$trans_reaped 000014 external static fixed bin(35,0) dcl 129 ref 202 228 256 forum_user_trans_ptr 000106 automatic pointer dcl 2-5 set ref 177* 184 198* 210 224* 236 252* 264 284* 286 299* 300* 305 329* 335 371* 377 410* 416 421* 422 i 000102 automatic fixed bin(17,0) dcl 143 set ref 197* 198* 211 211* 223* 224* 237 237* 251* 252* 265 265* 290* 291* 299* 300* 327* 329* 339* 369* 371* 381* idx 11 based fixed bin(17,0) level 2 dcl 3-24 set ref 173* 173 177* 198* 224* 252* 277* 291* 316* 339* 358* 381* 402* last_trans 15 based fixed bin(17,0) level 2 dcl 3-24 set ref 186 186* 211 211* 237 237* 265 265* nref 000103 automatic fixed bin(17,0) dcl 144 set ref 277* 291* 316* 339* 358* 364 369 381* 388 392 397* 400 401 402* pref 000104 automatic fixed bin(17,0) dcl 145 set ref 277* 283 290 291* 298 308 316* 322 327 339* 346 350 358* 381* 402* tidx 000105 automatic fixed bin(17,0) dcl 146 set ref 174* 177* 186 186 221* 223 249* 251 275* 277* 284* 314* 316* 356* 358* 401* 402* 410* 421* xforum_meeting_info based structure level 1 unaligned dcl 3-24 xforum_meeting_info_ptr 2 000030 external static pointer level 2 dcl 5-3 ref 173 173 177 186 186 198 211 211 224 237 237 252 265 265 277 291 316 339 358 381 402 xforum_ptr_struct_ 000030 external static structure level 1 unaligned dcl 5-3 xforum_system_area_ptr 6 000030 external static pointer level 2 dcl 5-3 set ref 177* 198* 224* 252* xforum_trans_$next_ref 000020 constant entry external dcl 134 ref 300 xforum_trans_$prev_ref 000022 constant entry external dcl 135 ref 421 xforum_trans_$read 000016 constant entry external dcl 133 ref 284 299 329 371 410 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. INCLUDE_DELETED internal static fixed bin(17,0) initial dcl 2-24 ONLY_DELETED internal static fixed bin(17,0) initial dcl 2-24 SET_ARRAY_SPEC_LEN internal static fixed bin(17,0) initial dcl 3-57 alloc_subject_length automatic fixed bin(21,0) dcl 2-4 alloc_text_length automatic fixed bin(21,0) dcl 2-3 forum_$close_forum 000000 constant entry external dcl 1-3 forum_$enter_trans 000000 constant entry external dcl 1-4 forum_$forum_info 000000 constant entry external dcl 1-7 forum_$forum_limits 000000 constant entry external dcl 1-9 forum_$get_forum_path 000000 constant entry external dcl 1-12 forum_$get_forum_path_idx 000000 constant entry external dcl 1-14 forum_$get_message 000000 constant entry external dcl 1-16 forum_$get_transaction_map_idx 000000 constant entry external dcl 1-17 forum_$list_users_idx 000000 constant entry external dcl 1-18 forum_$open_forum 000000 constant entry external dcl 1-19 forum_$set_last_seen_idx 000000 constant entry external dcl 1-23 forum_$set_message 000000 constant entry external dcl 1-27 forum_$set_seen_switch 000000 constant entry external dcl 1-25 forum_$set_switch 000000 constant entry external dcl 1-28 forum_$set_switch_idx 000000 constant entry external dcl 1-30 forum_user_trans based structure level 1 dcl 2-7 message_type internal static fixed bin(17,0) initial dcl 2-22 seen_map based bit(1) array unaligned dcl 3-50 seen_map_string based bit(1000000) unaligned dcl 3-49 set_array based structure level 1 unaligned dcl 3-52 user_trans_type internal static fixed bin(17,0) initial dcl 2-21 xforum_meeting_list based structure level 1 dcl 4-14 NAMES DECLARED BY EXPLICIT CONTEXT. first_ref 000367 constant entry external dcl 271 first_trans 000101 constant entry external dcl 193 last_ref 001077 constant entry external dcl 395 next_ref 000727 constant entry external dcl 352 next_trans 000274 constant entry external dcl 245 prev_ref 000557 constant entry external dcl 310 prev_trans 000171 constant entry external dcl 217 read 000017 constant entry external dcl 171 xforum_trans_ 000005 constant entry external dcl 22 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1424 1456 1222 1434 Length 2006 1222 32 313 201 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xforum_trans_ 104 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME xforum_trans_ 000100 code xforum_trans_ 000101 delete_sw xforum_trans_ 000102 i xforum_trans_ 000103 nref xforum_trans_ 000104 pref xforum_trans_ 000105 tidx xforum_trans_ 000106 forum_user_trans_ptr xforum_trans_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. forum_$read_trans forum_$trans_ref_info xforum_trans_$next_ref xforum_trans_$prev_ref xforum_trans_$read THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. forum_error_table_$invalid_trans_idx forum_error_table_$trans_deleted forum_error_table_$trans_reaped xforum_ptr_struct_ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000004 171 000012 173 000031 174 000035 175 000040 177 000041 179 000057 180 000061 181 000062 184 000063 186 000065 191 000074 193 000075 195 000113 197 000114 198 000116 200 000137 202 000141 205 000146 206 000147 208 000150 210 000151 211 000153 213 000163 215 000164 217 000166 219 000203 221 000204 223 000207 224 000215 226 000236 228 000240 231 000245 232 000246 234 000247 236 000250 237 000252 239 000262 241 000263 242 000266 243 000271 245 000272 247 000306 249 000307 251 000312 252 000314 254 000335 256 000337 259 000344 260 000345 262 000346 264 000347 265 000351 267 000361 269 000362 271 000364 273 000401 275 000402 277 000405 278 000432 279 000434 280 000435 283 000436 284 000440 285 000453 286 000455 287 000457 290 000460 291 000462 293 000507 294 000511 295 000512 298 000513 299 000515 300 000530 304 000545 305 000547 306 000551 308 000552 310 000554 312 000571 314 000572 316 000575 317 000622 318 000624 319 000625 322 000626 323 000630 324 000633 327 000634 328 000636 329 000641 330 000654 331 000656 332 000657 335 000660 336 000662 339 000663 341 000710 342 000712 343 000713 346 000714 347 000716 348 000721 350 000722 352 000724 354 000741 356 000742 358 000745 359 000772 360 000774 361 000775 364 000776 365 001000 366 001003 369 001004 370 001006 371 001011 372 001024 373 001026 374 001027 377 001030 378 001032 381 001033 383 001060 384 001062 385 001063 388 001064 389 001066 390 001071 392 001072 395 001074 397 001111 398 001114 400 001116 401 001122 402 001124 403 001151 404 001153 405 001154 407 001155 409 001156 410 001161 411 001174 412 001176 413 001177 416 001200 417 001202 421 001203 422 001216 423 001220 426 001221 ----------------------------------------------------------- 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