我有一个像这样的平面文件:
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
是否是一个好的选择?请建议一种解决这个问题的方法。
提前感谢。
您是否考虑过使用INSPECT?以下方法也可为您带来帮助……
MOVE ZERO TO COUNTER
INSPECT INPUT-RECORD TALLYING COUNTER FOR ALL '|SAL|'
IF COUNTER > ZERO
write to temp file
END-IF
COUNTER
是一个数字工作存储变量,用于计算在INPUT-RECORD
中找到的不重叠出现次数为|SAL|
的字符串。
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