COMPILATION LISTING OF SEGMENT xforum_dyn_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 1020.0 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(85-01-08,Davids), approve(86-02-04,MCR7350), 13* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 14* Removed the function_key_data_ptr paramater from the calling 15* sequence of get_choice. Replaced it with a call to 16* xforum_user_profile$get_function_key_data_ptr. 17* 18* 85-04-02 Davids: Added the entry point display_and_get_choice. 19* This entry will, given an array of options, create a dynamic menu 20* of those options, display the sub menus created and process the 21* function keys. It will also add to the original list of options a 22* special option that will go at the end of each sub menu. 23* 24* 85-04-03 Davids: Added the entry point prompt_instead_of_menu. 25* This entry point will prompt the user from some input. It will 26* handle the cases of input too long, blank line input, and ?. It 27* will return other responses. It will also handle the help line 28* and quit. This entry was put in this module because it prompts 29* the user for a response that could have been selected via a 30* dynamic menu. It cannot check that response against the choices 31* on the menu because in some cases a special array of menu options 32* will not be built unless the user explicily asks for a menu. 33* 2) change(85-04-16,Davids), approve(86-02-04,MCR7350), 34* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 35* Changed the way that the prompt option was being added to the 36* array of choices in the display_and_get_choice routine. It was 37* adding a choice to the array incrementing the count and then if 38* the count indicated the prompt option should be added, adding it 39* and incrementing the count again. When the loop exited it 40* automaticaly added a prompt option to the end. This worked OK 41* except for the case where the options exactly fited in a set of 42* menus. Then the prompt option automatically added caused a 43* subscript out of bounds condition. The solution was to move the 44* test for adding the prompt option in the loop from after the 45* addition of a choice to before it. This way the loop terminates 46* before the final prompt option can be added. 47* 48* 85-05-24 Davids: Converted the create, display, get_choice, and 49* destroy entry points to internal procs. Replaced the return after 50* the main entry point to a call to error and added the error proc. 51* Replaced global variable references in create, display, 52* get_choice, and destroy with internal variables that conform to 53* the prefix naming convension. Replaced the begin block in create 54* that was used to declare a temporary array of choices to be passed 55* to menu by just overlaying the input array of choices. This 56* eliminated the loop that was required to load the temporary array. 57* 3) change(85-05-28,Davids), approve(86-02-04,MCR7350), 58* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 59* Completed variable cleanup and testing of new create code. Also 60* added a call to free the xdm_dyn_menu structure after all the 61* menus are destroyed in the destroy procedure. Removed the 62* included file function_key_data, the only thing being used was the 63* declaration of the function_key_data_ptr variable. That is now 64* declared locally in the get_choice procedure. Updated the 65* functional descriptions of the internal procedures. 66* 67* 85-05-29 Davids: Added the functional descriptions of the entry points. 68* 4) change(87-04-13,LJAdams), approve(87-04-22,MCR7684), 69* audit(87-07-30,Blair), install(87-08-06,MR12.1-1065): 70* Changed to allow command_processor_ escapes. 71* END HISTORY COMMENTS */ 72 73 74 xforum_dyn_menu_: proc (); 75 76 /* 77* BEGIN DESCRIPTION 78* 79* function: 80* This module manages dynamic menus. Dynamic menus are menus with no fixed 81* content that are displayed in the bottom window. 82* 83* description of entry points: 84* xforum_dyn_menu: 85* input: 86* output: 87* It is an error to call the main entry point. The xforum_fatal_error 88* condition will be signaled with an "internal programming error" error 89* message. 90* 91* display_and_get_choice: 92* input: (*) char (*) choices in the menu 93* fixed bin number of choices 94* char (*) title of the menu 95* char (*) text of menu option that will abort menu and 96* display prompt 97* char (*) help line break message 98* fixed bin identifies location for spy recording 99* ptr points to xforum_spy structure /* 100* output: fixed bin index into choices array that user selected 101* or -1 if user selected the "prompt_me" option 102* This entry will create, display, get the user's choice, and destroy 103* a dynamic menu. A dynamic menu appears in the bottom (user_io) window. 104* The title of the menu is overlaid on the bottom line of the top (menu) 105* window and is replaced with dashes (-) when the menu is destroyed. 106* There can be any number of choices in the dynamic menu. If there are 107* more choices than can fit in the bottom window several menus will be 108* created. The last option of each menu is the prompt_option. This 109* option should be used to allow the user to indicate that he does not 110* want to select from a menu but wants to be prompted. The user's choice 111* is collected in the spy structure as either a function key or the 112* menu option - the actual name of the choice is not recorded. 113* A zero index returned indicates that the user made no choice and 114* wants to abort the selection process. This is the result of a QUIT. 115* 116* prompt_instead_of_menu: 117* input: char (*) for help line to indicate where BREAK will 118* put the user 119* char (*) variable part of prompt 120* char (*) description of object to be entered, 121* initial capital and plural 122* char (*) description of object to be entered, 123* lower case and singular 124* char (*) prompt info seg identifier 125* fixed bin id for what is being asked for 126* ptr pointer to spy segment 127* output: char (*) varying user's response 128* This entry is used to prompt the user for a choice that could also be 129* obtained from a dynamic menu. It is part of the this module because it 130* is so closely associated with dynamic menus. If the index returned 131* from a call to display_and_get_choice is -1 this entry should be 132* called. Similarly if this entry returns ?? then display_and_get_choice 133* should be called. This entry prompts the user for some input. The 134* reply is checked for length and must not be longer than the output 135* parameter associated with the response. A null response is also 136* checked for. If either of these two cases occur an error message is 137* output and the prompt repeated. If the user enters a question mark 138* the xforum_help info file is searched for the input help text id and 139* the text displayed to the user, after that the prompt is repeated. 140* Any other text is passed on to the called. NOTE that the response 141* is not comapred with the choices on the dynamic menu because it is 142* possible that the choice would not appear on the menu, i.e. the user 143* changed his forum search rules so that new meetings not in the 144* meeting search list can be found. He could enter a new meeting name 145* via a prompt and have it found but could not select it via a dynamic 146* menu of the meetings in the meeting list. This is also why there are 147* two separate entries instead of 1 entry which handles both the 148* prompt and the menu. A null string is returned in the event of a QUIT. 149* 150* description of internal procedures: 151* create: This procedure creates a set of menus each of which has two 152* columns, 1 header line and no trailing line. Each menu except possibly 153* the last menu in the set will have 2N options where N = lines in user_io 154* window - 1. Each menu is created by overlaying the input list of options 155* and giving them in blocks of 2N to menu_$create. The xdm_dyn_menu 156* structure is allocated in the xforum_system_free area and loaded. 157* 158* display: This procedure calls menu_$display to display one of the dynamic 159* menus. The dynamic menu to be displayed is indentified by an index into 160* the dynamic menu structure array. The pointer to that structure is also 161* input. 162* 163* get_choice: This procedure is used to get the user's choice from a 164* dynamic menu. Like display the dynamic menu is identified by an index 165* into the dynamic menu structure array and the pointer to that structure 166* is also input. The menu_$get_choice routine is called to actually get the 167* user's choice. If the error code returned by menu_ is 168* window_status_pending a call to iox_ is made to reset the status pending 169* flag and the call to menu_ repeated. 170* 171* destroy: This procedure frees all the allocated space associated with the 172* dynamic menus. 173* 174* collect_spy_data: Similar to all the other collect_spy_data procedures. 175* See the xforum module. Note that this procedure is duplicated so as to 176* save the expense of an external call for a commonly executed, very short 177* program, whose output is used only during development or special site 178* exposure. 179* 180* error: Similar to all the other error procedures. It records in an 181* internal static structure the details of an error and then signals the 182* xforum_fatal_error condition. 183* 184* known bugs: 185* 186* notes: 187* 188* history: 189* 83-12-?? DBarker: dynamic menu procedure for executive_forum - "adapted" 190* from xmail's code. 191* 192* 84-03-29 Davids: Modified to check for a window_status_pending error 193* being returned from menu_$get_choice in the get_choice entry. If that 194* error is returned the status is reset and the call to menu_$get_choice 195* repeated. Any other error will just cause the call to menu_$get_choice to 196* be repeated. 197* 198* 84-11-14 Davids: Auditing changes: 1) Added a return statement before the 199* create entry so calls to the main entry do not fall into create. 2) In 200* the create entry changed the return statement in the begin block to a 201* goto exit_create and added the exit_create label before the final return. 202* 3) In get_choice changed the variable that controls the loop from P_code 203* to a local variable and set the value of P_code from the local variable 204* once the loop terminates. Other Changes: rearranged the declarations; 205* removed all the declarations from the create begin block except those 206* declarations that must be part of the block. Also move the external 207* declarations from get_choice. 208* END DESCRIPTION 209**/ 210 211 /* PARAMETERS */ 212 213 /* EXTERNAL STATIC */ 214 215 dcl iox_$user_io ptr ext static; 216 dcl video_et_$window_status_pending fixed bin (35) ext static; 217 218 /* ENTRIES */ 219 220 dcl ioa_ entry() options(variable); 221 dcl ioa_$rsnnl entry () options (variable); 222 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 223 dcl xforum_get_str_ entry (char(*) var, ptr, char(*), char(*), char(*) var, fixed bin(35)); 224 dcl signal_ entry () options (variable); 225 dcl window_$bell entry (ptr, fixed bin (35)); 226 dcl window_$clear_window entry (ptr, fixed bin (35)); 227 dcl window_$overwrite_text entry (ptr, char (*), fixed bin (35)); 228 dcl window_$position_cursor entry (ptr, fixed bin, fixed bin, fixed bin (35)); 229 dcl window_$sync entry (ptr, fixed bin (35)); 230 dcl xforum_help_line_$push entry (bit (8) aligned, char (*), char (*), char (*)); 231 dcl xforum_help_line_$pop entry options (variable); 232 dcl xforum_redisplay_ entry options (variable); 233 dcl xforum_user_profile$get_function_key_data_ptr entry () returns (ptr); 234 235 /* CONDITIONS */ 236 237 dcl quit condition; 238 239 /* INTERNAL AUTOMATIC */ 240 241 dcl xdm_dyn_menup ptr; /* pointer to the xdm_dyn_menu structure */ 242 dcl xdm_n_menus fixed bin; /* number of submenus needed to display all the choices */ 243 244 /* INTERNAL STATIC */ 245 246 dcl 01 xdm_xforum_error_info like xforum_error_info internal static; 247 248 /* CONSTANTS */ 249 250 dcl ( 251 xdm_ME char (16) init ("xforum_dyn_menu_"), /* module name */ 252 xdm_OPTION_CODES (61) char (1) unal 253 init ("1", "2", "3", "4", "5", "6", "7", "8", "9", 254 "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 255 "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", 256 "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", 257 "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", 258 "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", 259 "Y", "Z"), /* keys for menu choices */ 260 xdm_REDISPLAY fixed bin init (5),/* function keys for redisplay */ 261 xdm_REDISPLAY2 fixed bin init (12), 262 xdm_SCROLL_DOWN fixed bin init (6),/* function keys for previous menu */ 263 xdm_SCROLL_DOWN2 fixed bin init (13), 264 xdm_SCROLL_UP fixed bin init (7),/* function keys for next menu */ 265 xdm_SCROLL_UP2 fixed bin init (14) 266 ) internal static options (constant); 267 268 269 /* BUILTINS */ 270 271 dcl ( 272 addr, 273 ceil, 274 char, 275 divide, 276 float, 277 hbound, 278 length, 279 ltrim, 280 maxlength, 281 mod, 282 null, 283 rtrim, 284 substr 285 ) builtin; 286 287 /* BASED */ 288 289 dcl xdm_based_area area based (xforum_system_area_ptr); /* area xdm_dyn_menu allocated in */ 290 291 dcl 1 xdm_dyn_menu aligned based (xdm_dyn_menup), /* info about all the submenus created */ 292 2 nth_menu fixed bin, /* number of submenus created */ 293 2 menu_array (0:xdm_n_menus - 1 refer (xdm_dyn_menu.nth_menu)), 294 3 location ptr, /* pointer to menu structure for menu_ */ 295 3 first_option fixed bin, /* index into original array of first option in submenu */ 296 3 option_count fixed bin; /* number of options in submenu */ 297 298 299 /* INCLUDE FILES */ 300 1 1 /* BEGIN INCLUDE FILE menu_dcls.incl.pl1 1 2* declarations for the menu_ subroutines MTB 493 1 3* James R. Davis 26 Jan 81 to 20 Februrary 81 1 4**/ 1 5 1 6 /* format: off */ 1 7 1 8 dcl menu_$create entry ( 1 9 (*) char (*) varying, /* input: choices */ 1 10 (*) char (*) varying, /* input: headers */ 1 11 (*) char (*) varying, /* input: trailers */ 1 12 pointer, /* input: to format info */ 1 13 (*) char (1) unal, /* input: keys to use */ 1 14 pointer, /* input: to area */ 1 15 pointer, /* input: to needs str. */ 1 16 pointer, /* to menu: output */ 1 17 fixed bin (35) /* code */ 1 18 ); 1 19 1 20 dcl menu_$display entry ( 1 21 pointer, /* window */ 1 22 pointer, /* menu */ 1 23 fixed bin (35) /* code */ 1 24 ); 1 25 1 26 dcl menu_$get_choice entry ( 1 27 pointer, /* window */ 1 28 pointer, /* menu */ 1 29 pointer, /* to function key info */ 1 30 bit (1) aligned, /* function key hi: output */ 1 31 fixed bin, /* output: selection number */ 1 32 fixed bin (35) /* output: code */ 1 33 ); 1 34 1 35 dcl menu_$describe entry ( 1 36 pointer, /* menu */ 1 37 pointer, /* needs */ 1 38 fixed bin (35) /* code */ 1 39 ); 1 40 1 41 dcl menu_$destroy entry ( 1 42 pointer, /* menu */ 1 43 fixed bin (35) /* code */ 1 44 ); 1 45 1 46 dcl menu_$store entry ( 1 47 character (*), 1 48 character (*), 1 49 character (*), 1 50 bit (1) aligned, 1 51 pointer, 1 52 fixed bin (35)); 1 53 1 54 dcl menu_$retrieve entry ( 1 55 character (*), 1 56 character (*), 1 57 character (*), 1 58 pointer, 1 59 pointer, 1 60 fixed bin (35)); 1 61 dcl menu_$delete entry ( 1 62 character (*), 1 63 character (*), 1 64 character (*), 1 65 fixed binary (35)); 1 66 1 67 dcl menu_$list entry ( 1 68 character (*), 1 69 character (*), 1 70 character (*), 1 71 pointer, 1 72 fixed bin, 1 73 pointer, 1 74 fixed bin (35)); 1 75 1 76 dcl 1 menu_format aligned based (menu_format_ptr), 1 77 2 version fixed bin, 1 78 2 constraints, 1 79 3 max_width fixed bin, 1 80 3 max_height fixed bin, 1 81 2 n_columns fixed bin, 1 82 2 flags, 1 83 3 center_headers bit (1) unal, 1 84 3 center_trailers bit (1) unal, 1 85 3 pad bit (34) unal, 1 86 2 pad_char char (1); 1 87 1 88 dcl 1 menu_requirements aligned based (menu_requirements_ptr), 1 89 2 version fixed bin, 1 90 2 lines_needed fixed bin, 1 91 2 width_needed fixed bin, 1 92 2 n_options fixed bin; 1 93 1 94 dcl menu_format_ptr pointer; 1 95 dcl menu_requirements_ptr pointer; 1 96 1 97 dcl (menu_format_version_1, menu_requirements_version_1) 1 98 fixed bin internal static init (1) options (constant); 1 99 1 100 dcl MENU_OPTION_KEYS (35) char (1) unal internal static 1 101 options (constant) init 1 102 ("1", "2", "3", "4", "5", "6", "7", "8", "9", 1 103 "A", "B", "C", "D", "E", "F", "G", "H", "I", 1 104 "J", "K", "L", "M", "N", "O", "P", "Q", "R", 1 105 "S", "T", "U", "V", "W", "X", "Y", "Z"); 1 106 1 107 /* END INCLUDE FILE ... menu_dcls.incl.pl1 */ 301 302 2 1 /* begin include file window_status.incl.pl1 */ 2 2 /* Modified 28 March 1984 by Jon A. Rochlis to add terminal type change 2 3* and reconnection stuff. */ 2 4 /* format: style3 */ 2 5 /* interrupts that an application can recieve from a window */ 2 6 2 7 declare window_status_string 2 8 bit (36) unaligned; 2 9 2 10 declare 1 window_status aligned, 2 11 2 screen_invalid bit (1) unaligned, 2 12 2 async_change bit (1) unaligned, 2 13 2 ttp_change bit (1) unaligned, 2 14 2 reconnection bit (1) unaligned, 2 15 2 pad bit (32) unaligned; 2 16 2 17 declare ( 2 18 W_STATUS_SCREEN_INVALID 2 19 init ("1"b), 2 20 W_STATUS_ASYNC_EVENT 2 21 init ("01"b), 2 22 W_STATUS_TTP_CHANGE 2 23 init ("001"b), 2 24 W_STATUS_RECONNECTION 2 25 init ("0001"b) 2 26 ) bit (36) aligned internal static options (constant); 2 27 2 28 /* end include file window_status.incl.pl1 */ 303 304 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 */ 305 306 4 1 /* START OF: xforum_ptr_struct_.incl.pl1 * * * * * */ 4 2 4 3 declare 1 xforum_ptr_struct_ external static, 4 4 2 xforum_meeting_list_ptr ptr, 4 5 2 xforum_meeting_info_ptr ptr, 4 6 2 xforum_trans_array_ptr ptr, 4 7 2 xforum_system_area_ptr ptr; 4 8 4 9 /* END OF: xforum_ptr_struct_.incl.pl1 * * * * * */ 307 308 5 1 /* BEGIN INCLUDE FILE xforum_spy 84-06-19 NSDavids */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(85-01-01,Davids), approve(85-01-01,MCR7350), 5 7* audit(86-04-24,Gilcrease), install(86-04-24,MR12.0-1048): 5 8* Modified to include personalization and subject selection. 5 9* END HISTORY COMMENTS */ 5 10 5 11 5 12 dcl 01 spy based (spy_ptr), 5 13 02 version char (8), 5 14 02 user_name char (32), 5 15 02 date_time char (32), 5 16 02 args char (80), 5 17 02 eligible fixed bin, 5 18 02 attending fixed bin, 5 19 02 changed fixed bin, 5 20 02 count fixed bin, 5 21 02 choices (0 refer (count)), 5 22 03 at fixed bin, 5 23 03 choice char (10); 5 24 5 25 5 26 dcl spy_ptr ptr; 5 27 dcl SPY_VERSION_1 char (8) init ("spy_0001"); 5 28 5 29 dcl SPY_AT_1 fixed bin init (1) internal static options (constant); 5 30 /* At Executive Forum Main menu */ 5 31 dcl SPY_AT_2 fixed bin init (2) internal static options (constant); 5 32 /* Requesting Help */ 5 33 dcl SPY_AT_3 fixed bin init (3) internal static options (constant); 5 34 /* At General Help menu */ 5 35 dcl SPY_AT_4 fixed bin init (4) internal static options (constant); 5 36 /* At query for a meeting name to goto */ 5 37 dcl SPY_AT_5 fixed bin init (5) internal static options (constant); 5 38 /* At menu of meeting names */ 5 39 dcl SPY_AT_6 fixed bin init (6) internal static options (constant); 5 40 /* At query for a meeting name to resign from */ 5 41 dcl SPY_AT_7 fixed bin init (7) internal static options (constant); 5 42 /* At Attending Meeting menu */ 5 43 dcl SPY_AT_8 fixed bin init (8) internal static options (constant); 5 44 /* At replying to a transaction */ 5 45 dcl SPY_AT_9 fixed bin init (9) internal static options (constant); 5 46 /* At entering a new transaction */ 5 47 dcl SPY_AT_10 fixed bin init (10) internal static options (constant); 5 48 /* At query for a transaction specifier */ 5 49 dcl SPY_AT_11 fixed bin init (11) internal static options (constant); 5 50 /* At query to check for changed meetings */ 5 51 dcl SPY_AT_12 fixed bin init (12) internal static options (constant); 5 52 /* At Getting Started menu */ 5 53 dcl SPY_AT_13 fixed bin init (13) internal static options (constant); 5 54 /* Meeting list update query, change in number of search paths */ 5 55 dcl SPY_AT_14 fixed bin init (14) internal static options (constant); 5 56 /* Meeting list update query, change in search paths listed */ 5 57 dcl SPY_AT_15 fixed bin init (15) internal static options (constant); 5 58 /* Copy Comments file name query */ 5 59 dcl SPY_AT_16 fixed bin init (16) internal static options (constant); 5 60 /* At Personalization menu */ 5 61 dcl SPY_AT_17 fixed bin init (17) internal static options (constant); 5 62 /* Personalizing an item prompt */ 5 63 dcl SPY_AT_18 fixed bin init (18) internal static options (constant); 5 64 /* string search prompt for comment selection */ 5 65 dcl SPY_AT_19 fixed bin init (19) internal static options (constant); 5 66 /* subject selection */ 5 67 5 68 dcl SPY_LOCATION (19) char (20) varying init ( 5 69 "XForum Main menu", 5 70 "Requesting Help", 5 71 "General Help menu", 5 72 "Meeting to goto?", 5 73 "Meeting names menu", 5 74 "Meeting to resign?", 5 75 "Meeting menu", 5 76 "Repling", 5 77 "Talking", 5 78 "Trans. spec?", 5 79 "Check changed mtgs", 5 80 "Getting Started", 5 81 "List update, num", 5 82 "List update, list", 5 83 "Copy to file name", 5 84 "Personalizing menu", 5 85 "Personalizing prompt", 5 86 "String search prompt", 5 87 "Subject selection") internal static options (constant); 5 88 5 89 /* END INCLUDE FILE xforum_spy */ 309 310 6 1 /* START OF: xforum_windows.incl.pl1 * * * * * */ 6 2 6 3 /* structures for windows used by xforum - Deryk Barker January 1984 */ 6 4 6 5 dcl 1 xforum_windows aligned external static, 6 6 2 (status, menu, bottom, orig_user_io, help_line) aligned like xforum_window_info; 6 7 6 8 dcl 1 xforum_window_info, 6 9 2 iocb ptr, 6 10 2 position aligned like window_position_info; 6 11 7 1 /* BEGIN INCLUDE FILE ... window_control_info.incl.pl1 JRD */ 7 2 /* format: style3 */ 7 3 7 4 /* Modified 26 January 1982 by William York to add the set_more_handler 7 5* and reset_more_handler control orders. */ 7 6 /* Modified October 1982 by WMY to add set and get_token_characters, 7 7* set and get_more_prompt. */ 7 8 /* Modified February 1983 by WMY to add the line_editor_key_binding_info 7 9* structure. */ 7 10 /* Modified 30 September 1983 by Jon A. Rochlis to add the origin.column for 7 11* partial screen width windows. */ 7 12 /* Modified 9 October 1983 by JR to add version 1 window_edit_line_info. 7 13* This should be removed when window_info.incl.pl1 is created. */ 7 14 /* Modified 29 February 1984 by Barmar to add version 1 7 15* get_editor_key_bindings_info. */ 7 16 /* Modified 1 March 1984 by Barmar to add version 1 7 17* set_editor_key_bindings_info. */ 7 18 /* Modified 2 March 1984 by Barmar to upgrade to version 3 7 19* line_editor_key_bindings_info, which includes the name, description, and 7 20* info path */ 7 21 7 22 /* structure for the set_window_info and get_window_info 7 23* control orders. */ 7 24 7 25 dcl 1 window_position_info 7 26 based (window_position_info_ptr), 7 27 2 version fixed bin, 7 28 2 origin, 7 29 3 column fixed bin, 7 30 3 line fixed bin, 7 31 2 extent, 7 32 3 width fixed bin, 7 33 3 height fixed bin; 7 34 7 35 dcl (window_position_info_version, window_position_info_version_1) 7 36 fixed bin internal static init (1) options (constant); 7 37 dcl window_position_info_ptr 7 38 pointer; 7 39 7 40 /* structure for the set_window_status and get_window_status 7 41* control orders */ 7 42 7 43 declare window_status_info_ptr 7 44 pointer; 7 45 declare 1 window_status_info 7 46 aligned based (window_status_info_ptr), 7 47 2 version fixed bin, 7 48 2 status_string bit (36) aligned; /* string (window_status) */ 7 49 /* see window_status.incl.pl1 for the contents of this string */ 7 50 7 51 7 52 declare (window_status_version, window_status_version_1) 7 53 fixed bin internal static init (1) options (constant); 7 54 7 55 /* info structure for the set_more_responses and get_more_responses control 7 56* orders */ 7 57 7 58 7 59 dcl 1 more_responses_info 7 60 aligned based (more_responses_info_ptr), 7 61 2 version fixed bin, 7 62 2 n_yeses fixed bin, /* how many valid characters in the strings below */ 7 63 2 n_noes fixed bin, 7 64 2 yeses char (32) unaligned, 7 65 2 noes char (32) unaligned; 7 66 7 67 dcl (more_responses_info_version_1, more_responses_version) 7 68 fixed bin internal static init (1) options (constant); 7 69 dcl more_responses_info_ptr 7 70 pointer; 7 71 7 72 /* structure for the set_break_table and get_break_table 7 73* control orders */ 7 74 7 75 declare break_table_ptr pointer; 7 76 declare 1 break_table_info aligned based (break_table_ptr), 7 77 2 version fixed bin, 7 78 2 breaks (0:127) bit (1) unaligned; 7 79 7 80 declare (break_table_info_version, break_table_info_version_1) 7 81 fixed bin init (1) internal static options (constant); 7 82 7 83 declare 1 more_handler_info aligned based (more_handler_info_ptr), 7 84 2 version fixed bin, 7 85 2 flags unaligned, 7 86 3 old_handler_valid 7 87 bit(1), 7 88 3 pad bit(35), 7 89 2 more_handler entry (pointer, bit(1) aligned), 7 90 2 old_more_handler entry (pointer, bit(1) aligned); 7 91 7 92 declare more_handler_info_ptr pointer; 7 93 7 94 declare (more_handler_info_version, more_handler_info_version_3) 7 95 fixed bin internal static options (constant) init (3); 7 96 7 97 declare 1 token_characters_info aligned based (token_characters_info_ptr), 7 98 2 version char(8), 7 99 2 token_character_count 7 100 fixed bin, 7 101 2 token_characters 7 102 char (128) unaligned; 7 103 7 104 declare token_characters_info_ptr pointer; 7 105 7 106 declare token_characters_info_version_1 char(8) internal static options (constant) init ("wtci0001"); 7 107 7 108 declare 1 more_prompt_info aligned based (more_prompt_info_ptr), 7 109 2 version char(8), 7 110 2 more_prompt char(80); 7 111 7 112 declare more_prompt_info_ptr pointer; 7 113 7 114 declare more_prompt_info_version_1 char(8) static options (constant) init ("wsmp0001"); 7 115 7 116 /* Line editor stuff ... */ 7 117 7 118 dcl line_editor_key_binding_info_ptr 7 119 pointer; 7 120 7 121 dcl line_editor_binding_count 7 122 fixed bin; 7 123 dcl line_editor_longest_sequence 7 124 fixed bin; 7 125 /* For each binding, action defines what to do for that sequence. Constants 7 126* are defined in window_editor_values.incl.pl1. Only if action is set to 7 127* EXTERNAL_ROUTINE does the editor_routine entry variable get examined. */ 7 128 7 129 dcl 1 line_editor_key_binding_info 7 130 aligned based (line_editor_key_binding_info_ptr), 7 131 2 version char(8), 7 132 2 binding_count fixed bin, 7 133 2 longest_sequence fixed bin, 7 134 2 bindings (line_editor_binding_count refer 7 135 (line_editor_key_binding_info.binding_count)), 7 136 3 sequence char(line_editor_longest_sequence refer 7 137 (line_editor_key_binding_info.longest_sequence)) varying, 7 138 3 action fixed bin, 7 139 3 numarg_action fixed binary, 7 140 3 editor_routine entry (pointer, fixed bin(35)), 7 141 3 name char (64) varying unaligned, 7 142 3 description char (256) varying unaligned, 7 143 3 info_path unaligned, 7 144 4 info_dir char (168), 7 145 4 info_entry char (32); 7 146 7 147 7 148 dcl line_editor_key_binding_info_version_3 7 149 char(8) static options (constant) init ("lekbi003"); 7 150 7 151 dcl 1 get_editor_key_bindings_info aligned based (get_editor_key_bindings_info_ptr), 7 152 2 version char (8), 7 153 2 flags, 7 154 3 entire_state bit (1) unaligned, 7 155 3 mbz bit (35) unaligned, 7 156 2 key_binding_info_ptr ptr, 7 157 2 entire_state_ptr ptr; 7 158 7 159 dcl get_editor_key_bindings_info_ptr ptr; 7 160 dcl get_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("gekbi_01"); 7 161 7 162 dcl 1 set_editor_key_bindings_info aligned 7 163 based (set_editor_key_bindings_info_ptr), 7 164 2 version char (8), 7 165 2 flags, 7 166 3 replace bit (1) unaligned, 7 167 3 update bit (1) unaligned, 7 168 3 mbz bit (34) unaligned, 7 169 2 key_binding_info_ptr ptr; 7 170 7 171 dcl set_editor_key_bindings_info_ptr ptr; 7 172 dcl set_editor_key_bindings_info_version_1 char (8) int static options (constant) init ("sekbi_01"); 7 173 7 174 /* This should be moved to window_info.incl.pl1 when that include file is 7 175* created. JR 2/1/84 */ 7 176 7 177 dcl 1 window_edit_line_info 7 178 based (window_edit_line_info_ptr), 7 179 2 version char (8), 7 180 2 line_ptr ptr, 7 181 2 line_length fixed bin (21); /* later we will hack initial cursor position, key bindings, etc. */ 7 182 7 183 dcl window_edit_line_info_version_1 7 184 char (8) static options (constant) init ("wedl0001"); 7 185 7 186 dcl window_edit_line_info_ptr 7 187 ptr; 7 188 7 189 /* END INCLUDE FILE window_control_info.incl.pl1 */ 6 12 6 13 6 14 /* END OF: xforum_windows.incl.pl1 * * * * * */ 311 312 8 1 /* BEGIN INCLUDE FILE xforum_prompts.incl.pl1 */ 8 2 8 3 8 4 /****^ HISTORY COMMENTS: 8 5* 1) change(87-04-13,LJAdams), approve(87-07-24,MCR7684), 8 6* audit(87-07-24,Blair), install(87-08-06,MR12.1-1065): 8 7* Created. 8 8* END HISTORY COMMENTS */ 8 9 8 10 dcl (BREAK_PROMPT char (34) init ("Press BREAK to return to the menu."), 8 11 COMMENTS_PROMPT char (40) init ("Which comment(s) do you wish to select? "), 8 12 COMMENT_PROMPT char (37) init ("Which comment do you wish to select? "), 8 13 FILE_PROMPT char (28) init ("Enter the name of the file: "), 8 14 FIRST_PROMPT char (80) init ("Enter the command and press RETURN (to return to Xforum just press RETURN):"), 8 15 RETURN_PROMPT char (46) init (" Press to continue"), 8 16 TEXT_PROMPT char (31) init ("Enter text to be searched for: ")) 8 17 internal static options (constant); 8 18 8 19 8 20 /* END INCLUDE FILE xforum_prompts.incl.pl1 */ 314 315 9 1 /* BEGIN INCLUDE FILE xforum_answers.incl.pl1 */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(87-04-13,LJAdams), approve(87-04-30,MCR7684), 9 6* audit(87-07-30,Blair), install(87-08-06,MR12.1-1065): 9 7* Created. 9 8* END HISTORY COMMENTS */ 9 9 9 10 dcl 1 answer_array, 9 11 2 N fixed bin, /* Number of acceptable answers; 0 = all */ 9 12 2 max_length fixed bin, /* max length user reply can be */ 9 13 2 answer (10) char (80) varying; 9 14 9 15 9 16 dcl ZERO fixed bin internal static options (constant) init (0), 9 17 ONE fixed bin internal static options (constant) init (1), 9 18 FOUR fixed bin internal static options (constant) init (4); 9 19 9 20 9 21 /* END INCLUDE FILE xforum_answers .incl.pl1 */ 316 317 318 10 1 /* BEGIN INCLUDE FILE xforum_help_infos.incl.pl1 */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(87-04-13,LJAdams), approve(87-07-24,MCR7684), 10 6* audit(87-07-24,Blair), install(87-08-06,MR12.1-1065): 10 7* Created. 10 8* END HISTORY COMMENTS */ 10 9 10 10 dcl (GETTING_STARTED_HELP char (27) init ("xforum_getting_started.info"), 10 11 PROMPT_HELP char (18) init ("xforum_prompt"), 10 12 FUNCTION_KEY_HELP char (25) init ("xforum_function_keys.info"), 10 13 MENU_OPTION_HELP char (23) init ("xforum_menu_option.info")) 10 14 internal static options (constant); 10 15 10 16 10 17 /* END INCLUDE FILE xforum_help_infos.incl.pl1 */ 319 320 321 322 call error (0, "Internal programming error - xforum_dyn_menu$xforum_dyn_menu called."); 323 324 display_and_get_choice: entry (dagc_choices, dagc_num_choices, dagc_title, dagc_prompt_option, 325 dagc_help_line_break_message, dagc_spy_position, dagc_spy_ptr, dagc_selected_index); 326 327 328 /* PARAMETERS */ 329 330 dcl dagc_choices (*) char (*); /* (input) choices in the menu */ 331 dcl dagc_num_choices fixed bin; /* (input) number of choices */ 332 dcl dagc_title char (*); /* (input) title of the menu */ 333 dcl dagc_prompt_option char (*); /* (input) text of menu option that will */ 334 /* abort menu and display prompt */ 335 dcl dagc_help_line_break_message char (*); /* (input) help line break message */ 336 dcl dagc_spy_position fixed bin; /* (input) identifies location for spy recording */ 337 dcl dagc_spy_ptr ptr; /* (input) points to xforum_spy structure */ 338 dcl dagc_selected_index fixed bin; /* (output) index into dagc_choices array that user selected */ 339 /* or -1 if user selected the "prompt me" option */ 340 341 /* INTERNAL AUTOMATIC */ 342 343 dcl dagc_choice fixed bin; /* user's choice on the submenu currently displayed */ 344 dcl dagc_code fixed bin (35); /* standard error code */ 345 dcl dagc_dyn_menup ptr; /* points to the xdm_dyn_menu structure */ 346 dcl dagc_items_per_menu fixed bin; /* number of choices per submenu */ 347 dcl dagc_fkey bit (1) aligned; /* "1"b imples that user selected a function key */ 348 dcl dagc_menu_index fixed bin; /* index of a submenu */ 349 dcl dagc_number_dashes fixed bin; /* left column of title when centered in window */ 350 dcl dagc_number_of_menus fixed bin; /* total number of submenus needed to display all the choices */ 351 dcl dagc_option_index fixed bin; /* user's choice based on total number of choices */ 352 353 dcl 1 dagc_dyn_menu_req aligned, /* describes the submenus */ 354 2 options_per_menu fixed bin, 355 2 options_last_menu fixed bin, 356 2 n_menus fixed bin; 357 358 /* CONSTANTS */ 359 360 dcl dagc_DASHES char (80) init ("--------------------------------------------------------------------------------") 361 internal static options (constant); /* used to restore the top menus */ 362 /* bottom line of dashes when routine returns to caller */ 363 364 spy_ptr = dagc_spy_ptr; 365 366 dagc_items_per_menu = (xforum_windows.bottom.height - 1) * 2; 367 dagc_number_of_menus = ceil (float (dagc_num_choices) / float (dagc_items_per_menu - 1)); 368 /* The last item doesn't count its ENTER... */ 369 370 371 begin; 372 dcl dagc_i fixed bin; /* array index */ 373 dcl dagc_j fixed bin; /* loop index */ 374 dcl dagc_names (dagc_num_choices + dagc_number_of_menus) char (32) varying; 375 /* submenu choices, including the "prompt me" choices */ 376 dcl dagc_nindex (dagc_num_choices + dagc_number_of_menus) fixed bin; 377 /* maps choices in dagc_names array to original indicies in */ 378 /* dagc_choices array and maps "prompt me" choices to -1 */ 379 380 dagc_i = 1; 381 dagc_dyn_menup = null (); 382 383 on quit 384 begin; 385 call collect_spy_data (dagc_spy_position, "QUIT"); 386 dagc_selected_index = 0; 387 goto exit_get_choice_from_menu; 388 end; 389 390 do dagc_j = 1 to dagc_num_choices while (dagc_i <= (dagc_num_choices + dagc_number_of_menus)); 391 if mod (dagc_i, dagc_items_per_menu) = 0 392 then do; 393 dagc_names (dagc_i) = dagc_prompt_option; 394 dagc_nindex (dagc_i) = -1; 395 dagc_i = dagc_i + 1; 396 end; 397 dagc_names (dagc_i) = dagc_choices (dagc_j); 398 dagc_nindex (dagc_i) = dagc_j; 399 dagc_i = dagc_i + 1; 400 end; 401 dagc_names (dagc_i) = dagc_prompt_option; 402 dagc_nindex (dagc_i) = -1; 403 404 call create (dagc_names, 405 addr (xforum_windows.bottom.position), addr (dagc_dyn_menu_req), 406 dagc_dyn_menup, dagc_code); 407 if dagc_code ^= 0 408 then go to exit_get_choice_from_menu; 409 410 call xforum_help_line_$push ("00000110"b, "", dagc_help_line_break_message, ""); 411 412 dagc_menu_index = 0; 413 414 dagc_number_dashes = (xforum_windows.menu.position.width - length (dagc_title)) / 2; 415 call window_$position_cursor (xforum_windows.menu.iocb, 416 xforum_windows.menu.extent.height, dagc_number_dashes, (0)); 417 call window_$overwrite_text (xforum_windows.menu.iocb, (dagc_title), (0)); 418 419 do while ("1"b); 420 display_submenu: 421 call display (dagc_dyn_menup, dagc_menu_index, dagc_code); 422 if dagc_code ^= 0 423 then go to exit_get_choice_from_menu; 424 425 call get_choice (dagc_dyn_menup, dagc_menu_index, 426 dagc_choice, dagc_fkey, dagc_code); 427 if dagc_code ^= 0 428 then go to exit_get_choice_from_menu; 429 430 if dagc_fkey 431 then call collect_spy_data (dagc_spy_position, "F" || rtrim (ltrim (char (dagc_choice)))); 432 else call collect_spy_data (dagc_spy_position, rtrim (ltrim (char (dagc_choice)))); 433 434 if ^dagc_fkey 435 then do; 436 dagc_option_index = 437 dagc_menu_index * dagc_dyn_menu_req.options_per_menu + dagc_choice; 438 dagc_selected_index = dagc_nindex (dagc_option_index); 439 go to exit_get_choice_from_menu; 440 end; 441 else if dagc_choice = xdm_REDISPLAY | dagc_choice = xdm_REDISPLAY2 442 then do; 443 call xforum_redisplay_; 444 goto display_submenu; /* Q and D - but WTH */ 445 end; 446 else if dagc_choice = xdm_SCROLL_UP | dagc_choice = xdm_SCROLL_UP2 447 then dagc_menu_index = 448 mod (dagc_menu_index + 1, dagc_dyn_menu_req.n_menus); 449 else if dagc_choice = xdm_SCROLL_DOWN | dagc_choice = xdm_SCROLL_DOWN2 450 then dagc_menu_index = 451 mod (dagc_menu_index - 1, dagc_dyn_menu_req.n_menus); 452 else call window_$bell (xforum_windows.menu.iocb, (0)); 453 end; /* do while ... */ 454 455 exit_get_choice_from_menu: 456 call destroy (dagc_dyn_menup); 457 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 458 459 call window_$position_cursor (xforum_windows.menu.iocb, 460 xforum_windows.menu.extent.height, dagc_number_dashes, (0)); 461 call window_$overwrite_text (xforum_windows.menu.iocb, substr (dagc_DASHES, 1, length (dagc_title)), (0)); 462 call window_$sync (xforum_windows.menu.iocb, (0)); 463 464 call xforum_help_line_$pop; 465 end; 466 467 return; 468 469 prompt_instead_of_menu: entry (piom_help_line_break_text, piom_prompt_text, piom_error_text_1, 470 piom_error_text_2, piom_help_id, piom_spy_id, piom_spy_ptr, piom_response); 471 472 /* PARAMETERS */ 473 474 dcl piom_help_line_break_text char (*); /* (input) for help line to indicate where BREAK will put the user */ 475 dcl piom_prompt_text char (*); /* (input) variable part of prompt */ 476 dcl piom_error_text_1 char (*); /* (input) description of object to be */ 477 /* entered, initial capital and plural */ 478 dcl piom_error_text_2 char (*); /* (input) description of object to be */ 479 /* entered, lower case and singular */ 480 dcl piom_help_id char (*); /* (input) prompt info seg identifier */ 481 dcl piom_spy_id fixed bin; /* (input) id for what is being asked for */ 482 dcl piom_spy_ptr ptr; /* (input) pointer to spy segment */ 483 dcl piom_response char (*) varying; /* (output) user's response */ 484 485 /* INTERNAL AUTOMATIC */ 486 487 dcl piom_reply char (256); /* user's reply */ 488 dcl piom_code fixed bin (35); 489 490 /* EXTERNAL ENTRY */ 491 492 dcl error_table_$long_record 493 fixed bin(35) ext static; 494 495 496 spy_ptr = piom_spy_ptr; 497 498 call xforum_help_line_$push ("0"b, "", "", "Press ? and RETURN:help BREAK:" || piom_help_line_break_text); 499 500 on quit 501 begin; 502 piom_response = ""; 503 call window_$clear_window (xforum_windows.bottom.iocb, (0)); 504 goto exit_prompt_instead_of_menu; 505 end; 506 507 piom_reply = ""; 508 answer_array.N = 0; /* Accept all answers */ 509 answer_array.max_length = maxlength (piom_response); 510 511 do while (piom_reply = ""); 512 call xforum_get_str_ ((piom_prompt_text || " (or ?? for menu): "), addr(answer_array), PROMPT_HELP, piom_help_id, piom_response, piom_code); 513 514 if piom_code = error_table_$long_record 515 then do; 516 call ioa_ ("^a cannot be more than ^i characters long.", piom_error_text_1, maxlength(piom_response)); 517 call ioa_ ("Please try again or press BREAK to ^a.", piom_help_line_break_text); 518 end; 519 520 piom_reply = substr (piom_response, 1); 521 if piom_reply ^= "" 522 then call collect_spy_data (piom_spy_id, substr (piom_response, 1)); 523 end; 524 525 exit_prompt_instead_of_menu: 526 call xforum_help_line_$pop; 527 528 return; 529 530 create: proc (c_choices, c_window_infop, c_dyn_menu_reqp, c_dyn_menup, c_code); 531 532 /* PARAMETERS */ 533 534 dcl c_choices (*) char (32) varying; /* (input) text of the menu options */ 535 dcl c_window_infop ptr; /* (input) pointer to a window_position_info str */ 536 dcl c_dyn_menu_reqp ptr; /* (input) pointer to a dyn_menu_req structure */ 537 dcl c_dyn_menup ptr; /* (output) pointer to a dyn_menu structure */ 538 dcl c_code fixed bin (35); /* (output) standard error code */ 539 540 /* INTERNAL AUTOMATIC */ 541 542 dcl c_done_with_choices bit (1); /* "1"b imples that all the choices have been placed in a submenu */ 543 dcl c_menu_no fixed bin; /* index of a submenu */ 544 dcl c_choice_count fixed bin; /* count of choices already placed in a submenu */ 545 dcl c_header (1) char (80) varying; /* header line, gives current submenu */ 546 /* number and total number of submenus */ 547 dcl c_slots_avail fixed bin; /* number of choices that can fit in the submenu */ 548 /* 2 columns of choices, 1 line of window for header */ 549 dcl c_slots_needed fixed bin; /* number of choices for all submenus */ 550 dcl c_submenu_choices_count fixed bin; /* number of choices in a submenu */ 551 dcl c_submenu_choices_ptr ptr; /* pointer to the first choice in a submenu */ 552 dcl 01 c_menu_format aligned like menu_format; /* describes the menu to be created by menu_ */ 553 dcl 01 c_menu_requirements aligned like menu_requirements; /* describes the requirements of the menu */ 554 555 /* BASED */ 556 557 dcl c_submenu_choices (c_submenu_choices_count) char (32) varying based (c_submenu_choices_ptr); 558 /* choices for a given submenu */ 559 dcl 01 c_dyn_menu_req aligned based (c_dyn_menu_reqp), /* describes the submenus created */ 560 02 options_per_menu fixed bin, 561 02 options_last_menu fixed bin, 562 02 n_menus fixed bin; 563 dcl 01 c_window_info like window_position_info based (c_window_infop); 564 /* describes the window the menus will be displayed in */ 565 566 c_dyn_menup = null (); 567 c_code = 0; 568 569 c_slots_avail = 2 * (c_window_info.height - 1); /* 2 columns, 1 header, no trailers */ 570 c_slots_needed = hbound (c_choices, 1); 571 572 xdm_n_menus = divide (c_slots_needed + c_slots_avail - 1, c_slots_avail, 17, 0); 573 574 allocate xdm_dyn_menu in (xdm_based_area); 575 576 c_menu_format.version = menu_format_version_1; 577 c_menu_format.max_width = c_window_info.width; 578 c_menu_format.max_height = c_window_info.height; 579 c_menu_format.n_columns = 2; 580 c_menu_format.center_headers = "1"b; 581 c_menu_format.center_trailers = "1"b; 582 c_menu_format.pad = "0"b; 583 c_menu_format.pad_char = " "; 584 585 c_menu_requirements.version = menu_requirements_version_1; 586 587 c_choice_count = 1; 588 c_done_with_choices = "0"b; 589 590 do c_menu_no = 0 to xdm_dyn_menu.nth_menu; 591 c_submenu_choices_ptr = addr (c_choices (c_choice_count)); 592 if c_choice_count + c_slots_avail > c_slots_needed 593 then c_submenu_choices_count = c_slots_needed - c_choice_count + 1; 594 else c_submenu_choices_count = c_slots_avail; 595 c_choice_count = c_choice_count + c_slots_avail; 596 597 xdm_dyn_menu.menu_array (c_menu_no).option_count = c_submenu_choices_count; 598 xdm_dyn_menu.menu_array (c_menu_no).first_option = c_menu_no * c_slots_avail + 1; 599 600 call ioa_$rsnnl ("Choices (menu ^d of ^d)", c_header (1), (0), c_menu_no + 1, xdm_n_menus); 601 602 call menu_$create (c_submenu_choices, c_header, "", 603 addr (c_menu_format), xdm_OPTION_CODES, xforum_system_area_ptr, 604 addr (c_menu_requirements), 605 xdm_dyn_menu.menu_array (c_menu_no).location, c_code); 606 607 if c_code ^= 0 608 then goto exit_create; 609 610 end; /* do c_menu_no = ... */ 611 612 if c_dyn_menu_reqp ^= null 613 then do; 614 c_dyn_menu_req.options_per_menu = c_slots_avail; 615 c_dyn_menu_req.options_last_menu = xdm_dyn_menu.menu_array (xdm_n_menus - 1).option_count; 616 c_dyn_menu_req.n_menus = xdm_n_menus; 617 end; 618 619 c_dyn_menup = xdm_dyn_menup; 620 621 exit_create: 622 return; 623 624 end create; 625 626 display: proc (d_dyn_menup, d_index, d_code); 627 628 /* PARAMETERS */ 629 630 dcl d_dyn_menup ptr; /* (input) pointer to the dyn_menu structure */ 631 dcl d_index fixed bin; /* (input) index of submenu to display */ 632 dcl d_code fixed bin (35); /* (output) standard error code */ 633 634 635 636 637 638 d_code = 0; 639 xdm_dyn_menup = d_dyn_menup; 640 641 call menu_$display (iox_$user_io, xdm_dyn_menu.menu_array (d_index).location, d_code); 642 643 return; 644 645 end display; 646 647 get_choice: proc (gc_dyn_menup, gc_index, gc_choice, gc_fkey, gc_code); 648 649 /* PARAMETERS */ 650 651 dcl gc_dyn_menup ptr; /* (input) pointer to the dyn_menu structure */ 652 dcl gc_index fixed bin; /* (input) index of the submenu being answered */ 653 dcl gc_choice fixed bin; /* (output) index of choice from menu or function key */ 654 dcl gc_fkey bit (1) aligned; /* (output) "1" implies that choice is a function key */ 655 dcl gc_code fixed bin (35); /* (output) standard error code */ 656 657 /* INTERNAL AUTOMATIC */ 658 659 dcl gc_function_key_data_ptr ptr; /* pointer to the function_key_data structure for the users terminal */ 660 dcl gc_ignore2 fixed bin (35); /* ignored output from system call */ 661 dcl 01 gc_window_status_info like window_status_info; /* local copy of window_status_info structure */ 662 663 664 665 666 667 gc_code = 1; 668 gc_window_status_info.version = window_status_version_1; 669 xdm_dyn_menup = gc_dyn_menup; 670 gc_function_key_data_ptr = xforum_user_profile$get_function_key_data_ptr (); 671 672 do while (gc_code ^= 0); 673 call menu_$get_choice (iox_$user_io, 674 xdm_dyn_menu.menu_array (gc_index).location, gc_function_key_data_ptr, 675 gc_fkey, gc_choice, gc_code); 676 if gc_code = video_et_$window_status_pending 677 then call iox_$control (iox_$user_io, "get_window_status", addr (gc_window_status_info), gc_ignore2); 678 end; 679 680 return; 681 682 end get_choice; 683 684 destroy: proc (des_dyn_menup); 685 686 /* PARAMETERS */ 687 688 dcl des_dyn_menup ptr; /* (input) pointer to dyn_menu structure to be freed */ 689 690 /* INTERNAL AUTOMATIC */ 691 692 dcl des_i fixed bin; /* loop index */ 693 694 695 696 697 698 xdm_dyn_menup = des_dyn_menup; 699 700 if xdm_dyn_menup ^= null () 701 then do; 702 do des_i = 0 to xdm_dyn_menu.nth_menu; 703 call menu_$destroy (xdm_dyn_menu.menu_array (des_i).location, (0)); 704 end; 705 free xdm_dyn_menup -> xdm_dyn_menu; 706 end; 707 708 return; 709 710 end destroy; 711 712 collect_spy_data: proc (csd_where, csd_response); 713 714 715 /* PARAMETERS */ 716 717 dcl csd_where fixed bin; /* (input) location response was collected */ 718 dcl csd_response char (*); /* (input) user's response */ 719 720 721 722 723 724 spy.count = spy.count + 1; 725 spy.choices (count).at = csd_where; 726 spy.choices (count).choice = csd_response; 727 728 return; 729 730 end collect_spy_data; 731 732 error: proc (e_code, e_message); 733 734 /* PARAMETERS */ 735 736 dcl e_code fixed bin (35); /* (input) error code associated with the error */ 737 dcl e_message char (*); /* (input) message to be output to user */ 738 739 740 741 742 743 xdm_xforum_error_info.name = xdm_ME; 744 xdm_xforum_error_info.entry = ""; 745 xdm_xforum_error_info.doing = ""; 746 xdm_xforum_error_info.code = e_code; 747 xdm_xforum_error_info.reason = e_message; 748 749 call signal_ ("xforum_fatal_error", null (), addr (xdm_xforum_error_info), null ()); 750 751 end error; 752 753 end xforum_dyn_menu_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/06/87 1014.1 xforum_dyn_menu_.pl1 >special_ldd>install>MR12.1-1065>xforum_dyn_menu_.pl1 301 1 03/27/82 0429.3 menu_dcls.incl.pl1 >ldd>include>menu_dcls.incl.pl1 303 2 09/12/84 0916.7 window_status.incl.pl1 >ldd>include>window_status.incl.pl1 305 3 12/03/84 1241.6 xforum_error_info.incl.pl1 >ldd>include>xforum_error_info.incl.pl1 307 4 12/03/84 1241.6 xforum_ptr_struct_.incl.pl1 >ldd>include>xforum_ptr_struct_.incl.pl1 309 5 04/25/86 0859.6 xforum_spy.incl.pl1 >ldd>include>xforum_spy.incl.pl1 311 6 12/03/84 1241.6 xforum_windows.incl.pl1 >ldd>include>xforum_windows.incl.pl1 6-12 7 09/12/84 0916.7 window_control_info.incl.pl1 >ldd>include>window_control_info.incl.pl1 313 8 08/06/87 1007.2 xforum_prompts.incl.pl1 >special_ldd>install>MR12.1-1065>xforum_prompts.incl.pl1 316 9 08/06/87 1007.2 xforum_answers.incl.pl1 >special_ldd>install>MR12.1-1065>xforum_answers.incl.pl1 319 10 08/06/87 1007.2 xforum_help_infos.incl.pl1 >special_ldd>install>MR12.1-1065>xforum_help_infos.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. N 000125 automatic fixed bin(17,0) level 2 dcl 9-10 set ref 508* PROMPT_HELP 000000 constant char(18) initial unaligned dcl 10-10 set ref 512* SPY_VERSION_1 000114 automatic char(8) initial unaligned dcl 5-27 set ref 5-27* addr builtin function dcl 271 ref 404 404 404 404 512 512 591 602 602 602 602 676 676 749 749 answer_array 000125 automatic structure level 1 unaligned dcl 9-10 set ref 512 512 at 52 based fixed bin(17,0) array level 3 dcl 5-12 set ref 725* bottom 20 000334 external static structure level 2 dcl 6-5 c_choice_count 000136 automatic fixed bin(17,0) dcl 544 set ref 587* 591 592 592 595* 595 c_choices parameter varying char(32) array dcl 534 set ref 530 570 591 c_code parameter fixed bin(35,0) dcl 538 set ref 530 567* 602* 607 c_done_with_choices 000134 automatic bit(1) unaligned dcl 542 set ref 588* c_dyn_menu_req based structure level 1 dcl 559 c_dyn_menu_reqp parameter pointer dcl 536 ref 530 612 614 615 616 c_dyn_menup parameter pointer dcl 537 set ref 530 566* 619* c_header 000137 automatic varying char(80) array dcl 545 set ref 600* 602* c_menu_format 000172 automatic structure level 1 dcl 552 set ref 602 602 c_menu_no 000135 automatic fixed bin(17,0) dcl 543 set ref 590* 597 598 598 600 602* c_menu_requirements 000200 automatic structure level 1 dcl 553 set ref 602 602 c_slots_avail 000164 automatic fixed bin(17,0) dcl 547 set ref 569* 572 572 592 594 595 598 614 c_slots_needed 000165 automatic fixed bin(17,0) dcl 549 set ref 570* 572 592 592 c_submenu_choices based varying char(32) array dcl 557 set ref 602* c_submenu_choices_count 000166 automatic fixed bin(17,0) dcl 550 set ref 592* 594* 597 602 c_submenu_choices_ptr 000170 automatic pointer dcl 551 set ref 591* 602 c_window_info based structure level 1 unaligned dcl 563 c_window_infop parameter pointer dcl 535 ref 530 569 577 578 ceil builtin function dcl 271 ref 367 center_headers 4 000172 automatic bit(1) level 3 packed unaligned dcl 552 set ref 580* center_trailers 4(01) 000172 automatic bit(1) level 3 packed unaligned dcl 552 set ref 581* char builtin function dcl 271 ref 430 432 432 choice 53 based char(10) array level 3 packed unaligned dcl 5-12 set ref 726* choices 52 based structure array level 2 unaligned dcl 5-12 code 51 000010 internal static fixed bin(35,0) level 2 dcl 246 set ref 746* constraints 1 000172 automatic structure level 2 dcl 552 count 51 based fixed bin(17,0) level 2 dcl 5-12 set ref 724* 724 725 726 csd_response parameter char unaligned dcl 718 ref 712 726 csd_where parameter fixed bin(17,0) dcl 717 ref 712 725 d_code parameter fixed bin(35,0) dcl 632 set ref 626 638* 641* d_dyn_menup parameter pointer dcl 630 ref 626 639 d_index parameter fixed bin(17,0) dcl 631 ref 626 641 dagc_DASHES 002714 constant char(80) initial unaligned dcl 360 ref 461 461 dagc_choice 000451 automatic fixed bin(17,0) dcl 343 set ref 425* 430 432 432 436 441 441 446 446 449 449 dagc_choices parameter char array unaligned dcl 330 ref 324 397 dagc_code 000452 automatic fixed bin(35,0) dcl 344 set ref 404* 407 420* 422 425* 427 dagc_dyn_menu_req 000464 automatic structure level 1 dcl 353 set ref 404 404 dagc_dyn_menup 000454 automatic pointer dcl 345 set ref 381* 404* 420* 425* 455* dagc_fkey 000457 automatic bit(1) dcl 347 set ref 425* 430 434 dagc_help_line_break_message parameter char unaligned dcl 335 set ref 324 410* dagc_i 000100 automatic fixed bin(17,0) dcl 372 set ref 380* 390 391 393 394 395* 395 397 398 399* 399 401 402 dagc_items_per_menu 000456 automatic fixed bin(17,0) dcl 346 set ref 366* 367 391 dagc_j 000101 automatic fixed bin(17,0) dcl 373 set ref 390* 397 398* dagc_menu_index 000460 automatic fixed bin(17,0) dcl 348 set ref 412* 420* 425* 436 446* 446 449* 449 dagc_names 000102 automatic varying char(32) array dcl 374 set ref 393* 397* 401* 404* dagc_nindex 000102 automatic fixed bin(17,0) array dcl 376 set ref 394* 398* 402* 438 dagc_num_choices parameter fixed bin(17,0) dcl 331 ref 324 367 374 376 390 390 dagc_number_dashes 000461 automatic fixed bin(17,0) dcl 349 set ref 414* 415* 459* dagc_number_of_menus 000462 automatic fixed bin(17,0) dcl 350 set ref 367* 374 376 390 dagc_option_index 000463 automatic fixed bin(17,0) dcl 351 set ref 436* 438 dagc_prompt_option parameter char unaligned dcl 333 ref 324 393 401 dagc_selected_index parameter fixed bin(17,0) dcl 338 set ref 324 386* 438* dagc_spy_position parameter fixed bin(17,0) dcl 336 set ref 324 385* 430* 432* dagc_spy_ptr parameter pointer dcl 337 ref 324 364 dagc_title parameter char unaligned dcl 332 ref 324 414 417 461 461 des_dyn_menup parameter pointer dcl 688 ref 684 698 des_i 000236 automatic fixed bin(17,0) dcl 692 set ref 702* 703* divide builtin function dcl 271 ref 572 doing 20 000010 internal static char(100) level 2 packed unaligned dcl 246 set ref 745* e_code parameter fixed bin(35,0) dcl 736 ref 732 746 e_message parameter char unaligned dcl 737 ref 732 747 entry 10 000010 internal static char(32) level 2 packed unaligned dcl 246 set ref 744* error_table_$long_record 000336 external static fixed bin(35,0) dcl 492 ref 514 extent 3 based structure level 2 in structure "c_window_info" unaligned dcl 563 in procedure "create" extent 15 000334 external static structure level 4 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" extent 25 000334 external static structure level 4 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" first_option 4 based fixed bin(17,0) array level 3 dcl 291 set ref 598* flags 4 000172 automatic structure level 2 dcl 552 float builtin function dcl 271 ref 367 367 gc_choice parameter fixed bin(17,0) dcl 653 set ref 647 673* gc_code parameter fixed bin(35,0) dcl 655 set ref 647 667* 672 673* 676 gc_dyn_menup parameter pointer dcl 651 ref 647 669 gc_fkey parameter bit(1) dcl 654 set ref 647 673* gc_function_key_data_ptr 000222 automatic pointer dcl 659 set ref 670* 673* gc_ignore2 000224 automatic fixed bin(35,0) dcl 660 set ref 676* gc_index parameter fixed bin(17,0) dcl 652 ref 647 673 gc_window_status_info 000226 automatic structure level 1 unaligned dcl 661 set ref 676 676 hbound builtin function dcl 271 ref 570 height 26 000334 external static fixed bin(17,0) level 5 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" set ref 366 height 4 based fixed bin(17,0) level 3 in structure "c_window_info" dcl 563 in procedure "create" ref 569 578 height 16 000334 external static fixed bin(17,0) level 5 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" set ref 415* 459* ioa_ 000266 constant entry external dcl 220 ref 516 517 ioa_$rsnnl 000270 constant entry external dcl 221 ref 600 iocb 10 000334 external static pointer level 3 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" set ref 415* 417* 452* 459* 461* 462* iocb 20 000334 external static pointer level 3 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" set ref 457* 503* iox_$control 000272 constant entry external dcl 222 ref 676 iox_$user_io 000262 external static pointer dcl 215 set ref 641* 673* 676* length builtin function dcl 271 ref 414 461 461 location 2 based pointer array level 3 dcl 291 set ref 602* 641* 673* 703* ltrim builtin function dcl 271 ref 430 432 432 max_height 2 000172 automatic fixed bin(17,0) level 3 dcl 552 set ref 578* max_length 1 000125 automatic fixed bin(17,0) level 2 dcl 9-10 set ref 509* max_width 1 000172 automatic fixed bin(17,0) level 3 dcl 552 set ref 577* maxlength builtin function dcl 271 ref 509 516 516 menu 10 000334 external static structure level 2 dcl 6-5 menu_$create 000322 constant entry external dcl 1-8 ref 602 menu_$destroy 000330 constant entry external dcl 1-41 ref 703 menu_$display 000324 constant entry external dcl 1-20 ref 641 menu_$get_choice 000326 constant entry external dcl 1-26 ref 673 menu_array 2 based structure array level 2 dcl 291 menu_format based structure level 1 dcl 1-76 menu_format_version_1 constant fixed bin(17,0) initial dcl 1-97 ref 576 menu_requirements based structure level 1 dcl 1-88 menu_requirements_version_1 constant fixed bin(17,0) initial dcl 1-97 ref 585 mod builtin function dcl 271 ref 391 446 449 n_columns 3 000172 automatic fixed bin(17,0) level 2 dcl 552 set ref 579* n_menus 2 000464 automatic fixed bin(17,0) level 2 in structure "dagc_dyn_menu_req" dcl 353 in procedure "xforum_dyn_menu_" set ref 446 449 n_menus 2 based fixed bin(17,0) level 2 in structure "c_dyn_menu_req" dcl 559 in procedure "create" set ref 616* name 000010 internal static char(32) level 2 packed unaligned dcl 246 set ref 743* nth_menu based fixed bin(17,0) level 2 dcl 291 set ref 574* 590 702 705 null builtin function dcl 271 ref 381 566 612 700 749 749 749 749 option_count 5 based fixed bin(17,0) array level 3 dcl 291 set ref 597* 615 options_last_menu 1 based fixed bin(17,0) level 2 dcl 559 set ref 615* options_per_menu 000464 automatic fixed bin(17,0) level 2 in structure "dagc_dyn_menu_req" dcl 353 in procedure "xforum_dyn_menu_" set ref 436 options_per_menu based fixed bin(17,0) level 2 in structure "c_dyn_menu_req" dcl 559 in procedure "create" set ref 614* pad 4(02) 000172 automatic bit(34) level 3 packed unaligned dcl 552 set ref 582* pad_char 5 000172 automatic char(1) level 2 dcl 552 set ref 583* piom_code 000567 automatic fixed bin(35,0) dcl 488 set ref 512* 514 piom_error_text_1 parameter char unaligned dcl 476 set ref 469 516* piom_error_text_2 parameter char unaligned dcl 478 ref 469 piom_help_id parameter char unaligned dcl 480 set ref 469 512* piom_help_line_break_text parameter char unaligned dcl 474 set ref 469 498 517* piom_prompt_text parameter char unaligned dcl 475 ref 469 512 piom_reply 000467 automatic char(256) unaligned dcl 487 set ref 507* 511 520* 521 piom_response parameter varying char dcl 483 set ref 469 502* 509 512* 516 516 520 521 521 piom_spy_id parameter fixed bin(17,0) dcl 481 set ref 469 521* piom_spy_ptr parameter pointer dcl 482 ref 469 496 position 22 000334 external static structure level 3 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" set ref 404 404 position 12 000334 external static structure level 3 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" quit 000100 stack reference condition dcl 237 ref 383 500 reason 52 000010 internal static char(512) level 2 packed unaligned dcl 246 set ref 747* rtrim builtin function dcl 271 ref 430 432 432 signal_ 000276 constant entry external dcl 224 ref 749 spy based structure level 1 unaligned dcl 5-12 spy_ptr 000112 automatic pointer dcl 5-26 set ref 364* 496* 724 724 725 725 726 726 substr builtin function dcl 271 ref 461 461 520 521 521 version 000172 automatic fixed bin(17,0) level 2 in structure "c_menu_format" dcl 552 in procedure "create" set ref 576* version 000226 automatic fixed bin(17,0) level 2 in structure "gc_window_status_info" dcl 661 in procedure "get_choice" set ref 668* version 000200 automatic fixed bin(17,0) level 2 in structure "c_menu_requirements" dcl 553 in procedure "create" set ref 585* video_et_$window_status_pending 000264 external static fixed bin(35,0) dcl 216 ref 676 width 3 based fixed bin(17,0) level 3 in structure "c_window_info" dcl 563 in procedure "create" ref 577 width 15 000334 external static fixed bin(17,0) level 5 in structure "xforum_windows" dcl 6-5 in procedure "xforum_dyn_menu_" ref 414 window_$bell 000300 constant entry external dcl 225 ref 452 window_$clear_window 000302 constant entry external dcl 226 ref 457 503 window_$overwrite_text 000304 constant entry external dcl 227 ref 417 461 window_$position_cursor 000306 constant entry external dcl 228 ref 415 459 window_$sync 000310 constant entry external dcl 229 ref 462 window_position_info based structure level 1 unaligned dcl 7-25 window_status_info based structure level 1 dcl 7-45 window_status_version_1 constant fixed bin(17,0) initial dcl 7-52 ref 668 xdm_ME 000025 constant char(16) initial unaligned dcl 250 ref 743 xdm_OPTION_CODES 000005 constant char(1) initial array unaligned dcl 250 set ref 602* xdm_REDISPLAY constant fixed bin(17,0) initial dcl 250 ref 441 xdm_REDISPLAY2 constant fixed bin(17,0) initial dcl 250 ref 441 xdm_SCROLL_DOWN constant fixed bin(17,0) initial dcl 250 ref 449 xdm_SCROLL_DOWN2 constant fixed bin(17,0) initial dcl 250 ref 449 xdm_SCROLL_UP constant fixed bin(17,0) initial dcl 250 ref 446 xdm_SCROLL_UP2 constant fixed bin(17,0) initial dcl 250 ref 446 xdm_based_area based area(1024) dcl 289 ref 574 xdm_dyn_menu based structure level 1 dcl 291 set ref 574 705 xdm_dyn_menup 000106 automatic pointer dcl 241 set ref 574* 590 597 598 602 615 619 639* 641 669* 673 698* 700 702 703 705 xdm_n_menus 000110 automatic fixed bin(17,0) dcl 242 set ref 572* 574 574 600* 615 616 xdm_xforum_error_info 000010 internal static structure level 1 unaligned dcl 246 set ref 749 749 xforum_error_info based structure level 1 unaligned dcl 3-3 xforum_get_str_ 000274 constant entry external dcl 223 ref 512 xforum_help_line_$pop 000314 constant entry external dcl 231 ref 464 525 xforum_help_line_$push 000312 constant entry external dcl 230 ref 410 498 xforum_ptr_struct_ 000332 external static structure level 1 unaligned dcl 4-3 xforum_redisplay_ 000316 constant entry external dcl 232 ref 443 xforum_system_area_ptr 6 000332 external static pointer level 2 dcl 4-3 set ref 574 602* xforum_user_profile$get_function_key_data_ptr 000320 constant entry external dcl 233 ref 670 xforum_window_info 000116 automatic structure level 1 unaligned dcl 6-8 xforum_windows 000334 external static structure level 1 dcl 6-5 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BREAK_PROMPT internal static char(34) initial unaligned dcl 8-10 COMMENTS_PROMPT internal static char(40) initial unaligned dcl 8-10 COMMENT_PROMPT internal static char(37) initial unaligned dcl 8-10 FILE_PROMPT internal static char(28) initial unaligned dcl 8-10 FIRST_PROMPT internal static char(80) initial unaligned dcl 8-10 FOUR internal static fixed bin(17,0) initial dcl 9-16 FUNCTION_KEY_HELP internal static char(25) initial unaligned dcl 10-10 GETTING_STARTED_HELP internal static char(27) initial unaligned dcl 10-10 MENU_OPTION_HELP internal static char(23) initial unaligned dcl 10-10 MENU_OPTION_KEYS internal static char(1) initial array unaligned dcl 1-100 ONE internal static fixed bin(17,0) initial dcl 9-16 RETURN_PROMPT internal static char(46) initial unaligned dcl 8-10 SPY_AT_1 internal static fixed bin(17,0) initial dcl 5-29 SPY_AT_10 internal static fixed bin(17,0) initial dcl 5-47 SPY_AT_11 internal static fixed bin(17,0) initial dcl 5-49 SPY_AT_12 internal static fixed bin(17,0) initial dcl 5-51 SPY_AT_13 internal static fixed bin(17,0) initial dcl 5-53 SPY_AT_14 internal static fixed bin(17,0) initial dcl 5-55 SPY_AT_15 internal static fixed bin(17,0) initial dcl 5-57 SPY_AT_16 internal static fixed bin(17,0) initial dcl 5-59 SPY_AT_17 internal static fixed bin(17,0) initial dcl 5-61 SPY_AT_18 internal static fixed bin(17,0) initial dcl 5-63 SPY_AT_19 internal static fixed bin(17,0) initial dcl 5-65 SPY_AT_2 internal static fixed bin(17,0) initial dcl 5-31 SPY_AT_3 internal static fixed bin(17,0) initial dcl 5-33 SPY_AT_4 internal static fixed bin(17,0) initial dcl 5-35 SPY_AT_5 internal static fixed bin(17,0) initial dcl 5-37 SPY_AT_6 internal static fixed bin(17,0) initial dcl 5-39 SPY_AT_7 internal static fixed bin(17,0) initial dcl 5-41 SPY_AT_8 internal static fixed bin(17,0) initial dcl 5-43 SPY_AT_9 internal static fixed bin(17,0) initial dcl 5-45 SPY_LOCATION internal static varying char(20) initial array dcl 5-68 TEXT_PROMPT internal static char(31) initial unaligned dcl 8-10 W_STATUS_ASYNC_EVENT internal static bit(36) initial dcl 2-17 W_STATUS_RECONNECTION internal static bit(36) initial dcl 2-17 W_STATUS_SCREEN_INVALID internal static bit(36) initial dcl 2-17 W_STATUS_TTP_CHANGE internal static bit(36) initial dcl 2-17 ZERO internal static fixed bin(17,0) initial dcl 9-16 break_table_info based structure level 1 dcl 7-76 break_table_info_version internal static fixed bin(17,0) initial dcl 7-80 break_table_info_version_1 internal static fixed bin(17,0) initial dcl 7-80 break_table_ptr automatic pointer dcl 7-75 get_editor_key_bindings_info based structure level 1 dcl 7-151 get_editor_key_bindings_info_ptr automatic pointer dcl 7-159 get_editor_key_bindings_info_version_1 internal static char(8) initial unaligned dcl 7-160 line_editor_binding_count automatic fixed bin(17,0) dcl 7-121 line_editor_key_binding_info based structure level 1 dcl 7-129 line_editor_key_binding_info_ptr automatic pointer dcl 7-118 line_editor_key_binding_info_version_3 internal static char(8) initial unaligned dcl 7-148 line_editor_longest_sequence automatic fixed bin(17,0) dcl 7-123 menu_$delete 000000 constant entry external dcl 1-61 menu_$describe 000000 constant entry external dcl 1-35 menu_$list 000000 constant entry external dcl 1-67 menu_$retrieve 000000 constant entry external dcl 1-54 menu_$store 000000 constant entry external dcl 1-46 menu_format_ptr automatic pointer dcl 1-94 menu_requirements_ptr automatic pointer dcl 1-95 more_handler_info based structure level 1 dcl 7-83 more_handler_info_ptr automatic pointer dcl 7-92 more_handler_info_version internal static fixed bin(17,0) initial dcl 7-94 more_handler_info_version_3 internal static fixed bin(17,0) initial dcl 7-94 more_prompt_info based structure level 1 dcl 7-108 more_prompt_info_ptr automatic pointer dcl 7-112 more_prompt_info_version_1 internal static char(8) initial unaligned dcl 7-114 more_responses_info based structure level 1 dcl 7-59 more_responses_info_ptr automatic pointer dcl 7-69 more_responses_info_version_1 internal static fixed bin(17,0) initial dcl 7-67 more_responses_version internal static fixed bin(17,0) initial dcl 7-67 set_editor_key_bindings_info based structure level 1 dcl 7-162 set_editor_key_bindings_info_ptr automatic pointer dcl 7-171 set_editor_key_bindings_info_version_1 internal static char(8) initial unaligned dcl 7-172 token_characters_info based structure level 1 dcl 7-97 token_characters_info_ptr automatic pointer dcl 7-104 token_characters_info_version_1 internal static char(8) initial unaligned dcl 7-106 window_edit_line_info based structure level 1 unaligned dcl 7-177 window_edit_line_info_ptr automatic pointer dcl 7-186 window_edit_line_info_version_1 internal static char(8) initial unaligned dcl 7-183 window_position_info_ptr automatic pointer dcl 7-37 window_position_info_version internal static fixed bin(17,0) initial dcl 7-35 window_position_info_version_1 internal static fixed bin(17,0) initial dcl 7-35 window_status automatic structure level 1 dcl 2-10 window_status_info_ptr automatic pointer dcl 7-43 window_status_string automatic bit(36) unaligned dcl 2-7 window_status_version internal static fixed bin(17,0) initial dcl 7-52 NAMES DECLARED BY EXPLICIT CONTEXT. collect_spy_data 002551 constant entry internal dcl 712 ref 385 430 432 521 create 001772 constant entry internal dcl 530 ref 404 destroy 002501 constant entry internal dcl 684 ref 455 display 002342 constant entry internal dcl 626 ref 420 display_and_get_choice 000250 constant entry external dcl 324 display_submenu 000742 constant label dcl 420 ref 444 error 002606 constant entry internal dcl 732 ref 322 exit_create 002341 constant label dcl 621 ref 607 exit_get_choice_from_menu 001253 constant label dcl 455 ref 387 407 422 427 439 exit_prompt_instead_of_menu 001764 constant label dcl 525 ref 504 get_choice 002370 constant entry internal dcl 647 ref 425 prompt_instead_of_menu 001402 constant entry external dcl 469 xforum_dyn_menu_ 000223 constant entry external dcl 74 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3306 3646 2742 3316 Length 4332 2742 340 450 343 252 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xforum_dyn_menu_ 492 external procedure is an external procedure. begin block on line 371 322 begin block uses auto adjustable storage, and enables or reverts conditions. on unit on line 383 78 on unit on unit on line 500 72 on unit create internal procedure shares stack frame of begin block on line 371. display internal procedure shares stack frame of begin block on line 371. get_choice internal procedure shares stack frame of begin block on line 371. destroy internal procedure shares stack frame of begin block on line 371. collect_spy_data 66 internal procedure is called during a stack extension. error internal procedure shares stack frame of external procedure xforum_dyn_menu_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 xdm_xforum_error_info xforum_dyn_menu_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 371 000100 dagc_i begin block on line 371 000101 dagc_j begin block on line 371 000102 dagc_names begin block on line 371 000102 dagc_nindex begin block on line 371 000134 c_done_with_choices create 000135 c_menu_no create 000136 c_choice_count create 000137 c_header create 000164 c_slots_avail create 000165 c_slots_needed create 000166 c_submenu_choices_count create 000170 c_submenu_choices_ptr create 000172 c_menu_format create 000200 c_menu_requirements create 000222 gc_function_key_data_ptr get_choice 000224 gc_ignore2 get_choice 000226 gc_window_status_info get_choice 000236 des_i destroy xforum_dyn_menu_ 000106 xdm_dyn_menup xforum_dyn_menu_ 000110 xdm_n_menus xforum_dyn_menu_ 000112 spy_ptr xforum_dyn_menu_ 000114 SPY_VERSION_1 xforum_dyn_menu_ 000116 xforum_window_info xforum_dyn_menu_ 000125 answer_array xforum_dyn_menu_ 000451 dagc_choice xforum_dyn_menu_ 000452 dagc_code xforum_dyn_menu_ 000454 dagc_dyn_menup xforum_dyn_menu_ 000456 dagc_items_per_menu xforum_dyn_menu_ 000457 dagc_fkey xforum_dyn_menu_ 000460 dagc_menu_index xforum_dyn_menu_ 000461 dagc_number_dashes xforum_dyn_menu_ 000462 dagc_number_of_menus xforum_dyn_menu_ 000463 dagc_option_index xforum_dyn_menu_ 000464 dagc_dyn_menu_req xforum_dyn_menu_ 000467 piom_reply xforum_dyn_menu_ 000567 piom_code xforum_dyn_menu_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 alloc_char_temp realloc_char_temp enter_begin_block leave_begin_block call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc return_mac fl2_to_fx1 tra_ext_1 alloc_auto_adj mdfx1 enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc trunc_fx2 ceil_fl divide_fx1 op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_ ioa_$rsnnl iox_$control menu_$create menu_$destroy menu_$display menu_$get_choice signal_ window_$bell window_$clear_window window_$overwrite_text window_$position_cursor window_$sync xforum_get_str_ xforum_help_line_$pop xforum_help_line_$push xforum_redisplay_ xforum_user_profile$get_function_key_data_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$long_record iox_$user_io video_et_$window_status_pending xforum_ptr_struct_ xforum_windows LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 5 27 000216 74 000222 322 000231 324 000240 364 000303 366 000307 367 000315 371 000326 374 000331 376 000342 404 000347 380 000357 381 000361 383 000363 385 000377 386 000421 387 000425 390 000430 391 000447 393 000453 394 000471 395 000475 397 000476 398 000527 399 000533 400 000534 401 000536 402 000556 404 000562 407 000617 410 000622 412 000652 414 000654 415 000666 417 000703 419 000740 420 000742 422 000755 425 000760 427 000776 430 001001 432 001074 434 001160 436 001165 438 001173 439 001177 441 001200 443 001205 444 001212 446 001213 449 001225 452 001237 453 001252 455 001253 457 001262 459 001275 461 001315 462 001350 464 001364 465 001371 467 001372 469 001373 496 001447 498 001453 500 001517 502 001534 503 001540 504 001552 507 001555 508 001560 509 001561 511 001563 512 001570 514 001651 516 001656 517 001703 520 001725 521 001733 523 001762 525 001764 528 001771 530 001772 566 001776 567 002001 569 002002 570 002010 572 002013 574 002020 576 002036 577 002040 578 002045 579 002047 580 002051 581 002053 582 002055 583 002057 585 002061 587 002063 588 002065 590 002066 591 002075 592 002111 594 002122 595 002124 597 002126 598 002135 600 002143 602 002204 607 002310 610 002313 612 002315 614 002322 615 002325 616 002334 619 002336 621 002341 626 002342 638 002344 639 002345 641 002351 643 002367 647 002370 667 002372 668 002374 669 002376 670 002402 672 002411 673 002415 676 002442 678 002477 680 002500 684 002501 698 002503 700 002507 702 002513 703 002521 704 002536 705 002540 708 002547 712 002550 724 002564 725 002567 726 002575 728 002605 732 002606 743 002617 744 002623 745 002626 746 002631 747 002634 749 002641 751 002676 ----------------------------------------------------------- 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