COMPILATION LISTING OF SEGMENT forum_list_meetings Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 02/16/88 1413.7 mst Tue Options: optimize map 1 /****^ *************************************************************** 2* * * 3* * Copyright, (C) Massachusetts Institute of Technology, 1986 * 4* * * 5* * Copyright (c) 1982 by Massachusetts Institute of Technology * 6* * * 7* *************************************************************** */ 8 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(86-07-29,Pattin), approve(86-07-29,MCR7354), 14* audit(86-08-07,Margolin), install(86-08-16,MR12.0-1128): 15* Added -count to next_meeting, added -from and -exclude to check_meetings. 16* Made check_meetings save meeting list pointer. 17* Check for duplicates in search list. 18* END HISTORY COMMENTS */ 19 20 21 /* forum_list_meetings 22* 23* Originally written: May 1980 ML Auerbach 24* Extensively revised: 2 December 1980 MLA 25* Modified 29 May 1981 by J. Spencer Love to update to current programming standards and add features. 26* Modified 13 June 1981 by J. Spencer Love to call gate, implement -inhibit_error, and add forum_list_request entry. 27* Modified 08/21/81 Jay Pattin for ssu_, renamed it to con_list_meetings 28* Modified 01/21/82 Jay Pattin renamed forum_list and added -chairman, -participating, -verbose 29* Modified 02/17/82 Jay Pattin for ssu_$standalone_invocation RAH RAH 30* Modified 3/26/82 Jay Pattin back to forum_list_meetings 31* Modified 5/5/82 Jay Pattin added read only stuff 32* Modified 5/31/82 Jay Pattin added -nnt, -npart, -nchg 33* Modified 8/6/82 Jay Pattin for better error reporting 34* Modified 9/24/82 Jay Pattin for real pathnames and -from, -adj, nadj 35* Modified 6/2/83 Jay Pattin to add check_meetings and next_meeting 36* Modified 12/6/85 Jay Pattin nm -count, timing stuff, duplication checking 37**/ 38 39 forum_list_meetings: 40 flsm: 41 procedure () options (variable); 42 43 declare (P_ssu_ptr, P_passport_info_ptr) 44 ptr parameter; 45 46 declare (addr, addrel, after, before, binary, clock, currentsize, divide, length, max, min, null, rtrim, substr) 47 builtin; 48 49 declare cleanup condition; 50 51 declare absolute_pathname bit (1) aligned, 52 access_name char (32), 53 access_time fixed bin (71), 54 active_function bit (1) aligned, 55 adjourned bit (1) aligned, 56 all_switch bit (1) aligned, 57 any_person bit (1) aligned, 58 arg character (arg_lth) based (arg_ptr) unal, 59 arg_count fixed bin, 60 arg_idx fixed bin, 61 arg_lth fixed bin (21), 62 arg_ptr ptr, 63 before_time fixed bin (71), 64 brief_switch bit (1) aligned, 65 chairman_switch bit (1) aligned, 66 chairman_expected bit (1) aligned, 67 chair_width fixed bin, 68 ckm_switch bit (1) aligned, 69 count_switch bit (1) aligned, 70 cpu fixed bin (71), 71 dir_idx fixed bin, 72 change_switch bit (1) aligned, 73 cm_username char (20), 74 eligible_switch bit (1) aligned, 75 exclude_switch bit (1) aligned, 76 explicit bit (1) aligned, 77 header_switch bit (1) aligned, 78 i fixed bin, 79 inhibit_error bit (1) aligned, 80 interesting_switch bit (1) aligned, 81 j fixed bin, 82 forum_directory char (168), 83 last_cpu fixed bin (71), 84 last_pf fixed bin, 85 last_seen_pic pic "zz9999", 86 last_trans_pic pic "zz9999", 87 message char (48), 88 name_width fixed bin, 89 no_adjourned bit (1) aligned, 90 noheader_switch bit (1) aligned, 91 no_read_only bit (1) aligned, 92 no_changes bit (1) aligned, 93 no_participate bit (1) aligned, 94 no_notify bit (1) aligned, 95 notify_switch bit (1) aligned, 96 obj_name_count fixed bin, 97 obj_name_idx fixed bin, 98 participate_switch bit (1) aligned, 99 page_faults fixed bin, 100 read_only bit (1) aligned, 101 request char (256), 102 return_string char (rtn_string_length) varying based (rtn_string_ptr), 103 rtn_string_length fixed bin (21), 104 rtn_string_ptr ptr, 105 select_names_ptr ptr, 106 short_name_width fixed bin, 107 status fixed bin (35), 108 subsystem_entry bit (1) aligned, 109 ssu_ptr ptr, 110 system_area area based (system_area_ptr), 111 system_area_ptr ptr, 112 timing bit (1) aligned, 113 uid_array (200) bit (36) aligned, 114 uid_count fixed bin, 115 user_name_expected bit (1) aligned, 116 user_name_given bit (1) aligned, 117 verbose_switch bit (1) aligned, 118 whoami char (32); 119 120 declare 1 select_names aligned based (select_names_ptr), 121 2 no_names fixed bin, 122 2 pad bit (36) aligned, 123 2 array (0 refer (select_names.no_names)), 124 3 forum_names char (32) unaligned, 125 3 exclude bit (1) aligned, 126 3 star_name bit (1) aligned, 127 3 matched bit (1) aligned; 128 129 declare 1 fi aligned like forum_info; 130 131 declare ( 132 forum_et_$no_such_forum, 133 forum_et_$not_eligible, 134 error_table_$badopt, 135 error_table_$inconsistent, 136 error_table_$noarg, 137 error_table_$nomatch 138 ) fixed bin (35) external; 139 140 declare active_fnc_err_ entry () options (variable), 141 check_star_name_$entry entry (char (*), fixed bin (35)), 142 com_err_ entry () options (variable), 143 convert_date_to_binary_ entry (char (*), fixed bin (71), fixed bin (35)), 144 cpu_time_and_paging_ entry (fixed bin, fixed bin(71), fixed bin), 145 cu_$af_return_arg entry (fixed bin, ptr, fixed bin (21)) returns (fixed bin (35)), 146 cu_$arg_list_ptr entry () returns (ptr), 147 forum_$forum_info entry (char (*), char (*), char (*), fixed bin (71), ptr, fixed bin (35)), 148 forum_$get_forum_path entry (char (*), char (*), char (*), char (*), fixed bin (35)), 149 get_system_free_area_ entry () returns (ptr), 150 get_temp_segment_ entry (char (*), ptr, fixed bin (35)), 151 hcs_$get_uid_file entry (char (*), char (*), bit (36) aligned, fixed bin (35)), 152 hcs_$star_dir_list_ entry (char (*), char (*), fixed bin (3), ptr, fixed bin, fixed bin, ptr, ptr, 153 fixed bin (35)), 154 ioa_ entry () options (variable), 155 match_star_name_ entry (char (*), char (*), fixed bin (35)), 156 release_temp_segment_ entry (char (*), ptr, fixed bin (35)), 157 requote_string_ entry (char (*)) returns (char (*)), 158 search_paths_$get entry (char (*), bit (36), char (*), ptr, ptr, fixed bin, ptr, fixed bin (35)), 159 ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)), 160 ssu_$abort_line entry options (variable), 161 ssu_$destroy_invocation entry (ptr), 162 ssu_$execute_line entry (ptr, ptr, fixed bin (21), fixed bin (35)), 163 ssu_$print_message entry options (variable), 164 ssu_$return_arg entry (ptr, fixed bin, bit (1) aligned, ptr, fixed bin (21)), 165 ssu_$standalone_invocation entry (ptr, char (*), char (*), ptr, entry, fixed bin (35)), 166 user_info_$whoami entry (char (*),char (*), char (*)); 167 1 1 /* START OF: forum_info.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 1 7* audit(86-08-03,Margolin), install(86-08-16,MR12.0-1128): 1 8* Changed to version 2, speed up call by not calculating remove count. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 declare forum_info_ptr ptr; 1 13 1 14 declare 1 forum_info aligned based (forum_info_ptr), 1 15 2 version fixed bin, /* Must be 1 or 2 */ 1 16 2 forum_uid bit (36), 1 17 2 chairman unaligned, 1 18 3 username char (20), 1 19 3 project char (9), 1 20 3 pad char (3), 1 21 2 attendee_count fixed bin, 1 22 2 removal_count fixed bin, /* always 0 in version 2 */ 1 23 2 transaction_count fixed bin, 1 24 2 deletion_count fixed bin, 1 25 2 last_seen_trans_idx fixed bin, 1 26 2 last_time_changed fixed bin (71), 1 27 2 last_time_attended fixed bin (71), 1 28 2 changes_count fixed bin, 1 29 2 flags unaligned, 1 30 3 eligible bit (1), 1 31 3 mbz1 bit (1), 1 32 3 removed bit (1), 1 33 3 notify bit (1), 1 34 3 attending bit (1), 1 35 3 mbz2 bit (2), 1 36 3 read_only bit (1), 1 37 3 adjourned bit (1), 1 38 3 mbz3 bit (27); 1 39 1 40 declare forum_info_version_1 fixed bin static options (constant) initial (1), 1 41 forum_info_version_2 fixed bin static options (constant) initial (2); 1 42 1 43 /* END OF: forum_info.incl.pl1 * * * * * * * * * * * * * * * * * * * */ 168 169 2 1 /* BEGIN INCLUDE FILE forum_meeting_list.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-07-30,Pattin), approve(86-07-30,MCR7354), 2 6* audit(86-08-03,Margolin), install(86-08-16,MR12.0-1128): 2 7* Created to make check_meetings saved list accessible outside forum. 2 8* END HISTORY COMMENTS */ 2 9 2 10 /* This include file declares the structure used to hold the results of the 2 11* forum_check_meetings command. It is pointed to by the external variable 2 12* forum_data_$meeting_list. 2 13* 2 14* The array contains information about 'no_selected' meetings. The 'order' 2 15* array contains sorting information (alphabetical order by short name) that 2 16* can be used in the following way: 2 17* 2 18* do idx = 1 to forums_array.no_selected; 2 19* process (forums_array.forums (forums_array.forums(idx).order)); 2 20* end; 2 21* 2 22* The 'processed' flag should be set to indicate that this entry has 2 23* been used. The forum 'next_meeting' request obeys this protocol. */ 2 24 2 25 declare forums_array_ptr ptr, 2 26 forum_data_$meeting_list ptr external; 2 27 2 28 declare 1 forums_array aligned based (forums_array_ptr), 2 29 2 version char (8), 2 30 2 no_selected fixed bin, 2 31 2 no_changed fixed bin, 2 32 2 forums (0 refer (forums_array.no_selected)), 2 33 3 long_name char (26) unaligned, 2 34 3 short_name char (26) unaligned, 2 35 3 path_name char (168) unaligned, 2 36 3 chairman char (32) unaligned, 2 37 3 uid bit (36) aligned, 2 38 3 count fixed bin, /* changed transactions */ 2 39 3 last_seen fixed bin, 2 40 3 last_trans fixed bin, /* last in meeting */ 2 41 3 flags unaligned, 2 42 4 eligible bit (1), 2 43 4 removed bit (1), 2 44 4 notify bit (1), 2 45 4 attending bit (1), 2 46 4 two_names bit (1), /* short_name is valid iff this is on */ 2 47 4 read_only bit (1), 2 48 4 attended bit (1), 2 49 4 adjourned bit (1), 2 50 4 processed bit (1), /* next_meeting has used this one */ 2 51 4 mbz bit (27), 2 52 3 order fixed bin; /* see above */ 2 53 2 54 declare forum_meeting_list_version_1 char (8) static options (constant) init ("FML_1"); 2 55 2 56 /* END INCLUDE FILE forum_meeting_list.incl.pl1 */ 170 171 3 1 /* BEGIN INCLUDE FILE . . . sl_info.incl.pl1 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(87-11-16,Lippard), approve(87-12-21,MCR7822), 3 7* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 3 8* Modified to add INITIATED_SEGS type. 3 9* 2) change(87-11-19,Lippard), approve(87-12-21,MCR7822), 3 10* audit(88-02-09,Blair), install(88-02-16,MR12.2-1023): 3 11* Added uid to sl_info structure. 3 12* END HISTORY COMMENTS */ 3 13 3 14 3 15 declare 1 sl_info aligned based (sl_info_p), 3 16 2 version fixed binary, /* Must be 1 */ 3 17 2 num_paths fixed binary, /* Number of search paths */ 3 18 2 change_index_p pointer, /* Pointer to search list's update count */ 3 19 2 change_index fixed binary (71), /* This search list's update count */ 3 20 2 pad1 (6) bit (36), /* Must be zero */ 3 21 2 paths (sl_info_num_paths refer (sl_info.num_paths)), 3 22 3 type fixed binary, /* Type of search path */ 3 23 3 code fixed binary (35), /* Standard status code of search path */ 3 24 3 uid bit (36), /* Unique ID */ 3 25 3 pathname char (168) unaligned; /* Search pathname */ 3 26 3 27 declare sl_info_num_paths fixed binary; 3 28 declare sl_info_p pointer; 3 29 declare sl_info_version_1 fixed binary internal static options (constant) initial (1); 3 30 3 31 /* Keyword Types */ 3 32 3 33 declare ABSOLUTE_PATH fixed binary internal static options (constant) initial (0); 3 34 declare UNEXPANDED_PATH fixed binary internal static options (constant) initial (1); 3 35 declare REFERENCING_DIR fixed binary internal static options (constant) initial (3); 3 36 declare WORKING_DIR fixed binary internal static options (constant) initial (4); 3 37 declare PROCESS_DIR fixed binary internal static options (constant) initial (5); 3 38 declare HOME_DIR fixed binary internal static options (constant) initial (6); 3 39 declare INITIATED_SEGS fixed binary internal static options (constant) initial (7); 3 40 3 41 /* END INCLUDE FILE . . . sl_info.incl.pl1 */ 172 173 4 1 /* BEGIN INCLUDE FILE . . . sl_control_s.incl.pl1 */ 4 2 4 3 declare 1 sl_control_s unaligned based (addr (sl_control)), 4 4 2 af_pathname bit (1), /* "1"b => expand active functions */ 4 5 2 pad1 bit (1), /* Must be zero */ 4 6 2 key_ref_dir bit (1), /* "1"b => expand -referencing_dir keyword */ 4 7 2 key_work_dir bit (1), /* "1"b => expand -working_dir keyword */ 4 8 2 key_proc_dir bit (1), /* "1"b => expand -process_dir keyword */ 4 9 2 key_home_dir bit (1), /* "1"b => expand -home_dir keyword */ 4 10 2 pad2 bit (30); /* Must be zero */ 4 11 4 12 declare sl_control bit (36); 4 13 declare sl_control_default bit (36) internal static options (constant) initial ("101111"b); 4 14 4 15 /* END INCLUDE FILE . . . sl_control_s.incl.pl1 */ 174 175 5 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 5 2 5 3 /* This include file contains structures for the hcs_$star_, 5 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 5 5* 5 6* Written 23 October 1978 by Monte Davidoff. 5 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 5 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 5 9**/ 5 10 5 11 /* automatic */ 5 12 5 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 5 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 5 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 5 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 5 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 5 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 5 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 5 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 5 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 5 22 5 23 /* based */ 5 24 5 25 /* hcs_$star_ entry structure */ 5 26 5 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 5 28 2 type fixed binary (2) unsigned unaligned, 5 29 /* storage system type */ 5 30 2 nnames fixed binary (16) unsigned unaligned, 5 31 /* number of names of entry that match star_name */ 5 32 2 nindex fixed binary (18) unsigned unaligned; 5 33 /* index of first name in star_names */ 5 34 5 35 /* hcs_$star_ name structure */ 5 36 5 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 5 38 5 39 /* hcs_$star_list_ branch structure */ 5 40 5 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 5 42 2 type fixed binary (2) unsigned unaligned, 5 43 /* storage system type */ 5 44 2 nnames fixed binary (16) unsigned unaligned, 5 45 /* number of names of entry that match star_name */ 5 46 2 nindex fixed binary (18) unsigned unaligned, 5 47 /* index of first name in star_list_names */ 5 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 5 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 5 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 5 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 5 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 5 53 2 pad bit (7) unaligned, 5 54 2 records fixed binary (18) unsigned unaligned; 5 55 /* records used by branch */ 5 56 5 57 /* hcs_$star_dir_list_ branch structure */ 5 58 5 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 5 60 2 type fixed binary (2) unsigned unaligned, 5 61 /* storage system type */ 5 62 2 nnames fixed binary (16) unsigned unaligned, 5 63 /* number of names of entry that match star_name */ 5 64 2 nindex fixed binary (18) unsigned unaligned, 5 65 /* index of first name in star_list_names */ 5 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 5 67 2 pad bit (36) unaligned, 5 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 5 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 5 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 5 71 2 bit_count fixed binary (24) unaligned; 5 72 /* bit count of the branch */ 5 73 5 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 5 75 5 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 5 77 2 type fixed binary (2) unsigned unaligned, 5 78 /* storage system type */ 5 79 2 nnames fixed binary (16) unsigned unaligned, 5 80 /* number of names of entry that match star_name */ 5 81 2 nindex fixed binary (18) unsigned unaligned, 5 82 /* index of first name in star_list_names */ 5 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 5 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 5 85 2 pathname_len fixed binary (18) unsigned unaligned, 5 86 /* length of the pathname of the link */ 5 87 2 pathname_index fixed binary (18) unsigned unaligned; 5 88 /* index of start of pathname in star_list_names */ 5 89 5 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 5 91 5 92 declare star_list_names char (32) based (star_list_names_ptr) 5 93 dimension (star_links (star_branch_count + star_link_count).nindex 5 94 + star_links (star_branch_count + star_link_count).nnames 5 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 5 96 * binary ( 5 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 5 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 5 99 5 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 5 101 5 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 5 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 5 104 5 105 /* internal static */ 5 106 5 107 /* star_select_sw values */ 5 108 5 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 5 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 5 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 5 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 5 113 fixed binary (3) internal static options (constant) initial (5); 5 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 5 115 fixed binary (3) internal static options (constant) initial (7); 5 116 5 117 /* storage system types */ 5 118 5 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 5 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 5 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 5 122 5 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 176 177 178 subsystem_entry, ckm_switch = "0"b; 179 180 whoami = "forum_list_meetings"; 181 call create_subsystem (); 182 go to FLS_COMMON; 183 184 185 186 forum_list_request: 187 entry (P_ssu_ptr, P_passport_info_ptr); 188 189 ssu_ptr = P_ssu_ptr; 190 whoami = "list_meetings"; 191 subsystem_entry = "1"b; 192 ckm_switch = "0"b; 193 goto FLS_COMMON; 194 195 forum_check_meetings: 196 fckm: entry; 197 198 whoami = "forum_check_meetings"; 199 subsystem_entry = "0"b; 200 ckm_switch = "1"b; 201 call create_subsystem (); 202 goto FLS_COMMON; 203 204 check_meetings: 205 entry (P_ssu_ptr, P_passport_info_ptr); 206 207 ssu_ptr = P_ssu_ptr; 208 whoami = "check_meetings"; 209 subsystem_entry = "1"b; 210 ckm_switch = "1"b; 211 goto FLS_COMMON; 212 213 FLS_COMMON: 214 215 absolute_pathname, all_switch, any_person, brief_switch, change_switch, count_switch, eligible_switch, 216 exclude_switch, interesting_switch, noheader_switch, notify_switch, user_name_expected, 217 read_only, no_read_only, no_notify, no_participate, no_changes, adjourned, no_adjourned, timing, 218 chairman_switch, chairman_expected, user_name_given, participate_switch, verbose_switch = "0"b; 219 220 inhibit_error, header_switch = "1"b; 221 cm_username = ""; 222 access_time, before_time, name_width, short_name_width, chair_width, uid_count = 0; 223 224 if ckm_switch then change_switch, count_switch, brief_switch, noheader_switch = "1"b; 225 226 select_names_ptr, sl_info_p, star_list_branch_ptr, star_list_names_ptr = null (); 227 on cleanup call clean_up (); 228 229 call get_temp_segment_ (whoami, select_names_ptr, status); 230 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "Getting temp_segment."); 231 select_names.no_names = 0; 232 233 call ssu_$return_arg (ssu_ptr, arg_count, active_function, rtn_string_ptr, rtn_string_length); 234 235 do arg_idx = 1 to arg_count; 236 237 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_lth); 238 239 if user_name_expected then call get_user_name ("0"b); 240 241 else if substr (arg, 1, min (arg_lth, 1)) ^= "-" then do; 242 if chairman_expected then call get_user_name ("1"b); 243 else do; 244 call get_select_name (); 245 chairman_expected = "0"b; 246 end; 247 end; 248 249 else if arg = "-exclude" | arg = "-ex" then exclude_switch = "1"b; 250 else if arg = "-from" | arg = "-fm" then do; 251 if arg_idx = arg_count then call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Following ^a.", arg); 252 arg_idx = arg_idx + 1; 253 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_lth); 254 call convert_date_to_binary_ (arg, access_time, status); 255 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "^a", arg); 256 change_switch = "1"b; 257 end; 258 else if arg = "-timing" then timing = "1"b; 259 260 else if ckm_switch then do; 261 if arg = "-list" | arg = "-ls" then brief_switch = "0"b; 262 else goto BADOPT; 263 end; 264 265 else if arg = "-absolute_pathname" | arg = "-absp" then absolute_pathname = "1"b; 266 else if arg = "-adjourned" | arg = "-adj" then adjourned = "1"b; 267 else if arg = "-all" | arg = "-a" then all_switch = "1"b; 268 else if arg = "-before" | arg = "-be" then do; 269 if arg_idx = arg_count then call ssu_$abort_line (ssu_ptr, error_table_$noarg, "Following ^a.", arg); 270 arg_idx = arg_idx + 1; 271 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_lth); 272 call convert_date_to_binary_ (arg, before_time, status); 273 if status ^= 0 then call ssu_$abort_line (ssu_ptr, status, "^a", arg); 274 end; 275 else if arg = "-brief" | arg = "-bf" then brief_switch = "1"b; 276 else if arg = "-chairman" | arg = "-cm" then chairman_expected, chairman_switch = "1"b; 277 else if arg = "-changes" | arg = "-changed" | arg = "-chg" then change_switch = "1"b; 278 else if (arg = "-count" | arg = "-ct") & ^active_function then count_switch = "1"b; 279 else if arg = "-eligible" | arg = "-elig" then eligible_switch = "1"b; 280 else if arg = "-header" | arg = "-he" then header_switch, noheader_switch = "1"b; 281 else if arg = "-include" | arg = "-incl" | arg = "-inc" then exclude_switch = "0"b; 282 else if arg = "-inhibit_error" | arg = "-ihe" then inhibit_error = "1"b; 283 else if arg = "-long" | arg = "-lg" then brief_switch = "0"b; 284 else if arg = "-no_adjourned" | arg = "-nadj" then no_adjourned = "1"b; 285 else if arg = "-no_changes" | arg = "-nchg" then no_changes = "1"b; 286 else if arg = "-no_header" | arg = "-nhe" then header_switch, noheader_switch = "0"b; 287 else if arg = "-no_inhibit_error" | arg = "-nihe" then inhibit_error = "0"b; 288 else if arg = "-no_notify" | arg = "-nnt" then no_notify = "1"b; 289 else if arg = "-no_participating" | arg = "-npart" then no_participate = "1"b; 290 else if arg = "-no_read_only" | arg = "-nro" then no_read_only = "1"b; 291 else if arg = "-notify" | arg = "-nt" then notify_switch = "1"b; 292 else if arg = "-participating" | arg = "-part" then participate_switch = "1"b; 293 else if arg = "-read_only" | arg = "-ro" then read_only = "1"b; 294 else if arg = "-user" then user_name_expected = "1"b; 295 else if ^active_function & (arg = "-verbose" | arg = "-vb") then verbose_switch = "1"b; 296 297 else 298 BADOPT: call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 299 end; 300 301 /* Do some consistency checks */ 302 303 if user_name_expected then 304 call ssu_$abort_line (ssu_ptr, error_table_$noarg, "A userid must be given after ""-user""."); 305 306 message = ""; 307 308 if all_switch & change_switch then message = """-all"" and ""-changes"""; 309 else if all_switch & no_changes then message = """-all"" and ""-no_changes"""; 310 else if all_switch & notify_switch then message = """-all"" and ""-notify"""; 311 else if all_switch & no_notify then message = """-all"" and ""-no_notify"""; 312 else if all_switch & eligible_switch then message = """-all"" and ""-eligible"""; 313 else if all_switch & participate_switch then message = """-all"" and ""-participating"""; 314 else if all_switch & no_participate then message = """-all"" and ""-no_participating"""; 315 else if eligible_switch & change_switch then message = """-eligible"" and ""-changes"""; 316 else if eligible_switch & notify_switch then message = """-eligible"" and ""-notify"""; 317 else if chairman_switch & user_name_given then message = """-chairman"" and ""-user"""; 318 else if change_switch & verbose_switch then message = """-changes"" and ""-verbose"""; 319 else if read_only & no_read_only then message = """-read_only"" and ""-no_read_only"""; 320 else if adjourned & no_adjourned then message = """-adjourned"" and ""-no_adjourned"""; 321 else if notify_switch & no_notify then message = """-notify"" and ""-no_notify"""; 322 else if change_switch & no_changes then message = """-changes"" and ""-no_changes"""; 323 else if participate_switch & no_participate then message = """-participating"" and ""-no_participating"""; 324 else if before_time ^= 0 & change_switch then message = """-before"" and ""-changes"" or ""-from"""; 325 326 if message ^= "" then 327 call ssu_$abort_line (ssu_ptr, error_table_$inconsistent, message); 328 329 if ^change_switch & ^notify_switch & ^all_switch & ^participate_switch then 330 eligible_switch = "1"b; 331 332 if change_switch & (header_switch ^= noheader_switch) then header_switch = "0"b; 333 if change_switch & ^adjourned then no_adjourned = "1"b; 334 335 if any_person & (change_switch | notify_switch | count_switch) then 336 call ssu_$abort_line (ssu_ptr, 0, """-user *"" cannot be used with ""-changes"", ""-count"" or ""-notify""."); 337 338 if ^user_name_given then access_name = ""; 339 if access_time = 0 then access_time = clock (); 340 if chairman_switch & cm_username = "" then call user_info_$whoami (cm_username, "", ""); 341 342 forums_array_ptr = addrel (select_names_ptr, currentsize (select_names)); 343 forums_array.version = forum_meeting_list_version_1; 344 345 system_area_ptr = get_system_free_area_ (); 346 347 call search_paths_$get ("forum", sl_control_default, "", null (), system_area_ptr, 348 sl_info_version_1, sl_info_p, status); 349 350 if status ^= 0 then 351 call ssu_$abort_line (ssu_ptr, status, "Getting ""forum"" search list."); 352 353 do dir_idx = 1 to sl_info_p -> sl_info.num_paths; 354 355 if sl_info.paths (dir_idx).code ^= 0 then do; 356 if ^inhibit_error then 357 call ssu_$print_message (ssu_ptr, sl_info.paths (dir_idx).code, 358 "Expanding ^a", sl_info.paths (dir_idx).pathname); 359 end; 360 else do; 361 forum_directory = sl_info.paths (dir_idx).pathname; 362 call scan_dir (".forum"); 363 call scan_dir (".control"); 364 end; 365 end; 366 367 if ^absolute_pathname | active_function then call sort_output (); 368 369 do i = 1 to select_names.no_names; 370 if ^select_names.matched (i) then 371 if select_names.star_name (i) then 372 call ssu_$print_message (ssu_ptr, error_table_$nomatch, "^a", select_names.forum_names (i)); 373 else call ssu_$print_message (ssu_ptr, forum_et_$no_such_forum, select_names.forum_names (i)); 374 end; 375 376 if ckm_switch then begin; 377 378 declare temp_ptr ptr, 379 words (word_count) bit (36) aligned based, 380 word_count fixed bin; 381 382 temp_ptr = forum_data_$meeting_list; 383 if temp_ptr ^= null () then free temp_ptr -> forums_array; 384 word_count = currentsize (forums_array); 385 allocate words in (system_area) set (temp_ptr); 386 temp_ptr -> forums_array.no_selected = forums_array.no_selected; 387 temp_ptr -> forums_array.forums (*) = forums_array.forums (*); 388 389 forum_data_$meeting_list = temp_ptr; 390 if no_selected = 0 then call ssu_$print_message (ssu_ptr, 0, "No meetings have changed."); 391 else if ^brief_switch then call print_changes (1); 392 end; 393 394 else if active_function then call return_af_value (1); 395 else if change_switch then call print_changes (1); 396 else call print_output (); 397 398 EGRESS: 399 call clean_up (); 400 401 return; 402 403 create_subsystem: 404 procedure (); 405 406 call ssu_$standalone_invocation (ssu_ptr, whoami, "1", cu_$arg_list_ptr (), punt, status); 407 if status ^= 0 then do; /* UGH */ 408 if cu_$af_return_arg ((0), null (), (0)) = 0 then 409 call active_fnc_err_ (status, whoami, "Unable to create subsystem invocation."); 410 else call com_err_ (status, whoami, "Unable to create subsystem invocation."); 411 goto EGRESS; 412 end; 413 414 return; 415 end create_subsystem; 416 417 /* This routine attempts to list the control segments in the directory whose pathname is in the global 418* variable forum_directory. It sets the global variables obj_name_idx and obj_name_count, which are 419* used by check_forum to find the names of the forum to examine. */ 420 421 scan_dir: 422 procedure (suffix); 423 424 declare object_idx fixed bin, 425 suffix char (*); 426 427 star_select_sw = star_ALL_ENTRIES; 428 429 call hcs_$star_dir_list_ (forum_directory, "**.*" || suffix, star_select_sw, system_area_ptr, star_branch_count, 430 star_link_count, star_list_branch_ptr, star_list_names_ptr, status); 431 if status ^= 0 & status ^= error_table_$nomatch then do; 432 if ^inhibit_error then 433 call ssu_$print_message (ssu_ptr, status, "Trying to list meetings in ^a.", forum_directory); 434 end; 435 else do object_idx = 1 to star_branch_count + star_link_count; 436 obj_name_idx = star_dir_list_branch.nindex (object_idx); 437 obj_name_count = star_dir_list_branch.nnames (object_idx); 438 if timing then call cpu_time_and_paging_ (last_pf, last_cpu, (0)); 439 call check_forum (suffix); 440 if timing then do; 441 call cpu_time_and_paging_ (page_faults, cpu, (0)); 442 call ioa_ ("^a: ^d PF ^d msec.", star_list_names (obj_name_idx), page_faults - last_pf, 443 divide ((cpu - last_cpu), 1000, 17, 0)); 444 end; 445 end; 446 447 return; 448 449 end scan_dir; 450 451 452 already_done: 453 proc () returns (bit (1) aligned); 454 455 declare uid bit (36) aligned, 456 forum_idx fixed bin; 457 458 call hcs_$get_uid_file (forum_directory, star_list_names (obj_name_idx), uid, status); 459 if status ^= 0 then return ("0"b); 460 461 do forum_idx = 1 to uid_count; 462 if uid_array (forum_idx) = uid then return ("1"b); 463 end; 464 465 if uid_count < hbound (uid_array, 1) then do; 466 uid_count = uid_count + 1; 467 uid_array (uid_count) = uid; 468 end; 469 470 return ("0"b); 471 end already_done; 472 473 /* The following procedure examines a forum to discover whether it meets the selection criteria given to the command. 474* If it does, it is added to the "forums" array for later printing out. */ 475 476 check_forum: 477 procedure (suffix); 478 479 declare forum_idx fixed bin, 480 my_long_name char (32) varying, 481 my_short_name char (32) varying, 482 my_path char (168) varying, 483 real_dir char (168), 484 real_name char (32), 485 suffix char (*); 486 487 explicit = "0"b; 488 if select_names.no_names > 0 489 then if ^match_select_name () then return; 490 491 my_long_name = 492 substr (star_list_names (obj_name_idx), 1, 493 length (rtrim (star_list_names (obj_name_idx))) - length (suffix)); 494 495 if obj_name_count < 2 then my_short_name = ""; 496 else my_short_name = 497 substr (star_list_names (obj_name_idx + 1), 1, 498 length (rtrim (star_list_names (obj_name_idx + 1))) - length (suffix)); 499 500 if already_done () then return; 501 502 if suffix = ".control" then fi.version = forum_info_version_1; 503 else fi.version = forum_info_version_2; 504 505 call forum_$forum_info (forum_directory, star_list_names (obj_name_idx), access_name, access_time, 506 addr (fi), status); 507 if status ^= 0 then do; 508 if status = forum_et_$no_such_forum then do; 509 if ^explicit & inhibit_error then return; 510 call ssu_$print_message (ssu_ptr, status, "^a>^a", forum_directory, star_list_names (obj_name_idx)); 511 end; 512 if status = forum_et_$not_eligible & all_switch then goto ADD_FORUM; 513 if (status ^= forum_et_$not_eligible | ((change_switch | count_switch) & user_name_given) | explicit) 514 & ^inhibit_error then 515 call ssu_$print_message (ssu_ptr, status, "Getting meeting info for ^a>^a", forum_directory, star_list_names (obj_name_idx)); 516 return; 517 end; 518 519 if no_participate then 520 if ^fi.removed & fi.last_time_attended ^= 0 then return; 521 else; 522 else if ^all_switch & ^((any_person | eligible_switch) & fi.eligible) & (fi.removed | fi.last_time_attended = 0) then return; 523 524 if change_switch & fi.changes_count = 0 then return; 525 if no_changes & fi.changes_count ^= 0 then return; 526 527 if chairman_switch & cm_username ^= fi.chairman.username then return; 528 529 if read_only & ^fi.read_only then return; 530 if no_read_only & fi.read_only then return; 531 if fi.adjourned & no_adjourned then return; 532 if ^fi.adjourned & adjourned then return; 533 534 if (notify_switch & ^fi.notify) | (no_notify & fi.notify) then do; 535 if change_switch then interesting_switch = "1"b; 536 return; 537 end; 538 539 if before_time > 0 & before_time < fi.last_time_changed then return; 540 541 ADD_FORUM: 542 do forum_idx = 1 to no_selected; 543 if fi.forum_uid = forums (forum_idx).uid then return; 544 end; 545 546 no_selected = no_selected + 1; 547 548 call forum_$get_forum_path (forum_directory, star_list_names (obj_name_idx), real_dir, real_name, status); 549 if status ^= 0 then do; 550 if forum_directory = ">" then my_path = forum_directory; 551 else my_path = rtrim (forum_directory) || ">"; 552 my_path = my_path || my_long_name; 553 end; 554 else do; 555 if real_dir = ">" then my_path = real_dir; 556 else my_path = rtrim (real_dir) || ">"; 557 my_path = my_path || substr (real_name, 1, length (rtrim (real_name))); 558 end; 559 560 forums (no_selected).long_name = my_long_name; 561 forums (no_selected).path_name = my_path; 562 forums (no_selected).uid = fi.forum_uid; 563 forums (no_selected).last_seen = fi.last_seen_trans_idx; 564 forums (no_selected).last_trans = fi.transaction_count; 565 forums (no_selected).eligible = fi.eligible; 566 forums (no_selected).removed = fi.removed; 567 forums (no_selected).notify = fi.notify; 568 forums (no_selected).attending = fi.attending; 569 forums (no_selected).read_only = fi.read_only; 570 forums (no_selected).attended = (fi.last_time_attended ^= 0); 571 forums (no_selected).adjourned = fi.adjourned; 572 forums (no_selected).processed = "0"b; 573 forums (no_selected).count = fi.changes_count; 574 forums (no_selected).order = no_selected; 575 576 if my_short_name = "" then do; 577 forums (no_selected).short_name = my_long_name; 578 forums (no_selected).two_names = "0"b; 579 end; 580 else do; 581 forums (no_selected).short_name = my_short_name; 582 forums (no_selected).two_names = "1"b; 583 if verbose_switch then short_name_width = max (short_name_width, length (rtrim (my_short_name))); 584 end; 585 586 if verbose_switch then do; 587 forums (no_selected).chairman = rtrim (fi.chairman.username) || "." || fi.chairman.project; 588 chair_width = max (chair_width, length (rtrim (forums (no_selected).chairman))); 589 end; 590 591 if absolute_pathname then 592 name_width = max (name_width, length (my_path)); 593 else name_width = max (name_width, length (my_long_name)); 594 595 if fi.changes_count > 0 then no_changed = no_changed + 1; 596 597 return; 598 599 end check_forum; 600 601 get_select_name: 602 procedure (); 603 604 if arg_lth > 26 then 605 call ssu_$abort_line (ssu_ptr, 0, "^[Exclude^;Match^] name too long. ^a", exclude_switch, arg); 606 607 no_names = no_names + 1; 608 609 forum_names (no_names) = arg; 610 exclude (no_names) = exclude_switch; 611 matched (no_names) = exclude_switch; /* don't care if excludes are matched */ 612 call check_star_name_$entry (rtrim (forum_names (no_names)) || ".forum", status); 613 if status ^= 0 614 then if status = 1 | status = 2 615 then star_name (no_names) = "1"b; 616 else call ssu_$abort_line (ssu_ptr, status, "^[Exclude^;Match^] name. ""^a""", exclude_switch, arg); 617 618 return; 619 620 end get_select_name; 621 622 623 match_select_name: 624 procedure () returns (bit (1) aligned); 625 626 declare accepting bit (1) aligned, 627 match bit (1) aligned, 628 name_idx fixed bin, 629 star_idx fixed bin; 630 631 accepting = exclude (1); 632 633 do name_idx = 1 to select_names.no_names; 634 match = "0"b; 635 do star_idx = obj_name_idx to obj_name_idx + obj_name_count - 1 while (^match); 636 637 if star_name (name_idx) then do; 638 call match_star_name_ (star_list_names (star_idx), rtrim (forum_names (name_idx)) || ".forum", 639 status); 640 if status ^= 0 then 641 call match_star_name_ (star_list_names (star_idx), rtrim (forum_names (name_idx)) || ".control", 642 status); 643 if status = 0 then match = "1"b; 644 end; 645 else if rtrim (forum_names (name_idx)) || ".forum" = star_list_names (star_idx) | 646 rtrim (forum_names (name_idx)) || ".control" = star_list_names (star_idx) 647 then explicit, match = "1"b; 648 matched (name_idx) = matched (name_idx) | match; 649 end; 650 if match then accepting = ^exclude (name_idx); 651 end; 652 653 return (accepting); 654 655 end match_select_name; 656 657 get_user_name: 658 procedure (chairman_sw); 659 660 declare personid char (32) varying, 661 projectid char (31) varying, 662 tag char (30) varying, 663 chairman_sw bit (1) aligned; 664 665 if (^chairman_sw & user_name_given) then 666 call ssu_$abort_line (ssu_ptr, 0, "Only one -user specification may be given. ^a", arg); 667 if arg_lth > 32 then call ssu_$abort_line (ssu_ptr, 0, "User names must be less than 32 characters. ^a", arg); 668 669 if ^chairman_sw then do; 670 user_name_expected = "0"b; 671 user_name_given = "1"b; 672 end; 673 674 personid = before (arg, "."); 675 if personid = "" then personid = "*"; 676 if personid = "*" then any_person = "1"b; 677 if length (personid) > 20 then call ssu_$abort_line (ssu_ptr, 0, "Usernames may not exceed 20 characters. ^a", arg); 678 679 projectid = after (arg, "."); 680 tag = after (projectid, "."); 681 if tag = "" then tag = "*"; 682 else if length (tag) ^= 1 then call ssu_$abort_line (ssu_ptr, 0, "Tags must be one character long. ^a", arg); 683 684 projectid = before (projectid, "."); 685 if projectid = "" then projectid = "*"; 686 else if length (projectid) > 9 then call ssu_$abort_line (ssu_ptr, 0, "Projects cannot exceed 9 characters. ^a", arg); 687 688 if chairman_sw then cm_username = personid; 689 else access_name = personid || "." || projectid || "." || tag; 690 691 return; 692 693 end get_user_name; 694 695 /* The following routine is a simple shell sort by short_name. */ 696 697 sort_output: 698 procedure (); 699 700 dcl (i, k, l, t) fixed bin; 701 702 k, l = no_selected; 703 do while (k <= l); 704 l = -1; 705 do i = 2 to k; 706 l = i - 1; 707 if short_name (order (l)) > short_name (order (i)) 708 then do; 709 t = order (l); 710 order (l) = order (i); 711 order (i) = t; 712 k = l; 713 end; 714 end; 715 end; 716 717 return; 718 719 end sort_output; 720 721 /* Here we build the active function return value. The short_name of 722* each forum is returned if possible, otherwise the long_name. The 723* names are requoted since they might contain special command_processor 724* characters, and they are separated by spaces. */ 725 726 return_af_value: 727 procedure (start); 728 729 declare start fixed bin; 730 731 do i = start to no_selected; 732 733 if length (return_string) ^= 0 then return_string = return_string || " "; 734 735 if absolute_pathname 736 then return_string = return_string || requote_string_ (rtrim (forums (order (i)).path_name)); 737 else return_string = return_string || requote_string_ (rtrim (forums (order (i)).short_name)); 738 end; 739 740 return; 741 end; 742 743 print_changes: 744 procedure (start); 745 746 declare start fixed bin; 747 748 if header_switch & no_selected - start + 1 > 0 then call ioa_ ("Changed meetings = ^d.^/", 749 no_selected - start + 1); 750 else if no_selected - start + 1 = 0 & ^brief_switch 751 then call ioa_ ("No ^[interesting ^]meetings have changed.", interesting_switch); 752 753 if absolute_pathname & name_width > 0 then name_width = name_width + 5; 754 if count_switch then name_width = name_width + 7; 755 756 do i = start to no_selected; 757 758 j = order (i); 759 760 if absolute_pathname 761 then call ioa_ ("^[^5d ^;^s^]^a^[^v.0t(^a)^;^s^]", count_switch, forums (j).count, 762 forums (j).path_name, forums (j).two_names, name_width, forums (j).short_name); 763 764 else call ioa_ ("^[^5d ^;^s^]^a^[ (^a)^]", count_switch, forums (j).count, forums (j).long_name, 765 forums (j).two_names, forums (j).short_name); 766 end; 767 768 return; 769 770 end print_changes; 771 772 /* Print the results, displaying the long and short name (if any) and whatever flags the user asked 773* for. If the user wants a header, print one. And make the columns line up in the minimum amount of space. */ 774 775 print_output: 776 procedure (); 777 778 declare flag_string char (8) varying, 779 last_width fixed bin, 780 i fixed bin, 781 j fixed bin; 782 783 if absolute_pathname then do; 784 if count_switch then do; 785 name_width = name_width + 10; 786 short_name_width = name_width + short_name_width + 9; 787 end; 788 else do; 789 name_width = name_width + 3; 790 short_name_width = name_width + short_name_width + 11; 791 end; 792 end; 793 else do; 794 if count_switch then short_name_width = short_name_width + 5; 795 short_name_width = name_width + short_name_width + 12; 796 end; 797 chair_width = chair_width + short_name_width + 2; 798 799 if header_switch then 800 call ioa_ ("Meetings = ^d, Changed = ^d.^[^/^]^[^vtChairman^vtCurrent Last^]", no_selected, no_changed, 801 no_selected > 0, verbose_switch, short_name_width, chair_width); 802 803 do i = 1 to no_selected; 804 805 j = order (i); 806 807 if all_switch 808 then if forums (j).eligible 809 then flag_string = "e"; 810 else flag_string = " "; 811 else flag_string = ""; 812 813 if (all_switch | eligible_switch) & ^any_person & ^no_participate 814 then if forums (j).removed then flag_string = flag_string || "r"; 815 else if forums (j).attended then flag_string = flag_string || "p"; 816 else flag_string = flag_string || " "; 817 818 if forums (j).adjourned then 819 flag_string = flag_string || "j"; 820 else flag_string = flag_string || " "; 821 822 if ^notify_switch & ^any_person & ^no_notify 823 then if forums (j).notify 824 then flag_string = flag_string || "n"; 825 else flag_string = flag_string || " "; 826 827 if ^any_person & ^count_switch & ^no_changes 828 then if forums (j).count > 0 829 then flag_string = flag_string || "c"; 830 else flag_string = flag_string || " "; 831 832 if ^any_person 833 then if forums (j).attending 834 then flag_string = flag_string || "a"; 835 else flag_string = flag_string || " "; 836 837 if ^any_person & ^read_only 838 then if forums (j).read_only 839 then flag_string = flag_string || "o"; 840 else flag_string = flag_string || " "; 841 842 if (all_switch | ^any_person) & ^count_switch then flag_string = flag_string || " "; 843 844 if verbose_switch then do; 845 last_seen_pic = forums (j).last_seen; 846 last_trans_pic = forums (j).last_trans; 847 if forums (j).last_trans > 100000 then last_width = chair_width + 11; 848 else if forums (j).last_trans > 10000 then last_width = chair_width + 10; 849 last_width = chair_width + 9; 850 end; 851 852 if absolute_pathname 853 then call ioa_ ("^a^v.0t^[^[^5d ^;^7x^s^]^;^2s^]^a^[^vt(^a)^;^2s^]^[^vt^a^vt[^a]^vt[^a]^]", flag_string, 854 (length (flag_string) + 1), count_switch, (forums (j).count > 0), forums (j).count, 855 forums (j).path_name, forums (j).two_names, (name_width + length (flag_string)), forums (j).short_name, 856 verbose_switch, short_name_width, forums (j).chairman, chair_width, 857 ltrim (last_seen_pic), last_width, ltrim (last_trans_pic)); 858 859 else call ioa_ ("^a^v.0t^[^[^5d ^;^7x^s^]^;^2s^]^va^[ ^a^;^s^]^[^vt^a^vt[^a]^vt[^a]^]", flag_string, 860 (length (flag_string) + 1), 861 count_switch, (forums (j).count > 0), forums (j).count, name_width, forums (j).long_name, 862 forums (j).two_names, forums (j).short_name, verbose_switch, short_name_width, 863 forums (j).chairman, chair_width, ltrim (last_seen_pic), last_width, ltrim (last_trans_pic)); 864 end; 865 866 return; 867 868 end print_output; 869 870 punt: proc (); 871 872 go to EGRESS; 873 874 end punt; 875 876 877 clean_up: 878 procedure (); 879 880 if select_names_ptr ^= null () then call release_temp_segment_ (whoami, select_names_ptr, (0)); 881 882 if star_list_branch_ptr ^= null () 883 then do; 884 if star_list_names_ptr ^= null () then free star_list_names; 885 free star_dir_list_branch; 886 end; 887 888 if sl_info_p ^= null () then free sl_info; 889 890 if ^subsystem_entry then call ssu_$destroy_invocation (ssu_ptr); 891 892 return; 893 894 end clean_up; 895 896 next_meeting: 897 entry (P_ssu_ptr, P_passport_info_ptr); 898 899 ssu_ptr = P_ssu_ptr; 900 901 call ssu_$return_arg (ssu_ptr, arg_count, active_function, rtn_string_ptr, rtn_string_length); 902 903 absolute_pathname, all_switch, brief_switch, count_switch = "0"b; 904 header_switch = "1"b; 905 906 do arg_idx = 1 to arg_count; 907 call ssu_$arg_ptr (ssu_ptr, arg_idx, arg_ptr, arg_lth); 908 if index (arg, "-") ^= 1 then 909 call ssu_$abort_line (ssu_ptr, 0, "Usage: nm {-control_arg}"); 910 else if arg = "-all" | arg = "-a" then all_switch, count_switch = "1"b; 911 else if arg = "-count" | arg = "-ct" then brief_switch = "1"b; 912 else if arg = "-list" | arg = "-ls" then count_switch = "1"b; 913 else call ssu_$abort_line (ssu_ptr, error_table_$badopt, "^a", arg); 914 end; 915 916 if brief_switch & count_switch then 917 call ssu_$abort_line (ssu_ptr, error_table_$inconsistent, """-count"" and ""-all"" or ""-list"""); 918 919 if forum_data_$meeting_list = null () then 920 call ssu_$abort_line (ssu_ptr, 0, "The check_meetings request has not been used in this process."); 921 922 forums_array_ptr = forum_data_$meeting_list; 923 924 if brief_switch then do; 925 do i = 1 to forums_array.no_selected while (forums (order (i)).processed); 926 end; 927 j = forums_array.no_selected - i + 1; 928 if active_function then return_string = ltrim (char (j)); 929 else call ioa_ ("There ^[is^;are^] ^[no more^s^;^d^] changed meeting^[s^].", j = 1, (j = 0), j, j ^= 1); 930 return; 931 end; 932 933 if count_switch then do; 934 if all_switch then i = 1; 935 else do i = 1 to forums_array.no_selected while (forums (order (i)).processed); 936 end; 937 938 if active_function then call return_af_value (i); 939 else call print_changes (i); 940 return; 941 end; 942 943 do i = 1 to forums_array.no_selected; 944 j = order (i); 945 if ^forums (j).processed then do; 946 if active_function then return_string = forums (j).long_name; 947 else do; 948 request = "goto " || requote_string_ (forums (j).path_name); 949 call ssu_$execute_line (ssu_ptr, addr (request), length (rtrim (request)), status); 950 end; 951 forums (j).processed = "1"b; 952 return; 953 end; 954 end; 955 956 call ssu_$abort_line (ssu_ptr, 0, "There are no more changed meetings."); 957 958 end forum_list_meetings; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/16/88 1411.9 forum_list_meetings.pl1 >spec>install>MR12.2-1023>forum_list_meetings.pl1 168 1 08/16/86 1538.0 forum_info.incl.pl1 >ldd>include>forum_info.incl.pl1 170 2 08/16/86 1538.0 forum_meeting_list.incl.pl1 >ldd>include>forum_meeting_list.incl.pl1 172 3 02/16/88 1407.4 sl_info.incl.pl1 >spec>install>MR12.2-1023>sl_info.incl.pl1 174 4 01/09/79 1617.9 sl_control_s.incl.pl1 >ldd>include>sl_control_s.incl.pl1 176 5 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.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. P_passport_info_ptr parameter pointer dcl 43 ref 186 204 896 P_ssu_ptr parameter pointer dcl 43 ref 186 189 204 207 896 899 absolute_pathname 000106 automatic bit(1) dcl 51 set ref 213* 265* 367 591 735 753 760 783 852 903* accepting 001256 automatic bit(1) dcl 626 set ref 631* 650* 653 access_name 000107 automatic char(32) unaligned dcl 51 set ref 338* 505* 689* access_time 000120 automatic fixed bin(71,0) dcl 51 set ref 222* 254* 339 339* 505* active_fnc_err_ 000024 constant entry external dcl 140 ref 408 active_function 000122 automatic bit(1) dcl 51 set ref 233* 278 295 367 394 901* 928 938 946 addr builtin function dcl 46 ref 505 505 949 949 addrel builtin function dcl 46 ref 342 adjourned 000123 automatic bit(1) dcl 51 in procedure "flsm" set ref 213* 266* 320 333 532 adjourned 25(08) 000744 automatic bit(1) level 3 in structure "fi" packed unaligned dcl 129 in procedure "flsm" set ref 531 532 571 adjourned 107(07) based bit(1) array level 4 in structure "forums_array" packed unaligned dcl 2-28 in procedure "flsm" set ref 571* 818 after builtin function dcl 46 ref 679 680 all_switch 000124 automatic bit(1) dcl 51 set ref 213* 267* 308 309 310 311 312 313 314 329 512 522 807 813 842 903* 910* 934 any_person 000125 automatic bit(1) dcl 51 set ref 213* 335 522 676* 813 822 827 832 837 842 arg based char unaligned dcl 51 set ref 241 249 249 250 250 251* 254* 255* 258 261 261 265 265 266 266 267 267 268 268 269* 272* 273* 275 275 276 276 277 277 277 278 278 279 279 280 280 281 281 281 282 282 283 283 284 284 285 285 286 286 287 287 288 288 289 289 290 290 291 291 292 292 293 293 294 295 295 297* 604* 609 616* 665* 667* 674 677* 679 682* 686* 908 910 910 911 911 912 912 913* arg_count 000126 automatic fixed bin(17,0) dcl 51 set ref 233* 235 251 269 901* 906 arg_idx 000127 automatic fixed bin(17,0) dcl 51 set ref 235* 237* 251 252* 252 253* 269 270* 270 271* 906* 907* arg_lth 000130 automatic fixed bin(21,0) dcl 51 set ref 237* 241 241 249 249 250 250 251 251 253* 254 254 255 255 258 261 261 265 265 266 266 267 267 268 268 269 269 271* 272 272 273 273 275 275 276 276 277 277 277 278 278 279 279 280 280 281 281 281 282 282 283 283 284 284 285 285 286 286 287 287 288 288 289 289 290 290 291 291 292 292 293 293 294 295 295 297 297 604 604 604 609 616 616 665 665 667 667 667 674 677 677 679 682 682 686 686 907* 908 910 910 911 911 912 912 913 913 arg_ptr 000132 automatic pointer dcl 51 set ref 237* 241 249 249 250 250 251 253* 254 255 258 261 261 265 265 266 266 267 267 268 268 269 271* 272 273 275 275 276 276 277 277 277 278 278 279 279 280 280 281 281 281 282 282 283 283 284 284 285 285 286 286 287 287 288 288 289 289 290 290 291 291 292 292 293 293 294 295 295 297 604 609 616 665 667 674 677 679 682 686 907* 908 910 910 911 911 912 912 913 array 2 based structure array level 2 dcl 120 attended 107(06) based bit(1) array level 4 packed unaligned dcl 2-28 set ref 570* 815 attending 25(04) 000744 automatic bit(1) level 3 in structure "fi" packed unaligned dcl 129 in procedure "flsm" set ref 568 attending 107(03) based bit(1) array level 4 in structure "forums_array" packed unaligned dcl 2-28 in procedure "flsm" set ref 568* 832 before builtin function dcl 46 ref 674 684 before_time 000134 automatic fixed bin(71,0) dcl 51 set ref 222* 272* 324 539 539 binary builtin function dcl 46 ref 884 brief_switch 000136 automatic bit(1) dcl 51 set ref 213* 224* 261* 275* 283* 391 750 903* 911* 916 924 chair_width 000141 automatic fixed bin(17,0) dcl 51 set ref 222* 588* 588 797* 797 799* 847 848 849 852* 859* chairman 2 000744 automatic structure level 2 in structure "fi" packed unaligned dcl 129 in procedure "flsm" chairman 73 based char(32) array level 3 in structure "forums_array" packed unaligned dcl 2-28 in procedure "flsm" set ref 587* 588 852* 859* chairman_expected 000140 automatic bit(1) dcl 51 set ref 213* 242 245* 276* chairman_sw parameter bit(1) dcl 660 ref 657 665 669 688 chairman_switch 000137 automatic bit(1) dcl 51 set ref 213* 276* 317 340 527 change_switch 000147 automatic bit(1) dcl 51 set ref 213* 224* 256* 277* 308 315 318 322 324 329 332 333 335 395 513 524 535 changes_count 24 000744 automatic fixed bin(17,0) level 2 dcl 129 set ref 524 525 573 595 check_star_name_$entry 000026 constant entry external dcl 140 ref 612 ckm_switch 000142 automatic bit(1) dcl 51 set ref 178* 192* 200* 210* 224 260 376 cleanup 000100 stack reference condition dcl 49 ref 227 clock builtin function dcl 46 ref 339 cm_username 000150 automatic char(20) unaligned dcl 51 set ref 221* 340 340* 527 688* code 15 based fixed bin(35,0) array level 3 dcl 3-15 set ref 355 356* com_err_ 000030 constant entry external dcl 140 ref 410 convert_date_to_binary_ 000032 constant entry external dcl 140 ref 254 272 count 104 based fixed bin(17,0) array level 3 dcl 2-28 set ref 573* 760* 764* 827 852 852* 859 859* count_switch 000143 automatic bit(1) dcl 51 set ref 213* 224* 278* 335 513 754 760* 764* 784 794 827 842 852* 859* 903* 910* 912* 916 933 cpu 000144 automatic fixed bin(71,0) dcl 51 set ref 441* 442 442 cpu_time_and_paging_ 000034 constant entry external dcl 140 ref 438 441 cu_$af_return_arg 000036 constant entry external dcl 140 ref 408 cu_$arg_list_ptr 000040 constant entry external dcl 140 ref 406 406 currentsize builtin function dcl 46 ref 342 384 dir_idx 000146 automatic fixed bin(17,0) dcl 51 set ref 353* 355 356 356 361* divide builtin function dcl 46 ref 442 442 884 eligible 107 based bit(1) array level 4 in structure "forums_array" packed unaligned dcl 2-28 in procedure "flsm" set ref 565* 807 eligible 25 000744 automatic bit(1) level 3 in structure "fi" packed unaligned dcl 129 in procedure "flsm" set ref 522 565 eligible_switch 000155 automatic bit(1) dcl 51 set ref 213* 279* 312 315 316 329* 522 813 error_table_$badopt 000014 external static fixed bin(35,0) dcl 131 set ref 297* 913* error_table_$inconsistent 000016 external static fixed bin(35,0) dcl 131 set ref 326* 916* error_table_$noarg 000020 external static fixed bin(35,0) dcl 131 set ref 251* 269* 303* error_table_$nomatch 000022 external static fixed bin(35,0) dcl 131 set ref 370* 431 exclude 12 based bit(1) array level 3 dcl 120 set ref 610* 631 650 exclude_switch 000156 automatic bit(1) dcl 51 set ref 213* 249* 281* 604* 610 611 616* explicit 000157 automatic bit(1) dcl 51 set ref 487* 509 513 645* fi 000744 automatic structure level 1 dcl 129 set ref 505 505 flag_string 001370 automatic varying char(8) dcl 778 set ref 807* 810* 811* 813* 813 815* 815 816* 816 818* 818 820* 820 822* 822 825* 825 827* 827 830* 830 832* 832 835* 835 837* 837 840* 840 842* 842 852* 852 852 859* 859 flags 25 000744 automatic structure level 2 in structure "fi" packed unaligned dcl 129 in procedure "flsm" flags 107 based structure array level 3 in structure "forums_array" packed unaligned dcl 2-28 in procedure "flsm" forum_$forum_info 000042 constant entry external dcl 140 ref 505 forum_$get_forum_path 000044 constant entry external dcl 140 ref 548 forum_data_$meeting_list 000110 external static pointer dcl 2-25 set ref 382 389* 919 922 forum_directory 000165 automatic char(168) unaligned dcl 51 set ref 361* 429* 432* 458* 505* 510* 513* 548* 550 550 551 forum_et_$no_such_forum 000010 external static fixed bin(35,0) dcl 131 set ref 373* 508 forum_et_$not_eligible 000012 external static fixed bin(35,0) dcl 131 ref 512 513 forum_idx 001060 automatic fixed bin(17,0) dcl 479 in procedure "check_forum" set ref 541* 543* forum_idx 001047 automatic fixed bin(17,0) dcl 455 in procedure "already_done" set ref 461* 462* forum_info based structure level 1 dcl 1-14 forum_info_version_1 constant fixed bin(17,0) initial dcl 1-40 ref 502 forum_info_version_2 constant fixed bin(17,0) initial dcl 1-40 ref 503 forum_meeting_list_version_1 000002 constant char(8) initial unaligned dcl 2-54 ref 343 forum_names 2 based char(32) array level 3 packed unaligned dcl 120 set ref 370* 373* 609* 612 638 640 645 645 forum_uid 1 000744 automatic bit(36) level 2 dcl 129 set ref 543 562 forums 4 based structure array level 2 dcl 2-28 set ref 387* 387 forums_array based structure level 1 dcl 2-28 set ref 383 384 forums_array_ptr 000772 automatic pointer dcl 2-25 set ref 342* 343 384 386 387 390 541 543 546 546 560 560 561 561 562 562 563 563 564 564 565 565 566 566 567 567 568 568 569 569 570 570 571 571 572 572 573 573 574 574 574 577 577 578 578 581 581 582 582 587 587 588 588 595 595 702 707 707 707 707 709 710 710 711 731 735 735 735 735 737 737 737 737 748 748 750 756 758 760 760 760 760 764 764 764 764 799 799 799 803 805 807 813 815 818 822 827 832 837 845 846 847 848 852 852 852 852 852 852 859 859 859 859 859 859 922* 925 925 925 927 935 935 935 943 944 945 946 948 951 get_system_free_area_ 000046 constant entry external dcl 140 ref 345 get_temp_segment_ 000050 constant entry external dcl 140 ref 229 hcs_$get_uid_file 000052 constant entry external dcl 140 ref 458 hcs_$star_dir_list_ 000054 constant entry external dcl 140 ref 429 header_switch 000160 automatic bit(1) dcl 51 set ref 220* 280* 286* 332 332* 748 799 904* i 000161 automatic fixed bin(17,0) dcl 51 in procedure "flsm" set ref 369* 370 370 370 373* 731* 735 735 737 737* 756* 758* 925* 925* 927 934* 935* 935* 938* 939* 943* 944* i 001334 automatic fixed bin(17,0) dcl 700 in procedure "sort_output" set ref 705* 706 707 710 711* i 001374 automatic fixed bin(17,0) dcl 778 in procedure "print_output" set ref 803* 805* inhibit_error 000162 automatic bit(1) dcl 51 set ref 220* 282* 287* 356 432 509 513 interesting_switch 000163 automatic bit(1) dcl 51 set ref 213* 535* 750* ioa_ 000056 constant entry external dcl 140 ref 442 748 750 760 764 799 852 859 929 j 001375 automatic fixed bin(17,0) dcl 778 in procedure "print_output" set ref 805* 807 813 815 818 822 827 832 837 845 846 847 848 852 852 852 852 852 852 859 859 859 859 859 859 j 000164 automatic fixed bin(17,0) dcl 51 in procedure "flsm" set ref 758* 760 760 760 760 764 764 764 764 927* 928 929 929 929* 929 944* 945 946 948 951 k 001335 automatic fixed bin(17,0) dcl 700 set ref 702* 703 705 712* l 001336 automatic fixed bin(17,0) dcl 700 set ref 702* 703 704* 706* 707 709 710 712 last_cpu 000240 automatic fixed bin(71,0) dcl 51 set ref 438* 442 442 last_pf 000242 automatic fixed bin(17,0) dcl 51 set ref 438* 442 last_seen 105 based fixed bin(17,0) array level 3 dcl 2-28 set ref 563* 845 last_seen_pic 000244 automatic picture(6) unaligned dcl 51 set ref 845* 852 852 859 859 last_seen_trans_idx 16 000744 automatic fixed bin(17,0) level 2 dcl 129 set ref 563 last_time_attended 22 000744 automatic fixed bin(71,0) level 2 dcl 129 set ref 519 522 570 last_time_changed 20 000744 automatic fixed bin(71,0) level 2 dcl 129 set ref 539 last_trans 106 based fixed bin(17,0) array level 3 dcl 2-28 set ref 564* 846 847 848 last_trans_pic 000246 automatic picture(6) unaligned dcl 51 set ref 846* 852 852 859 859 last_width 001373 automatic fixed bin(17,0) dcl 778 set ref 847* 848* 849* 852* 859* length builtin function dcl 46 ref 491 491 496 496 557 583 588 591 593 677 682 686 733 852 852 859 949 949 long_name 4 based char(26) array level 3 packed unaligned dcl 2-28 set ref 560* 764* 859* 946 match 001257 automatic bit(1) dcl 626 set ref 634* 635 643* 645* 648 650 match_star_name_ 000060 constant entry external dcl 140 ref 638 640 matched 14 based bit(1) array level 3 dcl 120 set ref 370 611* 648* 648 max builtin function dcl 46 ref 583 588 591 593 message 000250 automatic char(48) unaligned dcl 51 set ref 306* 308* 309* 310* 311* 312* 313* 314* 315* 316* 317* 318* 319* 320* 321* 322* 323* 324* 326 326* min builtin function dcl 46 ref 241 my_long_name 001061 automatic varying char(32) dcl 479 set ref 491* 552 560 577 593 my_path 001103 automatic varying char(168) dcl 479 set ref 550* 551* 552* 552 555* 556* 557* 557 561 591 my_short_name 001072 automatic varying char(32) dcl 479 set ref 495* 496* 576 581 583 name_idx 001260 automatic fixed bin(17,0) dcl 626 set ref 633* 637 638 640 645 645 648 648 650* name_width 000264 automatic fixed bin(17,0) dcl 51 set ref 222* 591* 591 593* 593 753 753* 753 754* 754 760* 785* 785 786 789* 789 790 795 852 859* nindex 0(18) based fixed bin(18,0) array level 2 in structure "star_dir_list_branch" packed unsigned unaligned dcl 5-59 in procedure "flsm" ref 436 nindex 0(18) based fixed bin(18,0) array level 2 in structure "star_links" packed unsigned unaligned dcl 5-76 in procedure "flsm" ref 884 nnames 0(02) based fixed bin(16,0) array level 2 in structure "star_dir_list_branch" packed unsigned unaligned dcl 5-59 in procedure "flsm" ref 437 nnames 0(02) based fixed bin(16,0) array level 2 in structure "star_links" packed unsigned unaligned dcl 5-76 in procedure "flsm" ref 884 no_adjourned 000265 automatic bit(1) dcl 51 set ref 213* 284* 320 333* 531 no_changed 3 based fixed bin(17,0) level 2 dcl 2-28 set ref 595* 595 799* no_changes 000270 automatic bit(1) dcl 51 set ref 213* 285* 309 322 525 827 no_names based fixed bin(17,0) level 2 dcl 120 set ref 231* 342 369 488 607* 607 609 610 611 612 613 633 no_notify 000272 automatic bit(1) dcl 51 set ref 213* 288* 311 321 534 822 no_participate 000271 automatic bit(1) dcl 51 set ref 213* 289* 314 323 519 813 no_read_only 000267 automatic bit(1) dcl 51 set ref 213* 290* 319 530 no_selected 2 based fixed bin(17,0) level 2 dcl 2-28 set ref 383 384 386* 386 387 390 541 546* 546 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 574 577 578 581 582 587 588 702 731 748 748 750 756 799* 799 803 925 927 935 943 noheader_switch 000266 automatic bit(1) dcl 51 set ref 213* 224* 280* 286* 332 notify 107(02) based bit(1) array level 4 in structure "forums_array" packed unaligned dcl 2-28 in procedure "flsm" set ref 567* 822 notify 25(03) 000744 automatic bit(1) level 3 in structure "fi" packed unaligned dcl 129 in procedure "flsm" set ref 534 534 567 notify_switch 000273 automatic bit(1) dcl 51 set ref 213* 291* 310 316 321 329 335 534 822 null builtin function dcl 46 ref 226 347 347 383 408 408 880 882 884 888 919 num_paths 1 based fixed bin(17,0) level 2 dcl 3-15 ref 353 888 obj_name_count 000274 automatic fixed bin(17,0) dcl 51 set ref 437* 495 635 obj_name_idx 000275 automatic fixed bin(17,0) dcl 51 set ref 436* 442 458 491 491 496 496 505 510 513 548 635 635 object_idx 001036 automatic fixed bin(17,0) dcl 424 set ref 435* 436 437* order 110 based fixed bin(17,0) array level 3 dcl 2-28 set ref 574* 707 707 709 710* 710 711* 735 735 737 737 758 805 925 935 944 page_faults 000277 automatic fixed bin(17,0) dcl 51 set ref 441* 442 participate_switch 000276 automatic bit(1) dcl 51 set ref 213* 292* 313 323 329 path_name 21 based char(168) array level 3 packed unaligned dcl 2-28 set ref 561* 735 735 760* 852* 948* pathname 17 based char(168) array level 3 packed unaligned dcl 3-15 set ref 356* 361 pathname_len 3 based fixed bin(18,0) array level 2 packed unsigned unaligned dcl 5-76 ref 884 paths 14 based structure array level 2 dcl 3-15 personid 001272 automatic varying char(32) dcl 660 set ref 674* 675 675* 676 677 688 689 processed 107(08) based bit(1) array level 4 packed unaligned dcl 2-28 set ref 572* 925 935 945 951* project 7 000744 automatic char(9) level 3 packed unaligned dcl 129 set ref 587 projectid 001303 automatic varying char(31) dcl 660 set ref 679* 680 684* 684 685 685* 686 689 read_only 000300 automatic bit(1) dcl 51 in procedure "flsm" set ref 213* 293* 319 529 837 read_only 107(05) based bit(1) array level 4 in structure "forums_array" packed unaligned dcl 2-28 in procedure "flsm" set ref 569* 837 read_only 25(07) 000744 automatic bit(1) level 3 in structure "fi" packed unaligned dcl 129 in procedure "flsm" set ref 529 530 569 real_dir 001156 automatic char(168) unaligned dcl 479 set ref 548* 555 555 556 real_name 001230 automatic char(32) unaligned dcl 479 set ref 548* 557 557 release_temp_segment_ 000062 constant entry external dcl 140 ref 880 removed 107(01) based bit(1) array level 4 in structure "forums_array" packed unaligned dcl 2-28 in procedure "flsm" set ref 566* 813 removed 25(02) 000744 automatic bit(1) level 3 in structure "fi" packed unaligned dcl 129 in procedure "flsm" set ref 519 522 566 request 000301 automatic char(256) unaligned dcl 51 set ref 948* 949 949 949 949 requote_string_ 000064 constant entry external dcl 140 ref 735 737 948 return_string based varying char dcl 51 set ref 733 733* 733 735* 735 737* 737 928* 946* rtn_string_length 000401 automatic fixed bin(21,0) dcl 51 set ref 233* 733 735 737 901* 928 946 rtn_string_ptr 000402 automatic pointer dcl 51 set ref 233* 733 733 733 735 735 737 737 901* 928 946 rtrim builtin function dcl 46 ref 491 496 551 556 557 583 587 588 612 638 640 645 645 735 735 737 737 949 949 search_paths_$get 000066 constant entry external dcl 140 ref 347 select_names based structure level 1 dcl 120 set ref 342 select_names_ptr 000404 automatic pointer dcl 51 set ref 226* 229* 231 342 342 369 370 370 370 373 488 607 607 609 609 610 610 611 611 612 612 613 613 631 633 637 638 640 645 645 648 648 650 880 880* short_name 12(18) based char(26) array level 3 packed unaligned dcl 2-28 set ref 577* 581* 707 707 737 737 760* 764* 852* 859* short_name_width 000406 automatic fixed bin(17,0) dcl 51 set ref 222* 583* 583 786* 786 790* 790 794* 794 795* 795 797 799* 852* 859* sl_control_default 000000 constant bit(36) initial unaligned dcl 4-13 set ref 347* sl_info based structure level 1 dcl 3-15 set ref 888 sl_info_p 000774 automatic pointer dcl 3-28 set ref 226* 347* 353 355 356 356 361 888 888 sl_info_version_1 000112 constant fixed bin(17,0) initial dcl 3-29 set ref 347* ssu_$abort_line 000072 constant entry external dcl 140 ref 230 251 255 269 273 297 303 326 335 350 604 616 665 667 677 682 686 908 913 916 919 956 ssu_$arg_ptr 000070 constant entry external dcl 140 ref 237 253 271 907 ssu_$destroy_invocation 000074 constant entry external dcl 140 ref 890 ssu_$execute_line 000076 constant entry external dcl 140 ref 949 ssu_$print_message 000100 constant entry external dcl 140 ref 356 370 373 390 432 510 513 ssu_$return_arg 000102 constant entry external dcl 140 ref 233 901 ssu_$standalone_invocation 000104 constant entry external dcl 140 ref 406 ssu_ptr 000412 automatic pointer dcl 51 set ref 189* 207* 230* 233* 237* 251* 253* 255* 269* 271* 273* 297* 303* 326* 335* 350* 356* 370* 373* 390* 406* 432* 510* 513* 604* 616* 665* 667* 677* 682* 686* 890* 899* 901* 907* 908* 913* 916* 919* 949* 956* star_ALL_ENTRIES constant fixed bin(2,0) initial dcl 5-111 ref 427 star_LINK constant fixed bin(2,0) initial unsigned dcl 5-119 ref 884 star_LINKS_ONLY_WITH_LINK_PATHS constant fixed bin(3,0) initial dcl 5-112 ref 884 star_branch_count 000776 automatic fixed bin(17,0) dcl 5-13 set ref 429* 435 884 884 884 884 885 star_dir_list_branch based structure array level 1 dcl 5-59 ref 885 star_idx 001261 automatic fixed bin(17,0) dcl 626 set ref 635* 638 640 645 645* star_link_count 001002 automatic fixed bin(17,0) dcl 5-17 set ref 429* 435 884 884 884 884 885 star_links based structure array level 1 dcl 5-76 star_list_branch_ptr 001000 automatic pointer dcl 5-16 set ref 226* 429* 436 437 882 884 884 884 884 885 star_list_names based char(32) array unaligned dcl 5-92 set ref 442* 458* 491 491 496 496 505* 510* 513* 548* 638* 640* 645 645 884 star_list_names_ptr 001004 automatic pointer dcl 5-20 set ref 226* 429* 442 458 491 491 496 496 505 510 513 548 638 640 645 645 884 884 star_name 13 based bit(1) array level 3 dcl 120 set ref 370 613* 637 star_select_sw 001006 automatic fixed bin(3,0) dcl 5-21 set ref 427* 429* 884 start parameter fixed bin(17,0) dcl 746 in procedure "print_changes" ref 743 748 748 750 756 start parameter fixed bin(17,0) dcl 729 in procedure "return_af_value" ref 726 731 status 000407 automatic fixed bin(35,0) dcl 51 set ref 229* 230 230* 254* 255 255* 272* 273 273* 347* 350 350* 406* 407 408* 410* 429* 431 431 432* 458* 459 505* 507 508 510* 512 513 513* 548* 549 612* 613 613 613 616* 638* 640 640* 643 949* substr builtin function dcl 46 ref 241 491 496 557 subsystem_entry 000410 automatic bit(1) dcl 51 set ref 178* 191* 199* 209* 890 suffix parameter char unaligned dcl 479 in procedure "check_forum" ref 476 491 496 502 suffix parameter char unaligned dcl 424 in procedure "scan_dir" set ref 421 429 439* system_area based area(1024) dcl 51 ref 385 system_area_ptr 000414 automatic pointer dcl 51 set ref 345* 347* 385 429* t 001337 automatic fixed bin(17,0) dcl 700 set ref 709* 711 tag 001314 automatic varying char(30) dcl 660 set ref 680* 681 681* 682 689 temp_ptr 001016 automatic pointer dcl 378 set ref 382* 383 383 385* 386 387 389 timing 000416 automatic bit(1) dcl 51 set ref 213* 258* 438 440 transaction_count 14 000744 automatic fixed bin(17,0) level 2 dcl 129 set ref 564 two_names 107(04) based bit(1) array level 4 packed unaligned dcl 2-28 set ref 578* 582* 760* 764* 852* 859* type based fixed bin(2,0) array level 2 packed unsigned unaligned dcl 5-76 ref 884 uid 001046 automatic bit(36) dcl 455 in procedure "already_done" set ref 458* 462 467 uid 103 based bit(36) array level 3 in structure "forums_array" dcl 2-28 in procedure "flsm" set ref 543 562* uid_array 000417 automatic bit(36) array dcl 51 set ref 462 465 467* uid_count 000727 automatic fixed bin(17,0) dcl 51 set ref 222* 461 465 466* 466 467 user_info_$whoami 000106 constant entry external dcl 140 ref 340 user_name_expected 000730 automatic bit(1) dcl 51 set ref 213* 239 294* 303 670* user_name_given 000731 automatic bit(1) dcl 51 set ref 213* 317 338 513 665 671* username 2 000744 automatic char(20) level 3 packed unaligned dcl 129 set ref 527 587 verbose_switch 000732 automatic bit(1) dcl 51 set ref 213* 295* 318 583 586 799* 844 852* 859* version based char(8) level 2 in structure "forums_array" dcl 2-28 in procedure "flsm" set ref 343* version 000744 automatic fixed bin(17,0) level 2 in structure "fi" dcl 129 in procedure "flsm" set ref 502* 503* whoami 000733 automatic char(32) unaligned dcl 51 set ref 180* 190* 198* 208* 229* 406* 408* 410* 880* word_count 001020 automatic fixed bin(17,0) dcl 378 set ref 384* 385 words based bit(36) array dcl 378 ref 385 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSOLUTE_PATH internal static fixed bin(17,0) initial dcl 3-33 HOME_DIR internal static fixed bin(17,0) initial dcl 3-38 INITIATED_SEGS internal static fixed bin(17,0) initial dcl 3-39 PROCESS_DIR internal static fixed bin(17,0) initial dcl 3-37 REFERENCING_DIR internal static fixed bin(17,0) initial dcl 3-35 UNEXPANDED_PATH internal static fixed bin(17,0) initial dcl 3-34 WORKING_DIR internal static fixed bin(17,0) initial dcl 3-36 forum_info_ptr automatic pointer dcl 1-12 sl_control automatic bit(36) unaligned dcl 4-12 sl_control_s based structure level 1 packed unaligned dcl 4-3 sl_info_num_paths automatic fixed bin(17,0) dcl 3-27 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 5-114 star_BRANCHES_ONLY internal static fixed bin(2,0) initial dcl 5-110 star_DIRECTORY internal static fixed bin(2,0) initial unsigned dcl 5-121 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 5-109 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 5-120 star_entries based structure array level 1 dcl 5-27 star_entry_count automatic fixed bin(17,0) dcl 5-14 star_entry_ptr automatic pointer dcl 5-15 star_link_pathname based char unaligned dcl 5-102 star_linkx automatic fixed bin(17,0) dcl 5-18 star_list_branch based structure array level 1 dcl 5-41 star_names based char(32) array unaligned dcl 5-37 star_names_ptr automatic pointer dcl 5-19 NAMES DECLARED BY EXPLICIT CONTEXT. ADD_FORUM 006044 constant label dcl 541 ref 512 BADOPT 002555 constant label dcl 297 ref 261 EGRESS 003666 constant label dcl 398 ref 411 872 FLS_COMMON 001300 constant label dcl 213 ref 182 193 202 211 already_done 005255 constant entry internal dcl 452 ref 500 check_forum 005350 constant entry internal dcl 476 ref 439 check_meetings 001260 constant entry external dcl 204 clean_up 011765 constant entry internal dcl 877 ref 227 398 create_subsystem 004575 constant entry internal dcl 403 ref 181 201 fckm 001232 constant entry external dcl 195 flsm 001162 constant entry external dcl 39 forum_check_meetings 001241 constant entry external dcl 195 forum_list_meetings 001171 constant entry external dcl 39 forum_list_request 001211 constant entry external dcl 186 get_select_name 006573 constant entry internal dcl 601 ref 244 get_user_name 007350 constant entry internal dcl 657 ref 239 242 match_select_name 007007 constant entry internal dcl 623 ref 488 next_meeting 003675 constant entry external dcl 896 print_changes 010346 constant entry internal dcl 743 ref 391 395 939 print_output 010643 constant entry internal dcl 775 ref 396 punt 011754 constant entry internal dcl 870 ref 406 406 return_af_value 010132 constant entry internal dcl 726 ref 394 938 scan_dir 004746 constant entry internal dcl 421 ref 362 363 sort_output 010044 constant entry internal dcl 697 ref 367 NAMES DECLARED BY CONTEXT OR IMPLICATION. char builtin function ref 928 hbound builtin function ref 465 index builtin function ref 908 ltrim builtin function ref 852 852 852 852 859 859 859 859 928 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 12732 13044 12215 12742 Length 13460 12215 112 377 514 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME flsm 1380 external procedure is an external procedure. on unit on line 227 64 on unit begin block on line 376 begin block shares stack frame of external procedure flsm. create_subsystem internal procedure shares stack frame of external procedure flsm. scan_dir internal procedure shares stack frame of external procedure flsm. already_done internal procedure shares stack frame of external procedure flsm. check_forum internal procedure shares stack frame of external procedure flsm. get_select_name internal procedure shares stack frame of external procedure flsm. match_select_name internal procedure shares stack frame of external procedure flsm. get_user_name internal procedure shares stack frame of external procedure flsm. sort_output internal procedure shares stack frame of external procedure flsm. return_af_value internal procedure shares stack frame of external procedure flsm. print_changes internal procedure shares stack frame of external procedure flsm. print_output internal procedure shares stack frame of external procedure flsm. punt 64 internal procedure is assigned to an entry variable. clean_up 81 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME flsm 000106 absolute_pathname flsm 000107 access_name flsm 000120 access_time flsm 000122 active_function flsm 000123 adjourned flsm 000124 all_switch flsm 000125 any_person flsm 000126 arg_count flsm 000127 arg_idx flsm 000130 arg_lth flsm 000132 arg_ptr flsm 000134 before_time flsm 000136 brief_switch flsm 000137 chairman_switch flsm 000140 chairman_expected flsm 000141 chair_width flsm 000142 ckm_switch flsm 000143 count_switch flsm 000144 cpu flsm 000146 dir_idx flsm 000147 change_switch flsm 000150 cm_username flsm 000155 eligible_switch flsm 000156 exclude_switch flsm 000157 explicit flsm 000160 header_switch flsm 000161 i flsm 000162 inhibit_error flsm 000163 interesting_switch flsm 000164 j flsm 000165 forum_directory flsm 000240 last_cpu flsm 000242 last_pf flsm 000244 last_seen_pic flsm 000246 last_trans_pic flsm 000250 message flsm 000264 name_width flsm 000265 no_adjourned flsm 000266 noheader_switch flsm 000267 no_read_only flsm 000270 no_changes flsm 000271 no_participate flsm 000272 no_notify flsm 000273 notify_switch flsm 000274 obj_name_count flsm 000275 obj_name_idx flsm 000276 participate_switch flsm 000277 page_faults flsm 000300 read_only flsm 000301 request flsm 000401 rtn_string_length flsm 000402 rtn_string_ptr flsm 000404 select_names_ptr flsm 000406 short_name_width flsm 000407 status flsm 000410 subsystem_entry flsm 000412 ssu_ptr flsm 000414 system_area_ptr flsm 000416 timing flsm 000417 uid_array flsm 000727 uid_count flsm 000730 user_name_expected flsm 000731 user_name_given flsm 000732 verbose_switch flsm 000733 whoami flsm 000744 fi flsm 000772 forums_array_ptr flsm 000774 sl_info_p flsm 000776 star_branch_count flsm 001000 star_list_branch_ptr flsm 001002 star_link_count flsm 001004 star_list_names_ptr flsm 001006 star_select_sw flsm 001016 temp_ptr begin block on line 376 001020 word_count begin block on line 376 001036 object_idx scan_dir 001046 uid already_done 001047 forum_idx already_done 001060 forum_idx check_forum 001061 my_long_name check_forum 001072 my_short_name check_forum 001103 my_path check_forum 001156 real_dir check_forum 001230 real_name check_forum 001256 accepting match_select_name 001257 match match_select_name 001260 name_idx match_select_name 001261 star_idx match_select_name 001272 personid get_user_name 001303 projectid get_user_name 001314 tag get_user_name 001334 i sort_output 001335 k sort_output 001336 l sort_output 001337 t sort_output 001370 flag_string print_output 001373 last_width print_output 001374 i print_output 001375 j print_output THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_e_as r_ne_as r_ge_a alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry divide_fx3 op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ check_star_name_$entry com_err_ convert_date_to_binary_ cpu_time_and_paging_ cu_$af_return_arg cu_$arg_list_ptr forum_$forum_info forum_$get_forum_path get_system_free_area_ get_temp_segment_ hcs_$get_uid_file hcs_$star_dir_list_ ioa_ match_star_name_ release_temp_segment_ requote_string_ search_paths_$get ssu_$abort_line ssu_$arg_ptr ssu_$destroy_invocation ssu_$execute_line ssu_$print_message ssu_$return_arg ssu_$standalone_invocation user_info_$whoami THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$inconsistent error_table_$noarg error_table_$nomatch forum_data_$meeting_list forum_et_$no_such_forum forum_et_$not_eligible LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 39 001161 178 001176 180 001200 181 001203 182 001204 186 001205 189 001216 190 001222 191 001225 192 001227 193 001230 195 001231 198 001246 199 001251 200 001252 201 001254 202 001255 204 001256 207 001265 208 001271 209 001274 210 001276 211 001277 213 001300 220 001331 221 001334 222 001337 224 001346 226 001355 227 001362 229 001404 230 001425 231 001453 233 001454 235 001473 237 001503 239 001520 241 001527 242 001540 244 001547 245 001550 247 001551 249 001552 250 001566 251 001576 252 001635 253 001636 254 001653 255 001677 256 001733 257 001735 258 001736 260 001745 261 001747 263 001761 265 001762 266 001776 267 002011 268 002024 269 002034 270 002073 271 002074 272 002111 273 002135 274 002171 275 002172 276 002205 277 002221 278 002240 279 002261 280 002275 281 002311 282 002327 283 002342 284 002354 285 002367 286 002402 287 002415 288 002427 289 002442 290 002455 291 002470 292 002503 293 002516 294 002531 295 002540 297 002555 299 002606 303 002610 306 002636 308 002641 309 002651 310 002661 311 002671 312 002701 313 002711 314 002721 315 002731 316 002741 317 002751 318 002761 319 002772 320 003002 321 003012 322 003022 323 003032 324 003042 326 003051 329 003076 332 003110 333 003116 335 003124 338 003162 339 003167 340 003173 342 003221 343 003227 345 003232 347 003241 350 003310 353 003336 355 003347 356 003354 359 003414 361 003415 362 003422 363 003427 365 003434 367 003436 369 003444 370 003453 373 003515 374 003541 376 003543 382 003545 383 003551 384 003563 385 003570 386 003575 387 003600 389 003606 390 003610 391 003637 376 003645 394 003646 395 003656 396 003665 398 003666 401 003672 896 003673 899 003702 901 003706 903 003725 904 003731 906 003733 907 003743 908 003760 910 004022 911 004036 912 004051 913 004064 914 004116 916 004120 919 004151 922 004202 924 004206 925 004210 926 004230 927 004232 928 004237 929 004274 930 004337 933 004340 934 004343 935 004350 936 004370 938 004372 939 004400 940 004402 943 004403 944 004413 945 004417 946 004424 948 004443 949 004505 951 004537 952 004544 954 004545 956 004547 958 004574 403 004575 406 004576 407 004646 408 004650 410 004720 411 004744 414 004745 421 004746 427 004757 429 004761 431 005046 432 005054 434 005105 435 005106 436 005117 437 005126 438 005132 439 005150 440 005162 441 005164 442 005200 445 005252 447 005254 452 005255 458 005257 459 005311 461 005316 462 005325 463 005334 465 005336 466 005341 467 005342 470 005345 476 005350 487 005361 488 005362 491 005372 495 005427 496 005434 500 005467 502 005475 503 005507 505 005511 507 005555 508 005557 509 005562 510 005567 512 005626 513 005634 516 005711 519 005712 521 005722 522 005723 524 005742 525 005747 527 005754 529 005763 530 005774 531 006001 532 006011 534 006016 535 006032 536 006036 539 006037 541 006044 543 006055 544 006063 546 006065 548 006067 549 006124 550 006126 551 006140 552 006172 553 006205 555 006206 556 006220 557 006252 560 006277 561 006307 562 006314 563 006316 564 006321 565 006326 566 006334 567 006341 568 006346 569 006353 570 006360 571 006367 572 006374 573 006376 574 006400 576 006405 577 006412 578 006421 579 006425 581 006426 582 006435 583 006441 586 006462 587 006465 588 006530 591 006552 593 006562 595 006567 597 006572 601 006573 604 006574 607 006636 609 006637 610 006650 611 006655 612 006660 613 006733 616 006747 618 007006 623 007007 631 007011 633 007014 634 007023 635 007024 637 007037 638 007044 640 007134 643 007217 644 007224 645 007225 648 007322 649 007330 650 007332 651 007342 653 007344 657 007350 665 007352 667 007413 669 007451 670 007455 671 007456 674 007460 675 007476 676 007507 677 007516 679 007555 680 007601 681 007624 682 007636 684 007675 685 007707 686 007721 688 007760 689 007771 691 010042 697 010044 702 010045 703 010051 704 010055 705 010057 706 010067 707 010071 709 010114 710 010117 711 010122 712 010124 714 010126 715 010130 717 010131 726 010132 731 010134 733 010145 735 010157 737 010253 738 010342 740 010345 743 010346 748 010350 750 010406 753 010432 754 010440 756 010445 758 010457 760 010463 764 010555 766 010640 768 010642 775 010643 783 010644 784 010646 785 010651 786 010653 787 010657 789 010660 790 010662 792 010666 794 010667 795 010674 797 010700 799 010703 803 010751 805 010761 807 010765 810 011000 811 011005 813 011006 815 011036 816 011051 818 011060 820 011076 822 011105 825 011127 827 011136 830 011162 832 011171 835 011207 837 011216 840 011236 842 011245 844 011265 845 011270 846 011302 847 011313 848 011322 849 011327 852 011332 859 011543 864 011747 866 011752 870 011753 872 011761 877 011764 880 011772 882 012020 884 012025 885 012071 888 012077 890 012112 892 012124 ----------------------------------------------------------- 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