#### REC

#### Synopsis

    HELP:   Format data in several wrapped record elements (all meta data lost)
    TYPE:   OBJECT
    SYNTAX: REC(METHOD=WRP/LEN/L4I/L4X/B4I/B4X/S4I/S4X/HLI/HLX/HBI/HBX/HSI/HSX/DLM/DLN/ALL,RECLEN=num,RECDLM='bin'/CR-ASCII/LF-ASCII/NL-ASCII/CRLF-ASCII/CR-EBCDIC/LF-EBCDIC/NL-EBCDIC/CRLF-EBCDIC/CR-UTF08/LF-UTF08/NL-UTF08/CRLF-UTF08/CR-UTF16BE/LF-UTF16BE/NL-UTF16BE/CRLF-UTF16BE/CR-UTF16LE/LF-UTF16LE/NL-UTF16LE/CRLF-UTF16LE/CR-UTF32BE/LF-UTF32BE/NL-UTF32BE/CRLF-UTF32BE/CR-UTF32LE/LF-UTF32LE/NL-UTF32LE/CRLF-UTF32LE,RSTDAT=RECORD/ERROR/IGNORE,SUPPAd,PRSATR=ASA/MCC/REL/RELASA/RELMCC,WRPERR,BUFSIZ=num,INICNT=num)

#### Description

By default (i.e. no method provided), the object "format record" formats data blocks to records by slicing the block into records of the provided record length if none of the valid 4 byte length formats or the defined binary delimiter is detected. If the data is already organized as records, then the data is re-wrapped. You can enforce an error to prevent the default wrapping if no record length information is found.

If the method DLM is used, then a delimiter must be specified. When specifying a binary delimiter without a method or method DLN or ALL, then the detector will verify if the binary delimiter is present in the data. If you use archive formats where the file attributes can be stored, the binary delimiter will be set automatically

If you have written attributes (see FMT.BLK()) in front of the records, you can parse these attributes. If you use archive formats where the file attributes can be stored, the PRSATR selection will be set to the right method automatically.

#### Arguments

- `NUMBER: METHOD=WRP/LEN/L4I/L4X/B4I/B4X/S4I/S4X/HLI/HLX/HBI/HBX/HSI/HSX/DLM/DLN/ALL - Method for record formatting [AUTO]`
  - `WRP - Wrap blocks in records of defined record length`
  - `LEN - Parse data based on 4 byte length fields with auto detection of the format`
  - `L4I - Parse data based on 4 byte length fields: Little endian integer, length inclusive`
  - `L4X - Parse data based on 4 byte length fields: Little endian integer, length exclusive (ZIP)`
  - `B4I - Parse data based on 4 byte length fields: Big endian integer, length inclusive`
  - `B4X - Parse data based on 4 byte length fields: Big endian integer, length exclusive (USS)`
  - `S4I - Parse data based on 4 byte length fields: System endian integer, length inclusive`
  - `S4X - Parse data based on 4 byte length fields: System endian integer, length exclusive (VAR)`
  - `HLI - Parse data based on 4 byte length fields: Little endian short (LLxx), length inclusive`
  - `HLX - Parse data based on 4 byte length fields: Little endian short (LLxx), length exclusive`
  - `HBI - Parse data based on 4 byte length fields: Big endian short (LLxx), length inclusive (MVS)`
  - `HBX - Parse data based on 4 byte length fields: Big endian short (LLxx), length exclusive`
  - `HSI - Parse data based on 4 byte length fields: System endian short (LLxx), length inclusive`
  - `HSX - Parse data based on 4 byte length fields: System endian short (LLxx), length exclusive`
  - `DLM - Parse data based on the provided binary record delimiter`
  - `DLN - Parse delimiter or length field with auto detection`
  - `ALL - Parse delimiter or length field with auto detection else wrap in records`
- `NUMBER: RECLEN=num - Maximum length of a record [512] also used for wrapping`
- `STRING: RECDLM='bin'/CR-ASCII/LF-ASCII/NL-ASCII/CRLF-ASCII/CR-EBCDIC/LF-EBCDIC/NL-EBCDIC/CRLF-EBCDIC/CR-UTF08/LF-UTF08/NL-UTF08/CRLF-UTF08/CR-UTF16BE/LF-UTF16BE/NL-UTF16BE/CRLF-UTF16BE/CR-UTF16LE/LF-UTF16LE/NL-UTF16LE/CRLF-UTF16LE/CR-UTF32BE/LF-UTF32BE/NL-UTF32BE/CRLF-UTF32BE/CR-UTF32LE/LF-UTF32LE/NL-UTF32LE/CRLF-UTF32LE - Delimiter used to parse end of record`
  - `CR-ASCII - Delimiter: carriage return in ASCII (0x0D)`
  - `LF-ASCII - Delimiter: line feed in ASCII (0x0A)`
  - `NL-ASCII - Delimiter: new line in ASCII (0x85)`
  - `CRLF-ASCII - Delimiter: carriage return line feed in ASCII (0x0D0A)`
  - `CR-EBCDIC - Delimiter: carriage return in EBCDIC (0x0D)`
  - `LF-EBCDIC - Delimiter: line feed in EBCDIC (0x25)`
  - `NL-EBCDIC - Delimiter: new line in EBCDIC (0x15)`
  - `CRLF-EBCDIC - Delimiter: carriage return line feed in EBCDIC (0x0D25)`
  - `CR-UTF08 - Delimiter: carriage return in UTF-8 (0x0D)`
  - `LF-UTF08 - Delimiter: line feed in UTF-8 (0x0A)`
  - `NL-UTF08 - Delimiter: new line in UTF-8 (0xC285)`
  - `CRLF-UTF08 - Delimiter: carriage return line feed in UTF-8 (0x0D0A)`
  - `CR-UTF16BE - Delimiter: carriage return in UTF-16BE (0x000D)`
  - `LF-UTF16BE - Delimiter: line feed in UTF-16BE (0x000A)`
  - `NL-UTF16BE - Delimiter: new line in UTF-16BE (0x0085)`
  - `CRLF-UTF16BE - Delimiter: carriage return line feed in UTF-16BE (0x000D000A)`
  - `CR-UTF16LE - Delimiter: carriage return in UTF-16LE (0x0D00)`
  - `LF-UTF16LE - Delimiter: line feed in UTF-16LE (0x0A00)`
  - `NL-UTF16LE - Delimiter: new line in UTF-16LE (0x8500)`
  - `CRLF-UTF16LE - Delimiter: carriage return line feed in UTF-16LE (0x0D000A00)`
  - `CR-UTF32BE - Delimiter: carriage return in UTF-32BE (0x0000000D)`
  - `LF-UTF32BE - Delimiter: line feed in UTF-32BE (0x0000000A)`
  - `NL-UTF32BE - Delimiter: new line in UTF-32BE (0x00000085)`
  - `CRLF-UTF32BE - Delimiter: carriage return line feed in UTF-32BE (0x0000000D0000000A)`
  - `CR-UTF32LE - Delimiter: carriage return in UTF-32LE (0x0D000000)`
  - `LF-UTF32LE - Delimiter: line feed in UTF-32LE (0x0A000000)`
  - `NL-UTF32LE - Delimiter: new line in UTF-32LE (0x85000000)`
  - `CRLF-UTF32LE - Delimiter: carriage return line feed in UTF-32LE (0x0D0000000A000000)`
- `NUMBER: RSTDAT=RECORD/ERROR/IGNORE - Defines handling of remaining rest [auto]`
  - `RECORD - Build a record with the remaining rest (default for delimiter)`
  - `ERROR - Return an error if a remaining rest found (default for length fields)`
  - `IGNORE - Ignore a remaining rest (no record, no error)`
- `SWITCH: SUPPAd - Suppress trailing padding/equal bytes [FALSE]`
- `NUMBER: PRSATR=ASA/MCC/REL/RELASA/RELMCC - Parse attributes (e.g. print control character) in front of the record [NONE]`
  - `ASA - ASA print control character (1 byte)`
  - `MCC - Machine print control character (1 byte)`
  - `REL - Slot number of RRDS (8 byte integer in big endian)`
  - `RELASA - Slot number plus ASA print control character (9 byte)`
  - `RELMCC - Slot number plus Machine print control character (9 byte)`
- `SWITCH: WRPERR - If no method defined (auto detection) enforce an error if no length format (wrapping) detected [FALSE]`
- `NUMBER: BUFSIZ=num - Initial buffer size for preallocation [65536]`
- `NUMBER: INICNT=num - Initial amount of records for preallocation [128]`