在CL中,我试图将数字(193)转换为其alpha表示(A)。什么都没有,需要一点帮助。是否有CHAR功能?
答案 0 :(得分:2)
这个例子给出了EBCDIC字符" A"在变量& TXT1:
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
答案 1 :(得分: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"或者其他什么,
答案 2 :(得分:0)
您需要使用
CHGVAR VAR(&CHAR) VALUE(&NUM)