在 CL 中,我试图将数字 (193) 转换为其 alpha 表示 (A)。一无所获,需要一点帮助。有 CHAR 函数吗?
问问题
3999 次
3 回答
2
此示例在变量 &TXT1 中给出了 EBCDIC 字符“A”:
PGM
DCL VAR(&NUM) TYPE(*DEC) LEN(3 0) VALUE(193)
DCL VAR(&TXT2) TYPE(*CHAR) LEN(2)
DCL VAR(&TXT1) TYPE(*CHAR) LEN(1)
CHGVAR VAR(%BIN(&TXT2 1 2)) VALUE(&NUM)
CHGVAR VAR(&TXT1) VALUE(%SST(&TXT2 2 1))
SNDUSRMSG MSG(&TXT1)
ENDPGM
于 2014-11-14T16:02:02.853 回答
1
在最近的任何操作系统版本中,最简单的方法是使用字符定义重新定义或覆盖数字:
dcl &numVal *uint 2 value( 193 )
dcl &charVal *char 1 stg( *DEFINED ) defvar( &numVal 2 )
在一个简单的 CL 程序中,它可能如下所示:
pgm
dcl &numVal *uint 2 value( 193 )
dcl &charVal *char 1 stg( *DEFINED ) defvar( &numVal 2 )
/* Show current character equivalence... */
sndusrmsg msg( &charVal ) msgtype( *INFO )
/* Set a new numeric value... */
chgvar &numVal ( 194 )
/* Show new character equivalence... */
sndusrmsg msg( &charVal ) msgtype( *INFO )
return
endpgm
&charVal 值第一次显示为“A”,第二次显示为“B”。*UINT 变量必须定义为 2 字节或更大的变量,因为 CL 不能定义单字节的整数变量。2 字节整数的第二个字节具有所需的位模式。二进制整数值在内存中具有对应于字符“A”、“B”或其他字符的十六进制等价物,
于 2014-11-15T07:05:35.200 回答
0
你需要使用
CHGVAR VAR(&CHAR) VALUE(&NUM)
于 2014-11-14T16:03:05.603 回答