1

我有一个 RPG 程序 A 和一个 CL 程序 B。A 以数据结构作为入口参数调用 B。此数据结构包含字符以及压缩小数。B 中的入口参数被声明为字符变量,因此当从 A 传入入口参数时,十进制值以十六进制格式结束。我需要它们在 B 中的原始十进制值。有没有办法将这些十六进制字符串转换回 B 中的十进制?

4

1 回答 1

2

你不需要转换。在数据结构中的适当位置定义十进制字段。

PGM (&STRUCT)
   DCL &STRUCT      *CHAR 12
   DCL &NAME        *CHAR 10   STG(*DEFINED) DEFVAR(&STRUCT)
   DCL &NBR         *DEC (3 0) STG(*DEFINED) DEFVAR(&STRUCT 11)

*DEFINED 存储方法在位置固定时效果很好。在位置可能不同的情况下,请使用 *BASED 存储。

在此示例中,由格式参数确定的位置中有一个数值。该值将增加 1 或 2。

PGM (&STRUCT)
   DCL &STRUCT     *CHAR 80
   DCL &FMT        *CHAR 4
   DCL &P1         *PTR
   DCL &NUM        *DEC (3 0) STG(*BASED)
   ...
   CHGVAR &FMT %SUBSTR(&STRUCT 1 4)
   CHGVAR  &P1  %ADDRESS(&STRUCT)
   SELECT
      WHEN (&FMT = 'ONE ')  THEN(DO)
         CHGVAR %OFFSET(&P1) 20       /* POS 21 IN STRUCT */
         CHGVAR &NUM (&NUM + 1)       /* INCREMENT NUMBER BY 1 */
         ENDDO
      WHEN  (&FMT = 'TWO ')  THEN(DO)
         CHGVAR %OFFSET(&P1) 40       /* POS 41 IN STRUCT */
         CHGVAR &NUM (&NUM + 2)       /* INCREMENT NUMBER BY 2 */
         ENDDO
      OTHERWISE DO
         /* EXIT WITH ERROR */
         ...
         ENDDO
      ENDSELECT

请参阅CL 命令中的变量

于 2012-11-01T13:03:49.063 回答