Calls to CEEFTDS in PL/I

*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;