Op Code (Hex) | Operand 1 | |||
---|---|---|---|---|
1051 | Decompress data template |
Bound program access |
---|
|
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).
06 Addressing
08 Argument/Parameter
0C Computation
10 Damage Encountered
1C Machine-Dependent
20 Machine Support
22 Object Access
24 Pointer Specification
2E Resource Control Limit
36 Space Management
38 Template Specification
44 Protection Violation