COMPILATION LISTING OF SEGMENT im_compare_subset Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1515.9 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* format: style2,ind3 */ 7 im_compare_subset: 8 proc (p_subset_specification_ptr, p_simple_typed_vector_ptr, p_work_area_ptr, p_satisfies_specification, 9 p_pseudo_field_value, p_code); 10 11 /* DESCRIPTION: 12* 13* This subroutine checks for a keys presence (or lack thereof) in one 14* or more subset indices. 15**/ 16 17 /* HISTORY: 18* 19*Written by Lindsey L. Spratt, 08/23/82. 20*Modified: 21*10/12/82 by Lindsey Spratt: Changed to use version 2 of the 22* search_specification structure. 23*12/13/82 by Lindsey Spratt: Upgraded to the version 3 specification. 24* Corrected the calling sequence to position_cursor. 25*05/23/83 by Matthew Pierret: Upgraded to version 4 specification. 26*06/08/84 by Lee Baldwin: Fixed to call dm_error_$key_not_found instead 27* of dm_error_$no_key which didn't exist. 28**/ 29 30 /* START OF DECLARATIONS */ 31 /* Parameter */ 32 33 dcl p_subset_specification_ptr 34 ptr parameter; 35 dcl p_simple_typed_vector_ptr 36 ptr; 37 dcl p_work_area_ptr ptr; 38 dcl p_satisfies_specification 39 bit (1) aligned parameter; 40 dcl p_pseudo_field_value bit (*) parameter; 41 dcl p_code fixed bin (35) parameter; 42 43 /* Automatic */ 44 45 dcl subset_idx fixed bin; 46 dcl search_idx fixed bin; 47 48 /* Based */ 49 50 dcl work_area based (p_work_area_ptr) area; 51 52 /* Builtin */ 53 54 dcl (null, max, hbound) builtin; 55 56 /* Condition */ 57 58 dcl cleanup condition; 59 60 /* Constant */ 61 /* Entry */ 62 /* External */ 63 64 dcl dm_error_$key_not_found fixed bin (35) ext; 65 66 /* END OF DECLARATIONS */ 67 68 subset_specification_ptr = p_subset_specification_ptr; 69 simple_typed_vector_ptr = p_simple_typed_vector_ptr; 70 71 72 ss_maximum_number_of_constraints = 0; 73 74 do subset_idx = 1 to hbound (subset_specification.subset, 1); 75 ss_maximum_number_of_constraints = 76 max (ss_maximum_number_of_constraints, 77 subset_specification.subset (subset_idx).id_list_ptr -> id_list.number_of_ids); 78 end; 79 search_specification_ptr = null; 80 ss_number_of_and_groups = 1; 81 on cleanup call finish; 82 alloc search_specification in (work_area); 83 search_specification.version = SPECIFICATION_VERSION_4; 84 search_specification.head.type = ABSOLUTE_SEARCH_SPECIFICATION_TYPE; 85 search_specification.and_group (1).constraint (*).operator_code = EQUAL_OPERATOR_CODE; 86 search_specification.and_group (1).constraint (*).value_field_id = -1; 87 search_specification.and_group (1).number_of_constraints = ss_maximum_number_of_constraints; 88 89 do search_idx = 1 to ss_maximum_number_of_constraints; 90 search_specification.and_group (1).constraint (search_idx).field_id = search_idx; 91 end; 92 93 p_satisfies_specification = "1"b; 94 do subset_idx = 1 to hbound (subset_specification.subset, 1) while (p_satisfies_specification & p_code = 0); 95 id_list_ptr = subset_specification.subset (subset_idx).id_list_ptr; 96 do search_idx = 1 to hbound (id_list.id, 1); 97 search_specification.and_group (1).constraint (search_idx).value_ptr = 98 simple_typed_vector.dimension (id_list.id (search_idx)).value_ptr; 99 end; 100 call 101 index_manager_$position_cursor (search_specification_ptr, p_work_area_ptr, 102 subset_specification.subset (subset_idx).cursor_ptr, p_code); 103 if p_code = 0 104 then p_satisfies_specification = subset_specification.subset (subset_idx).is_member; 105 else if p_code = dm_error_$key_not_found 106 then 107 do; 108 p_satisfies_specification = ^subset_specification.subset (subset_idx).is_member; 109 p_code = 0; 110 end; 111 112 end; 113 call finish; 114 return; 115 116 finish: 117 proc; 118 if search_specification_ptr ^= null 119 then free search_specification in (work_area); 120 end finish; 121 1 1 /* BEGIN INCLUDE FILE - dm_subset_specification.info.pl1 */ 1 2 1 3 /* DESCRIPTION: 1 4* 1 5* The subset_specification structure is for selecting items based on 1 6* their membership in subset indexes. The mapping between the fields of 1 7* the keys of the subset index and the fields of the item is indicated by 1 8* an id_list (identified by subset_specification.subset.id_list_ptr). An 1 9* item is a member of a subset if there is a key in the subset index which 1 10* is identical in corresponding fields (as specified by the id_list) in the 1 11* item. 1 12**/ 1 13 1 14 /* HISTORY: 1 15* 1 16*Written by Lindsey Spratt, 08/23/82. 1 17*Modified: 1 18*10/02/84 by Lindsey L. Spratt: Added DESCRIPTION section. Grouped pad and 1 19* is_member fields together into a flags substructure. 1 20**/ 1 21 1 22 /* format: style2,ind3 */ 1 23 dcl 1 subset_specification based (subset_specification_ptr), 1 24 2 version char (8), 1 25 2 number_of_subsets fixed bin, 1 26 2 subset (subs_number_of_subsets refer (subset_specification.number_of_subsets)), 1 27 3 id_list_ptr ptr, 1 28 3 flags, 1 29 4 is_member bit (1) unaligned, 1 30 4 pad bit (35) unaligned, 1 31 3 cursor_ptr ptr; 1 32 1 33 dcl subset_specification_ptr 1 34 ptr; 1 35 dcl SUBSET_SPECIFICATION_VERSION_1 1 36 init ("SUBSP 01") char (8) internal static options (constant); 1 37 1 38 /* END INCLUDE FILE - subset_specification.incl.pl1 */ 122 123 2 1 /* BEGIN INCLUDE FILE - dm_operator_constants.incl.pl1 */ 2 2 2 3 /* Written by Lindsey Spratt, 07/07/82 2 4*Modified: 2 5*10/07/82 by Lindsey Spratt: Added the GREATER, LESS, GREATER_OR_EQUAL, 2 6* LESS_OR_EQUAL and REGULAR_EXPRESSION operator codes. Also, added 2 7* bit(1) arrays for determining if a given operator code "uses" a 2 8* given operator. For example, USES_LESS_OPERATOR(x) = "1"b only if 2 9* x = LESS_OPERATOR_CODE or x = LESS_OR_EQUAL_OPERATOR_CODE. 2 10**/ 2 11 2 12 /* format: style2,ind3 */ 2 13 dcl ( 2 14 EQUAL_OPERATOR_CODE init (1), 2 15 GREATER_OPERATOR_CODE init (2), 2 16 LESS_OPERATOR_CODE init (7), 2 17 REGULAR_EXPRESSION_OPERATOR_CODE 2 18 init (8), 2 19 NOT_EQUAL_OPERATOR_CODE 2 20 init (5), 2 21 GREATER_OR_EQUAL_OPERATOR_CODE 2 22 init (3), 2 23 LESS_OR_EQUAL_OPERATOR_CODE 2 24 init (6), 2 25 EQUAL_IDX init (18), 2 26 GREATER_IDX init (17), 2 27 NOT_IDX init (16), 2 28 REGULAR_EXPRESSION_IDX init (15) 2 29 ) fixed bin internal static options (constant); 2 30 2 31 dcl ( 2 32 USES_LESS_OPERATOR init ("0"b, (5) (1)"0"b, "1"b /* <= */, "1"b /* < */, (24) (1)"0"b), 2 33 USES_GREATER_OPERATOR init ("0"b, "0"b, "1"b /* > */, "1"b /* >= */, (28) (1)"0"b), 2 34 USES_EQUAL_OPERATOR init ("0"b, "1"b /* = */, "0"b, "1"b /* >= */, "0"b, "0"b, "1"b /* <= */, 2 35 (25) (1)"0"b), 2 36 USES_REGULAR_EXPRESSION_OPERATOR 2 37 init ("0"b, (7) (1)"0"b, "1"b /* reg exp */, (3) (1)"0"b, "1"b /* not reg exp */, 2 38 (19) (1)"0"b) 2 39 ) dimension (0:31) bit (1) unaligned internal static options (constant); 2 40 2 41 /* END INCLUDE FILE - dm_operator_constants.incl.pl1 */ 124 125 3 1 /* BEGIN INCLUDE FILE - dm_idxmgr_entry_dcls.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* 3 5* This include file has all of the declarations for the index_manager_ 3 6* external interface. It is useful for programs which are making extensive 3 7* use of the index_manager_ to include this include file rather than 3 8* individually declaring each of the entries. 3 9* 3 10**/ 3 11 3 12 /* HISTORY: 3 13* 3 14*Written by Lindsey Spratt, 06/25/82. 3 15*Modified: 3 16*07/28/82 by Lindsey Spratt: Extended the create_collection entry calling 3 17* sequence to include the number_of_duplication_fields. 3 18*08/10/82 by Matthew Pierret: Changed the create_collection entry calling 3 19* sequence to return a "bit (36) aligned" collection id instead of 3 20* "fixed bin (17)". Changed create_cursor calling sequence likewise. 3 21*08/19/82 by Lindsey Spratt: Renamed create_collection to create_index. Added 3 22* the put_key_array entry. Added the id_list_ptr to the get_key 3 23* entry. Added the create_subset_index entry. 3 24*08/23/82 by Lindsey Spratt: Added the position_cursor entry. 3 25*09/27/82 by Lindsey Spratt: Added the get_count and get_duplicate_key_count 3 26* entries. 3 27*11/09/82 by Lindsey Spratt: Added ptr to get_key for the interval_list. 3 28* Changed get_duplicate_key_count to get_key_count_array. 3 29*05/31/83 by Matthew Pierret: Added $destroy_index and $destroy_cursor. 3 30*05/02/84 by Lee Baldwin: Renamed $get_count to $get_key_count_by_spec. 3 31*10/23/84 by Lindsey L. Spratt: Addressed auditing comments - alphabetized 3 32* entries, fixed $create_index to use "fixed bin (17)" instead of 3 33* just "fixed bin", added a description section. 3 34**/ 3 35 3 36 /* format: style2,ind3 */ 3 37 3 38 dcl index_manager_$create_cursor entry (bit (36) aligned, bit (36) aligned, ptr, ptr, fixed bin (35)); 3 39 dcl index_manager_$create_index entry (bit (36) aligned, ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 3 40 dcl index_manager_$create_subset_index entry (ptr, bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 3 41 dcl index_manager_$delete_key entry (ptr, ptr, ptr, fixed bin (35), fixed bin (35)); 3 42 dcl index_manager_$destroy_cursor entry (ptr, fixed bin (35)); 3 43 dcl index_manager_$destroy_index entry (bit (36) aligned, bit (36) aligned, fixed bin (35)); 3 44 dcl index_manager_$get_key entry (ptr, ptr, ptr, ptr, ptr, ptr, fixed bin (35)); 3 45 dcl index_manager_$get_key_count_array entry (ptr, ptr, ptr, fixed bin (35)); 3 46 dcl index_manager_$get_key_count_by_spec entry (ptr, ptr, fixed bin (35), fixed bin (35)); 3 47 dcl index_manager_$position_cursor entry (ptr, ptr, ptr, fixed bin (35)); 3 48 dcl index_manager_$put_key entry (ptr, ptr, fixed bin (35)); 3 49 dcl index_manager_$put_key_array entry (ptr, ptr, fixed bin (35)); 3 50 3 51 /* END INCLUDE FILE - dm_idxmgr_entry_dcls.incl.pl1 */ 126 127 4 1 /* BEGIN INCLUDE FILE - dm_id_list.incl.pl1 */ 4 2 4 3 /* DESCRIPTION 4 4* The id_list structure is used to identify attributes, fields and 4 5* dimensions by various modules of the Data Management System. 4 6**/ 4 7 4 8 /* HISTORY: 4 9*Written by Matthew Pierret, '82. 4 10*Modified: 4 11*08/17/83 by Matthew Pierret: Made version constant 'internal static options 4 12* (constant)' and to initialize automatic variables. 4 13**/ 4 14 4 15 /* format: style2,ind3 */ 4 16 dcl 1 id_list aligned based (id_list_ptr), 4 17 2 version fixed bin (35), 4 18 2 number_of_ids fixed bin (17), 4 19 2 id (il_number_of_ids refer (id_list.number_of_ids)) fixed bin (17); 4 20 4 21 dcl id_list_ptr ptr init (null); 4 22 dcl il_number_of_ids fixed bin (17) init (-1); 4 23 dcl ID_LIST_VERSION_1 fixed bin (17) init (1) internal static options (constant); 4 24 4 25 /* END INCLUDE FILE - dm_id_list.incl.pl1 */ 128 129 5 1 /* *********************************************************** 5 2* * * 5 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 5 4* * * 5 5* *********************************************************** */ 5 6 /* BEGIN INCLUDE FILE - vu_typed_vector.incl.pl1 */ 5 7 5 8 /* Written by Lindsey Spratt, 04/02/82. 5 9*Modified: 5 10*09/01/82 by Lindsey Spratt: Changed value_ptr in simple_typed_vector to be 5 11* unaligned. Changed the type number of the simple_typed_vector to 5 12* "3" from "1". The OLD_SIMPLE_TYPED_VECTOR_TYPE is now an invalid 5 13* type. 5 14**/ 5 15 5 16 /* format: style2,ind3 */ 5 17 dcl 1 simple_typed_vector based (simple_typed_vector_ptr), 5 18 2 type fixed bin (17) unal, 5 19 2 number_of_dimensions 5 20 fixed bin (17) unal, 5 21 2 dimension (stv_number_of_dimensions refer (simple_typed_vector.number_of_dimensions)), 5 22 3 value_ptr ptr unaligned; 5 23 5 24 dcl 1 general_typed_vector based (general_typed_vector_ptr), 5 25 2 type fixed bin (17) unal, 5 26 2 number_of_dimensions 5 27 fixed bin (17) unal, 5 28 2 dimension (gtv_number_of_dimensions refer (general_typed_vector.number_of_dimensions)), 5 29 3 identifier fixed bin (17) unal, 5 30 3 pad bit (18) unal, 5 31 3 value_ptr ptr unal; 5 32 5 33 dcl simple_typed_vector_ptr 5 34 ptr; 5 35 dcl stv_number_of_dimensions 5 36 fixed bin (17); 5 37 5 38 dcl general_typed_vector_ptr 5 39 ptr; 5 40 dcl gtv_number_of_dimensions 5 41 fixed bin (17); 5 42 5 43 dcl ( 5 44 OLD_SIMPLE_TYPED_VECTOR_TYPE 5 45 init (1), /* value_ptr was aligned. */ 5 46 GENERAL_TYPED_VECTOR_TYPE 5 47 init (2), 5 48 SIMPLE_TYPED_VECTOR_TYPE 5 49 init (3) 5 50 ) fixed bin (17) internal static options (constant); 5 51 5 52 /* END INCLUDE FILE - vu_typed_vector.incl.pl1 */ 130 131 6 1 /* BEGIN INCLUDE FILE dm_specification_head.incl.pl1 */ 6 2 6 3 /* HISTORY: 6 4*Written by Matthew Pierret, 05/11/83. (Extracted from dm_specification.incl.pl1) 6 5*Modified: 6 6*05/20/83 by Matthew Pierret: Changed to use version 4. 6 7**/ 6 8 6 9 /* format: style2,ind3 */ 6 10 dcl 1 specification_head based (specification_head_ptr), 6 11 2 version fixed bin (35), 6 12 2 type fixed bin (17) unal, 6 13 2 pad bit (18) unal, 6 14 2 subset_specification_ptr 6 15 ptr; 6 16 6 17 6 18 dcl specification_head_ptr ptr; 6 19 dcl SPECIFICATION_VERSION_4 6 20 init (4) fixed bin (35) internal static options (constant); 6 21 6 22 dcl ( 6 23 SEARCH_SPECIFICATION_TYPE 6 24 init (1), 6 25 ABSOLUTE_SEARCH_SPECIFICATION_TYPE 6 26 init (1), 6 27 NUMERIC_SPECIFICATION_TYPE 6 28 init (2), 6 29 ABSOLUTE_NUMERIC_SPECIFICATION_TYPE 6 30 init (2), 6 31 RELATIVE_SEARCH_SPECIFICATION_TYPE 6 32 init (3), 6 33 RELATIVE_NUMERIC_SPECIFICATION_TYPE 6 34 init (4), 6 35 ABSOLUTE_RELATION_SEARCH_SPECIFICATION_TYPE 6 36 init (5), 6 37 RELATIVE_RELATION_SEARCH_SPECIFICATION_TYPE 6 38 init (6), 6 39 ABSOLUTE_RELATION_NUMERIC_SPECIFICATION_TYPE 6 40 init (7), 6 41 RELATIVE_RELATION_NUMERIC_SPECIFICATION_TYPE 6 42 init (8) 6 43 ) fixed bin (17) internal static options (constant); 6 44 6 45 6 46 /* END INCLUDE FILE dm_specification_head.incl.pl1 */ 132 133 7 1 /* BEGIN INCLUDE FILE - dm_specification.incl.pl1 */ 7 2 7 3 /* DESCRIPTION: 7 4* 7 5* The specification structure is used to identify sets items based on 7 6* the value of some of the contents of the items (the 7 7* search_specification), or based on the ordinal position (the 7 8* numeric_specification) of the first or last item in the desired set of 7 9* items in the set of all possible items. It is used with the relation, 7 10* index and record managers. The items for these three managers are 7 11* tuples, keys and records, respectively. The sets of "all possible 7 12* items", for determination of ordinal position for these three managers 7 13* are: a relation, an index, and a record collection, respectively. 7 14* 7 15* The specification_head structure, in dm_specification_head.incl.pl1, 7 16* must be included in any program which uses this (the 7 17* dm_specification.incl.pl1) include file. 7 18**/ 7 19 7 20 /* HISTORY: 7 21* 7 22*Written by Lindsey Spratt, 05/19/82. 7 23*Modified: 7 24*08/17/82 by Matthew Pierret: Added all specification type constants. 7 25*09/24/82 by Ronald Harvey: Changed version and added and_groups. 7 26*10/22/82 by Lindsey Spratt: Added the range_size to the numeric_specification. 7 27* Changed the version to 3. 7 28*05/11/83 by Matthew Pierret: Moved specification_head and and type constants 7 29* to dm_specification_head.incl.pl1. Added constraint.value_field_id. 7 30* Moved range type constants into dm_range_constants.incl.pl1. 7 31*05/20/83 by Matthew Pierret: Added constraint.value_field_id for specifying 7 32* intra-key/record compares. 7 33*10/02/84 by Lindsey L. Spratt: Moved a misplaced journalization comment. 7 34* Added a DESCRIPTION comment. 7 35**/ 7 36 7 37 /* format: style2,ind3 */ 7 38 dcl 1 search_specification based (search_specification_ptr), 7 39 2 head like specification_head, 7 40 2 maximum_number_of_constraints 7 41 fixed bin (17) unal, 7 42 2 number_of_and_groups 7 43 fixed bin (17) unal, 7 44 2 range unal, 7 45 3 type fixed bin (17), 7 46 3 size fixed bin (17), 7 47 2 and_group (ss_number_of_and_groups refer (search_specification.number_of_and_groups)), 7 48 3 number_of_constraints 7 49 fixed bin (17) unal, 7 50 3 constraint (ss_maximum_number_of_constraints 7 51 refer (search_specification.maximum_number_of_constraints)), 7 52 4 field_id fixed bin (17) unal, 7 53 4 operator_code fixed bin (17) unal, 7 54 4 value_field_id fixed bin (17) unal, 7 55 4 pad bit (18) unal, 7 56 4 value_ptr ptr unal; 7 57 7 58 dcl search_specification_ptr 7 59 ptr; 7 60 dcl (ss_number_of_and_groups, ss_maximum_number_of_constraints) 7 61 fixed bin (17); 7 62 7 63 dcl 1 numeric_specification 7 64 based (numeric_specification_ptr), 7 65 2 head like specification_head, 7 66 2 range_size fixed bin (35) aligned, 7 67 2 position_number fixed bin (17) unal, 7 68 2 pad bit (18) unal; 7 69 7 70 dcl numeric_specification_ptr 7 71 ptr; 7 72 7 73 /* END INCLUDE FILE - dm_specification.incl.pl1 */ 134 135 end im_compare_subset; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1146.1 im_compare_subset.pl1 >spec>temp>famis1>im_compare_subset.pl1 122 1 01/03/85 1004.7 dm_subset_specification.incl.pl1 >spec>temp>famis1>dm_subset_specification.incl.pl1 124 2 10/14/83 1609.1 dm_operator_constants.incl.pl1 >ldd>include>dm_operator_constants.incl.pl1 126 3 01/03/85 1003.4 dm_idxmgr_entry_dcls.incl.pl1 >spec>temp>famis1>dm_idxmgr_entry_dcls.incl.pl1 128 4 10/14/83 1609.1 dm_id_list.incl.pl1 >ldd>include>dm_id_list.incl.pl1 130 5 10/14/83 1609.1 vu_typed_vector.incl.pl1 >ldd>include>vu_typed_vector.incl.pl1 132 6 10/14/83 1609.1 dm_specification_head.incl.pl1 >ldd>include>dm_specification_head.incl.pl1 134 7 01/03/85 1004.6 dm_specification.incl.pl1 >spec>temp>famis1>dm_specification.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. ABSOLUTE_SEARCH_SPECIFICATION_TYPE constant fixed bin(17,0) initial dcl 6-22 ref 84 EQUAL_OPERATOR_CODE constant fixed bin(17,0) initial dcl 2-13 ref 85 SPECIFICATION_VERSION_4 constant fixed bin(35,0) initial dcl 6-19 ref 83 and_group 6 based structure array level 2 packed unaligned dcl 7-38 cleanup 000102 stack reference condition dcl 58 ref 81 constraint 6(18) based structure array level 3 packed unaligned dcl 7-38 cursor_ptr 10 based pointer array level 3 dcl 1-23 set ref 100* dimension 1 based structure array level 2 packed unaligned dcl 5-17 dm_error_$key_not_found 000010 external static fixed bin(35,0) dcl 64 ref 105 field_id 6(18) based fixed bin(17,0) array level 4 packed unaligned dcl 7-38 set ref 90* flags 6 based structure array level 3 packed unaligned dcl 1-23 hbound builtin function dcl 54 ref 74 94 96 head based structure level 2 unaligned dcl 7-38 id 2 based fixed bin(17,0) array level 2 dcl 4-16 ref 96 97 id_list based structure level 1 dcl 4-16 id_list_ptr 000112 automatic pointer initial dcl 4-21 in procedure "im_compare_subset" set ref 95* 96 97 4-21* id_list_ptr 4 based pointer array level 3 in structure "subset_specification" dcl 1-23 in procedure "im_compare_subset" ref 75 95 il_number_of_ids 000114 automatic fixed bin(17,0) initial dcl 4-22 set ref 4-22* index_manager_$position_cursor 000012 constant entry external dcl 3-47 ref 100 is_member 6 based bit(1) array level 4 packed unaligned dcl 1-23 ref 103 108 max builtin function dcl 54 ref 75 maximum_number_of_constraints 4 based fixed bin(17,0) level 2 packed unaligned dcl 7-38 set ref 82* 85 85 85 86 86 86 87 87 90 90 97 97 118 null builtin function dcl 54 ref 79 4-21 118 number_of_and_groups 4(18) based fixed bin(17,0) level 2 packed unaligned dcl 7-38 set ref 82* 118 number_of_constraints 6 based fixed bin(17,0) array level 3 packed unaligned dcl 7-38 set ref 87* number_of_ids 1 based fixed bin(17,0) level 2 dcl 4-16 ref 75 96 number_of_subsets 2 based fixed bin(17,0) level 2 dcl 1-23 ref 74 94 operator_code 7 based fixed bin(17,0) array level 4 packed unaligned dcl 7-38 set ref 85* p_code parameter fixed bin(35,0) dcl 41 set ref 7 94 100* 103 105 109* p_pseudo_field_value parameter bit unaligned dcl 40 ref 7 p_satisfies_specification parameter bit(1) dcl 38 set ref 7 93* 94 103* 108* p_simple_typed_vector_ptr parameter pointer dcl 35 ref 7 69 p_subset_specification_ptr parameter pointer dcl 33 ref 7 68 p_work_area_ptr parameter pointer dcl 37 set ref 7 82 100* 118 search_idx 000101 automatic fixed bin(17,0) dcl 46 set ref 89* 90 90* 96* 97 97* search_specification based structure level 1 unaligned dcl 7-38 set ref 82 118 search_specification_ptr 000120 automatic pointer dcl 7-58 set ref 79* 82* 83 84 85 86 87 90 97 100* 118 118 simple_typed_vector based structure level 1 packed unaligned dcl 5-17 simple_typed_vector_ptr 000116 automatic pointer dcl 5-33 set ref 69* 97 specification_head based structure level 1 unaligned dcl 6-10 ss_maximum_number_of_constraints 000123 automatic fixed bin(17,0) dcl 7-60 set ref 72* 75* 75 82 82 87 89 ss_number_of_and_groups 000122 automatic fixed bin(17,0) dcl 7-60 set ref 80* 82 82 subset 4 based structure array level 2 unaligned dcl 1-23 set ref 74 94 subset_idx 000100 automatic fixed bin(17,0) dcl 45 set ref 74* 75* 94* 95 100 103 108* subset_specification based structure level 1 unaligned dcl 1-23 subset_specification_ptr 000110 automatic pointer dcl 1-33 set ref 68* 74 75 94 95 100 103 108 type 1 based fixed bin(17,0) level 3 packed unaligned dcl 7-38 set ref 84* value_field_id 7(18) based fixed bin(17,0) array level 4 packed unaligned dcl 7-38 set ref 86* value_ptr 10(18) based pointer array level 4 in structure "search_specification" packed unaligned dcl 7-38 in procedure "im_compare_subset" set ref 97* value_ptr 1 based pointer array level 3 in structure "simple_typed_vector" packed unaligned dcl 5-17 in procedure "im_compare_subset" ref 97 version based fixed bin(35,0) level 3 dcl 7-38 set ref 83* work_area based area(1024) dcl 50 ref 82 118 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSOLUTE_NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 ABSOLUTE_RELATION_NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 ABSOLUTE_RELATION_SEARCH_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 EQUAL_IDX internal static fixed bin(17,0) initial dcl 2-13 GENERAL_TYPED_VECTOR_TYPE internal static fixed bin(17,0) initial dcl 5-43 GREATER_IDX internal static fixed bin(17,0) initial dcl 2-13 GREATER_OPERATOR_CODE internal static fixed bin(17,0) initial dcl 2-13 GREATER_OR_EQUAL_OPERATOR_CODE internal static fixed bin(17,0) initial dcl 2-13 ID_LIST_VERSION_1 internal static fixed bin(17,0) initial dcl 4-23 LESS_OPERATOR_CODE internal static fixed bin(17,0) initial dcl 2-13 LESS_OR_EQUAL_OPERATOR_CODE internal static fixed bin(17,0) initial dcl 2-13 NOT_EQUAL_OPERATOR_CODE internal static fixed bin(17,0) initial dcl 2-13 NOT_IDX internal static fixed bin(17,0) initial dcl 2-13 NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 OLD_SIMPLE_TYPED_VECTOR_TYPE internal static fixed bin(17,0) initial dcl 5-43 REGULAR_EXPRESSION_IDX internal static fixed bin(17,0) initial dcl 2-13 REGULAR_EXPRESSION_OPERATOR_CODE internal static fixed bin(17,0) initial dcl 2-13 RELATIVE_NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 RELATIVE_RELATION_NUMERIC_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 RELATIVE_RELATION_SEARCH_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 RELATIVE_SEARCH_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 SEARCH_SPECIFICATION_TYPE internal static fixed bin(17,0) initial dcl 6-22 SIMPLE_TYPED_VECTOR_TYPE internal static fixed bin(17,0) initial dcl 5-43 SUBSET_SPECIFICATION_VERSION_1 internal static char(8) initial unaligned dcl 1-35 USES_EQUAL_OPERATOR internal static bit(1) initial array unaligned dcl 2-31 USES_GREATER_OPERATOR internal static bit(1) initial array unaligned dcl 2-31 USES_LESS_OPERATOR internal static bit(1) initial array unaligned dcl 2-31 USES_REGULAR_EXPRESSION_OPERATOR internal static bit(1) initial array unaligned dcl 2-31 general_typed_vector based structure level 1 packed unaligned dcl 5-24 general_typed_vector_ptr automatic pointer dcl 5-38 gtv_number_of_dimensions automatic fixed bin(17,0) dcl 5-40 index_manager_$create_cursor 000000 constant entry external dcl 3-38 index_manager_$create_index 000000 constant entry external dcl 3-39 index_manager_$create_subset_index 000000 constant entry external dcl 3-40 index_manager_$delete_key 000000 constant entry external dcl 3-41 index_manager_$destroy_cursor 000000 constant entry external dcl 3-42 index_manager_$destroy_index 000000 constant entry external dcl 3-43 index_manager_$get_key 000000 constant entry external dcl 3-44 index_manager_$get_key_count_array 000000 constant entry external dcl 3-45 index_manager_$get_key_count_by_spec 000000 constant entry external dcl 3-46 index_manager_$put_key 000000 constant entry external dcl 3-48 index_manager_$put_key_array 000000 constant entry external dcl 3-49 numeric_specification based structure level 1 unaligned dcl 7-63 numeric_specification_ptr automatic pointer dcl 7-70 specification_head_ptr automatic pointer dcl 6-18 stv_number_of_dimensions automatic fixed bin(17,0) dcl 5-35 NAMES DECLARED BY EXPLICIT CONTEXT. finish 000376 constant entry internal dcl 116 ref 81 113 im_compare_subset 000016 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 520 534 432 530 Length 1060 432 14 310 66 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME im_compare_subset 104 external procedure is an external procedure. on unit on line 81 64 on unit finish 65 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME im_compare_subset 000100 subset_idx im_compare_subset 000101 search_idx im_compare_subset 000110 subset_specification_ptr im_compare_subset 000112 id_list_ptr im_compare_subset 000114 il_number_of_ids im_compare_subset 000116 simple_typed_vector_ptr im_compare_subset 000120 search_specification_ptr im_compare_subset 000122 ss_number_of_and_groups im_compare_subset 000123 ss_maximum_number_of_constraints im_compare_subset THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out call_int_this call_int_other return enable ext_entry_desc int_entry alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. index_manager_$position_cursor THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$key_not_found CONSTANTS 000431 aa 777777000000 000000 aa 404000000043 000001 aa 516077777777 000002 aa 514000000001 000003 aa 464000000000 000004 aa 077777000043 000005 aa 000001000000 000006 aa 143 154 145 141 clea 000007 aa 156 165 160 000 nup BEGIN PROCEDURE im_compare_subset ENTRY TO im_compare_subset STATEMENT 1 ON LINE 7 im_compare_subset: proc (p_subset_specification_ptr, p_simple_typed_vector_ptr, p_work_area_ptr, p_satisfies_specification, p_pseudo_field_value, p_code); 000010 at 000006000003 000011 tt 000003000003 000012 tt 000002000001 000013 ta 000000000000 000014 ta 000010000000 000015 da 000047300000 000016 aa 000160 6270 00 eax7 112 000017 aa 7 00034 3521 20 epp2 pr7|28,* 000020 aa 2 01046 2721 00 tsp2 pr2|550 ext_entry_desc 000021 aa 000014000000 000022 aa 000000000000 000023 aa 6 00042 3735 20 epp7 pr6|34,* 000024 aa 7 00010 2361 20 ldq pr7|8,* 000025 aa 000002 6040 04 tmi 2,ic 000027 000026 aa 777777 3760 07 anq 262143,dl 000027 aa 0 00250 3761 00 anq pr0|168 = 000077777777 000030 aa 6 00131 7561 00 stq pr6|89 STATEMENT 1 ON LINE 21 OF FILE 4 000031 aa 777753 2370 04 ldaq -21,ic 000004 = 077777000043 000001000000 000032 aa 6 00112 7571 00 staq pr6|74 id_list_ptr STATEMENT 1 ON LINE 22 OF FILE 4 000033 aa 000001 3360 07 lcq 1,dl 000034 aa 6 00114 7561 00 stq pr6|76 il_number_of_ids STATEMENT 1 ON LINE 68 subset_specification_ptr = p_subset_specification_ptr; 000035 aa 6 00032 3715 20 epp5 pr6|26,* 000036 aa 5 00002 3535 20 epp3 pr5|2,* p_subset_specification_ptr 000037 aa 3 00000 3535 20 epp3 pr3|0,* p_subset_specification_ptr 000040 aa 6 00110 2535 00 spri3 pr6|72 subset_specification_ptr STATEMENT 1 ON LINE 69 simple_typed_vector_ptr = p_simple_typed_vector_ptr; 000041 aa 5 00004 3515 20 epp1 pr5|4,* p_simple_typed_vector_ptr 000042 aa 1 00000 3515 20 epp1 pr1|0,* p_simple_typed_vector_ptr 000043 aa 6 00116 2515 00 spri1 pr6|78 simple_typed_vector_ptr STATEMENT 1 ON LINE 72 ss_maximum_number_of_constraints = 0; 000044 aa 6 00123 4501 00 stz pr6|83 ss_maximum_number_of_constraints STATEMENT 1 ON LINE 74 do subset_idx = 1 to hbound (subset_specification.subset, 1); 000045 aa 3 00002 2361 00 ldq pr3|2 subset_specification.number_of_subsets 000046 aa 6 00124 7561 00 stq pr6|84 000047 aa 000001 2360 07 ldq 1,dl 000050 aa 6 00100 7561 00 stq pr6|64 subset_idx 000051 aa 000000 0110 03 nop 0,du 000052 aa 6 00100 2361 00 ldq pr6|64 subset_idx 000053 aa 6 00124 1161 00 cmpq pr6|84 000054 aa 000014 6054 04 tpnz 12,ic 000070 STATEMENT 1 ON LINE 75 ss_maximum_number_of_constraints = max (ss_maximum_number_of_constraints, subset_specification.subset (subset_idx).id_list_ptr -> id_list.number_of_ids); 000055 aa 000006 4020 07 mpy 6,dl 000056 aa 000000 6270 06 eax7 0,ql 000057 aa 6 00123 2361 00 ldq pr6|83 ss_maximum_number_of_constraints 000060 aa 6 00110 3735 20 epp7 pr6|72,* subset_specification_ptr 000061 aa 7 77776 3715 37 epp5 pr7|-2,7* subset_specification.id_list_ptr 000062 aa 5 00001 1161 00 cmpq pr5|1 id_list.number_of_ids 000063 aa 000002 6050 04 tpl 2,ic 000065 000064 aa 5 00001 2361 00 ldq pr5|1 id_list.number_of_ids 000065 aa 6 00123 7561 00 stq pr6|83 ss_maximum_number_of_constraints STATEMENT 1 ON LINE 78 end; 000066 aa 6 00100 0541 00 aos pr6|64 subset_idx 000067 aa 777763 7100 04 tra -13,ic 000052 STATEMENT 1 ON LINE 79 search_specification_ptr = null; 000070 aa 777714 2370 04 ldaq -52,ic 000004 = 077777000043 000001000000 000071 aa 6 00120 7571 00 staq pr6|80 search_specification_ptr STATEMENT 1 ON LINE 80 ss_number_of_and_groups = 1; 000072 aa 000001 2360 07 ldq 1,dl 000073 aa 6 00122 7561 00 stq pr6|82 ss_number_of_and_groups STATEMENT 1 ON LINE 81 on cleanup call finish; 000074 aa 000007 7260 07 lxl6 7,dl 000075 aa 777711 3520 04 epp2 -55,ic 000006 = 143154145141 000076 aa 0 00717 7001 00 tsx0 pr0|463 enable 000077 aa 000004 7100 04 tra 4,ic 000103 000100 aa 000102000000 000101 aa 000015 7100 04 tra 13,ic 000116 BEGIN CONDITION cleanup.1 ENTRY TO cleanup.1 STATEMENT 1 ON LINE 81 on cleanup call finish; 000102 da 000055200000 000103 aa 000100 6270 00 eax7 64 000104 aa 7 00034 3521 20 epp2 pr7|28,* 000105 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000106 aa 000000000000 000107 aa 000000000000 000110 aa 000001 7270 07 lxl7 1,dl 000111 aa 6 00056 6211 00 eax1 pr6|46 000112 aa 000000 4310 07 fld 0,dl 000113 aa 000263 3520 04 epp2 179,ic 000376 = 000120627000 000114 aa 0 00627 7001 00 tsx0 pr0|407 call_int_other 000115 aa 0 00631 7101 00 tra pr0|409 return END CONDITION cleanup.1 STATEMENT 1 ON LINE 82 alloc search_specification in (work_area); 000116 aa 6 00123 2361 00 ldq pr6|83 ss_maximum_number_of_constraints 000117 aa 000003 4020 07 mpy 3,dl 000120 aa 000044 4020 07 mpy 36,dl 000121 aa 000022 0760 07 adq 18,dl 000122 aa 6 00122 4021 00 mpy pr6|82 ss_number_of_and_groups 000123 aa 000330 0330 07 adl 216,dl 000124 aa 000043 0760 07 adq 35,dl 000125 aa 000044 5060 07 div 36,dl 000126 aa 6 00032 3735 20 epp7 pr6|26,* 000127 aa 7 00006 3715 20 epp5 pr7|6,* p_work_area_ptr 000130 aa 5 00000 3521 20 epp2 pr5|0,* work_area 000131 aa 0 01402 7001 00 tsx0 pr0|770 alloc_based 000132 aa 777764 7100 04 tra -12,ic 000116 000133 aa 6 00120 2521 00 spri2 pr6|80 search_specification_ptr 000134 aa 6 00122 2361 00 ldq pr6|82 ss_number_of_and_groups 000135 aa 2 00004 5521 14 stbq pr2|4,14 search_specification.number_of_and_groups 000136 aa 6 00123 2361 00 ldq pr6|83 ss_maximum_number_of_constraints 000137 aa 000066 7370 00 lls 54 000140 aa 2 00004 5511 60 stba pr2|4,60 search_specification.maximum_number_of_constraints STATEMENT 1 ON LINE 83 search_specification.version = SPECIFICATION_VERSION_4; 000141 aa 000004 2360 07 ldq 4,dl 000142 aa 2 00000 7561 00 stq pr2|0 search_specification.version STATEMENT 1 ON LINE 84 search_specification.head.type = ABSOLUTE_SEARCH_SPECIFICATION_TYPE; 000143 aa 000001 2350 03 lda 1,du 000144 aa 2 00001 5511 60 stba pr2|1,60 search_specification.type STATEMENT 1 ON LINE 85 search_specification.and_group (1).constraint (*).operator_code = EQUAL_OPERATOR_CODE; 000145 aa 000001 2360 07 ldq 1,dl 000146 aa 2 00004 2351 00 lda pr2|4 search_specification.maximum_number_of_constraints 000147 aa 6 00132 7561 00 stq pr6|90 000150 aa 000066 7330 00 lrs 54 000151 aa 6 00133 7561 00 stq pr6|91 000152 aa 000001 2360 07 ldq 1,dl 000153 aa 6 00125 7561 00 stq pr6|85 000154 aa 6 00125 2361 00 ldq pr6|85 000155 aa 000154 4020 07 mpy 108,dl 000156 aa 6 00134 7561 00 stq pr6|92 000157 aa 6 00132 2361 00 ldq pr6|90 000160 aa 000066 7370 00 lls 54 000161 aa 6 00056 7551 00 sta pr6|46 000162 aa 6 00134 2351 00 lda pr6|92 000163 aa 6 00120 3735 20 epp7 pr6|80,* search_specification_ptr 000164 aa 003 105 060 500 csl (pr),(pr,al),fill(0),bool(move) 000165 aa 6 00056 00 0022 descb pr6|46,18 000166 aa 7 00004 00 0022 descb pr7|4,18 search_specification.operator_code 000167 aa 6 00125 2361 00 ldq pr6|85 000170 aa 6 00125 0541 00 aos pr6|85 000171 aa 6 00133 1161 00 cmpq pr6|91 000172 aa 777762 6040 04 tmi -14,ic 000154 STATEMENT 1 ON LINE 86 search_specification.and_group (1).constraint (*).value_field_id = -1; 000173 aa 7 00004 2351 00 lda pr7|4 search_specification.maximum_number_of_constraints 000174 aa 000066 7330 00 lrs 54 000175 aa 6 00132 7561 00 stq pr6|90 000176 aa 000001 2360 07 ldq 1,dl 000177 aa 6 00125 7561 00 stq pr6|85 000200 aa 6 00125 2361 00 ldq pr6|85 000201 aa 000154 4020 07 mpy 108,dl 000202 aa 6 00120 3735 20 epp7 pr6|80,* search_specification_ptr 000203 aa 003 106 060 404 csl (ic),(pr,ql),fill(0),bool(move) 000204 aa 000226 00 0022 descb 150,18 000431 = 777777000000 000205 aa 7 00004 40 0022 descb pr7|4(18),18 search_specification.value_field_id 000206 aa 6 00125 2361 00 ldq pr6|85 000207 aa 6 00125 0541 00 aos pr6|85 000210 aa 6 00132 1161 00 cmpq pr6|90 000211 aa 777767 6040 04 tmi -9,ic 000200 STATEMENT 1 ON LINE 87 search_specification.and_group (1).number_of_constraints = ss_maximum_number_of_constraints; 000212 aa 6 00123 2361 00 ldq pr6|83 ss_maximum_number_of_constraints 000213 aa 000066 7370 00 lls 54 000214 aa 7 00006 5511 60 stba pr7|6,60 search_specification.number_of_constraints STATEMENT 1 ON LINE 89 do search_idx = 1 to ss_maximum_number_of_constraints; 000215 aa 6 00123 2361 00 ldq pr6|83 ss_maximum_number_of_constraints 000216 aa 6 00126 7561 00 stq pr6|86 000217 aa 000001 2360 07 ldq 1,dl 000220 aa 6 00101 7561 00 stq pr6|65 search_idx 000221 aa 000000 0110 03 nop 0,du 000222 aa 6 00101 2361 00 ldq pr6|65 search_idx 000223 aa 6 00126 1161 00 cmpq pr6|86 000224 aa 000015 6054 04 tpnz 13,ic 000241 STATEMENT 1 ON LINE 90 search_specification.and_group (1).constraint (search_idx).field_id = search_idx; 000225 aa 000154 4020 07 mpy 108,dl 000226 aa 6 00132 7561 00 stq pr6|90 000227 aa 6 00101 2361 00 ldq pr6|65 search_idx 000230 aa 000066 7370 00 lls 54 000231 aa 6 00056 7551 00 sta pr6|46 000232 aa 6 00132 2351 00 lda pr6|90 000233 aa 6 00120 3735 20 epp7 pr6|80,* search_specification_ptr 000234 aa 003 105 060 500 csl (pr),(pr,al),fill(0),bool(move) 000235 aa 6 00056 00 0022 descb pr6|46,18 000236 aa 7 00003 40 0022 descb pr7|3(18),18 search_specification.field_id STATEMENT 1 ON LINE 91 end; 000237 aa 6 00101 0541 00 aos pr6|65 search_idx 000240 aa 777762 7100 04 tra -14,ic 000222 STATEMENT 1 ON LINE 93 p_satisfies_specification = "1"b; 000241 aa 400000 2350 03 lda 131072,du 000242 aa 6 00032 3735 20 epp7 pr6|26,* 000243 aa 7 00010 7551 20 sta pr7|8,* p_satisfies_specification STATEMENT 1 ON LINE 94 do subset_idx = 1 to hbound (subset_specification.subset, 1) while (p_satisfies_specification & p_code = 0); 000244 aa 6 00110 3715 20 epp5 pr6|72,* subset_specification_ptr 000245 aa 5 00002 2361 00 ldq pr5|2 subset_specification.number_of_subsets 000246 aa 6 00127 7561 00 stq pr6|87 000247 aa 000001 2360 07 ldq 1,dl 000250 aa 6 00100 7561 00 stq pr6|64 subset_idx 000251 aa 000000 0110 03 nop 0,du 000252 aa 6 00100 2361 00 ldq pr6|64 subset_idx 000253 aa 6 00127 1161 00 cmpq pr6|87 000254 aa 000114 6054 04 tpnz 76,ic 000370 000255 aa 6 00032 3735 20 epp7 pr6|26,* 000256 aa 7 00010 2351 20 lda pr7|8,* p_satisfies_specification 000257 aa 400000 3150 03 cana 131072,du 000260 aa 000110 6000 04 tze 72,ic 000370 000261 aa 7 00014 2361 20 ldq pr7|12,* p_code 000262 aa 000106 6010 04 tnz 70,ic 000370 STATEMENT 1 ON LINE 95 id_list_ptr = subset_specification.subset (subset_idx).id_list_ptr; 000263 aa 6 00100 2361 00 ldq pr6|64 subset_idx 000264 aa 000006 4020 07 mpy 6,dl 000265 aa 6 00110 3715 20 epp5 pr6|72,* subset_specification_ptr 000266 aa 5 77776 3715 26 epp5 pr5|-2,ql* subset_specification.id_list_ptr 000267 aa 6 00112 6515 00 spri5 pr6|74 id_list_ptr STATEMENT 1 ON LINE 96 do search_idx = 1 to hbound (id_list.id, 1); 000270 aa 5 00001 2361 00 ldq pr5|1 id_list.number_of_ids 000271 aa 6 00130 7561 00 stq pr6|88 000272 aa 000001 2360 07 ldq 1,dl 000273 aa 6 00101 7561 00 stq pr6|65 search_idx 000274 aa 6 00101 2361 00 ldq pr6|65 search_idx 000275 aa 6 00130 1161 00 cmpq pr6|88 000276 aa 000024 6054 04 tpnz 20,ic 000322 STATEMENT 1 ON LINE 97 search_specification.and_group (1).constraint (search_idx).value_ptr = simple_typed_vector.dimension (id_list.id (search_idx)).value_ptr; 000277 aa 000154 4020 07 mpy 108,dl 000300 aa 6 00101 7271 00 lxl7 pr6|65 search_idx 000301 aa 6 00112 3735 20 epp7 pr6|74,* id_list_ptr 000302 aa 7 00001 7271 17 lxl7 pr7|1,7 id_list.id 000303 aa 6 00116 3735 77 epp7 pr6|78,*7 simple_typed_vector.value_ptr 000304 aa 003 100 060 500 csl (pr),(pr),fill(0),bool(move) 000305 aa 7 00000 00 0044 descb pr7|0,36 simple_typed_vector.value_ptr 000306 aa 6 00056 00 0044 descb pr6|46,36 000307 aa 6 00056 2351 00 lda pr6|46 000310 aa 6 00132 7561 00 stq pr6|90 000311 aa 000044 7730 00 lrl 36 000312 aa 6 00056 7561 00 stq pr6|46 000313 aa 6 00132 2351 00 lda pr6|90 000314 aa 6 00120 3715 20 epp5 pr6|80,* search_specification_ptr 000315 aa 003 105 060 500 csl (pr),(pr,al),fill(0),bool(move) 000316 aa 6 00056 00 0044 descb pr6|46,36 000317 aa 5 00005 40 0044 descb pr5|5(18),36 search_specification.value_ptr STATEMENT 1 ON LINE 99 end; 000320 aa 6 00101 0541 00 aos pr6|65 search_idx 000321 aa 777753 7100 04 tra -21,ic 000274 STATEMENT 1 ON LINE 100 call index_manager_$position_cursor (search_specification_ptr, p_work_area_ptr, subset_specification.subset (subset_idx).cursor_ptr, p_code); 000322 aa 6 00100 2361 00 ldq pr6|64 subset_idx 000323 aa 000006 4020 07 mpy 6,dl 000324 aa 6 00120 3521 00 epp2 pr6|80 search_specification_ptr 000325 aa 6 00140 2521 00 spri2 pr6|96 000326 aa 6 00032 3735 20 epp7 pr6|26,* 000327 aa 7 00006 3521 20 epp2 pr7|6,* p_work_area_ptr 000330 aa 6 00142 2521 00 spri2 pr6|98 000331 aa 6 00110 3715 20 epp5 pr6|72,* subset_specification_ptr 000332 aa 5 00002 3521 06 epp2 pr5|2,ql subset_specification.cursor_ptr 000333 aa 6 00144 2521 00 spri2 pr6|100 000334 aa 7 00014 3521 20 epp2 pr7|12,* p_code 000335 aa 6 00146 2521 00 spri2 pr6|102 000336 aa 6 00136 6211 00 eax1 pr6|94 000337 aa 020000 4310 07 fld 8192,dl 000340 aa 6 00044 3701 20 epp4 pr6|36,* 000341 la 4 00012 3521 20 epp2 pr4|10,* index_manager_$position_cursor 000342 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 103 if p_code = 0 then p_satisfies_specification = subset_specification.subset (subset_idx).is_member; 000343 aa 6 00032 3735 20 epp7 pr6|26,* 000344 aa 7 00014 2361 20 ldq pr7|12,* p_code 000345 aa 000007 6010 04 tnz 7,ic 000354 000346 aa 6 00100 2361 00 ldq pr6|64 subset_idx 000347 aa 000006 4020 07 mpy 6,dl 000350 aa 6 00110 2351 66 lda pr6|72,*ql subset_specification.is_member 000351 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 000352 aa 7 00010 7551 20 sta pr7|8,* p_satisfies_specification 000353 aa 000013 7100 04 tra 11,ic 000366 STATEMENT 1 ON LINE 105 else if p_code = dm_error_$key_not_found then do; 000354 aa 6 00044 3701 20 epp4 pr6|36,* 000355 la 4 00010 1161 20 cmpq pr4|8,* dm_error_$key_not_found 000356 aa 000010 6010 04 tnz 8,ic 000366 STATEMENT 1 ON LINE 108 p_satisfies_specification = ^subset_specification.subset (subset_idx).is_member; 000357 aa 6 00100 2361 00 ldq pr6|64 subset_idx 000360 aa 000006 4020 07 mpy 6,dl 000361 aa 6 00110 2351 66 lda pr6|72,*ql subset_specification.is_member 000362 aa 0 00002 3771 00 anaq pr0|2 = 400000000000 000000000000 000363 aa 0 00002 6751 00 era pr0|2 = 400000000000 000364 aa 7 00010 7551 20 sta pr7|8,* p_satisfies_specification STATEMENT 1 ON LINE 109 p_code = 0; 000365 aa 7 00014 4501 20 stz pr7|12,* p_code STATEMENT 1 ON LINE 110 end; STATEMENT 1 ON LINE 112 end; 000366 aa 6 00100 0541 00 aos pr6|64 subset_idx 000367 aa 777663 7100 04 tra -77,ic 000252 STATEMENT 1 ON LINE 113 call finish; 000370 aa 6 00056 6211 00 eax1 pr6|46 000371 aa 000000 4310 07 fld 0,dl 000372 aa 000004 3520 04 epp2 4,ic 000376 = 000120627000 000373 aa 0 00625 7001 00 tsx0 pr0|405 call_int_this STATEMENT 1 ON LINE 114 return; 000374 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 135 end im_compare_subset; BEGIN PROCEDURE finish ENTRY TO finish STATEMENT 1 ON LINE 116 finish: proc; 000375 da 000062200000 000376 aa 000120 6270 00 eax7 80 000377 aa 7 00034 3521 20 epp2 pr7|28,* 000400 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000401 aa 000000000000 000402 aa 000000000000 STATEMENT 1 ON LINE 118 if search_specification_ptr ^= null then free search_specification in (work_area); 000403 aa 6 00040 3735 20 epp7 pr6|32,* 000404 aa 7 00120 2371 00 ldaq pr7|80 search_specification_ptr 000405 aa 777377 6770 04 eraq -257,ic 000004 = 077777000043 000001000000 000406 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000407 aa 000021 6000 04 tze 17,ic 000430 000410 aa 7 00120 3715 20 epp5 pr7|80,* search_specification_ptr 000411 aa 5 00004 2351 00 lda pr5|4 search_specification.number_of_and_groups 000412 aa 000022 7350 00 als 18 000413 aa 000066 7330 00 lrs 54 000414 aa 6 00100 7561 00 stq pr6|64 search_specification.number_of_and_groups 000415 aa 5 00004 2351 00 lda pr5|4 search_specification.maximum_number_of_constraints 000416 aa 000066 7330 00 lrs 54 000417 aa 000003 4020 07 mpy 3,dl 000420 aa 000044 4020 07 mpy 36,dl 000421 aa 000022 0760 07 adq 18,dl 000422 aa 6 00100 4021 00 mpy pr6|64 search_specification.number_of_and_groups 000423 aa 000330 0330 07 adl 216,dl 000424 aa 000043 0760 07 adq 35,dl 000425 aa 000044 5060 07 div 36,dl 000426 aa 7 00120 3715 00 epp5 pr7|80 search_specification_ptr 000427 aa 0 01404 7001 00 tsx0 pr0|772 free_based STATEMENT 1 ON LINE 120 end finish; 000430 aa 0 00631 7101 00 tra pr0|409 return END PROCEDURE finish END PROCEDURE im_compare_subset ----------------------------------------------------------- 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