| MPI_FILE_SET_SIZE(fh, size) | |
| INOUT fh | file handle (handle) | 
| IN size | size to truncate or expand file (integer) | 
 
  int MPI_File_set_size(MPI_File fh, MPI_Offset size) 
  
  MPI_FILE_SET_SIZE(FH, SIZE, IERROR)
 INTEGER FH, IERROR 
INTEGER(KIND=MPI_OFFSET_KIND) SIZE 
  
  void MPI::File::Set_size(MPI::Offset size) 
  
MPI_FILE_SET_SIZE resizes the file associated with the file handle fh. size is measured in bytes from the beginning of the file. MPI_FILE_SET_SIZE is collective; all processes in the group must pass identical values for size.
If size is smaller than the current file size, the file is truncated at the position defined by size. The implementation is free to deallocate file blocks located beyond this position.
If size is larger than the current file size, the file size becomes size. Regions of the file that have been previously written are unaffected. The values of data in the new regions in the file (those locations with displacements between old file size and size) are undefined. It is implementation dependent whether the MPI_FILE_SET_SIZE routine allocates file space---use MPI_FILE_PREALLOCATE to force file space to be reserved.
MPI_FILE_SET_SIZE does not affect the individual file pointers or the shared file pointer. If MPI_MODE_SEQUENTIAL mode was specified when the file was opened, it is erroneous to call this routine.
 
 
 
 Advice to users.  
 
It is possible for the file pointers to point beyond the end of file  
after a  MPI_FILE_SET_SIZE operation truncates a file.  
This is legal, and equivalent to seeking beyond the current end of file.  
 ( End of advice to users.) 
 
All nonblocking requests  
and split collective operations  
on  fh must be completed  
before calling  MPI_FILE_SET_SIZE.  
Otherwise, calling  MPI_FILE_SET_SIZE is erroneous.  
As far as consistency semantics are concerned,  
 MPI_FILE_SET_SIZE is a write operation  
that conflicts with operations that access bytes  
at displacements between the old and new file sizes  
(see Section File Consistency 
).