Decompress Data (DCPDATA)

Instruction Syntax

Op Code (Hex) Operand 1
1051 Decompress data template
Operand 1: Space pointer.

Bound Program Access
Built-in number for DCPDATA is 108.
DCPDATA (
         decompress_data_template   : address
)

Description:

The instruction decompresses user data. Operand 1 identifies a template which identifies the data to be decompressed. The template also identifies the result space to receive the decompressed data.

The decompress data template must be aligned on a 16-byte boundary. The format is as follows:

Offset  
Dec Hex Field Name Data Type and Length
0 0 Reserved (binary 0) Char(4)
4 4 Result area length Bin(4)
8 8 Actual result length Bin(4) +
12 C Reserved (binary 0) Char(20)
32 20 Source space pointer Space pointer
48 30 Result space pointer Space pointer

64

40

--- End ---

 

Note: The input value associated with template fields annotated with a plus sign (+) are ignored by the instruction; these fields are updated by the instruction to return information about instruction execution.

The data at the location specified by the source space pointer is decompressed and stored at the location specified by the result space pointer. The actual result length is set to the number of bytes in the decompressed result. The source data is not modified.

The result area length field value must be greater than or equal to zero. A zero value means not specified. The length of the source data is not supplied in the template because this length is contained within the compressed data.

If the decompressed result data will not fit in the result area (as specified by the result area length), the decompression is stopped and only as many decompressed bytes as will fit in the result area are stored. The actual result length is always set to the full length of the result, which may be larger than the result area length.

The compressed data (previously compressed with CPRDATA) contains a signature which is checked by DCPDATA. The signature indicates which compression algorithm was used to compress the data. If the signature is invalid, an invalid compressed data (hex 0C14) exception is signaled. It is possible that the signature appears valid even though the compressed data has been corrupted. In almost all cases, the DCPDATA instruction will signal the invalid compressed data (hex 0C14) exception. Data corruption will not be detected only in the case when the decompression algorithm applied to the corrupted data produces the correct number of decompressed bytes.

It is not possible to corrupt the compressed data in such a way that the DCPDATA instruction would fail (that is, function check) or fail to terminate (that is, loop).

Authorization Required

  • None

Lock Enforcement

  • None

Exceptions

  • 06 Addressing
    • 0601 Space Addressing Violation
    • 0602 Boundary Alignment
    • 0603 Range
  • 08 Argument/Parameter
    • 0801 Parameter Reference Violation
  • 0C Computation
    • 0C14 Invalid Compressed Data
  • 10 Damage Encountered
    • 1044 Partial System Object Damage
  • 1C Machine-Dependent
    • 1C03 Machine Storage Limit Exceeded
  • 20 Machine Support
    • 2002 Machine Check
    • 2003 Function Check
  • 22 Object Access
    • 2202 Object Destroyed
    • 2203 Object Suspended
    • 2208 Object Compressed
    • 220B Object Not Available
  • 24 Pointer Specification
    • 2401 Pointer Does Not Exist
    • 2402 Pointer Type Invalid
    • 2403 Pointer Addressing Invalid Object Type
  • 2E Resource Control Limit
    • 2E01 User Profile Storage Limit Exceeded
  • 36 Space Management
    • 3601 Space Extension/Truncation
  • 38 Template Specification
    • 3801 Template Value Invalid
  • 44 Protection Violation
    • 4401 Object Domain or Hardware Storage Protection Violation
    • 4402 Literal Values Cannot Be Changed