FLAM4SEPA-API
FLAM4 SEPA Archive Interface (z/OS only)
The FLAM 4 SEPA archive

FLAM 4 SEPA is a special solution to archive SEPA transaction data with the old FLAM4 record interface using four separate FLAMFILEs in conjunction. The 4 in the name has two meanings: It is a solution for SEPA and is based on FLAM version 4 components.

The FLAM 4 SEPA archive offers a set of functions. The first function can be used to load the archive with sequential, ascending records or append to it (RC="02"). The second function can be used to loop records up in the archive. The third function can be used to update or delete transaction records in the archive. The two additional utility functions can be used to migrate or regenerate the signature file to improve lookup performance.

For lookup, this solution calculates Bloom filters for the defined search fields. All these Bloom filters for all search fields combined are called signature. Each Bloom filter covers a maximum of 128 records, i.e one signature record is written to the signature FLAMFILE per 128 records. These signatures are used to find candidate FLAM segments that need to be decompressed. After decompression, the segment is searched sequentially, comparing the search fields. For each match, a result dataset is written to an output file for further processing. The quality of the signatures determines how many segments must be unpacked from a FLAMFILE and thus the lookup time.

The load dataset consists of three parts. The first part contains the transaction data (COBOL copy book). The second part the corresponding inbound SEPA XML (request) and the third part the corresponding outbound SEPA XML (response) data. These three parts are split and written to different KSDS FLAMFILEs.

Each FLAM 4 SEPA archive consists in total of four FLAMFILEs. The signature file is used to look requested records up, without decompression of the whole archive. The transaction data is used to compare with the search fields. If it matches, a result record is built containing a request ID, the transaction data and the two XML data portions.

The interface is a COBOL interface. All fields in the structures defined below are numeric or string data. String data is padded with whitespace on the right. Numeric data is padded on the left with 0. All bytes are printable, except for the search fields in the lookup structure. These are ignored if low values are found.

The interface has a version in the function name because the interface (version 21 to 22) or the behavior (version 22 to 23) are changed. Additionally, the different versions require different static allocations of the FLAMFILEs.

For version older than 23:

  • TRADAT: KSDS(RECL(2048),KEYOFS(0),KEYLEN(51))
  • XMLINP: KSDS(RECL(4096),KEYOFS(0),KEYLEN(34))
  • XMLOUT: KSDS(RECL(4096),KEYOFS(0),KEYLEN(34))
  • SIGDAT: PSFB(RECL(2048))

For version since 23:

  • TRADAT: KSDS(RECL(2048),KEYOFS(0),KEYLEN(51))
  • XMLINP: KSDS(RECL(4096),KEYOFS(0),KEYLEN(34))
  • XMLOUT: KSDS(RECL(4096),KEYOFS(0),KEYLEN(34))
  • SIGDAT: KSDS(RECL(4096),KEYOFS(0),KEYLEN(51))