- ベストアンサー
ヘッダレコードとトレーラレコードの定義の目的について
通信プロトコルが異なるシステム間でファイルを授受する際、ファイルの送達確認として、ヘッダレコードやトレーラレコードを使用するという話を聞いたのですが、ヘッダレコードやトレーラレコードはそのような目的のために定義しているのでしょうか? (WEB上でいろいろ検索してみたのですが、そのような情報が取得できなかったので、質問しました) 全銀協フォーマットのように、ファイルフォーマットでヘッダレコードやトレーラレコードを定義している場合、データレコード以外のヘッダレコードやトレーラレコードはどのような場合に使用するのかを周りの人に聞いた際に上記の話を聞きました。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>>ヘッダレコードやトレーラレコードはそのような目的のために定義しているのでしょうか? ヘッダレコードやトレーラレコードが無くても、プログラムのロジックは作れるかもしれませんが、あるほうが以下の点で有利でしょうね。 1)データの始まりと終わりが明確になる 通信途中、あるいは処理のどこかで、明細部のデータが1件脱落した、あるいは前半部や後半部がばっさり抜けたとき、件数が一致しない、あるいはヘッダレコードやトレーラレコードが無い等で、異常がすぐわかる。 2)データフィールドが効率的に使える データ全体の情報は、明細ごとに入れると非効率です。たとえば、ある支店のデータ1万件で、銀行名、支店名のカタカナが必要な場合、全明細データに銀行名・支店名のカタカナを入れる必要はありませんね。ヘッダーレコードだけにあれば、十分です。明細データは、その空いたフィールドを別の用途に使えるようになります。 3)プログラムのロジックが簡単になる ヘッダレコードやトレーラレコードがあると、COBOL世代のプログラマの場合、慣れたロジックでプログラミングできる。 こんなところですかね。
その他の回答 (1)
- lv4u
- ベストアンサー率27% (1862/6715)
>>私はプログラミング経験がほとんど無いため、具体的に説明していただいたとしても理解できないかもしれませんので、イメージ程度で構いませんので、教えて頂けないでしょうか? 簡単な説明ですけど。 昔は、汎用コンピュータ上で、COBOLを使って、部別課別売り上げ一覧表というような表を沢山作っていました。現在エクセルで「課別売上小計」~「部別売上中計」~「総売上」なんてのを作ることありますが、そういう表です。 【01 関東営業部】 001 山手担当課 00112 斉藤 倫 1000 00114 安斉 かなえ 2000 00119 小沢 カオル 3000 ----------------------------------------- 001 山手担当課 小計 6000 002 下町担当課 00312 石井 まゆみ 10 00314 谷川 史子 20 00319 こうの 史代 30 ----------------------------------------- 002 下町担当課 小計 60 ========================================= 【01 関東営業部】 中計 6060 ・・・・・・・ (カラムずれはご容赦) この場合、「課コードが変わったらどうする」とか「部コードが変わったらどうする」って、コントロールブレイクっていうのですが、そのタイミングで、必要なサブルーチンに処理を飛ばしていました。 なので、こういうプログラムに慣れているプログラマは、全銀フォーマットのようなデータの区分を持つものは、慣れた処理というわけです。 なお、最近では、オブジェクト指向ってのが流行っていますが、個人的には、それ以前に「構造化プログラミング」とか「複合設計」など、ちょっと古いと思われている技術をマスターしてほしいと思ったりします。 このあたりを知らないプログラマが、「VBで○○集計一覧表のロジックをどう作ればいいかわからない!」って悩んでいたりする場面に出くわすことがあります。 P.S. その昔、3000ページ入りのB4用紙の段ボール箱で、毎月30箱とか40箱分(もっとかも?)売上レポートとして印刷していました。フロアにずらりと並んだ印刷済みの箱は、ちょっと異常な感じでしたね。プリンタの値段は2億円とか言っていました。
お礼
ご回答ありがとうございました。 文章だけではなく、表イメージを付けて頂いたのでイメージが掴めた気がしています。 >プリンタの値段は2億円とか言っていました。 費用削減とか、ペーパーレス化の現在では、なかなかお目にかかる機会は無いかもしれませんね。 いろいろな補足情報も提供して頂き、ありがとうございました。
お礼
ご回答ありがとうございました。 1)データの始まりと終わりが明確になる やはり、ヘッダレコードやトレーラレコードは授受したデータの不備を確認する手段の一つになるようですね。 2)データフィールドが効率的に使える ヘッダレコードやトレーラレコードを定義するメリットの一つになりますね。質問した時点では意識していませんでしたので、良い回答を頂けたと感謝しております。 3)プログラムのロジックが簡単になる 「慣れたロジックでプログラミングできる」というのは、どのような感じなのでしょうか? 私はプログラミング経験がほとんど無いため、具体的に説明していただいたとしても理解できないかもしれませんので、イメージ程度で構いませんので、教えて頂けないでしょうか?