ASTERIA WarpでFileGetとFilePutを使って、固定長のレコードをファイルから取得・ファイルに出力する

今回使用するフローと読み込ませるファイル

FileGetで読み込んだレコードをFilePutでそのまま出力するフローを使用します。ファイルの入出力結果を確認するので、フローは簡素な構成です。

読み込ませるファイルは以下の内容になります。

  • ファイル名:FixedRengthRensyu.txt
  • ファイルの中身:10abcd  20ef  ??30ijkl!!

※10abcd(半角スペース2つ)20ef(半角スペース2つ)??30ijkl!!の合計24文字です。

FileGetを使って固定長のレコードを取得する

FileGetのプロパティを下図のように設定します。

基本タブのプロパティ(上側のプロパティ)

  • ファイルパス:FixedRengthRensyu.txt
    取得するファイルのアドレスを入力します。(今回はファイルを置いてある場所の関係でファイル名のみとなります。)
  • 他の設定はデフォルトのままです。

ストリームタブのプロパティ(下側のプロパティ)

  • ストリーム型:FixedLength
    固定長のレコードを扱うのでFixedLengthに設定します。
  • 読込み開始行:1
    今回読み込むデータは1行24文字のため、読込み開始行は1に設定します。
  • フィールド数:3
    1レコードのフィールド数を設定します。各フィールドの開始位置などは、後ほど設定します。
  • 出力エンコーディング:utf-8
    文字コードを合わせます。
  • レコード区切り:レコード長
  • レコード長:8
    1レコード8文字で区切るように設定します。
  • 他の設定はデフォルトのままです。

各フィールドの設定(画像最下部)

  • データ型:String
    計算などは行わないため、Stringで問題ありません。
  • 開始位置:最初の文字は0で指定されます。(1ではありません)
  • 長さ:2ならそのフィールドの長さは2文字になります。
  • 小数点位置:データ型がZonedDecimalまたはPackedDecimalでのみ、小数点位置を指定します。それ以外のデータ型では未使用です。
    (今回は関係なしです)

※プロパティやデータ型で出てきたゾーン10進数とパック10進数とは

  • ゾーン10進数:8ビット(1バイト)で数値の1桁を表す手法です。
  • パック10進数:4ビットで数値の1桁を表す手法です。

両方の手法で数値は4ビットの2進数で0から9は、0000から1001と表現されます。

ゾーン10進数・パック10進数ともに最下位バイトに符号部があり、そこで数値の正負を記録しています。
プロパティの符号書式にあるC、Dとは16進数の12、13(2進数で1100、1101)のことです。

FilePutを使って固定長のレコードを出力する

FilePutのプロパティを下図のように設定します。

入力したファイルと同じ内容のファイルを出力する想定なので、プロパティも出力するファイル名以外FileGet側と同じにしています。

出力されたファイルを確認する

FilePutで出力したファイルを確認します。

入力時と同じ内容のファイルが出力されていることが確認できました。