FixedLength

FixedLengthストリームは、固定長データを扱うためのストリームです。FixedLengtストリームのみEBCDICエンコーディングを扱うことができます。

ストリームプロパティ

プロパティ名
読込み開始行 データのうちレコードとして処理する先頭行数を指定します。例えば、データの1行目が不要の固定長データの場合、2を指定すると1行目を飛ばして2行目からをストリームとして出力します。初期値は1です。
フィールド数 レコードのフィールド数を指定します。指定すると、フィールド定義で指定した数分のフィールドが用意されます。フィールド名には「field数字」のようにfieldに1からの数字を付加した名前で定義されます。初期値は3です。
出力エンコーディング ストリームのエンコーディングを指定します。
ホスト系のデータを扱うためのエンコーディングを、フローサービス固有のエンコーディング名を使って指定することができます。指定するには、フローサービス固有のエンコーディング名を直接入力します。詳しくは、下記「フローサービス固有のエンコーディング名」を参照してください。
utf-8 unicode utf-8
shift_jis シフトJIS
euc-jp EUC-JP
iso-2022-jp ISO-2022-JP
Windows-31J Windows-31J
ebcdic ebcdic
レコード区切り レコードの区切りを指定します。以下の区切りが指定できます。区切りを選択すると、プロパティの表示が切り替わります。
改行 改行コードプロパティで指定した改行で区切ります。
レコード長 レコード長プロパティで指定した長さで区切ります。
改行コード レコード区切りプロパティが「改行」の場合、レコードの区切りとなる改行コードを指定します。
※外部からストリームを読み込む場合は、必ずしも改行コードが指定した改行コードである必要はありません。また、読み込み時にはCR+LFの改行コードには対応していません。
プラットフォーム プラットフォーム標準の改行コードに変換します。
CR+LF CR+LFに変換します。
CR CRに変換します。
LF LFに変換します。
レコード長 レコード区切りプロパティが「レコード長」の場合、レコードの区切りとなる長さを指定します。初期値は256です。
パック10進の符号の有無 パック10進の符号の有無を指定します。
入力時必須、出力時常に出力 符号ニブルは入力時に必須、出力時には常に出力します。
入力時省略可、出力時常に出力 符号ニブルは入力時に省略可能、出力時には常に出力します。
入力時省略可、出力時正の場合出力しない 符号ニブルは入力時に省略可能、出力時には正の場合出力しません。
パック10進の符号書式 パック10進の符号の書式を指定します。
C(正),D(負) 入出力とも正符号は16進数でC、負符号はDです。
A,C,E,F(正),B,D(負) 入力時は正符号はA,C,E,F、負符号はB,Dを許容、出力時は正符号はF、負符号はDです。
ゾーン10進の符号の有無 ゾーン10進の符号の有無を指定します。
入力時必須、出力時常に出力 符号ニブルは入力時に必須、出力時には常に出力します。
入力時省略可、出力時常に出力 符号ニブルは入力時に省略可能、出力時には常に出力します。
入力時省略可、出力時正の場合出力しない 符号ニブルは入力時に省略可能、出力時には正の場合出力しません。
ゾーン10進の符号書式 ゾーン10進の符号の書式を指定します。入出力とも同じ動作をします。 出力エンコーディングプロパティに「ebcdic」以外が指定された場合にのみ有効です。
C(正),D(負) 符号を表す最終桁のゾーン部が正符号は16進数でC、負符号は16進数でDです。例えば、-105は「31 30 D5」となります。
EBCDIC互換 EBCDICで文字列表現したものをそのままASCII文字として変換したものです。例えば、-105の場合、EBCDICでは「F1 F0 D5」となり文字列表現は"10N"になりますので、ASCIIで"10N"を表す「31 30 4E」となります。
省メモリモード ファイルを読み込む時に即時に解析するかどうかを指定します。
固定長ファイルに含まれる合計フィールド数が非常に多くなる場合、ファイル読み込み時に即時に解析すると大量のメモリが必要になることがあります。そのような場合に「はい」を選択するとメモリ使用量が抑えられます。
いいえ 固定長ファイル読み込み時に即座に解析します。ファイルに含まれる合計フィールド数が非常に多い場合、大量のメモリを使用することがあります。
はい 固定長ファイル読み込み時にファイルの解析を行いません。ファイルに含まれる合計フィールド数が非常に多い場合でも、メモリ使用量が抑制されます。

フィールド定義

フィールド名、データ型、開始位置、長さ、小数点位置を定義します。

フィールド名 フィールドの名前を指定します。
データ型 String、Boolean、Integer、Double、Decimal、DateTime、Binary、ZonedDecimal、PackedDecimalのいずれか。
「出力エンコーディング」プロパティにフローサービス固有のエンコーディング名を指定した場合、「String(X)」と「String(N)」が追加表示され、この2種類のいずれかを選択します。
String(X) シフトコードを含む文字列であり、長さにはシフトコードの長さも含まれます。
String(N) シフトコードを省略した文字列となり、長さではシフトコードを除いた長さを定義します。
「レコード区切り」プロパティが「改行」の場合、BinaryとPackedDecimalは使用できません。指定した場合、コンパイルエラーとなります。
開始位置 レコードの先頭からのフィールド位置のインデックスを0ベースで指定します。
長さ 長さをバイト数で指定します。ただし、「出力エンコーディング」プロパティに「utf-16」を入力した場合は文字数で指定します。
小数点位置 データ型がZonedDecimalまたはPackedDecimalの場合、小数点位置を指定します。それ以外のデータ型では使用しません。

注意

フィールド名に利用できる文字列として以下の条件があります。

/および半角空白を除く文字が使用可能
  • 名前の長さには制限なし
  • 英字の大文字と小文字は区別される
  • 日本語は使用可能

メモ

  • レコード区切りプロパティが「改行」で、外部からストリームを読み込んだ場合にフィールド定義のフィールド数より読み込んだフィールド数が少ないとき、nullが埋められます。フィールド定義のフィールド数より読み込んだフィールド数が多いとき、そのフィールドは無視します。
  • レコード区切りプロパティが「レコード長」で、外部からストリームを読み込んだ場合にレコード長プロパティの長さより読み込んだ長さが短いとき、空白が埋められます。

フローサービス固有のエンコーディング名

フローサービスではホスト系のデータを扱うための固有のエンコーディング名が定義されています。現在定義されているエンコーディング名とそのキャラクタセットは以下の通りです。

AS-CP00930 IBM CP00930(CP00290 + CP00300)
AS-CP00930-EX AS-CP00930にOSがWindowsの場合の調整を加えたもの
AS-CP00939IBM CP00939(CP01027 + CP00300)
AS-EBCDIC-JEFEBCDIC + 富士通JEFコード
AS-EBCDIK-JEFEBCDIK + 富士通JEFコード
AS-EBCDIC-JIPSEEBCDIC + NEC JIPSEコード
AS-EBCDIK-JIPSEEBCDIK + NEC JIPSEコード
AS-EBCDIC-KEISEBCDIC + 日立KEISコード
シフトコードが間違っているためAS-EBCDIC-KEIS-2を使用してください
AS-EBCDIK-KEISEBCDIK + 日立KEISコード
シフトコードが間違っているためAS-EBCDIK-KEIS-2を使用してください
AS-EBCDIC-KEIS-2EBCDIC + 日立KEISコード
AS-EBCDIK-KEIS-2EBCDIK + 日立KEISコード

これらのキャラクタセットの定義は、基本的にWindows-31Jとの間でのコード変換のためにテーブルが作成されています。このため、 Windows-31Jとコード変換できるようにフローサービスで修正している部分があります。また、2バイト文字のテーブルに含まれているのは、 JIS X 208に含まれている文字のみです。

注意する文字

改行

0x15(NEL)は、\u0Aと相互にマッピングされます。これは0x15を\u85にマッピングするとUnicodeで改行としてうまく扱えない、UnicodeからWindows-31Jにマッピングした際に0x0Aにならずに改行として扱えないという問題があるためです。

円記号とバックスラッシュ

EBCDICの円記号は、\u5Cと相互にマッピングされます。これは\uA5にマッピングすると、UnicodeからWindows-31Jにマッピングした際に0x5Cにならずに円記号として扱えないという問題があるためです。また、バックスラッシュも\u5Cにマッピングされます。

チルダとオーバーライン

EBCDICのチルダは、\u7Eと相互にマッピングされます。また、オーバーラインも\u5Eにマッピングされます。これはWindows-31Jのマッピングで、\u7Eが0x7Eにマッピングされているためです。

「出力エンコーディング」プロパティ

ホスト系のキャラクタセットを扱うには、「出力エンコーディング」プロパティにフローサービス固有のエンコーディング名を直接入力します。

フィールド定義のデータ型

「出力エンコーディング」プロパティにフローサービス固有のエンコーディング名が指定されると、データ型プルダウンリストに「String(X)」と「String(N)」が追加されます。データ型は「String(X)」または「String(N)」のいずれかを選択します。

注意

出力時に、フローサービス上の文字列からString(N)文字列に変換する場合、指定文字コードで変換処理を行った後、シフトイン、シフトアウトを除去します。

入力時に、String(N)文字列からフローサービス上の文字(Unicode文字列)に変換する場合は、前後にシフトイン、シフトアウトを付加してから指定文字コードを使って変換処理を行います。したがって、String(N)型フィールドに半角文字を混在させると、入力時には文字化けするため注意が必要です。

 

▲ このページのトップへ