HELP: Description of all columns in the row TYPE: OBJECT SYNTAX: COLUMN[(NAME='str',INDEX(),POT='str',LOOKUP,NOCASE,LITERAL,NOTMTD=ZERO/MASK/RAND/IBAN)...]
Describes how a table column is indexed, compressed and/or encrypted. For compression and encryption, the name of the pot can be specified. This allows certain columns to be assigned to one or more pots. In addition, the indexing can be specified for later searches in the compressed and encrypted data. The method and length of the signature (bloom filter) can be specified. If the length of the signature is not specified, the minimal length of 4 is used. If only part of the column is to be indexed, an offset and length parameter can be used to cut out a piece of data for signing. This is mainly useful for simple records as a table with one column and can be used in this case to implement something like a VSAM KSDS.
If a KSDS or any record-oriented dataset is read with KEYLEN and KEYPOS (note: KEYPOS started with 1 but DATOFS started with 0) and no explicit row specification has been specified, the following row specification is automatically added if the record is still unchanged.
ROW(NAME='STDREC' COLUMN(NAME='RECORD' INDEX(METHOD=BF4 DATLEN=llll DATOFS=oooo SIGLEN=SL128 PRIKEY) LOOKUP))
This means that the indexing of a KSDS is automatically transferred (DATLEN=KEYLEN, DATOFS=KEYPOS-1) to the archive. If this is not desired, a corresponding row specification must be specified for table name STDREC.
The LOOKUP switch for a column causes a hash table in the background, which enables the lookup function for these columns to the clear matrix. All values over these columns must be unique, whereby this is only guaranteed for the respective matrix. This feature can be used to access certain records in a matrix more quickly, but it also means that more memory is used per matrix. FLAM itself uses this, for example, for the member name in the directory matrix and for both columns in the format matrix. In the case of element-wise and not record-orientated access, only one column of the table may be provided with a LOOKUP. If you work with the record functions against the matrix, more columns can be included in the hashtable and for indexed columns only the indexed part of the data is included in the hash calculation and the NOCASE switch is taken into account.
This makes sense above all if you have activated the PRIKEY switch for indexing in order to realize inserts, updates and deletes of records. If you also activate the LOOKUP switch for these columns, the matrices can be searched more quickly here, which is particularly useful with a large record counts per matrix. Depending on the application, you have to decide whether to set the LOOKUP for the column in addition to the PRIKEY definition. If these are not defined congruently, the matrices are searched sequentially.
For columns of the string data type, you can use the NOCASE switch to force the conversion of all upper case Latin letters (U0041-U005A) to lower case letters (U0061-U007A) for the signature generation, which then also applies to the data comparison. This makes it possible to realize non-case sensitive comparisons, but this must be taken into account when writing the data to the archive.
If only a few different values are used in a column and these then also appear repeatedly in different columns of different formats, such as a currency abbreviation (EUR, DLR, SFR, ...), then it can make sense to provide these columns with the literal flag so that these values are only held once in the global literal matrix for the archive and are not written to the assigned pot. This can lead to better compression. This applies in particular to header values of short roots in hierarchical data formats such as XML.
If access to a column has been restricted via the key rights, the method for handling these columns can be adapted here. If you select a method here that manipulates the data (MASK, RAND, IBAN), the matrix can no longer be written back. These methods can therefore only be used when reading.
STRING: NAME='str' - Logical name of the column
STRING: POT='str' - Pot used for compression and encryption [DEFAULT]
SWITCH: LOOKUP - Build hash table with this column for fast lookups into the clear matrix and ensure uniqueness of the record [OFF]
SWITCH: NOCASE - Activate case insensitive compare of strings (use standard Latin lower case character (0x61-0x7A)) [FALSE]
SWITCH: LITERAL - But values of this column to global literal matrix and not into the assigned pot (useful for selections) [OFF]
NUMBER: NOTMTD=ZERO/MASK/RAND/IBAN - Select certain method if access to column not allowed [ZERO]
ZERO - Return length or value of 0 for columns without access
MASK - Return string filled with '*' to mask each letter for columns without access
RAND - Fill up the string with random letters for columns without access
IBAN - Mask (*) any letter accept the first and last 3 values for columns without access