免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2709 | 回复: 5
打印 上一主题 下一主题

*CHRA 中*DEC数据的转换 急啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-03 17:15 |只看该作者 |倒序浏览
不好意思标题不知道怎么描述

在数据库中有 *dec 的一个字段Field1
在CL中因为特殊的原因读的时候是以*CHAR读的
现在想在CL中把*CHAR的再变回*dec 怎么做啊 ?

如 A 在数据库中是 1

CL读出来以后是*CHAR类型的 16进制是 001F
如何把这个在CL中变成 *DEC的 1 ?

ps:  
原先是 1  
用%bin的时候出来的是 31

[ 本帖最后由 jskyzz 于 2009-4-3 17:26 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-04-03 18:33 |只看该作者
首先,cl读出数据后,数据库还保留着数据,只要数据没有修改过。

如果用chart读出的数据,001F,再用x'001F'写回。

论坛徽章:
0
3 [报告]
发表于 2009-04-03 18:42 |只看该作者
我现在需要使用 001F这个数据,需要拿他做运算

更郁闷的是

DCL &A  TYPE(*CHAR) LEN(2) VALUE(X'050F')
DCL &B  TYPE(*DEC)   LEN(3 0)

CHGVAR VAR(&B)  VALUE(%BIN(&A))

的时候错误 MCH1210

[ 本帖最后由 jskyzz 于 2009-4-3 18:45 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-04-04 01:19 |只看该作者
X'050F' 转换为p类型,就是1295,你用 DEC(3 0) 存储当然溢出了。

论坛徽章:
0
5 [报告]
发表于 2009-04-04 01:25 |只看该作者
D VALUE@   S     3P0
     D CVT2DEC PR          EXTPROC(CVT2DECR)      
     D INPUT              3P0
     D OUTPUT           3P0
     D
     D CVT2DEC PI
     D INPUT              3P0
     D OUTPUT           3P0
     C***********************
     C EVAL       VALUE@=INPUT
     C EVAL       OUTPUT=VALUE@
     C Eval        *InLR = *On
编译成PGM ,dftgroup 选择为 *no

在CL中对数据转换时调用即可:
call pgm(CVT2DECR)   parm(&A  &B)

[ 本帖最后由 guozhy 于 2009-4-8 14:26 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-04-04 09:17 |只看该作者
原帖由 guozhy 于 2009-4-4 01:19 发表
X'050F' 转换为p类型,就是1295,你用 DEC(3 0) 存储当然溢出了。


多谢

汗   不知道什么是P类型
还有我需要CL的程序去转换一下  ~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP