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语言中字符串结束符的作用,我很想知道。
做到知其然,知其所以然,才安心。 展开
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语言中字符串结束符的作用,我很想知道。
做到知其然,知其所以然,才安心。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询