COBOL如何将SIGN TRAILING SEPARATE字段转为正常十进制显示格式
COBOL字段格式转换方案
你当前的ws-var1是用于存储的计算型字段,S9(11)V9(2) SIGN TRAILING SEPARATE的定义自带隐含小数点、末尾独立符号,直接输出会保留前导零、不显示小数点、额外带出末尾符号,只需要新增一个编辑型输出字段即可实现需求:
- 第一步:定义编辑类型的输出字段,示例定义如下:
03 ws-var1-output PIC Z(9)9.99.
该定义的规则说明:
Z字符用于压制前导零,对应位置如果为前导零会自动显示为空白,Z(9)的长度足够覆盖你原字段11位整数的取值范围显式书写的
.会在输出时展示为实际小数点,后面的99对应原字段中V隐含的两位小数位如果你需要同时支持负数显示,可将定义调整为
PIC -Z(9)9.99,负数会自动在最左侧显示负号,正数的符号位置为空白第二步:在输出前执行赋值操作:
MOVE ws-var1 TO ws-var1-output
- 第三步:直接输出
ws-var1-output即可得到29992.00格式的结果,前导零会被自动去除,小数点显式展示,原字段末尾的独立符号不会带出。
如果需要完全去掉输出内容左侧的空白,可以配合COBOL内置字符串处理函数调整,上述方案已完全满足你给出的示例需求。
内容的提问来源于stack exchange,提问作者siva
相关产品推荐
相关产品推荐

