我是COBOL的入门者,所以我需要帮助。 我的问题是: 我在数据库表中有数据:我的数据是: 具有以下格式的Z-ZYSR-MONTAN(IZYSR):NOT NULL NUMBER(11,2)。
所以我有一个程序,需要将我的数据移动到一个变量“ H-ZYSR-MONTAN”中,然后在编译时将其移动到一个Z殖民地Z8中。 > 我的问题是如何对变量进行贴花以获得良好的效果?
我这样做,但是我不能服从正确的结果: 我的数据在开始: 2223,55 -10,98 -1,08 82,61
我声明的变量: 05 H-ZYSR-MONTAN PIC S9(11)V9(2)COMP-3。
* Taux Horaire的形成 05 W-Z18 PIC S9(11)V9(2)COMP-3。 05 FILLER PIC X(001)VALUE';'。
代码:
ALIM-WZ18 SECTION.
MOVE Z-ZYSR-NOMBRE TO IZYSR.
MOVE ZERO TO H-ZYSR-MONTAN.
IF Z-ZYSR-NOMBRE > ZERO
PERFORM VARYING IZYSR FROM Z-ZYSR-NOMBRE BY -1 UNTIL
IZYSR = ZERO
IF Z-ZYSR-CODRUB(IZYSR) = 'THF'
MOVE Z-ZYSR-MONTAN(IZYSR) TO
H-ZYSR-MONTAN
MOVE ZERO TO IZYSR
END-IF
END-PERFORM
MOVE H-ZYSR-MONTAN TO W-Z18
END-IF.
我得到的结果是这样的:
Z18 欧元 ” 0 0 @
0 P @
我从未获得过类似的信息: 2223,55 -10,98 -1,08 82,61
感谢您的帮助。
答案 0 :(得分:1)
据我所知,您只需要将W-Z18
的格式从PIC S9(11)V9(2) 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