       >>PUSH SOURCE FORMAT
       >>SOURCE FIXED

      * 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.

        COPY "cblproto.cpy".
      * Include the posix-unlink function
        COPY posix-unlink.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CBL_DELETE_FILE.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 FUNC-RETURN-VAL USAGE IS BINARY-LONG.
       LINKAGE SECTION.
       77  RETCODE			PIC X(2) COMP-5.
       01  FILE-PATH			PIC X ANY LENGTH.

       PROCEDURE DIVISION USING FILE-PATH, RETURNING RETCODE.

           MOVE FUNCTION posix-unlink(FILE-PATH) TO FUNC-RETURN-VAL.

           IF FUNC-RETURN-VAL <> 0
             Move Function COBRT-FILE-STATUS() to RETCODE
           ELSE
             MOVE 0 TO RETCODE
           END-IF.

           END PROGRAM CBL_DELETE_FILE.

        >> POP SOURCE FORMAT
