*PROCESS MACRO;
/*Module/File Name: IBMFTDS */
/****************************************************/
/* Example for callable service CEEFTDS */
/* Function: Convert numeric time and date values */
/* to a string based on a format specification */
/* string parameter and locale format conversions */
/****************************************************/
PLIFTDS: PROC OPTIONS(MAIN);
%INCLUDE CEEIBMAW; /* ENTRY defs, macro defs */
%INCLUDE CEEIBMCT; /* FBCHECK macro, FB constants */
%INCLUDE CEEIBMLC; /* Locale category constants */
%INCLUDE CEEIBMTD; /* TD_STRUCT for CEEFTDS calls */
/* use explicit pointer to local TD_STRUCT structure*/
DCL TIME_AND_DATE POINTER INIT(ADDR(TD_STRUCT));
/* CEEFTDS service call arguments */
DCL MAXSIZE_FTDS BIN FIXED(31); /* OUTPUT_FTDS size */
DCL FORMAT_FTDS CHAR(64) VARYING; /* format string */
DCL OUTPUT_FTDS CHAR(72) VARYING; /* output string */
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);
/* specify numeric input fields for conversion */
TD_STRUCT.TM_SEC=1; /* seconds after min (0-61) */
TD_STRUCT.TM_MIN=2; /* minutes after hour (0-59)*/
TD_STRUCT.TM_HOUR=3; /* hours since midnight(0-23)*/
TD_STRUCT.TM_MDAY=9; /* day of the month (1-31) */
TD_STRUCT.TM_MON=11; /* months since Jan(0-11) */
TD_STRUCT.TM_YEAR=94; /* years since 1900 */
TD_STRUCT.TM_WDAY=5; /* days since Sunday (0-6) */
TD_STRUCT.TM_YDAY=344;/* days since Jan 1 (0-365) */
TD_STRUCT.TM_ISDST=1; /* Daylight Saving Time flag*/
/* specify format string for CEEFTDS call */
FORMAT_FTDS = 'Today is %A, %b %d Time: %I:%M %p';
MAXSIZE_FTDS = 72; /* specify output string size */
CALL CEEFTDS ( *, TIME_AND_DATE, MAXSIZE_FTDS,
FORMAT_FTDS, OUTPUT_FTDS, FC );
/* FBCHECK macro used (defined in CEEIBMCT) */
IF FBCHECK( FC, CEE000 ) THEN
DO; /* CEEFTDS call is successful */
PUT SKIP LIST('Format '||FORMAT_FTDS );
PUT SKIP LIST('Results in '||OUTPUT_FTDS );
END;
ELSE
DISPLAY ( 'Format '||FORMAT_FTDS||
' Results in '||FC.MsgNo );
END PLIFTDS;