Integer status code returned by the routine.
Values less than zero indicate an error.

DESCRIPTION

Each of the pvm_pk* routines packs an array of the
given data type into the active send buffer.
The arguments for each of the routines are a pointer
to the first item to be packed,
nitem
which is the
total number of items to pack from this array, and
stride
which is the stride to use when packing.

An exception is pvm_pkstr() which by definition packs
a NULL terminated character string and thus does not need
nitem
or
stride
arguments.
The Fortran routine pvmfpack( STRING, ... ) expects
nitem
to be the number of characters in the string and
stride
to be 1.

A null string ("") can be packed;
this is just a string with no characters before the terminating '\0'.
However,
packing a null string pointer, (char *)0, is not allowed.

If the packing is successful,
info
will be 0. If some error occurs then
info
will be < 0.

A single variable (not an array) can be packed by setting
nitem
= 1 and
stride
= 1.

The routine pvm_packf() uses a printf-like format expression
to specify what and how to pack data into the send buffer.
All variables are passed as addresses if count and stride are specified
otherwise, variables are assumed to be values.
A BNF-like description of the format syntax is:

Future extensions to the
what
argument in pvmfpack will include
64 bit types when XDR encoding of these types is available.
Meanwhile users should be aware that precision can be lost
when passing data from a 64 bit machine like a Cray to a
32 bit machine like a SPARCstation. As a mnemonic the
what
argument name includes the number of bytes of
precision to expect. By setting encoding to PVMRAW (see pvmfinitsend)
data can be transferred between two 64 bit machines with
full precision even if the PVM configuration is heterogeneous.

Messages should be unpacked exactly like they were packed
to insure data integrity.
Packing integers and unpacking
them as floats will often fail because a type encoding
will have occurred transferring the data between heterogeneous
hosts. Packing 10 integers and 100 floats then trying to
unpack only 3 integers and the 100 floats will also fail.

WARNINGS

Strings cannot be packed when using the PvmDataInPlace encoding,
due to limitations in the implementation.
Attempting to pack a string using
pvm_pkstr or pvm_packf
will cause error code PvmNotImpl to be returned.

ERRORS

PvmNoMem

Malloc has failed. Message buffer size has exceeded
the available memory on this host.

PvmNoBuf

There is no active send buffer to pack into.
Try calling pvm_initsend before packing message.

PvmOverflow

Attempt to pack a value too large.
E.g. packing an 8-byte long with XDR encoding if the value won't fit into 4 bytes.