3

我有一个像这样的平面文件:

1|sal|manager|2007/01/01|2007/12/31
2|sal|manager|2008/01/01|2008/12/31
3|per|abc|manager
4|sal|manager|2007/01/01|2007/12/31
5|per|xyz|ceo

我必须使用 读取文件COBOL,并将包含字符串的行写入sal临时文件。

unstring一个不错的选择吗?请建议我解决此问题的方法。

提前致谢。

4

3 回答 3

3

是的,unstring可能是你最好的选择。请记住,现代大型机 SORT 实用程序通常具有内置的数据选择功能。如果 COBOL 要求真的只是表达的偏好,您可能会发现实用程序路线更容易。

于 2011-06-11T13:38:10.113 回答
3

您是否考虑过使用INSPECT?以下内容也适合您...

MOVE ZERO TO COUNTER  
INSPECT INPUT-RECORD TALLYING COUNTER FOR ALL '|SAL|'  
IF COUNTER > ZERO  
   write to temp file  
END-IF   

COUNTER|SAL|是一些数字工作存储变量,用于接收在中找到 的字符串的非重叠出现次数的计数INPUT-RECORD

于 2011-06-13T14:40:36.717 回答
1

Unstring 是一个很好的选择。由于每个字段都由竖线分隔,因此非常合适。

如果您有固定数量的字段,您可以一次完成所有操作。如果您有可变数量的字段,您可以使用“指针”选项逐个字段,直到您到达末尾。

例如:

Move +1 to my-ptr
Move input-record to remaining-str
Perform until remaining-str = spaces
   Unstring remaining-str
      delimited by '|'
      into
         next-field
         remaining-str
      pointer my-ptr
   End-Unstring
   ... do something with next-field ...
End-Perform
于 2011-06-12T05:55:06.837 回答