in src/main/java/com/epam/parso/impl/SasFileParser.java [804:833]
private void readDeletedInfo() throws IOException {
long deletedPointerOffset;
int subheaderPointerLength;
int bitOffset;
if (sasFileProperties.isU64()) {
deletedPointerOffset = PAGE_DELETED_POINTER_OFFSET_X64;
subheaderPointerLength = SUBHEADER_POINTER_LENGTH_X64;
bitOffset = PAGE_BIT_OFFSET_X64 + 8;
} else {
deletedPointerOffset = PAGE_DELETED_POINTER_OFFSET_X86;
subheaderPointerLength = SUBHEADER_POINTER_LENGTH_X86;
bitOffset = PAGE_BIT_OFFSET_X86 + 8;
}
int alignCorrection = (bitOffset + SUBHEADER_POINTERS_OFFSET + currentPageSubheadersCount
* subheaderPointerLength) % BITS_IN_BYTE;
List<byte[]> vars = getBytesFromFile(new Long[] {deletedPointerOffset},
new Integer[] {PAGE_DELETED_POINTER_LENGTH});
long currentPageDeletedPointer = bytesToInt(vars.get(0));
long deletedMapOffset = bitOffset + currentPageDeletedPointer + alignCorrection
+ (currentPageSubheadersCount * subheaderPointerLength)
+ ((currentPageBlockCount - currentPageSubheadersCount) * sasFileProperties.getRowLength());
List<byte[]> bytes = getBytesFromFile(new Long[] {deletedMapOffset},
new Integer[] {(int) Math.ceil((currentPageBlockCount - currentPageSubheadersCount) / 8.0)});
byte[] x = bytes.get(0);
for (byte b : x) {
deletedMarkers += String.format("%8s", Integer.toString(b & 0xFF, 2)).replace(" ", "0");
}
}