MODULE MODGISIO
- Introductin
- Supported GIS File Types
SETSWAP(), BINVERBOSE(), BINTERSE()RDGFHDR()BILHDR()WRGFHDR()RDAFILE()WRAFILE()RDARC()WRARC()RDBRFILE(), RDZBRFILE()WRBRFILE(), WRZBRFILE()RDBIFILE(), RDZBIFILE()RDBI2FILE(), RDZBI2FILE()RDBI4FILE(), RDZBI4FILE()WRBIFILE(), WRZBIFILE()WRBI2FILE(), WRZBI2FILE()WRBI4FILE(), WRZBI4FILE()- Worker-routines from gisio.c
New Apr 2025 for I/O API 4.0 only!!Back to ContentsRoutines for reading and writing various GIS-format files: ARC and ASC ASCII formatted, and GRIDFLOAT and BIL1 (uint8_t), BIL2 (uint16_t), and BIL4 (uint32_t) binary GIS-style files, with on-the-fly transpose from GIS scan line row-order to normal-model bottom-to-top row-order, referencing the files by logical name.
All the binary (BIL and FLT) routines have variants that do gzip compatible compression or de-compression on the fly, using libz. (It has been shown that for most meteorology/environmental data, the combination of libz overhead plus the reduced I/O time from reading or writing the compressed data is faster than just reading or writing the matching un-compressed data (which can be important in time-constrained applications like real-time forecasting).)
Path-names for the binary-type external header files are the result of appending
.hdronto the path name for the corresponding data file, e.g., the header for /foo/bar/qux.dat would be /foo/bar/qux.dat.hdr
For more about these file types, see the GDAL documentation about "raster" (gridded) file formats; for more about GIS data format translation see gdal_translate.Back to ContentsThe I/O API
MODULE MODGISIOdoes not support all of these formats: it supports the following subset (extended by on-the-fly gzip compression).
Note that all of these use "scan-line" (top-to-bottom, left-to-right) array-storage order.where
- BIL
- one-byte (8 bit)
INTEGERdirect-access binary
BIL2- two-byte (16 bit)
INTEGERdirect-access binary
BIL4- four-byte (32 bit)
INTEGERdirect-access binary
FLTorGRIDFLOAT- four-byte (32 bit)
REALdirect-access binary
ZBIL- one-byte (8 bit)
INTEGERgziped binary
ZBIL2- two-byte (16 bit)
INTEGERgziped binary
ZBIL4- four-byte (32 bit)
INTEGERgziped binary
ZFLT- four-byte (32 bit)
REALgziped binary
ARCI- ASCII ARC-header-format
INTEGER
ARCRandARCE- ASCII ARC-header-format
REAL:ARCRuses fixed-format (xxx.xxxx) formatting,ARCEuses scientific-exponent (x.xxxxEnnn) formatting.
ASCI- ASCII ENVI-header-format
INTEGER
ASCR- ASCII ENVI-header-format
REAL
ARCI,ARCR, andARCRhave header lines with one grid parameter name and value per line:whilenorth
south
east
west
rows
cols
ASCIandASCRhave header lines with one grid parameter per line:andncols
nrows
xllcorner
yllcorner
cellsize
(optionally) NODATA_value
*BIL*and*FLThave separate ASCII "header files" to be read and written by the*HDR()routines from thisMODULE MODGISIO
SETSWAP(), BINVERBOSE(), BINTERSE()Back to ContentsSETSWAP(): set byte-swapping flag: 0 for native, 1 for network-to/from-native (normally 0)
BINVERBOSE(): set verbose logging (enabled by default)
BINTERSE(): set non-verbose "terse" logging (disabled by default)
RDGFHDR()
LOGICAL FUNCTION RDGFHDR( EQNAME, &
NCOLS, NROWS, BYTEORDER, &
XLL, YLL, XCELL, YCELL, AMISS )
CHARACTER(LEN=*), INTENT( IN ) :: EQNAME !! input header-file
INTEGER, INTENT( OUT ) :: NCOLS !! grid dimensions
INTEGER, INTENT( OUT ) :: NROWS !!
INTEGER, INTENT( OUT ) :: BYTEORDER !!
REAL*8 , INTENT( OUT ) :: XLL !! lower-left cell-center coords
REAL*8 , INTENT( OUT ) :: YLL !!
REAL*8 , INTENT( OUT ) :: XCELL !! cell-size
REAL*8 , INTENT( OUT ) :: YCELL !!
REAL , INTENT( OUT ) :: AMISS !! missing-data value
Open, read, and then close theBack to Contents[Z]BIL*/[Z]FLT"header" ASCII file with path-nameEQNAME
WRGFHDR()
LOGICAL FUNCTION WRGFHDR( GFROOT, VNAME, UNITS, DESCS, VMISS, &
GDTYP, NCOLS, NROWS, &
P_ALP, P_BET, P_GAM, XCENT, YCENT, &
XORIG, YORIG, XCELL, YCELL )
CHARACTER(LEN=*), INTENT( IN ):: GFROOT ! output path
CHARACTER(LEN=*), INTENT( IN ):: VNAME ! variable name
CHARACTER(LEN=*), INTENT( IN ):: UNITS ! units
CHARACTER(LEN=*), INTENT( IN ):: DESCS ! description
REAL , INTENT( IN ):: VMISS !
INTEGER, INTENT( IN ):: GDTYP
INTEGER, INTENT( IN ):: NCOLS
INTEGER, INTENT( IN ):: NROWS
REAL*8, INTENT( IN ):: P_ALP
REAL*8, INTENT( IN ):: P_BET
REAL*8, INTENT( IN ):: P_GAM
REAL*8, INTENT( IN ):: XCENT
REAL*8, INTENT( IN ):: YCENT
REAL*8, INTENT( IN ):: XORIG
REAL*8, INTENT( IN ):: YORIG
REAL*8, INTENT( IN ):: XCELL
REAL*8, INTENT( IN ):: YCELL
Open, write, and close a [Z]BIL*/[Z]FLT "header" ASCII file, containing metadata for matching binary output files for this variable.Back to ContentsOutput header file name will be ${GFROOT}/${VNAME}.bil.hdr
BILHDR()
LOGICAL FUNCTION BILHDR( BILROOT, &
VNAME, UNITS, DESCS, SCALE, OFFSET, &
IMISS, NBITS, GDTYP, NCOLS, NROWS, &
P_ALP, P_BET, P_GAM, XCENT, YCENT, &
XORIG, YORIG, XCELL, YCELL )
CHARACTER(LEN=*), INTENT( IN ):: BILROOT ! output path
CHARACTER(LEN=*), INTENT( IN ):: VNAME ! variablename
REAL, INTENT( IN ):: SCALE
REAL, INTENT( IN ):: OFFSET
INTEGER, INTENT( IN ):: IMISS
INTEGER, INTENT( IN ):: NBITS
CHARACTER(LEN=*), INTENT( IN ):: UNITS ! units
CHARACTER(LEN=*), INTENT( IN ):: DESCS ! description
INTEGER, INTENT( IN ):: GDTYP
INTEGER, INTENT( IN ):: NCOLS
INTEGER, INTENT( IN ):: NROWS
REAL*8, INTENT( IN ):: P_ALP
REAL*8, INTENT( IN ):: P_BET
REAL*8, INTENT( IN ):: P_GAM
REAL*8, INTENT( IN ):: XCENT
REAL*8, INTENT( IN ):: YCENT
REAL*8, INTENT( IN ):: XORIG
REAL*8, INTENT( IN ):: YORIG
REAL*8, INTENT( IN ):: XCELL
REAL*8, INTENT( IN ):: YCELL
Open, write, and close a general scale-and-offset-valued [Z]BIL* "header" ASCII file, containing metadata for matching binary output files for this variable.Back to ContentsOutput header file name will be ${GFROOT}/${VNAME}.bil.hdr
LOGICAL FUNCTION RDAFILE()
LOGICAL FUNCTION RDAFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, IBUF )
LOGICAL FUNCTION RDAFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER , INTENT( OUT ) :: IBUF( NCOLS, NROWS )
REAL , INTENT( OUT ) :: VBUF( NCOLS, NROWS )
Open the ASC-format (internal 7-line header) ASCII file with logical nameBack to ContentsFNAMEfor input.Read its header and check for consistency with the supplied argument grid description.
Read the data into
IBUForVBUFfrom the file.Returns
.TRUE.iff all these operations succeed.
LOGICAL FUNCTION WRAFILE() and
LOGICAL FUNCTION WRAEFILE()
LOGICAL FUNCTION WRAFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, IBUF )
LOGICAL FUNCTION WRAFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
LOGICAL FUNCTION WRAEFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER , INTENT( IN ) :: IBUF( NCOLS, NROWS )
REAL , INTENT( IN ) :: VBUF( NCOLS, NROWS )
Open the ASC-format (internal 7-line header) ASCII file with logical nameBack to ContentsFNAMEfor output.Write its header using the supplied grid description arguments.
Write the data from
IBUForVBUFto the file. ForWRAEFILE(), use a format1PE14.6for the (REAL) data in the output; else use a formatF12.5if the data isREAL.Returns
.TRUE.iff all these operations succeed.
SUBROUTINE RDARC()
LOGICAL FUNCTION RDARC( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, IBUF )
LOGICAL FUNCTION RDARC( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER , INTENT( OUT ) :: IBUF( NCOLS, NROWS )
REAL , INTENT( OUT ) :: VBUF( NCOLS, NROWS )
Open the ARC-format (external header) ARCII GIS-output file with logical nameBack to ContentsFNAMEfor input.Read its header and check for consistency with the supplied argument grid description.
Read the data into
IBUForVBUFfrom the file.Returns
.TRUE.iff all these operations succeed.
SUBROUTINE WRARC()
LOGICAL FUNCTION WRARC( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, IBUF )
LOGICAL FUNCTION WRARC( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER , INTENT( IN ) :: IBUF( NCOLS, NROWS )
REAL , INTENT( IN ) :: VBUF( NCOLS, NROWS )
Open the ARC-format (external header) ARCII GIS-output file with logical nameBack to ContentsFNAMEfor output.Write its header using the supplied grid description arguments.
Write the data from
IBUForVBUFto the file.Returns
.TRUE.iff all these operations succeed.
LOGICAL FUNCTIONs RDBRFILE()
and RDZBRFILE()
LOGICAL FUNCTION RDBRFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
LOGICAL FUNCTION RDZBRFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
REAL , INTENT( OUT ) :: VBUF( NCOLS, NROWS )
Open the binaryBack to ContentsGRIDFLOATfile or gzippedGRIDFLOATfile with logical nameFNAMEfor input.Read its header and check for consistency with the supplied argument grid description.
Read the data into
VBUFfrom the file. ForRDZBRFILE(), apply on-the-fly unzipping.Returns
.TRUE.iff all these operations succeed.
WRBRFILE()
and WRZBRFILE()
LOGICAL FUNCTION WRBRFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
LOGICAL FUNCTION WRZBRFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, VBUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
REAL , INTENT( IN ) :: VBUF( NCOLS, NROWS )
Open the binaryBack to ContentsGRIDFLOATfile or gzippedGRIDFLOATfile with logical nameFNAMEfor output.Write the data from
VBUFtop the file with on-the-fly zipping forWRZBRFILE())Returns
.TRUE.iff all these operations succeed.
LOGICAL FUNCTION RDBIFILE()
and RDZBIFILE()
LOGICAL FUNCTION RDBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I1BUF )
LOGICAL FUNCTION RDBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I2BUF )
LOGICAL FUNCTION RDBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
LOGICAL FUNCTION RDZBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I1BUF )
LOGICAL FUNCTION RDZBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I2BUF )
LOGICAL FUNCTION RDZBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER*1 , INTENT( OUT ) :: I1BUF( NCOLS, NROWS )
INTEGER*2 , INTENT( OUT ) :: I2BUF( NCOLS, NROWS )
INTEGER*4 , INTENT( OUT ) :: I4BUF( NCOLS, NROWS )
Open the binary (8-bit) BIL1 GIS file or gzipped with logical nameBack to ContentsFNAMEfor input.Read its header and check for consistency with the supplied argument grid description.
Read and convert the data from the file to
I1BUFI2BUFI4BUFas appropriate. For theRDZ*()routines, apply on-the-fly unzipping.Returns
.TRUE.iff all these operations succeed.
LOGICAL FUNCTION RDBI2FILE()
and RDZBI2FILE()
LOGICAL FUNCTION RDBI2FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I2BUF )
LOGICAL FUNCTION RDBI2FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
LOGICAL FUNCTION RDZBI2FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I2BUF )
LOGICAL FUNCTION RDZBI2FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER*2 , INTENT( OUT ) :: I2BUF( NCOLS, NROWS )
INTEGER*4 , INTENT( OUT ) :: I4BUF( NCOLS, NROWS )
Open the binary (16-bit) BIL2 GIS file with logical nameBack to ContentsFNAMEfor input.Read its header and check for consistency with the supplied argument grid description.
Read and convert the data from the file to
I2BUFI4BUFas appropriate. For theRDZ*()routines, apply on-the-fly unzipping.Returns
.TRUE.iff all these operations succeed.
LOGICAL FUNCTION RDBI4FILE()
and RDZBI4FILE()
LOGICAL FUNCTION RDBI4FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
LOGICAL FUNCTION RDZBI4FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER*4 , INTENT( OUT ) :: I4BUF( NCOLS, NROWS )
Open the binary (32-bit) BIL4 GIS file with logical nameBack to ContentsFNAMEfor input.Read its header and check for consistency with the supplied argument grid description.
Read the data from the file to
I4BUF. For theRDZ*()routines, apply on-the-fly unzipping.Returns
.TRUE.iff all these operations succeed.
LOGICAL FUNCTION WRBIFILE()
and WRZBIFILE()
LOGICAL FUNCTION WRBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I1BUF )
LOGICAL FUNCTION WRBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I2BUF )
LOGICAL FUNCTION WRBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
LOGICAL FUNCTION WRZBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I1BUF )
LOGICAL FUNCTION WRZBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I2BUF )
LOGICAL FUNCTION WRZBIFILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER*1 , INTENT( OUT ) :: I1BUF( NCOLS, NROWS )
INTEGER*2 , INTENT( OUT ) :: I2BUF( NCOLS, NROWS )
INTEGER*4 , INTENT( OUT ) :: I4BUF( NCOLS, NROWS )
Open the binary (8-bit) BIL1 GIS file with logical nameBack to ContentsFNAMEfor output.Convert and write the data from
I1BUF,I2BUF, orI4BUFas appropriate to the file. For theWRZ*()routines, apply on-the-fly zipping.Returns
.TRUE.iff all these operations succeed.
LOGICAL FUNCTION WRBI2FILE()
and WRZBI2FILE()
LOGICAL FUNCTION WRBI2FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I2BUF )
LOGICAL FUNCTION WRBI2FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
LOGICAL FUNCTION WRZBI2FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I2BUF )
LOGICAL FUNCTION WRZBI2FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER*2 , INTENT( IN ) :: I2BUF( NCOLS, NROWS )
INTEGER*4 , INTENT( IN ) :: I4BUF( NCOLS, NROWS )
Open the binary (16-bit) BIL2 GIS file with logical nameBack to ContentsFNAMEfor output.Convert and write the data from
I2BUForI4BUFas appropriate to the file. For theWRZ*()routines, apply on-the-fly zipping.Returns
.TRUE.iff all these operations succeed.
LOGICAL FUNCTION WRBI4FILE()
and WRZBI4FILE()
LOGICAL FUNCTION WRBI4FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
LOGICAL FUNCTION WRZBI4FILE( FNAME, NCOLS, NROWS, XORIG, YORIG, ACELL, I4BUF )
CHARACTER(LEN=*), INTENT( IN ) :: FNAME
INTEGER , INTENT( IN ) :: NCOLS, NROWS
REAL*8 , INTENT( IN ) :: XORIG, YORIG, ACELL
INTEGER*4 , INTENT( IN ) :: I4BUF( NCOLS, NROWS )
Open the binary (32-bit) BIL4 GIS file with logical nameBack to ContentsFNAMEfor output.Write the data from
I4BUFto the file. For theWRZ*()routines, apply on-the-fly unzipping.Returns
.TRUE.iff all these operations succeed.
These routines do not transpose between GIS "scan-line" (Back to ContentsXCELL>0, YCELL<0) array order and "normal-model" (XCELL,YCELL>0) array order but do convert between network (big-endian) and native (usually little-endian) byte order, according to the value of argumentSWAPB(0 for no conversion, 1 for conversion).!!-------- Prototypes for routines in "gridbin.c" ----------- !!-------- SWAPB: 0 for native byte order; else call "htonl()" INTERFACE INTEGER FUNCTION GFREAD( GFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: GFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS INTEGER, INTENT( IN ) :: SWAPB REAL , INTENT( OUT) :: GBUF( NCOLS*NROWS ) END FUNCTION GFREAD END INTERFACE INTERFACE INTEGER FUNCTION GFZREAD( GFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: GFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS INTEGER, INTENT( IN ) :: SWAPB REAL , INTENT( OUT) :: GBUF( NCOLS*NROWS ) END FUNCTION GFZREAD END INTERFACE INTERFACE INTEGER FUNCTION GFWRITE( GFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: GFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB REAL , INTENT( IN ) :: GBUF( NCOLS*NROWS ) END FUNCTION GFWRITE END INTERFACE INTERFACE INTEGER FUNCTION GFZWRITE( GFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: GFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB REAL , INTENT( IN ) :: GBUF( NCOLS*NROWS ) END FUNCTION GFZWRITE END INTERFACE INTERFACE INTEGER FUNCTION ZBILWRITE( BFILE, NCOLS, NROWS, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS INTEGER*1, INTENT( IN ) :: GBUF( NCOLS*NROWS ) END FUNCTION ZBILWRITE END INTERFACE INTERFACE INTEGER FUNCTION BILWRITE( BFILE, NCOLS, NROWS, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS INTEGER*1, INTENT( IN ) :: GBUF( NCOLS*NROWS ) END FUNCTION BILWRITE END INTERFACE INTERFACE INTEGER FUNCTION ZBILREAD( BFILE, NCOLS, NROWS, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS INTEGER*1, INTENT( OUT) :: GBUF( NCOLS*NROWS ) END FUNCTION ZBILREAD END INTERFACE INTERFACE INTEGER FUNCTION BILREAD( BFILE, NCOLS, NROWS, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS INTEGER*1, INTENT( OUT) :: GBUF( NCOLS*NROWS ) END FUNCTION BILREAD END INTERFACE INTERFACE INTEGER FUNCTION ZBIL2WRITE( BFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB INTEGER*2, INTENT( IN ) :: GBUF( NCOLS*NROWS ) END FUNCTION ZBIL2WRITE END INTERFACE INTERFACE INTEGER FUNCTION BIL2WRITE( BFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB INTEGER*2, INTENT( IN ) :: GBUF( NCOLS*NROWS ) END FUNCTION BIL2WRITE END INTERFACE INTERFACE INTEGER FUNCTION ZBIL2READ( BFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB INTEGER*2, INTENT( OUT) :: GBUF( NCOLS*NROWS ) END FUNCTION ZBIL2READ END INTERFACE INTERFACE INTEGER FUNCTION BIL2READ( BFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB INTEGER*2, INTENT( OUT) :: GBUF( NCOLS*NROWS ) END FUNCTION BIL2READ END INTERFACE INTERFACE INTEGER FUNCTION ZBIL4WRITE( BFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB INTEGER*4, INTENT( IN ) :: GBUF( NCOLS*NROWS ) END FUNCTION ZBIL4WRITE END INTERFACE INTERFACE INTEGER FUNCTION BIL4WRITE( BFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB INTEGER*4, INTENT( IN ) :: GBUF( NCOLS*NROWS ) END FUNCTION BIL4WRITE END INTERFACE INTERFACE INTEGER FUNCTION ZBIL4READ( BFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB INTEGER*4, INTENT( OUT) :: GBUF( NCOLS*NROWS ) END FUNCTION ZBIL4READ END INTERFACE INTERFACE INTEGER FUNCTION BIL4READ( BFILE, NCOLS, NROWS, SWAPB, GBUF ) CHARACTER(LEN=*), INTENT( IN ) :: BFILE INTEGER, INTENT( IN ) :: NCOLS, NROWS, SWAPB INTEGER*4, INTENT( OUT) :: GBUF( NCOLS*NROWS ) END FUNCTION BIL4READ END INTERFACE
Up: MODULEs and Public INCLUDE files
Copyright © 2025 Carlie J. Coats, Jr., Ph.D.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
Send comments to
Carlie J. Coats, Jr.
carlie@jyarborough.com