Name | Value | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NUMBER | 2365 | ||||||||||||||||||||||||||||||||||||
IA # | 2365 | ||||||||||||||||||||||||||||||||||||
DATE CREATED | 1998/04/27 | ||||||||||||||||||||||||||||||||||||
CUSTODIAL PACKAGE | TOOLKIT | ||||||||||||||||||||||||||||||||||||
CUSTODIAL ISC | San Francisco | ||||||||||||||||||||||||||||||||||||
USAGE | Supported | ||||||||||||||||||||||||||||||||||||
TYPE | Routine | ||||||||||||||||||||||||||||||||||||
DBIC APPROVAL STATUS | APPROVED | ||||||||||||||||||||||||||||||||||||
ROUTINE | XDRMERG | ||||||||||||||||||||||||||||||||||||
NAME | Merge File Entries | ||||||||||||||||||||||||||||||||||||
GENERAL DESCRIPTION | Overview A file in which entries need to be merged may be entered in the DUPLICATE RESOLUTION file (file 15.1). This requires adding the file as one which can be selected as the variable pointer, and search criteria would usually need to be specified to assist in identifying potential duplicate pairs (although an option can be use by which selected pairs can be added directly to the DUPLICATE RECORD file as verified duplicates). Verified duplicate pairs may be approved for merging, and a merge process generated for those approved pairs. A DUPLICATE RECORD file entry will also have handle files which are not associated as normal pointers identified in the PACKAGE file under the 'AFFECTS RECORD MERGE' subfile with special processing routines. ***IF A FILE HAS RELATED FILES WHICH ARE NOT NORMAL POINTERS, THEY SHOULD BE HANDLED ONLY AS ENTRIES IN THE DUPLICATE RECORD FILE AND THE TOOLKIT OPTIONS USED FOR MERGES INVOLVING THE FILE.*** The merge utility of Kernel Toolkit as revised by patch XT*7.3*23 provides an entry point which is available to developers for the merging of one or more pairs of records (a FROM record and a TO record) in a specified file. The merge process me rges the data of the FROM record into that of the TO record and deletes the FROM record, restoring by a hard set only the zero node with the .01 value on it until the merge process is completed (such that any references to that location via pointers will not error out). Any files which contain entries DINUMed with the data pairs are then also merged (and any files which are related to them by DINUM as well). Any pointers which can be identified rapidly by cross-references are modifie d so that references for the FROM entry become references to the TO entry instead. Following this, any files which contain other pointers are searched entry by entry to test for pointers to a FROM entry, and when found are modified to reference the TO entry. This search for pointer values is the most time consuming part of the entire process and may take an extended period depending upon the number of files that must be searched, the number of entries in those files, and how many levels of subfiles pointers may be located at. Since the search through these files will take the same period of time independent of the number of pairs which are being merged, it is suggested that as many pairs as convient be combined in one proc ess. At the end of the conversion of these pointers, the zero node stubs will be removed from the primary file and all related DINUMed files. The merge process is a single job which is tracked with frequent updates on location and status from start to finish. The job can be stopped at any time if necessary using Task Manager utilities (or in the event of a system crash, etc.) and restarted at the point of interruption at a later time. The manner in which data is merged. When a primary file or a DINUMed files entries are merged, any top level (single value) fields which are present in the FROM entry which are not present in the TO entry will be merged into the TO entries data. Any of these fields which contain cross-references will be entered using a VA File Manager utility (FILE^DIE) so that the cross-references will be fired. Other fields (those without cross-references) will be directly set into the data global. If a subfile entry exists in the FROM record which is not present in the TO record (as identified by the .01 value), that entry will be created with a VA File Manager utility (UPDATE^DIE) and the rest of the subfile merged over into the TO record and the cross-references within the subfile and any descendent subfiles run. If a subfile entry exists in the FROM record and an identical .01 value exists in the TO record, the subfile in the FROM record will be searched for any descendent subfiles which are not present in the TO record subfile. If such a subfile is found it will be merged into the subfile in the TO record and any cross-references in the merged subfile run. For fields which are simple pointers to the primary file (or any other file DINUMed to the primary file) the reference to the FROM record will be changed to a reference to the TO record. If the field contains a cross-reference this editing will be performed using a VA File Manager Utility call (FILE^DIE), otherwise it will be set directly into the global node. |
||||||||||||||||||||||||||||||||||||
STATUS | Active | ||||||||||||||||||||||||||||||||||||
DURATION | Till Otherwise Agreed | ||||||||||||||||||||||||||||||||||||
ID | XDRMERG | ||||||||||||||||||||||||||||||||||||
COMPONENT/ENTRY POINT |
|