メニューボタン
サポートチーム便り2011.08.22

CPYFRMSTMFを使用する場合に短縮フィールドの場所を見つける

Question

CPYFRMSTMF を使用して可変長レコードをストリーム・ファイルから固定レコード長ファイルにコピーする場合に、どのレコードまたはフィールドを切り捨てるのか判断する方法はありませんか。ジョブ・ログに次の警告メッセージが出力されるため、レコードが切り捨てられていることがわかります。

CPIA083 - Stream file copied to object with truncated records

CRLF で区切られたさまざまなレイアウトのファイルをアップロードしようとするときに、可変長レコードのすべてのデータを取得する必要があるのです。コピーしている何千または何万というファイルの中から、数個のレコードの短縮フィールドを見つけるのは非常に時間が掛かります。

エラー・レコード・ファイルを使用したこともありますが、短縮レコードもコピーされていたので、システムはそれをエラーと認識せず、エラー・ファイルにも記録していなかったと思います。コマンドは SQL を使用して背後でその作業を行っているのではと思いついて、Get Diagnostics コマンドで実験しましたがうまくいきませんでした。

Answer

CPYFRMSTMF では、ターゲットとして DDS ベースでないフラットな物理ファイル (例: 固定レコード長で作成されたファイル) または SRCPF が必要です。IBM の CPYFRMSTMF 資料によると、FROMSTRMF 中のレコードがフィールド区切りされている場合、ERRRCDFILE の最小レコード長は TOFILE レコード長、TOFILE のフィールド数、加えて 813 の合計に等しくなる必要があります。やっかいなのが「加えて 813」という点です。ERRCDFILE レコード長は最低でも 813 バイト長、プラス他の 2 つの値 (レコード長とフィールド数) を加えた値でなければなりません。

あわせて読みたい記事

PAGE TOP