COMPILATION LISTING OF SEGMENT emf_writing_util_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/09/85 1148.4 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 /* format: off */ 11 12 /* Extended Mail Facility Utilities which support the write, append, and preface requests in read_mail and send_mail */ 13 14 /* Created: by W. Olin Sibert */ 15 /* Recoded: September 1983 by G. Palter */ 16 17 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 18 19 20 emf_writing_util_: 21 procedure (); 22 23 RETURN_FROM_OPERATION: 24 return; /* not an entrypoint */ 25 26 27 /* Aborts the operation in progress */ 28 29 abort_operation: 30 procedure (p_code); 31 32 dcl p_code fixed binary (35) parameter; 33 34 P_code = p_code; 35 go to RETURN_FROM_OPERATION; 36 37 end abort_operation; 38 39 40 /* Parameters */ 41 42 dcl P_file_ptr pointer parameter; 43 dcl P_file_uid bit (36) aligned parameter; 44 dcl P_code fixed binary (35) parameter; 45 46 dcl P_sci_ptr pointer parameter; /* open: -> description of the subsystem invocation */ 47 dcl P_file_dirname character (*) parameter; /* open: absolute pathname of containing directory */ 48 dcl P_file_ename character (*) parameter; /* open: entryname of the segment */ 49 dcl P_creation_mode fixed binary parameter; /* open: what action to take if the segment does not exist */ 50 51 dcl P_text character (*) parameter; /* write: the text to be added to the segment */ 52 dcl P_insertion_mode fixed binary parameter; /* write: how to add the text (truncate/append/preface) */ 53 54 55 /* Local copies of parameters */ 56 57 dcl file_ptr pointer; 58 dcl file_uid bit (36) aligned; 59 60 dcl insertion_mode fixed binary; 61 62 dcl code fixed binary (35); 63 64 65 /* Remaining declarations */ 66 67 dcl the_file character (file_max_lth) unaligned based (file_ptr); 68 dcl file_bit_count fixed binary (24); 69 dcl (file_max_lth, file_lth) fixed binary (21); 70 dcl file_max_lth_in_words fixed binary (19); 71 72 dcl try_to_create bit (1); 73 dcl file_was_created bit (1) aligned; 74 75 dcl insert_position fixed binary (21); 76 77 /* format: off */ 78 dcl (emf_et_$insufficient_quota_to_write, emf_et_$insufficient_segment_size, error_table_$action_not_performed, 79 error_table_$bad_subr_arg, error_table_$noentry, error_table_$non_matching_uid) 80 fixed binary (35) external; 81 /* format: on */ 82 83 dcl command_query_$yes_no entry () options (variable); 84 dcl hcs_$get_max_length_seg entry (pointer, fixed binary (19), fixed binary (35)); 85 dcl hcs_$get_uid_seg entry (pointer, bit (36) aligned, fixed binary (35)); 86 dcl hcs_$status_mins entry (pointer, fixed binary (2), fixed binary (24), fixed binary (35)); 87 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), fixed binary (35)); 88 dcl initiate_file_$create 89 entry (character (*), character (*), bit (*), pointer, bit (1) aligned, fixed binary (24), fixed binary (35)); 90 dcl mrl_ entry (pointer, fixed binary (21), pointer, fixed binary (21)); 91 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 92 dcl ssu_$get_subsystem_and_request_name entry (pointer) returns (character (72) varying); 93 dcl ssu_$print_message entry () options (variable); 94 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 95 96 dcl record_quota_overflow condition; 97 98 dcl (addcharno, divide, length, null) builtin; 99 100 /* Open the file for writing: The caller specifies whether the file is to be created if not found with/without asking the 101* user's permission and with/without informing the user of the creation */ 102 103 open: 104 entry (P_sci_ptr, P_file_dirname, P_file_ename, P_creation_mode, P_file_ptr, P_file_uid, P_code); 105 106 if (P_creation_mode < DONT_CREATE_FILE) | (P_creation_mode > SILENTLY_CREATE_FILE) then 107 call abort_operation (error_table_$bad_subr_arg); 108 109 110 if (P_creation_mode = DONT_CREATE_FILE) | (P_creation_mode = QUERY_TO_CREATE_FILE) then do; 111 112 /* Try to initiate the file without creating it if the caller doesn't want it created or wants us to ask for permission to 113* create it. If the file doesn't exist, ask the user for permission to create it if appropriate */ 114 115 call initiate_file_ (P_file_dirname, P_file_ename, RW_ACCESS, file_ptr, (0), code); 116 117 if (code = error_table_$noentry) & (P_creation_mode = QUERY_TO_CREATE_FILE) then do; 118 call command_query_$yes_no (try_to_create, 0, ssu_$get_subsystem_and_request_name (P_sci_ptr), "", 119 "Do you wish to create the file ^a?", pathname_ (P_file_dirname, P_file_ename)); 120 if try_to_create then /* yes: act like creation mode is to silenty create it */ 121 go to INITIATE_OR_CREATE; 122 else code = error_table_$action_not_performed; 123 end; 124 125 if code ^= 0 then call abort_operation (code); 126 127 file_was_created = "0"b; /* needed later */ 128 end; 129 130 131 else do; 132 133 /* Create the file (if necessary), announce the creation if appropriate, and initiate it */ 134 135 INITIATE_OR_CREATE: 136 call initiate_file_$create (P_file_dirname, P_file_ename, RW_ACCESS, file_ptr, file_was_created, (0), code) 137 ; 138 139 if file_was_created & (P_creation_mode = CREATE_AND_ANNOUNCE_FILE) then 140 call ssu_$print_message (P_sci_ptr, 0, "Created ^a.", pathname_ (P_file_dirname, P_file_ename)); 141 142 if code ^= 0 then call abort_operation (code); 143 end; 144 145 146 /* Finally get the file's UID and return */ 147 148 call hcs_$get_uid_seg (file_ptr, file_uid, code); 149 if code ^= 0 then do; /* sigh */ 150 if file_was_created then 151 call terminate_file_ (file_ptr, 0, TERM_FILE_DELETE, (0)); 152 else call terminate_file_ (file_ptr, 0, TERM_FILE_TERM, (0)); 153 call abort_operation (code); 154 end; 155 156 P_file_ptr = file_ptr; 157 P_file_uid = file_uid; 158 P_code = 0; /* success */ 159 160 return; 161 162 /* Adds the given text to the file: The text may be added either at the beginning or end of the file. The caller may 163* request that the file be truncated before adding the text */ 164 165 write: 166 entry (P_file_ptr, P_file_uid, P_text, P_insertion_mode, P_code); 167 168 file_ptr = P_file_ptr; 169 insertion_mode = P_insertion_mode; 170 171 if (insertion_mode < TRUNCATE_FILE) | (insertion_mode > PREFACE_FILE) then 172 call abort_operation (error_table_$bad_subr_arg); 173 174 175 /* Verify that the caller's pointer is still valid */ 176 177 call hcs_$get_uid_seg (file_ptr, file_uid, code); 178 if code ^= 0 then call abort_operation (code); 179 180 if P_file_uid ^= file_uid then call abort_operation (error_table_$non_matching_uid); 181 182 183 /* Determine the file's length and maximum length and whether there is room to perform the requested operation */ 184 185 call hcs_$status_mins (file_ptr, (0), file_bit_count, code); 186 if code ^= 0 then call abort_operation (code); 187 188 call hcs_$get_max_length_seg (file_ptr, file_max_lth_in_words, code); 189 if code ^= 0 then call abort_operation (code); 190 191 if insertion_mode = TRUNCATE_FILE then do; /* truncation is special: need to ignore above bit count */ 192 file_bit_count = 0; 193 call terminate_file_ (file_ptr, 0, TERM_FILE_TRUNC, code); 194 if code ^= 0 then call abort_operation (code); 195 end; 196 197 file_lth = divide ((file_bit_count + 8), 9, 21, 0); 198 file_max_lth = 4 * file_max_lth_in_words; 199 200 if (file_lth + length (P_text)) > file_max_lth then call abort_operation (emf_et_$insufficient_segment_size); 201 /* won't fit */ 202 203 204 /* Add the text to the file and update its bit count: If prefacing, move the file's current content "up" to make room */ 205 206 on condition (record_quota_overflow) call abort_operation (emf_et_$insufficient_quota_to_write); 207 208 if (file_lth > 0) & (insertion_mode = PREFACE_FILE) then do; 209 insert_position = 1; /* put it at the beginning of the file */ 210 call mrl_ (file_ptr, file_lth, addcharno (file_ptr, length (P_text)), file_lth); 211 end; 212 213 else insert_position = file_lth + 1; /* put it at the end */ 214 215 begin; 216 dcl inserted_text character (length (P_text)) unaligned defined (the_file) position (insert_position); 217 inserted_text = P_text; 218 end; 219 220 file_bit_count = 9 * (file_lth + length (P_text));/* compute new bit count */ 221 222 call terminate_file_ (file_ptr, file_bit_count, TERM_FILE_BC, code); 223 224 P_code = code; /* indicate success/failure of the set bit count operation */ 225 226 return; 227 228 /* Closes the file */ 229 230 close: 231 entry (P_file_ptr, P_file_uid, P_code); 232 233 file_ptr = P_file_ptr; 234 235 call hcs_$get_uid_seg (file_ptr, file_uid, code); 236 if code ^= 0 then call abort_operation (code); 237 238 if P_file_uid ^= file_uid then call abort_operation (error_table_$non_matching_uid); 239 240 call terminate_file_ (file_ptr, 0, TERM_FILE_TERM, code); 241 242 P_file_ptr = null (); /* just give the caller one shot */ 243 P_code = code; /* indicate success/failure of the termination */ 244 245 return; 246 1 1 /* BEGIN INCLUDE FILE ... emf_writing_modes.incl.pl1 */ 1 2 /* Created: 12 January 1979 by G. Palter */ 1 3 1 4 /* Constants defining the various modes of operation of emf_writing_util_ */ 1 5 1 6 dcl (DONT_CREATE_FILE initial (0), /* do not create the file and issue an error message */ 1 7 QUERY_TO_CREATE_FILE initial (1), /* ask the user for permission to create the file */ 1 8 CREATE_AND_ANNOUNCE_FILE initial (2), /* create the file and inform the user of this action */ 1 9 SILENTLY_CREATE_FILE initial (3), /* create the file but don't inform the user */ 1 10 1 11 TRUNCATE_FILE initial (1), /* truncate the file if it already exists */ 1 12 APPEND_FILE initial (2), /* add the text to the end of the file */ 1 13 PREFACE_FILE initial (3)) /* insert the text at the beginning of the file */ 1 14 1 15 fixed binary static options (constant); 1 16 1 17 /* END INCLUDE FILE ... emf_writing_modes.incl.pl1 */ 247 248 2 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 249 250 3 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 3 2 /* format: style2,^inddcls,idind32 */ 3 3 3 4 declare 1 terminate_file_switches based, 3 5 2 truncate bit (1) unaligned, 3 6 2 set_bc bit (1) unaligned, 3 7 2 terminate bit (1) unaligned, 3 8 2 force_write bit (1) unaligned, 3 9 2 delete bit (1) unaligned; 3 10 3 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 3 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 3 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 3 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 3 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 3 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 3 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 3 18 3 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 251 252 253 end emf_writing_util_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/08/85 1131.5 emf_writing_util_.pl1 >spec>on>41-15>emf_writing_util_.pl1 247 1 10/27/83 2104.3 emf_writing_modes.incl.pl1 >ldd>include>emf_writing_modes.incl.pl1 249 2 04/09/85 1109.7 access_mode_values.incl.pl1 >spec>on>41-15>access_mode_values.incl.pl1 251 3 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. CREATE_AND_ANNOUNCE_FILE constant fixed bin(17,0) initial dcl 1-6 ref 139 DONT_CREATE_FILE constant fixed bin(17,0) initial dcl 1-6 ref 106 110 PREFACE_FILE constant fixed bin(17,0) initial dcl 1-6 ref 171 208 P_code parameter fixed bin(35,0) dcl 44 set ref 34* 103 158* 165 224* 230 243* P_creation_mode parameter fixed bin(17,0) dcl 49 ref 103 106 106 110 110 117 139 P_file_dirname parameter char unaligned dcl 47 set ref 103 115* 118* 118* 135* 139* 139* P_file_ename parameter char unaligned dcl 48 set ref 103 115* 118* 118* 135* 139* 139* P_file_ptr parameter pointer dcl 42 set ref 103 156* 165 168 230 233 242* P_file_uid parameter bit(36) dcl 43 set ref 103 157* 165 180 230 238 P_insertion_mode parameter fixed bin(17,0) dcl 52 ref 165 169 P_sci_ptr parameter pointer dcl 46 set ref 103 118* 139* P_text parameter char unaligned dcl 51 ref 165 200 210 210 216 217 220 QUERY_TO_CREATE_FILE constant fixed bin(17,0) initial dcl 1-6 ref 110 117 RW_ACCESS 000004 constant bit(3) initial unaligned dcl 2-11 set ref 115* 135* SILENTLY_CREATE_FILE constant fixed bin(17,0) initial dcl 1-6 ref 106 TERM_FILE_BC 000002 constant bit(2) initial unaligned dcl 3-12 set ref 222* TERM_FILE_DELETE 000000 constant bit(5) initial unaligned dcl 3-17 set ref 150* TERM_FILE_TERM 000001 constant bit(3) initial unaligned dcl 3-14 set ref 152* 240* TERM_FILE_TRUNC 000003 constant bit(1) initial unaligned dcl 3-11 set ref 193* TRUNCATE_FILE constant fixed bin(17,0) initial dcl 1-6 ref 171 191 addcharno builtin function dcl 98 ref 210 210 code 000104 automatic fixed bin(35,0) dcl 62 set ref 115* 117 122* 125 125* 135* 142 142* 148* 149 153* 177* 178 178* 185* 186 186* 188* 189 189* 193* 194 194* 222* 224 235* 236 236* 240* 243 command_query_$yes_no 000024 constant entry external dcl 83 ref 118 divide builtin function dcl 98 ref 197 emf_et_$insufficient_quota_to_write 000010 external static fixed bin(35,0) dcl 78 set ref 206* emf_et_$insufficient_segment_size 000012 external static fixed bin(35,0) dcl 78 set ref 200* error_table_$action_not_performed 000014 external static fixed bin(35,0) dcl 78 ref 122 error_table_$bad_subr_arg 000016 external static fixed bin(35,0) dcl 78 set ref 106* 171* error_table_$noentry 000020 external static fixed bin(35,0) dcl 78 ref 117 error_table_$non_matching_uid 000022 external static fixed bin(35,0) dcl 78 set ref 180* 238* file_bit_count 000105 automatic fixed bin(24,0) dcl 68 set ref 185* 192* 197 220* 222* file_lth 000107 automatic fixed bin(21,0) dcl 69 set ref 197* 200 208 210* 210* 213 220 file_max_lth 000106 automatic fixed bin(21,0) dcl 69 set ref 198* 200 217 file_max_lth_in_words 000110 automatic fixed bin(19,0) dcl 70 set ref 188* 198 file_ptr 000100 automatic pointer dcl 57 set ref 115* 135* 148* 150* 152* 156 168* 177* 185* 188* 193* 210* 210 210 217 222* 233* 235* 240* file_uid 000102 automatic bit(36) dcl 58 set ref 148* 157 177* 180 235* 238 file_was_created 000112 automatic bit(1) dcl 73 set ref 127* 135* 139 150 hcs_$get_max_length_seg 000026 constant entry external dcl 84 ref 188 hcs_$get_uid_seg 000030 constant entry external dcl 85 ref 148 177 235 hcs_$status_mins 000032 constant entry external dcl 86 ref 185 initiate_file_ 000034 constant entry external dcl 87 ref 115 initiate_file_$create 000036 constant entry external dcl 88 ref 135 insert_position 000113 automatic fixed bin(21,0) dcl 75 set ref 209* 213* 217 inserted_text defined char unaligned dcl 216 set ref 217* insertion_mode 000103 automatic fixed bin(17,0) dcl 60 set ref 169* 171 171 191 208 length builtin function dcl 98 ref 200 210 210 216 220 mrl_ 000040 constant entry external dcl 90 ref 210 null builtin function dcl 98 ref 242 p_code parameter fixed bin(35,0) dcl 32 ref 29 34 pathname_ 000042 constant entry external dcl 91 ref 118 118 139 139 record_quota_overflow 000114 stack reference condition dcl 96 ref 206 ssu_$get_subsystem_and_request_name 000044 constant entry external dcl 92 ref 118 ssu_$print_message 000046 constant entry external dcl 93 ref 139 terminate_file_ 000050 constant entry external dcl 94 ref 150 152 193 222 240 the_file based char unaligned dcl 67 set ref 217* 217 try_to_create 000111 automatic bit(1) unaligned dcl 72 set ref 118* 120 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. APPEND_FILE internal static fixed bin(17,0) initial dcl 1-6 A_ACCESS internal static bit(3) initial unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 2-33 E_ACCESS internal static bit(3) initial unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 M_ACCESS internal static bit(3) initial unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 N_ACCESS internal static bit(3) initial unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 REW_ACCESS internal static bit(3) initial unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS internal static bit(3) initial unaligned dcl 2-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SA_ACCESS internal static bit(3) initial unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 2-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 S_ACCESS internal static bit(3) initial unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 3-16 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 3-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 3-15 W_ACCESS internal static bit(3) initial unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 terminate_file_switches based structure level 1 packed unaligned dcl 3-4 NAMES DECLARED BY EXPLICIT CONTEXT. INITIATE_OR_CREATE 000324 constant label dcl 135 ref 120 RETURN_FROM_OPERATION 000062 constant label dcl 23 ref 35 abort_operation 001312 constant entry internal dcl 29 ref 106 125 142 153 171 178 180 186 189 194 200 206 236 238 close 001202 constant entry external dcl 230 emf_writing_util_ 000055 constant entry external dcl 20 open 000071 constant entry external dcl 103 write 000604 constant entry external dcl 165 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1624 1676 1326 1634 Length 2164 1326 52 252 275 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME emf_writing_util_ 220 external procedure is an external procedure. abort_operation 64 internal procedure is called by several nonquick procedures. on unit on line 206 70 on unit begin block on line 215 begin block shares stack frame of external procedure emf_writing_util_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME emf_writing_util_ 000100 file_ptr emf_writing_util_ 000102 file_uid emf_writing_util_ 000103 insertion_mode emf_writing_util_ 000104 code emf_writing_util_ 000105 file_bit_count emf_writing_util_ 000106 file_max_lth emf_writing_util_ 000107 file_lth emf_writing_util_ 000110 file_max_lth_in_words emf_writing_util_ 000111 try_to_create emf_writing_util_ 000112 file_was_created emf_writing_util_ 000113 insert_position emf_writing_util_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return tra_ext enable ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. command_query_$yes_no hcs_$get_max_length_seg hcs_$get_uid_seg hcs_$status_mins initiate_file_ initiate_file_$create mrl_ pathname_ ssu_$get_subsystem_and_request_name ssu_$print_message terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. emf_et_$insufficient_quota_to_write emf_et_$insufficient_segment_size error_table_$action_not_performed error_table_$bad_subr_arg error_table_$noentry error_table_$non_matching_uid LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000054 23 000062 103 000063 106 000120 110 000134 115 000141 117 000200 118 000210 120 000304 122 000307 125 000312 127 000322 128 000323 135 000324 139 000370 142 000454 148 000464 149 000477 150 000501 152 000534 153 000563 156 000571 157 000573 158 000575 160 000576 165 000577 168 000626 169 000631 171 000634 177 000647 178 000662 180 000672 185 000704 186 000722 188 000732 189 000745 191 000755 192 000760 193 000761 194 001007 197 001017 198 001023 200 001026 206 001041 208 001065 209 001072 210 001074 211 001115 213 001116 216 001121 217 001127 220 001142 222 001146 224 001173 226 001175 230 001176 233 001216 235 001221 236 001234 238 001244 240 001256 242 001304 243 001306 245 001310 29 001311 34 001317 35 001323 ----------------------------------------------------------- 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