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

在iSeries IFS中写入变长字符串如何避免多余空格并优化性能

解决方案

多余空格的产生原因是调用Write()时第三个参数传入了固定的%Size(File_Data)(即32000字节),无论变量实际填充了多少内容,都会完整写入32000字节,未填充的尾部区域即为多余空格。
不需要逐字符写入,仅需修改Write()的第三个参数为实际有效内容长度即可,性能和原全量写入几乎一致:

// 仅去除尾部多余空格时使用%TrimR,需要同时去除首尾空格可替换为%Trim
DCL-S VALID_LEN INT(10) INZ(%LEN(%TRIMR(File_Data)));

CALLP     Write(FileD           :  
               %ADDR(File_Data) : 
               VALID_LEN )

如果需要完全剔除首尾所有空格后再写入,可通过临时变量中转规避%Addr不能直接作用于%Trim返回值的编译报错:

DCL-S TMP_DATA CHAR(32000);
DCL-S VALID_LEN INT(10);

EVAL TMP_DATA = %TRIM(File_Data);
EVAL VALID_LEN = %LEN(%TRIMR(TMP_DATA));

CALLP     Write(FileD           :  
               %ADDR(TMP_DATA) : 
               VALID_LEN )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:18:03