|
UFF2UFF Library "JINRLIB"
Author: A.P.Sapojnikov You are
Language: Pascal/Delphi
visitor here.
UNFORMATTED DATA FILES CONVERTOR
Unconsistence of files written via "unformatted WRITE" operators
is a common problem for Fortran-users. Here is a typical complaint:
'I have 2 Fortran-written programs, "W" and "R".
"W" creates binary files using WRITE(1) ... operators.
"R" reads these files using the same READ(1)... operators.
Yesterday all was fine. But now I'd recollected "R" using another
fortran-compiler, and all got broken!!!'
Actually the binary file, opened via OPEN(1, form=unformatted, ...)
clause, is not quite unformatted! Each logical record, written by WRITE(1)
operator, contains incorporated auxiliary data. Different compilers have
different structure of these auxiliary data, even these compilers leave in
the same computer!
The problem may get rather serious, if the source of "W" program
is unavailable or lost, but migration "R" program under new compiler
is absolutely necessary. It's for this problem UFF2UFF was developed.
The usage is easy: run UFF2UFF.EXE, choose source and target filenames
and their types, then press "Start" button.
A bit about these types:
MicroSoft Fortran 5.xx hashes each logical record into the pieces
not more then 128-bytes length, adding 1 auxiliary byte before each piece.
WatCom Fortran hashes each logical record into the pieces
not more then 1024-bytes length, enclosing each piece by 4 auxiliary bytes.
MicroSoft PowerStation Fortran, called later Visual DEC Fortran,
called later Compaq Fortran, encloses the whole logical record by 4-bytes
numbers, containing record length.
Lahey Fortran tries to minimize auxiliary bytes, using rather complicated
algorithm for short logical records.
It's not always possible to automatically recognize source file type.
That's way you must know, what compiler was used for "W"-program!
As for target file, we added a feature to write it as "Binary", i.e.
without any auxiliary data.
Sources of UFF2UFF are submitted.
|