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

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 に答える
3

はい、おそらくunstringが最善の策です。最新のメインフレームの SORT ユーティリティには、通常、データ選択機能が組み込まれていることに注意してください。COBOL の要件が単なる好みの表現である場合は、ユーティリティ ルートの方が簡単であることがわかります。

于 2011-06-11T13:38:10.113 に答える
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 に答える