26 SUBROUTINE fsion_open(FNAME,FILE_MODE,NTASKS,NFILES,CHUNKSIZES,
27 & FSBLKSIZE,GLOBALRANKS,SID)
33 CHARACTER(LEN=*) FNAME
34 CHARACTER(LEN=*) FILE_MODE
42 CALL fsion_open_c(fname,file_mode,ntasks,nfiles,chunksizes,
43 & fsblksize,globalranks,sid)
46 SUBROUTINE fsion_open_rank(FNAME,FILE_MODE,CHUNKSIZE,FSBLKSIZE,
53 CHARACTER(LEN=*) FNAME
54 CHARACTER(LEN=*) FILE_MODE
64 SUBROUTINE fsion_close(SID,IERR)
76 SUBROUTINE fsion_feof(SID,EOF)
88 SUBROUTINE fsion_seek(SID,RANK,CURRENTBLOCKNR,POSINBLK,IERR)
96 INTEGER CURRENTBLOCKNR
100 CALL fsion_seek_c(sid,rank,currentblocknr,posinblk,ierr)
103 SUBROUTINE fsion_ensure_free_space(SID,BYTES,IERR)
116 SUBROUTINE fsion_flush(SID,IERR)
128 SUBROUTINE fsion_get_locations(SID,NTASKS,MAXBLOCKS,GLOBALSKIP,
129 & START_OF_VARHEADER,SION_LOCALSIZES,
130 & SION_GLOBALRANKS,SION_CHUNKCOUNT,
131 & SION_CHUNKSIZES,IERR)
141 INTEGER*8 START_OF_VARHEADER
142 INTEGER*8 SION_LOCALSIZES
143 INTEGER*8 SION_GLOBALRANKS
144 INTEGER*8 SION_CHUNKCOUNT
145 INTEGER*8 SION_CHUNKSIZES
149 & start_of_varheader,sion_localsizes,
150 & sion_globalranks,sion_chunkcount,
151 & sion_chunksizes,ierr)
154 SUBROUTINE fsion_get_current_locations(SID,NTASKS,
156 & SION_CURRENTBLOCKNR,IERR)
164 integer*8 SION_CURRENTPOS
165 integer*8 SION_CURRENTBLOCKNR
168 CALL fsion_get_current_locations_c(sid,ntasks,
170 & sion_currentblocknr,ierr)
173 SUBROUTINE fsion_get_chunksizes(SID,CHUNKSIZES,IERR)
183 CALL fsion_get_chunksizes_c(sid,chunksizes,ierr)
186 SUBROUTINE fsion_get_globalranks(SID,GLOBALRANKS,IERR)
196 CALL fsion_get_globalranks_c(sid,globalranks,ierr)
199 SUBROUTINE fsion_get_mapping_spec(SID,MAPPING_SIZE,NUMFILES,IERR)
210 CALL fsion_get_mapping_spec_c(sid,mapping_size,numfiles,ierr)
213 SUBROUTINE fsion_get_mapping(SID,MAPPING,IERR)
223 CALL fsion_get_mapping_c(sid,mapping,ierr)
226 SUBROUTINE fsion_get_fileno(SID,FILENUMBER)
238 SUBROUTINE fsion_get_file_endianess(SID,ENDIANNESS)
250 SUBROUTINE fsion_get_file_endianness(SID,ENDIANNESS)
262 SUBROUTINE fsion_get_endianess(ENDIANNESS)
273 SUBROUTINE fsion_get_endianness(ENDIANNESS)
284 SUBROUTINE fsion_endianness_swap_needed(SID,NEEDED)
297 FUNCTION fsion_bytes_avail_in_block(SID)
303 INTEGER*8 FSION_BYTES_AVAIL_IN_BLOCK
304 INTEGER*8 FSION_BYTES_AVAIL_IN_BLOCK_C
307 fsion_bytes_avail_in_block = fsion_bytes_avail_in_block_c(sid)
310 FUNCTION fsion_get_position(SID)
316 INTEGER*8 FSION_GET_POSITION
317 INTEGER*8 FSION_GET_POSITION_C
320 fsion_get_position = fsion_get_position_c(sid)
324 SUBROUTINE fsion_swap(TARGET,SOURCE,SIZE,N,AFLAG,RC)
342 SUBROUTINE fsion_write_integer(DATA,SIZE,NITEMS,SID,RC)
354 CALL fsion_write(
DATA,
SIZE,nitems,sid,rc)
357 SUBROUTINE fsion_fwrite_integer(DATA,SIZE,NITEMS,SID,RC)
369 CALL fsion_fwrite(
DATA,
SIZE,nitems,sid,rc)
372 SUBROUTINE fsion_read_integer(DATA,SIZE,NITEMS,SID,RC)
384 CALL fsion_read(
DATA,
SIZE,nitems,sid,rc)
387 SUBROUTINE fsion_fread_integer(DATA,SIZE,NITEMS,SID,RC)
399 CALL fsion_fread(
DATA,
SIZE,nitems,sid,rc)
404 SUBROUTINE fsion_write_character(DATA,SIZE,NITEMS,SID,RC)
416 CALL fsion_write(
DATA,
SIZE,nitems,sid,rc)
419 SUBROUTINE fsion_fwrite_character(DATA,SIZE,NITEMS,SID,RC)
431 CALL fsion_fwrite(
DATA,
SIZE,nitems,sid,rc)
434 SUBROUTINE fsion_read_character(DATA,SIZE,NITEMS,SID,RC)
446 CALL fsion_read(
DATA,
SIZE,nitems,sid,rc)
449 SUBROUTINE fsion_fread_character(DATA,SIZE,NITEMS,SID,RC)
461 CALL fsion_fread(
DATA,
SIZE,nitems,sid,rc)
466 SUBROUTINE fsion_write_real(DATA,SIZE,NITEMS,SID,RC)
478 CALL fsion_write(
DATA,
SIZE,nitems,sid,rc)
481 SUBROUTINE fsion_fwrite_real(DATA,SIZE,NITEMS,SID,RC)
493 CALL fsion_fwrite(
DATA,
SIZE,nitems,sid,rc)
496 SUBROUTINE fsion_read_real(DATA,SIZE,NITEMS,SID,RC)
508 CALL fsion_read(
DATA,
SIZE,nitems,sid,rc)
511 SUBROUTINE fsion_fread_real(DATA,SIZE,NITEMS,SID,RC)
523 CALL fsion_fread(
DATA,
SIZE,nitems,sid,rc)
527 SUBROUTINE fsion_write_double(DATA,SIZE,NITEMS,SID,RC)
533 DOUBLE PRECISION DATA
539 CALL fsion_write(
DATA,
SIZE,nitems,sid,rc)
542 SUBROUTINE fsion_fwrite_double(DATA,SIZE,NITEMS,SID,RC)
548 DOUBLE PRECISION DATA
554 CALL fsion_fwrite(
DATA,
SIZE,nitems,sid,rc)
557 SUBROUTINE fsion_read_double(DATA,SIZE,NITEMS,SID,RC)
563 DOUBLE PRECISION DATA
569 CALL fsion_read(
DATA,
SIZE,nitems,sid,rc)
572 SUBROUTINE fsion_fread_double(DATA,SIZE,NITEMS,SID,RC)
578 DOUBLE PRECISION DATA
584 CALL fsion_fread(
DATA,
SIZE,nitems,sid,rc)
588 SUBROUTINE fsion_write_complex(DATA,SIZE,NITEMS,SID,RC)
600 CALL fsion_write(
DATA,
SIZE,nitems,sid,rc)
603 SUBROUTINE fsion_fwrite_complex(DATA,SIZE,NITEMS,SID,RC)
615 CALL fsion_fwrite(
DATA,
SIZE,nitems,sid,rc)
618 SUBROUTINE fsion_read_complex(DATA,SIZE,NITEMS,SID,RC)
630 CALL fsion_read(
DATA,
SIZE,nitems,sid,rc)
633 SUBROUTINE fsion_fread_complex(DATA,SIZE,NITEMS,SID,RC)
645 CALL fsion_fread(
DATA,
SIZE,nitems,sid,rc)
649 SUBROUTINE fsion_write_logical(DATA,SIZE,NITEMS,SID,RC)
661 CALL fsion_write(
DATA,
SIZE,nitems,sid,rc)
664 SUBROUTINE fsion_fwrite_logical(DATA,SIZE,NITEMS,SID,RC)
676 CALL fsion_fwrite(
DATA,
SIZE,nitems,sid,rc)
679 SUBROUTINE fsion_read_logical(DATA,SIZE,NITEMS,SID,RC)
691 CALL fsion_read(
DATA,
SIZE,nitems,sid,rc)
694 SUBROUTINE fsion_fread_logical(DATA,SIZE,NITEMS,SID,RC)
706 CALL fsion_fread(
DATA,
SIZE,nitems,sid,rc)
void fsion_get_endianness_c(int *endianness)
Fortran function that returns current endianness (1-> big endian, 0 ->little endian)
void fsion_feof_c(int *sid, int *eof)
Fortran function that indicates the end of file for this task.
void fsion_get_fileno_c(int *sid, int *filenumber)
Fortran function that returns the current file number.
void fsion_seek_c(int *sid, int *rank, int *currentblocknr, sion_int64 *posinblk, int *ierr)
Fortran procedure to set the file pointer to a new position.
void fsion_endianness_swap_needed_c(int *sid, int *needed)
Fortran function that returns whether or not byte swapping is needed (1 -> needed,...
void fsion_open_c(char *fname, char *file_mode, int *ntasks, int *nfiles, sion_int64 *chunksizes, sion_int32 *fsblksize, int *globalranks, int *sid, int fname_len, int file_mode_len)
Fortran procedure to open a sion file in serial mode.
void fsion_get_file_endianness_c(int *sid, int *endianness)
Fortran function that returns endianness of a sion file (1-> big endian, 0 ->little endian)
void fsion_flush_c(int *sid, int *ierr)
Fortran procedure to flush a sion file.
void fsion_get_locations_c(int *sid, int *ntasks, int *maxblocks, sion_int64 *globalskip, sion_int64 *start_of_varheader, sion_int64 **sion_localsizes, sion_int64 **sion_globalranks, sion_int64 **sion_chunkcount, sion_int64 **sion_chunksizes, int *ierr)
Fortran procedure that returns pointers to internal fields.
void fsion_open_rank_c(char *fname, char *file_mode, sion_int64 *chunksize, sion_int32 *fsblksize, int *rank, int *sid, int fname_len, int file_mode_len)
Fortran procedure to open a sion file for a specific rank.
void fsion_swap_c(void *target, void *source, int *size, int *n, int *do_swap, int *rc)
Fortran procedure to swap endianness of data.
void fsion_close_c(int *sid, int *ierr)
Fortran procedure to close a sion file.
void fsion_ensure_free_space_c(int *sid, sion_int64 *bytes, int *ierr)
Fortran procedure to ensure that enough space is available.