You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

COBOL中TRIM TRAILING修剪尾部空格不生效问题求助

问题根因
  1. COBOL中PIC A(200)定义的是定长字符变量,无论你存入的内容长度是多少,变量的物理长度永远是200字节:存入内容不足200字节时,尾部会自动补空格填满。你每次将TRIM后的结果赋值给WS-OUT,赋值完成后变量还是会被补满空格,FUNCTION LENGTH默认取变量的声明长度,自然输出200。
  2. 你手写的循环逻辑存在多余操作:循环内部执行的MOVE FUNCTION TRIM(WS-OUT TRAILING) TO WS-OUT会打乱当前赋值位置,每次trim后补的空格会覆盖你之前写入的部分字符。
  3. 直接调用FUNCTION REVERSE时你传入了整个WS-INPUT,函数会对完整200字节内容做反转,原本WS-INPUT尾部的191个空格会被反转到最前面,有效内容反而排在最后,自然也会携带大量空格。
修复方案

最通用且简单的修改方式是直接使用你已经计算得到的有效输入长度INP-LEN做内容截取,不需要修改变量定义:

  1. 删掉循环内多余的TRIM操作,循环逻辑修正为:
MOVE 1 to I.
PERFORM VARYING J from INP-LEN by -1 UNTIL J =0
  MOVE WS-INPUT(I:1) to WS-OUT(J:1)
  ADD 1 to I
END-PERFORM
  1. 输出时只截取WS-OUT的前INP-LEN位有效内容,不需要再计算WS-OUT的长度:
DISPLAY WS-OUT(1:INP-LEN)
DISPLAY INP-LEN

你也可以直接用REVERSE函数省略手写循环,直接对WS-INPUT的有效长度部分做反转:

* 直接替换整个PERFORM循环段即可
MOVE FUNCTION REVERSE(WS-INPUT(1:INP-LEN)) TO WS-OUT(1:INP-LEN)

内容的提问来源于stack exchange,提问作者user16878837

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:09:03