Oas2Ascii is a light weight utility that reads an OASIS file sequentially and translates it's contents one record at a time into ascii text. The most likely use for this utility is analyzing problem OASIS files.
The OASIS database is binary and is organized around the concept of records. These files are quite large. Converting an entire OASIS file into ASCII could easily produce an ASCII file many gigabytes in size. The utility enables the user to define a starting point (byte offset) for the conversion.
Note that the specified offset must point into the first byte of a record. This is because OASIS records have different lengths. The first byte of a record defines its "type" and if you know the "type" then you know the length of that record.
How do you know the offset of the first byte of each record?
Currently you must rely on some kind of a diagnostic tool that reports the byte offset. However we may also write a tool that scans an OASIS file from the beginning and creates a table of records and their byte offsets.
OASIS files often make use of cblocks. These are sections of data that have been compressed to decrease the size of the OASIS data. In order to see "inside" a CBLOCK it would have to be decompressed. Not all records in an OASIS file are compressed. So a block diagram of a file containing CBLOCKS might look like this:
By default, Oas2Ascii decompresses CBLOCKs and translates it's contents in-between the CBLOCK::start-offset and CBLOCK::end-offset tags. However, if the -pass_cblocks option is specified, the CBLOCKs will not be translated or decompressed.
Oas2ASCII Command Line Syntax
oas2ascii64.exe <input_oasis_file> <output_text_file> [options] where: input_oasis_file : Path/name of the OASIS file to be translated output_text_file : Path/name of ascii file to be created. Options: -jump:<offset> : Jump to a record at the specified file offset. -limit:<number_of_records> : Process only a specified number of records -no_details : Print only the record names and their file offsets -skip:<list_of_record_nums> : Ignore records whose number is listed in list_of_record_nums -only:<list_of_record_nums> : Ignore all records except the ones whose number is listed in list_of_record_nums -pass_cblocks : Do not translate CBLOCK data
Sample Output Files
We've included two small sample output files generated from OASIS data so that you can inspect the syntax.