CVTDAT      CONVERT DATE CL PROGRAM                    TAADATF

 The convert  date CL  program allows  a HLL  program to  access to  the
 CVTDAT  CL command.   The  function is  accessed  only via  a parameter
 list.  The parameters are the similar to that available on CVTDAT.

 The  typical use of the  program is to allow  a HLL language program to
 convert a date field from the job format to a YYMMDD format.

 Several programs are supported:

   **   TAADATFC converts 6 character dates to 6 character dates.

   **   TAADATFE converts  any  valid  date  format for  the  CVTDAT  CL
        command.   Both the 'from' and  'to' dates must  be specified as
        10 character byte fields.

   **   TAADATFG  is  the  same as  TAADATFE  but  allows  an additional
        parameter for TOSEP.

 The following is an example of TAADATFC (6 byte date fields)

      C                     CALL 'TAADATFC'                 CVTDAT tool
      C                     PARM DATE      FRMDAT  6        From date
      C                     PARM           TODAT   6        To date
      C                     PARM '*JOB   ' FRMFMT  4        From format
      C                     PARM '*YMD   ' TOFMT   4        To format

 The following is an example of TAADATFE (10 byte date fields)

      C                     CALL 'TAADATFE'                 CVTDAT tool
      C                     PARM DATE      FRMDAT 10        From date
      C                     PARM           TODAT  10        To date
      C                     PARM '*JOB   ' FRMFMT  7        From format
      C                     PARM '*YYMD  ' TOFMT   7        To format

 The following is an example of TAADATFG (10 byte date fields)

      C                     CALL 'TAADATFG'                 CVTDAT tool
      C                     PARM DATE      FRMDAT 10        From date
      C                     PARM           TODAT  10        To date
      C                     PARM '*JOB   ' FRMFMT  7        From format
      C                     PARM '*YYMD  ' TOFMT   7        To format
      C                     PARM '*JOB  '  TOSEP   7        To sep char

 If you are writing  in RPGLE, there is normally  no reason for the  use
 of  either subprogram  because  RPGLE supports  the  conversion of  one
 date  type to another.   However, you must pre-define  the format types
 that you  are  dealing  with (that  is  you  must know  that  you  will
 convert a  *MDY to *YYMD).   If you  cannot pre-define the  date types,
 you  can use RPGLE,  but you will  have to  define all of  the possible
 types.

 While  these subprograms provide a  reasonable performance solution for
 a small number of  dates to be converted,  it is not reasonable  to use
 for a  large file  where every record  needs to be  converted.   If you
 have  a large number  of dates to  be converted, it is  best handled by
 coding a routine in your HLL.

 TAADATFF as a subroutine to convert *CYMD format to *JOB format
 ---------------------------------------------------------------

 The following is RPG  III code designed to be  copied in as a  standard
 subroutine and  interface for  converting *CYMD  format to *JOB  format
 See the notes describing the support and error handling.

 The  xxx field is your  input date in  *CYMD format.  The  yyy field is
 the return date in *JOB format.

 The *CYMD format  can contain any value  for century.   It could be  an
 invalid character.  The  century is forced to be within  the range that
 the system CVTDAT  command can convert.  If you  do not have a century,
 use a function like:

      C           '0'       CAT  xxx       ZZFDAT    P      *CYMD fmt

 instead of the MOVEL shown.

 The  ZZDTNM field allows  you to add  unique text to  the error message
 if a conversion  error occurs so you  can determine which date  failed.
 The  typical use  would  be to  place the  name  of the  field  you are
 converting  into  ZZDTNM which  is defined  as  a *CHAR  LEN(10) field.
 ZZDTNM is reset to blanks by the subroutine.

      I* Qualified program name for CVTDAT
      I              'TAATOOL/TAADATFF  '  C         ZZDATC
      .
      C                     MOVELxxx       ZZFDAT    P      *CYMD fmt
      C                     MOVEL'        'ZZDTNM           Name of fld
      C                     EXSR ZZCVTD                     Convert date
      C                     MOVE ZZDAT6    yyy     60       Job date fmt
      .
      C****************************************************************
      C*                                                              *
      C*     ZZCVTD  Convert date - From *CYMD to *JOB                *
      C*                                                              *
      C****************************************************************
      C           ZZCVTD    BEGSR                           Convert date
      C                     CALL ZZDATC                     Date convert
      C                     PARM           ZZFDAT  7        From date
      C                     PARM           ZZDAT6  6        To date
      C                     PARM           ZZDTNM 10        Date name
      C                     MOVE *BLANKS   ZZDTNM           Reset
      C                     ENDSR                           Convert date
      C****************************************************************

 The following is RPG IV code for the same function.

      D* Qualified program name for CVTDAT
      D ZZDATC          C                   CONST('TAATOOL/TAADATFF  ')
      .
      C                   MOVEL(P)  xxx           ZZFDAT
      C                   MOVEL     '          '  ZZDTNM
      C                   EXSR      ZZCVTD
      C                   MOVE      ZZDAT6        yyy               6 0
      .
      C****************************************************************
      C*                                                              *
      C*     ZZCVTD  Convert date - From *CYMD to *JOB                *
      C*                                                              *
      C****************************************************************
      C     ZZCVTD        BEGSR
      C                   CALL      ZZDATC
      C                   PARM                    ZZFDAT           10
      C                   PARM                    ZZDAT6            6
      C                   PARM                    ZZDTNM           10
      C                   MOVE      *BLANKS       ZZDTNM
      C                   ENDSR


 Support and Error Handling with TAADATFF
 ----------------------------------------

 If the current *JOB  date format is  *JUL, it is automatically  changed
 to *YMD.

 The routine  is designed  not to  fail.  The  system CVTDAT  command is
 used to  convert dates.  CVTDAT has restrictions  on the range of dates
 that can be  converted.  The  CVTDAT range  of dates is  ignored.   The
 TAADATFF program determines the  century (0 or 1) by  checking the year
 for  LT  40.   Since  only a  6  digit date  is  returned, this  allows
 TAADATFF to support dates outside of the CVTDAT range.

 If  any  escape  messages are  sent  by  CVTDAT (such  as  an attempted
 conversion from month  13), the TAADATFF  program monitors and  returns
 zeros in  the ZZDAT6 field.  A  diagnostic message is sent  if an error
 occurs.

 TAADATFH as a subroutine to convert *CYMD format to *JOB format
 ---------------------------------------------------------------

 The  following is RPG III code  designed to be copied  in as a standard
 subroutine and interface  for converting  *CYMD format  to *JOB  format
 including the job separator character for the date.

 The xxx  field is your input  date in *CYMD  format.  The yyy  field is
 the return date in *JOB format.

 The  *CYMD format can contain  any value for  century.  It  could be an
 invalid character.  The century is  forced to be within the range  that
 the system CVTDAT command can  convert.  If you do not  have a century,
 use a function like:

      C           '0'       CAT  xxx       ZZFDAT    P      *CYMD fmt

 instead of the MOVEL shown.

 The ZZDTNM  field allows you  to add unique  text to the  error message
 if  a conversion error  occurs so you can  determine which date failed.
 The typical  use  would be  to place  the  name of  the  field you  are
 converting  into ZZDTNM  which is  defined  as a  *CHAR LEN(10)  field.
 ZZDTNM is reset to blanks by the subroutine.

      I* Qualified program name for CVTDAT
      I              'TAATOOL/TAADATFH  '  C         ZZDATC
      .
      C                     MOVELxxx       ZZFDAT    P      *CYMD fmt
      C                     MOVEL'        'ZZDTNM           Name of fld
      C                     EXSR ZZCVTD                     Convert date
      C                     MOVE ZZDAT8    yyy     8        Job date fmt
      .
      C****************************************************************
      C*                                                              *
      C*     ZZCVTD  Convert date - From *CYMD to *JOB                *
      C*                                                              *
      C****************************************************************
      C           ZZCVTD    BEGSR                           Convert date
      C                     CALL ZZDATC                     Date convert
      C                     PARM           ZZFDAT  7        From date
      C                     PARM           ZZDAT8  8        To date
      C                     PARM           ZZDTNM 10        Date name
      C                     MOVE *BLANKS   ZZDTNM           Reset
      C                     ENDSR                           Convert date
      C****************************************************************

 Parameters for TAADATFC
 -----------------------

    FROM          The from date.  This is a 6 byte character field.

    TO            The  to  date  to  be returned.    This  is  a  6 byte
                  character variable.

    FROMFMT       The format of  the from date.   This is  a 4  position
                  field  with  the same  values  as  on CVTDAT  such  as
                  *SYSVAL, *JOB, *MDY, *DMY, *YMD, and *JUL.

    TOFMT         The  format  of  the  to  date.    This  is a  4  byte
                  character variable with  the same  values as  FROMFMT.

 Parameters for TAADATFE
 -----------------------

    FROM          The from date.  This is a 10 byte character field.

    TO            The  to date  to  be  returned.   This  is a  10  byte
                  character variable.

    FROMFMT       The  format of the  from date.   This is a  7 position
                  field  with  the  same  values as  on  CVTDAT  such as
                  *SYSVAL, *JOB, *MDY, *MDYY, *JUL, *ISO, etc.

    TOFMT         The  format  of  the to  date.    This  is  a  4  byte
                  character variable  with the  same values  as FROMFMT.

 Parameters for TAADATFF
 -----------------------

    FROM          The  from date.  This is a  7 byte field in the format
                  CYMD.

    TO            The to  date  to  be  returned.   This  is  a  6  byte
                  character variable.

    DATNAM        The  name of  the  date field  being  converted.   The
                  purpose   of  this  field   is  to   assist  in  error
                  conditions.  The error text  will include the name  of
                  the field.

 Parameters for TAADATFG
 -----------------------

    FROM          The from date.  This is a 10 byte character field.

    TO            The  to date  to  be  returned.   This  is a  10  byte
                  character variable.

    FROMFMT       The  format of the  from date.   This is a  7 position
                  field  with  the  same  values as  on  CVTDAT  such as
                  *SYSVAL, *JOB, *MDY, *MDYY, *JUL, *ISO, etc.

    TOFMT         The  format  of the  to  date.    This  is  a  4  byte
                  character  variable with the  same values  as FROMFMT.

    TOSEP         The  type  of separator  to be  used  in the  To date.
                  This  is a  7  byte  character  field  with  the  same
                  values as  on the CVTDAT  command (i.e.   *NONE, *JOB,
                  *SYSVAL, *BLANK, '/', '-', '.', and ','.

 Parameters for TAADATFH
 -----------------------

    FROM          The from  date.  This is a 7  byte field in the format
                  CYMD.

    TO            The to  date  to  be  returned.   This  is  a  8  byte
                  character  variable   with  the   inserted  job   date
                  separator.

    DATNAM        The  name of  the  date  field being  converted.   The
                  purpose   of  this   field  is  to   assist  in  error
                  conditions.  The error  text will include the  name of
                  the field.

 Prerequisites
 -------------

 The following TAA Tools must be on your system:

             SNDESCMSG      Send escape message

 Implementation
 --------------

 None, the tool is ready to use.

 Objects used by the tool
 ------------------------

    Object        Type       Attribute      Src member     Src file
    ------        -----      ---------      ----------     -----------

    TAADATFC      *PGM          CLP         TAADATFC       QATTCL
    TAADATFE      *PGM          CLP         TAADATFE       QATTCL
    TAADATFF      *PGM          CLP         TAADATFF       QATTCL
    TAADATFG      *PGM          CLP         TAADATFG       QATTCL
    TAADATFH      *PGM          CLP         TAADATFH       QATTCL

Added to TAA Productivity Tools April 1, 1995


Home Page

Last modified on March 10, 2014 © 1995, 2014 - TAA Tools, Inc.