Functional Description
Purpose
The purpose of this function is to store all the information related to employee level in
relationship to the employee's supervisor.
Setup Notes and Prerequisites
Records can be Read, Added, Deleted, or Updated to the cache, depending on Cache Action Code, CACTN,
passed in. The following is a list of the modes used to select cache processing options:
Input
Processing TypeType
============
Cache Get 1
Cache Add 2
Cache Update 3
Cache Delete 4
Cache Delete All 5
Cache Get Next 6
Cache Add/Update 7 (Do Not Use)
Cache End 8
Cache Close Cursor 9
Return errors through Error Message ID, DTAI.
The cache Key is as follows:
JobNumberA (from next number server X0010)
nLevelInRelationToEmployee
cClearWorkfile (Always set to 1)
between a full or a partial fetch. JobNumberA must always be part of the key.
The Cache Cursor, GENLNG must be past to and from the BSFN.
When adding a record always attempt to Get the record first. If no error is returned then the record
already exists and it cannot be added.
Special Logic
Technical Specifications
include the header file b0500380.h
Declare Variable
IDnJDBReturn;
ID idReturnValue= ER_SUCCESS;
char szErrorID[11];
int iCacheActionCode;
Declare Data Structures
DSD0500380A dsCacheKey;
DSD0500380A dsSaveData;
Declare pointers
HUSER hUser = (HUSER) NULL;
HCACHE hCacheHandle = (HCACHE) NULL;
Check for NULL pointers, if there are null pointers set error '4363'
Begin Main Processing
Initialization Of DS Structure and Save of Workfields
Initialize the Behavior
If an error occurs initializing the behavior and if cSuppressErrorMessage does not = '1' then
set error.
iCacheActionCode=atoi(lpDS->szCacheActionCode);
Initialize the Cache
Call internal function I00500380_InitCache
If no error initializing cache then Process Action code
If iCacheActionCode past in = 1 (Get) then call internal function
I0500380_CacheAdd.
If iCacheActionCode past in = 3 (Update) then call internal function
I0500380_CacheDeleteAll.
If iCacheActionCode past in = 6 (Get Next) then call internal functionI0500380_CacheGetNext.
If iCacheActionCode past in = 7 (Add Update) then call internal function
I0500380_CacheAddUpdate.
If iCacheActionCode past in = 8 (End) then call JDE function
JdeCacheTerminateAll.
If iCacheActionCode past in = 9 (Close Cursor) then call internal
Return value of saved fields after cache processing is completed
szErrorMessageID = szErrorID
mnNumberKeys = mnNumberKeys);
Function Clean Up
Free the Behavior
If the pointer szErrorMessageID is not blank and cSuppressErrorMessage does not = '1' then set error.
Internal functions
Function: I0500380_InitCache
Initialize cache for Benefit Categories
Declare Variables
DSD0500380AdsCacheKey;
JDECMINDEXSTRUCTIndex[1];
Main Processing
Initialize output
SzErrorID = ""
Initialize the cache
Setup And Initialize Cache-Keys to Create Cache once
Set Memory, memset(Index, 0x00, sizeof(JDECMINDEXSTRUCT));
Set the number of segments of the key to = '4'
The first segment of the key is mnJobNumberA
Index->CacheKey[0].nOffset = offsetof(DSD0500380A, mnJobnumberA);
Index->CacheKey[1].nOffset = offsetof(DSD0500380A, mnAddressNumber);
Index->CacheKey[2].nOffset = offsetof(DSD0500380A, LevelInRelationToEmployee);
Index->CacheKey[3].nOffset = offsetof(DSD0500380A, cClearWorkFile);
Set lphCacheHandle = "B0500380",
If there is an error szErrorID = ERR_INIT_CACHE
Function: I0500380_CacheGet
Declare Variables
JDECM_RESULT jdeCacheCode = JDECM_PASSED;
int iNumberOfKeys;
HJDECURSOR hCursor = (HJDECURSOR) NULL;
DSD0500380dsCacheData;
BOOLbChangedKey;
Main Processing
Initialize output
Set Memory
szErrorID = ""
Initialize Variables
Open the Cursor if error then szErrorID = "ERR_OPEN_CURSOR"
If no error Reset Cursor
If iNumberOfKeys = '0' then Fetch the first record
Else fetch the record matching the keys
If there is an error with the fetch then szErrorID = ERR_FETCH_RECORD
if the Cursor does not = NULL then close the cursor
Function: I0500380_CacheAdd
Declare Variables
ID idCacheCursor;
Initialize output
SzErrorID = ""
Set the cache with the number or keys = mnNumberKeys
Set the cursor = idCacheCursor
Copy the memory needed the size of DSD0500380
Add the record the size of DSD0500380
If Add fails then szErrorID = ERR_ADD_RECORD
Function: I0500380_CacheUpdate
Declare Variables
HJDECURSOR hCursor = (HJDECURSOR) NULL;
DSD0500380dsCacheData;
Initialize output
SzErrorID = ""
Set the cache with the number or keys = mnNumberKeys
Set the cursor = idCacheCursor
Set the memory needed the size of DSD0500380
Fetch the record, if record is found Update the record
If there is an error then szErrorID = ERR_UPDATE_RECORD
Close the Cursor
Function: I0500380_CacheDelete
Declare Variables
JDECM_RESULT jdeCacheCode = JDECM_PASSED;
int iNumberOfKeys;
HJDECURSOR hCursor = (HJDECURSOR) NULL;
Main Processing
Initialize Variables
SzErrorID = ""
Set the cache with the number or keys = mnNumberKeys
If Number Of Keys = 0 Then call internal function I0500380_CacheDeleteAll
else
Initialize the cursor
Set the memory the size of DSD0500380
Fetch the record
If fetch is successful then delete the record
If there is an error deleting then szErrorID = ERR_DELETE_RECORD
If there is an error fetching then szErrorID = ERR_FETCH_RECORD
Close the cursor
Function: I0500380_CacheDeleteAll
Declare Variables
JDECM_RESULT jdeCacheCode = JDECM_PASSED;
int iNumberOfKeys;
HJDECURSOR hCursor = (HJDECURSOR) NULL;
Main Processing
Initialize input and output
SzErrorID = ""
Copy the memory needed the size of DSD0500380
Set the cache with the number or keys = mnNumberKeys
Open the Cursor
Delete all records
If there is an error on delete then szErrorID = ERR_DELETE_RECORD
Close Cursor
Function: I0500380_CacheGetNext
Notes:Assumption is made this function will be performed until the
Cache Index is no longer equal to the input index. If this function is prematurely ended, the cursor
will have to be closed using function I0500380_CloseCursor, or memory leaks will result from the
cursor being left open.
Declare Variables
JDECM_RESULTjdeCacheCode = JDECM_PASSED;
intiNumberOfKeys;
BOOLbMatchKey=FALSE;
BOOLbChangedKey;
HJDECURSOR hCursor = (HJDECURSOR) NULL;
DSD0500380dsCacheData;
ID idCacheCursor;
Main Processing
Initialize output
SzErrorID = ""
Set the memory needed the size of DSD0500380
Initialize Variables
Set the cache with the number or keys = mnNumberKeys
Set cursor for either initial fetch or subsequent fetches
If idCacheCursor = 0L then this is a subsequent search
Open Cursor
Fetch the Next record
If idCacheCursor <> 0L fetch the first record
If the fetch was successful
If the keys do not match then szErrorID = ERR_FETCH_RECORD
set idCacheCursor = 0L
Function: I0500380_CacheAddUpdate
DO NOT USE THIS FUNCTION
Function: I0500380_CloseCursor
Declare Variables
If idCacheCursor does not equal 0L then close cursor
Set idCacheCursor = 0L
Function: I0500380_ChangedKey
Test to see if the key matches the key in cache
If it has changed then bChangedKey = True
Else
bChangedKey = FALSE;
End of Internal functions
D0500380A - Employee/Supervisor Relationship Level Table Cache
Parameter Name | Data Item | Data Type | Req/Opt | I/O/Both |
---|---|---|---|---|
mnJobnumberA | JOBS | MATH_NUMERIC | REQ | INPUT |
The job number (work station ID) which executed the particular job. | ||||
mnAddressNumber | AN8 | MATH_NUMERIC | OPT | BOTH |
A number that identifies an entry in the Address Book system, such as employee, applicant, participant, customer, supplier, tenant, or
| ||||
nLevelInRelationToEmployee | LVEL | integer | OPT | BOTH |
The number of organizational levels between an employee and a higher level supervisor. An employee's direct supervisor would be a
| ||||
cClearWorkFile | CLWF | char | OPT | BOTH |
A field that indicates whether the workfiles will be cleared before the system processes the current benefits enrollment. | ||||
mnSupervisor | ANPA | MATH_NUMERIC | OPT | BOTH |
The address book number of the supervisor. | ||||
mnNumberKeys | NKEYS | MATH_NUMERIC | REQ | INPUT |
The number of keys in an index that will be used to retrieve, delete, or update a record. | ||||
idCacheCursor | GENLNG | ID | REQ | BOTH |
General purpose ID variable. | ||||
szCacheActionCode | CACTN | char | REQ | INPUT |
A code that indicates the activity you want to perform. Valid codes:
o Get - Retrieve the cache element
o Add - Add a cache element
o
| ||||
cSuppressErrorMessage | SUPPS | char | OPT | INPUT |
A flag indicating whether or not runtime error messaging will occur when an error message is issued from a business function.
0 = allow
| ||||
szErrorMessageID | DTAI | char | OPT | OUTPUT |
A code that identifies and defines a unit of information. It is an alphanumeric code up to 8 characters long that does not allow blanks or
|
None |
None |