フォーマット変換では、単純に値を設定するだけでなく、項目の一部だけの設定、四則演算結果の設定、条件式による出力値の変更、コード値変換、異なる属性へのコピーなどの、フォーマット変換設定方式をサポートしています。また、プログラムを別途作成することにより、さらに自由な出力をすることもできます。
フォーマット変換では、これらのフォーマット変換設定方式を組み合わせて、1つの出力結果を求めます。
出力項目に対して、以下を設定することができます。
これらを、条件、および順番を意識しながら並べることによって、出力結果が決定されます。
ポイント
入力元レコードだけでなく、出力先レコードの項目も入力にすることができます。ただし、出力先レコードの項目の場合は、すでに値が設定されている項目(設定中の項目よりも前にある項目)に限ります。
固定値も入力にすることができます。
1つの出力項目に複数の変換設定をした場合、値は順に上書きされます。ただし項目コード変換設定(CSVまたはDB)で、変換前の値がCSVファイル上、またはRDB上に存在しない場合に限り、上書きしないで、1つ前の設定の状態が保存されます。
集団項目に属する値は、基本的に集団項目同士で処理されるため、同じ繰返し回数番目の項目同士でフォーマット変換が行われます。たとえば、「入力側の集団項目の繰返し回数:5回>出力側の集団項目の繰返し回数:3回」の場合には、入力側のレコードの4回目、5回目のデータは読み飛ばされます。なお、集団項目がネストして繰り返している場合は、同じ出現順の項目同士でのフォーマット変換となります。
登録方法
変換情報の設定では、フォーマット変換のルールを定義します。
最初に[変換情報設定]画面で、入力元、出力先のそれぞれのフォーマット形式を選択します。
次に、[フォーマット変換設定]画面で入力元、および出力先それぞれのレイアウトを指定し、出力先の項目について1項目ずつ変換ルールを登録します。変換ルールの登録では、「条件設定」、「最適化転記」、「項目設定」、「計算設定」、「項目コード変換設定(CSV)」、「項目コード変換設定(DB)」、「利用者プログラム設定」を組み合わせて設定します。
[フォーマット変換設定]画面では、以下の内容を設定します。
変換ID
入力元のフォーマットのID
出力先のフォーマットのID
入力元、および出力先のそれぞれのIDを指定すると、それに応じたレイアウトが表示されます。出力先の項目に対して1項目ずつ変換ルールを登録し、必要な項目すべてを設定するまで繰り返します。
設定した変換ルールは「変換ID」で管理されます。
設定方法の詳細は、“ISI Formatmanagerクライアント(FEDIT/FL-TABLE)ヘルプ”、および“ ISI Formatmanagerクライアント(FEDIT/FL-TABLE)チュートリアル”を参照してください。
[フォーマット変換設定]画面の出力先の項目をダブルクリックすると画面下部に設定内容表示ペインが表示されます。設定内容表示ペインでは、以下の内容を設定します。
条件の有無(条件あり/なし)
設定内容(最適化転記/項目設定/計算設定/項目コード変換設定(CSV)/項目コード変換設定(DB)/利用者プログラム設定)
「設定内容」には、「この項目にどんな方法で出力するか」を定義します。その方法としては、「最適化転記」、「項目設定」、「計算設定」、「項目コード変換設定 (CSV)」、「項目コード変換設定(DB)」、「利用者プログラム設定」があります。
設定内容には、1つずつ「条件」を与えることができます。条件に合致した場合に設定内容が実行され、条件に合致しない場合は、設定内容は実行されません。
設定内容は複数指定でき、上から順に実行されます。
各種設定について
条件タブ
条件タブでは、条件式を指定します。条件式の変数には、入力元の項目、出力先の項目(設定済み)、固定値が使用できます。
「かつ(AND)/または(OR)」を使うことによって、最大20個の条件式を組み合わせて真偽を判断することができます。
最適化転記
最適化転記は、入力元の項目を指定します。出力先の項目の属性に応じて自動的に値の整形が行われて値がコピーされます。
項目設定
項目設定は、同一属性の項目全桁または項目の一部(開始位置、桁数)を指定します。入力元の項目、出力先の項目(設定済み)が指定できます。また、「ダイレクト」を指定することによって、固定値、およびシステム値も設定できます。
B属性への出力については、ビット属性の出力も可能です。(ビット単位の参照はできません)
「有効値の直後に設定」を使用することによって、すでに設定されている値の後方の空白を詰めて、連続して値を出力することもできます。
計算設定
計算設定では、計算式を作成します。計算式の変数には、入力元の項目、出力先の項目(設定済み)、固定値が使用できます。計算式には、一度に3つの変数を指定できます。
項目コード変換設定(CSV)
項目コード変換設定では、入力元の項目、出力先の項目(設定済み)を指定(一部も可)し、さらにその値によってコード変換するためのCSVファイルの「CSV ID」を指定します。
「CSV ID」は「項目コード変換用CSV登録」で登録したマスタから指定します。項目コード変換用CSV登録については、“項目コード変換設定(CSV)”を参照してください。
項目コード変換設定(DB)
項目コード変換設定では、入力元の項目、出力先の項目(設定済み)を指定(一部も可)し、さらにその値によってコード変換するためのリレーショナルデータベースの「DBテーブルID」を指定します。
「DBテーブルID」は「DBテーブル情報登録」で登録したデータベース情報から指定します。DBテーブル情報登録については、“項目コード変換設定(DB)”を参照してください。
利用者プログラム設定
利用者プログラム設定では、「利用者プログラムID」を指定します。また、「引数リスト」で、利用者プログラムに与える引数を指定します。
「利用者プログラムID」は「利用者プログラム登録」で登録したマスタから指定します。利用者プログラム登録については、“利用者プログラム設定”を参照してください。
ポイント
[初期値セット]ボタンを使用すると、「一般フォーマット登録」で指定した項目ごとの“初期値” を自動的に「項目設定」の固定値として設定することができます。
異なる属性間の変換、および同じ属性でも桁数やタイプが異なる変換では、項目設定の結果は保証されません。最適化転記を使用してください。
最適化転記は、属性や桁数を意識することなく、出力レコードの項目に値を設定する変換方法です。
図6.32 最適化転記
入力元と出力先の属性が異なっている場合は、入力データが出力先の属性に合わせて適切に整形されて出力されます。また、桁数が異なっている場合は、出力先の属性に合わせて左詰め、右詰めをします。
ポイント
異なる属性間の変換、および同じ属性でも桁数やタイプが異なる変換では、項目設定では結果が保証されません。最適化転記を使用してください。
属性、桁数およびタイプが同じ項目間の変換でも整形により入力データと異なる値が出力される場合があります。入力データを整形せずにそのまま設定する場合は項目設定を使用してください。
項目設定は、同一属性に対して、値の全体または一部を切り取って(部分指定)、設定する変換方法です。
図6.33 項目設定
上図は値の一部を設定する例ですが、項目全体(ABCDEF)を設定することもできます。また、入出力レコード内の値だけでなく、固定値(入力データによらず常に一定の値)、および[一般フォーマット登録]画面の[初期値]フィールドで指定した初期値も設定することができます。
固定値を設定する際には、テキスト文字、バイナリ文字の両方が設定できます。また、以下のシステム値も設定できます。
システム値 | 指定できる属性 | 内容 |
---|---|---|
@CRLF | X属性 | 改行(CRLF) |
@LF | X属性 | 改行(LF) |
@SEQNO | X、N、C属性 | シーケンスNo. |
@SPACE | X属性 | 空白詰め |
@SYSDATE4 | X属性 | 4桁日付(MMDD) |
@SYSDATE6 | X属性 | 6桁日付(YYMMDD) |
@SYSDATE8 | X属性 | 8桁日付(YYYYMMDD) |
@SYSTIME4 | X属性 | 4桁時間(hhmm) |
@SYSTIME6 | X属性 | 6桁時間(hhmmss) |
@ZERO | X、9、N、C属性 | ゼロ詰め |
@ALL( ) | X、9、N属性 | ( )内の値を繰り返して、全桁にセット |
@RECTOTAL | X、N、C属性 | 伝票形式フォーマットのトレーラレコードに指定した場合は、ヘッダレコードからトレーラレコードまでの総レコード数(ヘッダレコード、およびトレーラレコードを含む。)を設定。それ以外の指定は、“0”を設定。 |
@BODYCNT | X、N、C属性 | 出力が伝票形式フォーマットの場合は、最下位層のヘッダレコードからトレーラレコードの間の、明細レコードのシーケンス番号を設定。出力が行終端可変長フォーマット、および繰返し数指定可変長フォーマットの場合は、1レコード内の明細部のシーケンス番号を設定。 |
ポイント
異なる属性間の変換、および同じ属性でも桁数やタイプが異なる変換では、項目設定で結果は保証されません。最適化転記を使用してください。
項目の一部を切りとる際、小数点や符号が含まれている場合は、出力項目の小数点や符号の位置にあわせて、正しく設定してください。
「有効値の直後に設定」を使用することによって、すでに設定されている値の後方の空白を詰めて、連続して値を出力することができます。
「繰返し指定」を使用することにより、集団項目の任意の繰返し番目の項目だけを対象とすることができます。また、後述する条件設定と組み合わせることにより、条件に合う項目だけを項目設定の対象として、その結果を出力先の集団項目に詰めて設定することもできます。
@ALL( )の中に@HEX()を書くことはできません。
条件設定は、値によって設定内容を変更したいときに使用します。
図6.34 条件設定
条件設定は、フォーマット変換設定方式と組み合わせて使用します。条件設定で指定した条件内容によって、後続の設定を実施するかどうかが決定されます。
判断の対象として、入力元レコードの値、出力先レコードの値(設定済みに限る)、固定値を使用できます。
判断に使用できる条件は、以下の6種類です。
等しい
以上
以下
等しくない
より大きい
未満
計算設定は、四則演算の結果を設定する変換方法です。
図6.35 計算設定
四則演算の対象となるデータとしては、入力元レコードの値、出力先レコードの値(設定済みに限る)、固定値が使用できます。
ポイント
計算結果は以下の範囲で保証されます。
-2,147,483,648 ~ 2,147,483,647
項目コード変換設定(CSV)は、入力元のデータと出力先のデータのコード値が異なる場合に、CSVファイルを使用して読み替えた値を設定する変換方法です。
図6.36 項目コード変換設定(CSV)
たとえば、入力元のデータでは性別を男:1、女:2で表現していて、出力先のデータでは男:M、女:Wで表現したい場合、値を1からMへ、2からWへと変換するために、このコード値の読み替えを記述したCSVファイルをサーバに用意して、項目コード変換設定(CSV)を設定します。
CSVファイルはタブ区切りで、入力元の値、出力先の値を並べて記述します。なお、FormatmanagerクライアントのGUIを使用してCSVファイルを作成し、サーバへ転送することもできます。
ポイント
CSVファイルの検索を高速化するために、ハッシュ法による検索を実施しています。
ハッシュ検索は、CSVファイルがある行数(レコード数)を超えた場合に実施します。その行数はFEDITシステムパラメタ定義ファイルのCSVLineHashPoint定義文で指定できます。
また、ハッシュエントリ数もCSVLineHashEntry定義文で指定できます。FEDITシステムパラメタ定義ファイルについては、“ISI 導入ガイド”の“FEDITシステムパラメタ定義ファイルの変更” または“ISI Java EE導入ガイド”の“FEDITシステムパラメタ定義ファイルの変更”を参照してください。
通常1つの出力項目に複数の設定をした場合、値は順に上書きされます。ただし項目コード変換(CSV)で、変換前の値がCSVファイル上に存在しない場合については、出力側項目に対しては何も処理は行われず、1つ前の設定状態が保存されます。(ワーニングが出力されます)
また、このときにワーニングを出力するかしないかは、FEDITシステムパラメタ定義ファイルのSetWarningNotFoundCSVRecord定義文で指定できます。FEDITシステムパラメタ定義ファイルについては、“ISI 導入ガイド”の“FEDITシステムパラメタ定義ファイルの変更” または“ISI Java EE導入ガイド”の“FEDITシステムパラメタ定義ファイルの変更”を参照してください。
登録方法
[項目コード変換用CSV登録]画面で、以下の内容を設定します。
CSV ID
CSV名称
保管先フォルダ名
CSVファイル名
項目コード変換で使用するためのCSVファイルの一覧をマスタ登録します。CSVファイルのCSV ID、CSV名称、保管先フォルダ名、CSVファイル名を定義します。
[項目コード変換用CSV登録]画面からCSVファイルを作成し、指定した保管先フォルダ名、CSVファイル名に格納することもできます。
ここで保管したCSVファイルは、「変換テーブル生成」時に指定のサーバへ転送されます。
設定方法の詳細は、“ISI Formatmanagerクライアント(FEDIT/FL-TABLE)ヘルプ”、および“ISI Formatmanagerクライアント(FEDIT/FL-TABLE)チュートリアル”を参照してください。
図6.37 項目コード変換用CSV登録
ポイント
保管先フォルダ名を設定している場合は、「変換テーブル生成」時にそのディレクトリからCSVファイルがサーバへ転送されます。CSVファイルの文字コードはサーバ転送先設定のコード変換指定に従って変換されます。文字コードに“UNICODE(UCS-2BE)”、“UNICODE(UCS-2LE)”、“UNICODE(UTF-16BE)”、または“UNICODE(UTF-16LE)”を指定している場合、転送されるCSVファイル自体の文字コードはシフトJISになります。
保管先フォルダ名を設定していない場合は、定義セットディレクトリにCSVファイルを直接配置します。
CSVファイルはタブ区切りで作成します。カンマ区切りはサポートしていません。
項目コード変換設定(DB)は、入力元のデータと出力先のデータのコード値が異なる場合に、リレーショナルデータベースを使用して読み替えた値を設定する変換方法です。
図6.38 項目コード変換設定(DB)
項目コード変換(DB)は、項目コード変換設定(CSV)で使用するCSVファイルの代わりに、リレーショナルデータベース(DB)を利用する機能です。この機能は、マスタDBのような更新頻度の低いデータベースからの値の取出しを想定しているため、データベースへのアクセスで、トランザクションやレコードロックなどは行っていませんので、注意してください。
値の置換えに使用するデータベースは、入力側の値が格納されている列と、置き換える出力側の値が格納されている列との、少なくとも2つの列が必要です。
項目コード変換(DB)は、指定された項目を処理するたびに、データベースへのアクセスを行います。
一方、FEDITシステムパラメタ定義ファイルのUseDBItemCodeConversionCache定義文を設定することで、データベースから取り出した値をキャッシュし、データベースへのアクセスを減らすこともできます(デフォルトでは、キャッシュは無効に設定されています)。キャッシュを有効にすると、入力側の値とデータベースから取り出した値は、キャッシュに保存されます。これにより、以降の項目コード変換(DB)では、キャッシュにある値については、データベースに対してSQL文を発行しないで、キャッシュにあるものを使用するようになります。
キャッシュは1変換処理内でだけ有効で、1つの変換IDの実行が完了するとクリアされます。なお、入力データやデータベース構造によっては、キャッシュに多くのメモリを消費する場合がありますので、注意してください。
また、JDBCデータソースを利用することで、データベースへのコネクションプールにより、データベースへのアクセス性能を安定させることができます。
FEDITシステムパラメタ定義ファイルについては、“ISI 導入ガイド”の“FEDITシステムパラメタ定義ファイルの変更” または“ISI Java EE導入ガイド”を参照してください。
ポイント
通常1つの出力項目に複数の設定をした場合、値は順に上書きされます。ただし項目コード変換(DB)で、変換前の値(入力側の値)がDB上に存在しない場合については、1つ前の設定状態が保存されます。(ワーニングが出力されます)
入力項目を複数指定し、レコードを絞って出力項目を取り出すこともできます。
変更後のDBフィールドを複数指定し、1回の項目コード変換(DB)で1レコード中の複数の値を取り出すこともできます。取り出した値はFEDITシステムパラメタ定義ファイルのDBItemCodeConversionDelimiter定義文で指定したデリミタ文字で結合して出力項目に設定されます。変更後のDBフィールドを複数指定する場合、出力項目の属性にX属性のみ使用することができます。
登録方法
[DBテーブル情報登録]画面で、以下の内容を設定します。
DBテーブルID
DBテーブル名称
テーブル名
データベース種別
データベースサーバアドレス
ポート番号
ユーザ名
パスワード
データベースの文字コード
SID(データベース種別がOracleのときだけ)
サービス名(データベース種別がOracleのときだけ)
データベース名(データベース種別がSQL ServerおよびPostgreSQLのときだけ)
サーバ用DSN(データベース種別がSymfoware Serverのときだけ)
クライアント用DSN(データベース種別がSymfoware Serverのときだけ)
スキーマ名(データベース種別がPostgreSQLのときだけ)
フィールド名
属性
項目コード変換(DB)で使用するためのリレーショナルデータベースの情報を登録します。使用するデータベーステーブルの情報と、そのテーブルで項目コード変換(DB)で使用する可能性のあるフィールド(列)、およびその属性を定義します。
フィールド名は[DB読込]ボタンをクリックすることによって、データベースから直接取得することも可能です。また、[SQL読込]ボタンをクリックして、直接入力、または貼り付けられたSQL文からフィールド名を取り出すことも可能です。(DB読込機能を使用するには、データベースにアクセスするための環境設定が必要になります)
設定方法の詳細は、“ISI Formatmanagerクライアント(FEDIT/FL-TABLE)ヘルプ”、および“ISI Formatmanagerクライアント(FEDIT/FL-TABLE)チュートリアル”を参照してください。
図6.39 項目コード変換用データベース登録
Formatmanagerでは広範なユーザ設定によるフォーマット変換が可能ですが、特殊なプログラムを作成しないと値が求められないケースもあります。この場合はFormatmanagerから利用者が作成したプログラムを呼び出し、値を変換結果として出力します。
入力元レコードの一部、出力先レコードの一部(出力済み項目)、固定値をパラメタとして与え、利用者プログラムの変数にすることもできます。
図6.40 利用者プログラム設定
また、利用者プログラム側から、Formatmanagerで確保している「項目コード変換用CSVファイル」を参照することができる関数も用意されています。
利用者プログラムの作成方法については、“ISI リファレンス”の“ユーザ固有フォーマットの利用者プログラムAPI”を参照してください。
和暦西暦変換用の利用者プログラムの標準提供
和暦西暦変換については、利用者プログラムを標準提供します。以下のパターンが変換できます。
西暦8桁→西暦6桁変換 |
西暦8桁→基準暦6桁変換 |
西暦6桁→西暦8桁変換 |
西暦6桁→基準暦6桁変換 |
基準暦6桁→西暦8桁変換 |
基準暦6桁→西暦6桁変換 |
西暦8桁→和暦7桁変換 |
和暦7桁→西暦8桁変換 |
西暦8桁(yyyymmdd)
西暦6桁(yymmdd)
基準暦6桁(yymmdd)(和暦から和暦表記を除くもの。平成15年4月10日→150410)
和暦7桁(eyymmdd)(eは和暦を示す記号。H、S、T、M)
ポイント
和暦西暦変換用の利用者プログラムは、プレインストールされています。Formatmanagerクライアントで設定するだけで使用できます。設定方法については“ISI Formatmanagerクライアント(FEDIT/FL-TABLE)ヘルプ”を参照してください。
和暦7桁の和暦を示す記号は、CSVファイルを変更することにより、修正、追加が可能です。
登録方法
[利用者プログラム登録]画面で、以下の内容を設定します。
利用者プログラムID
利用者プログラム名称
ライブラリ名
関数名
引数の数
利用者プログラム設定で使用するための利用者プログラムの情報を登録します。利用者プログラムの利用者プログラムID、利用者プログラム名称、ライブラリ名、関数名、引数の数を定義します。
設定方法の詳細は、“ISI Formatmanagerクライアント(FEDIT/FL-TABLE)ヘルプ”を参照してください。
図6.41 利用者プログラムの登録