      $set mf noosvs ans85
      *****************************************************************
      *                                                               *
      *              (C) Micro Focus Ltd. 1989                        *
      *                                                               *
      *                     STATUS.CBL                                *
      *                                                               *
      * This program demonstrates how to interpret values returned    *
      * in the second of the two status bytes.  Status bytes are set  *
      * up after EVERY file operation (assuming that you have declared*
      * them in the select clause) and it is important to check the   *
      * values returned after every operation.  This program shows how*
      * to do this.                                                   *
      *                                                               *
      * The program tries to open and close a file called INPUT.FIL.  *
      * If the operations fail it displays the corresponding file     *
      * status bytes                                                  *
      *                                                               *
      *****************************************************************

       identification division.
       program-id.    check-file-status.

       select input-file assign "input.fil"
       organization sequential
       status stat.

       fd input-file.
       01 input-record pic x(80).

       working-storage section.

      * define status bytes and redefinition as follows
      * (note that the picture clauses are important)
       01 stat.
           03 s1   pic x.
           03 s2   pic x.
           03 s2-bin redefines s2
                   pic 9(2) comp-x.

      * have a display item too.
       01 stat-display.
           03 s1-display pic x.
           03 filler     pic x.
           03 s2-display pic 9(3).

       procedure division.
           open input input-file.
           perform check-status.

           close input-file.
           perform check-status.

           stop run.

       check-status.
      * a value of "00" indicates a successful operation
           if stat not = "00" then
               move s1 to s1-display
               if s1 = "9" then
                   move s2-bin to s2-display
               else
                   move s2 to s2-display
               end-if
               display "operation fails - current status = "
                       stat-display
           end-if.
