CICS VSAM Transparency for z/OS, Version 1.2


Reformatting a date field

This exit DATEFBE processes a date field defined as PIC S9(9) COMP-3. There are 6 significant digits in the date, which has a picture string of YYMMDD.

Without the exit, CICS® VT would assume that the first byte of the field contains a valid value. For example, a field value of X'000081231C' would be converted incorrectly to a DB2® date value of 2000-08-12.

To build a DB2 value, this exit strips off the first byte, and then calls the CICS VT built-in conversion routine PACKDATE to convert to a DB2 date value. To build a VSAM field value, the exits calls the DATEPACK built-in conversion routine.

The parameter list that the exit passes to the built-in conversion routine includes the picture field Y5MMDD to exploit date windowing. This means that YY values greater than or equal to 50 become 20nn-MM-DD in DB2. Year values less than 50 become 19nn-MM-DD.

COBOL code

 CBL LIB
 IDENTIFICATION DIVISION.
 PROGRAM-ID. DATEFBE.
*
* THIS EXIT PROCESSES A PIC S9(9) COMP-3 DATE FIELD THAT HAS
* 6 SIGNIFICANT DIGITS (YYMMDD). VT WILL PROCESS THIS FIELD
* FROM LEFT TO RIGHT, SO A FIELD VALUE OF X'000081231C' WOULD BE
* ERRONEOUSLY CONVERTED TO 2000-08-12 IN DB2.
*
* THE EXIT STRIPS THE FIRST BYTE AND THEN CALLS VIDCONV TO
* CONVERT THE PACKED DECIMAL VALUE TO A DB2 DATA VALUE. IT ALSO
* PERFORMS THE CONVERSION IN REVERSE.
*
 ENVIRONMENT DIVISION.
 DATA DIVISION.
 WORKING-STORAGE SECTION                .
 01 VIDCONV                   PIC X(8) VALUE 'VIDCONV ' .
 01 DB2-TO-VSAM-PARMLIST                .
    02 DB2-ROUTINE-NO         PIC S9(8) COMP VALUE 49 .
    02 DB2-SOURCE-FIELD       PIC X(10)               .
    02 DB2-SOURCE-FIELD-LEN   PIC S9(8) COMP VALUE 10.
    02 DB2-SPICTURE-FIELD     PIC S9(8) COMP VALUE  0.
    02 DB2-DEST-FIELD         PIC S9(9) COMP-3       .
    02 DB2-DEST-FIELD-LEN     PIC S9(8) COMP VALUE  5.
    02 DB2-DPICTURE-FIELD-LEN PIC S9(8) COMP VALUE  6.
    02 DB2-DPICTURE-FIELD     PIC X(6) VALUE 'Y5MMDD'.
 01 VSAM-TO-DB2-PARMLIST .
    02 VS-ROUTINE-NO          PIC S9(8) COMP VALUE 19.
    02 VS-SOURCE-FIELD        PIC S9(7) COMP-3       .
    02 VS-SOURCE-FIELD-LEN    PIC S9(8) COMP VALUE  4.
    02 VS-SPICTURE-FIELD      PIC X(6) VALUE 'Y5MMDD'.
    02 VS-DEST-FIELD          PIC X(10)              .
    02 VS-DEST-FIELD-LEN      PIC S9(8) COMP VALUE 10.
    02 VS-DPICTURE-FIELD      PIC S9(8) COMP VALUE  0.
 LINKAGE SECTION                        .
 01 VSAM-FIELD                PIC S9(9) COMP-3.
 01 DB2-FIELD                 PIC X(10) .
     COPY VIDFBEC                       .
 PROCEDURE DIVISION USING VSAM-FIELD, DB2-FIELD, EXITPARMS .
 MAIN-SECTION.
    SET ADDRESS OF VSAM-FIELD   TO EXVSAFLD.
    SET ADDRESS OF DB2-FIELD    TO EXDB2FLD.
    EVALUATE EXFUNCT
       WHEN 'D'       PERFORM BUILD-DB2-FIELD
       WHEN 'V'       PERFORM BUILD-VSAM-FIELD
    END-EVALUATE .
 MAIN-SECTION-END.
    GOBACK.
    EXIT.
 BUILD-VSAM-FIELD SECTION.
 10-BUILD-VSAM-FIELD.
    MOVE DB2-FIELD     TO    DB2-SOURCE-FIELD.
    CALL VIDCONV       USING DB2-ROUTINE-NO
                             DB2-SOURCE-FIELD
                             DB2-SOURCE-FIELD-LEN
                             DB2-SPICTURE-FIELD
                             DB2-DEST-FIELD
                             DB2-DEST-FIELD-LEN
                             DB2-DPICTURE-FIELD.
    MOVE DB2-DEST-FIELD TO   VSAM-FIELD.
 10-BUILD-VSAM-FIELD-END.
    EXIT.
 BUILD-DB2-FIELD SECTION.
 10-BUILD-DB2-FIELD.
    MOVE VSAM-FIELD    TO    VS-SOURCE-FIELD.
    CALL VIDCONV       USING VS-ROUTINE-NO
                             VS-SOURCE-FIELD
                             VS-SOURCE-FIELD-LEN
                             VS-SPICTURE-FIELD
                             VS-DEST-FIELD
                             VS-DEST-FIELD-LEN
                             VS-DPICTURE-FIELD.
   MOVE VS-DEST-FIELD   TO   DB2-FIELD.
 10-BUILD-DB2-FIELD-END.
   EXIT.

Notes for DATEFBE

The mapping for DATEFBE is shown in Figure 2.

The exit illustrates how to call the VIDCONV utility, which is the CICS VT module that includes all of the built-in conversion routines shown in Built-in conversion routines. This is the standard parameter list to call VIDCONV in COBOL.

Not all parameters are used each time you call VIDCONV. For example, the 4th parameter specifies the picture for the source field. There must be a valid value for this parameter when the source field is VSAM. A value is not required if the source field is DB2.

The first byte of the VSAM field is stripped off by moving the PIC S9(9) COMP-3 field VSAM-FIELD in the linkage section to the working storage field VS-SOURCE-FIELD, which is defined as PIC S9(7) COMP-3. There are other techniques to do this in COBOL.

VIDCONV should always be invoked dynamically and must not be statically linked. You must include the CICS VT module VIDHIPLI in the linkage edit when an FBE calls VIDCONV.



Concept topic


Last updated: December 6, 2013 20:45:4

Concept Concept

Feedback


Timestamp icon Last updated: Friday, 6 December 2013


http://pic.dhe.ibm.com/infocenter/cicsts/v5r1/topic///topics/cvtdecreform.html