in src/main/java/com/epam/parso/impl/SasFileParser.java [1580:1605]
public void processSubheader(long subheaderOffset, long subheaderLength) throws IOException {
int intOrLongLength = sasFileProperties.isU64() ? BYTES_IN_LONG : BYTES_IN_INT;
long columnNamePointersCount = (subheaderLength - 2 * intOrLongLength - 12) / 8;
int i;
for (i = 0; i < columnNamePointersCount; i++) {
Long[] offset = {subheaderOffset + intOrLongLength + COLUMN_NAME_POINTER_LENGTH * (i + 1)
+ COLUMN_NAME_TEXT_SUBHEADER_OFFSET, subheaderOffset + intOrLongLength
+ COLUMN_NAME_POINTER_LENGTH * (i + 1) + COLUMN_NAME_OFFSET_OFFSET, subheaderOffset
+ intOrLongLength + COLUMN_NAME_POINTER_LENGTH * (i + 1) + COLUMN_NAME_LENGTH_OFFSET};
Integer[] length = {COLUMN_NAME_TEXT_SUBHEADER_LENGTH, COLUMN_NAME_OFFSET_LENGTH,
COLUMN_NAME_LENGTH_LENGTH};
List<byte[]> vars = getBytesFromFile(offset, length);
int textSubheaderIndex = bytesToShort(vars.get(0));
int columnNameOffset = bytesToShort(vars.get(1));
int columnNameLength = bytesToShort(vars.get(2));
if (textSubheaderIndex < columnsNamesBytes.size()) {
columnsNamesList.add(bytesToString(columnsNamesBytes.get(textSubheaderIndex),
columnNameOffset, columnNameLength).intern());
} else {
columnsNamesList.add(new String(new char[columnNameLength]));
columnMissingInfoList.add(new ColumnMissingInfo(i, textSubheaderIndex, columnNameOffset,
columnNameLength, ColumnMissingInfo.MissingInfoType.NAME));
}
}
}