我有一个像这样的平面文件:
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
是一个不错的选择吗?请建议我解决这个问题的方法。
提前致谢。
答案 0 :(得分:3)
是的,unstring可能是你最好的选择。请记住,现代大型机SORT实用程序通常具有内置的数据选择功能。如果COBOL要求实际上只是表达的首选项,您可能会发现实用程序路由更容易。
答案 1 :(得分: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
。
答案 2 :(得分: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