INITSEND(3PVM)

NAME
pvm_initsend - Clear default send buffer and specify message encoding.

SYNOPSIS
C    int bufid = pvm_initsend( int encoding )
Fortran    call pvmfinitsend( encoding, bufid )

PARAMETERS

encoding
    Integer specifying the next message's encoding scheme.
    	Options in C are:
    	  Encoding value		MEANING
    	    PvmDataDefault	0	  XDR
    	    PvmDataRaw	1	  no encoding
    	    PvmDataInPlace	2	  data left in place
    	Option names are shortened in Fortran to:
    	  Encoding value		MEANING
    	    PVMDEFAULT	0	  XDR
    	    PVMRAW	1	  no encoding
    	    PVMINPLACE	2	  data left in place

bufid
    Integer returned containing the message buffer identifier. Values less than zero indicate an error.

DISCUSSION
The routine pvm_initsend clears the send buffer and prepares it for packing a new message. The encoding scheme used for the packing is set by encoding. XDR encoding is used by default because PVM can not know if the user is going to add a heterogeneous machine before this message is sent. If the user knows that the next message will only be sent to a machine that understands the native format, then he can use PvmDataRaw encoding and save on encoding costs.

PvmDataInPlace encoding specifies that data be left in place during packing. The message buffer only contains the sizes and pointers to the items to be sent. When pvm_send is called the items are copied directly out of the user's memory. This option decreases the number of times a message is copied at the expense of requiring the user to not modify the items between the time they are packed and the time they are sent. The PvmDataInPlace is not implemented in the version 3.2.

If pvm_initsend is successful, then bufid will contain the message buffer identifier. If some error occurs then bufid will be < 0.

EXAMPLES
C:
	bufid = pvm_initsend( PvmDataDefault );
	info = pvm_pkint( array, 10, 1 );
	msgtag = 3 ;
	info = pvm_send( tid, msgtag );

Fortran:
	CALL PVMFINITSEND(PVMRAW, BUFID)
	CALL PVMFPACK( REAL4, DATA, 100, 1, INFO )
	CALL PVMFSEND( TID, 3, INFO )

ERRORS
These error conditions can be returned by pvm_initsend
	PvmBadParam	giving an invalid encoding value
	PvmNoMem	Malloc has failed. There is not enough memory
		to create the buffer

SEE ALSO
mkbuf(3PVM)