如何在COBOL中声明压缩数值变量
我的COBOL问题是: 我在数据库的表格中有数据:我的数据是: Z-ZYSR-MONTANIZYSR的格式为:非空数字11,2 所以我有一个程序,我需要将我的数据移动到一个变量H-ZYSR-MONTAN中,然后我将它移动到一个colonne Z8中,当我编译时,我获得了Excel,数据在不同的colonne中 我的问题是如何声明变量以获得好的结果 我这样做了,但无法获得正确的结果: 我在beging中的数据: 2223,55 -10,98 -1,08 82,61 我声明的变量: 05 H-ZYSR-MONTAN PIC S911V92组件3 *陶克斯霍莱尔组 05 W-Z18图S911V92组件3。 05填料PIC X001值“;”。 守则: 我得到的结果如下: Z18 € 0 0 @ 0 P @ 我从来没有得到过像这样的东西: 2223,55 -10,98 -1,08如何在COBOL中声明压缩数值变量,cobol,Cobol,我的COBOL问题是: 我在数据库的表格中有数据:我的数据是: Z-ZYSR-MONTANIZYSR的格式为:非空数字11,2 所以我有一个程序,我需要将我的数据移动到一个变量H-ZYSR-MONTAN中,然后我将它移动到一个colonne Z8中,当我编译时,我获得了Excel,数据在不同的colonne中 我的问题是如何声明变量以获得好的结果 我这样做了,但无法获得正确的结果: 我在beging中的数据: 2223,55 -10,98 -1,08 82,61 我声明的变量: 05 H-ZYS
82,61据我所知,您只需将W-Z18的格式从PIC S911V92 COMP-3更改为PIC-12,99,如下所示。 这有用吗
environment division.
configuration section.
special-names.
decimal-point is comma.
data division.
working-storage section.
1 filler.
2 test-values.
3 pic s9(11)v99 comp-3 value 2223,55.
3 pic s9(11)v99 comp-3 value -10,98.
3 pic s9(11)v99 comp-3 value -1,08.
3 pic s9(11)v99 comp-3 value 82,61.
2 filler redefines test-values.
3 test-value comp-3 pic s9(11)v99 occurs 4.
1 W-Z18 PIC -(12),99.
1 i binary pic 9(4).
procedure division.
begin.
perform varying i from 1 by 1 until i > 4
move test-value (i) to W-Z18
display W-Z18
end-perform
stop run
.
结果:
2223,55
-10,98
-1,08
82,61
它的十六进制值是多少?COMP字段每字节存储2位数字。因此,如果你试图显示它,即使它是正确的,它也会看起来像垃圾;150,52 ; -20,08 ; -1542,69 .... 那么,如何在COBOLthat中消除这个变量,这一点还没有阐明。我不想知道你输出的十六进制值。你能看到我的回答吗?那不应该是答案,仍然没有添加任何澄清。还有为什么要插入CSS?是的,我把小数点放在逗号上。然后我把变量H-ZYSR-MONTAN放在这张图S911V92 COMP-3上,因为我的MONTAN是数据编号11,2,但我有很多员工的数据。我需要在H-ZYSR-MONTAN中移动MONTAN数据,然后将H-ZYSR-MONTAN移动到W-Z18。所以,是的,你理解我想要什么,但是有很多数据,我用了这样的方式:H-ZYSR-MONTAN,这张图是S911V92 COMP-3和W-Z18 PIC-12,99,我得到了正确的答案resultat@gnad-从问题和评论的各个部分猜测,似乎数据传输如下:SQL数据库->COBOL->文件FICSOR->Excel。分号;在Excel中用作分隔符,Excel中显示了Z18€0@等无效数据。对吗?我有一个问题,为什么你用这种格式PIC-12,99。有关Z18的详细信息,请参阅。我用12而不是11来表示标志的位置。实际上-12,99与------,99相同。
2223,55
-10,98
-1,08
82,61