Back to library index.
Package std-filebin (in std.i) - save and restore binary data
Index of documented functions or symbols:
DOCUMENT add_member, file, struct_name, offset, name, type, dimlist adds a member to a data type in the file FILE. The data type name (struct name) is STRUCT_NAME, which will be created if it does not already exist. The new member will be at OFFSET (in bytes) from the beginning of an instance of this structure, and will have the specified NAME, TYPE, and DIMLIST. Use OFFSET -1 to have add_member compute the next available offset in the structure. The TYPE can be either a structure definition, or a string naming a previously defined data type in FILE. The optional DIMLIST is as for the "array" function. The STRUCT_NAME built from a series of add_member calls cannot be used until it is installed with install_struct. This function should be used very sparingly, mostly in code which is building the structure of a foreign-format binary file.
SEE ALSO: add_variable, install_struct, struct_align
DOCUMENT failure= add_next_file(file, filename, create_flag) adds the next file to the FILE, which must contain history records. If FILENAME is non-nil, the new file will be called that, otherwise the next sequential filename is used. If CREATE_FLAG is present and non-zero, the new file will be created if it does not already exist. If omitted or nil, CREATE_FLAG defaults to 1 if the file has write permission and 0 if it does not. Returns 0 on success.
SEE ALSO: openb, updateb, createb, add_record
DOCUMENT add_record, file, time, ncyc
or add_record, file, time, ncyc, address
or add_record, file
adds a new record to FILE corresponding to the specified TIME and
NCYC (respectively a double and a long). Either or both TIME
and NCYC may be nil or omitted, but the existence of TIME and
NCYC must be the same for every record added to one FILE.
If present, ADDRESS specifies the disk address of the new record,
which is assumed to be in the current file. Without ADDRESS, or
if ADDRESS<0, the next available address is used; this may create
a new file in the family (see the set_filesize function).
The add_record function leaves the new record current
for subsequent save commands to actually write the data.
The TIME, NCYC, and ADDRESS arguments may be equal length vectors
to add several records at once; in this case, the first of the
newly added records is the current one. If all three of TIME,
NCYC, and ADDRESS are nil or omitted, no new records are added,
but the file becomes a record file if it was not already, and in
any case, no record will be the current record after such an
add_record call.
After the first add_record call (even if no records were added),
subsequent add_variable commands will create record variables.
After the first record has been added, subsequent save commands
will create any new variables as record variables.
After a second record has been added using add_record, neither
save commands nor add_variable commands may be used to introduce
any new record variables.
SEE ALSO: save, createb, updateb, openb, set_filesize, set_blocksize, add_variable
DOCUMENT add_variable, file, address, name, type, dimlist adds a variable NAME to FILE at the specified ADDRESS, with the specified TYPE and dimensions given by DIMLIST. The DIMLIST may be zero or more arguments, as for the "array" function. If the ADDRESS is <0, the next available address is used. Note that, unlike the save command, add_variable does not actually write any data -- it merely changes Yorick's description of the contents of FILE. After the first add_record call, add_variable adds a variable to the record instead of a non-record variable. See add_record.
SEE ALSO: save, openb, createb, updateb, add_record, add_member, install_struct, data_align
DOCUMENT alpha_primitives, file sets FILE primitive data types to be native to DEC alpha workstations.
SEE: at_pdb_open
DOCUMENT at_pdb_open
at_pdb_close
bits for optional behavior when a PDB file is opened or closed:
at_pdb_open:
000 Major-Order: value specified in file is correct
001 Major-Order:102 always
002 Major-Order: opposite from what file says
003 Major-Order:101 always
004 Strip Basis @... suffices from variable names (when possible)
Danger! If you do this and open a file for update, the variable
names will be stripped when you close the file!
010 Use Basis @history convention on input
The 001 and 002 bits may be overridden by the open102 keyword.
The default value of at_pdb_open is 010.
at_pdb_close (the value at the time the file is opened or created
is remembered):
001 Write Major-Order 102 PDB file
002 Write PDB style history data
The following are no-ops unless bit 002 is set:
004 Use Basis @history convention on output
010 Do NOT pack all history record variables into
a single structure instance.
The 001 bit may be overridden by the close102 keyword or if
close102_default is non-zero.
The default value of at_pdb_close is 007.
SEE ALSO: close102_default
DOCUMENT close102 is a keyword for createb or updateb,
open102 is a keyword for openb or updateb
close102_default is a global variable (initially 0)
***Do not use close102_default -- use at_pdb_close
-- this is for backward compatibility only***
close102=1 means to close the PDB file "Major-Order:102"
close102=0 means close it "Major-Order:101"
if not specified, uses 1 if close102_default non-zero,
otherwise the value specified in at_pdb_close
open102=1 means to ignore what the PDB file says internally,
and open it as if it were "Major-Order:102"
open102=0 (the default) means to assume the PDB file is
correctly writen
open102=2 means to assume that the file is incorrectly
written, whichever way it is marked
open102=3 means to ignore what the PDB file says internally,
and open it as if it were "Major-Order:101"
The PDB file format comes in two styles, "Major-Order:101", and
"Major-Order:102". Yorick interprets these correctly by default,
but other codes may ignore them, or write them incorrectly.
Unlike Yorick, not all codes are able to correctly read both
styles. If you are writing a file which needs to be read by
a "102 style" code, create it with the close102=1 keyword.
If you notice that a file you though was a history file isn't, or
that the dimensions of multi-dimensional variables are transposed
from the order you expected, the code which wrote the file probably
blew it. Try openb("filename", open102=2). The choices 1 and 3
are for cases in which you know the writing code was supposed to
write the file one way or the other, and you don't want to be
bothered.
The open102 and close102 keywords, if present, override the
defaults in the variables at_pdb_open and at_pdb_close.
SEE ALSO: at_pdb_open, at_pdb_close
SEE: close102
DOCUMENT result= collect(f, name_string)
scans through all records of the history file F accumulating the
variable NAME_STRING into a single array with one additional
index varying from 1 to the number of records.
NAME_STRING can be either a simple variable name, or a name
followed by up to four simple indices which are either nil, an
integer, or an index range with constant limits. (Note that
0 or negative indices count from the end of a dimension.)
Examples:
collect(f, "xle") -- collects the variable f.xle
collect(f, "tr(2,2:)") -- collects f.tr(2,2:)
collect(f, "akap(2,-1:0,)") -- collects f.akap(2,-1:0,)
(i.e.- akap in the last two values of its
second index)
SEE ALSO: get_times
DOCUMENT cray_primitives, file sets FILE primitive data types to be native to Cray 1, XMP, and YMP.
DOCUMENT file= createb(filename)
or file= createb(filename, primitives)
creates FILENAME as a PDB file in "w+b" mode, destroying any
existing file by that name. If the PRIMITIVES argument is
supplied, it must be the name of a procedure that sets the
primitive data types for the file. The default is to create
a file with the native primitive types of the machine on which
Yorick is running. The following PRIMITIVES functions are
predefined:
sun_primitives -- appropriate for Sun, HP, IBM, and
most other workstations
sun3_primitives -- appropriate for old Sun-2 or Sun-3
dec_primitives -- appropriate for DEC (MIPS) workstations, Windows
alpha_primitives -- appropriate for DEC alpha workstations
sgi64_primitives -- appropriate for 64 bit SGI workstations
cray_primitives -- appropriate for Cray 1, XMP, and YMP
mac_primitives -- appropriate for MacIntosh
macl_primitives -- appropriate for MacIntosh, 12-byte double
i86_primitives -- appropriate for Linux i86 machines
pc_primitives -- appropriate for IBM PC
vax_primitives -- appropriate for VAXen only (H doubles)
vaxg_primitives -- appropriate for VAXen only (G doubles)
xdr_primitives -- appropriate for XDR files
FILENAME may also be char (that is, the char datatype) in order to
create an in-memory binary file using vopen. Such a file must be
closed with vclose or everything written to it will be lost.
SEE ALSO: openb, updateb, vopen, vsave, cd, save, add_record, set_filesize, set_blocksize, close102, close102_default, at_pdb_open, at_pdb_close
DOCUMENT data_align, file, alignment in binary file FILE, align new variables to begin at a byte address which is a multiple of ALIGNMENT. (This affects placement of data declared using save and add_variable. For add_variable, data_align has an effect only if the address is not specified.) If ALIGNMENT is <=0, new variables will be aligned as they would be if they were data structure members. The default value is 0.
SEE ALSO: save, add_variable
DOCUMENT dec_primitives, file sets FILE primitive data types to be native to DEC (MIPS) workstations.
DOCUMENT dump_clog, file, clog_name dumps a Contents Log of the binary file FILE into the text file CLOG_NAME. Any previous file named CLOG_NAME is overwritten.
SEE ALSO: openb
DOCUMENT edit_times, file
or edit_times, file, keep_list
or edit_times, file, keep_list, new_times, new_ncycs
edits the records for FILE. The KEEP_LIST is a 0-origin index list
of records to be kept, or nil to keep all records. The NEW_TIMES
array is the list of new time values for the (kept) records, and
the NEW_NCYCS array is the list of new cycle number values for the
(kept) records. Either NEW_TIMES, or NEW_NCYCS, or both, may be
nil to leave the corresponding values unchanged. If non-nil,
NEW_TIMES and NEW_NCYCS must have the same length as KEEP_LIST,
or, if KEEP_LIST is nil, as the original number of records in
the file. If KEEP_LIST, NEW_TIME, and NEW_NCYCS are all omitted
or nil, then edit_times removes records as necessary to ensure
that the remaining records have monotonically increasing times,
or, if no times are present, monotonically increasing ncycs.
(The latest record at any given time/ncyc is retained, and earlier
records are removed.)
In no case does edit_times change the FILE itself; only Yorick's
in-memory model of the file is altered.
DOCUMENT addr_lists= get_addrs(file)
returns the byte addresses of the non-record and record variables
in the binary file FILE, and lists of the record addresses, file
indices, and filenames for file families with history records.
*addr_lists(1) absolute addresses of non-record variables
*addr_lists(2) relative addresses of record variables
(add record address to get absolute address)
The order of these two address lists matches the
corresponding lists of names returned by get_vars.
*addr_lists(3) absolute addresses of records
*addr_lists(4) list of file indices corresponding to
addr_lists(3); indices are into addr_lists(5)
*addr_lists(5) list of filenames in the family
SEE ALSO: openb, updateb, restore, jt, jc, has_records, get_vars
DOCUMENT get_member(f_or_s, member_name) returns F_OR_S member MEMBER_NAME, like F_OR_S.MEMBER_NAME syntax, but MEMBER_NAME can be a computed string. The F_OR_S may be a binary file or a structure instance.
SEE ALSO: openb
SEE: get_times
DOCUMENT prims = get_primitives(file) Return the primitive data types for FILE as an array of 32 integers. The format is described under set_primitives.
SEE ALSO: set_primitives, __xdr, __i86
DOCUMENT times= get_times(file)
ncycs= get_ncycs(file)
returns the list of time or ncyc values associated with the records
if FILE, or nil if there are none. The time values are not guaranteed
to be precise (but they should be good to at least 6 digits or so);
the precise time associated with each record may be stored as a record
variable.
SEE ALSO: collect, openb, updateb, restore, jt, jc, edit_times
DOCUMENT name_lists= get_vars(file) returns the lists of non-record and record variable names in the binary FILE. The return value is an array of two pointers to arrays of type string; *name_lists(1) is the array of non-record variable names (or nil if there are none), *name_lists(2) is the array of record variable names. The get_addrs function returns corresponding lists of disk addresses; the get_member function can be used in conjunction with the dimsof, structof, and typeof functions to determine the other properties of a variable.
SEE ALSO: openb, updateb, restore, jt, jc, has_records, get_addrs, set_vars
DOCUMENT i86_primitives, file sets FILE primitive data types to be native to Linux i86 machines.
DOCUMENT install_struct, file, struct_name
or install_struct, file, struct_name, size, align, order
or install_struct, file, struct_name, size, align, order, layout
installs the data type named STRUCT_NAME in the binary FILE. In
the two argument form, STRUCT_NAME must have been built by one or
more calls to the add_member function. In the 5 and 6 argument calls,
STRUCT_NAME is a primitive data type -- an integer type for the 5
argument call, and a floating point type for the 6 argument call.
The 5 argument form may also be used to declare opaque data types.
SIZE is the size of an instance in bytes, ALIGN is its alignment
boundary (also in bytes), and ORDER is the byte order. ORDER is
1 for most significant byte first, -1 for least significant byte
first, and 0 for opaque (unconverted) data. Other ORDER values
represent more complex byte permutations (2 is the byte order for
VAX floating point numbers). If ORDER equals SIZE, then the data
type is not only opaque, but also must be read sequentially.
LAYOUT is an array of 7 long values parameterizing the floating
point format, [sign_address, exponent_address, exponent_size,
mantissa_address, mantissa_size, mantissa_normalized, exponent_bias]
(the addresses and sizes are in bits, reduced to MSB first order).
Use, e.g., nameof(float) for STRUCT_NAME to redefine the meaning
of the float data type for FILE.
SEE ALSO: add_variable, add_member
DOCUMENT jc, file, ncyc jump to the record of FILE nearest the specified NCYC.
SEE ALSO: jt, _jc, edit_times, show, jr
DOCUMENT jr, file, i
or _jr(file, i)
Jump to a particular record number I (from 1 to n_records) in a
binary file FILE. The function returns 1 if such a record exists,
0 if there is no such record. In the latter case, no action is
taken; the program halts with an error only if jr was invoked
as a subroutine. Record numbering wraps like array indices; use
jr, file, 0 to jump to the last record, -1 to next to last, etc.
SEE ALSO: jt, jc, edit_times, show
DOCUMENT jt, time
or jt, file, time
or jt, file
or jt, file, -
jump to the record nearest the specified TIME. If no FILE is
specified, the current record of all open binary files containing
records is shifted.
If both FILE and TIME are specified and jt is called as a function,
it returns the actual time of the new current record.
N.B.: "jt, file" and "jt, file, -" are obsolete. Use the jr function to
step through a file one record at a time.
If only the FILE is specified, increment the current record of that
FILE by one. If the TIME argument is - (the pseudo-index range
function), decrement the current record of FILE by one.
If the current record is the last, "jt, file" unsets the current record
so that record variables will be inaccessible until another jt or jc.
The same thing happens with "jt, file, -" if the current record was the
first.
If only FILE is specified, jt returns 1 if there is a new current
record, 0 if the call resulted in no current record. Thus "jt(file)"
and "jt(file,-)" may be used as the condition in a while loop to step
through every record in a file:
file= openb("example.pdb");
do {
restore, file, interesting_record_variables;
...calculations...
} while (jt(file));
SEE ALSO: jc, _jt, edit_times, show, jr
DOCUMENT macl_primitives, file sets FILE primitive data types to be native to MacIntosh, long double.
DOCUMENT mac_primitives, file sets FILE primitive data types to be native to MacIntosh, 8 byte double.
SEE: close102
DOCUMENT file = openb(filename)
or file = openb(filename, clogfile)
open the existing file FILENAME for read-only binary I/O.
(Use updateb or createb, respectively, to open an existing file
with read-write access or to create a new file.)
If the CLOGFILE argument is supplied, it represents the structure
of FILENAME in the Clog binary data description language.
After an openb, the file variable may be used to extract variables
from the file as if it were a structure instance. That is, the
expression "file.var" refers to the variable "var" in file "file".
A complete list of the variable names present in the file may
be obtained using the get_vars function. If the file contains
history records, the jt and jc functions may be used to set the
current record -- initially, the first record is current.
The restore function may be used to make memory copies of data
in the file; this will be faster than a large number of
references to "file.var".
The openb function will recognize families of PDB or netCDF files
by their sequential names and open all files subsequent to FILENAME
in such a family as well as FILENAME itself. You can use the one=1
keyword to suppress this behavior and open only FILENAME.
FILENAME may be a file handle to skip the initial open operation.
This feature is intended to enable in-memory files created with
vopen to be opened:
file = openb(vopen(char_array,1));
FILENAME may also be char_array directly, as returned by vsave.
SEE ALSO: updateb, createb, open, vopen, cd, show, jt, jc, restore, get_vars, get_times, get_ncycs, get_member, has_records, set_blocksize, dump_clog, read_clog, recover_file, openb_hooks, open102, close102, get_addrs
DOCUMENT openb_hooks
list of functions to be tried by openb if the file to be
opened is not a PDB file. By default,
openb_hooks= _lst(_not_pdbf, _not_cdf).
The hook functions will be called with the file as argument
(e.g.- _not_cdf(file)), beginning with _car(openb_hooks), until
one of them returns 0. Note that a hook should return 0 if it
"recognizes" the file as one that it should be able to open, but
finds that the file is misformatted (alternatively, it could call
error to abort the whole process).
DOCUMENT file= read_clog(file, clog_name) raw routine to set the binary data structure of FILE according to the text description in the Contents Log file CLOG_NAME.
DOCUMENT recover_file, filename
or recover_file, filename, clogfile
writes the descriptive information at the end of a corrupted
binary file FILENAME from its Contents Log file CLOGFILE, which
is FILENAME+"L" by default.
SEE: save
DOCUMENT save, obj, var1, var2, ...
restore, obj, var1, var2, ...
grp = save(var1, var2, ...)
grp = restore(var1, var2, ...)
saves the variables VAR1, VAR2, etc. in the object OBJ, or restores
them from that object. An object can be a binary file handle, in which
case there may be restrictions on the type of the VARi; in particular,
the VARi will need to be arrays or structure definitions. In general,
the kind of object OBJ determines what kinds of variables can be
saved in it.
Called as functions, save and restore return a grp object, a very
light weight in-memory container that can hold any kind of yorick
variable. In the case of save, the grp contains the the specified
variables VARi. For group objects (not necessarily other objects),
the saved items are not copies, but references. However, if you
redefine a VARi after a save to a group object, the group member
corresponding to that VARi does not change. Hence, groups are a
way to maintain "namespaces" in yorick. The return value from
save is simply a group object containing the VARi. The return
value from restore is more interesting: it is a group object containing
the values of the VARi before they were restored. This enables you to
put things back the way they were before a restore, after you are
finished using the restored variables.
Special cases of save:
grp = save(); // return an empty group object
obj = save(*); // return the entire global symbol table as an object
save, obj; // saves entire global symbol table in OBJ, silently
skipping any variables whose data type OBJ does not support
Other special cases:
restore, obj; // restores all named variables in OBJ
save, use, var1, var2, ...;
restore, use, var1, var2, ...;
save and restore to the current context object (see help,use).
Each VARi may be a simple variable reference, in which case the name
of the VARi specifies which member of the object. (In the case of
save, a VARi whose name matches no current object member will create
a new object member of that name.) However, any of the VARi may
instead be be a pair of arguments instead of a single argument:
VARi --> MEMBSPECi, VALi
where MEMBSPECi is an expression (but NOT a simple variable reference)
whose value specifies which object member, and the VALi argument is
the external value. In the case of save, VALi may also be an
expression; in the case of restore, VALi must be the simple variable
reference for the variable which restore will set to the specified
object member. For example:
var2 = 3*x+7;
save, obj, var1, var2, var3;
save, obj, var1, "var2", 3*x+7, var3;
save, obj, var1, swrite(format="var%ld",8/4), 3*x+7, var3;
All three save calls do the same thing. The corresponding restore
works by name; the order need not be the same as the save:
restore, obj, var2, var3, var1;
puts the saved values back where they started, while:
restore, obj, var2, swrite(format="var%ld",1), x;
puts var2 back to its saved value, but sets x to the value saved
as var1. You can use the noop() function to make an expression out
of a variable holding a MEMBSPEC. For example, if varname="var1", then
restore, obj, noop(varname), x; // or
restore, obj, varname+"", x;
will set x to the value saved as var1, while
restore, obj, varname, x; // error!
attempts to restore two variables named "varname" and "x" from obj.
For the save function, each VARi may also be a keyword argument:
VARi --> member=VALi
which behaves exactly the same as:
VARi --> "member",VALi
but is slightly more efficient, since it avoids the string argument.
You can also omit the "save" in a subroutine call if all arguments
are keywords:
save, obj, m1=val1, m2=val2, ...;
is the same thing as:
obj, m1=val1, m2=val2, ...;
Some kinds of objects (including the group objects, but usually not
binary file handles) support anonymous members. For such objects,
the order in which the members were saved is significant, and member
names are optional. You can create anonymous members by passing
string(0) to save as the MEMBSPEC. Unlike ordinary names, each save
with string(0) as the name creates a new member (rather than overwriting
the existing member with that name). All members (named as well as
anonymous) are numbered starting from 1 for the first member, in the
order in which they are created. For objects supporting anonymous
members, MEMBSPEC may also be an integer, which is the member index.
In fact, MEMBSPECi can be any of the following:
scalar string - member name, string(0) on save creates anonymous member
scalar index - member index
string array - VALi a group with those members (string(0) on save OK)
index array - VALi a group with those members
min:max:step - VALi a group with those members
nil [] - save only: if VALi is not an object, same as string(0),
if VALi is an object, merge with OBJ, that is members of VALi become
members of OBJ, creating or overwriting named members and always
appending anonymous members.
MEMBSPEC indices and index ranges accept zero or negative values with
the same meaning as for array indices, namely 0 represents the last
member, -1 the second to the last, and so on. Unlike array indices,
the non-positive index values also work in index array MEMBSPECs.
See help,oxy (object extension to yorick) for more on objects.
As a final remark, notice that you can use save and restore to
construct group objects without having any side effects -- that is,
without "damaging" the state of any other variables. For example,
suppose we want to create an object bump consisting of three
variables x, y, and z, that need to be computed. In order to do
that without clobbering existing values of x, y, and z, or anything
else, we can do this:
bump = save(x, y, z); // save current values of x, y, z
scratch = save(scratch, xy); // save scratch variables (xy and scratch)
xy = span(-4, 4, 250);
x = xy(,-:1:250);
y = xy(-:1:250,);
z = sqrt(0.5/pi)*exp(-0.5*abs(x,y)^2);
bump = restore(bump); // put back old x,y,z, set bump to new
restore, scratch; // restore xy and scratch itself
DOCUMENT set_blocksize, file, blocksize
or set_blocksize, blocksize
sets smallest cache block size for FILE to BLOCKSIZE. BLOCKSIZE
is rounded to the next larger number of the form 4096*2^n if
necessary; cache blocks for this file will be multiples of
BLOCKSIZE bytes long. The default BLOCKSIZE is 0x4000 (16 KB)
initially. The second form, with no FILE argument, sets the
default BLOCKSIZE.
SEE ALSO: openb, updateb, createb, save, restore, _read, _write, set_cachesize
DOCUMENT set_cachesize, maxBlockSize, totalCacheSize Sets largest cache block size to MAXBLOCKSIZE. MAXBLOCKSIZE is rounded to the next larger number of the form 4096*2^n if necessary. Sets the total cache size to TOTALCACHESIZE. TOTALCACHESIZE will be set to 4*MAXBLOCKSIZE if it is smaller than that. The default MAXBLOCKSIZE is 0x080000 (512k) and the default TOTALCACHESIZE is 0x140000 (1.25 Mbytes).
SEE ALSO: set_blocksize, openb, updateb, createb
DOCUMENT set_filesize, file, filesize sets the new family member threshhold for FILE to FILESIZE. Whenever a new record is added (see add_record), if the current file in the FILE family has at least one record and the new record would cause the current file to exceed FILESIZE bytes, a new family member will be created to hold the new record. Note that set_filesize must be called after the first call to add_record. The default FILESIZE is 0x800000 (8 MB).
SEE ALSO: openb, updateb, createb, add_record
DOCUMENT set_primitives, file, prims
Return the primitive data types for FILE as an array of 32
integers. Versions for particular machines are defined in
prmtyp.i, and can be accessed using functions like
sun_primitives or i86_primitives. See __xdr for a complete
list. The format is:
[size, align, order] repeated 6 times for char, short, int,
long, float, and double, except that char align is always 1,
so result(2) is the structure alignment (see struct_align).
[sign_address, exponent_address, exponent_bits,
mantissa_address, mantissa_bits,
mantissa_normalization, exponent_bias] repeated twice for
float and double. See the comment at the top of prmtyp.i
for an explanation of these fields.
the total number of items is thus 3*6+7*2=32.
SEE ALSO: get_primitives, createb, __xdr, __i86
DOCUMENT set_vars, file, names
or set_vars, file, nonrec_names, rec_names
Change the names of the variables in FILE to NAMES. If the
file has record variables, you can use the second form to change
the record variable names. Either of the two lists may be nil
to leave those names unchanged, but if either is not nil, it must
be a 1D array of strings whose length exactly matches the number
of that type of variable actually present in the file.
SEE ALSO: openb, updateb, has_records, get_vars
DOCUMENT sgi64_primitives, file sets FILE primitive data types to be native to 64-bit SGI workstations.
DOCUMENT show, f
or show, f, pat
or show, f, 1
prints a summary of the variables contained in binary file F.
If there are too many variables, use the second form to select
only those variables whose first few characters match PAT.
In the third form, continues the previous show command where it
left off -- this may be necessary for files with large numbers of
variables.
The variables are printed in alphabetical order down the columns.
The print function can be used to obtain other information about F.
DOCUMENT struct_align, file, alignment in binary file FILE, align new struct members which are themselves struct instances to begin at a byte address which is a multiple of ALIGNMENT. (This affects members declared explicitly by add_member, as well as implicitly by save or add_variable.) If ALIGNMENT is <=0, returns to the default for this machine. The struct alignment is in addition to the alignment implied by the most restrictively aligned member of the struct. Most machines want ALIGNMENT of 1.
SEE ALSO: add_member
DOCUMENT sun3_primitives, file sets FILE primitive data types to be native to Sun-2 or Sun-3.
DOCUMENT sun_primitives, file sets FILE primitive data types to be native to Sun, HP, IBM, etc.
DOCUMENT file= updateb(filename)
or file= updateb(filename, primitives)
open a binary data file FILENAME for update (mode "r+b").
The optional PRIMITIVES argument is as for the createb function.
If the file exists, it is opened as if by openb(filename),
otherwise a new PDB file is created as if by createb(filename).
SEE ALSO: openb, createb, cd, save, restore, get_vars, get_addrs, close102, close102_default, open102, at_pdb_open, at_pdb_close
DOCUMENT vaxg_primitives, file sets FILE primitive data types to be native to VAXen, G-double, only.
DOCUMENT vax_primitives, file sets FILE primitive data types to be native to VAXen, H-double, only.
DOCUMENT xdr_primitives, file sets FILE primitive data types to be XDR (external data representation).
DOCUMENT _init_clog, file initializes a Clog binary file. Used after creating a new file -- must be called AFTER the primitive data formats have been set.
DOCUMENT _init_pdb, file, at_pdb_close
_set_pdb, file, at_pdb_close
initializes a PDB binary file. Used after creating a new file --
must be called AFTER the primitive data formats have been set.
The _set_pdb call only sets the CloseHook, on the assumption that
the file header has already been written (as in recover_file).
SEE ALSO: createb, recover_file, at_pdb_close
SEE: _jr
DOCUMENT _jt, file, time
_jc, file, ncyc
_jr, file
are raw versions of jt and jc provided to simplify redefining
the default jt and jc functions to add additional features.
For example, you could redefine jt to jump to a time, then
plot something. The new jt can pass its arguments along to
_jt, then call the appropriate plotting functions.
There is a raw version of jr as well.
SEE: _jr
DOCUMENT _not_pdb(file, familyOK) returns 1 if FILE is not a PDB file, otherwise returns 0 after setting the structure and data tables, and cataloguing any history records. Used to open an existing file. Also detects a file with an appended Clog description. Before calling _not_pdb, set the variable yPDBopen to the value of at_pdb_open you want to be in force. (For historical reasons -- in order to allow for the open102 keyword to openb -- _not_pdb looks at the value of the variable yPDBopen, rather than at_pdb_open directly.)
DOCUMENT _write, file, address, expression
_read, file, address, variable
or nbytes= _read(file, address, variable);
are low level read and write functions which do not "see" the
symbol table for the binary FILE. The ADDRESS is the byte address
at which to begin the write or read operation. The type and number
of objects of the EXPRESSION or VARIABLE determines how much data
to read, and what format conversion operations to apply. In the
case of type char, no conversion operations are ever applied, and
_read will return the actual number of bytes read, which may be
fewer than the number implied by VARIABLE in this one case.
(In all other cases, _read returns numberof(VARIABLE).)
If the FILE has records, the ADDRESS is understood to be in the
file family member in which the current record resides.
SEE: _init_pdb
SEE: _read
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
SEE: __xdr
DOCUMENT primitive data types for various machines:
little-endians
__i86 Intel x86 Linux
__ibmpc IBM PC (2 byte int)
__alpha Compaq alpha
__dec DEC workstation (MIPS), Intel x86 Windows
__vax DEC VAX (H-double)
__vaxg DEC VAX (G-double)
big-endians
__xdr External Data Representation
__sun Sun, HP, SGI, IBM-RS6000, MIPS 32 bit
__sun3 Sun-2 or Sun-3 (old)
__sgi64 SGI, Sun, HP, IBM-RS6000 64 bit
__mac MacIntosh 68000 (power Mac, Gx are __sun)
__macl MacIntosh 68000 (12 byte double)
__cray Cray XMP, YMP
SEE ALSO: set_primitives
