CVDA examples

Here are examples in all the CICS-supported languages that show the use of CVDAs and the DFHVALUE function.

In each case, the code does the following:
  • Tests whether the file named PAYROLL is closed.
  • If so, changes the UPDATE and DELETE option values for the file to UPDATABLE and NOTDELETABLE respectively (so that records can be updated and read, but not deleted). Note that the UPDATE option is set by using the DFHVALUE function, and that the DELETE option is set by specifying the value name. These methods are equivalent; either could have been done either way.

    The absence of other options indicates that those values are to remain unchanged. This information could also have been expressed by specifying the options with null values, as explained in SET commands.

  • Returns to CICS.

Only the code and definitions related to this part of each program are shown.

COBOL version

 WORKING-STORAGE SECTION.
 01  FILE-STATUS-INFO.
     02  UOPST               PIC S9(8) COMP.
     02  UUPD                PIC S9(8) COMP.
     02  INFILE              PIC X(8).
 . . .
 CICS-REQUESTS.
     MOVE 'PAYROLL ' TO INFILE.
     EXEC CICS INQUIRE FILE(INFILE)
               OPENSTATUS(UOPST) END-EXEC.
     IF UOPST = DFHVALUE(CLOSED)
         MOVE DFHVALUE(UPDATABLE) TO UUPD
         EXEC CICS SET FILE(INFILE)
                   UPDATE(UUPD)
                   NOTDELETABLE END-EXEC.
     EXEC CICS RETURN.

C version

#define INFILE    "PAYROLL "
main()
 {
  long int  uopst,     /* OPENSTATUS value   */
  long int  uupd;      /* UPDATE value       */
 . . .
  EXEC CICS ADDRESS EIB(dfheiptr);
  EXEC CICS INQUIRE FILE(INFILE)
                    OPENSTATUS(uopst);
  if( uopst == DFHVALUE(CLOSED) )
   { uupd  = DFHVALUE(UPDATABLE);
     EXEC CICS SET FILE(INFILE)
                  UPDATE(uupd)
                  NOTDELETABLE; }
  EXEC CICS RETURN;
 }

PL/I version

 DCL (UOPST,UUPD) FIXED BIN(31), /*OPEN,UPD STATUS*/
     INFILE CHAR(8);             /*FILE NAME      */
  . . .
     INFILE='PAYROLL ';
     EXEC CICS INQUIRE FILE(INFILE)
               OPENSTATUS(UOPST):
     IF UOPST = DFHVALUE(CLOSED) THEN DO;
         UUPD = DFHVALUE(UPDATABLE);
         EXEC CICS SET FILE(INFILE)
                     UPDATE(UUPD)
                     NOTDELETABLE;  END;
     EXEC CICS RETURN;

Assembler-language version

         DFHEISTG
UOPST    DS    F       *OPEN STATUS
UUPD     DS    F       *UPDATE STATUS
INFILE   DS    CL8     *FILE NAME
         . . .
         MVC INFILE,=CL8'PAYROLL '
         EXEC CICS INQUIRE FILE(INFILE)         X
                   OPENSTATUS(UOPST)
         CLC   UOPST,DFHVALUE(CLOSED)
         BNE   OPENLAB
         MVC   UUPD,DFHVALUE(UPDATABLE)
         EXEC CICS SET FILE(INFILE)             X
                   UPDATE(UUPD)                 X
                   NOTDELETABLE
OPENLAB  EXEC CICS RETURN