我正在 iSeries IFS 中写入一个文件。
我的变量File_Data是32000A,所以当我使用时
CallP Write(FileD :
%Addr(File_Data) :
%Size(File_Data) )
当变量未填充 32K 字符时,我发现一些无用的空格。 我尝试使用 %Trim 但出现错误。
为了绕过这个问题,我这样做:
For Counter = 1 To %Len(%Trim(File_Data))
Eval SingleChar = %SubSt(File_Data : Counter : 1)
CallP Write(FileD :
%Addr(SingleChar) :
%Size(SingleChar) )
EndFor
有更好的方法吗?因为速度很慢。
最佳答案
考虑到您的解决方案使用 %trim (修剪两侧)但从 char 1 写入 file_data 那么开头必须没有空格。所以你可以使用 %trimr 来代替,这样可以简化问题。
你想要的是告诉 write() 要写入的数据长度:这应该可以完成工作
CallP Write(FileD :
%Addr(File_Data) :
%len(%trimr(File_Data))
)
但是如果您编写的程序也构建内容,那么也许您可以将 file_data 声明为 varchar。它会跟踪数据的实际长度,最后你可以写
CallP Write(FileD :
%Addr(File_Data:*data) :
%len(File_Data)
)
关于ibm-midrange - 将可变大小的字符串写入 IFS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69641432/