COMPILATION LISTING OF SEGMENT fc_menu_create Compiled by: Multics PL/I Compiler, Release 27b, of September 15, 1981 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 06/04/82 1504.5 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* 7* This program is part of the wrapper used by FORTRAN and COBOL programs to access the menu system. 8* It exists because the menu_ subroutines make use of data types which have no counterparts in FORTRAN and/or COBOL. 9**/ 10 /* Written March to April 1982 by Chris Jones */ 11 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 12 fc_menu_create: 13 proc; 14 15 signal condition (bad_call_); /* not a true entrypoint */ 16 return; 17 18 /* Parameters */ 19 20 dcl p_choices (*) char (*) parameter; /* (Input) the options the menu will have */ 21 dcl 1 p_choices_struc parameter aligned, /* ...same, for COBOL */ 22 2 choices (*) char (*) unal; 23 dcl p_code fixed bin (35) parameter; /* (Output) status code */ 24 dcl p_headers (*) char (*) parameter; /* (Input) menu headers */ 25 dcl 1 p_headers_struc parameter aligned, 26 2 headers (*) char (*) unal; 27 dcl p_keys (*) char (1) parameter; /* (Input) the selection keys */ 28 dcl 1 p_keys_struc parameter aligned, 29 2 keys (*) char (1) unal; 30 dcl p_menu_format_array (6) fixed bin parameter; /* (Input) various menu formatting parameters */ 31 dcl 1 p_menu_format_struc aligned parameter, /* (Input) ditto, for COBOL programs */ 32 2 version fixed bin, 33 2 constraints, 34 3 max_width fixed bin, 35 3 max_height fixed bin, 36 2 n_columns fixed bin, 37 2 flags unal, 38 3 center_headers pic "9", 39 3 center_trailers pic "9", 40 2 pad_char char (1) unal; 41 dcl p_menu_id fixed bin (35) parameter; /* (Output) how a menu is identified */ 42 dcl p_menu_needs_array (3) fixed bin parameter; /* (Output) describes size of created menu */ 43 dcl 1 p_menu_needs_struc aligned parameter, /* ...for COBOL programs */ 44 2 lines_needed fixed bin (35), 45 2 width_needed fixed bin (35), 46 2 n_options fixed bin (35); 47 dcl p_menu_ptr ptr; /* (Input) an unpacked menu_id */ 48 dcl p_pad_char char (1) parameter; /* (Input) character used for padding */ 49 dcl p_trailers (*) char (*) parameter; /* (Input) menu trailers */ 50 dcl 1 p_trailers_struc parameter aligned, 51 2 trailers (*) char (*) unal; 52 53 /* Automatic storage */ 54 55 dcl 1 auto_menu_format like menu_format; 56 dcl 1 auto_menu_requirements 57 like menu_requirements; 58 dcl fortran_entry bit (1) aligned; /* "1"b if called from a FORTRAN program */ 59 dcl menu_id_ptr ptr; /* used to redefine p_menu_id */ 60 dcl menu_ptr ptr; /* used in calls to the menu_ subroutines */ 61 62 /* Based variables */ 63 64 dcl THE_AREA area based (get_system_free_area_ ()); 65 dcl menu_array (fc_menu_data_$menu_array_size) ptr based (fc_menu_data_$menu_array_ptr); 66 /* array of menus we are managing */ 67 dcl packed_menu_ptr ptr unal based (menu_id_ptr); 68 /* overlays the fixed bin (35) which is the menu_id */ 69 70 /* Static storage and constants */ 71 72 dcl MENU_ARRAY_SIZE_INCREMENT 73 fixed bin init (5) static options (constant); 74 75 /* The following constants are used as indices into the arrays a FORTRAN program passes in in lieu of structures. */ 76 77 dcl VERSION fixed bin init (1) static options (constant); 78 dcl MAX_WIDTH fixed bin init (2) static options (constant); 79 dcl MAX_HEIGHT fixed bin init (3) static options (constant); 80 dcl N_COLUMNS fixed bin init (4) static options (constant); 81 dcl CENTER_HEADERS fixed bin init (5) static options (constant); 82 dcl CENTER_TRAILERS fixed bin init (6) static options (constant); 83 84 dcl LINES_NEEDED fixed bin init (1) static options (constant); 85 dcl WIDTH_NEEDED fixed bin init (2) static options (constant); 86 dcl N_OPTIONS fixed bin init (3) static options (constant); 87 88 /* External entries and variables */ 89 90 dcl error_table_$out_of_sequence 91 fixed bin (35) ext static; 92 93 dcl fc_menu_data_$initialized 94 bit (1) aligned external static; 95 dcl fc_menu_data_$menu_array_ptr 96 ptr external static; 97 dcl fc_menu_data_$menu_array_size 98 fixed bin external static; 99 100 dcl get_system_free_area_ entry () returns (ptr); 101 102 /* Conditions and builtins */ 103 104 dcl (bad_call_) condition; 105 106 dcl (addr, hbound, lbound, length, null, rtrim) 107 builtin; 108 109 /* Entries to create a menu */ 110 111 fortran_create: 112 entry (p_choices, p_headers, p_trailers, p_pad_char, p_menu_format_array, p_keys, p_menu_needs_array, p_menu_id, 113 p_code); 114 115 call must_have_initialized; 116 fortran_entry = "1"b; 117 auto_menu_format.version = p_menu_format_array (VERSION); 118 auto_menu_format.max_width = p_menu_format_array (MAX_WIDTH); 119 auto_menu_format.max_height = p_menu_format_array (MAX_HEIGHT); 120 auto_menu_format.n_columns = p_menu_format_array (N_COLUMNS); 121 auto_menu_format.center_headers = (p_menu_format_array (CENTER_HEADERS) ^= 0); 122 auto_menu_format.center_trailers = (p_menu_format_array (CENTER_TRAILERS) ^= 0); 123 auto_menu_format.pad_char = p_pad_char; 124 call create_the_menu (p_choices, p_headers, p_trailers, p_keys); 125 return; 126 127 /* The COBOL version of this entry point */ 128 129 cobol_create: 130 entry (p_choices_struc, p_headers_struc, p_trailers_struc, p_menu_format_struc, p_keys_struc, p_menu_needs_struc, 131 p_menu_id, p_code); 132 133 call must_have_initialized; 134 fortran_entry = "0"b; 135 auto_menu_format.version = p_menu_format_struc.version; 136 auto_menu_format.max_width = p_menu_format_struc.max_width; 137 auto_menu_format.max_height = p_menu_format_struc.max_height; 138 auto_menu_format.n_columns = p_menu_format_struc.n_columns; 139 auto_menu_format.center_headers = (p_menu_format_struc.center_headers ^= 0); 140 auto_menu_format.center_trailers = (p_menu_format_struc.center_trailers ^= 0); 141 auto_menu_format.pad_char = p_menu_format_struc.pad_char; 142 call create_the_menu ((p_choices_struc.choices), (p_headers_struc.headers), (p_trailers_struc.trailers), 143 (p_keys_struc.keys)); 144 return; 145 146 create_the_menu: 147 proc (arg_choices, arg_headers, arg_trailers, arg_keys); 148 149 dcl arg_choices (*) char (*) parameter; 150 dcl arg_headers (*) char (*) parameter; 151 dcl arg_keys (*) char (1) parameter; 152 dcl arg_trailers (*) char (*) parameter; 153 154 dcl array_idx fixed bin; 155 dcl choices (lbound (arg_choices, 1):hbound (arg_choices, 1)) 156 char (length (arg_choices (hbound (arg_choices, 1)))) varying; 157 dcl headers (lbound (arg_headers, 1):hbound (arg_headers, 1)) 158 char (length (arg_headers (hbound (arg_headers, 1)))) varying; 159 dcl keys (lbound (arg_keys, 1):hbound (arg_keys, 1)) char (1) unal; 160 dcl trailers (lbound (arg_trailers, 1):hbound (arg_trailers, 1)) 161 char (length (arg_trailers (hbound (arg_trailers, 1)))) varying; 162 163 /* Copy all of the arguments into the right kind of structure */ 164 165 do array_idx = lbound (arg_choices, 1) to hbound (arg_choices, 1); 166 choices (array_idx) = rtrim (arg_choices (array_idx)); 167 end; 168 do array_idx = lbound (arg_headers, 1) to hbound (arg_headers, 1); 169 headers (array_idx) = rtrim (arg_headers (array_idx)); 170 end; 171 do array_idx = lbound (arg_trailers, 1) to hbound (arg_trailers, 1); 172 trailers (array_idx) = rtrim (arg_trailers (array_idx)); 173 end; 174 do array_idx = lbound (arg_keys, 1) to hbound (arg_keys, 1); 175 keys (array_idx) = arg_keys (array_idx); 176 end; 177 178 auto_menu_requirements.version = menu_requirements_version_1; 179 auto_menu_format.pad = ""b; 180 181 /* Create the menu, and copy back the returned items */ 182 183 call menu_$create (choices, headers, trailers, addr (auto_menu_format), keys, null (), 184 addr (auto_menu_requirements), menu_ptr, p_code); 185 if fortran_entry then do; 186 p_menu_needs_array (LINES_NEEDED) = auto_menu_requirements.lines_needed; 187 p_menu_needs_array (WIDTH_NEEDED) = auto_menu_requirements.width_needed; 188 p_menu_needs_array (N_OPTIONS) = auto_menu_requirements.n_options; 189 end; 190 else do; 191 p_menu_needs_struc.lines_needed = auto_menu_requirements.lines_needed; 192 p_menu_needs_struc.width_needed = auto_menu_requirements.width_needed; 193 p_menu_needs_struc.n_options = auto_menu_requirements.n_options; 194 end; 195 menu_id_ptr = addr (p_menu_id); 196 packed_menu_ptr = menu_ptr; /* sets menu_id */ 197 198 call add_to_menu_array_proc (menu_ptr); /* remember we created it */ 199 200 end create_the_menu; 201 202 /* Entry to destroy a previously created menu */ 203 204 destroy: 205 entry (p_menu_id, p_code); 206 207 call must_have_initialized; 208 menu_id_ptr = addr (p_menu_id); 209 menu_ptr = packed_menu_ptr; 210 call remove_from_menu_array (menu_ptr); 211 call menu_$destroy (menu_ptr, p_code); 212 packed_menu_ptr = menu_ptr; 213 return; 214 215 add_to_menu_array: 216 entry (p_menu_ptr); 217 218 call add_to_menu_array_proc (p_menu_ptr); 219 return; 220 221 /* Routine to add a newly created menu to the array of menus we will destroy on termination of this package. 222* This routine handles the case of growing the menu_array if necessary. */ 223 224 add_to_menu_array_proc: 225 proc (menu_ptr); 226 227 dcl menu_ptr ptr; /* the id to add to the array */ 228 229 dcl menu_array_idx fixed bin; /* index into menu_array */ 230 231 do menu_array_idx = 1 to fc_menu_data_$menu_array_size while (menu_array (menu_array_idx) ^= null ()); 232 end; 233 if menu_array_idx > fc_menu_data_$menu_array_size then do; 234 /* must grow menu_array */ 235 236 begin; /* so we can define some tricky arrays */ 237 238 dcl new_menu_array_end_ptr ptr; 239 dcl old_menu_array_ptr ptr; 240 dcl old_menu_array_size fixed bin; 241 242 dcl old_menu_array (old_menu_array_size) ptr based (old_menu_array_ptr); 243 dcl menu_array_beginning (old_menu_array_size) ptr based (fc_menu_data_$menu_array_ptr); 244 dcl menu_array_end (MENU_ARRAY_SIZE_INCREMENT) ptr based (new_menu_array_end_ptr); 245 246 old_menu_array_ptr = fc_menu_data_$menu_array_ptr; 247 /* save so we can access after creating new one */ 248 old_menu_array_size = fc_menu_data_$menu_array_size; 249 menu_array_idx = fc_menu_data_$menu_array_size + 1; 250 /* this is where the new free slot will be */ 251 252 fc_menu_data_$menu_array_size = fc_menu_data_$menu_array_size + MENU_ARRAY_SIZE_INCREMENT; 253 allocate menu_array in (THE_AREA) set (fc_menu_data_$menu_array_ptr); 254 new_menu_array_end_ptr = addr (menu_array (menu_array_idx)); 255 menu_array_beginning (*) = old_menu_array (*); 256 /* copy all the old values */ 257 free old_menu_array; /* all done with this now */ 258 menu_array_end (*) = null (); 259 end; /* the begin */ 260 end; /* the do */ 261 262 menu_array (menu_array_idx) = menu_ptr; 263 264 end add_to_menu_array_proc; 265 266 remove_from_menu_array: 267 proc (menu_ptr); 268 269 dcl menu_ptr ptr; 270 271 dcl menu_array_idx fixed bin; 272 273 do menu_array_idx = 1 to fc_menu_data_$menu_array_size while (menu_array (menu_array_idx) ^= menu_ptr); 274 end; 275 276 if menu_array_idx <= fc_menu_data_$menu_array_size then 277 if menu_array (menu_array_idx) = menu_ptr then 278 menu_array (menu_array_idx) = null (); 279 280 end remove_from_menu_array; 281 282 must_have_initialized: 283 proc; 284 285 if ^fc_menu_data_$initialized then 286 goto HAVE_NOT_INITIALIZED; 287 288 end must_have_initialized; 289 290 HAVE_NOT_INITIALIZED: 291 p_code = error_table_$out_of_sequence; 292 return; 293 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 */ 294 295 296 end fc_menu_create; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/04/82 1440.6 fc_menu_create.pl1 >spec>on>06/04/82>fc_menu_create.pl1 294 1 03/27/82 0429.3 menu_dcls.incl.pl1 >ldd>include>menu_dcls.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. CENTER_HEADERS constant fixed bin(17,0) initial dcl 81 ref 121 CENTER_TRAILERS constant fixed bin(17,0) initial dcl 82 ref 122 LINES_NEEDED constant fixed bin(17,0) initial dcl 84 ref 186 MAX_HEIGHT constant fixed bin(17,0) initial dcl 79 ref 119 MAX_WIDTH constant fixed bin(17,0) initial dcl 78 ref 118 MENU_ARRAY_SIZE_INCREMENT constant fixed bin(17,0) initial dcl 72 ref 252 258 N_COLUMNS constant fixed bin(17,0) initial dcl 80 ref 120 N_OPTIONS constant fixed bin(17,0) initial dcl 86 ref 188 THE_AREA based area(1024) dcl 64 ref 253 VERSION constant fixed bin(17,0) initial dcl 77 ref 117 WIDTH_NEEDED constant fixed bin(17,0) initial dcl 85 ref 187 addr builtin function dcl 106 ref 183 183 183 183 195 208 254 arg_choices parameter char array unaligned dcl 149 ref 146 155 155 155 155 165 165 166 arg_headers parameter char array unaligned dcl 150 ref 146 157 157 157 157 168 168 169 arg_keys parameter char(1) array unaligned dcl 151 ref 146 159 159 174 174 175 arg_trailers parameter char array unaligned dcl 152 ref 146 160 160 160 160 171 171 172 array_idx 000100 automatic fixed bin(17,0) dcl 154 set ref 165* 166 166* 168* 169 169* 171* 172 172* 174* 175 175* auto_menu_format 000100 automatic structure level 1 unaligned dcl 55 set ref 183 183 auto_menu_requirements 000106 automatic structure level 1 unaligned dcl 56 set ref 183 183 bad_call_ 000120 stack reference condition dcl 104 ref 15 center_headers 4 parameter picture(1) level 3 in structure "p_menu_format_struc" packed unaligned dcl 31 in procedure "fc_menu_create" ref 139 center_headers 4 000100 automatic bit(1) level 3 in structure "auto_menu_format" packed unaligned dcl 55 in procedure "fc_menu_create" set ref 121* 139* center_trailers 4(09) parameter picture(1) level 3 in structure "p_menu_format_struc" packed unaligned dcl 31 in procedure "fc_menu_create" ref 140 center_trailers 4(01) 000100 automatic bit(1) level 3 in structure "auto_menu_format" packed unaligned dcl 55 in procedure "fc_menu_create" set ref 122* 140* choices 000101 automatic varying char array dcl 155 in procedure "create_the_menu" set ref 166* 183* choices parameter char array level 2 in structure "p_choices_struc" packed unaligned dcl 21 in procedure "fc_menu_create" ref 142 constraints 1 parameter structure level 2 in structure "p_menu_format_struc" dcl 31 in procedure "fc_menu_create" constraints 1 000100 automatic structure level 2 in structure "auto_menu_format" unaligned dcl 55 in procedure "fc_menu_create" error_table_$out_of_sequence 000010 external static fixed bin(35,0) dcl 90 ref 290 fc_menu_data_$initialized 000012 external static bit(1) dcl 93 ref 285 fc_menu_data_$menu_array_ptr 000014 external static pointer dcl 95 set ref 231 246 253* 254 255 262 273 276 276 fc_menu_data_$menu_array_size 000016 external static fixed bin(17,0) dcl 97 set ref 231 233 248 249 252* 252 253 273 276 flags 4 parameter structure level 2 in structure "p_menu_format_struc" packed unaligned dcl 31 in procedure "fc_menu_create" flags 4 000100 automatic structure level 2 in structure "auto_menu_format" packed unaligned dcl 55 in procedure "fc_menu_create" fortran_entry 000112 automatic bit(1) dcl 58 set ref 116* 134* 185 get_system_free_area_ 000020 constant entry external dcl 100 ref 253 hbound builtin function dcl 106 ref 155 155 157 157 159 160 160 165 168 171 174 headers 000101 automatic varying char array dcl 157 in procedure "create_the_menu" set ref 169* 183* headers parameter char array level 2 in structure "p_headers_struc" packed unaligned dcl 25 in procedure "fc_menu_create" ref 142 keys 000101 automatic char(1) array unaligned dcl 159 in procedure "create_the_menu" set ref 175* 183* keys parameter char(1) array level 2 in structure "p_keys_struc" packed unaligned dcl 28 in procedure "fc_menu_create" ref 142 lbound builtin function dcl 106 ref 155 157 159 160 165 168 171 174 length builtin function dcl 106 ref 155 157 160 lines_needed parameter fixed bin(35,0) level 2 in structure "p_menu_needs_struc" dcl 43 in procedure "fc_menu_create" set ref 191* lines_needed 1 000106 automatic fixed bin(17,0) level 2 in structure "auto_menu_requirements" dcl 56 in procedure "fc_menu_create" set ref 186 191 max_height 2 000100 automatic fixed bin(17,0) level 3 in structure "auto_menu_format" dcl 55 in procedure "fc_menu_create" set ref 119* 137* max_height 2 parameter fixed bin(17,0) level 3 in structure "p_menu_format_struc" dcl 31 in procedure "fc_menu_create" ref 137 max_width 1 000100 automatic fixed bin(17,0) level 3 in structure "auto_menu_format" dcl 55 in procedure "fc_menu_create" set ref 118* 136* max_width 1 parameter fixed bin(17,0) level 3 in structure "p_menu_format_struc" dcl 31 in procedure "fc_menu_create" ref 136 menu_$create 000022 constant entry external dcl 1-8 ref 183 menu_$destroy 000024 constant entry external dcl 1-41 ref 211 menu_array based pointer array dcl 65 set ref 231 253 254 262* 273 276 276* menu_array_beginning based pointer array dcl 243 set ref 255* menu_array_end based pointer array dcl 244 set ref 258* menu_array_idx 000142 automatic fixed bin(17,0) dcl 271 in procedure "remove_from_menu_array" set ref 273* 273* 276 276 276 menu_array_idx 000100 automatic fixed bin(17,0) dcl 229 in procedure "add_to_menu_array_proc" set ref 231* 231* 233 249* 254 262 menu_format based structure level 1 dcl 1-76 menu_id_ptr 000114 automatic pointer dcl 59 set ref 195* 196 208* 209 212 menu_ptr parameter pointer dcl 269 in procedure "remove_from_menu_array" ref 266 273 276 menu_ptr 000116 automatic pointer dcl 60 in procedure "fc_menu_create" set ref 183* 196 198* 209* 210* 211* 212 menu_ptr parameter pointer dcl 227 in procedure "add_to_menu_array_proc" ref 224 262 menu_requirements based structure level 1 dcl 1-88 menu_requirements_version_1 constant fixed bin(17,0) initial dcl 1-97 ref 178 n_columns 3 parameter fixed bin(17,0) level 2 in structure "p_menu_format_struc" dcl 31 in procedure "fc_menu_create" ref 138 n_columns 3 000100 automatic fixed bin(17,0) level 2 in structure "auto_menu_format" dcl 55 in procedure "fc_menu_create" set ref 120* 138* n_options 3 000106 automatic fixed bin(17,0) level 2 in structure "auto_menu_requirements" dcl 56 in procedure "fc_menu_create" set ref 188 193 n_options 2 parameter fixed bin(35,0) level 2 in structure "p_menu_needs_struc" dcl 43 in procedure "fc_menu_create" set ref 193* new_menu_array_end_ptr 000102 automatic pointer dcl 238 set ref 254* 258 null builtin function dcl 106 ref 183 183 231 258 276 old_menu_array based pointer array dcl 242 ref 255 257 old_menu_array_ptr 000104 automatic pointer dcl 239 set ref 246* 255 257 old_menu_array_size 000106 automatic fixed bin(17,0) dcl 240 set ref 248* 255 257 p_choices parameter char array unaligned dcl 20 set ref 111 124* p_choices_struc parameter structure level 1 dcl 21 ref 129 p_code parameter fixed bin(35,0) dcl 23 set ref 111 129 183* 204 211* 290* p_headers parameter char array unaligned dcl 24 set ref 111 124* p_headers_struc parameter structure level 1 dcl 25 ref 129 p_keys parameter char(1) array unaligned dcl 27 set ref 111 124* p_keys_struc parameter structure level 1 dcl 28 ref 129 p_menu_format_array parameter fixed bin(17,0) array dcl 30 ref 111 117 118 119 120 121 122 p_menu_format_struc parameter structure level 1 dcl 31 ref 129 p_menu_id parameter fixed bin(35,0) dcl 41 set ref 111 129 195 204 208 p_menu_needs_array parameter fixed bin(17,0) array dcl 42 set ref 111 186* 187* 188* p_menu_needs_struc parameter structure level 1 dcl 43 set ref 129 p_menu_ptr parameter pointer dcl 47 set ref 215 218* p_pad_char parameter char(1) unaligned dcl 48 ref 111 123 p_trailers parameter char array unaligned dcl 49 set ref 111 124* p_trailers_struc parameter structure level 1 dcl 50 ref 129 packed_menu_ptr based pointer unaligned dcl 67 set ref 196* 209 212* pad 4(02) 000100 automatic bit(34) level 3 packed unaligned dcl 55 set ref 179* pad_char 5 000100 automatic char(1) level 2 in structure "auto_menu_format" packed unaligned dcl 55 in procedure "fc_menu_create" set ref 123* 141* pad_char 4(18) parameter char(1) level 2 in structure "p_menu_format_struc" packed unaligned dcl 31 in procedure "fc_menu_create" ref 141 rtrim builtin function dcl 106 ref 166 169 172 trailers 000101 automatic varying char array dcl 160 in procedure "create_the_menu" set ref 172* 183* trailers parameter char array level 2 in structure "p_trailers_struc" packed unaligned dcl 50 in procedure "fc_menu_create" ref 142 version 000100 automatic fixed bin(17,0) level 2 in structure "auto_menu_format" dcl 55 in procedure "fc_menu_create" set ref 117* 135* version 000106 automatic fixed bin(17,0) level 2 in structure "auto_menu_requirements" dcl 56 in procedure "fc_menu_create" set ref 178* version parameter fixed bin(17,0) level 2 in structure "p_menu_format_struc" dcl 31 in procedure "fc_menu_create" ref 135 width_needed 1 parameter fixed bin(35,0) level 2 in structure "p_menu_needs_struc" dcl 43 in procedure "fc_menu_create" set ref 192* width_needed 2 000106 automatic fixed bin(17,0) level 2 in structure "auto_menu_requirements" dcl 56 in procedure "fc_menu_create" set ref 187 192 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. MENU_OPTION_KEYS internal static char(1) initial array unaligned dcl 1-100 menu_$delete 000000 constant entry external dcl 1-61 menu_$describe 000000 constant entry external dcl 1-35 menu_$display 000000 constant entry external dcl 1-20 menu_$get_choice 000000 constant entry external dcl 1-26 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_format_version_1 internal static fixed bin(17,0) initial dcl 1-97 menu_requirements_ptr automatic pointer dcl 1-95 NAMES DECLARED BY EXPLICIT CONTEXT. HAVE_NOT_INITIALIZED 001072 constant label dcl 290 ref 285 add_to_menu_array 001055 constant entry external dcl 215 add_to_menu_array_proc 001741 constant entry internal dcl 224 ref 198 218 cobol_create 000236 constant entry external dcl 129 create_the_menu 001077 constant entry internal dcl 146 ref 124 142 destroy 001006 constant entry external dcl 204 fc_menu_create 000064 constant entry external dcl 12 fortran_create 000104 constant entry external dcl 111 must_have_initialized 002136 constant entry internal dcl 282 ref 115 133 207 remove_from_menu_array 002070 constant entry internal dcl 266 ref 210 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2342 2370 2154 2352 Length 2602 2154 26 175 166 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME fc_menu_create 175 external procedure is an external procedure. create_the_menu 166 internal procedure uses auto adjustable storage. add_to_menu_array_proc 79 internal procedure is called by several nonquick procedures. begin block on line 236 begin block shares stack frame of internal procedure add_to_menu_array_proc. remove_from_menu_array internal procedure shares stack frame of external procedure fc_menu_create. must_have_initialized internal procedure shares stack frame of external procedure fc_menu_create. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME add_to_menu_array_proc 000100 menu_array_idx add_to_menu_array_proc 000102 new_menu_array_end_ptr begin block on line 236 000104 old_menu_array_ptr begin block on line 236 000106 old_menu_array_size begin block on line 236 create_the_menu 000100 array_idx create_the_menu 000101 choices create_the_menu 000101 trailers create_the_menu 000101 headers create_the_menu 000101 keys create_the_menu fc_menu_create 000100 auto_menu_format fc_menu_create 000106 auto_menu_requirements fc_menu_create 000112 fortran_entry fc_menu_create 000114 menu_id_ptr fc_menu_create 000116 menu_ptr fc_menu_create 000142 menu_array_idx remove_from_menu_array THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return alloc_auto_adj signal shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc unpack_pic alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ menu_$create menu_$destroy THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$out_of_sequence fc_menu_data_$initialized fc_menu_data_$menu_array_ptr fc_menu_data_$menu_array_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000063 15 000071 16 000074 111 000075 115 000136 116 000137 117 000141 118 000146 119 000151 120 000154 121 000157 122 000165 123 000174 124 000201 125 000226 129 000227 133 000250 134 000251 135 000252 136 000255 137 000260 138 000262 139 000264 140 000277 141 000317 142 000325 144 001000 204 001002 207 001020 208 001021 209 001023 210 001030 211 001032 212 001043 213 001051 215 001052 218 001062 219 001071 290 001072 292 001075 146 001076 155 001124 157 001155 159 001206 160 001225 183 001256 165 001324 166 001334 167 001403 168 001405 169 001416 170 001465 171 001467 172 001500 173 001547 174 001551 175 001562 176 001604 178 001606 179 001611 183 001613 185 001672 186 001675 187 001702 188 001705 189 001710 191 001711 192 001714 193 001717 195 001721 196 001723 198 001730 200 001737 224 001740 231 001746 232 001765 233 001767 246 001773 248 001777 249 002001 252 002003 253 002005 254 002024 255 002030 257 002040 258 002042 262 002056 264 002067 266 002070 273 002072 274 002113 276 002115 280 002135 282 002136 285 002137 288 002142 ----------------------------------------------------------- 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