How to adjust BTPINS, BTPFIND, and BTPDEL
To allow the B-TREE-P package to correctly function with concatenated multivalue identifiers, you have to make a minor change in the BTPINS, BTPFIND, and BTPDEL subroutines. In BTPINS line 023, change IN to FIELD(IN,"*",1):
023 READ IT FROM DFILE,FIELD(IN,"*",1) ELSE STOP "BTP3"
Similarly, change UID to FIELD(UID,"*",1) in BTPFIND line 011:
011 READ IT FROM DFILE,FIELD(UID,"*",1) ELSE STOP "BTP10"
Also change SID to FIELD(SID,"*",1) in BTPDEL line 016:
016 READ IT FROM DFILE,FIELD(SID,"*",1) ELSE STOP "BTP17"
The above three changes insure that B-TREE-P can extract just the necessary item identifiers when multivalued B-trees are used. The changes will have no effect on B-trees for standard single valued attributes, and the changes can be left in the BTPINS, BTPFIND, and BTPDEL subroutines regardless of whether single or multivalues are being indexed, as long as the asterisk (or whatever delimiter you choose) is not used in any data file item identifiers and is available solely for B-TREE-P use.