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