java.lang.Object
com.ibm.jzos.fields.PackedDecimalAsLongField
- All Implemented Interfaces:
Field
,LongAccessor
- Direct Known Subclasses:
PackedSignedLongField
,PackedUnsignedLongField
A packed decimal
Field
up to 18 digits (10 bytes) with long accessors.
- Since:
- 2.1.0
-
Constructor Summary
ConstructorsConstructorDescriptionPackedDecimalAsLongField
(int offset, int precision, boolean signed) Construct an instance -
Method Summary
Modifier and TypeMethodDescriptionboolean
Compare a Long, possibly null, with a long for equality.int
Answer the length of the field described by the receiverlong
getLong
(byte[] buffer) Answer a long value from the given byte array buffer, at the offset of this field.long
getLong
(byte[] buffer, int bufOffset) Answer a long value from the given byte array buffer, at the bufOffset + offset of this field.int
Answer the offset of this field into some array of bytesint
Answer the number of decimal digits of precision.boolean
isSigned()
Answer whether the field is signedvoid
putLong
(long value, byte[] buffer) Put a long value into the given byte array buffer, at the offset of this field.void
putLong
(long value, byte[] buffer, int bufOffset) Put a long value into the given byte array buffer, at the bufOffset + offset of this field.void
setOffset
(int offset)
-
Constructor Details
-
PackedDecimalAsLongField
public PackedDecimalAsLongField(int offset, int precision, boolean signed) Construct an instance- Parameters:
offset
- position of this fieldprecision
- total number of digits <= 18. If even, this value is rounded up to the next odd number.signed
- if true the last nibble is a sign
-
-
Method Details
-
getByteLength
public int getByteLength()Answer the length of the field described by the receiver- Specified by:
getByteLength
in interfaceField
- Returns:
- int
-
getOffset
public int getOffset()Answer the offset of this field into some array of bytes -
setOffset
public void setOffset(int offset) -
getPrecision
public int getPrecision()Answer the number of decimal digits of precision.- Returns:
- int
-
getLong
Answer a long value from the given byte array buffer, at the offset of this field.Note: the data is not checked for valid decimal digits, although the sign nibble is checked for a valid value in the range x'A'-x'F'.
- Specified by:
getLong
in interfaceLongAccessor
- Parameters:
buffer
- the byte array- Returns:
- long
- Throws:
IllegalArgumentException
- if the field contains an invalid sign
-
getLong
public long getLong(byte[] buffer, int bufOffset) Answer a long value from the given byte array buffer, at the bufOffset + offset of this field.Note: the data is not checked for valid decimal digits, although the sign nibble is checked for a valid value in the range x'A'-x'F'.
- Specified by:
getLong
in interfaceLongAccessor
- Parameters:
buffer
- the byte arraybufOffset
- the additional offset into the byte array- Returns:
- long
- Throws:
IllegalArgumentException
- if the field contains an invalid sign
-
putLong
Put a long value into the given byte array buffer, at the offset of this field.Note: If the field is unsigned, a x'F' is supplied as the sign nibble in the field.
- Specified by:
putLong
in interfaceLongAccessor
- Parameters:
value
- the signed int valuebuffer
- the byte array- Throws:
IllegalArgumentException
- if the value is out of range
-
putLong
Put a long value into the given byte array buffer, at the bufOffset + offset of this field.Note: If the field is unsigned, a x'F' is supplied as the sign nibble in the field.
- Specified by:
putLong
in interfaceLongAccessor
- Parameters:
value
- the signed int valuebuffer
- the byte arraybufOffset
- the additional offset into the byte array- Throws:
IllegalArgumentException
- if the value is out of range
-
isSigned
public boolean isSigned()Answer whether the field is signed- Specified by:
isSigned
in interfaceLongAccessor
-
equals
Compare a Long, possibly null, with a long for equality.- Parameters:
aLong
-along
-- Returns:
- boolean true if equal, false otherwise
-