COMPILATION LISTING OF SEGMENT xforum_ent_attend_mtg_menu 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 1019.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 /****^ HISTORY COMMENTS: 11* 1) change(84-06-18,Davids), approve(86-02-04,MCR7350), 12* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 13* Created by extracting the relavent internal procedures from the 14* xforum module. 15* 16* 84-08-01 Davids: Extensive changes to enter_trans code. Code that 17* resizes the windows and outputs the new header (for reply), help 18* message, and "Please wait for editor" message moved to the front. 19* Help messages changed to reflect MTB. Multiple returns replaced 20* by a goto exit... statement. 21* 22* 84-08-02 Davids: Replaced references to transaction in enter_trans 23* code with references to comment. Made the coment entered 24* confirmation message conform with the MTB. 25* 26* 84-08-07 Davids: replaced a reference to nt_fidx in the parameter 27* list of next_ref with a reference to nr_fidx. This was screwing 28* up the call which set the flag indicating that the transaction had 29* been seen. The error was not being reported because the code was 30* not being checked! The structure of the code in both next_ref and 31* next_trans has been changed so that the error code returned from 32* setting the flag is checked. 33* 2) change(84-08-16,Davids), approve(86-02-04,MCR7350), 34* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 35* updated the call to xforum_help_$display for the case where the 36* user responds to the comment specification prompt with a ? to 37* reflect the new info file name and section. Also removed code 38* which is no longer returned, xforum_fatal_error is signaled. 39* Added the entry points copy_comments, next_unread_trans, and 40* meeting_maintenance. These new entries just issue a "have not be 41* implemented yet" message. The code dealing with the now unused 42* entry points (attending meeting doesn't do things like next ref) 43* was not removed because itwill be needed again when the second 44* attending menu is built. 45* 46* 84-09-26 Davids: Added the update_status procedure and removed 47* code from the individual entries that the seen switches and 48* last_seen value. Added to the prev_trans, prev_ref, and first_ref 49* entries the parameters for meeting version and forum meeting 50* index. These are necessary because this routine now updates the 51* seen switches for each transaction. 52* 53* 84-09-27 Davids: Added the copy_comments code. 54* 3) change(84-09-28,Davids), approve(86-02-04,MCR7350), 55* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 56* Removed all references to a usage message and calls to 57* xforum_status_$update_usage, push_usage, pop_usage. Replaced them 58* with the corresponding xforum_help_line entries. 59* 60* 84-10-01 Davids: Removed a lingering reference to 61* xforum_status_$push_help_line. Also added a code check after the 62* call to xforum_trans_$read for the reply mode of enter_trans. If 63* the user trys to reply without reading the comment first, its 64* possible that the comment has been deleted and a bad pointer 65* reference will result in the ioa_$rsnnl call. 66* 67* 84-10-03 Davids: Added code in the update_status procedure to 68* update the seen_map. Also changed the new label to Unread. 69* 70* 84-10-04 Davids: Added the code that actually implements the 71* next_unread_trans entry point. Modified the enter_trans code so 72* that it also sets the seen_map bits. 73* 74* 84-10-11 Davids: Replaced references to transactions in the 75* listing header, the current comment header, and a message with 76* references to comments. Added code to copy_comments so that a 77* null file name will be identified and an error message output. 78* 4) change(84-10-16,Davids), approve(86-02-04,MCR7350), 79* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 80* Changed the help line when entering a new discussion to reflect 81* that E? is not available and to indicate that the RETURN key will 82* enter the subject. 83* 84* 84-10-18 Davids: Changed status messages for copy comments which 85* said "Comments being written to X" and "N comments written to X" 86* so that written is now copied. 87* 88* 84-10-26 Davids: In select_trans_spec modified help line to 89* indicate tha a BREAK will leave the current comments unchanged. 90* Also so a responding to the prompt with just a return will leave 91* the current comments unchanged. Also changed the spy stuff so 92* that the actual transaction number or transaction range is not 93* recorded but just the key word range or number. 94* 95* 84-10-29 Davids: In the enter_trans entry increased the length of 96* the et_str and et_sj variables from 110 & 100 to 510 and 500. 97* This was needed so that subjects longer than 100 characters don't 98* get truncated. et_str is 10 characters longer since it also 99* contains the "Subject: " string. 100* 5) change(84-11-06,Davids), approve(86-02-04,MCR7350), 101* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 102* Changed references to xforum_help_line to xforum_help_line_. 103* 104* 84-11-15 Davids: Auditing changes: 1) Corrected all output 105* messages to start with an upper case letter and end with some form 106* of puncuation. 2) Replaced the "/" operator with the divide 107* builtin. Other changes: 1) Corrected error messages to say 108* comment instead of transaction. 2) Replaced calls to 109* hcs_$make_seg with calls to initiate_file_$create. 110* 111* 84-11-19 Davids: Added quit handler to enter_trans entry point. 112* This closes the window between the time the proc is entered and 113* the time that the emacs quit handler is established. If this 114* window is open the screen gets all screwed up. 115* 116* 84-12-12 Davids: Added a call to clear the bottom window before 117* the call outputing the "Please wait for editor" message. Added 118* code to next_transaction, previous_transaction, next_reference, 119* and previous_reference so that they check the error code returned 120* from xforum_trans_ and if its forum_error_table_$invalid_trans_idx 121* they print out an appropriate message instead of using the forum 122* message which uses the term transaction. It will also clear the 123* bottom window before outputing the message. Also added a call to 124* clear the bottom window before the message "There are no more 125* unread comments" in next_unread_transaction. 126* 6) change(85-01-16,Davids), approve(86-02-04,MCR7350), 127* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 128* Changed QUERY_USAGE the help line text output for a query to have 129* the same format as the rest of the help lines. 130* 131* 85-01-21 Davids: Modified so that the help line output in the 132* enter_transaction procedure uses "ESC" for the escape key instead 133* of "E". Also so that the remove_menu_while_editing state is 134* checked if the user is entering a new transaction and the menu 135* removed if the state is true. 136* 137* 85-01-22 Davids: Modified so that the et_trans_seg structure 138* contains space for an escape character appended onto the subject 139* before the new-line. Also modified so that the character looked 140* for to determine the end of the subject is the escape character 141* and not the new-line. This allows subjects with embedded 142* new-lines to be handled correctly. 143* 144* 85-01-24 Davids: Added support for the listing and displaying of a 145* set of comments (the xforum_meeting_info.flags.set switch). 146* 7) change(85-01-25,Davids), approve(86-02-04,MCR7350), 147* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 148* Changed BREAK in QUERY_USAGE to be more meaningful and added 149* QUERY_USAGE_COPY for the copy option. 150* 151* 85-01-28 Davids: Added support for copying a set of comments. 152* Forgot that on 85-01-24. 153* 154* 85-01-30 Davids: Modified the display_trans, list_trans, and 155* copy_comments entry points so that they use the new 156* xforum_get_selected_trans module. This way there is only 1 module 157* that needs to understand how to get the list of selected 158* transactions based on the flags in xforum_meeting_info. It also 159* simplifies the code. Also modified the call to 160* xforum_validate_trans_spec_ to include the xforum_meeting_info_ptr 161* and spy_ptr. 162* 163* 85-02-12 Davids: Moved the attend_meetings, attend_a_meeting, 164* reinstate_mtg_status, and close_meeting procedures from 165* xforum_main_options. attend_meetings became the code for the main 166* entry. Did not try to clean the code up. Made all the existing 167* entries internal procedures. Deleted the next_ref, pref_ref, and 168* first_ref entry points. 169* 8) change(85-02-13,Davids), approve(86-02-04,MCR7350), 170* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 171* Changed calling sequence of xforum_help_line_$change to include 172* the new F3_message argument. 173* 174* 85-02-14 Davids: After the call to xforum_help_$get_help added 175* code to resize the menu window and redisplay the menu. This will 176* be needed if the help resulted in the general help topics menu 177* being displayed. It wont hurt anything if that was not the case. 178* 179* 85-02-22 Davids: Modified copy_comments to use the new 180* xforum_attend_mtg_utilities$copy_to_name entry point. 181* 182* 85-02-25 Davids: Modified next_unread_trans tro use the new 183* xforum_attend_mtg_utilities$next_unread_comment entry point. Also 184* modified it to record the set of the flags and the current comment 185* number and to reset the flags and current number if no unread 186* transaction is found. 187* 188* 85-02-28 Davids: Extracted the internal proc update_status and 189* placed it in the xforum_attend_mtg_utilities module. 190* 9) change(85-03-01,Davids), approve(86-02-04,MCR7350), 191* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 192* Removed the internal proc reinstate_status and replace the calls 193* to it with calls to xforum_attend_mtg_utilities$update_status. 194* Did the same for close_meeting. 195* 196* 85-03-04 Davids: Added code to reset the title line and redisplay 197* the status information at the same time that the menu is reset if 198* the current menu pointer has been changed. This was needed 199* because during the removeal of reinstate_status the call that was 200* made every time though the "handle menu choice" loop was removed 201* as not being needed. It turns out that it is needed if the 202* current menu pointer has been changed. Also changed the call to 203* xforum_format_$append so that it include the new flag, since 204* append is never called to build a segment for emacs the flag is 205* always 0. 206* 207* 85-03-06 Davids: Replaced the internal procedure enter_trans with 208* a call to to xforum_attend_mtg_utilities$enter_trans. 209* 210* 85-03-19 Davids: Fixed the next_unread_trans procedure so that if 211* no unread trans is found it will still update the status 212* information. This is needed so that deleted and expunged 213* transactions found during the search for a new trans are removed 214* from unread count displayed in the status line. Also fixed a 215* problem with referencing the last seen transaction when the user 216* has just entered a meeting. The user's current transaction is set 217* to his last seen transaction. If the last seen transaction was 218* deleted the user's current transaction will be invalid. Now if 219* the last seen transaction cannot be read the current transaction 220* is set to the first transaction (first undeleted/unreaped). If an 221* attempt to read the first transaction fails an error is reported 222* and the procedured is exited. 223* 10) change(85-03-25,Davids), approve(86-02-04,MCR7350), 224* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 225* Added code to options 7 and 8 so that enter_trans is only called 226* if the read_only flag for the meeting is off. If its on an error 227* message is output. This saves the user from having to enter a 228* comment only to find out that he cannot do anything with it. 229* 230* 85-03-27 Davids: Replaced code in attend_a_meeting that now is in 231* the set_up_meeting entry of xforum_attend_mtg_utilities with a 232* call to that entry. Also modified the code handling the help 233* function to reset the title line of the status window and 234* redisplay the status and help line windows. This is needed if the 235* user had the general topics menu display. 236* 237* 85-04-11 Davids: Modified list_trans to calculate the maximum 238* length of the users's default date and time strings and to output 239* a list header line based on those lengths. Also to construct a 240* ioa_ control string to output the listing of a comment based on 241* those lengths. In addition it calcuates the maximum number of 242* characters that can be output on the subject. It passes the ioa_ 243* control string and the max subject length to xforum_format_$list 244* along with a pointer to the forum transaction. Note that the 245* user's date and time formats must allow at least 7 characters of 246* the subject to be printed or an error will be output. 247* 11) change(85-04-17,Davids), approve(86-02-04,MCR7350), 248* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 249* Modified next_unread_trans so that it does not zero out the 250* current comment and flags before calling next_unread_comment. 251* This allows next_unread_comment to restore the current comment(s) 252* incase of a quit. 253* 254* 85-05-06 Davids: Added a test of aam_fidx after the call to 255* set_up_meeting in attend_a_meeting. If aam_fidx is 0 the meeting 256* was not opened so a return is done. Any error message was output 257* by set_up_meeting. 258* 259* 85-06-03 Davids: Commented all declarations, deleted unused 260* declarations and moved some declarations from the main entry point 261* to the procedure that actually used them. Also replaced the 262* output parameter from the call to xforum_multics_mode with an 263* "unused" variable and use the static menu height variable in the 264* following call to resynch the menu window size instead of the 265* output from multics mode. This was done so as not to need two 266* variables that hold the menu window height. 267* 268* 85-06-04 Davids: Removed references to the include files: 269* access_mode_values, forum_dcls, and forum_flags. Since they were 270* not being referenced. 271* 12) change(85-06-05,Davids), approve(86-02-04,MCR7250), 272* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 273* In the select_trans_spec procedure, moved the call to 274* xforum_help_line_$push so that it occurs before the ioa call which 275* outputs the prompt. It was after the prompt which caused it to be 276* executed after every invalid entry in which case the prompt was 277* reissued. This would cause the help_line stack to fill up. 278* 279* 85-06-20 Davids: Changed calling sequence of xforum_format_$append 280* so that the bit_count parameter which is input/output comes after 281* all the input parameters (i.e. the bit (1) switch). 282* 13) change(86-02-18,LJAdams), approve(86-02-18,MCR7350), 283* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 284* Setting xforum_meeting_info.current to 0 prior to closing meeting. 285* 14) change(87-04-13,LJAdams), approve(87-04-22,MCR7684), 286* audit(87-07-30,Blair), install(87-08-06,MR12.1-1065): 287* Changed to allow command_processor_ escapes. Declared screen options 288* as constants to eliminate use of magic numbers. 289* END HISTORY COMMENTS */ 290 291 xforum_ent_attend_mtg_menu: proc (xam_midx, xam_match_bits, xam_spy_ptr); 292 293 /* 294* BEGIN DESCRIPTION 295* 296* function: 297* This module creates, displays and destroys the entry oriented attend 298* meeting menu. It also processes the user choices from that menu. 299* 300* 301* description of entry points: 302* xforum_ent_attend_mtg_menu: 303* input: fixed bin index in the xforum meeting list of meeting to be attended 304* bit (36) aligned identifies the class of meeting to be attended 305* ptr pointer to spy structure 306* This entry is a simple loop that calls the internal procedure 307* attend_a_meeting and then gets the next meeting index and calls 308* attend_a_meeting again. The loop is broken when the user exits a 309* meeting and indicates that he does not want to go to another meeting 310* (attend_a_meeting returns xam_more as false) or attend_a_meeting is 311* given an invalid meeting index (which will happen if there is no next 312* meeting, xam_more is again returned as false). 313* 314* description of internal procedures: 315* attend_a_meeting: This procedure is used to attend a meeting. It first 316* checks to be sure that the input meeting index is valid, if not it 317* returns (the more flag is false). If it is a valid index it sets up 318* condition handlers, calls xforum_attend_mtg_utilities$set_up_meeting 319* to initialize the xforum_meeting_info structure and have forum open the 320* meeting, creates the text for option 9 of the menu and creates the menu 321* and finally enters a loop where the menu is displayed and the menu choice 322* is used to call either internal procedures or xforum_attend_mtg_utilities 323* entry points. The menu choices are recorded in the spy structure., 324* The quit condition handler is set up to clear the bottom window, reset 325* the help line, redisplay the menu and go back to the menu display/input 326* loop. The cleanup condition handler is set up to close the meeting and 327* free the storage for the menu structure (done via the utilities call). 328* a xforum_redisplay_menu condition handler is set up to redisplay the 329* menu. It is setup after the menu is created so that it has something to 330* display. The more flag is used to identify that the user does or does not 331* want to exit the current meeting and attend another meeting. It is set to 332* true when the user selects the next meeting option (option 9) 333* 334* display_trans: This procedure is used to display transaction. The bottom 335* window is first cleared. A loop is entered which calls 336* xforum_get_selected_trans to get a pointer to a selected transaction, 337* the transaction number is used to update the status window and the 338* transaction displayed via xforum_format_. The loop continues until 339* a invalid_trans_idx error code is returned. Other error codes are 340* ignored. The loop is initialized via a call to xforum_get_selected_trans. 341* Xforum_get_selected_trans handles all the details of determining what 342* transactions have been selected and how to get them in sequential order. 343* 344* next_trans: This procedure selects the next transaction as the current 345* transaction and displays the transaction via a call to xforum_format_. 346* The next transaction is found via a call to xforum_trans_. A subject 347* chain will not be followed. The current transaction must be either a 348* single transaction or a range of transaction, i.e. I:J for there to be 349* a next transaction. xforum_trans_$next will skip deleted comments. If 350* there is no next comment (user is at last comment in meeting) a non-zero 351* error code is returned from xforum_trans_$next and this procedure will 352* output the error message to the user. Note that xforum_trans_$next will 353* not change the current comment setting in the event of an error. 354* 355* list_transaction: This procedure will cause a 1 line description to be 356* output to the user_io window for all the current comments. The 357* description contains the date and time the comment was entered. The 358* display of the date and time uses the user's date format and the time 359* format. The positions of the elements of the description are calculated 360* based on the maximum length that the date and time fields could be. It 361* requires that there be at least 7 characters left for the subject or an 362* error message will be output. This assumes an 80 character window. A 363* header line ioa_ control string is created and output. A control string 364* for outputing each of the comment descriptions is also created and passed 365* to xforum_format$list which actually outputs the description line. 366* 367* select_trans_spec: This procedure prompts the user for a transaction 368* spec. Once the spec has been input a call is made to 369* xforum_validate_trans_spec to check the spec and update the current 370* comment in the xforum_meeting_info structure. The prompting is done via 371* ioa_ instead of via command_query. Help processing is handling by 372* actually checking to see if the input was a "?" character an calling 373* xforum_help_$display if it was. The input spec must be less than 132 374* characters. Spy data is collected but any range is just recored as RANGE 375* and any single number is just recored as NUMBER. If the input spec is not 376* valid the prompt is reissued. xforum_validate_trans_spec_ will have 377* already output an error message. Note that if the user just presses the 378* RETURN key the response in recorded as RETURN and the procedure exits. A 379* quit handler is used to clear the prompt and any error messages and reset 380* the help line. 381* 382* copy_comments: This procedure calls xforum_attend_mtg_utilities$copy_to_name 383* to obtain the name of the file to copy the comments into. copy_to_name 384* checks for help requests and invalid names. It returns the entry name 385* of the segment, a pointer to the segment and the segments current bit 386* count. A null pointer indicates that the copy should be aborted. 387* A message is then output saying that the writting is taking place. The 388* help line is updated to indicate a break will abort the copy process. 389* The second part of this procedure looks exactly like the display 390* procedure. The only difference is xforum_format_$append is called instead 391* of $display and that the number of comments actually processed is 392* counted. The last thing that this procedure does is clear the bottom 393* window and output a message saying how many transactions were output 394* and giving the file name. A quit handler is used to reset the help line 395* and force the an exit to the loop doing the copying. 396* 397* next_unread_trans: This procedure calls xforum_attend_utilities$next_unread_comment 398* to update the current comment in the xforum_meeting_info structure to the 399* next unread comment. It then calls xforum_attend_utilities$update_status 400* to update the status window to indicate the new current comment and 401* xforum_format_$display to display the new current comment below the 402* meeting menu. If there are no unread comments a message to that effect 403* is output to the user and the current comment and flags fields which 404* were modified by the call to next_unread_comment are restored to their 405* original values. 406* 407* meeting_maintenance: This procedure will be used to generate the meeting 408* maintenance menu and respond to selections made from that menu. Currently 409* it just outputs a message saying that it is unimplemented. 410* 411* collect_spy_data: Similar to all the other collect_spy_data procedures. 412* See the xforum module. Note that this procedure is duplicated so as to 413* save the expense of an external call for a commonly executed, very short 414* program, whose output is used only during development or special site 415* exposure. 416* 417* known bugs: 418* 419* notes: 420* 84-09-26 Davids: The code in update_status which creates the status 421* window text was copied from xforum_main_options. It should be made into a 422* separate procedure, or better yet incorporated into the appropriate 423* xforum_status_ entries. 424* 425* 85-02-12 Davids: The menu should be created in the main entry not in the 426* attend_a_meetings procedure. reinstate_mtg_status and update_status 427* should be combined. close_meeting should be taken out of attend_a_meeting 428* and made an internal procedure at the same level as attend_a_meeting. 429* END DESCRIPTION 430**/ 431 432 /* PARAMETERS */ 433 434 dcl xam_midx fixed bin; /* (input) index in the xforum meeting list */ 435 /* of meeting to be attended */ 436 dcl xam_match_bits bit (36) aligned; /* (input) identifies the class of meeting to be attended */ 437 dcl xam_spy_ptr ptr; /* (input) pointer to spy structure */ 438 439 /* EXTERNAL STATIC */ 440 441 dcl forum_error_table_$invalid_trans_idx fixed bin (35) ext static; 442 443 /* ENTRIES */ 444 445 dcl com_err_$suppress_name entry () options (variable); 446 dcl date_time_$format_max_length entry (char (*), char (*), char (*)) returns (fixed bin); 447 dcl ioa_ entry () options (variable); 448 dcl ioa_$rsnnl entry () options (variable); 449 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 450 dcl timer_manager_$sleep entry (fixed bin (71), bit (2)); 451 dcl window_$bell entry (ptr, fixed bin (35)); 452 dcl window_$clear_window entry (ptr, fixed bin (35)); 453 dcl xforum_attend_mtg_utilities$close_meeting entry (ptr, ptr, fixed bin, fixed bin, ptr); 454 dcl xforum_attend_mtg_utilities$copy_to_name entry (ptr, char (32), ptr, fixed bin (24)); 455 dcl xforum_attend_mtg_utilities$enter_trans entry (ptr, fixed bin, ptr, bit (1) aligned, bit (1) aligned); 456 dcl xforum_attend_mtg_utilities$next_unread_comment entry (ptr, fixed bin, fixed bin, ptr); 457 dcl xforum_attend_mtg_utilities$set_up_meeting entry (ptr, ptr, fixed bin, bit (1) aligned, fixed bin, char (256), char (256)); 458 dcl xforum_attend_mtg_utilities$update_status entry (ptr, fixed bin, char (*), fixed bin, fixed bin); 459 dcl xforum_create_menu_ entry ((*) char (*) var, ptr, ptr, fixed bin (35)); 460 dcl xforum_format_$append entry (ptr, ptr, bit (1) aligned, fixed bin (24), fixed bin (35)); 461 dcl xforum_format_$display entry (ptr, bit (1) aligned, fixed bin (35)); 462 dcl xforum_format_$list entry (ptr, char (*), fixed bin, fixed bin (35)); 463 dcl xforum_get_selected_trans$first entry (ptr, ptr, fixed bin (35)); 464 dcl xforum_get_selected_trans$next entry (ptr, ptr, fixed bin (35)); 465 dcl xforum_get_str_ entry (char(*) var, ptr, char(*), char(*), char(*) var, fixed bin(35)); 466 dcl xforum_help_$get_help entry (ptr, char (*), (*) char (*) var, ptr, ptr); 467 dcl xforum_help_line_$change entry (bit (8), char (*), char (*), char (*)); 468 dcl xforum_help_line_$push entry (bit (8), char (*), char (*), char (*)); 469 dcl xforum_help_line_$pop entry options (variable); 470 dcl xforum_main_options$index_of_next_meeting entry (bit (36) aligned, ptr) returns (fixed bin); 471 dcl xforum_multics_mode entry (fixed bin); 472 dcl xforum_redisplay_ entry options (variable); 473 dcl xforum_status_$update_title entry (char (*)); 474 dcl xforum_status_$redisplay entry (fixed bin (35)); 475 dcl xforum_trans_$next_trans entry (fixed bin, ptr, fixed bin (35)); 476 dcl xforum_user_profile$get_multics_mode entry () returns (bit (1)); 477 dcl xforum_window_mgr$check_window_status entry options (variable); 478 dcl xforum_window_mgr$menu_display entry (ptr); 479 dcl xforum_window_mgr$menu_get_choice entry (ptr, bit (1) aligned, fixed bin); 480 dcl xforum_window_mgr$resynch_windows entry (fixed bin, bit (1)); 481 dcl xforum_validate_trans_spec_ entry (ptr, ptr, char (*), fixed bin (35)); 482 483 /* CONDITIONS */ 484 485 dcl cleanup condition; 486 dcl exit_executive_forum condition; 487 dcl quit condition; 488 dcl xforum_redisplay_menu condition; 489 490 /* INTERNAL AUTOMATIC */ 491 492 dcl xam_next_mtg_index fixed bin; /* xforum_meeting_list index of the next meeting to attend */ 493 dcl xam_more bit (1) aligned; /* "1"b implies that the user wants to attend another meeting */ 494 495 /* INTERNAL STATIC */ 496 497 498 /* CONSTANTS */ 499 500 dcl 501 ( 502 xam_FIRST bit (1) aligned init ("1"b), /* flag to indicate first comment being displayed */ 503 xam_ME char (25) init ("xforum_attend_mtg_options") /* string identifing this module */ 504 ) internal static options (constant); 505 506 dcl MAX_LEN fixed bin init (256) internal static options (constant); 507 508 509 dcl ( /* entry screen choices */ 510 DISPLAY_COMMENT fixed bin init (1), 511 COPY_COMMENT fixed bin init (2), 512 LIST_COMMENT fixed bin init (3), 513 GET_COMMENT fixed bin init (4), 514 NEXT_COMMENT fixed bin init (5), 515 NEXT_UNREAD_COMMENT fixed bin init (6), 516 REPLY fixed bin init (7), 517 TALK fixed bin init (8), 518 NEXT_MTG fixed bin init (9), 519 MTG_MAINTENANCE fixed bin init (10) 520 ) internal static options (constant); 521 522 523 dcl ( /* mtg type */ 524 GET_ATTENDED fixed bin init (3), 525 GET_CHANGED fixed bin init (2), 526 GET_ELIGIBLE fixed bin init (1) 527 ) internal static options (constant); 528 529 530 /* BUILTINS */ 531 532 dcl addr builtin; 533 dcl char builtin; 534 dcl index builtin; 535 dcl length builtin; 536 dcl ltrim builtin; 537 dcl null builtin; 538 dcl rtrim builtin; 539 dcl string builtin; 540 dcl substr builtin; 541 dcl unspec builtin; 542 dcl verify builtin; 543 544 /* BASED */ 545 546 /* INCLUDE FILES */ 547 1 1 /* BEGIN INCLUDE FILE: forum_user_trans.incl.pl1 */ 1 2 1 3 dcl alloc_text_length fixed bin (21); /* length of text area to allocate */ 1 4 dcl alloc_subject_length fixed bin (21); /* length of subject area to allocate */ 1 5 dcl forum_user_trans_ptr ptr; /* pointer to below structure */ 1 6 1 7 dcl 1 forum_user_trans based (forum_user_trans_ptr) aligned, 1 8 2 type fixed bin, /* type of transaction */ 1 9 2 person_id char (22), /* person_id of author of this transaction */ 1 10 2 project_id char (9), /* project_id of author of this transaction */ 1 11 2 time fixed bin (71), /* time transaction was entered */ 1 12 2 trans_no fixed bin, /* number of this transaction */ 1 13 2 next_trans_ptr ptr, /* pointer (in user ring) of next transaction */ 1 14 2 prev_trans_ptr ptr, /* pointer (in user ring) of previous transaction */ 1 15 2 subject_length fixed bin (21), /* length of subject field of transaction */ 1 16 2 text_length fixed bin (21), /* length of text field of transaction */ 1 17 2 unfilled bit (1) aligned, /* set if transaction is NOT stored filled */ 1 18 2 subject char (alloc_subject_length refer (forum_user_trans.subject_length)) unaligned, /* subject of transaction */ 1 19 2 text char (alloc_text_length refer (forum_user_trans.text_length)) unaligned; /* text of transaction */ 1 20 1 21 declare user_trans_type fixed bin static options (constant) initial (1); 1 22 declare message_type fixed bin static options (constant) initial (2); 1 23 1 24 declare (ONLY_UNDELETED init (0), 1 25 INCLUDE_DELETED init (1), 1 26 ONLY_DELETED init (2)) 1 27 fixed bin static options (constant); 1 28 1 29 /* END INCLUDE FILE: forum_user_trans.incl.pl1 */ 548 549 2 1 /* BEGIN INCLUDE FILE menu_dcls.incl.pl1 2 2* declarations for the menu_ subroutines MTB 493 2 3* James R. Davis 26 Jan 81 to 20 Februrary 81 2 4**/ 2 5 2 6 /* format: off */ 2 7 2 8 dcl menu_$create entry ( 2 9 (*) char (*) varying, /* input: choices */ 2 10 (*) char (*) varying, /* input: headers */ 2 11 (*) char (*) varying, /* input: trailers */ 2 12 pointer, /* input: to format info */ 2 13 (*) char (1) unal, /* input: keys to use */ 2 14 pointer, /* input: to area */ 2 15 pointer, /* input: to needs str. */ 2 16 pointer, /* to menu: output */ 2 17 fixed bin (35) /* code */ 2 18 ); 2 19 2 20 dcl menu_$display entry ( 2 21 pointer, /* window */ 2 22 pointer, /* menu */ 2 23 fixed bin (35) /* code */ 2 24 ); 2 25 2 26 dcl menu_$get_choice entry ( 2 27 pointer, /* window */ 2 28 pointer, /* menu */ 2 29 pointer, /* to function key info */ 2 30 bit (1) aligned, /* function key hi: output */ 2 31 fixed bin, /* output: selection number */ 2 32 fixed bin (35) /* output: code */ 2 33 ); 2 34 2 35 dcl menu_$describe entry ( 2 36 pointer, /* menu */ 2 37 pointer, /* needs */ 2 38 fixed bin (35) /* code */ 2 39 ); 2 40 2 41 dcl menu_$destroy entry ( 2 42 pointer, /* menu */ 2 43 fixed bin (35) /* code */ 2 44 ); 2 45 2 46 dcl menu_$store entry ( 2 47 character (*), 2 48 character (*), 2 49 character (*), 2 50 bit (1) aligned, 2 51 pointer, 2 52 fixed bin (35)); 2 53 2 54 dcl menu_$retrieve entry ( 2 55 character (*), 2 56 character (*), 2 57 character (*), 2 58 pointer, 2 59 pointer, 2 60 fixed bin (35)); 2 61 dcl menu_$delete entry ( 2 62 character (*), 2 63 character (*), 2 64 character (*), 2 65 fixed binary (35)); 2 66 2 67 dcl menu_$list entry ( 2 68 character (*), 2 69 character (*), 2 70 character (*), 2 71 pointer, 2 72 fixed bin, 2 73 pointer, 2 74 fixed bin (35)); 2 75 2 76 dcl 1 menu_format aligned based (menu_format_ptr), 2 77 2 version fixed bin, 2 78 2 constraints, 2 79 3 max_width fixed bin, 2 80 3 max_height fixed bin, 2 81 2 n_columns fixed bin, 2 82 2 flags, 2 83 3 center_headers bit (1) unal, 2 84 3 center_trailers bit (1) unal, 2 85 3 pad bit (34) unal, 2 86 2 pad_char char (1); 2 87 2 88 dcl 1 menu_requirements aligned based (menu_requirements_ptr), 2 89 2 version fixed bin, 2 90 2 lines_needed fixed bin, 2 91 2 width_needed fixed bin, 2 92 2 n_options fixed bin; 2 93 2 94 dcl menu_format_ptr pointer; 2 95 dcl menu_requirements_ptr pointer; 2 96 2 97 dcl (menu_format_version_1, menu_requirements_version_1) 2 98 fixed bin internal static init (1) options (constant); 2 99 2 100 dcl MENU_OPTION_KEYS (35) char (1) unal internal static 2 101 options (constant) init 2 102 ("1", "2", "3", "4", "5", "6", "7", "8", "9", 2 103 "A", "B", "C", "D", "E", "F", "G", "H", "I", 2 104 "J", "K", "L", "M", "N", "O", "P", "Q", "R", 2 105 "S", "T", "U", "V", "W", "X", "Y", "Z"); 2 106 2 107 /* END INCLUDE FILE ... menu_dcls.incl.pl1 */ 550 551 3 1 /* BEGIN INCLUDE FILE xforum_error_info 84-06-19 Davids */ 3 2 3 3 dcl 01 xforum_error_info based, 3 4 02 name char (32), 3 5 02 entry char (32), 3 6 02 doing char (100), 3 7 02 code fixed bin (35), 3 8 02 reason char (512); 3 9 3 10 /* END INCLUDE FILE xforum_error_info */ 552 553 4 1 /* START OF: xforum_meeting_info.incl.pl1 * * * * * */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(84-05-03,Davids), approve(84-05-03,MCR7350), 4 7* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 4 8* Changed the length of name from 20 characters to 32 characters. 4 9* Version 2 forum names can be 26 characters long (forum suffix) - 4 10* and a little extra incase version 3 uses a shorter suffix yet. 4 11* 4 12* 84-10-03 Davids: added the unread_count, next_unread, and 4 13* seen_map_ptr elements. Also the declaration for the 4 14* seen_map_string and seen_map. 4 15* 4 16* 85-01-24 Davids: added the set_array_ptr to the 4 17* xforum_meeting_info structure and the set_array structure and 4 18* SET_ARRAY_SPEC_LEN variable. 4 19* 2) change(86-02-17,LJAdams), approve(86-02-17,MCR7350), 4 20* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 4 21* Added restref flag. 4 22* END HISTORY COMMENTS */ 4 23 4 24 declare 1 xforum_meeting_info based (xforum_meeting_info_ptr), 4 25 2 name char (32), 4 26 2 lidx fixed bin, 4 27 2 idx fixed bin, 4 28 2 current fixed bin, 4 29 2 last_seen fixed bin, 4 30 2 first_trans fixed bin, 4 31 2 last_trans fixed bin, 4 32 2 new_trans fixed bin, 4 33 2 flags unal, 4 34 3 all bit (1), 4 35 3 allref bit (1), 4 36 3 restref bit (1), 4 37 3 new bit (1), 4 38 3 range bit (1), 4 39 3 set bit (1), 4 40 2 current_ref fixed bin, 4 41 2 low fixed bin, 4 42 2 high fixed bin, 4 43 2 trans_struct_ptr ptr, 4 44 2 next_unread fixed bin, 4 45 2 unread_count fixed bin, 4 46 2 seen_map_ptr ptr, 4 47 2 set_array_ptr ptr; 4 48 4 49 dcl seen_map_string bit (1000000) based; 4 50 dcl seen_map (1000000) bit (1) unaligned based; 4 51 4 52 dcl 01 set_array based (xforum_meeting_info.set_array_ptr), 4 53 02 number fixed bin, 4 54 02 spec char (80) varying, 4 55 02 index (100000); 4 56 4 57 dcl SET_ARRAY_SPEC_LEN fixed bin init (80) internal static options (constant); 4 58 4 59 /* END OF: xforum_meeting_info.incl.pl1 * * * * * */ 554 555 5 1 /* START OF: xforum_meeting_list.incl.pl1 * * * * * */ 5 2 5 3 /* 5 4* 84-03-27 Davids: added the forum_version element 5 5* 5 6* 84-05-03 Davids: Changed the length of long_name and short_name from 5 7* 24 characters to 32 characters. Version 2 forum names can be 26 characters 5 8* long (forum suffix) - and a little extra incase version 3 uses a shorter 5 9* suffix yet. 5 10* 5 11* 84-09-24 Davids: Added the date_time, npath, and path elements. 5 12**/ 5 13 5 14 declare 1 xforum_meeting_list aligned 5 15 based (xforum_meeting_list_ptr), 5 16 2 date_time fixed bin (71), 5 17 2 no_selected fixed bin, 5 18 2 no_participant fixed bin, 5 19 2 no_changed fixed bin, 5 20 2 current_selected fixed bin, 5 21 2 current_participant fixed bin, 5 22 2 current_changed fixed bin, 5 23 2 forums (0 refer 5 24 (xforum_meeting_list.no_selected)), 5 25 3 long_name char (32) unaligned, 5 26 3 short_name char (32) unaligned, 5 27 3 directory char (168) unaligned, 5 28 3 forum_version fixed bin, 5 29 3 chairman char (32) unaligned, 5 30 3 uid bit (36) aligned, 5 31 3 flags unaligned, 5 32 4 eligible bit (1), 5 33 4 removed bit (1), 5 34 4 notify bit (1), 5 35 4 participant bit (1), 5 36 4 two_names bit (1), 5 37 4 read_only bit (1), 5 38 4 attended bit (1), 5 39 4 changed bit (1), 5 40 4 been_to bit (1), 5 41 4 mbz bit (27), 5 42 2 npaths fixed bin, 5 43 2 paths (0 refer (xforum_meeting_list.npaths)) 5 44 char (168) varying; 5 45 5 46 /* END OF: xforum_meeting_list.incl.pl1 * * * * * */ 556 557 6 1 /* START OF: xforum_ptr_struct_.incl.pl1 * * * * * */ 6 2 6 3 declare 1 xforum_ptr_struct_ external static, 6 4 2 xforum_meeting_list_ptr ptr, 6 5 2 xforum_meeting_info_ptr ptr, 6 6 2 xforum_trans_array_ptr ptr, 6 7 2 xforum_system_area_ptr ptr; 6 8 6 9 /* END OF: xforum_ptr_struct_.incl.pl1 * * * * * */ 558 559 7 1 /* BEGIN INCLUDE FILE xforum_spy 84-06-19 NSDavids */ 7 2 7 3 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(85-01-01,Davids), approve(85-01-01,MCR7350), 7 7* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 7 8* Modified to include personalization and subject selection. 7 9* END HISTORY COMMENTS */ 7 10 7 11 7 12 dcl 01 spy based (spy_ptr), 7 13 02 version char (8), 7 14 02 user_name char (32), 7 15 02 date_time char (32), 7 16 02 args char (80), 7 17 02 eligible fixed bin, 7 18 02 attending fixed bin, 7 19 02 changed fixed bin, 7 20 02 count fixed bin, 7 21 02 choices (0 refer (count)), 7 22 03 at fixed bin, 7 23 03 choice char (10); 7 24 7 25 7 26 dcl spy_ptr ptr; 7 27 dcl SPY_VERSION_1 char (8) init ("spy_0001"); 7 28 7 29 dcl SPY_AT_1 fixed bin init (1) internal static options (constant); 7 30 /* At Executive Forum Main menu */ 7 31 dcl SPY_AT_2 fixed bin init (2) internal static options (constant); 7 32 /* Requesting Help */ 7 33 dcl SPY_AT_3 fixed bin init (3) internal static options (constant); 7 34 /* At General Help menu */ 7 35 dcl SPY_AT_4 fixed bin init (4) internal static options (constant); 7 36 /* At query for a meeting name to goto */ 7 37 dcl SPY_AT_5 fixed bin init (5) internal static options (constant); 7 38 /* At menu of meeting names */ 7 39 dcl SPY_AT_6 fixed bin init (6) internal static options (constant); 7 40 /* At query for a meeting name to resign from */ 7 41 dcl SPY_AT_7 fixed bin init (7) internal static options (constant); 7 42 /* At Attending Meeting menu */ 7 43 dcl SPY_AT_8 fixed bin init (8) internal static options (constant); 7 44 /* At replying to a transaction */ 7 45 dcl SPY_AT_9 fixed bin init (9) internal static options (constant); 7 46 /* At entering a new transaction */ 7 47 dcl SPY_AT_10 fixed bin init (10) internal static options (constant); 7 48 /* At query for a transaction specifier */ 7 49 dcl SPY_AT_11 fixed bin init (11) internal static options (constant); 7 50 /* At query to check for changed meetings */ 7 51 dcl SPY_AT_12 fixed bin init (12) internal static options (constant); 7 52 /* At Getting Started menu */ 7 53 dcl SPY_AT_13 fixed bin init (13) internal static options (constant); 7 54 /* Meeting list update query, change in number of search paths */ 7 55 dcl SPY_AT_14 fixed bin init (14) internal static options (constant); 7 56 /* Meeting list update query, change in search paths listed */ 7 57 dcl SPY_AT_15 fixed bin init (15) internal static options (constant); 7 58 /* Copy Comments file name query */ 7 59 dcl SPY_AT_16 fixed bin init (16) internal static options (constant); 7 60 /* At Personalization menu */ 7 61 dcl SPY_AT_17 fixed bin init (17) internal static options (constant); 7 62 /* Personalizing an item prompt */ 7 63 dcl SPY_AT_18 fixed bin init (18) internal static options (constant); 7 64 /* string search prompt for comment selection */ 7 65 dcl SPY_AT_19 fixed bin init (19) internal static options (constant); 7 66 /* subject selection */ 7 67 7 68 dcl SPY_LOCATION (19) char (20) varying init ( 7 69 "XForum Main menu", 7 70 "Requesting Help", 7 71 "General Help menu", 7 72 "Meeting to goto?", 7 73 "Meeting names menu", 7 74 "Meeting to resign?", 7 75 "Meeting menu", 7 76 "Repling", 7 77 "Talking", 7 78 "Trans. spec?", 7 79 "Check changed mtgs", 7 80 "Getting Started", 7 81 "List update, num", 7 82 "List update, list", 7 83 "Copy to file name", 7 84 "Personalizing menu", 7 85 "Personalizing prompt", 7 86 "String search prompt", 7 87 "Subject selection") internal static options (constant); 7 88 7 89 /* END INCLUDE FILE xforum_spy */ 560 561 8 1 /* START OF: xforum_windows.incl.pl1 * * * * * */ 8 2 8 3 /* structures for windows used by xforum - Deryk Barker January 1984 */ 8 4 8 5 dcl 1 xforum_windows aligned external static, 8 6 2 (status, menu, bottom, orig_user_io, help_line) aligned like xforum_window_info; 8 7 8 8 dcl 1 xforum_window_info, 8 9 2 iocb ptr, 8 10 2 position aligned like window_position_info; 8 11 9 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 9 2 /* format: style3 */ 9 3 9 4 /* Modified 26 January 1982 by William York to add the set_more_handler 9 5* and reset_more_handler control orders. */ 9 6 /* Modified October 1982 by WMY to add set and get_token_characters, 9 7* set and get_more_prompt. */ 9 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 9 9* structure. */ 9 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 9 11* partial screen width windows. */ 9 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 9 13* This should be removed when window_info.incl.pl1 is created. */ 9 14 /* Modified 29 February 1984 by Barmar to add version 1 9 15* get_editor_key_bindings_info. */ 9 16 /* Modified 1 March 1984 by Barmar to add version 1 9 17* set_editor_key_bindings_info. */ 9 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 9 19* line_editor_key_bindings_info, which includes the name, description, and 9 20* info path */ 9 21 9 22 /* structure for the set_window_info and get_window_info 9 23* control orders. */ 9 24 9 25 dcl 1 window_position_info 9 26 based (window_position_info_ptr), 9 27 2 version fixed bin, 9 28 2 origin, 9 29 3 column fixed bin, 9 30 3 line fixed bin, 9 31 2 extent, 9 32 3 width fixed bin, 9 33 3 height fixed bin; 9 34 9 35 dcl (window_position_info_version, window_position_info_version_1) 9 36 fixed bin internal static init (1) options (constant); 9 37 dcl window_position_info_ptr 9 38 pointer; 9 39 9 40 /* structure for the set_window_status and get_window_status 9 41* control orders */ 9 42 9 43 declare window_status_info_ptr 9 44 pointer; 9 45 declare 1 window_status_info 9 46 aligned based (window_status_info_ptr), 9 47 2 version fixed bin, 9 48 2 status_string bit (36) aligned; /* string (window_status) */ 9 49 /* see window_status.incl.pl1 for the contents of this string */ 9 50 9 51 9 52 declare (window_status_version, window_status_version_1) 9 53 fixed bin internal static init (1) options (constant); 9 54 9 55 /* info structure for the set_more_responses and get_more_responses control 9 56* orders */ 9 57 9 58 9 59 dcl 1 more_responses_info 9 60 aligned based (more_responses_info_ptr), 9 61 2 version fixed bin, 9 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 9 63 2 n_noes fixed bin, 9 64 2 yeses char (32) unaligned, 9 65 2 noes char (32) unaligned; 9 66 9 67 dcl (more_responses_info_version_1, more_responses_version) 9 68 fixed bin internal static init (1) options (constant); 9 69 dcl more_responses_info_ptr 9 70 pointer; 9 71 9 72 /* structure for the set_break_table and get_break_table 9 73* control orders */ 9 74 9 75 declare break_table_ptr pointer; 9 76 declare 1 break_table_info aligned based (break_table_ptr), 9 77 2 version fixed bin, 9 78 2 breaks (0:127) bit (1) unaligned; 9 79 9 80 declare (break_table_info_version, break_table_info_version_1) 9 81 fixed bin init (1) internal static options (constant); 9 82 9 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 9 84 2 version fixed bin, 9 85 2 flags unaligned, 9 86 3 old_handler_valid 9 87 bit(1), 9 88 3 pad bit(35), 9 89 2 more_handler entry (pointer, bit(1) aligned), 9 90 2 old_more_handler entry (pointer, bit(1) aligned); 9 91 9 92 declare more_handler_info_ptr pointer; 9 93 9 94 declare (more_handler_info_version, more_handler_info_version_3) 9 95 fixed bin internal static options (constant) init (3); 9 96 9 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 9 98 2 version char(8), 9 99 2 token_character_count 9 100 fixed bin, 9 101 2 token_characters 9 102 char (128) unaligned; 9 103 9 104 declare token_characters_info_ptr pointer; 9 105 9 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 9 107 9 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 9 109 2 version char(8), 9 110 2 more_prompt char(80); 9 111 9 112 declare more_prompt_info_ptr pointer; 9 113 9 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 9 115 9 116 /* Line editor stuff ... */ 9 117 9 118 dcl line_editor_key_binding_info_ptr 9 119 pointer; 9 120 9 121 dcl line_editor_binding_count 9 122 fixed bin; 9 123 dcl line_editor_longest_sequence 9 124 fixed bin; 9 125 /* For each binding, action defines what to do for that sequence. Constants 9 126* are defined in window_editor_values.incl.pl1. Only if action is set to 9 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 9 128 9 129 dcl 1 line_editor_key_binding_info 9 130 aligned based (line_editor_key_binding_info_ptr), 9 131 2 version char(8), 9 132 2 binding_count fixed bin, 9 133 2 longest_sequence fixed bin, 9 134 2 bindings (line_editor_binding_count refer 9 135 (line_editor_key_binding_info.binding_count)), 9 136 3 sequence char(line_editor_longest_sequence refer 9 137 (line_editor_key_binding_info.longest_sequence)) varying, 9 138 3 action fixed bin, 9 139 3 numarg_action fixed binary, 9 140 3 editor_routine entry (pointer, fixed bin(35)), 9 141 3 name char (64) varying unaligned, 9 142 3 description char (256) varying unaligned, 9 143 3 info_path unaligned, 9 144 4 info_dir char (168), 9 145 4 info_entry char (32); 9 146 9 147 9 148 dcl line_editor_key_binding_info_version_3 9 149 char(8) static options (constant) init ("lekbi003"); 9 150 9 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 9 152 2 version char (8), 9 153 2 flags, 9 154 3 entire_state bit (1) unaligned, 9 155 3 mbz bit (35) unaligned, 9 156 2 key_binding_info_ptr ptr, 9 157 2 entire_state_ptr ptr; 9 158 9 159 dcl get_editor_key_bindings_info_ptr ptr; 9 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 9 161 9 162 dcl 1 set_editor_key_bindings_info aligned 9 163 based (set_editor_key_bindings_info_ptr), 9 164 2 version char (8), 9 165 2 flags, 9 166 3 replace bit (1) unaligned, 9 167 3 update bit (1) unaligned, 9 168 3 mbz bit (34) unaligned, 9 169 2 key_binding_info_ptr ptr; 9 170 9 171 dcl set_editor_key_bindings_info_ptr ptr; 9 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 9 173 9 174 /* This should be moved to window_info.incl.pl1 when that include file is 9 175* created. JR 2/1/84 */ 9 176 9 177 dcl 1 window_edit_line_info 9 178 based (window_edit_line_info_ptr), 9 179 2 version char (8), 9 180 2 line_ptr ptr, 9 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 9 182 9 183 dcl window_edit_line_info_version_1 9 184 char (8) static options (constant) init ("wedl0001"); 9 185 9 186 dcl window_edit_line_info_ptr 9 187 ptr; 9 188 9 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 8 12 8 13 8 14 /* END OF: xforum_windows.incl.pl1 * * * * * */ 562 563 10 1 /* BEGIN INCLUDE FILE xforum_answers.incl.pl1 */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(87-04-13,LJAdams), approve(87-04-30,MCR7684), 10 6* audit(87-07-30,Blair), install(87-08-06,MR12.1-1065): 10 7* Created. 10 8* END HISTORY COMMENTS */ 10 9 10 10 dcl 1 answer_array, 10 11 2 N fixed bin, /* Number of acceptable answers; 0 = all */ 10 12 2 max_length fixed bin, /* max length user reply can be */ 10 13 2 answer (10) char (80) varying; 10 14 10 15 10 16 dcl ZERO fixed bin internal static options (constant) init (0), 10 17 ONE fixed bin internal static options (constant) init (1), 10 18 FOUR fixed bin internal static options (constant) init (4); 10 19 10 20 10 21 /* END INCLUDE FILE xforum_answers .incl.pl1 */ 564 565 566 567 11 1 /* BEGIN INCLUDE FILE xforum_prompts.incl.pl1 */ 11 2 11 3 11 4 /****^ HISTORY COMMENTS: 11 5* 1) change(87-04-13,LJAdams), approve(87-07-24,MCR7684), 11 6* audit(87-07-24,Blair), install(87-08-06,MR12.1-1065): 11 7* Created. 11 8* END HISTORY COMMENTS */ 11 9 11 10 dcl (BREAK_PROMPT char (34) init ("Press BREAK to return to the menu."), 11 11 COMMENTS_PROMPT char (40) init ("Which comment(s) do you wish to select? "), 11 12 COMMENT_PROMPT char (37) init ("Which comment do you wish to select? "), 11 13 FILE_PROMPT char (28) init ("Enter the name of the file: "), 11 14 FIRST_PROMPT char (80) init ("Enter the command and press RETURN (to return to Xforum just press RETURN):"), 11 15 RETURN_PROMPT char (46) init (" Press to continue"), 11 16 TEXT_PROMPT char (31) init ("Enter text to be searched for: ")) 11 17 internal static options (constant); 11 18 11 19 11 20 /* END INCLUDE FILE xforum_prompts.incl.pl1 */ 569 570 12 1 /* BEGIN INCLUDE FILE xforum_help_infos.incl.pl1 */ 12 2 12 3 12 4 /****^ HISTORY COMMENTS: 12 5* 1) change(87-04-13,LJAdams), approve(87-07-24,MCR7684), 12 6* audit(87-07-24,Blair), install(87-08-06,MR12.1-1065): 12 7* Created. 12 8* END HISTORY COMMENTS */ 12 9 12 10 dcl (GETTING_STARTED_HELP char (27) init ("xforum_getting_started.info"), 12 11 PROMPT_HELP char (18) init ("xforum_prompt"), 12 12 FUNCTION_KEY_HELP char (25) init ("xforum_function_keys.info"), 12 13 MENU_OPTION_HELP char (23) init ("xforum_menu_option.info")) 12 14 internal static options (constant); 12 15 12 16 12 17 /* END INCLUDE FILE xforum_help_infos.incl.pl1 */ 571 572 573 574 call attend_a_meeting (xam_midx, xam_match_bits, xam_spy_ptr, xam_more); 575 do while (xam_more); 576 xam_next_mtg_index = xforum_main_options$index_of_next_meeting (xam_match_bits, xam_spy_ptr); 577 call attend_a_meeting (xam_next_mtg_index, xam_match_bits, xam_spy_ptr, xam_more); 578 end; 579 580 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 581 call window_$clear_window (xforum_windows.menu.iocb, (0)); 582 583 return; 584 585 attend_a_meeting: proc (aam_midx, aam_match_bits, aam_spy_ptr, aam_more); 586 587 /* PARAMETERS */ 588 589 dcl aam_midx fixed bin; /* (input) index in the xforum meeting list of */ 590 /* meeting to be attended */ 591 dcl aam_match_bits bit (36) aligned; /* (input) identifies the class of meeting being attended */ 592 dcl aam_spy_ptr ptr; /* (input) pointer to spy structure */ 593 dcl aam_more bit (1) aligned; /* (output) "1" implies user wants to go to another meeting */ 594 /* "0" implies user wants to return to main menu */ 595 596 /* INTERNAL AUTOMATIC */ 597 598 dcl aam_chairman_msg char (256); /* chairman message for the meeting */ 599 dcl aam_choice fixed bin; /* user's choice from meeting menu */ 600 dcl aam_code fixed bin (35); /* standard error code */ 601 dcl aam_current_menu_ptr ptr; /* pointer to menu structure for menu currently displayed */ 602 dcl aam_fkey bit (1) aligned; /* "1"b implies user's choice is a function key */ 603 dcl aam_fidx fixed bin; /* index identifing meeting to forum */ 604 dcl aam_headers (1) char (44) varying; /*space for first line of status window */ 605 dcl aam_mtg_menu_ptr ptr; /* pointer to the menu structure for the meeting menu */ 606 dcl aam_multics_mode bit (1); /* "1"b implies that the user can invoke multics mode */ 607 dcl aam_type fixed bin; /* type of current meeting, changed, participating, or eligible */ 608 dcl aam_unused char (256); /* unused output from subroutine call */ 609 dcl aam_unused_fb fixed bin; /* unused output from subroutine call */ 610 611 dcl 01 aam_mtg_requirements like menu_requirements; 612 /* structure describing the requirments of the meeting menu */ 613 614 /* INTERNAL STATIC */ 615 616 dcl aam_choices (10) char (40) varying 617 init ( 618 "Display Current Comment(s)", 619 "Copy Current Comment(s)", 620 "Select/List Any Comment(s)", 621 "Select/Display Any Comment(s)", 622 "Select/Display Next Comment", 623 "Select/Display Next Unread Comment", 624 "Reply To Current Comment", 625 "Start New Discussion", 626 "", 627 "Meeting Maintenance"); 628 /* options for meeting menu, option 9 will be filled in */ 629 /* when type of meeting is determined */ 630 631 /* CONSTANTS */ 632 633 dcl ( 634 aam_ATTENDED bit (36) aligned init ("000100000000000000000000000000000000"b), /* meeting type */ 635 aam_CHANGED bit (36) aligned init ("000000010000000000000000000000000000"b), /* meeting type */ 636 aam_ELIGIBLE bit (36) aligned init ("111111110000000000000000000000000000"b), /* meeting type */ 637 aam_FIRST_MENU fixed bin init (2),/* function keys for goto first menu */ 638 aam_FIRST_MENU2 fixed bin init (9), 639 aam_HELP fixed bin init (1),/* function key for help */ 640 aam_MEETING_TYPE (3) char (9) varying init ("Eligible ", "Changed ", "Attended "), 641 /* strings describing the type of meeting for */ 642 /* option 9 of the menu */ 643 aam_MTG_MENU_HEIGHT fixed bin init (6),/* height of the meeting menu */ 644 aam_MULTICS fixed bin init (8),/* function keys for multics mode */ 645 aam_MULTICS2 fixed bin init (15), 646 aam_PREV_MENU fixed bin init (3),/* function keys for previous menu */ 647 aam_PREV_MENU2 fixed bin init (10), 648 aam_QUIT fixed bin init (4),/* function keys for quiting xforum */ 649 aam_QUIT2 fixed bin init (11), 650 aam_READ_ONLY_MESSAGE char (150) init ( 651 "You are not allowed to enter comments in this meeting." || 652 "^/Send mail to ^a for an explanation and/or a change in status."), 653 /* error message for trying to write to a meeting */ 654 /* without write access */ 655 aam_REDISPLAY fixed bin init (5),/* function keys for redisplaying the screen */ 656 aam_REDISPLAY2 fixed bin init (12), 657 aam_REPLY bit (1) aligned init ("1"b), /* flag indicating reply mode */ 658 aam_TALK bit (1) aligned init ("0"b) /* flag indicating talk mode */ 659 ) internal static options (constant); 660 661 aam_more = "0"b; 662 aam_mtg_menu_ptr = null (); 663 664 if aam_midx < 1 | aam_midx > no_selected 665 then return; 666 667 spy_ptr = aam_spy_ptr; 668 669 aam_multics_mode = xforum_user_profile$get_multics_mode (); 670 671 on quit 672 begin; 673 call xforum_window_mgr$check_window_status; 674 call window_$bell (xforum_windows.menu.iocb, (0)); 675 xforum_meeting_info.current = 0; 676 call xforum_help_line_$change ("10110000"b, "Leave Meeting", "", ""); 677 call xforum_status_$redisplay ((0)); 678 call collect_spy_data (SPY_AT_7, "QUIT"); 679 goto meeting_get_choice; 680 end; 681 682 on cleanup 683 begin; 684 if aam_fidx ^= -1 685 then do; 686 xforum_meeting_info.current = 0; 687 call xforum_attend_mtg_utilities$close_meeting (xforum_meeting_info_ptr, 688 xforum_meeting_list_ptr, aam_midx, aam_fidx, aam_mtg_menu_ptr); 689 end; 690 end; 691 692 call xforum_attend_mtg_utilities$set_up_meeting (xforum_meeting_list_ptr, xforum_meeting_info_ptr, aam_midx, "0"b, 693 aam_fidx, aam_unused, aam_chairman_msg); 694 if aam_fidx = 0 695 then return; 696 697 698 if aam_match_bits = aam_ELIGIBLE then 699 aam_type = GET_ELIGIBLE; 700 else if aam_match_bits = aam_CHANGED then 701 aam_type = GET_CHANGED; 702 else if aam_match_bits = aam_ATTENDED then 703 aam_type = GET_ATTENDED; 704 705 aam_headers (1) = "Attending " || rtrim (xforum_meeting_info.name) || " meeting"; 706 call xforum_status_$update_title ((aam_headers (1))); 707 708 aam_choices (9) = "Go To Next " || aam_MEETING_TYPE (aam_type) || "Meeting"; 709 710 call xforum_attend_mtg_utilities$update_status (xforum_meeting_info_ptr, 0, "", 0, aam_fidx); 711 call xforum_window_mgr$resynch_windows (aam_MTG_MENU_HEIGHT, "1"b); 712 713 aam_mtg_requirements.version = menu_requirements_version_1; 714 715 call xforum_create_menu_ (aam_choices, addr (aam_mtg_requirements), aam_mtg_menu_ptr, aam_code); 716 if aam_code ^= 0 then do; 717 call com_err_$suppress_name (aam_code, xam_ME, "Trying to create meeting menu."); 718 goto exit_attend_a_meeting; 719 end; 720 721 call xforum_window_mgr$menu_display (aam_mtg_menu_ptr); 722 723 on xforum_redisplay_menu 724 call xforum_window_mgr$menu_display (aam_mtg_menu_ptr); /* for redisplay function */ 725 726 if rtrim (aam_chairman_msg) ^= "" 727 then call ioa_ ("^a", aam_chairman_msg); 728 729 aam_current_menu_ptr = aam_mtg_menu_ptr; 730 731 /* get choice */ 732 733 meeting_get_choice: 734 do while ("1"b); 735 call xforum_window_mgr$menu_get_choice (aam_mtg_menu_ptr, aam_fkey, aam_choice); 736 737 if aam_fkey 738 then call collect_spy_data (SPY_AT_7, "F" || rtrim (ltrim (char (aam_choice)))); 739 else call collect_spy_data (SPY_AT_7, rtrim (ltrim (char (aam_choice)))); 740 741 if aam_fkey then 742 if aam_choice = aam_HELP 743 then do; 744 call xforum_help_$get_help (aam_mtg_menu_ptr, "Meeting", aam_choices, 745 spy_ptr, xforum_system_area_ptr); 746 call xforum_status_$update_title ((aam_headers (1))); 747 call xforum_attend_mtg_utilities$update_status (xforum_meeting_info_ptr, 0, "", 0, aam_fidx); 748 call xforum_status_$redisplay ((0)); 749 call xforum_window_mgr$resynch_windows (aam_MTG_MENU_HEIGHT, "0"b); 750 call xforum_window_mgr$menu_display (aam_mtg_menu_ptr); 751 end; 752 else if aam_choice = aam_FIRST_MENU | aam_choice = aam_FIRST_MENU2 753 then goto exit_attend_a_meeting; 754 else if aam_choice = aam_PREV_MENU | aam_choice = aam_PREV_MENU2 755 then goto exit_attend_a_meeting; 756 else if aam_choice = aam_QUIT | aam_choice = aam_QUIT2 757 then do; 758 xforum_meeting_info.current = 0; 759 call xforum_attend_mtg_utilities$close_meeting (xforum_meeting_info_ptr, 760 xforum_meeting_list_ptr, aam_midx, aam_fidx, aam_mtg_menu_ptr); 761 signal exit_executive_forum; 762 end; 763 else if aam_choice = aam_REDISPLAY | aam_choice = aam_REDISPLAY2 764 then call xforum_redisplay_; 765 else if (aam_choice = aam_MULTICS | aam_choice = aam_MULTICS2) & aam_multics_mode 766 then do; 767 call xforum_multics_mode (aam_unused_fb); 768 call xforum_window_mgr$resynch_windows (aam_MTG_MENU_HEIGHT, "0"b); 769 call xforum_attend_mtg_utilities$update_status (xforum_meeting_info_ptr, 0, "", 0, aam_fidx); 770 call xforum_window_mgr$menu_display (aam_mtg_menu_ptr); 771 goto meeting_get_choice; 772 end; 773 else call window_$bell (xforum_windows.menu.iocb, (0)); 774 else do; 775 if aam_choice = DISPLAY_COMMENT 776 then call display_trans (aam_fidx, forums (aam_midx).forum_version); 777 else 778 if aam_choice = COPY_COMMENT 779 then call copy_comments (spy_ptr, aam_fidx, forums (aam_midx).forum_version); 780 else 781 if aam_choice = LIST_COMMENT 782 then do; 783 call select_trans_spec (spy_ptr); 784 call list_trans (aam_fidx); 785 end; 786 else 787 if aam_choice = GET_COMMENT 788 then do; 789 call select_trans_spec (spy_ptr); 790 call display_trans (aam_fidx, forums (aam_midx).forum_version); 791 end; 792 else 793 if aam_choice = NEXT_COMMENT 794 then call next_trans (aam_fidx, forums (aam_midx).forum_version); 795 else 796 if aam_choice = NEXT_UNREAD_COMMENT 797 then call next_unread_trans (aam_fidx, forums (aam_midx).forum_version); 798 else 799 if aam_choice = REPLY 800 then do; 801 if ^forums (aam_midx).flags.read_only 802 then do; 803 call xforum_attend_mtg_utilities$enter_trans (xforum_meeting_info_ptr, 804 aam_fidx, spy_ptr, aam_REPLY, "0"b); 805 aam_current_menu_ptr = null (); 806 end; 807 else do; 808 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 809 call ioa_ (aam_READ_ONLY_MESSAGE, forums (aam_midx).chairman); 810 end; 811 end; 812 else 813 if aam_choice = TALK 814 then do; 815 if ^forums (aam_midx).flags.read_only 816 then do; 817 call xforum_attend_mtg_utilities$enter_trans (xforum_meeting_info_ptr, 818 aam_fidx, spy_ptr, aam_TALK, "0"b); 819 aam_current_menu_ptr = null (); 820 end; 821 else do; 822 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 823 call ioa_ (aam_READ_ONLY_MESSAGE, forums (aam_midx).chairman); 824 end; 825 end; 826 else 827 if aam_choice = NEXT_MTG 828 then do; 829 xforum_meeting_info.current = 0; 830 call xforum_attend_mtg_utilities$close_meeting (xforum_meeting_info_ptr, 831 xforum_meeting_list_ptr, aam_midx, aam_fidx, aam_mtg_menu_ptr); 832 aam_more = "1"b; 833 return; 834 end; 835 else 836 if aam_choice = MTG_MAINTENANCE 837 then call meeting_maintenance; 838 end; 839 840 call iox_$control (xforum_windows.bottom.iocb, "reset_more", 841 null, (0)); /* get back in step */ 842 843 if aam_current_menu_ptr ^= aam_mtg_menu_ptr 844 then do; 845 call xforum_window_mgr$resynch_windows (aam_MTG_MENU_HEIGHT, "1"b); 846 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 847 call xforum_status_$update_title ((aam_headers (1))); 848 call xforum_attend_mtg_utilities$update_status (xforum_meeting_info_ptr, 0, "", 0, aam_fidx); 849 call xforum_window_mgr$menu_display (aam_mtg_menu_ptr); 850 aam_current_menu_ptr = aam_mtg_menu_ptr; 851 end; 852 end; 853 854 exit_attend_a_meeting: 855 xforum_meeting_info.current = 0; 856 call xforum_attend_mtg_utilities$close_meeting (xforum_meeting_info_ptr, 857 xforum_meeting_list_ptr, aam_midx, aam_fidx, aam_mtg_menu_ptr); 858 859 end attend_a_meeting; 860 861 display_trans: proc (dt_fidx, dt_version); 862 863 /* PARAMETERS */ 864 865 dcl dt_fidx fixed bin; /* (input) index identifing meeting to forum */ 866 dcl dt_version fixed bin; /* (input) version of the forum meeting */ 867 868 /* INTERNAL AUTOMATIC */ 869 870 dcl dt_code fixed bin (35); /* standard error code */ 871 dcl dt_is_first bit (1) aligned; /* used to flag the first comment being displayed */ 872 dcl dt_trans_no fixed bin; /* forum index of comment about to be displayed */ 873 874 875 876 877 878 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 879 880 dt_code = 0; 881 dt_is_first = "1"b; 882 883 call xforum_get_selected_trans$first (xforum_meeting_info_ptr, forum_user_trans_ptr, dt_code); 884 do while (dt_code ^= forum_error_table_$invalid_trans_idx); 885 if dt_code = 0 886 then do; 887 dt_trans_no = forum_user_trans.trans_no; 888 call xforum_attend_mtg_utilities$update_status (xforum_meeting_info_ptr, 889 dt_trans_no, "", dt_version, dt_fidx); 890 call xforum_format_$display (forum_user_trans_ptr, dt_is_first, dt_code); 891 dt_is_first = "0"b; 892 end; 893 call xforum_get_selected_trans$next (xforum_meeting_info_ptr, forum_user_trans_ptr, dt_code); 894 end; 895 896 return; 897 898 end display_trans; 899 900 next_trans: proc (nt_fidx, nt_version); 901 902 /* PARAMETERS */ 903 904 dcl nt_fidx fixed bin; /* (input) index identifing meeting to forum */ 905 dcl nt_version fixed bin; /* (input) version of the forum meeting */ 906 907 /* INTERNAL AUTOMATIC */ 908 909 dcl nt_code fixed bin (35); /* standard error code */ 910 911 912 913 914 915 if xforum_meeting_info.current = 0 then 916 if ^xforum_meeting_info.range then do; 917 /* range is ok */ 918 call com_err_$suppress_name (0, "", 919 """Next"" incompatible with current comment specifier."); 920 return; 921 end; 922 923 if xforum_meeting_info.range 924 then call xforum_trans_$next_trans (xforum_meeting_info.high, forum_user_trans_ptr, nt_code); 925 else call xforum_trans_$next_trans (xforum_meeting_info.current, forum_user_trans_ptr, nt_code); 926 if nt_code ^= 0 927 then do; 928 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 929 if nt_code = forum_error_table_$invalid_trans_idx 930 then call com_err_$suppress_name (0, xam_ME, "There is no next comment."); 931 else call com_err_$suppress_name (nt_code, xam_ME); 932 end; 933 else do; 934 xforum_meeting_info.current = forum_user_trans.trans_no; 935 xforum_meeting_info.range = "0"b; 936 call xforum_attend_mtg_utilities$update_status (xforum_meeting_info_ptr, 937 forum_user_trans.trans_no, "", nt_version, nt_fidx); 938 call xforum_format_$display (forum_user_trans_ptr, xam_FIRST, nt_code); 939 if nt_code ^= 0 940 then call com_err_$suppress_name (nt_code, xam_ME, "Trying to print comment."); 941 end; 942 943 return; 944 945 end next_trans; 946 947 list_trans: proc (lt_fidx); 948 949 /* PARAMETERS */ 950 951 dcl lt_fidx fixed bin; /* (input) index identifing meeting to forum */ 952 953 /* INTERNAL AUTOMATIC */ 954 955 dcl lt_code fixed bin (35); /* standard error code */ 956 dcl lt_date_len fixed bin; /* max number of chars needed to display date */ 957 dcl lt_time_len fixed bin; /* max number of chars needed to display time */ 958 dcl lt_time_position fixed bin; /* starting column of time field */ 959 dcl lt_author_position fixed bin; /* starting column of author field */ 960 dcl lt_subject_position fixed bin; /* starting column of subject field */ 961 dcl lt_subject_max_len fixed bin; /* maximum number of chars of subject that can be displayed */ 962 dcl lt_header_line char (100); /* header line that will appear above the comment listings */ 963 dcl lt_item_line char (100); /* formated comment listing */ 964 dcl lt_unused1 fixed bin; /* unused output from system calls */ 965 966 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 967 968 call xforum_attend_mtg_utilities$update_status (xforum_meeting_info_ptr, 0, "", 0, lt_fidx); 969 970 lt_date_len = date_time_$format_max_length ("^", "", ""); 971 lt_time_len = date_time_$format_max_length ("^