特許第5674974号(P5674974)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社エクサの特許一覧

特許5674974圧縮データ処理プログラム、圧縮データ編集プログラム
<>
  • 特許5674974-圧縮データ処理プログラム、圧縮データ編集プログラム 図000002
  • 特許5674974-圧縮データ処理プログラム、圧縮データ編集プログラム 図000003
  • 特許5674974-圧縮データ処理プログラム、圧縮データ編集プログラム 図000004
  • 特許5674974-圧縮データ処理プログラム、圧縮データ編集プログラム 図000005
  • 特許5674974-圧縮データ処理プログラム、圧縮データ編集プログラム 図000006
  • 特許5674974-圧縮データ処理プログラム、圧縮データ編集プログラム 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5674974
(24)【登録日】2015年1月9日
(45)【発行日】2015年2月25日
(54)【発明の名称】圧縮データ処理プログラム、圧縮データ編集プログラム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20150205BHJP
【FI】
   G06F12/00 511A
【請求項の数】9
【全頁数】12
(21)【出願番号】特願2014-100197(P2014-100197)
(22)【出願日】2014年5月14日
(65)【公開番号】特開2015-35207(P2015-35207A)
(43)【公開日】2015年2月19日
【審査請求日】2014年5月14日
(31)【優先権主張番号】特願2013-142947(P2013-142947)
(32)【優先日】2013年7月8日
(33)【優先権主張国】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】591057256
【氏名又は名称】株式会社エクサ
(74)【代理人】
【識別番号】100091096
【弁理士】
【氏名又は名称】平木 祐輔
(74)【代理人】
【識別番号】100102576
【弁理士】
【氏名又は名称】渡辺 敏章
(74)【代理人】
【識別番号】100153903
【弁理士】
【氏名又は名称】吉川 明
(72)【発明者】
【氏名】阿部 俊雄
(72)【発明者】
【氏名】平澤 春樹
【審査官】 池田 聡史
(56)【参考文献】
【文献】 特開2007−286672(JP,A)
【文献】 特開平08−314957(JP,A)
【文献】 特表2010−522915(JP,A)
【文献】 特開2005−216251(JP,A)
【文献】 特表2001−511923(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
JSTPlus(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
メインフレームにおいて圧縮された、索引を必要としないレコードシーケンシャルアクセス形式で記述されたレコードファイルを読み書きする処理をメインフレーム以外のコンピュータに実行させる圧縮データ処理プログラムであって、
前記レコードファイルは、
前記メインフレームが保持するレコード単位で記述されており、
各レコードにおいて、先行レコードと同じバイト列によって記述されている部分についてはその先行レコードのバイト列を指し示す代替符号に置き換えることによって圧縮されており、
同一レコード内において同じバイトが連続する部分についてはその繰り返し個数を示す繰返符号に置き換えることによって圧縮されており、
前記圧縮データ処理プログラムは、前記コンピュータに、
前記レコードファイルのレコード長またはレコード区切りを指定するパラメータ指定ステップ、
指定された前記レコード長またはレコード区切りにしたがって前記レコードファイルをレコード単位で読み込んで前記コンピュータ上のメモリに格納するレコード読込ステップ、
前記レコード読込ステップにおいて読み込んだ前記レコードのうち、前記代替符号によって記述されている部分については、その代替符号が指し示している先行レコードのバイト列が記述されているものとみなして読み込んだ前記レコードを置き換えて前記メモリに格納する代替符号処理ステップ、
前記レコード読込ステップにおいて読み込んだ前記レコードのうち、前記繰返符号によって記述されている部分については、その繰返符号が示している個数だけ同じバイトが連続しているものとみなして読み込んだ前記レコードを置き換えて前記メモリに格納する繰返符号処理ステップ、
前記レコード読込ステップにおいて読み込んだ前記レコードを更新すべき旨の指示を前記コンピュータが受け取った場合は、前記メモリ上に格納されている前記レコードを更新した上で、前記代替符号または前記繰返符号の少なくともいずれかを用いて更新後のレコードを前記メモリ上で圧縮するレコード更新ステップ、
前記メモリ上において更新された前記レコードを前記レコードファイルに対してレコード単位で書き込むレコード書込ステップ、
を実行させることを特徴とする圧縮データ処理プログラム。
【請求項2】
前記パラメータ指定ステップにおいて、前記コンピュータに、
前記レコードを、前記代替符号、前記繰返符号、または前記代替符号と前記繰返符号をともに用いて前記レコードファイルを処理するか否かを指定するステップを実行させ、
前記代替符号処理ステップおよび前記繰返符号処理ステップにおいて、前記コンピュータに、
前記パラメータ指定ステップにおける指定にしたがって、前記レコード読込ステップにおいて読み込んだ前記レコードを、前記代替符号、前記繰返符号、または前記代替符号と前記繰返符号をともに用いて置き換え、または前記レコードを置き換えずに前記メモリに格納させ、
前記レコード更新ステップにおいて、前記コンピュータに、
前記パラメータ指定ステップにおける指定にしたがって、前記レコード読込ステップにおいて読み込んだ前記レコードを、前記代替符号、前記繰返符号、または前記代替符号と前記繰返符号をともに用いて置き換え、または前記レコードを置き換えずに前記レコードを更新させる
ことを特徴とする請求項1記載の圧縮データ処理プログラム。
【請求項3】
前記代替符号処理ステップおよび前記繰返符号処理ステップにおいて、前記コンピュータに、
前記メモリ内に格納されている前記レコードの文字コードを、前記メインフレーム上で使用される文字コードから前記コンピュータ上で使用される文字コードに変換する文字コード変換を実施させる
ことを特徴とする請求項1または2記載の圧縮データ処理プログラム。
【請求項4】
前記コンピュータに、前記レコードファイル内のフィールド区切りを指定する命令を受け取るステップを実行させ、
前記代替符号処理ステップおよび前記繰返符号処理ステップにおいて、前記コンピュータに、
前記フィールド区切りを指定する命令にしたがって、前記レコードファイル内のフィールド毎に前記文字コード変換を実施させる
ことを特徴とする請求項3記載の圧縮データ処理プログラム。
【請求項5】
前記コンピュータに、前記レコードファイル内のフィールド区切りについての指定を変更する命令を受け取るステップを実行させ、
前記代替符号処理ステップおよび前記繰返符号処理ステップにおいて、前記コンピュータに、
前記フィールド区切りについての指定を変更する命令にしたがって、フィールド区切りを変更した上で、前記レコードファイル内のフィールド毎に前記文字コード変換を実施させる
ことを特徴とする請求項4記載の圧縮データ処理プログラム。
【請求項6】
前記レコード更新ステップにおいて、前記コンピュータに、
前記レコードの文字コードを、前記メインフレーム上で使用される文字コードから前記コンピュータ上で使用される文字コードに変換した後において、文字単位で同じ文字が連続する部分については、文字コード変換後の文字単位で前記繰返符号を用いて圧縮させる
ことを特徴とする請求項3から5のいずれか1項記載の圧縮データ処理プログラム。
【請求項7】
前記レコード書込ステップにおいて、前記コンピュータに、前記レコードファイルに対して書き込むデータを暗号化させる
ことを特徴とする請求項1から6のいずれか1項記載の圧縮データ処理プログラム。
【請求項8】
請求項1から7のいずれか1項記載の圧縮データ処理プログラムを用いて前記レコードファイルを編集する処理を前記コンピュータに実行させる圧縮データ編集プログラムであって、
前記圧縮データ編集プログラムは、前記コンピュータに、
前記圧縮データ処理プログラムを用いて前記レコードファイルを読み出して前記コンピュータが備えるディスプレイ上に画面表示するステップ、
前記圧縮データ処理プログラムを用いて前記レコードファイルに対して前記レコードを書き込むステップ、
を実行させることを特徴とする圧縮データ編集プログラム。
【請求項9】
前記圧縮データ編集プログラムは、前記コンピュータに、前記レコードファイルの文字コードを、前記メインフレームが用いる文字コードから前記コンピュータが用いる文字コードに変換させる
ことを特徴とする請求項8記載の圧縮データ編集プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メインフレームにおいて圧縮されたレコードファイルをオープン環境において読み書きする技術に関する。
【背景技術】
【0002】
近年コンピュータが取り扱うデータ量は増大の一途をたどっており、データ伝送負荷などを軽減する観点から、データ圧縮技術が用いられている。データ圧縮技術を利用する場合、まずデータ送信元のコンピュータが送信しようとするデータを圧縮し、データ送信先のコンピュータが圧縮されたデータを受信して伸長する。これによりデータ伝送量を抑制することができる反面、送信元コンピュータにおけるデータ圧縮処理の負荷と送信先コンピュータにおけるデータ伸長処理の負荷が増大する。
【0003】
下記特許文献1は、データ圧縮技術に関する技術を記載している。同文献において、文字コード体系が異なるコンピュータ間で圧縮データを送受信する際に、受信側コンピュータは受信した圧縮データに対して文字コード変換を実施し、その後に圧縮データを復元している。これにより、いったん圧縮データを伸長してから文字コードを変換する場合と比較して、処理負荷を軽減することを図っている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−286672号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記特許文献1記載の技術においては、送信側コンピュータ10は圧縮データを受信側コンピュータ20に対して送信し、受信側コンピュータ20が復元した圧縮データはデータベース30にいったん格納され、その後に使用可能となる。すなわち、データベース30に格納されているデータは伸長後のデータである。したがって、データベース30が格納しているデータを改めて圧縮するためには、再度圧縮処理を実施する必要がある。
【0006】
一般にデータ圧縮処理は処理負荷が高いため、特許文献1記載の技術により文字コード変換に係る処理負荷を軽減することができたとしても、データ圧縮処理および伸長処理によってコンピュータには高い処理負荷がかかる。
【0007】
本発明は、上記のような課題に鑑みてなされたものであり、圧縮データを圧縮したままで読み書きする技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係る圧縮データ処理プログラムは、レコード単位で記述された圧縮レコードファイルのうち、先行レコードの内容を示す代替符号を用いて圧縮されている部分についてはその先行レコードによって記述されているものとみなしてレコード単位で読み込み、繰返符号を用いて圧縮されている部分についてはその繰返個数だけ同じバイト列が連続しているものとみなしてレコード単位で読み込む。レコードファイルを更新する場合は、レコード毎に更新を反映し、代替符号と繰返符号を用いてレコードを圧縮してレコードファイルに書き込む。
【発明の効果】
【0009】
本発明に係る圧縮データ処理プログラムによれば、圧縮レコードファイルをレコード単位で読み込み、圧縮部分を解釈した上で、レコード単位で再圧縮してレコードファイルに書き込むので、圧縮レコードファイル全体を伸長することなく、圧縮したままで読み書きすることができる。
【図面の簡単な説明】
【0010】
図1】実施形態1に係る圧縮データ処理プログラムを実行するコンピュータ100およびその周辺構成を示す図である。
図2】圧縮レコードファイル141のフォーマットを例示する図である。
図3】アプリケーション120をCOBOL言語によって記述した場合におけるサンプルコードの抜粋を示す図である。
図4】アプリケーション120をC言語によって記述した場合におけるサンプルコードの抜粋を示す図である。
図5】アプリケーション120内において記述することができる、圧縮レコードファイル141のフィールド定義を例示する図である。
図6】実施形態5に係るアプリケーション120の画面イメージを示す図である。
【発明を実施するための形態】
【0011】
<実施の形態1>
図1は、本発明の実施形態1に係る圧縮データ処理プログラムを実行するコンピュータ100およびその周辺構成を示す図である。コンピュータ100は、メインフレーム200が圧縮した圧縮レコードファイル141をメインフレーム200から受け取り、記憶部140に格納する。
【0012】
コンピュータ100はCPU(Central Processing Unit)110を備え、CPU110はアプリケーション120と圧縮データ処理プログラム130を実行する。これらの詳細については後述する。以下では便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのはCPU110であることを付言しておく。メモリ150は、CPU110が一時的に使用するデータを格納する記憶装置である。
【0013】
図2は、圧縮レコードファイル141のフォーマットを例示する図である。比較のため図2(a)に圧縮前のレコードファイルのフォーマットを示す。図2(b)は図2(a)に示すレコードファイルを圧縮した後のフォーマットを示す。ここでは3つのフィールドを有する固定長38バイトの7レコードを例示した。
【0014】
図2(b)1行目は圧縮レコードファイルであることを示すヘッダ部分である。図2(b)各レコードの先頭部分[LLZZ]は、各レコードが圧縮されていることを示す。以下その他の部分について説明する。
【0015】
図2(a)に示す圧縮前のレコードファイルにおいて、各レコード内のNo.フィールドは数字0およびスペース符号「 」が繰り返し用いられている。メインフレーム200は、この繰り返し部分を[繰○]で表される繰返符号に置き換えることにより、当該繰り返し部分を圧縮する。○は繰り返すバイト数を表す数値である。
【0016】
図2(b)3行目に記載している[繰6]は、その直後に記載されている数値「0」を6回繰り返すことを示している。同様に図2(b)の2行目に記載している[繰16]は、その直後に記載されているスペース「 」を16回繰り返すことを示している。
【0017】
図2(b)に示す符号[直○]は、上記繰返符号および以下に説明する代替符号によって圧縮しないユニークバイト列を表す符号である。例えば図2(b)8行目に記載している[直4]は、その直後に4バイト分の当該レコード固有のバイト列「3302」が記載されていることを示す。メインフレーム200は、各レコード固有のバイト列については同符号を用いて圧縮せずに記述する。
【0018】
図2(a)に示す圧縮前のレコードファイルにおいて、文字列「江草」「新」「郎」「技野」「19871001」「01」「20020101」「20100401」は、それぞれ直前の先行レコードと同一である。メインフレーム200は、この同一部分を[同○]で表される代替符号に置き換えることにより、当該同一部分を圧縮する。○は先行レコードと同一であるバイト数を表す数値である。
【0019】
図2(b)2行目において、[直3]によって3バイト分の文字列が指定され、その後に[繰7]によって7個のスペースが指定されている。したがって、2つ目のフィールド「Name」の前までに、10バイト分の文字列が存在することになる。
【0020】
図2(b)3行目において、[繰6]によって6個の数値「0」が指定され、さらに[直1]によって1バイト分の文字列「1」が指定されている。Nameフィールドの前までには10バイト分の文字列が存在するので、文字列「1」の後には3個のスペースが配置されることになるが、この部分のバイト列は直前の先行レコードと同じである。したがって、[同3]により、先行レコードの対応位置から開始して3バイト分は同じバイト列であることを示している。
【0021】
同様に図2(b)4行目において、文字列「花子」の後は先行レコードと同じであるため、[同18]によって当該レコードの残り18バイトが先行レコードと同じであることを示している。
【0022】
次に、コンピュータ100において圧縮レコードファイル141を読み書きする処理について説明する。アプリケーション120の開発者は、アプリケーション120内の処理において圧縮レコードファイル141を圧縮したまま読み書きする場合、アプリケーション120の内部で圧縮データ処理プログラム130を呼び出す処理を記述する。
【0023】
図3は、アプリケーション120をCOBOL言語によって記述した場合におけるサンプルコードの抜粋を示す図である。比較のため図3(a)において、圧縮データ処理プログラム130を使用しない従来のコード例を示した。図3(b)は圧縮データ処理プログラム130を使用する場合におけるコード例を示す。
【0024】
図3(b)の先頭部分において、圧縮レコードファイル141の属性を定義する。例えばレコード長、繰返符号[繰○]を使用するか否かの指定(横圧縮指定)、代替符号[同○]を使用するか否かの指定(縦圧縮指定)、レコード編成方式などを指定する。レコード編成方式としては、固定データ長(F)、可変データ長(V)、テキストデータ(T)から選択することができるが、ここでは図2で説明した固定データ長(F)を指定したものと仮定する。
【0025】
圧縮データ処理プログラム130は、COBOL言語から呼び出すことができるモジュールとして実装されている。圧縮データ処理プログラム130は、COBOL言語におけるファイルOPEN、ファイルREAD、ファイルWRITE、ファイルCLOSEそれぞれのファイル命令に対応するモジュールを提供しており、各命令に対応するモジュールを呼び出すことにより、各命令に相当する処理を圧縮データ処理プログラム130に実行させることができる。圧縮データ処理プログラム130が圧縮レコードファイル141に対してアクセスする手順は、例えばシーケンシャルアクセスでもよいしランダムアクセスでもよい。
【0026】
圧縮データ処理プログラム130は、指定されたレコード長にしたがって、圧縮レコードファイル141をレコード単位で読み込む。図2に示した例においては、図2(b)の各行に記載されているレコードを1つずつ読み込む。ただし必ずしも全レコードを一括して読み込む必要はなく、アプリケーション120内において読み込むよう指定されているレコードのみを読み込めばよい。
【0027】
アプリケーション120が、圧縮レコードファイル141内のレコードを読み込む処理を記述している場合(READ命令が記述されている場合)は、圧縮データ処理プログラム130は、圧縮レコードファイル141の各レコードを読み込み、図2において説明した規則にしたがって各レコードを解釈し、その結果をコンピュータ100が備えているメモリ150に格納する。例えば圧縮レコードファイル141内において代替符号が指定され、先行レコードを未だ読み込んでいない場合などは、必要に応じて先行レコードを読み込むようにしてもよい。アプリケーション120は、メモリ150に格納されているレコードを読み取ることにより、圧縮前のレコードを取得することができる。
【0028】
アプリケーション120が、圧縮レコードファイル141内のレコードを更新する処理を記述している場合(WRITE命令が記述されている場合)は、圧縮データ処理プログラム130は当該レコードを上記手順にしたがって読み取ったうえでメモリ150に格納し、メモリ150上でアプリケーション120からの指示にしたがって当該レコードを更新する。圧縮データ処理プログラム130は、メモリ150上で更新されたレコードを図2で説明した規則にしたがって圧縮する。圧縮データ処理プログラム130は、遅くともアプリケーション120が圧縮レコードファイル141を閉じる前(CLOSE命令を発行する前)に、メモリ150上で更新および圧縮されたレコードを圧縮レコードファイル141に対して書き込む。
【0029】
なお、アプリケーション120の先頭部分において、縦圧縮指定、横圧縮指定、またはこれら双方が指定されていない場合は、圧縮データ処理プログラム130は各指定にしたがって、代替符号、繰返符号、またはこれら双方を使用せずに圧縮レコードファイル141を読み書きする。したがってアプリケーション120および圧縮データ処理プログラム130は、図2で説明した規則にしたがって圧縮されていない通常のレコードファイルを取り扱うこともできる。
【0030】
図4は、アプリケーション120をC言語によって記述した場合におけるサンプルコードの抜粋を示す図である。アプリケーション120をC言語によって記述する場合、圧縮データ処理プログラム130はC言語の関数としてその機能を提供する。具体的には、アプリケーション120をコンパイル・リンクするときにアプリケーション120へ組み込むリンクライブラリなどの形態で、圧縮データ処理プログラム130の機能を提供することができる。
【0031】
COBOL言語、C言語いずれの場合においても、概ね同様のAPI(Application Program Interface)によって、圧縮データ処理プログラム130の機能を呼び出すことができるように構成されている。
【0032】
上記例においては圧縮レコードファイル141が固定長レコードによって構成されていることを説明したが、可変長レコードである場合は、例えば各レコードの先頭においてレコード長を示すヘッダを付与しておくとよい。これにより圧縮データ処理プログラム130は、圧縮レコードファイル141を上記と同様にレコード単位で読み書きすることができる。圧縮レコードファイル141がテキストファイルである場合は、例えば1行を1レコードとみなすことにより、可変長レコードファイルと同様に処理することができる。この場合は、改行コードをレコード区切りとして自動的に指定するようにすればよい。
【0033】
上記例においては圧縮レコードファイル141が文字列によって記述されているデータ例を説明したが、バイナリ列によって記述されている場合であっても、図2と同様の処理規則を適用することができる。ただしバイナリ列内に[同○][繰○]のような文字列が突然登場すると違和感が生じる可能性もあるので、その場合はこれら文字列による符号に代えてバイト列によって表した代替符号と繰返符号を用いることもできる。圧縮レコードファイル141が文字列によって記述されている場合においても同様である。
【0034】
<実施の形態1:まとめ>
以上のように、本実施形態1に係る圧縮データ処理プログラム130は、圧縮レコードファイル141をレコード単位で読み込み、代替符号または繰返符号によって圧縮されている部分についてはその符号にしたがって圧縮部分を解釈した上でメモリ150にその結果を格納する。アプリケーション120は、メモリ150上に格納されている伸長後のデータを読み込みまたは更新し、圧縮データ処理プログラム130は更新後のデータを圧縮レコードファイル141に対して書き込む。これによりアプリケーション120は、圧縮レコードファイル141を圧縮したままで読み書きすることができる。
【0035】
<実施の形態2>
実施形態1〜2においては、メインフレーム200が作成した圧縮レコードファイル141をコンピュータ100上で読み書きすることを説明した。メインフレーム200とコンピュータ100が同一の文字コードを用いている場合は特段の処理は必要ないが、例えばメインフレーム200がEBCDICコードを使用し、コンピュータ100がそれ以外の文字コード(例えばASCII、SJIS、EUCなど)を使用している場合、文字コードを変換する必要がある。そこで本発明の実施形態2では、メインフレーム200とコンピュータ100の間で文字コードを変換する動作例について説明する。
【0036】
本実施形態2において、圧縮データ処理プログラム130は、圧縮レコードファイル141を読み込んだ後、メインフレーム200上で使用されている文字コードをコンピュータ100上で使用されている文字コードに変換した上で、メモリ150に格納する。これにより、コンピュータ100上で更新された圧縮レコードファイル141は、コンピュータ100上で使用される文字コードを用いて記述されることになる。
【0037】
図5は、アプリケーション120内において記述することができる、圧縮レコードファイル141のフィールド定義を例示する図である。1バイト文字と2バイト文字が混在しているレコードに対して文字コード変換を実施するためには、レコード内の各フィールドの区切りを明確に定義することが望ましい。そこでアプリケーション120の開発者は、図5(a)に例示するようなフィールド定義をアプリケーション120内に記述し、圧縮データ処理プログラム130を呼び出す際にそのフィールド定義を引き渡してその定義にしたがって文字コード変換を実施させることができる。
【0038】
図5(a)の1行目は、フィールド「ID−NO」が各レコードの1バイト目から開始し、フィールド長7バイトのASCII文字列であることを示している。図5(a)の3行目は、フィールド「NAME−K」が各レコードの11バイト目から開始し、フィールド長20バイトの漢字文字列であることを示している。
【0039】
図5(b)は、同一のレコードファイル内で複数のフィールド定義を用いる場合において、所定のバイト列が見つかった時点でフィールド定義を切り替えるためのコード例を示している。同図に示すコード例を用いると、16進数のバイト列「D5774B40404040」が出現した時点において、フィールド定義を{}内のものに切り替える。すなわち以後のレコードは、各レコードの1バイト目から開始し、フィールド長250バイトのASCII文字列であるフィールド「HDR−REC」として処理される。
【0040】
<実施の形態2:まとめ>
以上のように、本実施形態2に係る圧縮データ処理プログラム130は、アプリケーション120が指定するフィールド定義にしたがって、圧縮レコードファイル141内の各レコードの各フィールドを識別し、各フィールドに対して文字コード変換を実施する。これにより、メインフレーム200とコンピュータ100が異なる文字コードを用いる場合においても、コンピュータ100のユーザが圧縮レコードファイル141内の各レコードを容易に視認することができる。
【0041】
<実施の形態3>
実施形態1〜2においては、代替符号と繰返符号を用いてレコードファイルを圧縮することを説明した。この手法は、データ圧縮においては有効であるが、各レコード固有の部分は圧縮されず元のバイト列がそのまま残っているため、例えばテキストエディタなどを用いて圧縮レコードファイル141を閲覧すると、その主要部分については閲覧できてしまう可能性がある。
【0042】
そこで圧縮データ処理プログラム130は、メモリ150上に格納している各レコードを圧縮レコードファイル141に対して書き込む際に、各レコードを適当な暗号化手法によって暗号化することもできる。これにより圧縮されていない部分も容易に閲覧することはできなくなるので、セキュリティの観点から望ましい。
【0043】
さらに、図2で説明した例においては先行レコードと同一の部分および繰り返し部分をそれぞれ代替符号と繰返符号によって置き換えることにより圧縮することを説明した。しかし、多バイト文字コードを用いて記述された同じ文字が連続している場合は、1バイト単位で連続性を判定すると、同じ文字として認識されない場合がある。例えばSJISコードにおける2バイトスペース文字は文字コード「0x8140」で表されるが、仮にこの2バイトスペース文字が複数連続していたとしても、1バイト単位で文字の連続性を判定すると、同じ文字の繰り返しとみなされない。
【0044】
そこで圧縮データ処理プログラム130は、多バイト文字コードを用いて記述されている部分については、文字単位で連続性を判定し、連続している部分については実施形態1で説明した繰返符号を用いて圧縮する。これにより、1バイト単位で連続性を判定すると連続しているとみなされない文字列についても、実施形態1と同様の規則にしたがって圧縮することができる。
【0045】
上記多バイト文字列の圧縮手順は、文字コードを変換することによってバイト単位の連続性が消失する場合において特に有効である。例えばメインフレーム200においてよく用いられているEBCDICコードにおいては、2バイトスペース文字は文字コード「0x4040」「0xA1A1」などを用いて表されることが多いため、1バイト単位で連続性を判定しても連続文字列としてみなされる。しかしこれを文字コード変換してSJISコードに置き換えると上述のように「0x8140」となり、1バイト単位で連続性を判定すると連続文字列とはみなされない。このような場合には、上記多バイト文字列の圧縮手順が有用である。
【0046】
<実施の形態4>
実施形態1〜3においては、メインフレーム200が圧縮した圧縮レコードファイル141をコンピュータ100上で読み書きすることを説明した。これは特に、コンピュータ100がメインフレーム以外のコンピュータ(例えばWindows(登録商標)コンピュータなどのオープン環境)である場合において有効である。
【0047】
すなわち、オープン環境においてはメインフレーム上のレコードファイルを効率よく処理するアプリケーションが提供されていない場合があるので、本発明に係る圧縮データ処理プログラム130を用いてこれを処理することにより、オープン環境においてもメインフレーム環境と同様に効率よくこれらレコードファイルを処理することができる。例えば実施形態3で説明したように、メインフレーム200上では特段意識しなくとも圧縮される文字列がオープン環境上では圧縮されない場合があるので、このようなレコードファイルを効率よく処理することができる。
【0048】
<実施の形態5>
図6は、本発明の実施形態5に係るアプリケーション120の画面イメージを示す図である。本実施形態5において、アプリケーション120は、圧縮レコードファイル141を画面表示し、または画面上で編集して更新後の内容を圧縮レコードファイル141へ反映する、編集アプリケーションとして構成されている。アプリケーション120は、コンピュータ100が備えるディスプレイ上に図6のような編集画面を表示し、ユーザは同画面を用いて圧縮レコードファイル141を編集する。
【0049】
アプリケーション120は、実施形態1〜4で説明したように内部的に圧縮データ処理プログラム130を用いるので、圧縮レコードファイル141を圧縮したままで読み書きすることができる。また、圧縮レコードファイル141を単なるバイナリデータとしてではなくレコード単位に記述されたデータファイルとして編集することができる。
【0050】
圧縮レコードファイル141は、メインフレーム200が作成したデータファイルであるため、メインフレーム200が使用する文字コードを用いて記述されているのが通常である。そこでアプリケーション120は、圧縮レコードファイル141の文字コードを、コンピュータ100のOS(オペレーティングシステム)が使用する文字コードに変換した上で、画面上に表示してもよい。圧縮レコードファイル141を更新する場合は、メインフレーム200が使用する文字コードを用いて全体を上書きしてもよいし、コンピュータ100のOSが使用する文字コードを用いて全体を上書きしてもよい。同様の処理をアプリケーション120に代えて圧縮データ処理プログラム130が実施してもよい。
【0051】
以上の実施形態1〜5において、アプリケーション120と圧縮データ処理プログラム130は、一体的に構成することもできるし、これらを別モジュールとして構成した上でアプリケーション120から圧縮データ処理プログラム130を呼び出すように構成してもよい。前者の場合は、例えば圧縮データ処理プログラム130を静的リンクライブラリとして構成することができる。後者の場合は、例えば圧縮データ処理プログラム130を動的リンクライブラリとして構成することができる。
【符号の説明】
【0052】
100:コンピュータ、110:CPU、120:アプリケーション、130:圧縮データ処理プログラム、140:記憶部、141:圧縮レコードファイル、200:メインフレーム。
図1
図2
図3
図4
図5
図6