Calls to CEESECS and CEEDATM in PL/I

*PROCESS MACRO;
 /*Module/File Name: IBMDT2                          */
 /****************************************************/
 /*                                                  */
 /* Function: CEESECS - convert timestamp to seconds */
 /*         : CEEDATM - convert seconds to timestamp */
 /*                                                  */
 /* CEESECS is used to convert a timestamp to        */
 /* seconds. 24 hours in seconds is subtracted from  */
 /* the number of seconds in the original timestamp. */
 /* CEEDATM is then used to build a new timestamp    */
 /* representing the new date and time.              */
 /*                                                  */
 /****************************************************/
 PLIDS: PROC OPTIONS(MAIN);

    %INCLUDE  CEEIBMAW;
    %INCLUDE  CEEIBMCT;

    DCL TIMESTAMP      CHAR(255) VARYING
                       INIT('01/26/67 20:00');
    DCL NEW_TIMESTAMP  CHAR(80);
    DCL PICSTR         CHAR(255) VARYING
                       INIT ( 'MM/DD/YY HH:MI' );
    DCL START_SECS     REAL FLOAT DECIMAL(16);
    DCL NEW_TIME       REAL FLOAT DECIMAL(16);
    DCL DISPLACEMENT   REAL FIXED BINARY(31,0) INIT(24);
    DCL 01 FC,                     /* Feedback token */
           03 MsgSev    REAL FIXED BINARY(15,0),
           03 MsgNo     REAL FIXED BINARY(15,0),
           03 Flags,
              05 Case      BIT(2),
              05 Severity  BIT(3),
              05 Control   BIT(3),
           03 FacID     CHAR(3),      /* Facility ID */
           03 ISI   /* Instance-Specific Information */
                        REAL FIXED BINARY(31,0);
    /*************************************************/
    /* CEESECS is invoked to obtain the Lilian       */
    /* seconds tally corresponding to the timestamp  */
    /* 01/26/67 20:00.  The Lilian seconds tally is  */
    /* returned in double-precision variable         */
    /* START_SECS.                                   */
    /*************************************************/
    CALL CEESECS ( TIMESTAMP, PICSTR, START_SECS, FC );
    IF  FBCHECK( FC, CEE000)  THEN  DO;
       /**********************************************/
       /* The Lilian seconds tally in START_SECS is  */
       /* decremented by 24 hour DISPLACEMENT        */
       /* variable times 3600 seconds.               */
       /******************************************** */
       NEW_TIME = START_SECS - DISPLACEMENT * 3600;
       /**********************************************/
       /* CEEDATM is invoked to obtain a new         */
       /* TimeStamp based on the new Lilian seconds. */
       /**********************************************/
       CALL CEEDATM ( NEW_TIME, PICSTR, NEW_TIMESTAMP, FC );
       IF  FBCHECK( FC, CEE000)  THEN  DO;
          PUT SKIP LIST ( 'The time ' || DISPLACEMENT
             || ' hours before ' || TIMESTAMP
             || ' is ' || NEW_TIMESTAMP );
          END;
       ELSE  DO;
          PUT SKIP LIST('ERROR CONVERTING SECONDS TO TIMESTAMP');
          PUT SKIP LIST( 'CEEDATM failed with msg '|| FC.MsgNo );
          END;
       END;
    ELSE  DO;
       PUT SKIP LIST('ERROR CONVERTING TIMESTAMP TO SECONDS' );
       PUT SKIP LIST( 'CEESECS failed with msg '|| FC.MsgNo );
       END;

 END PLIDS;