我有一个像这样的平面文件:
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
一个不错的选择吗?请建议我解决此问题的方法。
提前致谢。
是的,unstring可能是你最好的选择。请记住,现代大型机 SORT 实用程序通常具有内置的数据选择功能。如果 COBOL 要求真的只是表达的偏好,您可能会发现实用程序路线更容易。
您是否考虑过使用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
。
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