Sign in

docs Examples

T1R

T1R

**free
ctl-opt DftActGrp(*NO) ActGrp(*new) option(*nodebugio: *srcstmt)
main(Main);
ctl-opt BndDir('UTIL_BND');
/COPY ../Copy_Mbrs/SRV_MSG_P.RPGLE
/COPY ../Copy_Mbrs/PRT_P.RPGLE

dcl-proc Main;

  // CL pgm that executes DATEADJ command
  dcl-pr datet extpgm('T1C');
    indate char(10);
    indays packed(5:0);
    inType char(7);
    inFmt char(10);
    outFmt char(10);
    outDate char(10);
    outEsc char(100);
  end-pr;

  dcl-s indate  char(10);
  dcl-s days    packed(5:0);
  dcl-s inType  char(7);
  dcl-s inFmt     char(10);
  dcl-s outFmt    char(10);
  dcl-s outEsc    char(100);

  dcl-s outDate char(10);

  dcl-ds line len(132) qualified;
    inFmt   char(10);
    *n      char(1);
    indate  char(10);
    *n      char(1);
    days    char(5);
    *n      char(1);
    inType  Char(7);
    *n      char(1);
    outDate char(10);
    *n      char(1);
    outFmt  char(10);
  end-ds;

  dcl-ds head likeds(line);
  head.inFmt = 'InFmt';
  head.indate = 'inDate';
  head.days = ' Adj';
  head.inType = 'Type';
  head.outDate = 'OutDate';
  head.outFmt = 'OutFmt';
  PRT(head :'*H1') ;

  // === Test default stuff ====
  inType = '*DAYS';
  // --------------------------------
  PRT('=== Testing SYSTEM date') ;
  days = 1;
  indate = '*SYSTEM';
  inFmt = '*JOBFMT';
  outFmt = '*INFMT';
  exsr doit;
  outFmt = '*MDY';
  exsr doit;
  inFmt = '*LONGJUL';
  exsr doit;
  outFmt = '*ISO';
  exsr doit;

  // --------------------------------
  PRT('=== Testing date: *JOBDATE');
  indate ='*JOBDATE';
  inFmt = '*JUL';
  outFmt = '*INFMT';
  exsr doit;
  outFmt = '*EUR';
  exsr doit;
  days =-1;
  exsr doit;
  days = 0;
  exsr doit;

  // == Test all input formats
  PRT(' ' : '*NEWPAGE');
  PRT('=== Testing Input formats ===');
  days = 1;
  outFmt = '*ISO';
  // -------------------------------
  indate = '99/12/31';
  inFmt = '*YMD';
  exsr doit;
  // -------------------------------
  indate = '12/31/99';
  inFmt = '*MDY';
  exsr doit;
  // -------------------------------
  indate = '31/12/99';
  inFmt = '*DMY';
  exsr doit;

  // -------------------------------
  indate = '991231';
  inFmt = '*YMD0';
  exsr doit;
  // -------------------------------
  indate = '123199';
  inFmt = '*MDY0';
  exsr doit;
  // -------------------------------
  indate = '311299';
  inFmt = '*DMY0';
  exsr doit;

  // -------------------------------
  indate = '099/12/31';
  inFmt = '*CYMD';
  exsr doit;
  // -------------------------------
  indate = '012/31/99';
  inFmt = '*CMDY';
  exsr doit;
  // -------------------------------
  indate = '031/12/99';
  inFmt = '*CDMY';
  exsr doit;
  // -------------------------------
  indate = '0991231';
  inFmt = '*CYMD0';
  exsr doit;
  // -------------------------------
  indate = '0123199';
  inFmt = '*CMDY0';
  exsr doit;
  // -------------------------------
  indate = '0311299';
  inFmt = '*CDMY0';
  exsr doit;

  // -------------------------------
  indate = '1999-12-31';
  inFmt = '*ISO';
  exsr doit;
  // -------------------------------
  indate = '12/31/1999';
  inFmt = '*USA';
  exsr doit;
  // -------------------------------
  indate = '31.12.1999';
  inFmt = '*EUR';
  exsr doit;
  // -------------------------------
  indate = '1999-12-31';
  inFmt = '*JIS';
  exsr doit;

  // -------------------------------
  indate = '19991231';
  inFmt = '*ISO0';
  exsr doit;
  // -------------------------------
  indate = '12311999';
  inFmt = '*USA0';
  exsr doit;
  // -------------------------------
  indate = '31121999';
  inFmt = '*EUR0';
  exsr doit;
  // -------------------------------
  indate = '19991231';
  inFmt = '*JIS0';
  exsr doit;

  // -------------------------------
  indate = '99/365';
  inFmt = '*JUL';
  exsr doit;

  // -------------------------------
  indate = '1999/365';
  inFmt = '*LONGJUL';
  exsr doit;
  // -------------------------------
  indate = '03/17/21';
  inFmt = '*SYSTEM';
  days =31;
  exsr doit;
  // -------------------------------
  indate = '03/21/21';
  inFmt = '*JOBFMT';
  days =61;
  exsr doit;


  // === Test all output formats ===
  PRT(' ' : '*NEWPAGE');
  PRT('=== Testing Output formats ===');
  days = 1;
  // -------------------------------
  indate = '03/17/21';
  inFmt = '*JOBFMT';
  exsr doit;
  // -------------------------------
  indate ='24/02/28';
  inFmt = '*YMD';
  outFmt = '*YMD';
  exsr doit;
  // -------------------------------
  outFmt = '*MDY';
  exsr doit;
  // -------------------------------
  outFmt = '*DMY';
  exsr doit;
  // -------------------------------
  indate ='24/02/28';
  inFmt = '*YMD';
  outFmt = '*YMD0';
  exsr doit;
  // -------------------------------
  outFmt = '*MDY0';
  exsr doit;
  // -------------------------------
  outFmt = '*DMY0';
  exsr doit;

  // -------------------------------
  days = 2;
  indate ='80/02/28';
  inFmt = '*YMD';
  outFmt = '*CYMD';
  exsr doit;
  // -------------------------------
  outFmt = '*CMDY';
  exsr doit;
  // -------------------------------
  outFmt = '*CDMY';
  // -------------------------------
  exsr doit;
  outFmt = '*CYMD0';
  exsr doit;
  // -------------------------------
  outFmt = '*CMDY0';
  exsr doit;
  // -------------------------------
  outFmt = '*CDMY0';
  exsr doit;

  // -------------------------------
  outFmt = '*ISO';
  exsr doit;
  // -------------------------------
  outFmt = '*ISO0';
  exsr doit;

  // -------------------------------
  outFmt = '*USA';
  exsr doit;
  // -------------------------------
  outFmt = '*USA0';
  exsr doit;

  // -------------------------------
  outFmt = '*EUR';
  exsr doit;
  // -------------------------------
  outFmt = '*EUR0';
  exsr doit;

  // -------------------------------
  outFmt = '*JIS';
  exsr doit;
  // -------------------------------
  outFmt = '*JIS0';
  exsr doit;

  // -------------------------------
  outFmt = '*JUL';
  exsr doit;
  // -------------------------------
  outFmt = '*LONGJUL';
  exsr doit;
  // -------------------------------
  outFmt = '*SYSTEM';
  exsr doit;
  // -------------------------------
  outFmt= '*ISO';
  inFmt = '*MDY';
  indate = '03/01/80';
  days = -2;
  exsr doit;
  days = -1;
  exsr doit;
  // -------------------------------
  indate = '03/17/21';
  outFmt = '*JOBFMT';
  exsr doit;
  // -------------------------------
  days = 0;
  inFmt = '*ISO';
  indate = '1999-01-01';
  exsr doit;
  // -------------------------------
  days = 365;
  exsr doit;
  // -------------------------------

  // === Test error Handling
  PRT(' ' : '*NEWPAGE');
  PRT('=== Testing Error Handling ===');
  indate = '2039-12-31';
  days = 1;
  inFmt = '*ISO';
  outFmt = '*YMD';
  exsr doit;
  // -------------------------------
  inFmt = 'XXX';
  exsr doit;
  // -------------------------------
  inFmt = '*ISO';
  outFmt = 'YYY';
  exsr doit;
  // -------------------------------
  indate = '2039-13-31';
  outFmt = '*ISO';
  exsr doit;
  // -------------------------------
  indate = '01/01/40';
  inFmt = '*MDY';
  days = -1;
  outFmt = '*INFMT';
  exsr doit;
  // -------------------------------
  indate = '01/01/19';
  inType = '*CENTURY';
  exsr doit;

  // === Testing *MONTH
  PRT(' ' : '*NEWPAGE');
  // get first day of this month
  indate = '*JOBDATE';
  inType = '*DAYS';
  days  = 1 - %subdt(%date(udate) :*days);
  outFmt = '*INFMT';
  exsr doit;
  // get first day of last month
  indate = outDate;
  inType = '*MONTHS';
  days = -1;
  exsr doit;
  // first day of this year
  indate = '*JOBDATE';
  days  = 1 - %subdt(%date(udate) :*months);
  inType = '*MONTHS';
  exsr doit;
  // first day of last year
  indate = outDate;
  days = -1;
  inType = '*YEARS';
  exsr doit;

  return;

  begsr doit;
    datet(indate : days : inType : inFmt : outFmt : outDate : outEsc);

    line.inFmt = inFmt;
    line.indate = indate;
    evalr line.days = %trim(%char(days));
    line.inType = inType;
    line.outDate = outDate;
    line.outFmt  = outFmt;
    PRT(line);
    if (outEsc <> ' ');
      PRT('  +++ ERROR +++  Msg: ' +outEsc);
    endif;
  endsr;
end-proc;