技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

ヘッダレコード・データレコード・トレーラレコードとは

企業間でやりとりするファイルでよく見かけるフォーマットとして、レコードが「ヘッダレコード」「データレコード」「トレーラレコード」に分かれているフォーマットがあります。
このフォーマットについて覚えておくと、出向先のソースコードを読むのが楽になったり他社とのやりとりが楽になります。
以下で、「ヘッダレコード」「データレコード」「トレーラレコード」の簡単な説明と使用例を記載します。
 
【それぞれのレコードの説明】
・ヘッダレコード
 ファイルの1レコード目のレコード。
 一般的には、そのファイルが何日のデータなのかが記載される。
 
・データレコード
 ファイルの中間レコード。
 実際にやりとりするデータの中身が記載される。
 
・トレーラレコード
 ファイルの最終レコード。
 一般的には、そのファイルのデータレコード件数が記載される。
 
【フォーマット例】
取扱商品ファイルを想定した例を記載します。
可変長のCSVファイルを想定します。
(固定長の場合も多いです。固定長の場合は、カンマ区切りではなくバイト数で区切ることになります。)
 
・ヘッダレコード
 1項目目:ファイル区分(1がセットされる)
 2項目目:ファイル作成日付(YYYYMMDD)
 
・データレコード
 1項目目:ファイル区分(2がセットされる)
  ※5がセットされることも多いです
 2項目目:商品コード(7桁の数値)
 3項目目:商品名(全角文字)
 4項目目:値段(数値)
 
・トレーラレコード
 1項目目:ファイル区分(9がセットされる)
 2項目目:データレコードの件数(数値)
 
【ファイルのレコード例】
1,20190602
2,0000001,ほげ商品,100
2,0000002,ふが商品,250
2,0000003,ぴよ商品,1000
9,3
 
【ファイル受信時の処理例】
ヘッダレコードやトレーラレコードは、受信側のチェック処理に利用できます。
以下、ファイルを1レコード目から順番に読む場合の処理例について記載します。
 
・ファイル区分が1の時
 1レコード目がファイル区分1でなければ異常終了。
 (送信側が中間ファイル等誤ったファイルを送信することを想定)
 バッチ日付と比較し一致しなければ異常終了。
 (送信側が誤って過去ファイルを送信することを想定)
 
・ファイル区分が2の時
 業務上必要な処理を実行。
 
・ファイル区分が9の時
 最終レコードのファイル区分が9でなければ異常終了。
 (ファイルを全件受信できていないことを想定)
 件数がファイル区分2のレコード数と一致しなければ異常終了。
 (ファイルを全件受信できていないことを想定)