*PROCESS MACRO;
/*Module/File Name: IBMDT1 */
/****************************************************/
/* */
/* Function: CEESECS - convert timestamp to seconds */
/* */
/* This example calls the CEESECS callable */
/* service to compute the number of hours between */
/* the timestamps 11/02/92 05:22 and 11/02/92 17:22.*/
/* The program responds that 36 hours has elapsed. */
/* */
/****************************************************/
CE78DAT : PROC OPTIONS(MAIN);
%INCLUDE CEEIBMAW;
%INCLUDE CEEIBMCT;
DCL START_TIME CHAR(255) VARYING
INIT ( '11/02/92 05:22' );
DCL END_TIME CHAR(255) VARYING
INIT ( '11/03/92 17:22' );
DCL PICSTR CHAR(255) VARYING
INIT ( 'MM/DD/YY HH:MI' );
DCL START_SECS REAL FLOAT DECIMAL(16);
DCL END_SECS REAL FLOAT DECIMAL(16);
DCL ELAPSED_TIME FIXED DEC (9,4);
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 takes the timestamp START_TIME and */
/* returns a double-precision Lilian seconds */
/* tally in START_SECS. */
/*************************************************/
CALL CEESECS ( START_TIME, PICSTR, START_SECS, FC );
IF FBCHECK( FC, CEE000) THEN DO;
/**********************************************/
/* CEESECS takes the timestamp END_TIME and */
/* returns a double-precision Lilian seconds */
/* tally in END_SECS. */
/**********************************************/
CALL CEESECS ( END_TIME, PICSTR, END_SECS, FC );
IF FBCHECK( FC, CEE000) THEN DO;
ELAPSED_TIME = (END_SECS - START_SECS) / 3600;
PUT SKIP EDIT( ELAPSED_TIME,
' hours have elapsed between ',
START_TIME, ' and ', END_TIME)
( F(7,2), (4) A );
END;
ELSE DO;
PUT SKIP LIST( 'ERROR ' || FC.MsgNo ||
' CONVERTING ENDING TIMESTAMP TO SECONDS' );
STOP;
END;
END;
ELSE DO;
PUT SKIP LIST( 'ERROR ' || FC.MsgNo
|| ' CONVERTING STARTING TIMESTAMP TO SECONDS' );
STOP;
END;
END CE78DAT ;