第2回:転送形式とコード変換

OrangeLab. 運営チーム
作成日時: - 更新日時:
Avatar
異なるOS間の転送で障壁となりやすい、「転送形式」と「コード変換」。
設定によってどのような違いが出るのかご紹介します。

はじめに

こんにちは、HULFT Orange Lab.運営チームの平野です。
前回は基本機能ということで、構成やファイル転送に必要な管理情報についてご紹介しました。
今回からは、各管理機能で定義できる様々な転送定義をご紹介していきたいと思います。

第2回では、ファイルの「転送形式」と「コード変換」について、実際の画面を交えつつご紹介します。

ファイル転送の形式

HULFTでは、転送するファイルの種類を選ぶことができます。
FTPでは、「テキスト」と「バイナリ」を選択できますが、HULFTではそれに加えて「フォーマット」、「マルチフォーマット」の4種類から選択できます。「フォーマット」、「マルチフォーマット」は、主にレガシー系で使われている固定長などのファイル形式です。

「転送タイプ」は配信管理情報で設定します。


「フォーマット」、「マルチフォーマット」を選択する場合は、項目ごとにデータのタイプを設定おく必要があります。
開始位置とバイト数で項目を区切り、「項目タイプ」から該当するデータのタイプを選択します。
  • 項目名 : 項目の名称
  • 開始位置 : 項目の開始位置(レコードの先頭から何バイト目か)
  • バイト数 : 項目のバイト数
  • 小数部桁数 : 項目の小数点以下桁数
  • 項目タイプ : 項目のデータタイプ
上記のフォーマット情報に合わせたファイルの中身は以下のようになります。

コード変換

何故、HULFTでは転送タイプを4種類から選択できるのでしょうか?
異なる機種間でファイル転送を行う場合に、文字コードを変換する必要があるからです。

「バイナリ」転送以外の「テキスト」、「フォーマット」、「マルチフォーマット」を選択すると、HULFT上で文字コードを変換します。「バイナリ」転送は文字コード変換を行わないため、同じ文字コード同士のファイル転送で使用します。

先ほど、設定方法をご紹介した「フォーマット」、「マルチフォーマット」では、定義された項目タイプごとにコード変換を行います。

コード変換の種類

HULFTにはコード変換が「1バイトコード変換」、「マルチバイトコード変換」、「数値変換」の3種類あります。
「1バイトコード変換」、「マルチバイトコード変換」は機種間の変換で、「数値変換」はデータ間の変換です。

「1バイトコード変換」は、EBCDICとASCIIコードと呼ばれる1バイトコードの変換です。
「マルチバイトコード変換」は、JEFやIBM漢字などのメインフレームのコード、SJIS・UTF-8などのオープン系のコード変換です。



「数値変換」は、サイン付内部10進数やサイン付外部10進数など、いわゆるパックゾーン変換等があります。



コード変換の注意点
コード変換の種類についてご紹介しましたが、「1バイトコードから2バイトコードに変換したい」と思った方もいるのではないでしょうか?
例えば、「a」という1バイト文字を「あ」というコードに変換する場合ですが、これはコードではなくデータを変換するという認識となります。そのため、別途プログラムやロジックを用意して変換を行う必要があります。

コード変換の方法

コード変換の方法には、「配信側変換」、「集信側変換」、「無変換」の3種類があります。
「配信側変換」、「集信側変換」は、CPUの負荷やデータサイズなどによりどちらがより効率がいいかを考えて選びます。

集信側ホストがメインフレームの場合などCPUリソースに制限がある場合は、配信側でコード変換をさせた方が負荷がかかりません。



Shift-JISからUTF-8に変換する場合などはデータサイズが大きくなるため、転送するデータ量が大きくなります。
このような場合は、ファイル転送後に集信側でコード変換をさせるのも有効です。



最後が「無変換」です。
「無変換」といっても、何もコード変換をしていない訳ではありません。バイナリ転送と違い「改行コード」のみ変換を行っています。
改行コードのみ集信側ホストに合わせて変換し、データ処理は別途行う場合などに使用します。

先ほど、コード変換の注意としてご紹介した1バイト⇔2バイト変換などの特殊な運用ケースで使用されます。

まとめ

今回は、転送タイプとコード変換についてご紹介しました。
コード変換は内部の細かい話にはなってしまいますが、HULFTのマルチプラットフォームを使いこなす上では避けられない要素です。

次回は、転送ファイルの圧縮形式についてご紹介します。
この記事は役に立ちましたか?
3人中3人がこの記事が役に立ったと言っています

コメント