JP2746103B2 - データレコード圧縮方法およびデータレコード伸張方法 - Google Patents
データレコード圧縮方法およびデータレコード伸張方法Info
- Publication number
- JP2746103B2 JP2746103B2 JP6055124A JP5512494A JP2746103B2 JP 2746103 B2 JP2746103 B2 JP 2746103B2 JP 6055124 A JP6055124 A JP 6055124A JP 5512494 A JP5512494 A JP 5512494A JP 2746103 B2 JP2746103 B2 JP 2746103B2
- Authority
- JP
- Japan
- Prior art keywords
- byte
- character
- characters
- record
- data record
- 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.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【0001】
【産業上の利用分野】本発明はデータレコード圧縮方法
およびデータレコード伸張方法に関する。
およびデータレコード伸張方法に関する。
【0002】
【従来の技術】数字,アルファベット,漢字等の文字か
ら構成されるデータを圧縮する従来の方法として、特開
平2−64770号公報に見られるように、所定の文字
列に対してコードを割り振った辞書を使ってデータ中に
現れる連続する文字列をコードに置換して圧縮し、且
つ、同じ1文字が連続する箇所を制御文字によって更に
圧縮する方法が知られている。
ら構成されるデータを圧縮する従来の方法として、特開
平2−64770号公報に見られるように、所定の文字
列に対してコードを割り振った辞書を使ってデータ中に
現れる連続する文字列をコードに置換して圧縮し、且
つ、同じ1文字が連続する箇所を制御文字によって更に
圧縮する方法が知られている。
【0003】
【発明が解決しようとする課題】上述した従来の方法で
は、事前に所定の文字列を辞書に登録しておく必要があ
るために事前準備が大変であり、適切な文字列が登録さ
れていないと圧縮効果が期待できないという問題点と、
圧縮時には辞書を逐次検索する処理が必要となるために
圧縮時間が長くなるという問題点がある。
は、事前に所定の文字列を辞書に登録しておく必要があ
るために事前準備が大変であり、適切な文字列が登録さ
れていないと圧縮効果が期待できないという問題点と、
圧縮時には辞書を逐次検索する処理が必要となるために
圧縮時間が長くなるという問題点がある。
【0004】このため、一般ビジネスシステムで使用さ
れるデータファイル中のデータレコードの如く、連続す
るデータレコード間に同一値のフィールド(例えば伝票
データレコードにあっては伝票日付,得意先コード等)
が存在する場合、事前にそれらの値を辞書に登録する作
業なくして圧縮はできず、また、複数のデータレコード
間に存在する同一文字列が同じ1文字の連続したもので
あれば前記制御文字によって圧縮することはできるが、
同じ1文字が連続するものでなければ圧縮することはで
きなかった。
れるデータファイル中のデータレコードの如く、連続す
るデータレコード間に同一値のフィールド(例えば伝票
データレコードにあっては伝票日付,得意先コード等)
が存在する場合、事前にそれらの値を辞書に登録する作
業なくして圧縮はできず、また、複数のデータレコード
間に存在する同一文字列が同じ1文字の連続したもので
あれば前記制御文字によって圧縮することはできるが、
同じ1文字が連続するものでなければ圧縮することはで
きなかった。
【0005】本発明はこのような従来の問題点を解決し
たもので、その目的は、データファイル中の連続するデ
ータレコード間に同一値のフィールドが存在する場合に
辞書の作成等の特別な作業無しに効率良くデータレコー
ドを圧縮することができるデータレコード圧縮方法を提
供することにある。
たもので、その目的は、データファイル中の連続するデ
ータレコード間に同一値のフィールドが存在する場合に
辞書の作成等の特別な作業無しに効率良くデータレコー
ドを圧縮することができるデータレコード圧縮方法を提
供することにある。
【0006】
【課題を解決するための手段】本発明は上記の目的を達
成するために、先ず垂直圧縮段階により、データファイ
ルからデータレコードを1レコードずつ順に入力して、
その先頭の文字から最終の文字まで、直前に入力したデ
ータレコードの同一箇所の文字と比較し、予め定められ
た文字数にわたって連続して直前のデータレコードと同
一の文字が現れた部分を、垂直圧縮したことを示す1バ
イトの第1の制御文字とその連続個数を示す数値とに置
換した圧縮レコードを生成するか、または、その先頭の
バイトから最終のバイトまで、直前に入力したデータレ
コードの同一箇所のバイトと比較し、予め定められたバ
イト数にわたって連続して直前のデータレコードと同一
のバイトが現れた部分を、1バイトの第1の垂直圧縮し
たことを示す制御文字とその連続個数を示す数値とに置
換した圧縮レコードを生成する。 次に、水平圧縮段階に
より、前記生成された圧縮レコードに対して更に、その
圧縮レコード中の予め定められた文字数またはバイト数
にわたって同一の1バイト系文字及び2バイト系文字ま
たは同一の1バイト及び2バイトが連続している部分
を、連続した1バイト系文字または1バイトについて
は、連続した1バイト系文字または1バイトを水平圧縮
したことを示す1バイトの第2の制御文字とその連続し
た1バイト系文字または1バイトとその連続個数を示す
1バイトの数値とに置換し、連続した2バイト系文字ま
たは2バイトについては、連続した2バイト系文字また
は2バイトを水平圧縮したことを示す1バイトの第3の
制御文字とその連続した2バイト系文字または2バイト
とその連続個数を示す1バイトの数値とに置換し、その
圧縮レコード中の予め定められた文字数またはバイト数
にわたって同一の1バイト系文字及び2バイト系文字ま
たは同一の1バイト及び2バイトが連続している部分以
外は何らの制御文字を付加せずにそのまま出力する。
成するために、先ず垂直圧縮段階により、データファイ
ルからデータレコードを1レコードずつ順に入力して、
その先頭の文字から最終の文字まで、直前に入力したデ
ータレコードの同一箇所の文字と比較し、予め定められ
た文字数にわたって連続して直前のデータレコードと同
一の文字が現れた部分を、垂直圧縮したことを示す1バ
イトの第1の制御文字とその連続個数を示す数値とに置
換した圧縮レコードを生成するか、または、その先頭の
バイトから最終のバイトまで、直前に入力したデータレ
コードの同一箇所のバイトと比較し、予め定められたバ
イト数にわたって連続して直前のデータレコードと同一
のバイトが現れた部分を、1バイトの第1の垂直圧縮し
たことを示す制御文字とその連続個数を示す数値とに置
換した圧縮レコードを生成する。 次に、水平圧縮段階に
より、前記生成された圧縮レコードに対して更に、その
圧縮レコード中の予め定められた文字数またはバイト数
にわたって同一の1バイト系文字及び2バイト系文字ま
たは同一の1バイト及び2バイトが連続している部分
を、連続した1バイト系文字または1バイトについて
は、連続した1バイト系文字または1バイトを水平圧縮
したことを示す1バイトの第2の制御文字とその連続し
た1バイト系文字または1バイトとその連続個数を示す
1バイトの数値とに置換し、連続した2バイト系文字ま
たは2バイトについては、連続した2バイト系文字また
は2バイトを水平圧縮したことを示す1バイトの第3の
制御文字とその連続した2バイト系文字または2バイト
とその連続個数を示す1バイトの数値とに置換し、その
圧縮レコード中の予め定められた文字数またはバイト数
にわたって同一の1バイト系文字及び2バイト系文字ま
たは同一の1バイト及び2バイトが連続している部分以
外は何らの制御文字を付加せずにそのまま出力する。
【0007】
【0008】
【0009】
【0010】また、上記の垂直圧縮の方法で圧縮された
データレコードを元のデータレコードに復元し得るよう
にすることを目的として、先ず垂直伸張段階により、デ
ータファイルからデータレコードを1レコードずつ順に
入力して、その先頭の文字またはバイトから最後の文字
またはバイトまで、垂直圧縮したことを示す第1の制御
文字とその連続個数を示す数値とからなる部分以外の文
字またはバイトはそのまま出力し、垂直圧縮したことを
示す第1の制御文字とその連続個数を示す数値とからな
る部分は、伸張処理済の直前のデータレコードの先頭よ
り、前記第1の制御文字が現れるまでに存在した伸張処
理後のデータレコードの文字数+1番目の文字またはバ
イト数+1番目のバイトから、前記数値の示す連続個数
分の文字までの文字列またはバイトまでのバイト列に置
換した伸張レコードを生成する。 次に水平伸張段階によ
り、前記伸張レコードに対して更に、その伸張レコード
中の1バイト系文字または1バイトを水平圧縮したこと
を示す第2の制御文字とその連続した1バイト系文字ま
たは1バイトとその連続個数を示す数値とからなる部分
を、該連続する1バイト系文字または1バイトを該数値
の示す連続個数だけ並べた文字列またはバイト列に置換
し、その伸張レコード中の2バイト系文字または2バイ
トを水平圧縮したことを示す第3の制御文字とその連続
した2バイト系文字または2バイトとその連続個数を示
す数値とからなる部分を、該連続する2バイト系文字ま
たは2バイトを該数値の示す連続個数だけ並べた文字列
またはバイト列に置換する。
データレコードを元のデータレコードに復元し得るよう
にすることを目的として、先ず垂直伸張段階により、デ
ータファイルからデータレコードを1レコードずつ順に
入力して、その先頭の文字またはバイトから最後の文字
またはバイトまで、垂直圧縮したことを示す第1の制御
文字とその連続個数を示す数値とからなる部分以外の文
字またはバイトはそのまま出力し、垂直圧縮したことを
示す第1の制御文字とその連続個数を示す数値とからな
る部分は、伸張処理済の直前のデータレコードの先頭よ
り、前記第1の制御文字が現れるまでに存在した伸張処
理後のデータレコードの文字数+1番目の文字またはバ
イト数+1番目のバイトから、前記数値の示す連続個数
分の文字までの文字列またはバイトまでのバイト列に置
換した伸張レコードを生成する。 次に水平伸張段階によ
り、前記伸張レコードに対して更に、その伸張レコード
中の1バイト系文字または1バイトを水平圧縮したこと
を示す第2の制御文字とその連続した1バイト系文字ま
たは1バイトとその連続個数を示す数値とからなる部分
を、該連続する1バイト系文字または1バイトを該数値
の示す連続個数だけ並べた文字列またはバイト列に置換
し、その伸張レコード中の2バイト系文字または2バイ
トを水平圧縮したことを示す第3の制御文字とその連続
した2バイト系文字または2バイトとその連続個数を示
す数値とからなる部分を、該連続する2バイト系文字ま
たは2バイトを該数値の示す連続個数だけ並べた文字列
またはバイト列に置換する。
【0011】
【0012】
【作用】例えば、直前に入力したデータレコードが「A
BCDEFFFFGHI」という内容であり、今回入力
したデータレコードが「ABCDEJJJJKLM」と
いう内容であったとすると、今回入力したデータレコー
ド中の「ABCDE」の箇所が直前データレコードと同
一なので、垂直圧縮したことを示す例えば1バイトの制
御文字(3)と連続個数を示す例えば1バイトの数値
「5」とに置換した「制御文字(3)5JJJJKL
M」というデータレコードに圧縮され、3バイト分の圧
縮が行われる。
BCDEFFFFGHI」という内容であり、今回入力
したデータレコードが「ABCDEJJJJKLM」と
いう内容であったとすると、今回入力したデータレコー
ド中の「ABCDE」の箇所が直前データレコードと同
一なので、垂直圧縮したことを示す例えば1バイトの制
御文字(3)と連続個数を示す例えば1バイトの数値
「5」とに置換した「制御文字(3)5JJJJKL
M」というデータレコードに圧縮され、3バイト分の圧
縮が行われる。
【0013】また、水平圧縮も行う場合、圧縮後のレコ
ード中の「JJJJ」の部分が、連続した1バイト系の
文字を圧縮したことを示す例えば1バイトの制御文字
(1)と文字「J」と連続個数を示す例えば1バイトの
数値「4」とに置換した「制御文字(3)5制御文字
(1)J4KLM」というデータレコードに更に圧縮さ
れ、合計4バイト分の圧縮が行われる。
ード中の「JJJJ」の部分が、連続した1バイト系の
文字を圧縮したことを示す例えば1バイトの制御文字
(1)と文字「J」と連続個数を示す例えば1バイトの
数値「4」とに置換した「制御文字(3)5制御文字
(1)J4KLM」というデータレコードに更に圧縮さ
れ、合計4バイト分の圧縮が行われる。
【0014】データレコードの復元時には、直前に復元
(伸張)したデータレコードが「ABCDEFFFFG
HI」という内容であり、今回入力したデータレコード
が「制御文字(3)5制御文字(1)J4KLM」とい
う内容であったとすると、先ず、「制御文字(1)J
4」の箇所を「JJJJ」に置換して水平圧縮箇所を伸
張して「制御文字(3)5JJJJKLM」なるデータ
レコードを復元し、次に、「制御文字(3)5」の箇所
を、伸張処理済の直前のデータレコード「ABCDEF
FFFGHI」における前記制御文字(3)と同一箇所
の文字Aから数値5の示す連続個数分先の文字Eまでの
文字列に置換して「ABCDEJJJJKLM」という
データレコードを復元する。
(伸張)したデータレコードが「ABCDEFFFFG
HI」という内容であり、今回入力したデータレコード
が「制御文字(3)5制御文字(1)J4KLM」とい
う内容であったとすると、先ず、「制御文字(1)J
4」の箇所を「JJJJ」に置換して水平圧縮箇所を伸
張して「制御文字(3)5JJJJKLM」なるデータ
レコードを復元し、次に、「制御文字(3)5」の箇所
を、伸張処理済の直前のデータレコード「ABCDEF
FFFGHI」における前記制御文字(3)と同一箇所
の文字Aから数値5の示す連続個数分先の文字Eまでの
文字列に置換して「ABCDEJJJJKLM」という
データレコードを復元する。
【0015】以上は1バイト系文字のみを含むデータレ
コードについての作用であるが、2バイト系文字のみを
含むデータレコード,1バイト系文字および2バイト系
文字が混在したデータレコードに対しても同様に作用す
る。
コードについての作用であるが、2バイト系文字のみを
含むデータレコード,1バイト系文字および2バイト系
文字が混在したデータレコードに対しても同様に作用す
る。
【0016】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
詳細に説明する。
【0017】図1を参照すると、本発明のデータレコー
ド圧縮方法を実施するデータ圧縮装置1の一例は、デー
タファイル2中のデータレコードD1〜Dnを入力して
圧縮処理を施し、圧縮後のデータレコードE1〜Enを
データファイル3に出力するもので、圧縮前レコード入
力手段11と、直前レコード格納域12と、垂直圧縮手
段13と、垂直圧縮後レコード格納域14と、水平圧縮
手段15と、圧縮後レコード出力手段16とで構成され
ている。なお、5はデータファイル2中のデータレコー
ドD1〜Dnの構成フィールド数,各フィールド内の文
字数および1バイト系文字か2バイト系文字かを示す文
字タイプ等を記述したレコードフォーマット情報であ
る。
ド圧縮方法を実施するデータ圧縮装置1の一例は、デー
タファイル2中のデータレコードD1〜Dnを入力して
圧縮処理を施し、圧縮後のデータレコードE1〜Enを
データファイル3に出力するもので、圧縮前レコード入
力手段11と、直前レコード格納域12と、垂直圧縮手
段13と、垂直圧縮後レコード格納域14と、水平圧縮
手段15と、圧縮後レコード出力手段16とで構成され
ている。なお、5はデータファイル2中のデータレコー
ドD1〜Dnの構成フィールド数,各フィールド内の文
字数および1バイト系文字か2バイト系文字かを示す文
字タイプ等を記述したレコードフォーマット情報であ
る。
【0018】ここで、データファイル2中のデータレコ
ードD1〜Dnは、所定のフィールドを分類キーとして
分類(ソート)されている方が良い。
ードD1〜Dnは、所定のフィールドを分類キーとして
分類(ソート)されている方が良い。
【0019】このように構成された本実施例のデータ圧
縮装置1は概略次のように動作する。先ず、圧縮前レコ
ード入力手段11はデータファイル2からデータレコー
ドD1〜Dnをその並び順に1レコードずつ順に入力し
て垂直圧縮手段13に出力する。
縮装置1は概略次のように動作する。先ず、圧縮前レコ
ード入力手段11はデータファイル2からデータレコー
ドD1〜Dnをその並び順に1レコードずつ順に入力し
て垂直圧縮手段13に出力する。
【0020】垂直圧縮手段13は、今回入力されたデー
タレコードにおける先頭の文字から最終の文字まで、直
前レコード格納域12に保持しておいた直前に入力した
データレコードの同一箇所の文字と比較して、予め定め
られた文字数(本実施例では、データレコードに1バイ
ト系文字,2バイト系文字が混在しているため、2とす
るが、3以上にしても良い)にわたって連続して直前の
データレコードと同一の文字が現れた部分を、垂直圧縮
したことを示す制御文字(3)とその連続個数を示す数
値とに置換した圧縮レコードを生成して垂直圧縮後レコ
ード格納域14に出力し、次のデータレコードの圧縮処
理に備えて、直前レコード格納域12の内容を今回処理
したデータレコードの圧縮前の内容で書き替える。
タレコードにおける先頭の文字から最終の文字まで、直
前レコード格納域12に保持しておいた直前に入力した
データレコードの同一箇所の文字と比較して、予め定め
られた文字数(本実施例では、データレコードに1バイ
ト系文字,2バイト系文字が混在しているため、2とす
るが、3以上にしても良い)にわたって連続して直前の
データレコードと同一の文字が現れた部分を、垂直圧縮
したことを示す制御文字(3)とその連続個数を示す数
値とに置換した圧縮レコードを生成して垂直圧縮後レコ
ード格納域14に出力し、次のデータレコードの圧縮処
理に備えて、直前レコード格納域12の内容を今回処理
したデータレコードの圧縮前の内容で書き替える。
【0021】次に、水平圧縮手段15は、垂直圧縮後レ
コード格納域14に格納された圧縮レコードに対して、
その圧縮レコード中の予め定められた文字数(本実施例
ではデータレコードに1バイト系文字,2バイト系文字
が混在しているため、3とするが、4以上にしても良
い)にわたって同一文字が連続している部分を、水平圧
縮したことを示す制御文字(1バイト系文字の場合には
制御文字(1),2バイト系文字の場合には制御文字
(2))とその連続した文字そのものとその連続個数を
示す数値とに置換した圧縮レコードを生成する。そし
て、圧縮後レコード出力手段16がこの生成された圧縮
レコードをデータファイル3に出力する。これでデータ
ファイル2中の一つのデータレコードの圧縮処理が終了
したことになり、制御が圧縮前レコード入力手段11に
戻されて、残りのデータレコードに対して上述と同様な
処理が繰り返される。
コード格納域14に格納された圧縮レコードに対して、
その圧縮レコード中の予め定められた文字数(本実施例
ではデータレコードに1バイト系文字,2バイト系文字
が混在しているため、3とするが、4以上にしても良
い)にわたって同一文字が連続している部分を、水平圧
縮したことを示す制御文字(1バイト系文字の場合には
制御文字(1),2バイト系文字の場合には制御文字
(2))とその連続した文字そのものとその連続個数を
示す数値とに置換した圧縮レコードを生成する。そし
て、圧縮後レコード出力手段16がこの生成された圧縮
レコードをデータファイル3に出力する。これでデータ
ファイル2中の一つのデータレコードの圧縮処理が終了
したことになり、制御が圧縮前レコード入力手段11に
戻されて、残りのデータレコードに対して上述と同様な
処理が繰り返される。
【0022】図2(a)は、1バイト系文字が3文字以
上連続する箇所と置換される内容の例を示し、1バイト
系文字を水平圧縮したことを示す1バイトのユニークな
制御文字(1)と、連続して現れた同一文字そのもの
と、連続数を示す1バイトの数値(繰り返し数)との合
計3バイトで構成されている。なお、数値を1バイトで
表現している為、数値の最大値は255である。従っ
て、256個以上同一文字が連続する箇所は複数に分割
されて圧縮される。
上連続する箇所と置換される内容の例を示し、1バイト
系文字を水平圧縮したことを示す1バイトのユニークな
制御文字(1)と、連続して現れた同一文字そのもの
と、連続数を示す1バイトの数値(繰り返し数)との合
計3バイトで構成されている。なお、数値を1バイトで
表現している為、数値の最大値は255である。従っ
て、256個以上同一文字が連続する箇所は複数に分割
されて圧縮される。
【0023】図2(b)は、2バイト系文字が3文字以
上連続する箇所と置換される内容の例を示し、2バイト
系文字を水平圧縮したことを示す1バイトのユニークな
制御文字(2)と、連続して現れた同一文字そのもの
と、連続数を示す1バイトの数値(繰り返し数)との合
計4バイトで構成されている。なお、数値を1バイトで
表現している為、256個以上同一文字が連続する箇所
は複数に分割されて圧縮される。
上連続する箇所と置換される内容の例を示し、2バイト
系文字を水平圧縮したことを示す1バイトのユニークな
制御文字(2)と、連続して現れた同一文字そのもの
と、連続数を示す1バイトの数値(繰り返し数)との合
計4バイトで構成されている。なお、数値を1バイトで
表現している為、256個以上同一文字が連続する箇所
は複数に分割されて圧縮される。
【0024】図2(c)は、2文字以上の文字数にわた
って連続して直前のデータレコードと同一の文字が現れ
た部分と置換される内容の例を示し、垂直圧縮したこと
を示す1バイトのユニークな制御文字(3)とその連続
個数(重複文字数)を示す1バイトの数値との合計2バ
イトで構成されている。なお、数値を1バイトで表現し
ているため、256個以上同一文字列が現れた箇所は複
数に分割されて圧縮される。
って連続して直前のデータレコードと同一の文字が現れ
た部分と置換される内容の例を示し、垂直圧縮したこと
を示す1バイトのユニークな制御文字(3)とその連続
個数(重複文字数)を示す1バイトの数値との合計2バ
イトで構成されている。なお、数値を1バイトで表現し
ているため、256個以上同一文字列が現れた箇所は複
数に分割されて圧縮される。
【0025】図3(a)はデータファイル2の先頭のデ
ータレコードD1とその次のデータレコードD2の内容
の一例を示し、それぞれ日付,得意先コード,品名コー
ド,数量,品名名称のフィールドで構成されており、品
名名称のフィールドには2バイト系文字が設定され、そ
の他のフィールドには1バイト系文字が設定されてい
る。
ータレコードD1とその次のデータレコードD2の内容
の一例を示し、それぞれ日付,得意先コード,品名コー
ド,数量,品名名称のフィールドで構成されており、品
名名称のフィールドには2バイト系文字が設定され、そ
の他のフィールドには1バイト系文字が設定されてい
る。
【0026】図3(b)はデータレコードD1を圧縮し
たデータレコードE1およびデータレコードD2を圧縮
したデータレコードE2の構成を示す。データレコード
D1はデータファイル1の先頭レコードであるために垂
直圧縮は実施されず、符号a,bに示す箇所が、符号
a’,b’に示すように水平圧縮されている。また、デ
ータレコードD2は符号cの箇所が直前のデータレコー
ドD1と一致するため、c’に示すように垂直圧縮され
ている。
たデータレコードE1およびデータレコードD2を圧縮
したデータレコードE2の構成を示す。データレコード
D1はデータファイル1の先頭レコードであるために垂
直圧縮は実施されず、符号a,bに示す箇所が、符号
a’,b’に示すように水平圧縮されている。また、デ
ータレコードD2は符号cの箇所が直前のデータレコー
ドD1と一致するため、c’に示すように垂直圧縮され
ている。
【0027】次に図1の垂直圧縮手段13の処理例につ
いて図4のフローチャートを参照して説明する。
いて図4のフローチャートを参照して説明する。
【0028】垂直圧縮手段13は、圧縮前レコード入力
手段11から1つのデータレコードを入力する毎に図4
に示す処理を実行する。先ず、今回入力したデータレコ
ードの先頭から何番目の文字に注目するかを示す変数i
を1に、一致文字数をカウントするためのカウンタCN
Tを0にそれぞれ初期化する(S1)。
手段11から1つのデータレコードを入力する毎に図4
に示す処理を実行する。先ず、今回入力したデータレコ
ードの先頭から何番目の文字に注目するかを示す変数i
を1に、一致文字数をカウントするためのカウンタCN
Tを0にそれぞれ初期化する(S1)。
【0029】次に、図1のレコードフォーマット情報5
を参照して、今回入力したデータレコードの先頭から変
数iが示すi番目の文字Niを読み取り(S2)、直前
レコード格納域12に格納してある直前データレコード
の同一箇所の文字Oiと比較する(S3)。
を参照して、今回入力したデータレコードの先頭から変
数iが示すi番目の文字Niを読み取り(S2)、直前
レコード格納域12に格納してある直前データレコード
の同一箇所の文字Oiと比較する(S3)。
【0030】一致した場合(S3でYES)、カウンタ
CNTが0か否かを判別し(S4)、0であれば、カウ
ンタCNTを+1して1とし(S5)、且つ今回読み取
った文字NiをNi−1として保存し(S6)、ステッ
プS8へ進む。また、カウンタCNTが0でないと判別
したときは、一致文字数を+1するためにカウンタCN
Tを+1し(S7)、ステップS8へ進む。
CNTが0か否かを判別し(S4)、0であれば、カウ
ンタCNTを+1して1とし(S5)、且つ今回読み取
った文字NiをNi−1として保存し(S6)、ステッ
プS8へ進む。また、カウンタCNTが0でないと判別
したときは、一致文字数を+1するためにカウンタCN
Tを+1し(S7)、ステップS8へ進む。
【0031】そして、ステップS8においては変数iを
+1して、iがデータレコードの最大文字数Lを超えた
か否かを判別し(S9)、超えていなければ、ステップ
S2に戻って次の文字について上述した処理を繰り返
す。
+1して、iがデータレコードの最大文字数Lを超えた
か否かを判別し(S9)、超えていなければ、ステップ
S2に戻って次の文字について上述した処理を繰り返
す。
【0032】他方、ステップS3において現注目中の文
字Niが直前データレコードの同一箇所の文字Oiと一
致しないことが判別されたときは、カウンタCNTの値
が2以上か否かを判別し(S16)、2以上であれば、
現注目中の文字Niの直前に2以上の連続する文字が直
前データレコードの同一箇所の文字列と一致していたこ
とになるので、垂直圧縮すべき条件が成立したとして制
御文字(3)とカウンタCNTの値を出力する(S1
7,S18)。そして、カウンタCNTを0に初期化し
(S19)、現注目中の文字Niを出力し(S23)、
ステップS8へ進む。
字Niが直前データレコードの同一箇所の文字Oiと一
致しないことが判別されたときは、カウンタCNTの値
が2以上か否かを判別し(S16)、2以上であれば、
現注目中の文字Niの直前に2以上の連続する文字が直
前データレコードの同一箇所の文字列と一致していたこ
とになるので、垂直圧縮すべき条件が成立したとして制
御文字(3)とカウンタCNTの値を出力する(S1
7,S18)。そして、カウンタCNTを0に初期化し
(S19)、現注目中の文字Niを出力し(S23)、
ステップS8へ進む。
【0033】また、ステップS16でカウンタCNTの
値が2以上でないと判別されたときは、更にステップS
20でカウンタCNTの値が1か否かを判別し、1であ
れば、現注目中の文字Niの直前の1文字が直前データ
レコードの同一箇所の文字と一致していたに過ぎないた
め、保存しておいた直前の文字Ni−1を出力し(S2
1)、カウンタCNTを0に初期化し(S22)、更に
現注目中の文字Niを出力し(S23)、ステップS8
へ進む。
値が2以上でないと判別されたときは、更にステップS
20でカウンタCNTの値が1か否かを判別し、1であ
れば、現注目中の文字Niの直前の1文字が直前データ
レコードの同一箇所の文字と一致していたに過ぎないた
め、保存しておいた直前の文字Ni−1を出力し(S2
1)、カウンタCNTを0に初期化し(S22)、更に
現注目中の文字Niを出力し(S23)、ステップS8
へ進む。
【0034】更に、ステップS20でカウンタCNTが
1でないと判別されたとき、即ちカウンタCNTが0と
判別されたときは、現注目中の文字Niを出力し(S2
3)、ステップS8へ進む。
1でないと判別されたとき、即ちカウンタCNTが0と
判別されたときは、現注目中の文字Niを出力し(S2
3)、ステップS8へ進む。
【0035】そして、ステップS9において、変数iの
値がデータレコードの最大文字数Lを超えたことが判別
されると、ステップS10,S11においてカウンタC
NTの値を判別し、カウンタCNTが2以上であれば、
データレコードの最終部分に直前データレコードと同一
文字が2以上連続していたことになるため、垂直圧縮す
べき条件が成立したとして制御文字(3)およびカウン
タCNTの値を出力し(S12,S13)、今回入力し
たデータレコードを直前レコード格納域12に退避して
(S15)、今回のデータレコードの垂直圧縮処理を終
える。また、カウンタCNTが1であれば、最後の1文
字のみが一致していたに過ぎないため、保存しておいた
その1文字Ni−1を出力し(S14)、ステップS1
5を経て今回のデータレコードの垂直圧縮処理を終え
る。更に、カウンタCNTが0のときは(ステップS1
1でNO)、ステップS23から移行してきた場合なの
で、ステップS15を経て今回のデータレコードの垂直
圧縮処理を終える。
値がデータレコードの最大文字数Lを超えたことが判別
されると、ステップS10,S11においてカウンタC
NTの値を判別し、カウンタCNTが2以上であれば、
データレコードの最終部分に直前データレコードと同一
文字が2以上連続していたことになるため、垂直圧縮す
べき条件が成立したとして制御文字(3)およびカウン
タCNTの値を出力し(S12,S13)、今回入力し
たデータレコードを直前レコード格納域12に退避して
(S15)、今回のデータレコードの垂直圧縮処理を終
える。また、カウンタCNTが1であれば、最後の1文
字のみが一致していたに過ぎないため、保存しておいた
その1文字Ni−1を出力し(S14)、ステップS1
5を経て今回のデータレコードの垂直圧縮処理を終え
る。更に、カウンタCNTが0のときは(ステップS1
1でNO)、ステップS23から移行してきた場合なの
で、ステップS15を経て今回のデータレコードの垂直
圧縮処理を終える。
【0036】図3(a)に示した2番目のデータレコー
ドD2が入力された場合を例にして垂直圧縮手段13の
動作を図4のフローチャートに従って説明すると、以下
のようになる。先ず、データレコードD2の先頭文字
「9」が読み取られ(S2)、直前データレコードD1
の同一箇所の文字「9」と比較される(S3)。その結
果は一致するので、カウンタCNTの値が1にされ(S
5)、「9」がNi−1として保存される(S6)。次
に、データレコードD2の2番目の文字「3」が読み取
られ(S2)、直前データレコードD1の同一箇所の文
字「3」と比較され(S3)、一致するのでカウンタC
NTの値が2にされる(S7)。以降、同様な処理がデ
ータレコードD2の13番目の文字「1」まで続けら
れ、カウンタCNTの値は13となる。
ドD2が入力された場合を例にして垂直圧縮手段13の
動作を図4のフローチャートに従って説明すると、以下
のようになる。先ず、データレコードD2の先頭文字
「9」が読み取られ(S2)、直前データレコードD1
の同一箇所の文字「9」と比較される(S3)。その結
果は一致するので、カウンタCNTの値が1にされ(S
5)、「9」がNi−1として保存される(S6)。次
に、データレコードD2の2番目の文字「3」が読み取
られ(S2)、直前データレコードD1の同一箇所の文
字「3」と比較され(S3)、一致するのでカウンタC
NTの値が2にされる(S7)。以降、同様な処理がデ
ータレコードD2の13番目の文字「1」まで続けら
れ、カウンタCNTの値は13となる。
【0037】次にデータレコードD2の14番目の文字
「2」が読み取られ(S2)、直前データレコードD1
の同一箇所の文字「1」と比較される(S3)。その結
果は不一致なので、ステップS16へ進み、カウンタC
NTの値が2以上であることが判別される。このため、
制御文字(3)とカウンタCNTの値「13」とが出力
され(S17,S18)、カウンタCNTを0に初期化
した後、14番目の文字「2」が出力される(S2
3)。
「2」が読み取られ(S2)、直前データレコードD1
の同一箇所の文字「1」と比較される(S3)。その結
果は不一致なので、ステップS16へ進み、カウンタC
NTの値が2以上であることが判別される。このため、
制御文字(3)とカウンタCNTの値「13」とが出力
され(S17,S18)、カウンタCNTを0に初期化
した後、14番目の文字「2」が出力される(S2
3)。
【0038】次にデータレコードD2の15番目の文字
「1」が読み取られ(S2)、直前データレコードD1
の同一箇所の文字「1」と比較され(S3)、一致する
ので、カウンタCNTが1にされ(S5)、その文字
「1」がNi−1として保存される(S6)。次にデー
タレコードD2の16番目の文字「2」が読み取られ
(S2)、直前データレコードD1の同一箇所の文字
「1」と比較される(S3)。その結果は不一致なの
で、ステップS16に進み、ここでカウンタCNTの値
が2以上でないことが確認され、次のステップS20で
1であることが確認される。このため、保存してあった
15番目の文字「1」が出力され(S21)、次いで1
6番目の文字「2」も出力される(S23)。
「1」が読み取られ(S2)、直前データレコードD1
の同一箇所の文字「1」と比較され(S3)、一致する
ので、カウンタCNTが1にされ(S5)、その文字
「1」がNi−1として保存される(S6)。次にデー
タレコードD2の16番目の文字「2」が読み取られ
(S2)、直前データレコードD1の同一箇所の文字
「1」と比較される(S3)。その結果は不一致なの
で、ステップS16に進み、ここでカウンタCNTの値
が2以上でないことが確認され、次のステップS20で
1であることが確認される。このため、保存してあった
15番目の文字「1」が出力され(S21)、次いで1
6番目の文字「2」も出力される(S23)。
【0039】以降同様な処理が続けられ、データレコー
ドD2の最後の文字「□」を読み取って直前データレコ
ードD1の同一箇所の文字「△」と比較すると、不一致
なので、ステップS16に進み、その時点ではカウンタ
CNTの値は0なので、ステップS23で今回読み取っ
た最後の文字「□」を出力する。そして、ステップS9
でデータレコードD1の最後の文字まで読み取り終えた
ことを判別し、カウンタCNTの値が0なので、ステッ
プS10,S11を経由してステップS15へ進み、今
回のデータレコードD2を直前レコード格納域12に格
納して、データレコードD2の処理を終える。
ドD2の最後の文字「□」を読み取って直前データレコ
ードD1の同一箇所の文字「△」と比較すると、不一致
なので、ステップS16に進み、その時点ではカウンタ
CNTの値は0なので、ステップS23で今回読み取っ
た最後の文字「□」を出力する。そして、ステップS9
でデータレコードD1の最後の文字まで読み取り終えた
ことを判別し、カウンタCNTの値が0なので、ステッ
プS10,S11を経由してステップS15へ進み、今
回のデータレコードD2を直前レコード格納域12に格
納して、データレコードD2の処理を終える。
【0040】次に図1の水平圧縮手段15の処理例につ
いて図5のフローチャートを参照して説明する。
いて図5のフローチャートを参照して説明する。
【0041】水平圧縮手段15は、垂直圧縮後レコード
格納域14に1つのデータレコードが格納される毎に図
5に示す処理を実行する。先ず、今回格納されたデータ
レコードの先頭から何番目の文字に注目するかを示す変
数iを1に、一致文字数をカウントするためのカウンタ
CNTを0にそれぞれ初期化する(S31)。
格納域14に1つのデータレコードが格納される毎に図
5に示す処理を実行する。先ず、今回格納されたデータ
レコードの先頭から何番目の文字に注目するかを示す変
数iを1に、一致文字数をカウントするためのカウンタ
CNTを0にそれぞれ初期化する(S31)。
【0042】次に、図1のレコードフォーマット情報5
を参照して、今回格納されたデータレコードの先頭から
変数iが示すi番目の文字Miを読み取り(S32)、
更に変数iを+1してその直後の文字Mi+1を読み取
る(S33,S34)。そして、文字Mi+1が存在す
る場合、即ち文字Miがデータレコードの最後の文字で
なければ(S35でNO)、文字Miと文字Mi+1と
を比較する(S36)。
を参照して、今回格納されたデータレコードの先頭から
変数iが示すi番目の文字Miを読み取り(S32)、
更に変数iを+1してその直後の文字Mi+1を読み取
る(S33,S34)。そして、文字Mi+1が存在す
る場合、即ち文字Miがデータレコードの最後の文字で
なければ(S35でNO)、文字Miと文字Mi+1と
を比較する(S36)。
【0043】一致した場合(S36でNO)、カウンタ
CNTが0か否かを判別し(S37)、0であれば、カ
ウンタCNTに2をセットして(S38)、文字Miを
文字Mi−1として、また文字Mi+1を文字Miとし
て保存し(S39)、ステップS33に戻る。またカウ
ンタCNTが0でないと判別したときは、一致文字数を
+1するためにカウンタCNTを+1し(S40)、文
字Mi+1を文字Miとして保存し(S41)、ステッ
プS33に戻る。そして、ステップS33においては変
数iを+1して、次の文字Mi+1に対して上述した処
理を繰り返す。
CNTが0か否かを判別し(S37)、0であれば、カ
ウンタCNTに2をセットして(S38)、文字Miを
文字Mi−1として、また文字Mi+1を文字Miとし
て保存し(S39)、ステップS33に戻る。またカウ
ンタCNTが0でないと判別したときは、一致文字数を
+1するためにカウンタCNTを+1し(S40)、文
字Mi+1を文字Miとして保存し(S41)、ステッ
プS33に戻る。そして、ステップS33においては変
数iを+1して、次の文字Mi+1に対して上述した処
理を繰り返す。
【0044】他方、ステップS36において今回読み取
った文字Mi+1とその直前の文字Miとが一致しない
ことが判別されたときは、カウンタCNTの値が3以上
か否かを判別し(S42)、3以上であれば、文字Mi
が3個以上連続していたことになるので、水平圧縮すべ
き条件が成立したとして、文字Miが1バイト系文字で
あれば制御文字(1)を、2バイト系文字であれば制御
文字(2)を出力し(S43)、次いで文字Miを出力
し(S44)、次いでカウンタCNTの値を出力する
(S45)。そして、カウンタCNTを0に初期化し
(S46)、文字Mi+1を文字Miとして保存して
(S51)、ステップS33へ進む。
った文字Mi+1とその直前の文字Miとが一致しない
ことが判別されたときは、カウンタCNTの値が3以上
か否かを判別し(S42)、3以上であれば、文字Mi
が3個以上連続していたことになるので、水平圧縮すべ
き条件が成立したとして、文字Miが1バイト系文字で
あれば制御文字(1)を、2バイト系文字であれば制御
文字(2)を出力し(S43)、次いで文字Miを出力
し(S44)、次いでカウンタCNTの値を出力する
(S45)。そして、カウンタCNTを0に初期化し
(S46)、文字Mi+1を文字Miとして保存して
(S51)、ステップS33へ進む。
【0045】また、ステップS42でカウンタCNTの
値が3以上でないと判別されたときは、更にステップS
47でカウンタCNTの値が2か否かを判別し、2であ
れば、文字Miが2個連続していたに過ぎないため、M
i,Mi−1として保存しておいた直前2個の文字を出
力する(S48)。そして、カウンタCNTを0に初期
化し(S49)、文字Mi+1を文字Miとして保存し
て(S51)、ステップS33へ進む。
値が3以上でないと判別されたときは、更にステップS
47でカウンタCNTの値が2か否かを判別し、2であ
れば、文字Miが2個連続していたに過ぎないため、M
i,Mi−1として保存しておいた直前2個の文字を出
力する(S48)。そして、カウンタCNTを0に初期
化し(S49)、文字Mi+1を文字Miとして保存し
て(S51)、ステップS33へ進む。
【0046】更に、ステップS47でカウンタCNTが
2でないと判別されたとき、即ちカウンタCNTが0と
判別されたときは、文字Miを出力し(S50)、文字
Mi+1を文字Miとして保存して(S51)、ステッ
プS33へ進む。
2でないと判別されたとき、即ちカウンタCNTが0と
判別されたときは、文字Miを出力し(S50)、文字
Mi+1を文字Miとして保存して(S51)、ステッ
プS33へ進む。
【0047】そして、ステップS35において、文字M
i+1が存在しなかったことが判別されると、即ち文字
Miが最終文字であった場合、ステップS52,S53
においてカウンタCNTの値を判別し、カウンタCNT
が3以上であれば、データレコードの最終部分において
文字Miが3個以上連続していたことになるため、水平
圧縮すべき条件が成立したとして、文字Miが1バイト
系文字であれば制御文字(1)を、2バイト系文字であ
れば制御文字(2)を出力し(S55)、次いで文字M
iを出力し(S56)、次いでカウンタCNTの値を出
力し(S57)今回格納されたデータレコードの水平圧
縮処理を終える。また、カウンタCNTが2であれば、
データレコードの最終部分において文字Miが2個連続
していたに過ぎないため、Mi,Mi−1として保存し
ておいた直前2個の文字を出力し(S58)、今回のデ
ータレコードの水平圧縮処理を終える。更に、カウンタ
CNTが0のときは(ステップS53でNO)、ステッ
プS51から移行してきた場合なので、最後の文字Mi
を出力し(S54)、今回のデータレコードの垂直圧縮
処理を終える。
i+1が存在しなかったことが判別されると、即ち文字
Miが最終文字であった場合、ステップS52,S53
においてカウンタCNTの値を判別し、カウンタCNT
が3以上であれば、データレコードの最終部分において
文字Miが3個以上連続していたことになるため、水平
圧縮すべき条件が成立したとして、文字Miが1バイト
系文字であれば制御文字(1)を、2バイト系文字であ
れば制御文字(2)を出力し(S55)、次いで文字M
iを出力し(S56)、次いでカウンタCNTの値を出
力し(S57)今回格納されたデータレコードの水平圧
縮処理を終える。また、カウンタCNTが2であれば、
データレコードの最終部分において文字Miが2個連続
していたに過ぎないため、Mi,Mi−1として保存し
ておいた直前2個の文字を出力し(S58)、今回のデ
ータレコードの水平圧縮処理を終える。更に、カウンタ
CNTが0のときは(ステップS53でNO)、ステッ
プS51から移行してきた場合なので、最後の文字Mi
を出力し(S54)、今回のデータレコードの垂直圧縮
処理を終える。
【0048】図3(a)に示した1番目のデータレコー
ドD1が垂直圧縮後レコード格納域14に格納された場
合を例にして水平圧縮手段15の動作を図5のフローチ
ャートに従って説明すると、以下のようになる。なお、
1番目のデータレコードD1は垂直圧縮されないため、
図3(a)に示した内容と同一の内容のまま垂直圧縮時
レコード格納域14に格納されている。
ドD1が垂直圧縮後レコード格納域14に格納された場
合を例にして水平圧縮手段15の動作を図5のフローチ
ャートに従って説明すると、以下のようになる。なお、
1番目のデータレコードD1は垂直圧縮されないため、
図3(a)に示した内容と同一の内容のまま垂直圧縮時
レコード格納域14に格納されている。
【0049】先ず、データレコードD1の先頭文字
「9」がMiとして、次の文字「3」がMi+1として
読み取られ(S32,S34)、両者が比較される(S
36)。そして、結果は不一致なので、Miである
「9」が出力され(S50)、Mi+1である「3」が
Miとして保存される。
「9」がMiとして、次の文字「3」がMi+1として
読み取られ(S32,S34)、両者が比較される(S
36)。そして、結果は不一致なので、Miである
「9」が出力され(S50)、Mi+1である「3」が
Miとして保存される。
【0050】次にMi+1として「0」が読み取られ
(S34)、Miである「3」と比較されるが(S3
6)、不一致なので、Miである「3」が出力される
(S50)。
(S34)、Miである「3」と比較されるが(S3
6)、不一致なので、Miである「3」が出力される
(S50)。
【0051】以上のような動作は、データレコードD1
の先頭から9番目の「0」の文字まで同様に続けられ
る。
の先頭から9番目の「0」の文字まで同様に続けられ
る。
【0052】ステップS51においてMiとしてデータ
レコードD1の9番目の文字「0」が保存された後、次
の10番目の文字「0」が読み取られ(S34)、両者
が比較されると(S36)、その結果は一致するので、
カウンタCNTに2がセットされる(S38)。そし
て、Miである「0」がMi−1として、Mi+1であ
る「0」がMiとして保存され(S39)、次の11番
目の文字「1」がMi+1として読み取られ(S3
4)、直前の文字であるMi=「0」と比較される(S
36)。その結果は不一致なので、ステップS47にお
いてカウンタCNTが2であることが判別されて、Mi
−1として保存されていた「0」,Miとして保存され
ていた「0」がそれぞれ出力され、Mi+1である
「1」がMiとして保存される(S51)。
レコードD1の9番目の文字「0」が保存された後、次
の10番目の文字「0」が読み取られ(S34)、両者
が比較されると(S36)、その結果は一致するので、
カウンタCNTに2がセットされる(S38)。そし
て、Miである「0」がMi−1として、Mi+1であ
る「0」がMiとして保存され(S39)、次の11番
目の文字「1」がMi+1として読み取られ(S3
4)、直前の文字であるMi=「0」と比較される(S
36)。その結果は不一致なので、ステップS47にお
いてカウンタCNTが2であることが判別されて、Mi
−1として保存されていた「0」,Miとして保存され
ていた「0」がそれぞれ出力され、Mi+1である
「1」がMiとして保存される(S51)。
【0053】次に、先頭から12番目の文字「1」が読
み取られ(S34)、直前の文字Mi=「1」と比較さ
れて一致が検出されると、カウンタCNTが2にセット
され(S38)、Miである「1」がMi−1として、
Mi+1である「1」がMiとして保存され(S3
9)、13番目の文字「1」が読み取られる(S3
4)。そして、文字Miと比較すると一致し、且つ、そ
の時点のカウンタCNTの値は2なので、カウンタCN
Tが+1されて「3」となる(S40)。そして、Mi
+1である「1」がMiとして保存され(S41)、次
の14番目の文字「1」に処理を移す。
み取られ(S34)、直前の文字Mi=「1」と比較さ
れて一致が検出されると、カウンタCNTが2にセット
され(S38)、Miである「1」がMi−1として、
Mi+1である「1」がMiとして保存され(S3
9)、13番目の文字「1」が読み取られる(S3
4)。そして、文字Miと比較すると一致し、且つ、そ
の時点のカウンタCNTの値は2なので、カウンタCN
Tが+1されて「3」となる(S40)。そして、Mi
+1である「1」がMiとして保存され(S41)、次
の14番目の文字「1」に処理を移す。
【0054】このような動作がデータレコードD1の先
頭から16番目の「1」まで続けられ、17番目の
「0」がMi+1として読み取られ(S34)、直前の
文字であるMi=「1」と比較されて不一致が検出され
ると、その時点のカウンタCNTの値は「6」なので、
制御文字(1),Miである「1」,カウンタCNTの
値「6」が出力される(S43,S44,S45)。
頭から16番目の「1」まで続けられ、17番目の
「0」がMi+1として読み取られ(S34)、直前の
文字であるMi=「1」と比較されて不一致が検出され
ると、その時点のカウンタCNTの値は「6」なので、
制御文字(1),Miである「1」,カウンタCNTの
値「6」が出力される(S43,S44,S45)。
【0055】以上のような動作がデータレコードD1の
最後の文字まで続けられることにより、データレコード
D1に対する水平圧縮処理が完了し、図3(b)に示し
たようなデータレコードE1が生成される。
最後の文字まで続けられることにより、データレコード
D1に対する水平圧縮処理が完了し、図3(b)に示し
たようなデータレコードE1が生成される。
【0056】以上のデータレコード圧縮方法の実施例で
は、圧縮対象となるデータファイル2のデータレコード
D1〜Dnが所定のフィールドの値で分類済であること
を前提としたが、未分類の場合に圧縮処理の一貫として
分類処理を行うようにしても勿論構わない。また、1バ
イト系文字と2バイト系文字とが混在するデータレコー
ドを取り上げたが、何れかの系の文字のみで構成されて
いる場合にも適用できることは勿論のことである。この
場合、1バイト系文字のみからなる場合、垂直圧縮する
条件を3文字以上が同一のときとし、水平圧縮する条件
は4文字以上同一文字が連続するときとし、2バイト系
文字のみからなる場合、垂直圧縮する条件を2文字以上
が同一のときとし、水平圧縮する条件は3文字以上同一
文字が連続すときとする。更に、データファイルへの保
存時の圧縮に適用したが、伝送時のデータレコードの圧
縮に適用しても良い。また更に、対象とするデータレコ
ードは固定長のものであっても、可変長のものであって
も適用可能である。
は、圧縮対象となるデータファイル2のデータレコード
D1〜Dnが所定のフィールドの値で分類済であること
を前提としたが、未分類の場合に圧縮処理の一貫として
分類処理を行うようにしても勿論構わない。また、1バ
イト系文字と2バイト系文字とが混在するデータレコー
ドを取り上げたが、何れかの系の文字のみで構成されて
いる場合にも適用できることは勿論のことである。この
場合、1バイト系文字のみからなる場合、垂直圧縮する
条件を3文字以上が同一のときとし、水平圧縮する条件
は4文字以上同一文字が連続するときとし、2バイト系
文字のみからなる場合、垂直圧縮する条件を2文字以上
が同一のときとし、水平圧縮する条件は3文字以上同一
文字が連続すときとする。更に、データファイルへの保
存時の圧縮に適用したが、伝送時のデータレコードの圧
縮に適用しても良い。また更に、対象とするデータレコ
ードは固定長のものであっても、可変長のものであって
も適用可能である。
【0057】次に、図1に示した実施例のデータレコー
ド圧縮方法によって圧縮されたデータファイル3のデー
タレコードE1〜Enを元のデータレコードD1〜Dn
に復元する方法の実施例について説明する。
ド圧縮方法によって圧縮されたデータファイル3のデー
タレコードE1〜Enを元のデータレコードD1〜Dn
に復元する方法の実施例について説明する。
【0058】図6を参照すると、本発明のデータレコー
ド伸張方法を実施するデータ伸張装置6の一例は、デー
タファイル3中のデータレコードE1〜Enを入力して
伸張処理を施し、伸張後のデータレコードD1〜Dnを
データファイル2に出力するもので、伸張前レコード入
力手段61と、水平伸張手段62と、水平伸張後レコー
ド格納域63と、直前レコード格納域64と、垂直伸張
手段65と、伸張後レコード出力手段66とで構成され
ている。なお、7はデータファイル3中のデータレコー
ドE1〜Enの圧縮前のデータレコードD1〜Dnの構
成フィールド数,各フィールド内の文字数および文字タ
イプ等を示すレコードフォーマット情報であり、図1の
レコードフォーマット情報5と同じである。
ド伸張方法を実施するデータ伸張装置6の一例は、デー
タファイル3中のデータレコードE1〜Enを入力して
伸張処理を施し、伸張後のデータレコードD1〜Dnを
データファイル2に出力するもので、伸張前レコード入
力手段61と、水平伸張手段62と、水平伸張後レコー
ド格納域63と、直前レコード格納域64と、垂直伸張
手段65と、伸張後レコード出力手段66とで構成され
ている。なお、7はデータファイル3中のデータレコー
ドE1〜Enの圧縮前のデータレコードD1〜Dnの構
成フィールド数,各フィールド内の文字数および文字タ
イプ等を示すレコードフォーマット情報であり、図1の
レコードフォーマット情報5と同じである。
【0059】このように構成された本実施例のデータ伸
張装置6は概略次のように動作する。先ず、伸張前レコ
ード入力手段61はデータファイル3からデータレコー
ドE1〜Enをその並び順に1レコードずつ順に入力し
て水平伸張手段62に出力する。
張装置6は概略次のように動作する。先ず、伸張前レコ
ード入力手段61はデータファイル3からデータレコー
ドE1〜Enをその並び順に1レコードずつ順に入力し
て水平伸張手段62に出力する。
【0060】水平伸張手段62は、入力されたデータレ
コードに対して、その中に含まれる水平圧縮したことを
示す制御文字(1)または(2)とその連続した文字と
その連続個数を示す数値とからなる部分を、その連続す
る文字をその数値の示す連続個数だけ並べた文字列に置
換したデータレコードを生成して水平伸張後レコード格
納域63に出力する。
コードに対して、その中に含まれる水平圧縮したことを
示す制御文字(1)または(2)とその連続した文字と
その連続個数を示す数値とからなる部分を、その連続す
る文字をその数値の示す連続個数だけ並べた文字列に置
換したデータレコードを生成して水平伸張後レコード格
納域63に出力する。
【0061】次に、垂直伸張手段65は、水平伸張後レ
コード格納域63に格納されたデータレコードに対し
て、その先頭の文字から最後の文字まで、垂直圧縮した
ことを示す制御文字(3)とその連続個数を示す数値と
からなる部分以外の文字はそのまま伸張後レコード出力
手段66に出力し、垂直圧縮したことを示す制御文字
(3)とその連続個数を示す数値とからなる部分は、直
前レコード格納域64に格納されている伸張処理済の直
前のデータレコードにおける前記制御文字(3)と同一
箇所の文字から前記数値の示す連続個数分先の文字まで
の文字列に置換して伸張後レコード出力手段66に出力
する。そして、今回処理して得た伸張後のデータレコー
ドを次のデータレコードの伸張処理に備えて直前レコー
ド格納域64に格納する。次に、伸張後レコード出力手
段66が垂直伸張手段65で生成されたデータレコード
をデータファイル2に出力する。
コード格納域63に格納されたデータレコードに対し
て、その先頭の文字から最後の文字まで、垂直圧縮した
ことを示す制御文字(3)とその連続個数を示す数値と
からなる部分以外の文字はそのまま伸張後レコード出力
手段66に出力し、垂直圧縮したことを示す制御文字
(3)とその連続個数を示す数値とからなる部分は、直
前レコード格納域64に格納されている伸張処理済の直
前のデータレコードにおける前記制御文字(3)と同一
箇所の文字から前記数値の示す連続個数分先の文字まで
の文字列に置換して伸張後レコード出力手段66に出力
する。そして、今回処理して得た伸張後のデータレコー
ドを次のデータレコードの伸張処理に備えて直前レコー
ド格納域64に格納する。次に、伸張後レコード出力手
段66が垂直伸張手段65で生成されたデータレコード
をデータファイル2に出力する。
【0062】これでデータファイル3中の一つのデータ
レコードの伸張処理が終了したことになり、制御が伸張
前レコード入力手段61に戻されて、残りのデータレコ
ードに対して上述と同様な処理が繰り返される。
レコードの伸張処理が終了したことになり、制御が伸張
前レコード入力手段61に戻されて、残りのデータレコ
ードに対して上述と同様な処理が繰り返される。
【0063】次に図6の水平伸張手段62の処理例につ
いて図7のフローチャートを参照して説明する。
いて図7のフローチャートを参照して説明する。
【0064】水平伸張手段62は、伸張前レコード入力
手段61から1つのデータレコードが入力される毎に図
7に示す処理を実行する。先ず、今回入力されたデータ
レコードの先頭から何番目のバイトに注目するかを示す
変数iを0に初期化し(S71)、変数iを+1して
(S72)、データレコードの先頭から変数iが示すi
番目のバイトの内容Biを読み取る(S73)。そし
て、Biが読み取れた場合(S74でNO)、その内容
が制御文字(2)か、制御文字(1)か、或いはそれ以
外かを判別する(S75,S76)。
手段61から1つのデータレコードが入力される毎に図
7に示す処理を実行する。先ず、今回入力されたデータ
レコードの先頭から何番目のバイトに注目するかを示す
変数iを0に初期化し(S71)、変数iを+1して
(S72)、データレコードの先頭から変数iが示すi
番目のバイトの内容Biを読み取る(S73)。そし
て、Biが読み取れた場合(S74でNO)、その内容
が制御文字(2)か、制御文字(1)か、或いはそれ以
外かを判別する(S75,S76)。
【0065】Biが制御文字(1),(2)以外であっ
た場合(S76でNO)、その内容をそのまま水平伸張
後のレコードの内容として出力し(S77)、ステップ
S72に戻って上述した処理を繰り返す。
た場合(S76でNO)、その内容をそのまま水平伸張
後のレコードの内容として出力し(S77)、ステップ
S72に戻って上述した処理を繰り返す。
【0066】他方、Biが制御文字(1)であった場合
(S76でYES)、変数iを+1してデータレコード
の次のバイトの内容(即ち、繰り返している文字)を読
み取ってそれをXとして保持し(S78〜S80)、再
び変数iを+1してデータレコードの更に次のバイトの
内容(即ち、繰り返し数)をBiとして読み取って(S
81,S82)、上記保持したXの内容(繰り返し文
字)をステップS82で読み取ったBi(繰り返し数)
回だけ水平伸張後のレコードの内容として出力する(S
83)。そして、ステップS72に戻って上述した処理
を繰り返す。
(S76でYES)、変数iを+1してデータレコード
の次のバイトの内容(即ち、繰り返している文字)を読
み取ってそれをXとして保持し(S78〜S80)、再
び変数iを+1してデータレコードの更に次のバイトの
内容(即ち、繰り返し数)をBiとして読み取って(S
81,S82)、上記保持したXの内容(繰り返し文
字)をステップS82で読み取ったBi(繰り返し数)
回だけ水平伸張後のレコードの内容として出力する(S
83)。そして、ステップS72に戻って上述した処理
を繰り返す。
【0067】また、Biが制御文字(2)であった場合
(S75でYES)、変数iを+1してデータレコード
の次のバイトの内容(即ち、繰り返している文字の1バ
イト目の内容)を読み取ってYとして保持し(S84〜
86)、更に、変数iを+1してデータレコードの次の
バイトの内容(即ち、繰り返している文字の2バイト目
の内容)を読み取ってZとして保持する(S87〜S8
9)。次に、変数iを+1して次のバイトの内容(即
ち、繰り返し数)をBiとして読み取り(S90,S9
1)、上記保持したY,Zで定まる2バイト系文字をス
テップS91で読み取ったBi(繰り返し数)回だけ水
平伸張後のレコードの内容として出力する(S92)。
そして、ステップS72に戻って上述した処理を繰り返
す。
(S75でYES)、変数iを+1してデータレコード
の次のバイトの内容(即ち、繰り返している文字の1バ
イト目の内容)を読み取ってYとして保持し(S84〜
86)、更に、変数iを+1してデータレコードの次の
バイトの内容(即ち、繰り返している文字の2バイト目
の内容)を読み取ってZとして保持する(S87〜S8
9)。次に、変数iを+1して次のバイトの内容(即
ち、繰り返し数)をBiとして読み取り(S90,S9
1)、上記保持したY,Zで定まる2バイト系文字をス
テップS91で読み取ったBi(繰り返し数)回だけ水
平伸張後のレコードの内容として出力する(S92)。
そして、ステップS72に戻って上述した処理を繰り返
す。
【0068】そして、ステップS74で読み取られたB
iがない、即ちデータレコードの最終バイトまで処理し
終えたことを判別すると、今回のデータレコードに対す
る水平伸張処理を終了する。
iがない、即ちデータレコードの最終バイトまで処理し
終えたことを判別すると、今回のデータレコードに対す
る水平伸張処理を終了する。
【0069】次に図6の垂直伸張手段65の処理例につ
いて図8のフローチャートを参照して説明する。
いて図8のフローチャートを参照して説明する。
【0070】垂直伸張手段65は、水平伸張後レコード
格納域63に1つのデータレコードが格納される毎に図
8に示す処理を実行する。先ず、今回格納されたデータ
レコードの先頭から何番目のバイトに注目するかを示す
変数i、および今回格納されたデータレコードの伸張後
の状態における先頭から何番目の文字に注目するかを示
す変数Cをそれぞれ0に初期化する(S101)。次に
変数iを+1して(S102)、データレコードの先頭
から変数iが示すi番目のバイトの内容Biを読み取る
(S103)。そして、Biが読み取れた場合(S10
4でNO)、その内容が制御文字(3)か、それ以外か
を判別する(S105)。
格納域63に1つのデータレコードが格納される毎に図
8に示す処理を実行する。先ず、今回格納されたデータ
レコードの先頭から何番目のバイトに注目するかを示す
変数i、および今回格納されたデータレコードの伸張後
の状態における先頭から何番目の文字に注目するかを示
す変数Cをそれぞれ0に初期化する(S101)。次に
変数iを+1して(S102)、データレコードの先頭
から変数iが示すi番目のバイトの内容Biを読み取る
(S103)。そして、Biが読み取れた場合(S10
4でNO)、その内容が制御文字(3)か、それ以外か
を判別する(S105)。
【0071】制御文字(3)以外であった場合、その内
容を伸張後レコード出力手段66に出力し(S10
6)、変数Cを+1する(S107)。そして、図6の
レコードフォーマット情報7を参照して先頭からC番目
の文字Ncが1バイト系文字か否かを判断し(S10
8)、1バイト系文字であればステップS102に戻っ
て上述した処理を繰り返す。また、1バイト系文字でな
く2バイト系文字であれば、変数iを+1して次のバイ
トの内容(即ち、2バイト系文字の2バイト目の内容)
を読み取り(S109,S110)、これを伸張後レコ
ード出力手段66に出力し(S111)、ステップS1
02に戻る。
容を伸張後レコード出力手段66に出力し(S10
6)、変数Cを+1する(S107)。そして、図6の
レコードフォーマット情報7を参照して先頭からC番目
の文字Ncが1バイト系文字か否かを判断し(S10
8)、1バイト系文字であればステップS102に戻っ
て上述した処理を繰り返す。また、1バイト系文字でな
く2バイト系文字であれば、変数iを+1して次のバイ
トの内容(即ち、2バイト系文字の2バイト目の内容)
を読み取り(S109,S110)、これを伸張後レコ
ード出力手段66に出力し(S111)、ステップS1
02に戻る。
【0072】他方、読み取ったバイトの内容が制御文字
(3)であった場合(S105でYES)、変数iを+
1して更に次のバイトの内容(即ち、重複文字数)をB
iとして読み取り(S112,S113)、直前レコー
ド格納域64に格納されている直前データレコードにお
ける先頭からC+1番目の文字O(C+1)よりC+B
i番目の文字O(C+Bi)までの文字列をレコードフ
ォーマット情報7を参照して読み取って、それらを伸張
後レコード出力手段66に出力する(S114,S11
5)。そして、変数CをステップS112で読み取った
Biが示す重複文字数だけインクリメントし(S11
6)、ステップS102に戻る。
(3)であった場合(S105でYES)、変数iを+
1して更に次のバイトの内容(即ち、重複文字数)をB
iとして読み取り(S112,S113)、直前レコー
ド格納域64に格納されている直前データレコードにお
ける先頭からC+1番目の文字O(C+1)よりC+B
i番目の文字O(C+Bi)までの文字列をレコードフ
ォーマット情報7を参照して読み取って、それらを伸張
後レコード出力手段66に出力する(S114,S11
5)。そして、変数CをステップS112で読み取った
Biが示す重複文字数だけインクリメントし(S11
6)、ステップS102に戻る。
【0073】そして、ステップS104で読み取られた
Biがない、即ちデータレコードの最終バイトまで処理
し終えたことを判別すると、今回のデータレコードに対
する垂直伸張処理を終了する。
Biがない、即ちデータレコードの最終バイトまで処理
し終えたことを判別すると、今回のデータレコードに対
する垂直伸張処理を終了する。
【0074】図3(b)に示した2番目のデータレコー
ドE2を例にして垂直伸張手段65の動作を図8のフロ
ーチャートに従って説明すると、以下のようになる。な
お、データレコードE2の処理が行われる時点では直前
レコード格納域64には1番目のデータレコードE1の
伸張後の内容である図3(a)のデータレコードD1が
格納されている。
ドE2を例にして垂直伸張手段65の動作を図8のフロ
ーチャートに従って説明すると、以下のようになる。な
お、データレコードE2の処理が行われる時点では直前
レコード格納域64には1番目のデータレコードE1の
伸張後の内容である図3(a)のデータレコードD1が
格納されている。
【0075】先ず、データレコードE2の先頭バイトの
内容が読み取られ(S103)、それが制御文字(3)
と識別される(S105でYES)。次に、データレコ
ードE2の先頭から2バイト目の内容(即ち、繰り返し
数「13」)が読み取られ(S112,S113)、現
在変数Cの値は0なので、直前レコード格納域64に格
納されているデータレコードD1の先頭から1文字目の
文字「9」より13文字目の「1」までの文字列O(C
+1)〜O(C+Bi)が読み取られ、それらが伸張後
レコード出力手段66に出力される(S114,S11
5)。そして、変数Cが13に変更される(S11
6)。
内容が読み取られ(S103)、それが制御文字(3)
と識別される(S105でYES)。次に、データレコ
ードE2の先頭から2バイト目の内容(即ち、繰り返し
数「13」)が読み取られ(S112,S113)、現
在変数Cの値は0なので、直前レコード格納域64に格
納されているデータレコードD1の先頭から1文字目の
文字「9」より13文字目の「1」までの文字列O(C
+1)〜O(C+Bi)が読み取られ、それらが伸張後
レコード出力手段66に出力される(S114,S11
5)。そして、変数Cが13に変更される(S11
6)。
【0076】次に変数iが+1されて3となり(S10
2)、データレコードE2の先頭から3バイト目の内容
である「2」が読み取られ(S103)、制御文字
(3)でないので、それが伸張後レコード出力手段66
に出力される(S106)。そして、変数Cが+1され
て「3」にされ(S107)、データレコードE2の元
のデータレコードD2のレコードフォーマット情報に基
づき、先頭から3つ目の文字が1バイト系文字であるこ
とを識別して(S108)、ステップS102に戻る。
2)、データレコードE2の先頭から3バイト目の内容
である「2」が読み取られ(S103)、制御文字
(3)でないので、それが伸張後レコード出力手段66
に出力される(S106)。そして、変数Cが+1され
て「3」にされ(S107)、データレコードE2の元
のデータレコードD2のレコードフォーマット情報に基
づき、先頭から3つ目の文字が1バイト系文字であるこ
とを識別して(S108)、ステップS102に戻る。
【0077】以上のような動作が繰り返されることによ
り、図3(b)のデータレコードE2が図3(a)のデ
ータレコードD2のように伸張される。
り、図3(b)のデータレコードE2が図3(a)のデ
ータレコードD2のように伸張される。
【0078】図1の実施例の垂直圧縮手段13では文字
を単位として垂直圧縮し、水平圧縮手段15でも文字を
単位として水平圧縮した。また、それに応じて図6の実
施例の垂直伸張手段65も文字を認識しつつ垂直伸張し
た。このため、レコードフォーマット情報5,7を必要
とした。以下に示す実施例は、このようなレコードフォ
ーマット情報無しに、1バイト系文字,2バイト系文字
の混在するデータレコードの圧縮,伸張を可能としてい
る。以下、このような実施例について説明する。
を単位として垂直圧縮し、水平圧縮手段15でも文字を
単位として水平圧縮した。また、それに応じて図6の実
施例の垂直伸張手段65も文字を認識しつつ垂直伸張し
た。このため、レコードフォーマット情報5,7を必要
とした。以下に示す実施例は、このようなレコードフォ
ーマット情報無しに、1バイト系文字,2バイト系文字
の混在するデータレコードの圧縮,伸張を可能としてい
る。以下、このような実施例について説明する。
【0079】図9を参照すると、本発明の別の実施例に
かかるデータレコード圧縮方法を実施するデータ圧縮装
置1’の一例は、データファイル2中のデータレコード
D1〜Dnを入力して圧縮処理を施し、圧縮後のデータ
レコードE1〜Enをデータファイル3に出力するもの
で、図1のデータ圧縮装置1の場合と異なり、レコード
フォーマット情報5は存在しない。
かかるデータレコード圧縮方法を実施するデータ圧縮装
置1’の一例は、データファイル2中のデータレコード
D1〜Dnを入力して圧縮処理を施し、圧縮後のデータ
レコードE1〜Enをデータファイル3に出力するもの
で、図1のデータ圧縮装置1の場合と異なり、レコード
フォーマット情報5は存在しない。
【0080】本実施例のデータ圧縮装置1’は概略次の
ように動作する。先ず、圧縮前レコード入力手段11は
データファイル2からデータレコードD1〜Dnをその
並び順に1レコードずつ順に入力して垂直圧縮手段1
3’に出力する。
ように動作する。先ず、圧縮前レコード入力手段11は
データファイル2からデータレコードD1〜Dnをその
並び順に1レコードずつ順に入力して垂直圧縮手段1
3’に出力する。
【0081】垂直圧縮手段13’は、今回入力されたデ
ータレコードにおける先頭のバイトから最終のバイトま
で、直前レコード格納域12に保持しておいた直前に入
力したデータレコードの同一箇所のバイトと比較して、
予め定められたバイト数(本実施例では3とするが、4
以上にしても良い)にわたって連続して直前のデータレ
コードと同一のバイトが現れた部分を、垂直圧縮したこ
とを示す制御文字(3)とその連続個数を示す数値とに
置換した圧縮レコードを生成して垂直圧縮後レコード格
納域14に出力し、次のデータレコードの圧縮処理に備
えて、直前レコード格納域12の内容を今回処理したデ
ータレコードの圧縮前の内容で書き換える。なお、上記
制御文字(3)の構成は図2(c)に示したものと同じ
であるが、重複文字数は重複バイト数を示すことにな
る。
ータレコードにおける先頭のバイトから最終のバイトま
で、直前レコード格納域12に保持しておいた直前に入
力したデータレコードの同一箇所のバイトと比較して、
予め定められたバイト数(本実施例では3とするが、4
以上にしても良い)にわたって連続して直前のデータレ
コードと同一のバイトが現れた部分を、垂直圧縮したこ
とを示す制御文字(3)とその連続個数を示す数値とに
置換した圧縮レコードを生成して垂直圧縮後レコード格
納域14に出力し、次のデータレコードの圧縮処理に備
えて、直前レコード格納域12の内容を今回処理したデ
ータレコードの圧縮前の内容で書き換える。なお、上記
制御文字(3)の構成は図2(c)に示したものと同じ
であるが、重複文字数は重複バイト数を示すことにな
る。
【0082】次に、水平圧縮手段15’は、垂直圧縮後
レコード格納域14に格納された圧縮レコードに対し
て、その圧縮レコード中の予め定められたバイト数(例
えば4)にわたって同一バイトが連続している部分を、
連続した1バイトを水平圧縮したことを示す制御文字
(1)とその連続したバイトの値とその連続個数を示す
数値とに置換し、且つ、連続する2バイトの組が予め定
められた数(例えば3)にわたって連続している部分
を、連続する2バイトの組を水平圧縮したことを示す制
御文字(2)とその連続したバイトの組とその連続個数
を示す数値とに置換した圧縮レコードを生成する。そし
て、圧縮後レコード出力手段16がこの生成された圧縮
レコードをデータファイル3に出力する。これでデータ
ファイル2中の一つのデータレコードの圧縮処理が終了
したことになり、制御が圧縮前レコード入力手段11に
戻されて、残りのデータレコードに対して上述と同様な
処理が繰り返される。なお、上記制御文字(1),
(2)は図2(a),(b)に示したものと同じである
が、連続する1バイトを圧縮したこと,連続する2バイ
トの組を圧縮したことをそれぞれ示すことになる。
レコード格納域14に格納された圧縮レコードに対し
て、その圧縮レコード中の予め定められたバイト数(例
えば4)にわたって同一バイトが連続している部分を、
連続した1バイトを水平圧縮したことを示す制御文字
(1)とその連続したバイトの値とその連続個数を示す
数値とに置換し、且つ、連続する2バイトの組が予め定
められた数(例えば3)にわたって連続している部分
を、連続する2バイトの組を水平圧縮したことを示す制
御文字(2)とその連続したバイトの組とその連続個数
を示す数値とに置換した圧縮レコードを生成する。そし
て、圧縮後レコード出力手段16がこの生成された圧縮
レコードをデータファイル3に出力する。これでデータ
ファイル2中の一つのデータレコードの圧縮処理が終了
したことになり、制御が圧縮前レコード入力手段11に
戻されて、残りのデータレコードに対して上述と同様な
処理が繰り返される。なお、上記制御文字(1),
(2)は図2(a),(b)に示したものと同じである
が、連続する1バイトを圧縮したこと,連続する2バイ
トの組を圧縮したことをそれぞれ示すことになる。
【0083】次に図9の垂直圧縮手段13’の処理例に
ついて図10のフローチャートを参照して説明する。
ついて図10のフローチャートを参照して説明する。
【0084】垂直圧縮手段13’は、圧縮前レコード入
力手段11から1つのデータレコードを入力する毎に図
10に示す処理を実行する。先ず、今回入力したデータ
レコードの先頭から何番目のバイトに注目するかを示す
変数iを1に、一致バイト数をカウントするためのカウ
ンタCNTを0にそれぞれ初期化する(S121)。
力手段11から1つのデータレコードを入力する毎に図
10に示す処理を実行する。先ず、今回入力したデータ
レコードの先頭から何番目のバイトに注目するかを示す
変数iを1に、一致バイト数をカウントするためのカウ
ンタCNTを0にそれぞれ初期化する(S121)。
【0085】次に、今回入力したデータレコードの先頭
から変数iが示すi番目のバイトBiを読み取り(S1
22)、直前レコード格納域12に格納してある直前デ
ータレコードの同一箇所のバイトOiと比較する(S1
23)。
から変数iが示すi番目のバイトBiを読み取り(S1
22)、直前レコード格納域12に格納してある直前デ
ータレコードの同一箇所のバイトOiと比較する(S1
23)。
【0086】一致した場合(S123でYES)、カウ
ンタCNTの値を判別し(S124)、その結果に応じ
て以下の処理を行う。
ンタCNTの値を判別し(S124)、その結果に応じ
て以下の処理を行う。
【0087】カウンタCNTの値が0のときは、カウン
タCNTを+1して1とし(S125)、且つ今回読み
取ったバイトBiをBi−1として保存し(S12
6)、ステップS130へ進む。
タCNTを+1して1とし(S125)、且つ今回読み
取ったバイトBiをBi−1として保存し(S12
6)、ステップS130へ進む。
【0088】カウンタCNTの値が1のときは、カウン
タCNTを+1して2とし(S127)、且つ前回保存
したBi−1をBi−2として、また今回のバイトBi
をBi−1としてそれぞれ保存し(S128)、ステッ
プS130へ進む。
タCNTを+1して2とし(S127)、且つ前回保存
したBi−1をBi−2として、また今回のバイトBi
をBi−1としてそれぞれ保存し(S128)、ステッ
プS130へ進む。
【0089】カウンタCNTの値が2以上のときは、カ
ウンタCNTを+1し(S129)、ステップS130
へ進む。
ウンタCNTを+1し(S129)、ステップS130
へ進む。
【0090】ステップS130においては変数iを+1
する。そして、iがデータレコードの最大バイト数L’
を超えたか否かを判別し(S131)、超えていなけれ
ば、ステップS122に戻って次のバイトについて上述
した処理を繰り返す。
する。そして、iがデータレコードの最大バイト数L’
を超えたか否かを判別し(S131)、超えていなけれ
ば、ステップS122に戻って次のバイトについて上述
した処理を繰り返す。
【0091】他方、ステップS123において現注目中
のバイトBiが直前データレコードの同一箇所のバイト
Oiと一致しないことが判別されたときは、カウンタC
NTの値を判別し(S132)、その結果に応じて以下
の処理を行う。
のバイトBiが直前データレコードの同一箇所のバイト
Oiと一致しないことが判別されたときは、カウンタC
NTの値を判別し(S132)、その結果に応じて以下
の処理を行う。
【0092】カウンタCNTの値が3以上の場合、現注
目中のバイトBiの直前に3以上の連続するバイトが直
前データレコードの同一箇所のバイト列と一致していた
ことになるので、垂直圧縮すべき条件が成立したとして
制御文字(3)とカウンタCNTの値を出力する(S1
33,S134)。そして、カウンタCNTを0に初期
化し(S135)、現注目中のバイトBiを出力し(S
138)、ステップS130へ進む。
目中のバイトBiの直前に3以上の連続するバイトが直
前データレコードの同一箇所のバイト列と一致していた
ことになるので、垂直圧縮すべき条件が成立したとして
制御文字(3)とカウンタCNTの値を出力する(S1
33,S134)。そして、カウンタCNTを0に初期
化し(S135)、現注目中のバイトBiを出力し(S
138)、ステップS130へ進む。
【0093】カウンタCNTの値が1または2であった
場合、現注目中のバイトBiの直前の1バイトまたは2
バイトが直前データレコードの同一箇所のバイトと一致
していたに過ぎないため、カウンタCNTの値が1のと
きは、保存しておいた直前の文字Bi−1を、カウンタ
CNTの値が2のときは、保存しておいた直前の文字B
i−2,Bi−1をそれぞれ出力し(S136)、カウ
ンタCNTを0に初期化し(S137)、更に現注目中
のバイトBiを出力し(S138)、ステップS130
へ進む。
場合、現注目中のバイトBiの直前の1バイトまたは2
バイトが直前データレコードの同一箇所のバイトと一致
していたに過ぎないため、カウンタCNTの値が1のと
きは、保存しておいた直前の文字Bi−1を、カウンタ
CNTの値が2のときは、保存しておいた直前の文字B
i−2,Bi−1をそれぞれ出力し(S136)、カウ
ンタCNTを0に初期化し(S137)、更に現注目中
のバイトBiを出力し(S138)、ステップS130
へ進む。
【0094】カウンタCNTの値が0であった場合、現
注目中のバイトBiを出力し(S138)、ステップS
130へ進む。
注目中のバイトBiを出力し(S138)、ステップS
130へ進む。
【0095】そして、ステップS131において、変数
iの値がデータレコードの最大バイト数L’を超えたこ
とが判別されると、カウンタCNTの値を判別し(S1
39)、その結果に応じて以下の処理を行う。
iの値がデータレコードの最大バイト数L’を超えたこ
とが判別されると、カウンタCNTの値を判別し(S1
39)、その結果に応じて以下の処理を行う。
【0096】カウンタCNTの値が3以上の場合、デー
タレコードの最終部分に直前データレコードと同一バイ
トが3以上連続していたことになるため、垂直圧縮すべ
き条件が成立したとして制御文字(3)およびカウンタ
CNTの値を出力し(S140,S141)、今回入力
したデータレコードを直前レコード格納域12に退避し
て(S143)、今回のデータレコードの垂直圧縮処理
を終える。
タレコードの最終部分に直前データレコードと同一バイ
トが3以上連続していたことになるため、垂直圧縮すべ
き条件が成立したとして制御文字(3)およびカウンタ
CNTの値を出力し(S140,S141)、今回入力
したデータレコードを直前レコード格納域12に退避し
て(S143)、今回のデータレコードの垂直圧縮処理
を終える。
【0097】カウンタCNTの値が1または2の場合、
最後の1バイトまたは2バイトのみが一致していたに過
ぎないため、カウンタCNTの値が1のときは、保存し
ておいた直前の文字Bi−1を、カウンタCNTの値が
2のときは、保存しておいた直前の文字Bi−2,Bi
−1をそれぞれ出力し(S142)、ステップS143
を経て今回のデータレコードの垂直圧縮処理を終える。
最後の1バイトまたは2バイトのみが一致していたに過
ぎないため、カウンタCNTの値が1のときは、保存し
ておいた直前の文字Bi−1を、カウンタCNTの値が
2のときは、保存しておいた直前の文字Bi−2,Bi
−1をそれぞれ出力し(S142)、ステップS143
を経て今回のデータレコードの垂直圧縮処理を終える。
【0098】カウンタCNTの値が0の場合、ステップ
S138から移行してきた場合なので、ステップS14
3を経て今回のデータレコードの垂直圧縮処理を終え
る。
S138から移行してきた場合なので、ステップS14
3を経て今回のデータレコードの垂直圧縮処理を終え
る。
【0099】次に図9の水平圧縮手段15’の処理例に
ついて説明する。
ついて説明する。
【0100】図11は水平圧縮手段15’の状態遷移図
であり、P1〜P22は各状態を、A,B,Cはそれぞ
れ異なる1バイトの任意の値を示すもので、アルファベ
ットのA,B,Cとは異なるものである。即ち、例えば
Aとは1バイトの任意の値を示し、ABとは、1バイト
の任意の値とそれと相違する別の1バイトの値との合計
2バイトの値を示し、AAとは同一値の連続する2バイ
トを示す。
であり、P1〜P22は各状態を、A,B,Cはそれぞ
れ異なる1バイトの任意の値を示すもので、アルファベ
ットのA,B,Cとは異なるものである。即ち、例えば
Aとは1バイトの任意の値を示し、ABとは、1バイト
の任意の値とそれと相違する別の1バイトの値との合計
2バイトの値を示し、AAとは同一値の連続する2バイ
トを示す。
【0101】水平圧縮手段15’は垂直圧縮後レコード
格納域14から1つの圧縮レコードを入力する毎に以下
の処理を実行する。
格納域14から1つの圧縮レコードを入力する毎に以下
の処理を実行する。
【0102】先ず、今回の圧縮レコードの先頭の1バイ
トを読み取り、状態P1に遷移する。この読み取った1
バイトをAで表す。次にこの状態P1において次の1バ
イトを読み取り、同じバイトであれば状態P2へ遷移
し、異なるバイトであれば状態P8へ遷移し、次のバイ
トがなければ、保持している1バイトのAを圧縮後レコ
ード出力手段16に出力して処理を終える。
トを読み取り、状態P1に遷移する。この読み取った1
バイトをAで表す。次にこの状態P1において次の1バ
イトを読み取り、同じバイトであれば状態P2へ遷移
し、異なるバイトであれば状態P8へ遷移し、次のバイ
トがなければ、保持している1バイトのAを圧縮後レコ
ード出力手段16に出力して処理を終える。
【0103】状態P2においては、次の1バイトを読み
取り、同じバイトであれば状態P3へ遷移し、異なるバ
イトであれば状態P4へ遷移し、次のバイトがなけれ
ば、保持している2バイトのAAを出力して処理を終え
る。
取り、同じバイトであれば状態P3へ遷移し、異なるバ
イトであれば状態P4へ遷移し、次のバイトがなけれ
ば、保持している2バイトのAAを出力して処理を終え
る。
【0104】状態P4に遷移した場合、水平圧縮手段1
5’は同一バイトが2個連続していたに過ぎないので、
先頭のAを出力し、残りの2バイトABを残して状態P
8に遷移する。ここでABを残すのは、ABABABと
現れる可能性が残っているからである。
5’は同一バイトが2個連続していたに過ぎないので、
先頭のAを出力し、残りの2バイトABを残して状態P
8に遷移する。ここでABを残すのは、ABABABと
現れる可能性が残っているからである。
【0105】状態P3においては、次の1バイトを読取
り、同じバイトであれば状態P5へ遷移し、異なるバイ
トであれば状態P6へ遷移し、次のバイトがなければ、
保持している3バイトAAAを出力して処理を終える。
り、同じバイトであれば状態P5へ遷移し、異なるバイ
トであれば状態P6へ遷移し、次のバイトがなければ、
保持している3バイトAAAを出力して処理を終える。
【0106】状態P6へ遷移した場合、同一バイトが3
個連続していたに過ぎないので、先頭の2個のバイトA
Aを出力し、残りの2バイトABを残して状態P8に遷
移する。
個連続していたに過ぎないので、先頭の2個のバイトA
Aを出力し、残りの2バイトABを残して状態P8に遷
移する。
【0107】状態P5に遷移した場合、水平圧縮手段1
5’は内部の第1のカウンタを4に初期設定し、次の1
バイトを読取り、同じバイトであれば第1のカウンタを
+1して再び状態P5となり、異なるバイトであれば状
態P7へ遷移し、次のバイトがなければ、連続する1バ
イトを水平圧縮したことを示す制御文字(1)と、連続
して現れたバイトの値と、第1のカウンタの最終結果
(即ち同一バイトの繰り返し数)とを出力して処理を終
える。
5’は内部の第1のカウンタを4に初期設定し、次の1
バイトを読取り、同じバイトであれば第1のカウンタを
+1して再び状態P5となり、異なるバイトであれば状
態P7へ遷移し、次のバイトがなければ、連続する1バ
イトを水平圧縮したことを示す制御文字(1)と、連続
して現れたバイトの値と、第1のカウンタの最終結果
(即ち同一バイトの繰り返し数)とを出力して処理を終
える。
【0108】状態P7へ遷移した場合、水平圧縮手段1
5’は、連続する1バイトを水平圧縮したことを示す制
御文字(1)と、連続して現れたバイトの値と、遷移元
の状態P5における第1のカウンタの最終結果(即ち同
一バイトの繰り返し数)とを出力し、保持している最後
尾の1バイトBを残して状態P1へ遷移する。
5’は、連続する1バイトを水平圧縮したことを示す制
御文字(1)と、連続して現れたバイトの値と、遷移元
の状態P5における第1のカウンタの最終結果(即ち同
一バイトの繰り返し数)とを出力し、保持している最後
尾の1バイトBを残して状態P1へ遷移する。
【0109】他方、状態P8においては、次の1バイト
を読み取り、2つ前のバイトと同じであれば状態P9
へ、直前のバイトと同じであれば状態P11へ、何れの
バイトとも異なれば状態P10へ遷移し、また次のバイ
トがなければ、保持している2バイトABを出力して処
理を終える。
を読み取り、2つ前のバイトと同じであれば状態P9
へ、直前のバイトと同じであれば状態P11へ、何れの
バイトとも異なれば状態P10へ遷移し、また次のバイ
トがなければ、保持している2バイトABを出力して処
理を終える。
【0110】状態P10へ遷移した場合、水平圧縮手段
15’は、先頭の1バイトAを出力し、残りの2バイト
BCを残して状態P8へ遷移する。また、状態P11へ
遷移した場合は、先頭の1バイトAを出力し、残りの2
バイトBBを残して状態P2へ遷移する。これは、BB
BBと現れる可能性が残されているからである。
15’は、先頭の1バイトAを出力し、残りの2バイト
BCを残して状態P8へ遷移する。また、状態P11へ
遷移した場合は、先頭の1バイトAを出力し、残りの2
バイトBBを残して状態P2へ遷移する。これは、BB
BBと現れる可能性が残されているからである。
【0111】状態P9においては、次の1バイトを読み
取り、2つ前のバイトと同じであれば状態P12へ、直
前のバイトと同じであれば状態P14へ、2つ前のバイ
トおよび直前のバイトの何れとも相違すれば状態P13
へ遷移し、また次のバイトがなければ、保持している3
バイトABAを出力して処理を終える。
取り、2つ前のバイトと同じであれば状態P12へ、直
前のバイトと同じであれば状態P14へ、2つ前のバイ
トおよび直前のバイトの何れとも相違すれば状態P13
へ遷移し、また次のバイトがなければ、保持している3
バイトABAを出力して処理を終える。
【0112】状態P13へ遷移した場合、水平圧縮手段
15’は、先頭の2バイトABを出力し、残りの2バイ
トACを残して状態P8へ遷移する。また、状態P14
へ遷移した場合は、先頭の2バイトABを出力し、残り
の2バイトAAを残して状態P2へ遷移する。
15’は、先頭の2バイトABを出力し、残りの2バイ
トACを残して状態P8へ遷移する。また、状態P14
へ遷移した場合は、先頭の2バイトABを出力し、残り
の2バイトAAを残して状態P2へ遷移する。
【0113】状態P12においては、次の1バイトを読
み取り、2つ前のバイトと同じであれば状態P15へ、
直前のバイトと同じであれば状態P17へ、2つ前のバ
イトおよび直前のバイトの何れとも相違すれば状態P1
6へ遷移し、また次のバイトがなければ、保持している
4バイトABABを出力して処理を終える。
み取り、2つ前のバイトと同じであれば状態P15へ、
直前のバイトと同じであれば状態P17へ、2つ前のバ
イトおよび直前のバイトの何れとも相違すれば状態P1
6へ遷移し、また次のバイトがなければ、保持している
4バイトABABを出力して処理を終える。
【0114】状態P16へ遷移した場合、水平圧縮手段
15’は、先頭の3バイトABAを出力し、残りの2バ
イトBCを残して状態P8へ遷移する。また、状態P1
7へ遷移した場合、先頭の3バイトABAを出力し、残
りの2バイトBBを残して状態P2へ遷移する。
15’は、先頭の3バイトABAを出力し、残りの2バ
イトBCを残して状態P8へ遷移する。また、状態P1
7へ遷移した場合、先頭の3バイトABAを出力し、残
りの2バイトBBを残して状態P2へ遷移する。
【0115】状態P15においては、次の1バイトを読
み取り、2つ前のバイトと同じであれば状態P18へ、
直前のバイトと同じであれば状態P20へ、2つ前のバ
イトおよび直前のバイトの何れとも相違すれば状態P1
9へ遷移し、また次のバイトがなければ、保持している
5バイトABABAを出力して処理を終える。
み取り、2つ前のバイトと同じであれば状態P18へ、
直前のバイトと同じであれば状態P20へ、2つ前のバ
イトおよび直前のバイトの何れとも相違すれば状態P1
9へ遷移し、また次のバイトがなければ、保持している
5バイトABABAを出力して処理を終える。
【0116】状態P19へ遷移した場合、水平圧縮手段
15’は、先頭の4バイトABABを出力し、残りの2
バイトACを残して状態P8へ遷移する。また、状態P
20へ遷移した場合、先頭の4バイトABABを出力
し、残りの2バイトAAを残して状態P2へ遷移する。
15’は、先頭の4バイトABABを出力し、残りの2
バイトACを残して状態P8へ遷移する。また、状態P
20へ遷移した場合、先頭の4バイトABABを出力
し、残りの2バイトAAを残して状態P2へ遷移する。
【0117】状態P15から状態P18に遷移した場
合、水平圧縮手段15’は内部の第2のカウンタを3に
初期設定し(後述する状態P21から遷移してきた場合
は第2のカウンタを+1する)、次の1バイトを読み取
り、2つ前のバイトと同じであれば状態P21へ遷移
し、2つ前のバイトと同じでなければ状態P22へ遷移
し、次のバイトがなければ、連続する2バイトの組を水
平圧縮したことを示す制御文字(2)と、連続して現れ
た2バイトの値と、第2のカウンタの最終結果(即ち、
連続したバイトの組の繰り返し数)とを出力し、処理を
終える。
合、水平圧縮手段15’は内部の第2のカウンタを3に
初期設定し(後述する状態P21から遷移してきた場合
は第2のカウンタを+1する)、次の1バイトを読み取
り、2つ前のバイトと同じであれば状態P21へ遷移
し、2つ前のバイトと同じでなければ状態P22へ遷移
し、次のバイトがなければ、連続する2バイトの組を水
平圧縮したことを示す制御文字(2)と、連続して現れ
た2バイトの値と、第2のカウンタの最終結果(即ち、
連続したバイトの組の繰り返し数)とを出力し、処理を
終える。
【0118】状態P21においては、次の1バイトを読
み取り、2つ前のバイトと同じであれば状態P18へ遷
移し、2つ前のバイトと同じでなければ状態P22へ遷
移し、次のバイトがなければ、連続する2バイトの組を
水平圧縮したことを示す制御文字(2)と、連続して現
れた2バイトの値と、遷移元の状態P18における第2
のカウンタの最終結果(即ち、連続したバイトの組の繰
り返し数)とを出力し、次いで、残りの1バイトAを出
力して処理を終える。
み取り、2つ前のバイトと同じであれば状態P18へ遷
移し、2つ前のバイトと同じでなければ状態P22へ遷
移し、次のバイトがなければ、連続する2バイトの組を
水平圧縮したことを示す制御文字(2)と、連続して現
れた2バイトの値と、遷移元の状態P18における第2
のカウンタの最終結果(即ち、連続したバイトの組の繰
り返し数)とを出力し、次いで、残りの1バイトAを出
力して処理を終える。
【0119】状態P18または状態P21から状態P2
2へ遷移した場合、水平圧縮手段15’は、連続する2
バイトの組を水平圧縮したことを示す制御文字(2)
と、連続して現れた2バイトの値と、第2のカウンタの
最終結果(即ち、連続したバイトの組の繰り返し数)と
を出力し、状態P18から遷移してきたときは残りの1
バイトBまたはCを残して状態P1へ遷移する。また、
状態P21から遷移してきたときは、残りの2バイトが
同一バイトならそれを残して状態P2へ遷移し、相違す
るバイトなら残りの2バイトを残して状態P8へ遷移す
る。
2へ遷移した場合、水平圧縮手段15’は、連続する2
バイトの組を水平圧縮したことを示す制御文字(2)
と、連続して現れた2バイトの値と、第2のカウンタの
最終結果(即ち、連続したバイトの組の繰り返し数)と
を出力し、状態P18から遷移してきたときは残りの1
バイトBまたはCを残して状態P1へ遷移する。また、
状態P21から遷移してきたときは、残りの2バイトが
同一バイトならそれを残して状態P2へ遷移し、相違す
るバイトなら残りの2バイトを残して状態P8へ遷移す
る。
【0120】次に、図9に示した実施例のデータレコー
ド圧縮方法によって圧縮されたデータファイル3のデー
タレコードE1〜Enを元のデータレコードD1〜Dn
に復元する方法の実施例について説明する。
ド圧縮方法によって圧縮されたデータファイル3のデー
タレコードE1〜Enを元のデータレコードD1〜Dn
に復元する方法の実施例について説明する。
【0121】図12を参照すると、本発明の別の実施例
にかかるデータレコード伸張方法を実施するデータ伸張
装置6’の一例は、データファイル3中のデータレコー
ドE1〜Enを入力して伸張処理を施し、伸張後のデー
タレコードD1〜Dnをデータファイル2に出力するも
ので、図6のデータ伸張装置6の場合と異なり、レコー
ドフォーマット情報7は存在しない。
にかかるデータレコード伸張方法を実施するデータ伸張
装置6’の一例は、データファイル3中のデータレコー
ドE1〜Enを入力して伸張処理を施し、伸張後のデー
タレコードD1〜Dnをデータファイル2に出力するも
ので、図6のデータ伸張装置6の場合と異なり、レコー
ドフォーマット情報7は存在しない。
【0122】このように構成された本実施例のデータ伸
張装置6’は、先ず、伸張前レコード入力手段61によ
ってデータファイル3からデータレコードE1〜Enを
その並び順に1レコードずつ順に入力して水平伸張手段
62に出力する。
張装置6’は、先ず、伸張前レコード入力手段61によ
ってデータファイル3からデータレコードE1〜Enを
その並び順に1レコードずつ順に入力して水平伸張手段
62に出力する。
【0123】水平伸張手段62は、入力されたデータレ
コードに対して、その中に含まれる、連続する1バイト
を水平圧縮したことを示す制御文字(1)または連続す
る2バイトの組を水平圧縮したことを示す制御文字
(2)とその連続個数を示す数値とからなる部分を、そ
の連続する1バイトまたは2バイトをその連続個数だけ
並べたバイト列に置換したデータレコードを生成して水
平伸張後レコード格納域63に出力する。この動作は図
7と同様に行われる。
コードに対して、その中に含まれる、連続する1バイト
を水平圧縮したことを示す制御文字(1)または連続す
る2バイトの組を水平圧縮したことを示す制御文字
(2)とその連続個数を示す数値とからなる部分を、そ
の連続する1バイトまたは2バイトをその連続個数だけ
並べたバイト列に置換したデータレコードを生成して水
平伸張後レコード格納域63に出力する。この動作は図
7と同様に行われる。
【0124】次に、垂直伸張手段65’は、水平伸張後
レコード格納域63に格納されたデータレコードに対し
て、その先頭のバイトから最後のバイトまで、垂直圧縮
したことを示す制御文字(3)とその連続個数を示す数
値とからなる部分以外のバイトはそのまま伸張後レコー
ド出力手段66に出力し、垂直圧縮したことを示す制御
文字(3)とその連続個数を示す数値とからなる部分
は、直前レコード格納域64に格納されている伸張処理
済の直前のデータレコードの先頭より、制御文字(3)
が現れるまでに存在した伸張処理後のデータレコードの
バイト数+1番目のバイトから、前記数値の示す連続個
数分のバイトまでのバイト列に置換して伸張後レコード
出力手段66に出力する。そして、今回処理して得た伸
張後のデータレコードを次のデータレコードの伸張処理
に備えて直前レコード格納域64に格納する。次に、伸
張後レコード出力手段66が垂直伸張手段65’で生成
されたデータレコードをデータファイル2に出力する。
レコード格納域63に格納されたデータレコードに対し
て、その先頭のバイトから最後のバイトまで、垂直圧縮
したことを示す制御文字(3)とその連続個数を示す数
値とからなる部分以外のバイトはそのまま伸張後レコー
ド出力手段66に出力し、垂直圧縮したことを示す制御
文字(3)とその連続個数を示す数値とからなる部分
は、直前レコード格納域64に格納されている伸張処理
済の直前のデータレコードの先頭より、制御文字(3)
が現れるまでに存在した伸張処理後のデータレコードの
バイト数+1番目のバイトから、前記数値の示す連続個
数分のバイトまでのバイト列に置換して伸張後レコード
出力手段66に出力する。そして、今回処理して得た伸
張後のデータレコードを次のデータレコードの伸張処理
に備えて直前レコード格納域64に格納する。次に、伸
張後レコード出力手段66が垂直伸張手段65’で生成
されたデータレコードをデータファイル2に出力する。
【0125】これでデータファイル3中の1つのデータ
レコードの伸張処理が終了したことになり、制御が伸張
前レコード入力手段61に戻されて、残りのデータレコ
ードに対して上述と同様な処理が繰り返される。
レコードの伸張処理が終了したことになり、制御が伸張
前レコード入力手段61に戻されて、残りのデータレコ
ードに対して上述と同様な処理が繰り返される。
【0126】次に図12の垂直伸張手段65’の処理例
について、図13のフローチャートを参照して説明す
る。
について、図13のフローチャートを参照して説明す
る。
【0127】垂直伸張手段65’は、水平伸張後レコー
ド格納域63に1つのデータレコードが格納される毎に
図13に示す処理を実行する。先ず、今回格納されたデ
ータレコードの先頭から何番目のバイトに注目するかを
示す変数i、および伸張済の直前データレコードの先頭
から何番目のバイトに注目するかを示す変数Tをそれぞ
れ0に初期化する(S151)。次に変数iを+1して
(S152)、データレコードの先頭から変数iが示す
i番目のバイトの内容Biを読み取る(S153)。そ
して、Biが読み取れた場合(S154でNO)、その
内容が制御文字(3)か、それ以外かを判別する(S1
55)。
ド格納域63に1つのデータレコードが格納される毎に
図13に示す処理を実行する。先ず、今回格納されたデ
ータレコードの先頭から何番目のバイトに注目するかを
示す変数i、および伸張済の直前データレコードの先頭
から何番目のバイトに注目するかを示す変数Tをそれぞ
れ0に初期化する(S151)。次に変数iを+1して
(S152)、データレコードの先頭から変数iが示す
i番目のバイトの内容Biを読み取る(S153)。そ
して、Biが読み取れた場合(S154でNO)、その
内容が制御文字(3)か、それ以外かを判別する(S1
55)。
【0128】制御文字(3)以外であった場合、その内
容を伸張後レコード出力手段66に出力し(S15
6)、変数Tを+1する(S157)。そして、ステッ
プS152に戻って上述した処理を繰り返す。
容を伸張後レコード出力手段66に出力し(S15
6)、変数Tを+1する(S157)。そして、ステッ
プS152に戻って上述した処理を繰り返す。
【0129】他方、読み取ったバイトの内容が制御文字
(3)であった場合(S155でYES)、変数iを+
1して更に次のバイトの内容(即ち、重複バイト数)を
Biとして読み取り(S158,S159)、直前レコ
ード格納域64に格納されている直前データレコードに
おける先頭からT+1番目のバイトO(T+1)よりT
+Bi番目のバイトO(T+Bi)までのバイト列を読
み取って、それらを伸張後レコード出力手段66に出力
する(S160,S161)。そして、変数Tをステッ
プS159で読み取ったBiが示す重複バイト数だけイ
ンクリメントし(S162)、ステップS152に戻
る。
(3)であった場合(S155でYES)、変数iを+
1して更に次のバイトの内容(即ち、重複バイト数)を
Biとして読み取り(S158,S159)、直前レコ
ード格納域64に格納されている直前データレコードに
おける先頭からT+1番目のバイトO(T+1)よりT
+Bi番目のバイトO(T+Bi)までのバイト列を読
み取って、それらを伸張後レコード出力手段66に出力
する(S160,S161)。そして、変数Tをステッ
プS159で読み取ったBiが示す重複バイト数だけイ
ンクリメントし(S162)、ステップS152に戻
る。
【0130】そして、ステップS154で読み取られた
Biがない、即ちデータレコードの最終バイトまで処理
し終えたことを判別すると、今回のデータレコードに対
する垂直伸張処理を終了する。
Biがない、即ちデータレコードの最終バイトまで処理
し終えたことを判別すると、今回のデータレコードに対
する垂直伸張処理を終了する。
【0131】
【発明の効果】以上説明したように本発明によれば以下
のような効果を得ることができる。
のような効果を得ることができる。
【0132】データファイル中の連続するデータレコー
ド間の同一箇所に同一の文字列または同一のバイト列が
存在する場合に、辞書の作成等の特別な作業無しに効率
良くデータレコードを圧縮することができる。よって、
一般ビジネスシステムにおける特に分類済のデータファ
イルの伝送または保存記録時のデータ圧縮に顕著な効果
を奏する。
ド間の同一箇所に同一の文字列または同一のバイト列が
存在する場合に、辞書の作成等の特別な作業無しに効率
良くデータレコードを圧縮することができる。よって、
一般ビジネスシステムにおける特に分類済のデータファ
イルの伝送または保存記録時のデータ圧縮に顕著な効果
を奏する。
【0133】垂直圧縮によって生成された圧縮レコード
に対して更に、その圧縮レコード中の予め定められた文
字数またはバイト数にわたって同一文字またはバイトが
連続している部分を水平圧縮したことにより、より一層
圧縮効果を高めることができる。
に対して更に、その圧縮レコード中の予め定められた文
字数またはバイト数にわたって同一文字またはバイトが
連続している部分を水平圧縮したことにより、より一層
圧縮効果を高めることができる。
【0134】水平圧縮したことを示す制御文字として、
連続した1バイト系文字または1バイトを水平圧縮した
ことを示す1バイトの制御文字と、連続した2バイト系
文字または2バイトを水平圧縮したことを示す1バイト
の制御文字とを使用し、且つ、垂直圧縮したことを示す
制御文字として1バイトの制御文字を使用することによ
り、データレコード中に数字等の1バイト系文字と漢字
等の2バイト系文字とが混在していても、垂直圧縮,水
平圧縮による圧縮が可能である。
連続した1バイト系文字または1バイトを水平圧縮した
ことを示す1バイトの制御文字と、連続した2バイト系
文字または2バイトを水平圧縮したことを示す1バイト
の制御文字とを使用し、且つ、垂直圧縮したことを示す
制御文字として1バイトの制御文字を使用することによ
り、データレコード中に数字等の1バイト系文字と漢字
等の2バイト系文字とが混在していても、垂直圧縮,水
平圧縮による圧縮が可能である。
【0135】垂直圧縮に際する直前データレコードとの
比較をバイト単位で行う構成、および、水平圧縮時にお
ける連続する部分の認識をバイト単位で行う構成によれ
ば、文字を意識せずに処理を進めることができる。
比較をバイト単位で行う構成、および、水平圧縮時にお
ける連続する部分の認識をバイト単位で行う構成によれ
ば、文字を意識せずに処理を進めることができる。
【図1】本発明のデータレコード圧縮方法を実施するデ
ータ圧縮装置の構成例を示すブロック図である。
ータ圧縮装置の構成例を示すブロック図である。
【図2】水平圧縮箇所に挿入される内容および垂直圧縮
箇所に挿入される内容の例を示す図である。
箇所に挿入される内容の例を示す図である。
【図3】圧縮前のデータレコードと圧縮後のデータレコ
ードの一例を示す図である。
ードの一例を示す図である。
【図4】垂直圧縮手段の処理例を示すフローチャートで
ある。
ある。
【図5】水平圧縮手段の処理例を示すフローチャートで
ある。
ある。
【図6】本発明のデータレコード伸張方法を実施するデ
ータ伸張装置の構成例を示すブロック図である。
ータ伸張装置の構成例を示すブロック図である。
【図7】水平伸張手段の処理例を示すフローチャートで
ある。
ある。
【図8】垂直伸張手段の処理例を示すフローチャートで
ある。
ある。
【図9】本発明のデータレコード圧縮方法を実施するデ
ータ圧縮装置の別の構成例を示すブロック図である。
ータ圧縮装置の別の構成例を示すブロック図である。
【図10】垂直圧縮手段の処理例を示すフローチャート
である。
である。
【図11】水平圧縮手段の処理例を示す状態遷移図であ
る。
る。
【図12】本発明のデータレコード伸張方法を実施する
データ伸張装置の別の構成例を示すブロック図である。
データ伸張装置の別の構成例を示すブロック図である。
【図13】垂直伸張手段の処理例を示すフローチャート
である。
である。
1,1’…データ圧縮装置 11…圧縮前レコード入力手段 12…直前レコード格納域 13,13’…垂直圧縮手段 14…垂直圧縮後レコード格納域 15,15’…水平圧縮手段 16…圧縮後レコード出力手段 2,3…データファイル 5,7…レコードフォーマット情報 6,6’…データ伸張装置 61…伸張前レコード入力手段 62…水平伸張手段 63…水平伸張後レコード格納域 64…直前レコード格納域 65,65’…垂直伸張手段 66…伸張後レコード出力手段
Claims (3)
- 【請求項1】 データファイルからデータレコードを1
レコードずつ順に入力して、その先頭の文字またはバイ
トから最終の文字またはバイトまで、直前に入力したデ
ータレコードの同一箇所の文字またはバイトと比較し、
予め定められた文字数またはバイト数にわたって連続し
て直前のデータレコードと同一の文字または同一のバイ
トが現れた部分を、垂直圧縮したことを示す1バイトの
第1の制御文字とその連続個数を示す1バイトの数値と
に置換した圧縮レコードを生成する垂直圧縮段階、 前記生成された圧縮レコードに対して更に、その圧縮レ
コード中の予め定められた文字数またはバイト数にわた
って同一の1バイト系文字及び2バイト系文字または同
一の1バイト及び2バイトが連続している部分を、連続
した1バイト系文字または1バイトについては、連続し
た1バイト系文字または1バイトを水平圧縮したことを
示す1バイトの第2の制御文字とその連続した1バイト
系文字または1バイトとその連続個数を示す1バイトの
数値とに置換し、連続した2バイト系文字または2バイ
トについては、連続した2バイト系文字または2バイト
を水平圧縮したことを示す1バイトの第3の制御文字と
その連続した2バイト系文字または2バイトとその連続
個数を示す1バイトの数値とに置換し、その圧縮レコー
ド中の予め定められた文字数またはバイト数にわたって
同一の1バイト系文字及び2バイト系文字または同一の
1バイト及び2バイトが連続している部分以外は何らの
制御文字を付加せずにそのまま出力する水平圧縮段階を
有する ことを特徴とするデータレコード圧縮方法。 - 【請求項2】 前記垂直圧縮段階に先立ち、前記データ
ファイル中のデータレコード群を所定のフィールドでソ
ートする段階を有することを特徴とする請求項1記載の
データレコード圧縮方法。 - 【請求項3】 データファイルからデータレコードを1
レコードずつ順に入力して、その先頭の文字またはバイ
トから最後の文字またはバイトまで、垂直圧縮したこと
を示す第1の制御文字とその連続個数を示す数値とから
なる部分以外の文字またはバイトはそのまま出力し、垂
直圧縮したことを示す第1の制御文字とその連続個数を
示す数値とからなる部分は、伸張処理済の直前のデータ
レコー ドの先頭より、前記第1の制御文字が現れるまで
に存在した伸張処理後のデータレコードの文字数+1番
目の文字またはバイト数+1番目のバイトから、前記数
値の示す連続個数分の文字までの文字列またはバイトま
でのバイト列に置換した伸張レコードを生成する垂直伸
張段階、 前記伸張レコードに対して更に、その伸張レコード中の
1バイト系文字または1バイトを水平圧縮したことを示
す第2の制御文字とその連続した1バイト系文字または
1バイトとその連続個数を示す数値とからなる部分を、
該連続する1バイト系文字または1バイトを該数値の示
す連続個数だけ並べた文字列またはバイト列に置換し、
その伸張レコード中の2バイト系文字または2バイトを
水平圧縮したことを示す第3の制御文字とその連続した
2バイト系文字または2バイトとその連続個数を示す数
値とからなる部分を、該連続する2バイト系文字または
2バイトを該数値の示す連続個数だけ並べた文字列また
はバイト列に置換する水平伸張段階を有することを特徴
とするデータレコード伸張方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6055124A JP2746103B2 (ja) | 1994-02-28 | 1994-02-28 | データレコード圧縮方法およびデータレコード伸張方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6055124A JP2746103B2 (ja) | 1994-02-28 | 1994-02-28 | データレコード圧縮方法およびデータレコード伸張方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07239771A JPH07239771A (ja) | 1995-09-12 |
JP2746103B2 true JP2746103B2 (ja) | 1998-04-28 |
Family
ID=12990019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6055124A Expired - Fee Related JP2746103B2 (ja) | 1994-02-28 | 1994-02-28 | データレコード圧縮方法およびデータレコード伸張方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2746103B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6226411B1 (en) | 1997-01-31 | 2001-05-01 | Fujitsu Limited | Method for data compression and restoration |
US9336225B2 (en) * | 2011-02-24 | 2016-05-10 | A9.Com, Inc. | Encoding of variable-length data with unary formats |
CN109802683B (zh) * | 2018-12-20 | 2023-04-14 | 深圳科安达电子科技股份有限公司 | 一种基于参数识别的轨道电路监测数据压缩方法和处理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03164951A (ja) * | 1989-11-24 | 1991-07-16 | Nec Software Ltd | ファイルのデータ保管装置 |
-
1994
- 1994-02-28 JP JP6055124A patent/JP2746103B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07239771A (ja) | 1995-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3540109B2 (ja) | データ圧縮方法及び装置 | |
US6215906B1 (en) | Data compression and restoration system for encoding an input character on the basis of a conditional appearance rate obtained in relation to an immediately preceding character string | |
US5254990A (en) | Method and apparatus for compression and decompression of data | |
RU2159989C2 (ru) | Способ и устройство сжатия данных с использованием ассоциативной памяти | |
JP2001357048A (ja) | ブロックソート圧縮データの検索方法、および検索に適したブロックソート圧縮法の符号化方法 | |
US5353024A (en) | Method for data compression having an improved encoding algorithm which utilizes a token stacking technique | |
JP2002353818A (ja) | データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体 | |
JPS62212849A (ja) | デ−タフアイルシステム | |
JP2746103B2 (ja) | データレコード圧縮方法およびデータレコード伸張方法 | |
JPH05241777A (ja) | データ圧縮方式 | |
JPH03247167A (ja) | データ圧縮方式 | |
JPH11203457A (ja) | データ圧縮方法及び圧縮プログラムを記録した機械読み取り可能な記録媒体 | |
EP0871295B1 (en) | Method and apparatus for compression and decompression of data | |
JPH06290021A (ja) | ソースプログラム圧縮方法 | |
JP3210183B2 (ja) | データ圧縮方法及び装置 | |
JP3224917B2 (ja) | 名標辞書作成装置 | |
JPH06162096A (ja) | レコード検索方法 | |
JP2959497B2 (ja) | データ処理装置及びデータ処理方法 | |
JPH05181913A (ja) | 昇順整数列データの圧縮および復号システム | |
JPH11232149A (ja) | ファイル比較処理方法,装置およびファイルの比較処理プログラムを記憶した媒体 | |
JP3015483B2 (ja) | データ圧縮及び復元方式 | |
JPH07336696A (ja) | 2次元画像データの圧縮方式および伸長方式 | |
JP4036514B2 (ja) | データ圧縮方法とデータ復元方法およびソートマージ処理装置とソートマージ処理方法およびこれら方法のプログラムを記録した媒体 | |
JPH04156111A (ja) | データ圧縮方法 | |
JP2858552B2 (ja) | テーブル検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |