Reads COS blocked unformatted sequential access Fortran binary files.
function craybinrecread ( path  : string, rec_num  : integer, rec_dims [*] : integer or long, rec_type  : string ) return_val [rec_dims] : rec_type
Full or relative pathname to Cray COS blocked binary file.rec_num
Record number to read from the file beginning at 0.rec_dims
A singly dimensioned array of values that describe how to shape the data, or -1 if the size of the record is unknown.
As of version 6.0.0, rec_dims can be of type int or long.rec_type
String name of the data type of the record.
As specified by the rec_dims, rec_type arguments.
craybinrecread reads the rec_num record of the file path and shapes it according to the dimension sizes in parameter rec_dims. The data type of the record is specified by the parameter rec_type. If the size and dimensionality of the record are unknown the value -1 can be used for parameter rec_dims. In this case craybinrecread will read in the entire record as a singly dimensioned array. The file must be COS blocked.
The below is a Fortran (f77) code fragment that was run on a Cray:
integer a(5) real x(100), y(399), z(128,64) open (11,file="example01",form="unformatted") write (11) a ! 1st record [rec_num=0] write (11) x ! 2nd record [rec_num=1] write (11) y ! 3rd record [rec_num=2] write (11) z ! 4th record [rec_num=3]
Below is the NCL code to read the above. Note that the shape appears to be different for the z variable. In Fortran, the leftmost dimension varies fastest while in NCL [C], the rightmost dimension varies fastest. Thus, the data record will match the fastest varying dimensions correctly.
fili = "example01" ; input file a = craybinrecread (fili, 0, 5, "integer") ; 1st record is zero x = craybinrecread (fili, 1, 100, "float") ; 2nd one y = craybinrecread (fili, 2, 399, "float") ; 3rd record is two z = craybinrecread (fili, 3, (/ 64,128 /), "float") ; 4th record is three ; sample of reading *all* the float variable in one record. ; data will be a 1D array of length (100+399+128*64) data = craybinrecread (fili, 1, -1, "float") ; read x, y, z as 1D