.ds lang COBOL
.ds gcobol GCC\ \*[lang]\ Front-end
.Dd \& March 2026
.Dt CBL_READ_FILE 3\& "\&GNU Compatibility Library"
.Os Linux
.Sh NAME
.Nm CBL_READ_FILE
.Nd read bytes from a file
.Sh LIBRARY
libgcobol_compat_gnu
.
.Sh SYNOPSIS
.\" Ic COPY CBL_READ_FILE
.Ic call Dq "CBL_READ_FILE"
using
.Ar file-handle
.Ar file-offset
.Ar byte-count
.Ar flags
.Ar buffer
returning
.Ar status
.
.Sh DESCRIPTION
Parameters:
.Pp
.Bl -tag -width file-handle
.It Ar file-handle
.Sy "PIC X(4) COMP-5" ,
was opened with
.Ic CBL_CREATE_FILE
or
.Ic CBL_OPEN_FILE
.
.It Ar file-offset 
.\" should be either X(8) COMP-X or 9(8) COMP-5
.Sy "PIC X(8) COMP-5"
[sic]
is the file offset where the read begins.
.It Ar byte-count
.Sy PIC X(4) COMP-X
is the number of bytes to read.
.It Ar flags
.Sy "PIC X COMP-X"
if set to 128, prevents a read operation. Instead the size of the
.Ar file-handle
is written to
.Ar file-offset .
.It Ar buffer
.Sy PIC X Ns Pq Ar n
is an alphanumeric data item of
.Ar n
bytes.



.El
.
.Sh RETURN STATUS
.Nm
returns
.Sy "PIC X(2) COMP-5" .
The return status is 0 on success, else nonzero.  
.
.Sh SEE ALSO
.Xr CBL_CHECK_FILE_EXIST
.Xr CBL_CLOSE_FILE
.Xr CBL_CREATE_FILE
.Xr CBL_DELETE_FILE
.Xr CBL_OPEN_FILE
.\" CBL_READ_FILE
.Xr CBL_WRITE_FILE
.
.Sh COPYRIGHT
.Bd -unfilled -indent
Copyright (c) 2021-2026 Symas Corporation

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of the Symas Corporation nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.Ed
