如何在COBOL中声明压缩数值变量

如何在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

我的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
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