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