CacheProcessMultiPlants

Cache, Process Multi Plants

Minor Business Rule

Object Name: B3500060

Parent DLL: CMFG

Location: Client/Server

Language: C

1.Functional Description

1.1Purpose

This function will perform Get, Add, Update, Delete, Delete All, Get Next, Add/Update, and Terminate 

functions on the MRP Multi-Plants Cache used in the Multi-Plant MRP/MPS planning programs (R3483).


The calling application is responsible for loading all appropriate key values to the data 

structure and identifying the number of keys to use in retrieval/update processes.


1.2 Setup Notes and Prerequisites
Cache Action Codes Standard

• 

'1' Get - retrieve the cache element.
• '2' Add - add a cache element.
• '3' Update - update a cache element.
• '4' Delete - delete a cache element.
• '5' Delete All - delete all cache elements
• '6' Get Next - retrieve the next cache element
• '7' Add/Update - will add if element does not exist, will change if it does exist.
• '8' Terminate - terminate cache
• '9' Close cursor and free data ptr
• 'E' Gets the number of elements matching the keys specified, Record Type and/or Branch.
• 'D' Debug Mode - Dumps the contents of the entire cache into a text file
• Number of Keys 
• 
If the number of keys is passed as a parameter, the business function uses this value to setup 
key values for a Get, Update, Delete, Get Next, and Add/Update, as well as Mode '9'.

• A zero may be passed to retrieve, update, or delete the first record.

• When action code GET is used, the function saves the cache cursor pointer if the fetch is successful 
and SequentialFetch = '1'.  This allows the calling application to use GET NEXT to fetch elements 

from the cache sequentially.  If GET NEXT is called until the end of the keyed cache dataset is found, 

the function automatically closes the open cursor.  Otherwise, the calling application is responsible 

for closing the cursor

1.3Special Logic

This function creates a unique cache for each Multi-plant MRP/MPS planning process.  The function 

appends the input Job Number string to the two character ID 'MP' to build the cache name used for the 

calling application.


2.Technical Specifications

Cache Layout:Cache includes all of the following fields; key fields are noted.


 Data Item Data Structure DescriptionKey Field

 EV01      Record Type                      Y

 MCU      Branch                      Y

 INT01      Bucketless Dates

 INT01      Bucket Dates 

 DATE01Start Date

 DATE01End Date

 DATE01First Date 

 DATE01Begin Date

 DATE01Forecast Consumption Begin Date



I.Perform setup functions 

A.Initialize cache to get handle.
B.If not successful, set error "032E", set Cache Error Code = '3', and return failure.

C.Validate input parameters Number Of Keys, Action Code, and Comparison Flag.

D.If not valid, set error "032E", set Cache Error Code = '2', and return failure.

E.Set Cache Error Code = '0'

F.Set return code to success.


II.Processing Based on Mode.


A.If Cache Action Code is '1' - GET:
1.Open cursor.
2.Retrieve the first element on the cache matching the key values passed as input.  If the 

input Number of Keys is zero, fetch the first element in the cache.

3.Load the values from the retrieved element into the data structure to be passed back to 

the calling program.

4.If SequentialFetch = '1', return cursor pointer to calling application.

5.If get fails set Cache Error Code = '6'.


B.If Cache Action Code is '2' - ADD:
1.Insert a new cache element with values from data structure.
2.If add fails set error "032E", set Cache Error Code = '4', and return failure.


C.If Cache Action Code is '3' - UPDATE:
1.Update existing cache element with values from data structure.
2.If update fails set error "032E", set Cache Error Code = '4', and return failure.


D.If Cache Action Code is '4' - DELETE:
1.If the Number of Keys is not 0, delete all elements in the cache matching the key values 
passed as input.

2.If the number of keys is 0, delete the first cache element.

3.If delete fails, set Cache Error Code = '5'.


E.If Cache Action Code is '5' - DELETE ALL:

1.Delete all elements in the cache.
2.If delete fails, set Cache Error Code = '5'.


F.If Cache Action Code is '6' - GET NEXT:
1.Using the input cursor pointer from the previous GET action, retrieve the next element in 
the cache matching the key values passed as input (the cursor should have been set through a 

previous "Get" action, i.e. action code '1'.  If the Number of Keys is zero then fetch the 

next record without using any key).

2.Load the values from the retrieved element into the data structure to be passed back to 

the calling program.

3.If there are no more elements, close the cursor and set Cache Error Code = '1'.


G.If Cache Action Code is '7' - ADD/UPDATE:

1.Delete Record , if one exists,  that matches the full key from Input.
2.Insert a new cache element with values from data structure.

3.If add fails set error "032E", set Cache Error Code = '4', and return failure.


H.If Cache Action Code is '8' - END
1.If the input CacheCursorPtr is not zero, retrieve the pointer and close the cursor.
2.Perform cleanup functions (Terminate cache).


I.If Cache Action Code is '9' - Close Cursor
1.If Input CacheCursor Ptr is not zero, 
2.Retrieve the Data Ptr and
3.Close Cursor

4.Remove Data Ptr and set Input CacheCursorPtr to 0.


J.If Cache Action Code is 'E' - RETURN Number of Elements
1.Read the entire cache and return the number of elements in the cache matching the keys 
specified.


K.If Cache Action Code is 'D' - DUMP
1.Dump entire cache into a text file


Data Structure

D3500060 - Cache, Process Multi Plants

Parameter NameData ItemData TypeReq/OptI/O/Both
szJobNumberJOBcharNONENONE

Job Number

szBranchMCUcharNONENONE

An alphanumeric code that identifies a separate entity within a business for which you want to track costs. For example, a business unit 
might be a warehouse location, job, project, work center, branch, or plant. You can assign a business unit to a document, entity, or person for 
purposes of responsibility reporting. For example, the system provides reports of open accounts payable and accounts receivable by 
business unit to track equipment by responsible department. Business unit security might prevent you from viewing information about business units 
for which you have no authority.

cRecordTypeEV01charNONENONE

An option that specifies the type of processing for an event.

nNumberOfBucketlessDatesINT01integerNONENONE

Number of Days in Future to Query for Responses Due. 

nNumberOfBucketDatesINT01integerNONENONE

Number of Days in Future to Query for Responses Due. 

jdStartDateDATE01JDEDATENONENONE

Event point for JDE Date.

jdEndDateDATE01JDEDATENONENONE

Event point for JDE Date.

jdFirstDateDATE01JDEDATENONENONE

Event point for JDE Date.

jdBeginDateDATE01JDEDATENONENONE

Event point for JDE Date.

jdForecastConsumptionBeginDateDATE01JDEDATENONENONE

Event point for JDE Date.

nNumberOfElementsINT01integerNONENONE

Number of Days in Future to Query for Responses Due. 

cCacheActionCodeEV01charNONENONE

An option that specifies the type of processing for an event.

cCacheErrorCodeEV01charNONENONE

An option that specifies the type of processing for an event.

nNumberOfKeysINT01integerNONENONE

Number of Days in Future to Query for Responses Due. 

cSuppressErrorMessageSUPPScharNONENONE

A flag indicating whether or not runtime error messaging will occur when an error message is issued from a business function.        0 = allow 
runtime error message handling.        1 = suppress runtime error message handling.

szErrorMessageIDDTAIcharNONENONE

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 
special characters such as %, &, or +. You create new data items using system codes 55-59. You cannot change the alias.

idCacheCursorPointerGENLNGIDNONENONE

General purpose ID variable.

cSequentialFetchEV02charNONENONE

An option that specifies the type of processing for an event.

jdFirstDateInCacheDATE01JDEDATEOPTNONE

Event point for JDE Date.

Related Functions

None

Related Tables

None