INITSEND(3PVM)						       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 encod-
  ing. 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 pack-
  ing.	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.	PvmDataInPlace allows
  only dense (stride = 1) data in version 3.3.

  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
  pvm_mkbuf(3PVM)


Back to the alphabetical listing
Back to the listing of routines for sending and receiving messages