6 |
|
|
|
本書の添付CD-ROMには、以下のソフトウェアおよびサンプルなどが収録されています。
ディレクトリツリー:
ASTERIA
install-asf-win.exe ASTERIAサーバ
install-asdesigner-win.exe ASTERIAデザイナ
BlackJumboDog
setup.exe BlackJumboDog(メールサーバ)
...
Home
guest guestのホームディレクトリ
htdocs 実習3.4で利用するデータ
search.html
style.css
input_data 実習で利用するデータ
asbook.mdb
attachmentMailingList.csv
author.csv
ChoiceData.csv
ComponentVariables.vm
deleteItem.csv
ebcdic.dat
EbcdicField.csv
ExcelInput.xls
hello.html
infoteria-logo.png
insertItem.csv
insertUpdateItem.csv
ItemTemplateExcel.xls
ItemTemplatePdf.xls
MapperDateTime.vm
MapperNumber.vm
MapperString.vm
music.csv
Parallel1.csv
Parallel2.csv
Parallel3.csv
ryoma.txt
soseki.txt
StreamVariables1.txt
StreamVariables2.txt
StreamVariables3.txt
SubFlow.csv
SubFlowResultTemplate.vm
table.csv
TableChoiceData.csv
textMailingList.csv
updateItem.csv
webSearchResult.vm
projects 実習で作成するフローの見本
200_HelloAsteriaWorld.xfp
300_Lesson.xfp
350_Mapper.xfp
423_Variables.xfp
431_Process_Branch.xfp
432_Process_Parallel.xfp
433_Process_Loop.xfp
434_Process_SubFlow.xfp
435_Process_Exception.xfp
600_Legacy.xfp
詳細は、 ASTERIA実践ガイド公式サイト をご覧ください。 なお、BlackJumboDogは、SIN/Sapporoworks氏が作成されたフリーソフトウェアです。 以下のURLにて、自由にダウンロードすることができ、ウェブページ上でサポートを受けることが可能となっています。作者のSIN/Sapporoworks氏に感謝します。 http://homepage2.nifty.com/spw/software/bjd/
|
|
ASTERIAの詳細な情報については、以下のウェブページを参考にしてください。 製品構成: http://www.infoteria.com/jp/product/asteria/compose/ 動作環境・仕様: http://www.infoteria.com/jp/product/asteria/spec/
|
|
古いメインフレームやホストがあるシステムでは、データ転送用のファイル形式としてCSVよりも固定長フォーマットが使われている場合が多くあります。固定長フォーマットは、横80文字・縦24文字などに端末の画面サイズが固定されていて、そこに表示できる文字数に合わせてデータ長を決めていた時代には主流のファイル形式でした。 ASTERIAでは固定長フォーマットを扱うストリームとして「FixedLength」をサポートしています。このストリームは他にくらべて若干特殊で、以下のような便利な機能を搭載しています。
これらの機能を活用して、レガシーシステムのデータを取り扱うことが可能となっています。
|
|
固定長フォーマットでは、しばしばEBCDIC (Extended Binary Coded Decimal Interchange Code) タイプの文字コードが用いられます。 EBCDICはIBM社がホスト向けに策定した8ビットの文字コード体系ですが、歴史的に複雑な経緯があり、特に日本国内ではメーカー別に様々な独自拡張が行われてきました。
ASTERIAでは、ストリームにFixedLengthを指定した場合、EncodingプロパティでEBCDIC (CP500) を指定することが可能です。CP500とはiso-8859-1との間で制御文字も含めて相互変換が可能なコード体系(いわゆる英語圏のEBCDIC)です。
|
|
ASTERIAでは、限定的ではありますがCP500の他にも下記の日本語EBCDICをサポートしています。
これらは基本的にShift JIS (Windows-31J) との間でのコード変換を主眼に置いてあります。また、2バイト文字に含まれているのは、JIS X 208に含まれている文字のみです。
|
|
|
|
以下で、日本語EBCDICを扱う方法をサンプルを使って示します。 まず、今回扱うデータ「ebcdic.dat」は、バイナリエディタで開くと下図のようになっています。
このデータは富士通ホストのJEFコードで構成されており、全体で1レコード80バイトの固定長レコードが3行あり、その1レコード目に注目してみると「Shift-INコード、5つの全角アルファベットA、Shift-OUTコード、60バイトの空白、8桁のゾーン10進データ」となっています。 以下の手順で、この全半角混在のEBCDICデータをUTF-8のCSVストリームに変換していきます。 (1) ASTERIAデザイナを終了させてから [ASTERIAデザイナのインストールディレクトリ]/conf/ja/flowbuilder.xconf をテキストエディタで開き、下図のようにFixedLengthの設定を行うところでEncodingプロパティのtype属性を"choice"から"editableChoice"に変更して保存します。
この手順でFixedLengthストリームのEncodingプロパティが下図のように直接編集可能になります。
(2) ASTERIAデザイナを起動し、プロジェクト「600_Legacy.xfp」を開きます。ここで、ConverterコンポーネントのEncodingプロパティに「AS-EBCDIC-JEF」というコードが指定されていることを確認し、Fieldタブが下図のようになっていることを確認します。
(3) このフローを実行すると、以下のようにCSVが表示されます。
このようにして、ASTERIAでEBCDICデータを取り込んで、様々な処理を行っていくことが可能です。
参考情報:
下図は、上記「EBCDICコード表 Ebcdic ver1.1」の表示サンプルです。
|
|
ASTERIAは、ゾーン10進やパック10進といった特殊な数値形式を扱うことができます。ASTERIAの型としてはZonedDecimalとPackedDecimalがそれぞれ相当します。 ゾーン10進は、1バイトあたり1桁の10進数を表現するBCD (Binary Coded Decimal) 形式のひとつで、1バイトの上位4ビットをゾーン部、下位4ビットを数値部として表現し、最後の1桁のゾーン部が符号部となる方式です。符号部がFまたはCの場合にプラス、Dの場合にマイナスを表現します。 パック10進は、ゾーン10進のゾーン部の無駄を省き、1バイトあたり2桁の10進数を表現するBCDで、符号が末尾の4ビットで表現されます。符号部の表現方法はゾーン10進と同じです。
さらに、固定長フォーマットのゾーン10進とパック10進では、仮想小数点を扱うことが可能です。Lengthで全体の長さを、FractionLengthで小数部の長さを指定します。 仮想小数点とは、データ本体には小数点の位置を示す情報を持たず、小数点の位置を外部から教える方法です。これは、小数点記号そのものが1文字とカウントされてしまうと都合が悪い固定長データならではの事情から生まれた考え方です。例えば「12345678」という数値列に対してFractionLengthが3に定義されている場合、「12345.678」と解釈することになります。 お気づきかも知れませんが、ゾーン10進におけるF0からF9までのコードはEBCDIC互換となっています。つまり例えば、コードF0はEBCDIC(文字型)と解釈してもゼロですし、ゾーン10進(数値型)と解釈してもゼロです。これは、バイトストリームに対して型情報(定義体)を外に持たなければならないという制約の中にあって、型情報が入手できなくてもとりあえずデータを文字型として表示してみれば意味がわかる可能性が高い、というちょっとした工夫のひとつと言えるでしょう。また、このように考えれば、EBCDICやゾーン10進などのレガシーデータに馴染みの薄いエンジニアにとっても理解の助けになると思います。
|
|
ここでは、主要なコンポーネントの一覧、マッパー関数の一覧、システム変数の一覧を掲載します。(特別なものは除いてあります)
|
|
|
|
Controlタブには、データの流れを制御したり、排他制御を行ったり、コマンドやJavaなど外部プログラムの実行を行うコンポーネント群が配置されています。
|
|
Branchタブには、処理を条件分岐したり、合流するコンポーネントが配置されています。
|
|
Storageタブには、ファイル、RDB、MQ、XMLデータベース、Domino、SAP R/3などのデータストレージの入出力に関するコンポーネントが配置されています。
|
|
Networkタブには、HTTP / FTP / SMTP / POP3 / IMAP4 / LDAPなどの各種ネットワークプロトコルや暗号化メール、WebMacro(ウェブ自動巡回)コンポーネントなどが配置されています。
|
|
Formatタブには、Excel / PDFとのデータ変換や、Velocityテンプレートによる動的テキスト生成、Zipによる圧縮・解凍、XSLT/XPathによるXML構造変換、レコードデータのジョインやソートを行うコンポーネントが配置されています。
|
|
Fileタブには、ファイルの移動・コピー・削除などのファイル/ディレクトリ操作のためのコンポーネントが配置されています。
|
|
|
|
文字列データを処理するための関数です。
|
|
数値データの加減乗除などを行うための関数です。
|
|
日付形式の変換や、日時の計算を行う関数です。
|
|
日時や数値の表記形式の整形、コード変換を行う関数です。
|
|
条件指定による値選択やJavaインタプリタなどのカスタム関数です。
|
|
値をバイナリデータとして処理するための関数です。
|
|
値を論理演算や比較を行うための関数です。
|
|
メールヘッダやMIMEヘッダの情報を加工するための関数です。
|
|
ASTERIAの状態を表すためにあらかじめ定義されている変数です。システム変数は読み取り専用でフローから変更することはできません。システム変数には以下のものがあります。
|