JPH06187100A - レコード抽出装置 - Google Patents
レコード抽出装置Info
- Publication number
- JPH06187100A JPH06187100A JP4355642A JP35564292A JPH06187100A JP H06187100 A JPH06187100 A JP H06187100A JP 4355642 A JP4355642 A JP 4355642A JP 35564292 A JP35564292 A JP 35564292A JP H06187100 A JPH06187100 A JP H06187100A
- Authority
- JP
- Japan
- Prior art keywords
- record
- block
- buffer
- data
- extraction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】 (修正有)
【目的】 レコードのサイズとは無関係なサイズを持つ
ブロックを単位として記憶する記憶装置から、短い処理
時間でレコードを抽出する。 【構成】 入力手段2 は、記憶装置10からデータをブロ
ック単位でブロックバッファ30に読み込ませる。レコー
ド抽出手段3aは、ブロックバッファ30からレコードを順
次抽出して抽出情報を出力するとともに、2つのブロッ
クに跨がっているレコード(分割レコード)があったら
検出信号を出力する。転送手段5 は、分割レコードの未
処理データをブロックバッファ30からレコードバッファ
40に転送し、入力手段2 に次のブロックデータを要求す
る。また、返されたブロックデータの中にある分割レコ
ードの残りデータをレコードバッファ40に転送する。レ
コード抽出手段3bは、レコードバッファ40内のレコード
を抽出し、その抽出情報を出力する。レコード処理手段
4 は、レコード抽出手段3a,3b の抽出情報が指すレコー
ドを処理する。
ブロックを単位として記憶する記憶装置から、短い処理
時間でレコードを抽出する。 【構成】 入力手段2 は、記憶装置10からデータをブロ
ック単位でブロックバッファ30に読み込ませる。レコー
ド抽出手段3aは、ブロックバッファ30からレコードを順
次抽出して抽出情報を出力するとともに、2つのブロッ
クに跨がっているレコード(分割レコード)があったら
検出信号を出力する。転送手段5 は、分割レコードの未
処理データをブロックバッファ30からレコードバッファ
40に転送し、入力手段2 に次のブロックデータを要求す
る。また、返されたブロックデータの中にある分割レコ
ードの残りデータをレコードバッファ40に転送する。レ
コード抽出手段3bは、レコードバッファ40内のレコード
を抽出し、その抽出情報を出力する。レコード処理手段
4 は、レコード抽出手段3a,3b の抽出情報が指すレコー
ドを処理する。
Description
【0001】
【産業上の利用分野】本発明は、レコードを単位として
構成されるデータからレコードを抽出するレコード抽出
装置に関するものである。
構成されるデータからレコードを抽出するレコード抽出
装置に関するものである。
【0002】
【従来の技術】固定磁気ディスクからブロックバッファ
にブロック単位でデータを読み出し、それをレコード単
位で処理してプリントイメージに変換した後、プリンタ
に送出するような場合、ブロックバッファから1レコー
ドずつデータを抽出する必要がある。しかし、磁気ディ
スクのブロックの長さは固定長で、レコードの長さは任
意(可変長)である場合が一般的であり、1つのレコー
ドが2つ以上のブロックに跨がって存在する場合が生じ
てくる。
にブロック単位でデータを読み出し、それをレコード単
位で処理してプリントイメージに変換した後、プリンタ
に送出するような場合、ブロックバッファから1レコー
ドずつデータを抽出する必要がある。しかし、磁気ディ
スクのブロックの長さは固定長で、レコードの長さは任
意(可変長)である場合が一般的であり、1つのレコー
ドが2つ以上のブロックに跨がって存在する場合が生じ
てくる。
【0003】そのように、レコードが2つ以上のブロッ
クに跨がって存在する場合でも処理できるようにしたレ
コード抽出装置として、次のような技術が開発されてい
る。図14は、従来のレコード抽出装置の概要を示すブ
ロック図である。図14において、1はファイル切換手
段、2は入力手段、3はレコード抽出手段、4はレコー
ド処理手段、5は転送手段、8はデータ移動手段、10
は磁気ディスク、20はプリンタ、30はブロックバッ
ファ、40はレコードバッファである。また、実線矢印
は検出信号,制御信号,情報信号の流れを示しており、
点線矢印はファイルデータの流れを示している(以下、
同様)。
クに跨がって存在する場合でも処理できるようにしたレ
コード抽出装置として、次のような技術が開発されてい
る。図14は、従来のレコード抽出装置の概要を示すブ
ロック図である。図14において、1はファイル切換手
段、2は入力手段、3はレコード抽出手段、4はレコー
ド処理手段、5は転送手段、8はデータ移動手段、10
は磁気ディスク、20はプリンタ、30はブロックバッ
ファ、40はレコードバッファである。また、実線矢印
は検出信号,制御信号,情報信号の流れを示しており、
点線矢印はファイルデータの流れを示している(以下、
同様)。
【0004】入力手段2は、磁気ディスク10に格納さ
れているファイルのデータをブロック単位でブロックバ
ッファ30に読み込ませる。転送手段5は、ブロックバ
ッファ30のデータを、最大レコード長以上のサイズを
有するレコードバッファ40に、それが一杯になるまで
転送する。レコード抽出手段3は、レコードバッファ4
0内の先頭位置から順次レコードの先頭アドレスとサイ
ズを抽出し、レコード処理手段4に送る。レコード処理
手段4は、レコード抽出手段3から送られてきたレコー
ドの先頭アドレスとサイズに基づいてレコードバッファ
40からレコードデータを読み出し、プリントイメージ
への変換等の処理を施した後、プリンタ20に送出す
る。
れているファイルのデータをブロック単位でブロックバ
ッファ30に読み込ませる。転送手段5は、ブロックバ
ッファ30のデータを、最大レコード長以上のサイズを
有するレコードバッファ40に、それが一杯になるまで
転送する。レコード抽出手段3は、レコードバッファ4
0内の先頭位置から順次レコードの先頭アドレスとサイ
ズを抽出し、レコード処理手段4に送る。レコード処理
手段4は、レコード抽出手段3から送られてきたレコー
ドの先頭アドレスとサイズに基づいてレコードバッファ
40からレコードデータを読み出し、プリントイメージ
への変換等の処理を施した後、プリンタ20に送出す
る。
【0005】また、レコード抽出手段3は、レコードの
終端アドレス(先頭アドレスとレコードサイズとの和)
がレコードバッファ40の終端アドレスをオーバーして
いるレコードを検出した場合、その検出信号をデータ移
動手段8に送る。データ移動手段8は、それを受けてレ
コードバッファ40内の未処理データをレコードバッフ
ァ40の先頭位置に移動させ、転送手段5に対して、再
びデータ転送を指示する。転送手段5は、ブロックバッ
ファ30内の未転送のデータをレコードバッファ40の
先頭位置に移動された未処理データの後に転送する。
終端アドレス(先頭アドレスとレコードサイズとの和)
がレコードバッファ40の終端アドレスをオーバーして
いるレコードを検出した場合、その検出信号をデータ移
動手段8に送る。データ移動手段8は、それを受けてレ
コードバッファ40内の未処理データをレコードバッフ
ァ40の先頭位置に移動させ、転送手段5に対して、再
びデータ転送を指示する。転送手段5は、ブロックバッ
ファ30内の未転送のデータをレコードバッファ40の
先頭位置に移動された未処理データの後に転送する。
【0006】ここで、レコードバッファ40でのデータ
の処理について図15を参照しながら説明する。図15
において、30は、レコードのデータR1,R2,R3 を読
み込んだ状態のブロックバッファ、40−1は、ブロッ
クバッファ30から最初のレコードのデータR1 及び次
のレコードの前半部のデータR2 −1が転送された状態
のレコードバッファ、40−2は、データ移動手段8に
よってレコード前半部のデータR2 −1が先頭位置に移
動され、その後ろに転送手段5がブロックバッファ30
から続きのデータを転送した状態のレコードバッファを
示している。S1,S2 はレコードのサイズを示してい
る。
の処理について図15を参照しながら説明する。図15
において、30は、レコードのデータR1,R2,R3 を読
み込んだ状態のブロックバッファ、40−1は、ブロッ
クバッファ30から最初のレコードのデータR1 及び次
のレコードの前半部のデータR2 −1が転送された状態
のレコードバッファ、40−2は、データ移動手段8に
よってレコード前半部のデータR2 −1が先頭位置に移
動され、その後ろに転送手段5がブロックバッファ30
から続きのデータを転送した状態のレコードバッファを
示している。S1,S2 はレコードのサイズを示してい
る。
【0007】まず、図15(イ)に示すように、転送手
段5がブロックバッファ30からレコードバッファ40
に、レコードバッファ40のサイズ一杯のデータを転送
する。そして、レコード抽出手段3がポインタをレコー
ドバッファ40の先頭アドレスAに置き、レコードの先
頭位置にセットされているレコードサイズS1 を抽出す
る。最初のレコードR1 は、1レコード分のデータが全
てレコードバッファ40に入っているので、抽出したレ
コードをレコード処理手段4によって処理する。
段5がブロックバッファ30からレコードバッファ40
に、レコードバッファ40のサイズ一杯のデータを転送
する。そして、レコード抽出手段3がポインタをレコー
ドバッファ40の先頭アドレスAに置き、レコードの先
頭位置にセットされているレコードサイズS1 を抽出す
る。最初のレコードR1 は、1レコード分のデータが全
てレコードバッファ40に入っているので、抽出したレ
コードをレコード処理手段4によって処理する。
【0008】続いて、レコード抽出手段3はポインタを
2番目のレコードR2 の先頭アドレスBに移し、2番目
のレコードR2 の先頭位置にセットされているレコード
サイズS2 を抽出する。そして、アドレスBにレコード
サイズS2 を加えた値が、レコードバッファ40の最後
尾のアドレスを越えているとき、レコードR2 のデータ
は、一部が欠けていることになるのでそのままでは処理
できない。そこで、図15(ロ)に示すように、データ
移動手段8はポインタの指すアドレスBからレコードバ
ッファ40の最後尾までのデータを、レコードバッファ
40の先頭位置に移動させ、転送手段5がその後にブロ
ックバッファ30から続きのデータを転送する。
2番目のレコードR2 の先頭アドレスBに移し、2番目
のレコードR2 の先頭位置にセットされているレコード
サイズS2 を抽出する。そして、アドレスBにレコード
サイズS2 を加えた値が、レコードバッファ40の最後
尾のアドレスを越えているとき、レコードR2 のデータ
は、一部が欠けていることになるのでそのままでは処理
できない。そこで、図15(ロ)に示すように、データ
移動手段8はポインタの指すアドレスBからレコードバ
ッファ40の最後尾までのデータを、レコードバッファ
40の先頭位置に移動させ、転送手段5がその後にブロ
ックバッファ30から続きのデータを転送する。
【0009】その結果、2番目のレコードR2 の全ての
データがレコードバッファ40に入ることになるので、
レコード抽出手段3により抽出し、レコード処理手段4
によって処理する。3番目のレコードR3 以降は、これ
らの処理を繰り返し、転送手段5がブロックバッファ3
0の全てのデータが転送し終わったら、入力手段2は磁
気ディスク10の次のブロックのデータをブロックバッ
ファ30に読み出して、同様に処理する。この従来技術
によれば、レコードが2つ以上のブロックに跨がってい
る場合でも、レコード抽出が可能である。
データがレコードバッファ40に入ることになるので、
レコード抽出手段3により抽出し、レコード処理手段4
によって処理する。3番目のレコードR3 以降は、これ
らの処理を繰り返し、転送手段5がブロックバッファ3
0の全てのデータが転送し終わったら、入力手段2は磁
気ディスク10の次のブロックのデータをブロックバッ
ファ30に読み出して、同様に処理する。この従来技術
によれば、レコードが2つ以上のブロックに跨がってい
る場合でも、レコード抽出が可能である。
【0010】なお、このようなレコード抽出装置に関連
する従来の文献としては、例えば、発明協会公開技報9
2−268号がある。
する従来の文献としては、例えば、発明協会公開技報9
2−268号がある。
【0011】
(問題点)しかしながら、前記した従来の技術には、ブ
ロックバッファ30に読み込まれた全てのデータをレコ
ードバッファ40に転送する必要があり、また、レコー
ドバッファ40内のレコード抽出できなかったデータ
を、一旦レコードバッファ40の先頭部に移動する必要
があるため、レコード抽出処理に多くの時間を要すると
いう問題点があった。
ロックバッファ30に読み込まれた全てのデータをレコ
ードバッファ40に転送する必要があり、また、レコー
ドバッファ40内のレコード抽出できなかったデータ
を、一旦レコードバッファ40の先頭部に移動する必要
があるため、レコード抽出処理に多くの時間を要すると
いう問題点があった。
【0012】(問題点の説明)上記従来技術では、ま
ず、データをブロックバッファ30に読み込み、読み込
んだ全てのデータを順次レコードバッファ40に転送し
てから処理するようにしていた。そのように、全てのデ
ータをレコードバッファ40に転送するため、転送する
データ量が多くなり、転送時間が長くなっていた。ま
た、レコードバッファ40内で、レコードの終端アドレ
スがレコードバッファ40の終端アドレスをオーバーし
ているレコードの未処理データは、レコードバッファ4
0の先頭位置まで移動させる必要があり、そのための時
間も必要であった。その結果、レコードを抽出するまで
の処理に多くの時間を要していた。本発明は、以上のよ
うな問題点を解決することを課題とするものである。
ず、データをブロックバッファ30に読み込み、読み込
んだ全てのデータを順次レコードバッファ40に転送し
てから処理するようにしていた。そのように、全てのデ
ータをレコードバッファ40に転送するため、転送する
データ量が多くなり、転送時間が長くなっていた。ま
た、レコードバッファ40内で、レコードの終端アドレ
スがレコードバッファ40の終端アドレスをオーバーし
ているレコードの未処理データは、レコードバッファ4
0の先頭位置まで移動させる必要があり、そのための時
間も必要であった。その結果、レコードを抽出するまで
の処理に多くの時間を要していた。本発明は、以上のよ
うな問題点を解決することを課題とするものである。
【0013】
【課題を解決するための手段】前記課題を解決するた
め、第1の発明では、レコードを単位として構成される
データをブロックを単位として記憶する記憶装置からレ
コードを抽出するレコード抽出装置において、上記記憶
装置からデータをブロック単位でブロックバッファに読
み込ませる入力手段と、上記ブロックバッファからレコ
ードを順次抽出して抽出情報を出力すると共に、ブロッ
クバッファ内に収まらないレコードの検出信号を出力す
る第1のレコード抽出手段と、上記第1のレコード抽出
手段からの上記検出信号を受けてブロックバッファ内の
未処理データをレコードバッファに転送した後、上記入
力手段に次のブロックデータを要求し、返されたブロッ
クデータの先頭部分にある、上記ブロックバッファに収
まらないレコードの残りデータをレコードバッファに転
送すると共に、ブロックバッファ内からのレコード抽出
の再開を上記第1のレコード抽出手段に指示する転送手
段と、上記転送手段が転送したレコードバッファ内のレ
コードを抽出し、その抽出情報を出力する第2のレコー
ド抽出手段と、上記第1のレコード抽出手段と第2のレ
コード抽出手段の抽出情報が指すレコードを処理するレ
コード処理手段とを設けることとした。
め、第1の発明では、レコードを単位として構成される
データをブロックを単位として記憶する記憶装置からレ
コードを抽出するレコード抽出装置において、上記記憶
装置からデータをブロック単位でブロックバッファに読
み込ませる入力手段と、上記ブロックバッファからレコ
ードを順次抽出して抽出情報を出力すると共に、ブロッ
クバッファ内に収まらないレコードの検出信号を出力す
る第1のレコード抽出手段と、上記第1のレコード抽出
手段からの上記検出信号を受けてブロックバッファ内の
未処理データをレコードバッファに転送した後、上記入
力手段に次のブロックデータを要求し、返されたブロッ
クデータの先頭部分にある、上記ブロックバッファに収
まらないレコードの残りデータをレコードバッファに転
送すると共に、ブロックバッファ内からのレコード抽出
の再開を上記第1のレコード抽出手段に指示する転送手
段と、上記転送手段が転送したレコードバッファ内のレ
コードを抽出し、その抽出情報を出力する第2のレコー
ド抽出手段と、上記第1のレコード抽出手段と第2のレ
コード抽出手段の抽出情報が指すレコードを処理するレ
コード処理手段とを設けることとした。
【0014】また、第2の発明では、レコードを単位と
して構成されるデータをブロックを単位として記憶する
記憶装置からレコードを抽出するレコード抽出装置にお
いて、上記記憶装置からデータをブロック単位で2つ以
上のブロックバッファに順番に繰り返して読み込ませる
入力手段と、上記ブロックバッファからレコードを順次
抽出して抽出情報を出力すると共に、ブロックバッファ
内に収まらないレコードの検出信号を出力するレコード
抽出手段と、上記レコード抽出手段からの抽出情報が指
すレコードを処理する第1のレコード処理手段と、上記
レコード抽出手段からの上記検出信号を受けてブロック
バッファ内の未処理データの先頭位置と長さを第1のレ
コード情報としてレコード情報バッファに登録した後、
上記入力手段に対して次のブロックデータを別のブロッ
クバッファに読み込ませることを要求し、返されたブロ
ックデータの中の、上記ブロックバッファ内に収まらな
いレコードの残りデータの先頭位置と長さを第2のレコ
ード情報としてレコード情報バッファに登録し、そのよ
うな処理を当該レコードの最後部のデータがブロックバ
ッファに読み込まれるまで繰り返し、登録した各レコー
ド情報を出力すると共に、ブロックバッファ内からのレ
コード抽出の再開を上記レコード抽出手段に指示するレ
コード情報作成手段と、2つ以上のブロックバッファ内
に分かれて読み込まれたレコードの処理はフィールド単
位で行い、かつ、レコードの分割位置にあるフィールド
の処理はバイト単位で行い、境界のバイト位置における
処理対象バイトを指すポインタの切り換えを上記各レコ
ード情報に基づいて行う第2のレコード処理手段とを設
けることとした。
して構成されるデータをブロックを単位として記憶する
記憶装置からレコードを抽出するレコード抽出装置にお
いて、上記記憶装置からデータをブロック単位で2つ以
上のブロックバッファに順番に繰り返して読み込ませる
入力手段と、上記ブロックバッファからレコードを順次
抽出して抽出情報を出力すると共に、ブロックバッファ
内に収まらないレコードの検出信号を出力するレコード
抽出手段と、上記レコード抽出手段からの抽出情報が指
すレコードを処理する第1のレコード処理手段と、上記
レコード抽出手段からの上記検出信号を受けてブロック
バッファ内の未処理データの先頭位置と長さを第1のレ
コード情報としてレコード情報バッファに登録した後、
上記入力手段に対して次のブロックデータを別のブロッ
クバッファに読み込ませることを要求し、返されたブロ
ックデータの中の、上記ブロックバッファ内に収まらな
いレコードの残りデータの先頭位置と長さを第2のレコ
ード情報としてレコード情報バッファに登録し、そのよ
うな処理を当該レコードの最後部のデータがブロックバ
ッファに読み込まれるまで繰り返し、登録した各レコー
ド情報を出力すると共に、ブロックバッファ内からのレ
コード抽出の再開を上記レコード抽出手段に指示するレ
コード情報作成手段と、2つ以上のブロックバッファ内
に分かれて読み込まれたレコードの処理はフィールド単
位で行い、かつ、レコードの分割位置にあるフィールド
の処理はバイト単位で行い、境界のバイト位置における
処理対象バイトを指すポインタの切り換えを上記各レコ
ード情報に基づいて行う第2のレコード処理手段とを設
けることとした。
【0015】そしてまた、第3の発明では、レコードを
単位として構成されるデータをブロックを単位として記
憶する記憶装置からレコードを抽出するレコード抽出装
置において、上記記憶装置からデータを複数ブロック単
位でブロックバッファに読み込ませる入力手段と、上記
ブロックバッファからレコードを順次抽出して抽出情報
を出力すると共に、ブロックバッファ内に収まらないレ
コードの検出信号を出力するレコード抽出手段と、上記
レコード抽出手段の抽出情報が指すレコードを処理する
レコード処理手段と、上記レコード抽出手段からの上記
検出信号を受けてブロックバッファ内の未処理データが
記憶されているファイル内のブロック番号とブロック内
のオフセットとを算出し、上記ブロック番号のブロック
から上記ブロックバッファに再びデータを読み込むこと
を上記入力手段に要求し、返されたデータを上記オフセ
ット位置から処理することを上記レコード抽出手段に指
示する入力制御手段とを設けることとした。
単位として構成されるデータをブロックを単位として記
憶する記憶装置からレコードを抽出するレコード抽出装
置において、上記記憶装置からデータを複数ブロック単
位でブロックバッファに読み込ませる入力手段と、上記
ブロックバッファからレコードを順次抽出して抽出情報
を出力すると共に、ブロックバッファ内に収まらないレ
コードの検出信号を出力するレコード抽出手段と、上記
レコード抽出手段の抽出情報が指すレコードを処理する
レコード処理手段と、上記レコード抽出手段からの上記
検出信号を受けてブロックバッファ内の未処理データが
記憶されているファイル内のブロック番号とブロック内
のオフセットとを算出し、上記ブロック番号のブロック
から上記ブロックバッファに再びデータを読み込むこと
を上記入力手段に要求し、返されたデータを上記オフセ
ット位置から処理することを上記レコード抽出手段に指
示する入力制御手段とを設けることとした。
【0016】
【作 用】第1の発明では、レコードの抽出を通常は
ブロックバッファで行い、ブロックバッファ内に収まら
ないレコードだけ、レコードバッファに転送し、そこで
レコードを組み立ててからレコードの抽出を行う。その
ため、全てのデータをブロックバッファからレコードバ
ッファに転送する必要はなく、転送するのはブロックバ
ッファ内に収まらないレコードだけである。その結果、
転送するデータの量が少なくなって、転送に要する時間
は短くなる。また、レコードバッファ内でデータを移動
させるようなことはしないので、その分の処理時間も短
縮される。
ブロックバッファで行い、ブロックバッファ内に収まら
ないレコードだけ、レコードバッファに転送し、そこで
レコードを組み立ててからレコードの抽出を行う。その
ため、全てのデータをブロックバッファからレコードバ
ッファに転送する必要はなく、転送するのはブロックバ
ッファ内に収まらないレコードだけである。その結果、
転送するデータの量が少なくなって、転送に要する時間
は短くなる。また、レコードバッファ内でデータを移動
させるようなことはしないので、その分の処理時間も短
縮される。
【0017】第2及び第3の発明では、ブロックバッフ
ァ内のデータを移動させずにレコード抽出を行う。その
ため、ブロックバッファからレコードバッファへのデー
タ転送を行う必要もなくなる。その結果、その分の処理
時間も短縮される。
ァ内のデータを移動させずにレコード抽出を行う。その
ため、ブロックバッファからレコードバッファへのデー
タ転送を行う必要もなくなる。その結果、その分の処理
時間も短縮される。
【0018】
【実施例】実施例の説明に入る前に、本発明の実施例で
前提としている事項について説明する。固定磁気ディス
クは、固定長ブロックを単位としてデータをファイルに
記憶する。各ファイルは、図16に示すように、システ
ムディレクトリファイルによりそれらの開始ブロック番
号とブロック数(ファイルサイズ)が管理されている。
また、各ファイルの先頭ブロックには、次にリンクする
ファイル名を書き込んである。また、データの単位であ
るレコードは、図7に示すようにレコード長を示すフィ
ールド(RLF)をレコード先頭に持つ可変長レコード
形式とし、任意の長さを持つ。以下、本発明の実施例を
図面に基づいて詳細に説明する。
前提としている事項について説明する。固定磁気ディス
クは、固定長ブロックを単位としてデータをファイルに
記憶する。各ファイルは、図16に示すように、システ
ムディレクトリファイルによりそれらの開始ブロック番
号とブロック数(ファイルサイズ)が管理されている。
また、各ファイルの先頭ブロックには、次にリンクする
ファイル名を書き込んである。また、データの単位であ
るレコードは、図7に示すようにレコード長を示すフィ
ールド(RLF)をレコード先頭に持つ可変長レコード
形式とし、任意の長さを持つ。以下、本発明の実施例を
図面に基づいて詳細に説明する。
【0019】(第1の発明)図1は、第1の発明の概要
を示すブロック図である。符号は、図14のものに対応
し、3a,3bはレコード抽出手段である。第1の発明
では、上記従来技術のように全てのデータをレコードバ
ッファ40に転送することはせずに、レコードの抽出は
通常はレコード抽出手段3aがブロックバッファ30で
行い、ブロックバッファ30の中に収めきれなかったレ
コードだけを転送手段5がレコードバッファ40に転送
する。そして、入力手段2がブロックバッファに読み込
ませた次のブロックデータの中のレコードの残りデータ
を、転送手段5がレコードバッファ40に転送し、レコ
ードバッファ40の中に1レコード分のデータを組み立
ててからレコードの抽出を行う。
を示すブロック図である。符号は、図14のものに対応
し、3a,3bはレコード抽出手段である。第1の発明
では、上記従来技術のように全てのデータをレコードバ
ッファ40に転送することはせずに、レコードの抽出は
通常はレコード抽出手段3aがブロックバッファ30で
行い、ブロックバッファ30の中に収めきれなかったレ
コードだけを転送手段5がレコードバッファ40に転送
する。そして、入力手段2がブロックバッファに読み込
ませた次のブロックデータの中のレコードの残りデータ
を、転送手段5がレコードバッファ40に転送し、レコ
ードバッファ40の中に1レコード分のデータを組み立
ててからレコードの抽出を行う。
【0020】図2は、第1の発明におけるレコードバッ
ファ内での処理を説明するための図である。図2(イ)
は、現在処理中のファイルのn番目のブロックデータを
読み込んだ状態を示している。このブロックデータに
は、複数のレコードが含まれているが、ブロックバッフ
ァ30内に収まっているレコードは順次抽出され、最後
部に斜線入りで示す部分にあるレコードは、1つのレコ
ードのデータがブロックバッファ30の中に収まりきれ
ず、次のブロックに跨がって入っている(以下、このよ
うなレコードを「分割レコード」という)。そのような
分割レコードが検出されたときは、図2(ハ)に示すよ
うに、先ず分割レコードの前半部をレコードバッファ4
0へ転送する。次に、磁気ディスク10からブロックバ
ッファ30に次のブロックデータを転送し(図2
(ロ))、その先頭部分に入っている上記分割レコード
の後半部をレコードバッファ40の上記前半部のデータ
の後ろに転送する。このようにして、レコードバッファ
40内でレコードデータを組立てて、そこからレコード
の抽出を行う。
ファ内での処理を説明するための図である。図2(イ)
は、現在処理中のファイルのn番目のブロックデータを
読み込んだ状態を示している。このブロックデータに
は、複数のレコードが含まれているが、ブロックバッフ
ァ30内に収まっているレコードは順次抽出され、最後
部に斜線入りで示す部分にあるレコードは、1つのレコ
ードのデータがブロックバッファ30の中に収まりきれ
ず、次のブロックに跨がって入っている(以下、このよ
うなレコードを「分割レコード」という)。そのような
分割レコードが検出されたときは、図2(ハ)に示すよ
うに、先ず分割レコードの前半部をレコードバッファ4
0へ転送する。次に、磁気ディスク10からブロックバ
ッファ30に次のブロックデータを転送し(図2
(ロ))、その先頭部分に入っている上記分割レコード
の後半部をレコードバッファ40の上記前半部のデータ
の後ろに転送する。このようにして、レコードバッファ
40内でレコードデータを組立てて、そこからレコード
の抽出を行う。
【0021】次に、第1の発明の動作を説明する。図3
は、第1の発明の動作を説明するためのフローチャート
である。 ステップ1…ファイル切換手段1は、磁気ディスク10
のシステムディレクトリファイルを参照して、ファイル
構成を調べ、各ファイルの開始ブロック番号とブロック
数を求める。 ステップ2…処理すべきファイルを指定する。 ステップ3…入力手段2は、指定されたファイルに処理
すべきブロックがあるか否かを判別する。 ステップ4…処理すべきブロックがあれば、そのブロッ
ク番号を指定する。 ステップ5…指定された番号のブロックデータをブロッ
クバッファ30に読み込む。 ステップ6…後述する転送フラグがセットされているか
否かを判別する。
は、第1の発明の動作を説明するためのフローチャート
である。 ステップ1…ファイル切換手段1は、磁気ディスク10
のシステムディレクトリファイルを参照して、ファイル
構成を調べ、各ファイルの開始ブロック番号とブロック
数を求める。 ステップ2…処理すべきファイルを指定する。 ステップ3…入力手段2は、指定されたファイルに処理
すべきブロックがあるか否かを判別する。 ステップ4…処理すべきブロックがあれば、そのブロッ
ク番号を指定する。 ステップ5…指定された番号のブロックデータをブロッ
クバッファ30に読み込む。 ステップ6…後述する転送フラグがセットされているか
否かを判別する。
【0022】ステップ7…転送フラグがセットされてい
なければ、レコード抽出手段3aは、ポインタをブロッ
クバッファ30の先頭に置く。 ステップ8…当該レコードの長さを示すためのフィール
ドであるRLF(レコードレングスフィールド)がブロ
ックバッファ30内に収まっているか否かを判別する。 ステップ9…収まっていれば、RLFからレコードサイ
ズSを取得し、取得フラグをセットする。 ステップ10…レコードサイズSに基づいて、該レコー
ドの終端がブロックの終端を越えているか否かを判別す
る。 ステップ11…越えていなければ、レコード抽出手段3
aは、レコード処理手段4に抽出すべきレコードの先頭
アドレスとサイズを通知し、レコード処理手段4は、当
該レコードを抽出して処理する。 ステップ12…レコード抽出手段3aは、ポインタを次
のレコードの先頭へ移動させる。
なければ、レコード抽出手段3aは、ポインタをブロッ
クバッファ30の先頭に置く。 ステップ8…当該レコードの長さを示すためのフィール
ドであるRLF(レコードレングスフィールド)がブロ
ックバッファ30内に収まっているか否かを判別する。 ステップ9…収まっていれば、RLFからレコードサイ
ズSを取得し、取得フラグをセットする。 ステップ10…レコードサイズSに基づいて、該レコー
ドの終端がブロックの終端を越えているか否かを判別す
る。 ステップ11…越えていなければ、レコード抽出手段3
aは、レコード処理手段4に抽出すべきレコードの先頭
アドレスとサイズを通知し、レコード処理手段4は、当
該レコードを抽出して処理する。 ステップ12…レコード抽出手段3aは、ポインタを次
のレコードの先頭へ移動させる。
【0023】ステップ13…ステップ8でRLFがブロ
ックバッファ30内に収まっていないとき、現在のポイ
ンタが丁度ブロック終端にあるか否かを判別する。 ステップ14…現在のポインタが丁度ブロック終端では
ないとき、取得フラグをクリアする。 ステップ15…取得フラグをクリアした後、または、ス
テップ10でレコードの終端がブロックの終端を越えて
いるとき、当該レコードは分割レコードであると判断
し、転送手段5は、ブロックバッファ30内の未処理デ
ータを、レコードバッファ40へ転送する。 ステップ16…次の転送を再開させるアドレスB(図2
参照)と転送済部分のサイズS1 (同上)とを取得す
る。 ステップ17…分割レコードの残りデータをレコードバ
ッファ40に転送する状態にあることを示すため、転送
フラグをセットする。
ックバッファ30内に収まっていないとき、現在のポイ
ンタが丁度ブロック終端にあるか否かを判別する。 ステップ14…現在のポインタが丁度ブロック終端では
ないとき、取得フラグをクリアする。 ステップ15…取得フラグをクリアした後、または、ス
テップ10でレコードの終端がブロックの終端を越えて
いるとき、当該レコードは分割レコードであると判断
し、転送手段5は、ブロックバッファ30内の未処理デ
ータを、レコードバッファ40へ転送する。 ステップ16…次の転送を再開させるアドレスB(図2
参照)と転送済部分のサイズS1 (同上)とを取得す
る。 ステップ17…分割レコードの残りデータをレコードバ
ッファ40に転送する状態にあることを示すため、転送
フラグをセットする。
【0024】ステップ18…ステップ6で上記転送フラ
グがセットされているとき、転送手段5は、取得フラグ
がセットされているか否かをみて、レコードサイズSを
取得済であるか否かを判別する。 ステップ19…レコードサイズSをまだ取得していない
とき、まず、アドレスB(図2参照)からRLFまでの
データをブロックバッファ30からレコードバッファ4
0へ転送する。 ステップ20…転送されたRLFから当該レコードのサ
イズS(図2参照)を取得し、取得フラグをセットす
る。 ステップ21…転送手段5は、得られたレコードサイズ
Sに基づいて、当該レコードの残りのデータをブロック
バッファ30からレコードバッファ40へ転送する。 ステップ22…ステップ18でレコードサイズSを取得
済であるとき、ブロックバッファ30のデータを、アド
レスBからSとS1 との差に相当する量のデータをレコ
ードバッファ40へ転送する。
グがセットされているとき、転送手段5は、取得フラグ
がセットされているか否かをみて、レコードサイズSを
取得済であるか否かを判別する。 ステップ19…レコードサイズSをまだ取得していない
とき、まず、アドレスB(図2参照)からRLFまでの
データをブロックバッファ30からレコードバッファ4
0へ転送する。 ステップ20…転送されたRLFから当該レコードのサ
イズS(図2参照)を取得し、取得フラグをセットす
る。 ステップ21…転送手段5は、得られたレコードサイズ
Sに基づいて、当該レコードの残りのデータをブロック
バッファ30からレコードバッファ40へ転送する。 ステップ22…ステップ18でレコードサイズSを取得
済であるとき、ブロックバッファ30のデータを、アド
レスBからSとS1 との差に相当する量のデータをレコ
ードバッファ40へ転送する。
【0025】ステップ23…転送が終了したので、転送
フラグをクリアする。 ステップ24…レコード抽出手段3bは、ポインタをレ
コードバッファ40の先頭へ移動させる。 ステップ25…レコード処理手段4は、レコードを抽出
して処理する。 ステップ26…レコード抽出手段3bは、次のレコード
処理に移るため、ポインタをブロックバッファ30の次
のレコードの先頭へ移動させる。 ステップ27…ステップ3で、指定されたファイルに処
理すべきブロックがなくなったら、ファイル切換手段1
は、続けて処理すべきファイルがあるか否かを判別し、
あれば、ステップ2に戻って次のファイルを指定し、な
ければ、処理を終了する。
フラグをクリアする。 ステップ24…レコード抽出手段3bは、ポインタをレ
コードバッファ40の先頭へ移動させる。 ステップ25…レコード処理手段4は、レコードを抽出
して処理する。 ステップ26…レコード抽出手段3bは、次のレコード
処理に移るため、ポインタをブロックバッファ30の次
のレコードの先頭へ移動させる。 ステップ27…ステップ3で、指定されたファイルに処
理すべきブロックがなくなったら、ファイル切換手段1
は、続けて処理すべきファイルがあるか否かを判別し、
あれば、ステップ2に戻って次のファイルを指定し、な
ければ、処理を終了する。
【0026】この第1の発明によれば、上記従来技術の
ように、全てのデータをブロックバッファからレコード
バッファに転送する必要はなく、転送するのはブロック
バッファ内に収まらないレコードだけである。その結
果、転送するために要する時間は短くなる。また、レコ
ードバッファ内でデータを移動させるようなことはしな
いので、その分処理時間を短縮できる。
ように、全てのデータをブロックバッファからレコード
バッファに転送する必要はなく、転送するのはブロック
バッファ内に収まらないレコードだけである。その結
果、転送するために要する時間は短くなる。また、レコ
ードバッファ内でデータを移動させるようなことはしな
いので、その分処理時間を短縮できる。
【0027】(第2の発明)図4は、第2の発明の概要
を示すブロック図である。符号は、図1のものに対応
し、6はレコード情報作成手段、60はレコード情報バ
ッファである。また、本発明では少なくとも2つのブロ
ックバッファが必要である。すなわち、レコードが3つ
のブロックに跨がって分割されている場合は、ブロック
バッファは3つ必要になる。ここでは、2つのブロック
バッファを使った実施例を説明する。第2の発明では、
第1の発明のレコードバッファを使って分割レコードを
組み立てる方法の代わりにレコード処理手段を2つ設
け、その内一方は、第1の発明と同様レコード単位で処
理し、他方は、レコードを構成するフィールド単位で処
理する。1つのブロックバッファに全てのデータを収め
られたレコードの抽出は、レコード抽出手段3で行い、
レコードデータの処理は、レコード単位で処理するレコ
ード処理手段4aで行う。2つのブロックバッファに跨
がっているレコード(分割レコード)の抽出はレコード
情報作成手段6で行い、レコードデータの処理は上記フ
ィールド単位で処理するレコード処理手段4bで行う。
を示すブロック図である。符号は、図1のものに対応
し、6はレコード情報作成手段、60はレコード情報バ
ッファである。また、本発明では少なくとも2つのブロ
ックバッファが必要である。すなわち、レコードが3つ
のブロックに跨がって分割されている場合は、ブロック
バッファは3つ必要になる。ここでは、2つのブロック
バッファを使った実施例を説明する。第2の発明では、
第1の発明のレコードバッファを使って分割レコードを
組み立てる方法の代わりにレコード処理手段を2つ設
け、その内一方は、第1の発明と同様レコード単位で処
理し、他方は、レコードを構成するフィールド単位で処
理する。1つのブロックバッファに全てのデータを収め
られたレコードの抽出は、レコード抽出手段3で行い、
レコードデータの処理は、レコード単位で処理するレコ
ード処理手段4aで行う。2つのブロックバッファに跨
がっているレコード(分割レコード)の抽出はレコード
情報作成手段6で行い、レコードデータの処理は上記フ
ィールド単位で処理するレコード処理手段4bで行う。
【0028】図5は、第2の発明におけるブロックバッ
ファ内の分割レコードとレコード情報バッファ内のデー
タとの関係を示す図である。図5(イ)は、現在処理中
のファイルのn番目のブロックデータを読み込んだ状態
を示している。ブロックバッファ内に収まっているレコ
ードは順次抽出され、最後部に斜線入りで示す部分にあ
るレコードは、1つのレコードのデータがブロックバッ
ファ30aの中に収まりきれず、分割レコードとなって
いる。そのような分割レコードが検出されたときは、図
5(ハ)に示すように、一方のブロックバッファ30a
に収まりきれなかったレコードの先頭アドレスAとその
サイズS1 とを、レコード情報バッファ60に格納す
る。
ファ内の分割レコードとレコード情報バッファ内のデー
タとの関係を示す図である。図5(イ)は、現在処理中
のファイルのn番目のブロックデータを読み込んだ状態
を示している。ブロックバッファ内に収まっているレコ
ードは順次抽出され、最後部に斜線入りで示す部分にあ
るレコードは、1つのレコードのデータがブロックバッ
ファ30aの中に収まりきれず、分割レコードとなって
いる。そのような分割レコードが検出されたときは、図
5(ハ)に示すように、一方のブロックバッファ30a
に収まりきれなかったレコードの先頭アドレスAとその
サイズS1 とを、レコード情報バッファ60に格納す
る。
【0029】続いて、もう一方のブロックバッファ30
bに磁気ディスク10から次のブロックデータを読み込
み、その先頭アドレスBと残りのデータのサイズS2 と
を、レコード情報バッファ60に格納する。
bに磁気ディスク10から次のブロックデータを読み込
み、その先頭アドレスBと残りのデータのサイズS2 と
を、レコード情報バッファ60に格納する。
【0030】次に、第2の発明の動作を説明する。図6
は、第2の発明の動作を説明するためのフローチャート
である。ステップ1〜ステップ14及びステップ25
は、図2のものと同様であるので、説明を省略し、ステ
ップ15からステップ24まで説明する。 ステップ15…レコード抽出手段3は、RLFが分割さ
れているときは、分割されているRLFの前半部のデー
タを取得し、一時保持する。 ステップ16…レコード情報作成手段6は、未処理デー
タの先頭アドレスAとブロックバッファ30aにある未
処理データのサイズS1 をレコード情報バッファ60の
エントリ1に格納する。 ステップ17…分割レコードの処理中であることを示す
処理フラグをセットする。
は、第2の発明の動作を説明するためのフローチャート
である。ステップ1〜ステップ14及びステップ25
は、図2のものと同様であるので、説明を省略し、ステ
ップ15からステップ24まで説明する。 ステップ15…レコード抽出手段3は、RLFが分割さ
れているときは、分割されているRLFの前半部のデー
タを取得し、一時保持する。 ステップ16…レコード情報作成手段6は、未処理デー
タの先頭アドレスAとブロックバッファ30aにある未
処理データのサイズS1 をレコード情報バッファ60の
エントリ1に格納する。 ステップ17…分割レコードの処理中であることを示す
処理フラグをセットする。
【0031】ステップ18…ステップ6で処理フラグが
セットされているとき、取得フラグがセットされている
か否かをみて、当該レコードのサイズを取得済であるか
否かを判別する。 ステップ19…まだ取得してないとき、ブロックバッフ
ァ30bに読み込んだブロックデータの中にあるRLF
の後半部のデータを取得して、ステップ15で保持され
たRLFの前半部とあわせて当該レコードのサイズを取
得し、取得フラグをセットする。 ステップ20…レコード情報作成手段6は、ブロックバ
ッファ30bの先頭アドレスBと当該レコードの残りサ
イズS2 を、レコード情報バッファ60のエントリ2に
格納する。 ステップ21…ステップ18で当該レコードのサイズS
を取得済であるとき、ブロックバッファ30bの先頭ア
ドレスBと当該レコードの残りサイズS2 を、レコード
情報バッファ60のエントリ2に格納する。 ステップ22…処理フラグをリセットする。
セットされているとき、取得フラグがセットされている
か否かをみて、当該レコードのサイズを取得済であるか
否かを判別する。 ステップ19…まだ取得してないとき、ブロックバッフ
ァ30bに読み込んだブロックデータの中にあるRLF
の後半部のデータを取得して、ステップ15で保持され
たRLFの前半部とあわせて当該レコードのサイズを取
得し、取得フラグをセットする。 ステップ20…レコード情報作成手段6は、ブロックバ
ッファ30bの先頭アドレスBと当該レコードの残りサ
イズS2 を、レコード情報バッファ60のエントリ2に
格納する。 ステップ21…ステップ18で当該レコードのサイズS
を取得済であるとき、ブロックバッファ30bの先頭ア
ドレスBと当該レコードの残りサイズS2 を、レコード
情報バッファ60のエントリ2に格納する。 ステップ22…処理フラグをリセットする。
【0032】ステップ23…レコード処理手段4bは、
分割レコードの処理ルーチン(図8)をコールする。 ステップ24…レコード情報作成手段6は、ポインタを
次のレコードの先頭アドレスへ移動させる。
分割レコードの処理ルーチン(図8)をコールする。 ステップ24…レコード情報作成手段6は、ポインタを
次のレコードの先頭アドレスへ移動させる。
【0033】次に、分割レコード処理について説明す
る。一般にレコードは、図7に示すように、当該レコー
ドのレコード長を保持するレコードレングスフィールド
(RLF)と、レコードの改行数やプリント制御コマン
ドとプリントデータを区別するレコードタイプ等を指定
する制御フィールドと、プリントデータや制御コマンド
データであるデータフィールドとを持っている。また、
本実施例では、データ量の多いデータフィールドを更に
複数のサブフィールドに分割する。
る。一般にレコードは、図7に示すように、当該レコー
ドのレコード長を保持するレコードレングスフィールド
(RLF)と、レコードの改行数やプリント制御コマン
ドとプリントデータを区別するレコードタイプ等を指定
する制御フィールドと、プリントデータや制御コマンド
データであるデータフィールドとを持っている。また、
本実施例では、データ量の多いデータフィールドを更に
複数のサブフィールドに分割する。
【0034】図8は、分割レコード処理の手順を示すフ
ローチャートである。この処理は、レコード処理手段4
bにおいて行われる。 ステップ1…最初のフィールドの先頭アドレスと終端ア
ドレスとをセットする。 ステップ2…そのフィールドが分割されているか否かを
判別する。 ステップ3…分割されていなければ、ブロックバッファ
からそのフィールドの全データを読み込む。 ステップ4…フィールドデータの処理を行う。なお、そ
のフィールドデータだけでは処理できない場合は、後続
するフィールドデータと共に、処理できる単位となるま
でストアする。 ステップ5…次のフィールドの先頭アドレスと終端アド
レスとをセットする。 ステップ6…次のフィールドがあるか否かを判別する。
ローチャートである。この処理は、レコード処理手段4
bにおいて行われる。 ステップ1…最初のフィールドの先頭アドレスと終端ア
ドレスとをセットする。 ステップ2…そのフィールドが分割されているか否かを
判別する。 ステップ3…分割されていなければ、ブロックバッファ
からそのフィールドの全データを読み込む。 ステップ4…フィールドデータの処理を行う。なお、そ
のフィールドデータだけでは処理できない場合は、後続
するフィールドデータと共に、処理できる単位となるま
でストアする。 ステップ5…次のフィールドの先頭アドレスと終端アド
レスとをセットする。 ステップ6…次のフィールドがあるか否かを判別する。
【0035】ステップ7…ステップ2でフィールドが分
割されていれば、そのフィールドから1バイトのデータ
を読み込んでストアする。 ステップ8…ポインタを1バイト進める。 ステップ9…当該フィールドの全データの読み込みが済
んだか否かを判別する。 ステップ10…現在読み込んでいるバイトが分割アドレ
ス(ブロックバッファ30aの最終アドレス)と一致し
たか否かを判別する。 ステップ11…一致したら、レコード情報バッファ60
のエントリ2に格納されているアドレスにポインタを変
更する。
割されていれば、そのフィールドから1バイトのデータ
を読み込んでストアする。 ステップ8…ポインタを1バイト進める。 ステップ9…当該フィールドの全データの読み込みが済
んだか否かを判別する。 ステップ10…現在読み込んでいるバイトが分割アドレ
ス(ブロックバッファ30aの最終アドレス)と一致し
たか否かを判別する。 ステップ11…一致したら、レコード情報バッファ60
のエントリ2に格納されているアドレスにポインタを変
更する。
【0036】この第2の発明によれば、レコードの抽出
は全てブロックバッファから行うため、ブロックバッフ
ァからレコードバッファへのデータ転送を行う必要はな
い。その結果、処理時間を短縮できる。
は全てブロックバッファから行うため、ブロックバッフ
ァからレコードバッファへのデータ転送を行う必要はな
い。その結果、処理時間を短縮できる。
【0037】(第3の発明)図9は、第3の発明の概要
を示すブロック図である。符号は、図1のものに対応
し、7は入力制御手段である。第3の発明では、ブロッ
クバッファは1つで、レコードバッファは設けない。分
割レコードが検出されたら、入力制御手段により、ブロ
ックバッファに再度そのレコードの先頭から読み込むよ
うにして、レコード処理を行う。
を示すブロック図である。符号は、図1のものに対応
し、7は入力制御手段である。第3の発明では、ブロッ
クバッファは1つで、レコードバッファは設けない。分
割レコードが検出されたら、入力制御手段により、ブロ
ックバッファに再度そのレコードの先頭から読み込むよ
うにして、レコード処理を行う。
【0038】図10は、ブロックバッファ内に複数のブ
ロック(ここでは7ブロック)が読み込まれた状態を示
す図である。ブロックバッファ30には、ファイルのm
番目のブロックからm+6番目のブロックまでを読み込
んでいるが、最後のm+6番目のブロック中の最後尾の
レコードが分割されている。そのようなブロックが検出
されたら、磁気ディスク10からブロックバッファ30
に再度m+6番目のブロックから読み込むようにする。
ロック(ここでは7ブロック)が読み込まれた状態を示
す図である。ブロックバッファ30には、ファイルのm
番目のブロックからm+6番目のブロックまでを読み込
んでいるが、最後のm+6番目のブロック中の最後尾の
レコードが分割されている。そのようなブロックが検出
されたら、磁気ディスク10からブロックバッファ30
に再度m+6番目のブロックから読み込むようにする。
【0039】なお、図10において、kは当該ファイル
のブロックサイズであり、nはブロックバッファ30内
のオフセット値である。n−6×kはブロック内のオフ
セットとなる。
のブロックサイズであり、nはブロックバッファ30内
のオフセット値である。n−6×kはブロック内のオフ
セットとなる。
【0040】図11は、第3の発明の動作を説明するた
めのフローチャートである。 ステップ1〜ステップ13及びステップ21は、図2の
ものと同様であるので、説明を省略し、ステップ14か
ら説明する。 ステップ14…レコード抽出手段3は、分割レコードの
処理中であることを示す処理フラグをセットする。 ステップ15…入力制御手段7は、未処理データを含ん
でいるブロックのブロック番号(m+6)とブロック内
のオフセット値(n−6×k)を求める。 ステップ16…ブロック番号(m+6)と、ブロックバ
ッファ30に一度に読み込めるブロック数を指定する。
めのフローチャートである。 ステップ1〜ステップ13及びステップ21は、図2の
ものと同様であるので、説明を省略し、ステップ14か
ら説明する。 ステップ14…レコード抽出手段3は、分割レコードの
処理中であることを示す処理フラグをセットする。 ステップ15…入力制御手段7は、未処理データを含ん
でいるブロックのブロック番号(m+6)とブロック内
のオフセット値(n−6×k)を求める。 ステップ16…ブロック番号(m+6)と、ブロックバ
ッファ30に一度に読み込めるブロック数を指定する。
【0041】ステップ17…入力手段2は、ステップ6
で処理フラグがセットされていないとき、ブロックバッ
ファに読み込まれた最後のブロックデータが、ファイル
における最終のブロックのものか否かを判別する。 ステップ18…最終のブロックではないとき、レコード
抽出手段3は、ブロックバッファ30の先頭からオフセ
ット値(n−6×k)だけ下がった位置Aにポインタを
置く。 ステップ19…処理フラグをリセットする。 ステップ20…ステップ17で最終のブロックであると
き、次のファイルの読み込みに備えて、ブロックバッフ
ァ30の空領域の先頭位置にデータ格納位置を指定す
る。
で処理フラグがセットされていないとき、ブロックバッ
ファに読み込まれた最後のブロックデータが、ファイル
における最終のブロックのものか否かを判別する。 ステップ18…最終のブロックではないとき、レコード
抽出手段3は、ブロックバッファ30の先頭からオフセ
ット値(n−6×k)だけ下がった位置Aにポインタを
置く。 ステップ19…処理フラグをリセットする。 ステップ20…ステップ17で最終のブロックであると
き、次のファイルの読み込みに備えて、ブロックバッフ
ァ30の空領域の先頭位置にデータ格納位置を指定す
る。
【0042】この第3の発明によれば、ブロックバッフ
ァからレコードバッファへのデータ転送を行う必要はな
いので、上記第2の発明と同様処理時間を短縮できる。
ただ、分割レコードを含むブロックは、ブロックバッフ
ァ30に再度読み込む必要があるが、ブロックバッファ
30の容量を大きくすることにより、ダブって読み込む
回数を減らすことができる。また、第2の発明に比べて
アルゴリズムが単純であるという利点がある。
ァからレコードバッファへのデータ転送を行う必要はな
いので、上記第2の発明と同様処理時間を短縮できる。
ただ、分割レコードを含むブロックは、ブロックバッフ
ァ30に再度読み込む必要があるが、ブロックバッファ
30の容量を大きくすることにより、ダブって読み込む
回数を減らすことができる。また、第2の発明に比べて
アルゴリズムが単純であるという利点がある。
【0043】さらに、上記各発明を組み合わせてレコー
ド抽出処理を実施することもできる。例えば、第3の発
明において、ファイル間に分割されたレコードの抽出に
関する動作を、第1の発明において採用したレコードバ
ッファに転送する方法に代えて実施することができる。
図12は、第3の発明に第1の発明において採用したレ
コードバッファを組合せた実施例の処理手順を示すフロ
ーチャートである。この実施例では、第3の発明の処理
手順(図11のフローチャート)におけるステップ14
の次にステップ16として、分割レコードがファイルの
最終ブロックに含まれているものか否かを判別するよう
にしている。そして、最終ブロックに含まれていると
き、第1の発明の処理手順(図3のフローチャート)に
おけるステップ15及びステップ16を、ステップ17
及びステップ18として実施した後、次のファイルの先
頭ブロックを読む処理に移る。
ド抽出処理を実施することもできる。例えば、第3の発
明において、ファイル間に分割されたレコードの抽出に
関する動作を、第1の発明において採用したレコードバ
ッファに転送する方法に代えて実施することができる。
図12は、第3の発明に第1の発明において採用したレ
コードバッファを組合せた実施例の処理手順を示すフロ
ーチャートである。この実施例では、第3の発明の処理
手順(図11のフローチャート)におけるステップ14
の次にステップ16として、分割レコードがファイルの
最終ブロックに含まれているものか否かを判別するよう
にしている。そして、最終ブロックに含まれていると
き、第1の発明の処理手順(図3のフローチャート)に
おけるステップ15及びステップ16を、ステップ17
及びステップ18として実施した後、次のファイルの先
頭ブロックを読む処理に移る。
【0044】そしてまた、第3の発明の処理手順(図1
1のフローチャート)におけるステップ20の代わり
に、第1の発明の処理手順(図3のフローチャート)に
おけるステップ18〜ステップ26の処理を、ステップ
24〜ステップ32として行うようにしている。すなわ
ち、この実施例では、ファイルの最終ブロックにおいて
分割レコードが検出されたとき、ブロック内の未処理デ
ータをレコードバッファに転送する。引き続き次のブロ
ックデータを読み込み、分割レコードの残りデータをレ
コードバッファに転送してレコードバッファ内に組み立
てられたレコードを抽出し、そのレコードを処理するよ
うにしている。この動作以外の処理手順は、第3の発明
のものと同様である。
1のフローチャート)におけるステップ20の代わり
に、第1の発明の処理手順(図3のフローチャート)に
おけるステップ18〜ステップ26の処理を、ステップ
24〜ステップ32として行うようにしている。すなわ
ち、この実施例では、ファイルの最終ブロックにおいて
分割レコードが検出されたとき、ブロック内の未処理デ
ータをレコードバッファに転送する。引き続き次のブロ
ックデータを読み込み、分割レコードの残りデータをレ
コードバッファに転送してレコードバッファ内に組み立
てられたレコードを抽出し、そのレコードを処理するよ
うにしている。この動作以外の処理手順は、第3の発明
のものと同様である。
【0045】また、第3の発明において、ファイル間に
分割されたレコードの抽出に関する動作を、第2の発明
において採用したレコード情報を使う方法に代えて実施
することができる。図13は、第3の発明に第2の発明
において採用したレコード情報作成手段を組み合わせた
実施例の処理手順を示すフローチャートである。この実
施例では、第3の発明の処理手順(図11のフローチャ
ート)におけるステップ13の次にステップ14とし
て、第2の発明の処理手順(図6のフローチャート)に
おけるステップ15を入れている。また、それに続いて
処理フラグをセットした後、ステップ16として分割レ
コードがファイルの最終ブロックに含まれているものか
否かを判別するようにしている。そして、最終ブロック
に含まれているとき、第2の発明の処理手順(図6のフ
ローチャート)におけるステップ16を、ステップ17
として実施する。
分割されたレコードの抽出に関する動作を、第2の発明
において採用したレコード情報を使う方法に代えて実施
することができる。図13は、第3の発明に第2の発明
において採用したレコード情報作成手段を組み合わせた
実施例の処理手順を示すフローチャートである。この実
施例では、第3の発明の処理手順(図11のフローチャ
ート)におけるステップ13の次にステップ14とし
て、第2の発明の処理手順(図6のフローチャート)に
おけるステップ15を入れている。また、それに続いて
処理フラグをセットした後、ステップ16として分割レ
コードがファイルの最終ブロックに含まれているものか
否かを判別するようにしている。そして、最終ブロック
に含まれているとき、第2の発明の処理手順(図6のフ
ローチャート)におけるステップ16を、ステップ17
として実施する。
【0046】そしてまた、第3の発明の処理手順(図1
1のフローチャート)におけるステップ20の代わり
に、第2の発明の処理手順(図6のフローチャート)に
おけるステップ18〜ステップ24の処理を、ステップ
23〜ステップ29として行うようにしている。すなわ
ち、この実施例では、ファイルの最終ブロックにおいて
分割レコードが検出されたとき、ブロック内の未処理デ
ータの先頭アドレスとサイズをレコード情報バッファに
登録し、引き続き次のブロックデータを読み込み、レコ
ードの残りデータの先頭アドレスとサイズをレコード情
報バッファに登録して、そのレコード情報を使って、分
割位置にあるレコード内のフィールドに対し、ポインタ
切り換え位置をモニタしながら各フィールドのデータを
処理するようにしている。この動作以外の処理手順は、
第3の発明のものと同様である。
1のフローチャート)におけるステップ20の代わり
に、第2の発明の処理手順(図6のフローチャート)に
おけるステップ18〜ステップ24の処理を、ステップ
23〜ステップ29として行うようにしている。すなわ
ち、この実施例では、ファイルの最終ブロックにおいて
分割レコードが検出されたとき、ブロック内の未処理デ
ータの先頭アドレスとサイズをレコード情報バッファに
登録し、引き続き次のブロックデータを読み込み、レコ
ードの残りデータの先頭アドレスとサイズをレコード情
報バッファに登録して、そのレコード情報を使って、分
割位置にあるレコード内のフィールドに対し、ポインタ
切り換え位置をモニタしながら各フィールドのデータを
処理するようにしている。この動作以外の処理手順は、
第3の発明のものと同様である。
【0047】さらにまた、第2の発明で採用したレコー
ド情報を使う方法を全レコードの処理に使用することも
できる。その場合、図6のフローチャートのステップ1
1のレコード処理として、当該レコードの先頭アドレス
とサイズをレコード情報バッファに格納する処理と、図
8に示す分割レコード処理を入れることによって実現で
きる。
ド情報を使う方法を全レコードの処理に使用することも
できる。その場合、図6のフローチャートのステップ1
1のレコード処理として、当該レコードの先頭アドレス
とサイズをレコード情報バッファに格納する処理と、図
8に示す分割レコード処理を入れることによって実現で
きる。
【0048】以上の実施例では、可変長レコード形式の
レコード抽出について説明した。しかし、レコード長が
固定でRLFを持たない固定長レコード形式や、他のデ
ータと区別されたデリミタ文字(列)でレコードを区切
る不定長レコード形式のレコードについても、RLFか
らレコード長を求める箇所を変更するだけで各実施例の
適用は可能である。また、固定磁気ディスクに格納され
たファイルに対して本発明を適用しているが、例えば、
オンラインで転送され、一時的にブロックバッファに格
納されたデータからレコードを抽出する場合にも適用で
きる。さらに、ブロックサイズを超えるレコードが現れ
た場合でも、第1の発明では、3回以上レコードバッフ
ァへのデータ転送を行うことにより対応でき、第2の発
明では、レコード情報バッファのエントリを3個以上設
けること及びブロックバッファを3個以上設けることに
より対応でき、第3の発明では、ブロックバッファのサ
イズを充分大きくすることにより対応できる。
レコード抽出について説明した。しかし、レコード長が
固定でRLFを持たない固定長レコード形式や、他のデ
ータと区別されたデリミタ文字(列)でレコードを区切
る不定長レコード形式のレコードについても、RLFか
らレコード長を求める箇所を変更するだけで各実施例の
適用は可能である。また、固定磁気ディスクに格納され
たファイルに対して本発明を適用しているが、例えば、
オンラインで転送され、一時的にブロックバッファに格
納されたデータからレコードを抽出する場合にも適用で
きる。さらに、ブロックサイズを超えるレコードが現れ
た場合でも、第1の発明では、3回以上レコードバッフ
ァへのデータ転送を行うことにより対応でき、第2の発
明では、レコード情報バッファのエントリを3個以上設
けること及びブロックバッファを3個以上設けることに
より対応でき、第3の発明では、ブロックバッファのサ
イズを充分大きくすることにより対応できる。
【0049】
【発明の効果】以上述べた如く、本発明のレコード抽出
装置によれば、次のような効果を奏する。第1の発明で
は、レコードの抽出を通常はブロックバッファから行
い、ブロックバッファ内に収まらないレコードだけ、レ
コードバッファに転送し、そこでレコードを組み立てて
からレコードの抽出を行う。そのため、全てのデータを
ブロックバッファからレコードバッファに転送する必要
はなく、転送するのはブロックバッファ内に収まらない
レコードだけである。その結果、従来技術に比べて転送
するために要する時間は短くなる。また、レコードバッ
ファ内でデータを移動させるようなことはしないので、
その分処理時間を短縮できる。
装置によれば、次のような効果を奏する。第1の発明で
は、レコードの抽出を通常はブロックバッファから行
い、ブロックバッファ内に収まらないレコードだけ、レ
コードバッファに転送し、そこでレコードを組み立てて
からレコードの抽出を行う。そのため、全てのデータを
ブロックバッファからレコードバッファに転送する必要
はなく、転送するのはブロックバッファ内に収まらない
レコードだけである。その結果、従来技術に比べて転送
するために要する時間は短くなる。また、レコードバッ
ファ内でデータを移動させるようなことはしないので、
その分処理時間を短縮できる。
【0050】第2及び第3の発明では、レコードの抽出
は全てブロックバッファから行う。そのため、ブロック
バッファからレコードバッファへのデータ転送を行う必
要もない。その結果、処理時間を短縮できる。
は全てブロックバッファから行う。そのため、ブロック
バッファからレコードバッファへのデータ転送を行う必
要もない。その結果、処理時間を短縮できる。
【図1】 第1の発明の概要を示すブロック図
【図2】 第1の発明におけるレコードバッファ内での
処理を説明するための図
処理を説明するための図
【図3】 第1の発明の動作を説明するためのフローチ
ャート
ャート
【図4】 第2の発明の概要を示すブロック図
【図5】 第2の発明におけるブロックバッファ内の分
割レコードとレコード情報バッファ内のデータとの関係
を示す図
割レコードとレコード情報バッファ内のデータとの関係
を示す図
【図6】 第2の発明の動作を説明するためのフローチ
ャート
ャート
【図7】 レコード内の各フィールドと分割フラグとの
関係を示す図
関係を示す図
【図8】 分割レコード処理の手順を示すフローチャー
ト
ト
【図9】 第3の発明の概要を示すブロック図
【図10】 ブロックバッファ内に複数のブロックが読
み込まれた状態を示す図
み込まれた状態を示す図
【図11】 第3の発明の動作を説明するためのフロー
チャート
チャート
【図12】 第3の発明に第1の発明において採用した
レコードバッファを組合せた実施例の処理手順を示すフ
ローチャート
レコードバッファを組合せた実施例の処理手順を示すフ
ローチャート
【図13】 第3の発明に第2の発明において採用した
レコード情報作成手段を組み合わせた実施例の処理手順
を示すフローチャート
レコード情報作成手段を組み合わせた実施例の処理手順
を示すフローチャート
【図14】 従来のレコード抽出装置の概要を示すブロ
ック図
ック図
【図15】 従来のレコード抽出装置におけるレコード
バッファ内での処理を説明するための図
バッファ内での処理を説明するための図
【図16】 磁気ディスク中のファイル構成の概要を示
す図
す図
1…ファイル切換手段、2…入力手段、3,3a,3b
…レコード抽出手段、4,4a,4b…レコード処理手
段、5…転送手段、6…レコード情報作成手段、7…入
力制御手段、8…データ移動手段、10…磁気ディス
ク、20…プリンタ、30,30a,30b…ブロック
バッファ、40…レコードバッファ
…レコード抽出手段、4,4a,4b…レコード処理手
段、5…転送手段、6…レコード情報作成手段、7…入
力制御手段、8…データ移動手段、10…磁気ディス
ク、20…プリンタ、30,30a,30b…ブロック
バッファ、40…レコードバッファ
Claims (3)
- 【請求項1】 レコードを単位として構成されるデータ
をブロックを単位として記憶する記憶装置からレコード
を抽出するレコード抽出装置において、上記記憶装置か
らデータをブロック単位でブロックバッファに読み込ま
せる入力手段と、上記ブロックバッファからレコードを
順次抽出して抽出情報を出力すると共に、ブロックバッ
ファ内に収まらないレコードの検出信号を出力する第1
のレコード抽出手段と、上記第1のレコード抽出手段か
らの上記検出信号を受けてブロックバッファ内の未処理
データをレコードバッファに転送した後、上記入力手段
に次のブロックデータを要求し、返されたブロックデー
タの先頭部分にある、上記ブロックバッファに収まらな
いレコードの残りデータをレコードバッファに転送する
と共に、ブロックバッファ内からのレコード抽出の再開
を上記第1のレコード抽出手段に指示する転送手段と、
上記転送手段が転送したレコードバッファ内のレコード
を抽出し、その抽出情報を出力する第2のレコード抽出
手段と、上記第1のレコード抽出手段と第2のレコード
抽出手段の抽出情報が指すレコードを処理するレコード
処理手段とを具えることを特徴とするレコード抽出装
置。 - 【請求項2】 レコードを単位として構成されるデータ
をブロックを単位として記憶する記憶装置からレコード
を抽出するレコード抽出装置において、上記記憶装置か
らデータをブロック単位で2つ以上のブロックバッファ
に順番に繰り返して読み込ませる入力手段と、上記ブロ
ックバッファからレコードを順次抽出して抽出情報を出
力すると共に、ブロックバッファ内に収まらないレコー
ドの検出信号を出力するレコード抽出手段と、上記レコ
ード抽出手段からの抽出情報が指すレコードを処理する
第1のレコード処理手段と、上記レコード抽出手段から
の上記検出信号を受けてブロックバッファ内の未処理デ
ータの先頭位置と長さを第1のレコード情報としてレコ
ード情報バッファに登録した後、上記入力手段に対して
次のブロックデータを別のブロックバッファに読み込ま
せることを要求し、返されたブロックデータの中の、上
記ブロックバッファ内に収まらないレコードの残りデー
タの先頭位置と長さを第2のレコード情報としてレコー
ド情報バッファに登録し、そのような処理を当該レコー
ドの最後部のデータがブロックバッファに読み込まれる
まで繰り返し、登録した各レコード情報を出力すると共
に、ブロックバッファ内からのレコード抽出の再開を上
記レコード抽出手段に指示するレコード情報作成手段
と、2つ以上のブロックバッファ内に分かれて読み込ま
れたレコードの処理はフィールド単位で行い、かつ、レ
コードの分割位置にあるフィールドの処理はバイト単位
で行い、境界のバイト位置における処理対象バイトを指
すポインタの切り換えを上記各レコード情報に基づいて
行う第2のレコード処理手段とを具えることを特徴とす
るレコード抽出装置。 - 【請求項3】 レコードを単位として構成されるデータ
をブロックを単位として記憶する記憶装置からレコード
を抽出するレコード抽出装置において、上記記憶装置か
らデータを複数ブロック単位でブロックバッファに読み
込ませる入力手段と、上記ブロックバッファからレコー
ドを順次抽出して抽出情報を出力すると共に、ブロック
バッファ内に収まらないレコードの検出信号を出力する
レコード抽出手段と、上記レコード抽出手段の抽出情報
が指すレコードを処理するレコード処理手段と、上記レ
コード抽出手段からの上記検出信号を受けてブロックバ
ッファ内の未処理データが記憶されているファイル内の
ブロック番号とブロック内のオフセットとを算出し、上
記ブロック番号のブロックから上記ブロックバッファに
再びデータを読み込むことを上記入力手段に要求し、返
されたデータを上記オフセット位置から処理することを
上記レコード抽出手段に指示する入力制御手段とを具え
ることを特徴とするレコード抽出装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4355642A JPH06187100A (ja) | 1992-12-19 | 1992-12-19 | レコード抽出装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4355642A JPH06187100A (ja) | 1992-12-19 | 1992-12-19 | レコード抽出装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06187100A true JPH06187100A (ja) | 1994-07-08 |
Family
ID=18445022
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4355642A Pending JPH06187100A (ja) | 1992-12-19 | 1992-12-19 | レコード抽出装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH06187100A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2020537261A (ja) * | 2017-10-16 | 2020-12-17 | アルテリックス インコーポレイテッド | 連続するデータブロックの非同期処理 |
-
1992
- 1992-12-19 JP JP4355642A patent/JPH06187100A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2020537261A (ja) * | 2017-10-16 | 2020-12-17 | アルテリックス インコーポレイテッド | 連続するデータブロックの非同期処理 |
| US11494409B2 (en) | 2017-10-16 | 2022-11-08 | Alteryx, Inc. | Asynchronously processing sequential data blocks |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| USRE39213E1 (en) | Apparatus and method for increasing a digital camera image capture rate by delaying image processing | |
| JPS63109653A (ja) | 情報登録検索装置 | |
| WO1998018258A1 (en) | System and method for correlating processing data and image data within a digital camera device | |
| JPH0876933A (ja) | ハードディスクのフォーマット動作制御装置 | |
| US20030055840A1 (en) | Image file apparatus and method | |
| JPH05181905A (ja) | 検索情報表示装置 | |
| JPH06187100A (ja) | レコード抽出装置 | |
| JP4251725B2 (ja) | ファイル管理方法 | |
| JPH0644013A (ja) | 印刷データの圧縮方法 | |
| JP2697824B2 (ja) | 文書画像処理装置における制御方法 | |
| JP2006197561A (ja) | データ記録方法及び装置 | |
| JPH04292091A (ja) | 電子交換機のデータ管理方式 | |
| JPS59132479A (ja) | デ−タ処理回路 | |
| JP2001275064A (ja) | 記録方法及び記録装置 | |
| JPH0744426A (ja) | ファイルシステムのファイル管理方法 | |
| JP3771969B2 (ja) | 情報読み出し装置 | |
| JPH06325147A (ja) | 画像表示装置 | |
| JPH0664599B2 (ja) | 文書ファイル検索装置 | |
| JPS60254963A (ja) | 画像フアイル装置 | |
| JP2009171538A (ja) | 画像再生装置、デジタルテレビジョン及び画像再生方法 | |
| JPH0830393A (ja) | 画像データ再生装置および記録装置ならびに画像データ再生方法および画像データ記録方法 | |
| JPH05183606A (ja) | Posシステム | |
| JPH05250243A (ja) | 拡張記憶装置のデータ処理方式 | |
| JPH04192052A (ja) | ファイル同報転送装置 | |
| JPH07107432A (ja) | 静止画再生装置 |