COMPILATION LISTING OF SEGMENT urf_manager_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/05/84 1109.2 mst Wed Options: optimize list 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: style2 */ 11 urf_manager_: 12 procedure (); 13 14 return; /* Not an Entry */ 15 16 /* Data Base Manager for User Registration File */ 17 /* Written by C. Hornig, July 1979 */ 18 /* Modified 1984-08-10 by E. Swenson for Version 3 MSTBs. */ 19 20 declare ( 21 Pid character (*), 22 (Urfep, Old_urfep) pointer, 23 Record fixed bin (35), 24 Urfdir character (*), 25 Code fixed bin (35) 26 ) parameter; 27 1 1 /* Begin include file urfe.incl.pl1 */ 1 2 1 3 declare urfep pointer automatic; 1 4 declare 1 urf_entry aligned based (urfep), 1 5 2 last_name character (32), 1 6 2 first_name character (24), 1 7 2 title character (8), 1 8 2 address character (32), 1 9 2 prog_number character (32), 1 10 2 project character (32), 1 11 2 notes character (32); 1 12 1 13 /* End include file urfe.incl.pl1 */ 28 29 30 declare ( 31 error_table_$noentry, 32 error_table_$noalloc, 33 error_table_$inconsistent, 34 error_table_$action_not_performed 35 ) fixed bin (35) external static; 36 37 declare ms_table_mgr_$open entry (character (*), character (*), character (*), pointer, pointer, 38 fixed bin (35)), 39 ms_table_mgr_$close entry (pointer, fixed bin (35)), 40 ms_table_mgr_$abs_entry 41 entry (ptr, fixed bin (35), char (*), bit (1) aligned, ptr, fixed bin (35), 42 fixed bin (35)), 43 ms_table_mgr_$find_entry 44 entry (ptr, char (*), ptr, bit (1) aligned, fixed bin (35), fixed bin (35)), 45 ms_table_mgr_$delete_entry 46 entry (pointer, character (*), fixed bin (35)), 47 ms_table_mgr_$new_entry 48 entry (pointer, character (*), pointer, fixed bin (35)), 49 ms_table_mgr_$update_entry 50 entry (ptr, ptr, fixed bin (35)); 51 52 declare urfdir init (">user_dir_dir>SysAdmin>admin") character (168) internal static; 53 declare (urf_tag, urfhp) pointer init (null ()) internal static; 54 declare initialized bit init ("0"b) internal static; 55 56 dcl NO_WRITE bit (1) aligned internal static options (constant) initial ("0"b); 57 58 declare code fixed bin (35), 59 pid character (32), 60 record fixed bin (35), 61 user_urfep pointer; 62 63 declare cleanup condition; 64 65 /* * * * * * * * * * GET_ABS_ENTRY * * * * * * * * * */ 66 67 get_abs_entry: 68 entry (Record, Pid, Urfep, Code); 69 70 user_urfep = Urfep; 71 record = Record; 72 call init; 73 call ms_table_mgr_$abs_entry (urf_tag, record, pid, NO_WRITE, urfep, (0), code); 74 Pid = pid; 75 goto get_common; 76 77 /* * * * * * * * * * GET_ENTRY * * * * * * * * * */ 78 79 get_entry: 80 entry (Pid, Urfep, Code); 81 82 user_urfep = Urfep; 83 call init; 84 call find; 85 get_common: 86 if user_urfep ^= null () 87 then if urfep = null () 88 then string (user_urfep -> urf_entry) = ""; 89 else user_urfep -> urf_entry = urf_entry; 90 91 return_to_caller: 92 Code = code; 93 return; 94 95 /* * * * * * * * * * UPDATE_ENTRY * * * * * * * * * */ 96 97 update_entry: 98 entry (Pid, Old_urfep, Urfep, Code); 99 100 user_urfep = Urfep; 101 call init; 102 call find; 103 if unspec (Old_urfep -> urf_entry) ^= unspec (urf_entry) 104 then do; 105 code = error_table_$inconsistent; 106 goto return_to_caller; 107 end; 108 if user_urfep ^= null () 109 then do; 110 urf_entry = user_urfep -> urf_entry; 111 call ms_table_mgr_$update_entry (urf_tag, urfep, code); 112 end; 113 goto return_to_caller; 114 115 /* * * * * * * * * * ADD_ENTRY * * * * * * * * * */ 116 117 add_entry: 118 entry (Pid, Urfep, Code); 119 120 user_urfep = Urfep; 121 call init; 122 call ms_table_mgr_$new_entry (urf_tag, pid, urfep, code); 123 if code ^= 0 124 then goto return_to_caller; 125 urf_entry = user_urfep -> urf_entry; 126 call ms_table_mgr_$update_entry (urf_tag, urfep, code); 127 goto return_to_caller; 128 129 /* * * * * * * * * * REMOVE_ENTRY * * * * * * * * * */ 130 131 remove_entry: 132 entry (Pid, Code); 133 134 pid = Pid; 135 call init; 136 call ms_table_mgr_$delete_entry (urf_tag, pid, code); 137 goto return_to_caller; 138 139 /* * * * * ** * * * TEST * * * * * * * ** */ 140 141 test: 142 entry (Urfdir); 143 144 urfdir = Urfdir; 145 if urf_tag ^= null () 146 then call ms_table_mgr_$close (urf_tag, code); 147 urf_tag = null (); 148 initialized = "0"b; 149 return; 150 151 /* * * * * * * * * * FIND * * * * * * * * * */ 152 153 find: 154 procedure; 155 call ms_table_mgr_$find_entry (urf_tag, pid, urfep, NO_WRITE, (0), code); 156 if urfep = null () 157 then goto return_to_caller; 158 end find; 159 160 /* * * * * * * * ** * INIT * * * * * * * * * */ 161 162 init: 163 procedure; 164 Code, code = 0; 165 pid = Pid; 166 167 if ^initialized 168 then do; 169 call ms_table_mgr_$open (urfdir, "URF", "URF", urf_tag, urfhp, code); 170 if code ^= 0 171 then goto return_to_caller; 172 173 initialized = "1"b; 174 end; 175 end init; 176 177 end urf_manager_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/05/84 0857.1 urf_manager_.pl1 >special_ldd>temp>as>urf_manager_.pl1 28 1 11/26/79 1801.5 urf_entry.incl.pl1 >ldd>include>urf_entry.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. Code parameter fixed bin(35,0) dcl 20 set ref 67 79 91* 97 117 131 164* NO_WRITE 000003 constant bit(1) initial dcl 56 set ref 73* 155* Old_urfep parameter pointer dcl 20 ref 97 103 Pid parameter char unaligned dcl 20 set ref 67 74* 79 97 117 131 134 165 Record parameter fixed bin(35,0) dcl 20 ref 67 71 Urfdir parameter char unaligned dcl 20 ref 141 144 Urfep parameter pointer dcl 20 ref 67 70 79 82 97 100 117 120 code 000102 automatic fixed bin(35,0) dcl 58 set ref 73* 91 105* 111* 122* 123 126* 136* 145* 155* 164* 169* 170 error_table_$inconsistent 000070 external static fixed bin(35,0) dcl 30 ref 105 initialized 000066 internal static bit(1) initial unaligned dcl 54 set ref 148* 167 173* ms_table_mgr_$abs_entry 000076 constant entry external dcl 37 ref 73 ms_table_mgr_$close 000074 constant entry external dcl 37 ref 145 ms_table_mgr_$delete_entry 000102 constant entry external dcl 37 ref 136 ms_table_mgr_$find_entry 000100 constant entry external dcl 37 ref 155 ms_table_mgr_$new_entry 000104 constant entry external dcl 37 ref 122 ms_table_mgr_$open 000072 constant entry external dcl 37 ref 169 ms_table_mgr_$update_entry 000106 constant entry external dcl 37 ref 111 126 pid 000103 automatic char(32) unaligned dcl 58 set ref 73* 74 122* 134* 136* 155* 165* record 000113 automatic fixed bin(35,0) dcl 58 set ref 71* 73* urf_entry based structure level 1 dcl 1-4 set ref 85* 89* 89 103 103 110* 110 125* 125 urf_tag 000062 internal static pointer initial dcl 53 set ref 73* 111* 122* 126* 136* 145 145* 147* 155* 169* urfdir 000010 internal static char(168) initial unaligned dcl 52 set ref 144* 169* urfep 000100 automatic pointer dcl 1-3 set ref 73* 85 89 103 110 111* 122* 125 126* 155* 156 urfhp 000064 internal static pointer initial dcl 53 set ref 169* user_urfep 000114 automatic pointer dcl 58 set ref 70* 82* 85 85 89 100* 108 110 120* 125 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. cleanup 000000 stack reference condition dcl 63 error_table_$action_not_performed external static fixed bin(35,0) dcl 30 error_table_$noalloc external static fixed bin(35,0) dcl 30 error_table_$noentry external static fixed bin(35,0) dcl 30 NAMES DECLARED BY EXPLICIT CONTEXT. add_entry 000300 constant entry external dcl 117 find 000514 constant entry internal dcl 153 ref 84 102 get_abs_entry 000032 constant entry external dcl 67 get_common 000160 constant label dcl 85 ref 75 get_entry 000134 constant entry external dcl 79 init 000556 constant entry internal dcl 162 ref 72 83 101 121 135 remove_entry 000376 constant entry external dcl 131 return_to_caller 000202 constant label dcl 91 ref 106 113 123 127 137 156 170 test 000451 constant entry external dcl 141 update_entry 000212 constant entry external dcl 97 urf_manager_ 000017 constant entry external dcl 11 NAMES DECLARED BY CONTEXT OR IMPLICATION. null builtin function ref 85 85 108 145 147 156 string builtin function ref 85 unspec builtin function ref 103 103 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1020 1130 637 1030 Length 1344 637 110 200 160 60 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME urf_manager_ 186 external procedure is an external procedure. find internal procedure shares stack frame of external procedure urf_manager_. init internal procedure shares stack frame of external procedure urf_manager_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 urfdir urf_manager_ 000062 urf_tag urf_manager_ 000064 urfhp urf_manager_ 000066 initialized urf_manager_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME urf_manager_ 000100 urfep urf_manager_ 000102 code urf_manager_ 000103 pid urf_manager_ 000113 record urf_manager_ 000114 user_urfep urf_manager_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ms_table_mgr_$abs_entry ms_table_mgr_$close ms_table_mgr_$delete_entry ms_table_mgr_$find_entry ms_table_mgr_$new_entry ms_table_mgr_$open ms_table_mgr_$update_entry THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$inconsistent CONSTANTS 000000 aa 524000000003 000001 aa 125 122 106 000 URF 000002 aa 526000000250 000003 aa 000000000000 000004 aa 514000000001 000005 aa 526000000040 000006 aa 404000000043 000007 aa 464000000000 000010 aa 526077777777 000012 aa 077777000043 000013 aa 000001000000 000014 aa 143 154 145 141 clea 000015 aa 156 165 160 000 nup BEGIN PROCEDURE urf_manager_ ENTRY TO urf_manager_ STATEMENT 1 ON LINE 11 urf_manager_: procedure (); 000016 da 000112200000 000017 aa 000300 6270 00 eax7 192 000020 aa 7 00034 3521 20 epp2 pr7|28,* 000021 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000022 aa 000000000000 000023 aa 000000000000 STATEMENT 1 ON LINE 14 return; 000024 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO get_abs_entry STATEMENT 1 ON LINE 67 get_abs_entry: entry (Record, Pid, Urfep, Code); 000025 at 000004000006 000026 tt 000010000007 000027 ta 000006000000 000030 ta 000025000000 000031 da 000121300000 000032 aa 000300 6270 00 eax7 192 000033 aa 7 00034 3521 20 epp2 pr7|28,* 000034 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000035 aa 000010000000 000036 aa 000000000000 000037 aa 6 00032 3735 20 epp7 pr6|26,* 000040 aa 7 00004 3715 20 epp5 pr7|4,* 000041 aa 6 00120 6515 00 spri5 pr6|80 000042 aa 6 00042 3535 20 epp3 pr6|34,* 000043 aa 3 00002 3515 20 epp1 pr3|2,* 000044 aa 6 00116 2515 00 spri1 pr6|78 000045 aa 7 00006 3715 20 epp5 pr7|6,* 000046 aa 6 00122 6515 00 spri5 pr6|82 000047 aa 7 00010 3535 20 epp3 pr7|8,* 000050 aa 6 00124 2535 00 spri3 pr6|84 STATEMENT 1 ON LINE 70 user_urfep = Urfep; 000051 aa 6 00122 3735 20 epp7 pr6|82,* Urfep 000052 aa 7 00000 3735 20 epp7 pr7|0,* Urfep 000053 aa 6 00114 6535 00 spri7 pr6|76 user_urfep STATEMENT 1 ON LINE 71 record = Record; 000054 aa 6 00032 3715 20 epp5 pr6|26,* 000055 aa 5 00002 2361 20 ldq pr5|2,* Record 000056 aa 6 00113 7561 00 stq pr6|75 record STATEMENT 1 ON LINE 72 call init; 000057 aa 000477 6700 04 tsp4 319,ic 000556 STATEMENT 1 ON LINE 73 call ms_table_mgr_$abs_entry (urf_tag, record, pid, NO_WRITE, urfep, (0), code); 000060 aa 6 00142 4501 00 stz pr6|98 000061 aa 6 00044 3701 20 epp4 pr6|36,* 000062 ia 4 00062 3521 00 epp2 pr4|50 urf_tag 000063 aa 6 00146 2521 00 spri2 pr6|102 000064 aa 6 00113 3521 00 epp2 pr6|75 record 000065 aa 6 00150 2521 00 spri2 pr6|104 000066 aa 6 00103 3521 00 epp2 pr6|67 pid 000067 aa 6 00152 2521 00 spri2 pr6|106 000070 aa 777713 3520 04 epp2 -53,ic 000003 = 000000000000 000071 aa 6 00154 2521 00 spri2 pr6|108 000072 aa 6 00100 3521 00 epp2 pr6|64 urfep 000073 aa 6 00156 2521 00 spri2 pr6|110 000074 aa 6 00142 3521 00 epp2 pr6|98 000075 aa 6 00160 2521 00 spri2 pr6|112 000076 aa 6 00102 3521 00 epp2 pr6|66 code 000077 aa 6 00162 2521 00 spri2 pr6|114 000100 aa 777707 3520 04 epp2 -57,ic 000007 = 464000000000 000101 aa 6 00164 2521 00 spri2 pr6|116 000102 aa 6 00174 2521 00 spri2 pr6|124 000103 aa 777703 3520 04 epp2 -61,ic 000006 = 404000000043 000104 aa 6 00166 2521 00 spri2 pr6|118 000105 aa 6 00176 2521 00 spri2 pr6|126 000106 aa 6 00200 2521 00 spri2 pr6|128 000107 aa 777676 3520 04 epp2 -66,ic 000005 = 526000000040 000110 aa 6 00170 2521 00 spri2 pr6|120 000111 aa 777673 3520 04 epp2 -69,ic 000004 = 514000000001 000112 aa 6 00172 2521 00 spri2 pr6|122 000113 aa 6 00144 6211 00 eax1 pr6|100 000114 aa 034000 4310 07 fld 14336,dl 000115 la 4 00076 3521 20 epp2 pr4|62,* ms_table_mgr_$abs_entry 000116 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 74 Pid = pid; 000117 aa 6 00116 2361 20 ldq pr6|78,* 000120 aa 000002 6040 04 tmi 2,ic 000122 000121 aa 777777 3760 07 anq 262143,dl 000122 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000123 aa 6 00120 3735 20 epp7 pr6|80,* 000124 aa 040 140 100 500 mlr (pr),(pr,rl),fill(040) 000125 aa 6 00103 00 0040 desc9a pr6|67,32 pid 000126 aa 7 00000 00 0006 desc9a pr7|0,ql Pid STATEMENT 1 ON LINE 75 goto get_common; 000127 aa 000031 7100 04 tra 25,ic 000160 ENTRY TO get_entry STATEMENT 1 ON LINE 79 get_entry: entry (Pid, Urfep, Code); 000130 at 000003000010 000131 tt 000007000006 000132 ta 000130000000 000133 da 000127300000 000134 aa 000300 6270 00 eax7 192 000135 aa 7 00034 3521 20 epp2 pr7|28,* 000136 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000137 aa 000006000000 000140 aa 000000000000 000141 aa 6 00032 3735 20 epp7 pr6|26,* 000142 aa 7 00002 3715 20 epp5 pr7|2,* 000143 aa 6 00120 6515 00 spri5 pr6|80 000144 aa 6 00042 3535 20 epp3 pr6|34,* 000145 aa 3 00000 3515 20 epp1 pr3|0,* 000146 aa 6 00116 2515 00 spri1 pr6|78 000147 aa 7 00004 3715 20 epp5 pr7|4,* 000150 aa 6 00122 6515 00 spri5 pr6|82 000151 aa 7 00006 3535 20 epp3 pr7|6,* 000152 aa 6 00124 2535 00 spri3 pr6|84 STATEMENT 1 ON LINE 82 user_urfep = Urfep; 000153 aa 6 00122 3735 20 epp7 pr6|82,* Urfep 000154 aa 7 00000 3735 20 epp7 pr7|0,* Urfep 000155 aa 6 00114 6535 00 spri7 pr6|76 user_urfep STATEMENT 1 ON LINE 83 call init; 000156 aa 000400 6700 04 tsp4 256,ic 000556 STATEMENT 1 ON LINE 84 call find; 000157 aa 000335 6700 04 tsp4 221,ic 000514 STATEMENT 1 ON LINE 85 get_common: if user_urfep ^= null () then if urfep = null () then string (user_urfep -> urf_entry) = ""; 000160 aa 6 00114 2371 00 ldaq pr6|76 user_urfep 000161 aa 777631 6770 04 eraq -103,ic 000012 = 077777000043 000001000000 000162 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000163 aa 000017 6000 04 tze 15,ic 000202 000164 aa 6 00100 2371 00 ldaq pr6|64 urfep 000165 aa 777625 6770 04 eraq -107,ic 000012 = 077777000043 000001000000 000166 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000167 aa 000006 6010 04 tnz 6,ic 000175 000170 aa 6 00114 3735 20 epp7 pr6|76,* user_urfep 000171 aa 040 100 100 400 mlr (),(pr),fill(040) 000172 aa 000000 00 0000 desc9a 0,0 000173 aa 7 00000 00 0300 desc9a pr7|0,192 000174 aa 000006 7100 04 tra 6,ic 000202 STATEMENT 1 ON LINE 89 else user_urfep -> urf_entry = urf_entry; 000175 aa 6 00114 3735 20 epp7 pr6|76,* user_urfep 000176 aa 6 00100 3715 20 epp5 pr6|64,* urfep 000177 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000200 aa 5 00000 00 0300 desc9a pr5|0,192 urf_entry 000201 aa 7 00000 00 0300 desc9a pr7|0,192 urf_entry STATEMENT 1 ON LINE 91 return_to_caller: Code = code; 000202 aa 6 00102 2361 00 ldq pr6|66 code 000203 aa 6 00124 7561 20 stq pr6|84,* Code STATEMENT 1 ON LINE 93 return; 000204 aa 0 00631 7101 00 tra pr0|409 return ENTRY TO update_entry STATEMENT 1 ON LINE 97 update_entry: entry (Pid, Old_urfep, Urfep, Code); 000205 at 000004000010 000206 tt 000007000007 000207 ta 000006000000 000210 ta 000205000000 000211 da 000132300000 000212 aa 000300 6270 00 eax7 192 000213 aa 7 00034 3521 20 epp2 pr7|28,* 000214 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000215 aa 000010000000 000216 aa 000000000000 000217 aa 6 00032 3735 20 epp7 pr6|26,* 000220 aa 7 00002 3715 20 epp5 pr7|2,* 000221 aa 6 00120 6515 00 spri5 pr6|80 000222 aa 6 00042 3535 20 epp3 pr6|34,* 000223 aa 3 00000 3515 20 epp1 pr3|0,* 000224 aa 6 00116 2515 00 spri1 pr6|78 000225 aa 7 00006 3715 20 epp5 pr7|6,* 000226 aa 6 00122 6515 00 spri5 pr6|82 000227 aa 7 00010 3535 20 epp3 pr7|8,* 000230 aa 6 00124 2535 00 spri3 pr6|84 STATEMENT 1 ON LINE 100 user_urfep = Urfep; 000231 aa 6 00122 3735 20 epp7 pr6|82,* Urfep 000232 aa 7 00000 3735 20 epp7 pr7|0,* Urfep 000233 aa 6 00114 6535 00 spri7 pr6|76 user_urfep STATEMENT 1 ON LINE 101 call init; 000234 aa 000322 6700 04 tsp4 210,ic 000556 STATEMENT 1 ON LINE 102 call find; 000235 aa 000257 6700 04 tsp4 175,ic 000514 STATEMENT 1 ON LINE 103 if unspec (Old_urfep -> urf_entry) ^= unspec (urf_entry) then do; 000236 aa 6 00032 3735 20 epp7 pr6|26,* 000237 aa 7 00004 3715 20 epp5 pr7|4,* Old_urfep 000240 aa 5 00000 3715 20 epp5 pr5|0,* Old_urfep 000241 aa 6 00100 3535 20 epp3 pr6|64,* urfep 000242 aa 000 100 066 500 cmpb (pr),(pr),fill(0) 000243 aa 5 00000 00 3300 descb pr5|0,1728 000244 aa 3 00000 00 3300 descb pr3|0,1728 000245 aa 000005 6000 04 tze 5,ic 000252 STATEMENT 1 ON LINE 105 code = error_table_$inconsistent; 000246 aa 6 00044 3701 20 epp4 pr6|36,* 000247 la 4 00070 2361 20 ldq pr4|56,* error_table_$inconsistent 000250 aa 6 00102 7561 00 stq pr6|66 code STATEMENT 1 ON LINE 106 goto return_to_caller; 000251 aa 777731 7100 04 tra -39,ic 000202 STATEMENT 1 ON LINE 107 end; STATEMENT 1 ON LINE 108 if user_urfep ^= null () then do; 000252 aa 6 00114 2371 00 ldaq pr6|76 user_urfep 000253 aa 777537 6770 04 eraq -161,ic 000012 = 077777000043 000001000000 000254 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000255 aa 777725 6000 04 tze -43,ic 000202 STATEMENT 1 ON LINE 110 urf_entry = user_urfep -> urf_entry; 000256 aa 6 00114 3515 20 epp1 pr6|76,* user_urfep 000257 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000260 aa 1 00000 00 0300 desc9a pr1|0,192 urf_entry 000261 aa 3 00000 00 0300 desc9a pr3|0,192 urf_entry STATEMENT 1 ON LINE 111 call ms_table_mgr_$update_entry (urf_tag, urfep, code); 000262 aa 6 00044 3701 20 epp4 pr6|36,* 000263 ia 4 00062 3521 00 epp2 pr4|50 urf_tag 000264 aa 6 00146 2521 00 spri2 pr6|102 000265 aa 6 00100 3521 00 epp2 pr6|64 urfep 000266 aa 6 00150 2521 00 spri2 pr6|104 000267 aa 6 00102 3521 00 epp2 pr6|66 code 000270 aa 6 00152 2521 00 spri2 pr6|106 000271 aa 6 00144 6211 00 eax1 pr6|100 000272 aa 014000 4310 07 fld 6144,dl 000273 la 4 00106 3521 20 epp2 pr4|70,* ms_table_mgr_$update_entry 000274 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 112 end; STATEMENT 1 ON LINE 113 goto return_to_caller; 000275 aa 777705 7100 04 tra -59,ic 000202 ENTRY TO add_entry STATEMENT 1 ON LINE 117 add_entry: entry (Pid, Urfep, Code); 000276 ta 000130000000 000277 da 000140300000 000300 aa 000300 6270 00 eax7 192 000301 aa 7 00034 3521 20 epp2 pr7|28,* 000302 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000303 aa 000006000000 000304 aa 000000000000 000305 aa 6 00032 3735 20 epp7 pr6|26,* 000306 aa 7 00002 3715 20 epp5 pr7|2,* 000307 aa 6 00120 6515 00 spri5 pr6|80 000310 aa 6 00042 3535 20 epp3 pr6|34,* 000311 aa 3 00000 3515 20 epp1 pr3|0,* 000312 aa 6 00116 2515 00 spri1 pr6|78 000313 aa 7 00004 3715 20 epp5 pr7|4,* 000314 aa 6 00122 6515 00 spri5 pr6|82 000315 aa 7 00006 3535 20 epp3 pr7|6,* 000316 aa 6 00124 2535 00 spri3 pr6|84 STATEMENT 1 ON LINE 120 user_urfep = Urfep; 000317 aa 6 00122 3735 20 epp7 pr6|82,* Urfep 000320 aa 7 00000 3735 20 epp7 pr7|0,* Urfep 000321 aa 6 00114 6535 00 spri7 pr6|76 user_urfep STATEMENT 1 ON LINE 121 call init; 000322 aa 000234 6700 04 tsp4 156,ic 000556 STATEMENT 1 ON LINE 122 call ms_table_mgr_$new_entry (urf_tag, pid, urfep, code); 000323 aa 6 00044 3701 20 epp4 pr6|36,* 000324 ia 4 00062 3521 00 epp2 pr4|50 urf_tag 000325 aa 6 00146 2521 00 spri2 pr6|102 000326 aa 6 00103 3521 00 epp2 pr6|67 pid 000327 aa 6 00150 2521 00 spri2 pr6|104 000330 aa 6 00100 3521 00 epp2 pr6|64 urfep 000331 aa 6 00152 2521 00 spri2 pr6|106 000332 aa 6 00102 3521 00 epp2 pr6|66 code 000333 aa 6 00154 2521 00 spri2 pr6|108 000334 aa 777453 3520 04 epp2 -213,ic 000007 = 464000000000 000335 aa 6 00156 2521 00 spri2 pr6|110 000336 aa 6 00162 2521 00 spri2 pr6|114 000337 aa 777446 3520 04 epp2 -218,ic 000005 = 526000000040 000340 aa 6 00160 2521 00 spri2 pr6|112 000341 aa 777445 3520 04 epp2 -219,ic 000006 = 404000000043 000342 aa 6 00164 2521 00 spri2 pr6|116 000343 aa 6 00144 6211 00 eax1 pr6|100 000344 aa 020000 4310 07 fld 8192,dl 000345 la 4 00104 3521 20 epp2 pr4|68,* ms_table_mgr_$new_entry 000346 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 123 if code ^= 0 then goto return_to_caller; 000347 aa 6 00102 2361 00 ldq pr6|66 code 000350 aa 777632 6010 04 tnz -102,ic 000202 STATEMENT 1 ON LINE 125 urf_entry = user_urfep -> urf_entry; 000351 aa 6 00100 3735 20 epp7 pr6|64,* urfep 000352 aa 6 00114 3715 20 epp5 pr6|76,* user_urfep 000353 aa 000 100 100 500 mlr (pr),(pr),fill(000) 000354 aa 5 00000 00 0300 desc9a pr5|0,192 urf_entry 000355 aa 7 00000 00 0300 desc9a pr7|0,192 urf_entry STATEMENT 1 ON LINE 126 call ms_table_mgr_$update_entry (urf_tag, urfep, code); 000356 aa 6 00044 3701 20 epp4 pr6|36,* 000357 ia 4 00062 3521 00 epp2 pr4|50 urf_tag 000360 aa 6 00146 2521 00 spri2 pr6|102 000361 aa 6 00100 3521 00 epp2 pr6|64 urfep 000362 aa 6 00150 2521 00 spri2 pr6|104 000363 aa 6 00102 3521 00 epp2 pr6|66 code 000364 aa 6 00152 2521 00 spri2 pr6|106 000365 aa 6 00144 6211 00 eax1 pr6|100 000366 aa 014000 4310 07 fld 6144,dl 000367 la 4 00106 3521 20 epp2 pr4|70,* ms_table_mgr_$update_entry 000370 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 127 goto return_to_caller; 000371 aa 777611 7100 04 tra -119,ic 000202 ENTRY TO remove_entry STATEMENT 1 ON LINE 131 remove_entry: entry (Pid, Code); 000372 at 000002000010 000373 ta 000006000000 000374 ta 000372000000 000375 da 000147300000 000376 aa 000300 6270 00 eax7 192 000377 aa 7 00034 3521 20 epp2 pr7|28,* 000400 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000401 aa 000004000000 000402 aa 000000000000 000403 aa 6 00032 3735 20 epp7 pr6|26,* 000404 aa 7 00002 3715 20 epp5 pr7|2,* 000405 aa 6 00120 6515 00 spri5 pr6|80 000406 aa 6 00042 3535 20 epp3 pr6|34,* 000407 aa 3 00000 3515 20 epp1 pr3|0,* 000410 aa 6 00116 2515 00 spri1 pr6|78 000411 aa 7 00004 3715 20 epp5 pr7|4,* 000412 aa 6 00124 6515 00 spri5 pr6|84 STATEMENT 1 ON LINE 134 pid = Pid; 000413 aa 6 00116 2361 20 ldq pr6|78,* 000414 aa 000002 6040 04 tmi 2,ic 000416 000415 aa 777777 3760 07 anq 262143,dl 000416 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000417 aa 6 00120 3735 20 epp7 pr6|80,* 000420 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 000421 aa 7 00000 00 0006 desc9a pr7|0,ql Pid 000422 aa 6 00103 00 0040 desc9a pr6|67,32 pid STATEMENT 1 ON LINE 135 call init; 000423 aa 000133 6700 04 tsp4 91,ic 000556 STATEMENT 1 ON LINE 136 call ms_table_mgr_$delete_entry (urf_tag, pid, code); 000424 aa 6 00044 3701 20 epp4 pr6|36,* 000425 ia 4 00062 3521 00 epp2 pr4|50 urf_tag 000426 aa 6 00146 2521 00 spri2 pr6|102 000427 aa 6 00103 3521 00 epp2 pr6|67 pid 000430 aa 6 00150 2521 00 spri2 pr6|104 000431 aa 6 00102 3521 00 epp2 pr6|66 code 000432 aa 6 00152 2521 00 spri2 pr6|106 000433 aa 777354 3520 04 epp2 -276,ic 000007 = 464000000000 000434 aa 6 00154 2521 00 spri2 pr6|108 000435 aa 777350 3520 04 epp2 -280,ic 000005 = 526000000040 000436 aa 6 00156 2521 00 spri2 pr6|110 000437 aa 777347 3520 04 epp2 -281,ic 000006 = 404000000043 000440 aa 6 00160 2521 00 spri2 pr6|112 000441 aa 6 00144 6211 00 eax1 pr6|100 000442 aa 014000 4310 07 fld 6144,dl 000443 la 4 00102 3521 20 epp2 pr4|66,* ms_table_mgr_$delete_entry 000444 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 137 goto return_to_caller; 000445 aa 777535 7100 04 tra -163,ic 000202 ENTRY TO test STATEMENT 1 ON LINE 141 test: entry (Urfdir); 000446 at 000001000010 000447 ta 000446000000 000450 da 000154300000 000451 aa 000300 6270 00 eax7 192 000452 aa 7 00034 3521 20 epp2 pr7|28,* 000453 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000454 aa 000002000000 000455 aa 000000000000 000456 aa 6 00042 3735 20 epp7 pr6|34,* 000457 aa 7 00000 2361 20 ldq pr7|0,* 000460 aa 000002 6040 04 tmi 2,ic 000462 000461 aa 777777 3760 07 anq 262143,dl 000462 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000463 aa 6 00202 7561 00 stq pr6|130 STATEMENT 1 ON LINE 144 urfdir = Urfdir; 000464 aa 6 00044 3701 20 epp4 pr6|36,* 000465 aa 6 00032 3735 20 epp7 pr6|26,* 000466 aa 7 00002 3715 20 epp5 pr7|2,* 000467 aa 6 00202 2351 00 lda pr6|130 000470 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 000471 aa 5 00000 00 0005 desc9a pr5|0,al Urfdir 000472 ia 4 00010 00 0250 desc9a pr4|8,168 urfdir STATEMENT 1 ON LINE 145 if urf_tag ^= null () then call ms_table_mgr_$close (urf_tag, code); 000473 ia 4 00062 2371 00 ldaq pr4|50 urf_tag 000474 aa 777316 6770 04 eraq -306,ic 000012 = 077777000043 000001000000 000475 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000476 aa 000011 6000 04 tze 9,ic 000507 000477 ia 4 00062 3521 00 epp2 pr4|50 urf_tag 000500 aa 6 00146 2521 00 spri2 pr6|102 000501 aa 6 00102 3521 00 epp2 pr6|66 code 000502 aa 6 00150 2521 00 spri2 pr6|104 000503 aa 6 00144 6211 00 eax1 pr6|100 000504 aa 010000 4310 07 fld 4096,dl 000505 la 4 00074 3521 20 epp2 pr4|60,* ms_table_mgr_$close 000506 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 147 urf_tag = null (); 000507 aa 777303 2370 04 ldaq -317,ic 000012 = 077777000043 000001000000 000510 aa 6 00044 3701 20 epp4 pr6|36,* 000511 ia 4 00062 7571 00 staq pr4|50 urf_tag STATEMENT 1 ON LINE 148 initialized = "0"b; 000512 ia 4 00066 4501 00 stz pr4|54 initialized STATEMENT 1 ON LINE 149 return; 000513 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 177 end urf_manager_; BEGIN PROCEDURE find ENTRY TO find STATEMENT 1 ON LINE 153 find: procedure; 000514 aa 6 00126 6501 00 spri4 pr6|86 STATEMENT 1 ON LINE 155 call ms_table_mgr_$find_entry (urf_tag, pid, urfep, NO_WRITE, (0), code); 000515 aa 6 00203 4501 00 stz pr6|131 000516 aa 6 00044 3701 20 epp4 pr6|36,* 000517 ia 4 00062 3521 00 epp2 pr4|50 urf_tag 000520 aa 6 00206 2521 00 spri2 pr6|134 000521 aa 6 00103 3521 00 epp2 pr6|67 pid 000522 aa 6 00210 2521 00 spri2 pr6|136 000523 aa 6 00100 3521 00 epp2 pr6|64 urfep 000524 aa 6 00212 2521 00 spri2 pr6|138 000525 aa 777256 3520 04 epp2 -338,ic 000003 = 000000000000 000526 aa 6 00214 2521 00 spri2 pr6|140 000527 aa 6 00203 3521 00 epp2 pr6|131 000530 aa 6 00216 2521 00 spri2 pr6|142 000531 aa 6 00102 3521 00 epp2 pr6|66 code 000532 aa 6 00220 2521 00 spri2 pr6|144 000533 aa 777254 3520 04 epp2 -340,ic 000007 = 464000000000 000534 aa 6 00222 2521 00 spri2 pr6|146 000535 aa 6 00226 2521 00 spri2 pr6|150 000536 aa 777247 3520 04 epp2 -345,ic 000005 = 526000000040 000537 aa 6 00224 2521 00 spri2 pr6|148 000540 aa 777244 3520 04 epp2 -348,ic 000004 = 514000000001 000541 aa 6 00230 2521 00 spri2 pr6|152 000542 aa 777244 3520 04 epp2 -348,ic 000006 = 404000000043 000543 aa 6 00232 2521 00 spri2 pr6|154 000544 aa 6 00234 2521 00 spri2 pr6|156 000545 aa 6 00204 6211 00 eax1 pr6|132 000546 aa 030000 4310 07 fld 12288,dl 000547 la 4 00100 3521 20 epp2 pr4|64,* ms_table_mgr_$find_entry 000550 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 156 if urfep = null () then goto return_to_caller; 000551 aa 6 00100 2371 00 ldaq pr6|64 urfep 000552 aa 777240 6770 04 eraq -352,ic 000012 = 077777000043 000001000000 000553 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000554 aa 777426 6000 04 tze -234,ic 000202 STATEMENT 1 ON LINE 158 end find; 000555 aa 6 00126 6101 00 rtcd pr6|86 END PROCEDURE find BEGIN PROCEDURE init ENTRY TO init STATEMENT 1 ON LINE 162 init: procedure; 000556 aa 6 00134 6501 00 spri4 pr6|92 STATEMENT 1 ON LINE 164 Code, code = 0; 000557 aa 6 00124 4501 20 stz pr6|84,* Code 000560 aa 6 00102 4501 00 stz pr6|66 code STATEMENT 1 ON LINE 165 pid = Pid; 000561 aa 6 00116 2361 20 ldq pr6|78,* 000562 aa 000002 6040 04 tmi 2,ic 000564 000563 aa 777777 3760 07 anq 262143,dl 000564 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000565 aa 6 00120 3735 20 epp7 pr6|80,* 000566 aa 040 100 100 540 mlr (pr,rl),(pr),fill(040) 000567 aa 7 00000 00 0006 desc9a pr7|0,ql Pid 000570 aa 6 00103 00 0040 desc9a pr6|67,32 pid STATEMENT 1 ON LINE 167 if ^initialized then do; 000571 aa 6 00044 3701 20 epp4 pr6|36,* 000572 ia 4 00066 2351 00 lda pr4|54 initialized 000573 aa 000043 6010 04 tnz 35,ic 000636 STATEMENT 1 ON LINE 169 call ms_table_mgr_$open (urfdir, "URF", "URF", urf_tag, urfhp, code); 000574 aa 777205 2350 04 lda -379,ic 000001 = 125122106000 000575 aa 6 00236 7551 00 sta pr6|158 000576 aa 6 00237 7551 00 sta pr6|159 000577 ia 4 00010 3521 00 epp2 pr4|8 urfdir 000600 aa 6 00242 2521 00 spri2 pr6|162 000601 aa 6 00236 3521 00 epp2 pr6|158 000602 aa 6 00244 2521 00 spri2 pr6|164 000603 aa 6 00237 3521 00 epp2 pr6|159 000604 aa 6 00246 2521 00 spri2 pr6|166 000605 ia 4 00062 3521 00 epp2 pr4|50 urf_tag 000606 aa 6 00250 2521 00 spri2 pr6|168 000607 ia 4 00064 3521 00 epp2 pr4|52 urfhp 000610 aa 6 00252 2521 00 spri2 pr6|170 000611 aa 6 00102 3521 00 epp2 pr6|66 code 000612 aa 6 00254 2521 00 spri2 pr6|172 000613 aa 777167 3520 04 epp2 -393,ic 000002 = 526000000250 000614 aa 6 00256 2521 00 spri2 pr6|174 000615 aa 777163 3520 04 epp2 -397,ic 000000 = 524000000003 000616 aa 6 00260 2521 00 spri2 pr6|176 000617 aa 6 00262 2521 00 spri2 pr6|178 000620 aa 777167 3520 04 epp2 -393,ic 000007 = 464000000000 000621 aa 6 00264 2521 00 spri2 pr6|180 000622 aa 6 00266 2521 00 spri2 pr6|182 000623 aa 777163 3520 04 epp2 -397,ic 000006 = 404000000043 000624 aa 6 00270 2521 00 spri2 pr6|184 000625 aa 6 00240 6211 00 eax1 pr6|160 000626 aa 030000 4310 07 fld 12288,dl 000627 la 4 00072 3521 20 epp2 pr4|58,* ms_table_mgr_$open 000630 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 170 if code ^= 0 then goto return_to_caller; 000631 aa 6 00102 2361 00 ldq pr6|66 code 000632 aa 777350 6010 04 tnz -280,ic 000202 STATEMENT 1 ON LINE 173 initialized = "1"b; 000633 aa 400000 2350 03 lda 131072,du 000634 aa 6 00044 3701 20 epp4 pr6|36,* 000635 ia 4 00066 7551 00 sta pr4|54 initialized STATEMENT 1 ON LINE 174 end; STATEMENT 1 ON LINE 175 end init; 000636 aa 6 00134 6101 00 rtcd pr6|92 END PROCEDURE init END PROCEDURE urf_manager_ ----------------------------------------------------------- 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