ibm-midrange - 将可变大小的字符串写入 IFS 文件

标签 ibm-midrange rpgle ifs rpg

我正在 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/

相关文章:

java - 如何从返回多条记录的java调用RPGIV程序

ibm-midrange - 如何以编程方式确定 IFS 中文件的 CCSID?

error-handling - AS400- MOVEA无法编译,无法将十进制数据结构移动到十进制数组

linux - IFS 和通过目录中的单个位置移动

sql - DB2/400 中的 if-else 语句

sql - DB2 SQL 如何使用 GET DIAGNOSTICS 获取最后执行的 SQL 语句?

ibm-midrange - 检索数据结构字段的名称

bash - 在 bash 中使用 IFS 而不是空格

linux - 如何阻止 `read` 与 `IFS` 将空白字符合并在一起?

ibm-midrange - 我有一个 PF,如何获取使用该特定 PF 的程序列表?