Calls to CEELCNV and CEESETL in PL/I

*PROCESS MACRO;
 /*Module/File Name: IBMLCNV                         */
 /****************************************************/
 /* Example for callable service CEELCNV             */
 /* Function: Retrieve numeric and monetary format   */
 /*  structure for default locale and print an item. */
 /*  Set locale to France, retrieve structure and    */
 /*  print an item.                                  */
 /****************************************************/

 PLILCNV: PROC OPTIONS(MAIN);

 %INCLUDE CEEIBMAW; /* ENTRY defs, macro defs        */
 %INCLUDE CEEIBMCT; /* FBCHECK macro, FB constants   */
 %INCLUDE CEEIBMLC; /* Locale category constants     */
 %INCLUDE CEEIBMN2; /* NM_STRUCT for CEELCNV calls   */

 /* use explicit pointer for local NM_STRUCT struct  */
 DCL NUM_AND_MON POINTER INIT(ADDR(NM_STRUCT));

/* Point to local version_info struct and initialize*/
/* VERSION TO 2 TO USE C99 MAPPING OF NM_STRUCT     */
DCL VERSN POINTER INIT(ADDR(version_info));  
VERSION_INFO.VERSION = 2; 

 /* CEESETL service call arguments */
 DCL LOCALE_NAME CHAR(256) VARYING;

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

   /* retrieve structure for default locale */
   CALL CEELCNV ( *, NUM_AND_MON, FC );

   PUT SKIP LIST('Default DECIMAL_POINT is ',
                  NM_STRUCT.DECIMAL_POINT);

   /* set locale for France */
   LOCALE_NAME = 'Fr_FR';

   /* use LC_NUMERIC category const from CEEIBMLC */
   CALL CEESETL ( LOCALE_NAME, LC_NUMERIC,  FC );

   /* use LC_MONETARY category const from CEEIBMLC */
   CALL CEESETL ( LOCALE_NAME, LC_MONETARY,  FC );

   /* FBCHECK macro used (defined in CEEIBMCT) */
   IF FBCHECK( FC, CEE000 ) THEN
     DO;
       /* retrieve active NM_STRUCT, France Locale */
       CALL CEELCNV ( VERSN, NUM_AND_MON, FC );

       PUT SKIP LIST('French DECIMAL_POINT is ',
                      NM_STRUCT.DECIMAL_POINT);
     END;

 END PLILCNV;