#### ARMOR

#### Synopsis

    HELP:   Write ASCII armored output
    TYPE:   OBJECT
    SYNTAX: ARMOR(FORMAT=OFF/STD/EXT,CHRSET=NONE/SYSTEM/ASCII/UCS1/UTF8/EBCDIC/UCS2BE/UTF16BE/UCS2LE/UTF16LE/UCS4BE/UTF32BE/UCS4LE/UTF32LE/LOCAL,DELIM/RECDLM=HOST/BIN/TXT/NL/USS/LF/UNIX/CR/OLDMAC/CRLF/WINDOWS/DLM/SYSTEM,COMMENT='str')

#### Description

The ARMOR object activates ASCII armor encoding. It also supports EBCDIC as charset. ASCII-armored data is Base64 encoded binary data with a line length of 76 character followed by an optional checksum, surrounded by a header and trailer. The component in whose context the ARMOR object is used (usually PGP) defines the header and trailer information like in the example below:

    -----BEGIN header string-----
    Version: version string
    Comment: comment string

    yDgBO22WxBHv7O8X7O/jygAEzol56iUKiXmV+XmpCtmpqQUKiQrFqclFqUDBovzS
    vBSFjNSiVHsuAA==
    =njUN
    -----END header string-----

The ARMOR support adds by default several file attributes which allows FLAM to restore host datasets from such an armored file. The keywords below are supported:

- Format: BINARY/RECORD/RECTXT/CHAR/TEXT/XML
- Charset: Encoding string (IBM-1141/UTF-8/...)
- Platform: free text (e.g. Linux on x86 with 64 bit (linx64d0))
- BinaryDelimiter: Hex-value for a binary record delimiter (DLM)
- LengthField: L4X/L4I/B4X/B4I/HBX/HBI/HLX/HLI (see FMT.REC(METHOD))
- TextDelimiter: Hex value for a text record delimiter (TXT)
- FileOrganization: SEQ/RDS/KDS/EDS/... (see FIO.REC(FILORG))
- BlockSize: decimal value for the block size
- RecordFormat: (see FIO.REC(RECFMT))
- RecordLength: decimal value for the record length
- KeyLength: key length of VSAM KSDS
- KeyPosition: key position of VSAM KSDS
- SlotNumbers: Yes (8 byte slot number of an RRDS in front of the record)
- PrintControl: Yes (1 byte print control character in front of the record)

The printed values are decimal numbers or keywords used by FLCL. You can find a detailed description for each keyword if you search for it in this document. Below you can see an example for a VSAM Relative Record Dataset (RRDS) archived in a BZIP2 file using a binary delimiter to separate each record:

    flcl conv
       read.record(file='TST.IDAT.RRDS')
       write.record(file='.ODAT.BZ2ARMOR.RRDS' recdelim=x'FE03FF'
       prnc=retain comp.bzip() encode.armor(delim=host))

    -----BEGIN BZIP2 FILE-----
    Version: FL-CNVBZ2 5.1.16.13587
    Comment: created with FLUCv5.1.12.13587 (www.flam.de)
    Platform: z/OS on SystemZ with 31 bit (zosz31d0)
    BinaryDelimiter: FE03FF
    FileOrganization: RDS
    BlockSize: 18432
    RecordFormat: FR
    RecordLength: 60
    SlotNumbers: Yes

    QlpoMTFBWSZTWVfxaJMAAAD0B9nAQAAABkAAIiAIIBkgAAGgAEDapBpp6ho2nqhQNNDIyYjKJDNl
    bfpIZgkbO3n6iXJZxDK6wlOU8H4u5IpwoSCv4tEm
    =XvA6
    -----END BZIP2 FILE-----

#### Arguments

- `NUMBER: FORMAT=OFF/STD/EXT - Format of ARMOR header (which information is printed) [EXT]`
  - `OFF - Disable the printout of key value lines in ARMOR header`
  - `STD - Only the standard key value pairs (Version, Comment, Chrset) for ARMOR header`
  - `EXT - All available key value pairs are printed to ARMOR header (required for archiving)`
- `NUMBER: CHRSET=NONE/SYSTEM/ASCII/UCS1/UTF8/EBCDIC/UCS2BE/UTF16BE/UCS2LE/UTF16LE/UCS4BE/UTF32BE/UCS4LE/UTF32LE/LOCAL - Character set [SYSTEM]`
  - `NONE - No character set defined`
  - `SYSTEM - SYSTEM (environment specific (on mainframe EBCDIC else ASCII))`
  - `ASCII - ASCII (mainly used in the for open system)`
  - `UCS1 - UCS-1 (for text formatting identical to ASCII < 64k)`
  - `UTF8 - UTF-8 (for text formatting identical to ASCII < 2M)`
  - `EBCDIC - EBCDIC (mainly used on IBM mainframe)`
  - `UCS2BE - UCS-2 Big Endian (multibyte character set < 64k)`
  - `UTF16BE - UTF-16 Big Endian (multibyte character set < 2M)`
  - `UCS2LE - UCS-2 Little Endian (multibyte character set < 64k)`
  - `UTF16LE - UTF-16 Little Endian (multibyte character set < 2M)`
  - `UCS4BE - UCS-4 Big Endian (multibyte character set < 64k)`
  - `UTF32BE - UTF-32 Big Endian (multibyte character set < 2M)`
  - `UCS4LE - UCS-4 Little Endian (multibyte character set < 64k)`
  - `UTF32LE - UTF-32 Little Endian (multibyte character set < 2M)`
  - `LOCAL - LOCAL (platform specific (on mainframe EBCDIC else ASCII))`
- `NUMBER: DELIM/RECDLM=HOST/BIN/TXT/NL/USS/LF/UNIX/CR/OLDMAC/CRLF/WINDOWS/DLM/SYSTEM - Line delimiter to use when mode is BLOCK and line>0 [SYSTEM]`
  - `HOST - Adds no delimiter (HOST)`
  - `BIN - Adds no delimiter (HOST)`
  - `TXT - Adds the system specific delimiter (DEFAULT)`
  - `NL - Adds delimiter new line (USS)`
  - `USS - Adds delimiter for USS (new line)`
  - `LF - Adds delimiter line feed (UNIX)`
  - `UNIX - Adds delimiter for UNIX (line feed)`
  - `CR - Adds delimiter carriage return (MAC)`
  - `OLDMAC - Adds delimiter for old MACs (carriage return)`
  - `CRLF - Adds delimiter carriage return line feed (WIN)`
  - `WINDOWS - Adds delimiter for WINDOWS (carriage return line feed)`
  - `DLM - Adds the system specific delimiter (DEFAULT)`
  - `SYSTEM - Adds the system specific delimiter (DEFAULT)`
- `STRING: COMMENT='str' - Define comment for ARMOR header [default]`