DICTIONARY ITEM ID Resolution
If loading segment or total level returns and once the DICTIONARY_ID is resolved via the BATCH ID position #6, the Dictionary Node within the appropriate dictionary level must be resolved. This is also referred to as the Dictionary Item ID.
If a dictionary Node is not found, the procedure will be permitted to add that node only if the severity on the edit "Dictionary item not found" is set to "W" for warning. If the severity level is set to "F" (FATAL), this will result in an error condition as documented below.
Constituent/Security returns (SECURITY_ALIAS != 0) are stored in the PERFORM.PERF_SEC_RETURNS table with a PERF_ROLLUP_RETURNS_ID of "0".
The procedure will not have the ability to establish new levels within a dictionary, only nodes within established levels.
A Dictionary Level of 1 will always be assigned as the TOTAL fund row and will signified by NULL in all fields #5-11.
Additional steps used to resolve the DICTIONARY ITEM ID are as follows:
Procedure will evaluate variables 5 through 11 in the incoming record to determine which is the first column with a NULL value.
Based on the result of the variable evaluation, the procedure will do the following:
If none of the variables are NULL, the incoming record is assigned DICTIONARY_LEVEL_CODE of 8.
If a column (#5-11) is found to be NULL, the procedure will check whether any subsequent columns in the subset are NOT NULL.
If any subsequent columns are NOT NULL, an "Invalid Dictionary Levels Found" will be generated.
If no subsequent columns in the subset are NULL, the procedure will assign DICTIONARY_LEVEL_CODE based on the first column that was found to be NULL, in accordance with the following list (First NULL Column in Subset = DICTIONARY_LEVEL_CODE):
DL 2 (Field #5) = 2
DL 3 (Field #6) = 3
DL 4 (Field #7) = 4
DL 5 (Field #8) = 5
DL 6 (Field #9) = 6
DL 7 (Field #10) = 7
DL 8 (Field #11) = 8
Procedure will perform a lookup in the RULES.DICTIONARY_DETAIL table selecting DICTIONARY_ITEM_ID where the following characteristics are met:
Dictionary_id = Dictionary_id
DICT_L1_CODE_VALUE = TOTAL
DICT_L2_CODE_VALUE = DL 2 (Field #5)
DICT_L3_CODE_VALUE = DL 3 (Field #6)
DICT_L4_CODE_VALUE = DL 4 (Field #7)
DICT_L5_CODE_VALUE = DL 5 (Field #8)
DICT_L6_CODE_VALUE = DL 6 (Field #9)
DICT_L7_CODE_VALUE = DL 7 (Field #10)
DICT_L8_CODE_VALUE = DL 8 (Field #11)
Based on the result of the lookup, the procedure will do the following:
If the result is NOT NULL, the procedure will consider the variable to be DICTIONARY_ITEM_ID and store the record in accord with the data map, refer to the PACE Derived Fields section.
If the result is NULL, the procedure will check the severity level of the edit "Dictionary Item Not Found."
Based on the edit's severity level, the procedure will do the following:
If the edit is not found or if the result is anything other than "F" or "W", the procedure will generate an error that "Dictionary Item ID unclear".
If the result is "F", the procedure will fail the record with the error "Dictionary Item not found.
For the result of "W", the procedure will count the number of records in the RULES.DICTIONARY_FORMAT table with the following attributes:
Dictionary_id = DICTIONARY_ID
Dictionary_level = DICTIONARY_LEVEL_CODE
If the record count in the RULES.DICTIONARY_FORMAT table is zero, an "Invalid Dictionary levels Found" error will be generated.
If the record count in the RULES.DICTIONARY_FORMAT table is greater than zero, the procedure will generate the "Dictionary Item not Found" warning as well as perform a series of checks to determine whether the higher-level nodes exist:
As shown in the table below, this iterative check requires the lower level values to be considered NULL. The DL1 Code does not require a check as there can be only one (1) node with one (1) value at this level.
If any of the higher level nodes are not found in the DICTIONARY_DETAIL table, they will be inserted along with the node for the incoming record in accordance with the table below:
Column in Table | Content from Incoming record | Content for Next-Higher Level Node (if needed). (Example assumes incoming record has DICTIONARY_LEVEL_CODE of 4.) | Content for Next-Higher Level node (if needed) |
---|---|---|---|
DICTIONARY_ID | DICTIONARY_ID | DICTIONARY_ID | DICTIONARY_ID |
SOURCE_CODE_ID | Set to 99 | Set to 99 | Set to 99 |
DICT_L1_CODE_VALUE | Set to "TOTAL" | Set to "TOTAL" | Set to "TOTAL" |
DICT_L2_CODE_VALUE | DL 2 CODE (Field #5) | DL 2 CODE (Field #5) | DL 2 CODE (Field #5) |
DICT_L3_CODE_VALUE | DL 3 CODE (Field #6) | DL 3 CODE (Field #6) | NULL |
DICT_L4_CODE_VALUE | DL 4 CODE (Field #7) | NULL | NULL |
DICT_L5_CODE_VALUE | DL 5 CODE (Field #8) | DL 5 CODE (Field #8) | DL 5 CODE (Field #8) |
DICT_L6_CODE_VALUE | DL 6 CODE (Field #9) | DL 6 CODE (Field #9) | DL 6 CODE (Field #9) |
DICT_L7_CODE_VALUE | DL 7 CODE (Field #10) | DL 7 CODE (Field #10) | DL 7 CODE (Field #10) |
DICT_L8_CODE_VALUE | DL 8 CODE (Field #11) | DL 8 CODE (Field #11) | DL 8 CODE (Field #11) |
DICTIONARY_DETAIL_ID | Assigned as next instance. | Assigned as next instance. | Assigned as next instance. |
UPDATE_SOURCE | Set to "TICEAGLE" | Set to "CLPEAGLE" | Set to "CLPEAGLE" |
UPDATE_DATE | Set to system date. | Set to system date. | Set to system date. |
DICTIONARY_ITEM_ID | Set equal to 1+(the maximum value in the dictionary_item_id columns for records having the same Dictionary_id) | Set equal to 1 + (the maximum value in the Dictionary_item_ID column for records having the same Dictionary_id | Set equal to 1 + (the maximum value in the Dictionary_Item_ID column for records having the same Dictionary_ID) |
PROCESS_FLAG | Set to "N" | Set to "N" | Set to "N" |
TRANS_FLAG | Set to "N" | Set to "N" | Set to "N" |
Â