cobol字符串问题 20

定义一个变量01BpicX(8).现在用两种方法将"abc"的值赋给B1.move"abc"toB.2.string"abc"delimitedbysizeintoB.以... 定义一个变量
01 B pic X(8).

现在用两种方法将"abc"的值赋给B
1. move "abc" to B.
2. string "abc" delimited by size into B.
以上2种方法得到B的结果都为"abc ".(半角空白占了5位)
而实际想要得到B的结果为"abc".
于是进行如下的改写:
①. move "abc"0000"" to B.
②. string "abc"00"" delimited by size into B.
这样的话,B的结果就为"abc"了。

问题:
(1)②中的 "abc"00"" 这个语句,00指代的是什么含义?是null么?
""的匹配情况是怎样的?是第1个与第4个匹配,第2与第3个匹配么?
cobol的语言说明书中似乎并无相关这种用法的举例说明,请达人指点。
(2)①和②最后实现的结果都是一样的,但是为什么move语句中要用"0000"
来标识字符串结束,而不是用"00"?(这个测试过,一旦用"00",编译的
时候会报语法错误。)其中的区别在哪儿?同问string语句中为什么要
用"00"而不是用"0000"?
(3)查过其他资料,①的等价写法似乎还可以这样写:
move "abc" & X"00" to B.
这个写法中,X是指代16进制数,还是指的字符串呢?
如果指代字符串,改成这样是否可行?
move "abc","00" to B.
望达人解惑。。。

cobol的语法技巧相关的资料实在太少,难道真的是太简单,没人关注?
这个问题就是实际工作中遇到的问题,并且是已解决的问题。但是我不知道为什么要这样解决。

实际情况是这样的:
cobol业务处理时会在log中出一些业务方面的异常信息。一般是我们自己定义一些变量来存放log信息。由于编辑好的log信息的长度不一定一样长,所以都会把
变量长度定义长一点。
比如定义 01 logMessage pic X(256).
当出现异常的时候,我们会在程序处理中写入异常信息,比如"abcdef".
但是pic X 这种数据类型,默认值是半角空白。所以异常信息写入后,我们得到
的logMessage 这个变量存储的是“abcdef ”(后边都是半角空白)。
出力到日志中的话就会打乱日志的format之类的问题(太长了,因为有很多半角空白在)。
如果在写入异常信息的时候后边接上“00”的话,处理出来的log里边就不会有那么多的半角空白了,log会很规范整齐。

这个时候,logMessage里边的数据存储形式是怎样的,我不是很清楚."00"这个东西是不是起了类似于C语言中字符串结束符的作用,我很想知道。

做到知其然,知其所以然,才安心。
展开
 我来答
songlina8303
2009-02-25 · TA获得超过458个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:0
展开全部
你说的这些,在工作当中是不会去使用的,因为cobol主要是简单,让人一眼就看明白。因此根本不会使用这样的。想想其它方法吧,或者把要求说一下。我给你一个工作中的处理方法
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式