COMPILATION LISTING OF SEGMENT vrm_get_duplicate_key_count Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/21/84 1432.3 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 vrm_get_duplicate_key_count: get_duplicate_key_count: proc (I_relation_cursor_ptr, 8 I_index_collection_id, I_num_dup_fields, O_count, O_code); 9 10 /* BEGIN_DESCRIPTION 11* 12*The purpose of this procedure is to provide an approximate number of 13*duplicate keys. The method used is to use vfile_status_ to get the number of 14*total number duplicate keys and divide that numbe by the number of indexed 15*attributes in the relation pluse one for the primary key. 16* 17* 18* END_DESCRIPTION 19**/ 20 21 /* HISTORY 22*82-10-06: Roger Lackey : Initially written 23*83-10-21: Roger Lackey : added check for vrm_rel_desc.number_sec_indexes = 0 24* to eliminate posibility of divide by zero. 25**/ 26 /* PARAMETERS */ 27 28 dcl I_relation_cursor_ptr ptr parameter; /* Cursor pointer */ 29 dcl I_index_collection_id bit (36) aligned parameter; /* collection id to get statistics for (ignored ) */ 30 dcl I_num_dup_fields fixed bin parameter; /* NOT USED BY vrm */ 31 dcl O_count fixed bin (35) parameter; /* Returned dup key count */ 32 dcl O_code fixed bin (35) parameter; /* Error code */ 33 34 vrm_cursor_ptr = I_relation_cursor_ptr; 35 O_count = 0; 36 O_code = 0; 37 38 if vrm_cursor.switches.meter_sw then do; 39 40 call cpu_time_and_paging_ (pf_1, t1, pf_dummy); 41 vrm_meter_ptr = vrm_cursor.meter_ptr; 42 vrm_meter.last_call_stats = 0; 43 end; 44 45 vrm_cursor.switches.shared = vrm_cursor.open_info_ptr -> vrm_open_info.switches.shared; 46 47 vrm_rel_desc_ptr = vrm_cursor.vrm_relation_desc_ptr; 48 49 vfsi.info_version = 1; 50 51 call iox_$control (vrm_cursor.iocb_ptr, "file_status", addr (vfsi), code); 52 53 if code = 0 then do; /* Give um the count */ 54 if vfsi.dup_keys = 0 | 55 vrm_rel_desc.number_sec_indexes = 0 then O_count = 0; 56 57 else O_count = divide (vfsi.dup_keys, (vrm_rel_desc.number_sec_indexes), 24, 0); 58 end; 59 60 61 O_code = code; 62 63 if vrm_cursor.switches.meter_sw then do; 64 call cpu_time_and_paging_ (pf_2, t2, pf_dummy); 65 vrm_meter.last_call_stats.last_time_of_stats = clock; 66 67 t3 = t2 - t1; 68 vrm_meter.last_call_stats.vcpu_time = divide (t3, 1000000, 63); 69 vrm_meter.last_call_stats.page_faults = pf_2 - pf_1; 70 vrm_meter.last_call_stats.number_times_used = 1; 71 vrm_meter.total_stats.last_time_of_stats = 0; 72 vrm_meter.total_stats = vrm_meter.total_stats + vrm_meter.last_call_stats; 73 74 end; 75 1 1 /* BEGIN INCLUDE vrm_meter.incl.pl1 */ 1 2 1 3 dcl vrm_meter_ptr pointer; 1 4 1 5 dcl 1 vrm_meter aligned based (vrm_meter_ptr), 1 6 2 cursor_name char (32), /* Name of cursor */ 1 7 2 meter_start_time fixed bin (71), 1 8 2 switches, 1 9 3 metering bit (1) unal, /* On = meter being done */ 1 10 3 mbz bit (35) unal, 1 11 2 cursor_ptr ptr, /* Pointer to vrm_cursor structure */ 1 12 2 last_call_stats like statistics, 1 13 2 total_stats like statistics; 1 14 1 15 dcl 1 statistics based, /* Used in like above */ 1 16 2 last_time_of_stats fixed bin (71), /* Last clock value for stats taken */ 1 17 2 vcpu_time float bin (63), /* The vcpu for this cursor */ 1 18 2 page_faults fixed bin (70), /* Page faults for this cursor */ 1 19 2 number_times_locked fixed bin (70), /* Number of time a lock was set */ 1 20 2 number_times_used fixed bin (70), /* Number of time cursor was used */ 1 21 2 num_times_search_called fixed bin (70), /* Number of time vrm_search was called */ 1 22 2 records_searched fixed bin (70), /* The records searched */ 1 23 2 seek_heads fixed bin (70), /* The seek heads done for key searches */ 1 24 2 special_seek_heads fixed bin (70), /* The seek heads done for key searches */ 1 25 2 keys_read fixed bin (70), /* The keys read by key search */ 1 26 2 keys_compared fixed bin (70), /* The keys compared in key search */ 1 27 2 key_hits fixed bin (70), /* The key hits for key search */ 1 28 2 non_key_compares fixed bin (70), /* The non_key compares done for this cursor */ 1 29 2 non_key_hits fixed bin (70), /* The non_key hits for this cursor */ 1 30 2 upper_limit_found_count fixed bin (70), /* The number of times upper limit was exceeded */ 1 31 2 number_items_returned fixed bin (70), /* Number of tuples or tid returned */ 1 32 2 number_tuples_deleted fixed bin (70), /* Number of tuples deleted */ 1 33 2 number_tuples_modified fixed bin (70), /* Number of tuples modified */ 1 34 2 number_tuples_stored fixed bin (70); /* Number of tuples stored */ 1 35 1 36 /* END INCLUDE vrm_meter.incl.pl1 */ 76 77 2 1 /* BEGIN INCLUDE vrm_rel_desc.incl.pl1 */ 2 2 2 3 /* 83-05-26 Roger Lackey : Added vrm_attr_info.key_head bit for relation_cursors */ 2 4 2 5 dcl 1 vrm_rel_desc based (vrm_rel_desc_ptr), 2 6 2 record_id bit (12) unal, /* Distinguish us from tuples and collection records */ 2 7 2 version char (8), /* Version of this structure */ 2 8 2 file_id bit (7), /* Value of file id from model */ 2 9 2 rel_id bit (12), /* Relation id */ 2 10 2 switches, 2 11 3 MRDS_compatible bit (1) unal, /* For pre-relation_manager_ MRDS */ 2 12 3 stationary_records 2 13 bit (1) unal, /* On = stationary */ 2 14 3 indexed bit (1) unal, /* This relation has attributes with secondary indices */ 2 15 3 pad bit (33) unal, 2 16 2 var_offset fixed bin (35), /* Position of first varying attr */ 2 17 2 maximum_data_length 2 18 fixed bin (35), /* Maximum size of tuple in characters */ 2 19 2 number_primary_key_attrs 2 20 fixed bin, /* Number of attributes which make up the primary key */ 2 21 2 number_sec_indexes fixed bin, /* Number of attributes which have a secondary index */ 2 22 2 last_var_attr_no fixed bin, /* Attr index of last varying attribute */ 2 23 2 number_var_attrs fixed bin, /* Number of varying attributes */ 2 24 2 number_attrs fixed bin, /* Number of attribute in rel */ 2 25 2 attr (vrd_no_of_attrs /* Description of each attribute */ 2 26 refer (vrm_rel_desc.number_attrs)) aligned like vrm_attr_info; 2 27 2 28 dcl 1 vrm_attr_info based (vrm_attr_info_ptr), 2 29 /* Attribute specific info */ 2 30 2 name char (32), /* Name of the attribute */ 2 31 2 descriptor bit (36) aligned, /* domain descriptor */ 2 32 2 varying bit (1) unal, /* ON = This is a varying string */ 2 33 2 key_head bit (1) unal, /* ON = This attr can be a keyhead */ 2 34 2 primary_key_attr bit (1) unal, /* ON = This is a primary key attribute */ 2 35 2 pad bit (15) unal, /* unused */ 2 36 2 index_collextion_ix fixed bin (17) unal, /* Index into vrm_open_info.index_collection array if key_head is on */ 2 37 2 bit_length fixed bin (35), /* Maximum bit length of tuple */ 2 38 2 bit_offset fixed bin (35); /* Offset in tuple if fixed, index to offset in tuple if varying */ 2 39 2 40 2 41 dcl vrm_rel_desc_ptr pointer; 2 42 dcl vrd_no_of_attrs fixed bin; 2 43 dcl VRM_REL_DESC_RECORD_ID bit (12) unal int static options (constant) init ("100000000000"b); 2 44 dcl VRM_REL_DESC_VERSION_1 char (8) int static options (constant) init (" 1"); 2 45 dcl vrm_attr_info_ptr pointer; 2 46 dcl VRM_REL_DESC_KEY char (256) varying int static options (constant) init ("@relation_description"); 2 47 2 48 /* END INCLUDE vrm_rel_desc.incl.pl1 */ 78 79 3 1 /* BEGIN INCLUDE vrm_cursor.incl.pl1 */ 3 2 3 3 /* 83-05-26 Roger Lackey : Modifyed for relation cursors */ 3 4 3 5 dcl vrm_cursor_ptr pointer; /* Pointer to this structure */ 3 6 3 7 dcl 1 vrm_cursor aligned based (vrm_cursor_ptr), /* vfile relation manager cursor */ 3 8 2 opening_id bit (36) aligned, /* ID of opening associated with this cursor */ 3 9 2 debug_sw unal, /* Undefined MBZ */ 3 10 3 trace_open bit (1) unal, /* Show opening of iocb cursor creation time */ 3 11 3 pad bit (35) unal, 3 12 2 switches, 3 13 3 shared bit (1) unal, /* Other processes can use this relation */ 3 14 3 meter_sw bit (1) unal, /* On = Keep meters for this cursor */ 3 15 3 pad bit (7) unal, /* Unsed */ 3 16 2 opening_mode fixed bin, /* Opening mode for this cursor (8 = KSQR 10 = KSQU) */ 3 17 2 open_info_ptr pointer, /* Pointer to parent opening info structure */ 3 18 2 vrm_relation_desc_ptr pointer, /* Pointer to parent rel desc */ 3 19 2 iocb_ptr pointer, /* Pointer to attach iocb */ 3 20 2 secondary_iocb_ptr ptr, /* Second iocb_ptr used by vrmu_search */ 3 21 2 search_list_ptr ptr, /* Pointer to search_list */ 3 22 2 search_keys_ptr ptr, /* Pointer to search_keys array */ 3 23 2 meter_ptr pointer, /* Pointer metering str if metering is on or null */ 3 24 2 vrm_iocb_list_block_ptr pointer, /* Pointer to vrm_iocb_list_block that contains this cursors iocb */ 3 25 2 vrm_iocb_list_block_iocbs_ix fixed bin; /* Index into list_block.iocbs for location of iocb */ 3 26 3 27 3 28 /* END INCLUDE vrm_cursor.incl.pl1 */ 80 81 4 1 /* BEGIN INCLUDE vrm_open_info.incl.pl1 */ 4 2 4 3 /* R. Harvey 82-11-02 4 4* 82-09-82 Roger Lackey: added iocb_list_ptr */ 4 5 4 6 dcl 1 vrm_open_info aligned based (vrm_open_info_ptr), /* Vfile relation description */ 4 7 2 version char (8), /* Version number of this structure */ 4 8 2 opening_id bit (36) aligned, /* Opening id associated with this desc */ 4 9 2 file_uid bit (36) aligned, /* Unique id of msf dir */ 4 10 2 number_of_openings fixed bin, /* Number of separate calls to vrm$open */ 4 11 2 switches, 4 12 3 shared bit (1) unal, /* Open relation in shared mode */ 4 13 3 pad bit (35) unal init ("0"b), /* Unused must be zero */ 4 14 2 database_dir_path char (168) varying, /* Absolute path of database */ 4 15 2 relation_name char (30) varying, /* Name of relation */ 4 16 2 relation_model_ptr pointer, /* Pointer to the relation_model in the relation itself or a temp seg */ 4 17 2 com_ptr pointer, /* Temp seg for cursors and scratch space */ 4 18 2 iocb_list_ptr pointer, /* Pointer to first vrm_iocb_list_block */ 4 19 2 primary_key_info_ptr pointer, /* Special case collection info ptr */ 4 20 2 number_of_index_collections fixed bin, /* Count of index collections (include primary key) */ 4 21 2 index_collection (voi_no_of_index_collections 4 22 refer (vrm_open_info.number_of_index_collections)), 4 23 3 id bit (36), 4 24 3 info_ptr ptr unal; /* Points to more detailed info */ 4 25 4 26 4 27 dcl VRM_OPEN_INFO_VERSION_1 char (8) int static options (constant) init (" 1"); 4 28 dcl vrm_open_info_ptr ptr; 4 29 dcl voi_no_of_index_collections fixed bin; 4 30 4 31 /* END INCLUDE vrm_open_info.incl.pl1 */ 82 83 5 1 dcl 1 uns_info based (addr (info)), /* info structure for unstructured files */ 5 2 2 info_version fixed, /* (Input) must =1--only one version 5 3* currently supported */ 5 4 2 type fixed, /* =1 */ 5 5 2 end_pos fixed (34), /* length (bytes) not including header */ 5 6 2 flags aligned, 5 7 3 pad1 bit (2) unal, /* used for lock_status in other files */ 5 8 3 header_present bit (1) unal, /* on if file code is set */ 5 9 3 pad2 bit (33) unal, 5 10 2 header_id fixed (35); /* meaning is user defined */ 5 11 dcl 1 seq_info based (addr (info)), /* info structure for sequential files */ 5 12 2 info_version fixed, 5 13 2 type fixed, /* =2 */ 5 14 2 end_pos fixed (34), /* record count */ 5 15 2 flags aligned, 5 16 3 lock_status bit (2) unal, /* 0,1,2, or 3 to indicate not locked, 5 17* locked by (other,this,dead) process */ 5 18 3 pad bit (34) unal, 5 19 2 version fixed, /* end_pos valid only in latest version */ 5 20 2 action fixed; /* indicates if adjustment or rollback is needed */ 5 21 dcl 1 blk_info based (addr (info)), /* info structure for blocked files */ 5 22 2 info_version fixed, 5 23 2 type fixed, /* =3 */ 5 24 2 end_pos fixed (34), /* record count */ 5 25 2 flags aligned, 5 26 3 lock_status bit (2) unal, /* same as seq_info.= */ 5 27 3 pad bit (34) unal, 5 28 2 version fixed, /* only one currently supported */ 5 29 2 action fixed, /* non-zero if truncation in progress, else =0 */ 5 30 2 max_rec_len fixed (21), /* bytes--determines characteristiWc block size */ 5 31 2 pad fixed, /* not used at this time */ 5 32 2 time_last_modified fixed (71); /* time stamp for synchronization */ 5 33 dcl 1 indx_info based (addr (info)), /* info structure for indexed files */ 5 34 2 info_version fixed, 5 35 2 type fixed, /* =4 */ 5 36 2 records fixed (34), /* record count */ 5 37 2 flags aligned, 5 38 3 lock_status bit (2) unal, /* same as seq_info.= */ 5 39 3 pad bit (34) unal, 5 40 2 version_info aligned, 5 41 3 file_version fixed (17) unal, /* headers differ */ 5 42 3 program_version fixed (17) unal, /* may indicate bugs */ 5 43 2 action fixed, /* non-zero code indicates update in progress */ 5 44 2 non_null_recs fixed (34), /* count of allocated recs */ 5 45 2 record_bytes fixed (34), /* total record length */ 5 46 2 free_blocks fixed, /* available record blocks */ 5 47 2 index_height fixed, /* height of index tree (0 if empty) */ 5 48 2 nodes fixed, /* nodes being used in the index */ 5 49 2 key_bytes fixed (34), /* total length of keys */ 5 50 2 change_count fixed (35), /* bumped on each file modification */ 5 51 2 num_keys fixed (34), /* number of index entries */ 5 52 2 dup_keys fixed (34), /* 0 if all keys are distinct, else 1 for each dup */ 5 53 2 dup_key_bytes fixed (34), /* total bytes of duplicate keys */ 5 54 2 word (1) fixed; /* reserved for future use */ 5 55 dcl 1 vbl_info based (addr (info)), /* info structure for variable files */ 5 56 2 info_version fixed, 5 57 2 type fixed, /* =5 */ 5 58 2 end_pos fixed (34), /* logical end of file--not necessarily allocation count */ 5 59 2 flags aligned, 5 60 3 lock_status bit (2) unal, /* same as seq_info.= */ 5 61 3 pad bit (34) unal, 5 62 2 version fixed, /* only one currently supported */ 5 63 2 action fixed, /* same as in indexed files */ 5 64 2 first_nz fixed (34), /* position (numeric key) for first allocated record */ 5 65 2 last_nz fixed (34), /* last allocated record position */ 5 66 2 change_count fixed (35); /* used for synchronization */ 5 67 dcl vfs_version_1 static internal fixed init (1); 5 68 /* should be used in 5 69* assignments to info_version */ 84 85 86 dcl 1 vfsi like indx_info; 87 88 dcl addr builtin; 89 dcl clock builtin; 90 dcl code fixed bin (35); 91 dcl cpu_time_and_paging_ entry (fixed bin, fixed bin (71), fixed bin); 92 dcl divide builtin; 93 dcl info fixed bin; /* Dummy variable for vfsi like */ 94 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 95 dcl pf_1 fixed bin; 96 dcl pf_2 fixed bin; 97 dcl pf_dummy fixed bin; 98 dcl t1 fixed bin (71); 99 dcl t2 fixed bin (71); 100 dcl t3 float bin (63); 101 102 103 104 end vrm_get_duplicate_key_count; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/21/84 0933.8 vrm_get_duplicate_key_count.pl1 >special_ldd>online>mrds_install>vrm_get_duplicate_key_count.pl1 76 1 10/14/83 1609.1 vrm_meter.incl.pl1 >ldd>include>vrm_meter.incl.pl1 78 2 10/14/83 1609.1 vrm_rel_desc.incl.pl1 >ldd>include>vrm_rel_desc.incl.pl1 80 3 10/14/83 1609.1 vrm_cursor.incl.pl1 >ldd>include>vrm_cursor.incl.pl1 82 4 10/14/83 1609.1 vrm_open_info.incl.pl1 >ldd>include>vrm_open_info.incl.pl1 84 5 07/19/79 1547.0 vfs_info.incl.pl1 >ldd>include>vfs_info.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. I_index_collection_id parameter bit(36) dcl 29 ref 7 7 I_num_dup_fields parameter fixed bin(17,0) dcl 30 ref 7 7 I_relation_cursor_ptr parameter pointer dcl 28 ref 7 7 34 O_code parameter fixed bin(35,0) dcl 32 set ref 7 7 36* 61* O_count parameter fixed bin(35,0) dcl 31 set ref 7 7 35* 54* 57* addr builtin function dcl 88 ref 51 51 clock builtin function dcl 89 ref 65 code 000127 automatic fixed bin(35,0) dcl 90 set ref 51* 53 61 cpu_time_and_paging_ 000010 constant entry external dcl 91 ref 40 64 divide builtin function dcl 92 ref 57 68 dup_keys 16 000106 automatic fixed bin(34,0) level 2 dcl 86 set ref 54 57 indx_info based structure level 1 unaligned dcl 5-33 info_version 000106 automatic fixed bin(17,0) level 2 dcl 86 set ref 49* iocb_ptr 10 based pointer level 2 dcl 3-7 set ref 51* iox_$control 000012 constant entry external dcl 94 ref 51 last_call_stats 16 based structure level 2 dcl 1-5 set ref 42* 72 last_time_of_stats 64 based fixed bin(71,0) level 3 in structure "vrm_meter" dcl 1-5 in procedure "get_duplicate_key_count" set ref 71* last_time_of_stats 16 based fixed bin(71,0) level 3 in structure "vrm_meter" dcl 1-5 in procedure "get_duplicate_key_count" set ref 65* meter_ptr 20 based pointer level 2 dcl 3-7 ref 41 meter_sw 2(01) based bit(1) level 3 packed unaligned dcl 3-7 ref 38 63 number_sec_indexes 10 based fixed bin(17,0) level 2 dcl 2-5 ref 54 57 number_times_used 26 based fixed bin(70,0) level 3 dcl 1-5 set ref 70* open_info_ptr 4 based pointer level 2 dcl 3-7 ref 45 page_faults 22 based fixed bin(70,0) level 3 dcl 1-5 set ref 69* pf_1 000130 automatic fixed bin(17,0) dcl 95 set ref 40* 69 pf_2 000131 automatic fixed bin(17,0) dcl 96 set ref 64* 69 pf_dummy 000132 automatic fixed bin(17,0) dcl 97 set ref 40* 64* shared 5 based bit(1) level 3 in structure "vrm_open_info" packed unaligned dcl 4-6 in procedure "get_duplicate_key_count" ref 45 shared 2 based bit(1) level 3 in structure "vrm_cursor" packed unaligned dcl 3-7 in procedure "get_duplicate_key_count" set ref 45* statistics based structure level 1 unaligned dcl 1-15 switches 5 based structure level 2 in structure "vrm_open_info" dcl 4-6 in procedure "get_duplicate_key_count" switches 2 based structure level 2 in structure "vrm_cursor" dcl 3-7 in procedure "get_duplicate_key_count" t1 000134 automatic fixed bin(71,0) dcl 98 set ref 40* 67 t2 000136 automatic fixed bin(71,0) dcl 99 set ref 64* 67 t3 000140 automatic float bin(63) dcl 100 set ref 67* 68 total_stats 64 based structure level 2 dcl 1-5 set ref 72* 72 vcpu_time 20 based float bin(63) level 3 dcl 1-5 set ref 68* vfsi 000106 automatic structure level 1 unaligned dcl 86 set ref 51 51 vrm_attr_info based structure level 1 unaligned dcl 2-28 vrm_cursor based structure level 1 dcl 3-7 vrm_cursor_ptr 000104 automatic pointer dcl 3-5 set ref 34* 38 41 45 45 47 51 63 vrm_meter based structure level 1 dcl 1-5 vrm_meter_ptr 000100 automatic pointer dcl 1-3 set ref 41* 42 65 68 69 70 71 72 72 72 vrm_open_info based structure level 1 dcl 4-6 vrm_rel_desc based structure level 1 unaligned dcl 2-5 vrm_rel_desc_ptr 000102 automatic pointer dcl 2-41 set ref 47* 54 57 vrm_relation_desc_ptr 6 based pointer level 2 dcl 3-7 ref 47 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. VRM_OPEN_INFO_VERSION_1 internal static char(8) initial unaligned dcl 4-27 VRM_REL_DESC_KEY internal static varying char(256) initial dcl 2-46 VRM_REL_DESC_RECORD_ID internal static bit(12) initial unaligned dcl 2-43 VRM_REL_DESC_VERSION_1 internal static char(8) initial unaligned dcl 2-44 blk_info based structure level 1 unaligned dcl 5-21 info automatic fixed bin(17,0) dcl 93 seq_info based structure level 1 unaligned dcl 5-11 uns_info based structure level 1 unaligned dcl 5-1 vbl_info based structure level 1 unaligned dcl 5-55 vfs_version_1 internal static fixed bin(17,0) initial dcl 5-67 voi_no_of_index_collections automatic fixed bin(17,0) dcl 4-29 vrd_no_of_attrs automatic fixed bin(17,0) dcl 2-42 vrm_attr_info_ptr automatic pointer dcl 2-45 vrm_open_info_ptr automatic pointer dcl 4-28 NAMES DECLARED BY EXPLICIT CONTEXT. get_duplicate_key_count 000024 constant entry external dcl 7 vrm_get_duplicate_key_count 000034 constant entry external dcl 7 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 420 434 337 430 Length 714 337 14 243 61 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME get_duplicate_key_count 127 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_duplicate_key_count 000100 vrm_meter_ptr get_duplicate_key_count 000102 vrm_rel_desc_ptr get_duplicate_key_count 000104 vrm_cursor_ptr get_duplicate_key_count 000106 vfsi get_duplicate_key_count 000127 code get_duplicate_key_count 000130 pf_1 get_duplicate_key_count 000131 pf_2 get_duplicate_key_count 000132 pf_dummy get_duplicate_key_count 000134 t1 get_duplicate_key_count 000136 t2 get_duplicate_key_count 000140 t3 get_duplicate_key_count THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cpu_time_and_paging_ iox_$control NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 000017 34 000041 35 000045 36 000046 38 000047 40 000052 41 000064 42 000067 45 000115 47 000123 49 000125 51 000127 53 000161 54 000163 57 000173 61 000200 63 000203 64 000207 65 000222 67 000225 68 000232 69 000235 70 000242 71 000244 72 000246 104 000336 ----------------------------------------------------------- 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