- 機 能
従来より「\AZFSET」におけるプラグイン機能にて、固定長テキストから区切り文字付可変長
テキストファイルへの変換を行なう事が可能でした。
しかしながらプラグインモジュールは、実際にAzia'n Transferにデータを登録するモジュールの
前段で別ステップとして動作するので、中間にワークファイルが必要となり、大量データを処理
する場合にはかなりの空きDISK容量を必要とするという問題点がありました。
そこでこの程、Azia'n Transferにデータを登録するモジュールそのものの中に、固定長テキスト
から区切り文字付可変長テキストファイルへの変換を行なう拡張モジュールを組み込む事を可能に
致しました。
このことにより、中間ワークファイル用DISK領域を必要とせずAzia'n Transferへの転送データ
登録が可能です。
又、テキスト変換ロジックそのものも見直しましたので、CPUタイムの消費も従来のプラグイン
モジュールに比して2割から6割(場合によってはそれ以上)減少いたします。
先頭に戻る
- 拡張モジュール指定方法
従来、「PLUGIN=AZTXCVAP」指定でテキスト変換を行なっていた「\AZFSET」のJCLを、
拡張モジュールを利用するパターンにするには、以下のように修正して下さい。
修正前の例
\AZFSET KCNV=S PLUGIN=AZTXCVAP
PLUGOPT=(SEP=CSV,SPMD=L) PLUGPRM=FSETPRM
INFILE=(TESTF1.W01 PUBLIC NORMAL=DELETE)FLID=TESTF1 AKSCD=KAIHATSU2
DSNM=/C6/TESTF1.TXT DV=A OPMD=C;
\INPUT FSETPRM LIST=YES;
(X,1,8,N'商品コード')(N,9,20,N'商品名')(C3,49,7.2,N'単価')
\ENDINPUT;
|
修正後の例
\AZFSET KCNV=S DCNV=TV
DCOPT=(SEP=CSV,SPMD=L) DCPRM=FSETPRM
INFILE=(TESTF1.W01 PUBLIC NORMAL=DELETE)FLID=TESTF1 AKSCD=KAIHATSU2
DSNM=/C6/TESTF1.TXT DV=A OPMD=C;
\INPUT FSETPRM LIST=YES;
(X,1,8,N'商品コード')(N,9,20,N'商品名')(C3,49,7.2,N'単価')
\ENDINPUT;
|
上記のように、「PLUGIN=AZTXCVAP」記述を「DCNV=TV」記述に、「PLUGOPT=(〜)」
記述を「DCOPT=(〜)」記述に、「PLUGPRM=〜」記述を「DCPRM=〜」記述に変更すれば
OKです。(PLUGOPTやシスイン情報の中身については通常変更する必要はありません)
尚、「KCNV=S」指定による漢字コード事前変換機能はそのまま御使用になれます。
又、「DCNV=MV 」は後述のマルチフォーマット変換を行なう場合等に指定します。
先頭に戻る
- 互換性留意事項
前述のように、「DCNV=TV」「DCNV=MV 」指定で組み込まれる内部データ変換モジュールは、
PLUGINモジュールである「AZTXCVAP」とオプション指定、シスインパラメータ指定、及び
それに基づく変換の結果において基本的に互換性を持つように設計されていますが以下の制約が
ありますので御注意下さい。
- 「TEXT=SHORT」指定時に数値項目が0であった場合の処置
プラグインモジュール「AZTXCVAP」においては、「TEXT=SHORT」指定時に変換対象の
数値項目が0であった場合に「0」という文字が出力される場合とされない場合がありましたが、
今回の内部データ変換モジュールにおいては基本的に出力されません。
但し、「DCOPT=( )」指定内に「ZERO=Y」を追加記述すると、必ず出力されます。
セパレータが「,」カンマであり数値項目の前後にキャラクタ項目がある場合の例
項目属性 |
AZTXCVAPの場合 |
内部変換モジュールの場合 |
ZERO=Yの追加指定時 |
9(5) |
XXX,0,XXX |
XXX,,XXX |
XXX,0,XXX |
S9(5) |
XXX,,XXX |
XXX,,XXX |
XXX,0,XXX |
9(5)V99 |
XXX,,XXX |
XXX,,XXX |
XXX,0.00,XXX |
文字項目中の文字列が2桁目以降から始まっている場合、「AZTXCVAP」においては左側の
空白が除去されますが、内部データ変換モジュールの場合は除去されません。右側の余分な
空白のみ除去されます。
尚これらの違いは、一般にEXCEL等にデータを渡す場合は問題にならないと考えられます。
- 指定不可能もしくは指定しても無視されるオプション項目
- 「KANJI=STD」指定
- 「TYPE=SYLK」「TYPE=DIF」指定
- 「FORMAT=COPY」指定
- 「FEND」指定
- 「LIST」指定
- SYSIN パラメータ1 行中の文字数について
SYSIN パラメータ1 行中の文字数は80 文字までとなります。漢字を含むパラメータを1
行中に複数記述すると(漢字の周りにはKI,KO コードが付加されるので)この制限を超え、
「PARAMERR 」等のステータスで異常終了する事があります。
この場合は、以下のように1 行中のパラメータ数を減らすよう適宜改行して記述して下さい。
\INPUT FSETPRM LIST=YES;
(X,1,8,N'商品コード')(N,9,20,N'商品名')(C3,49,7.2,N'単価')(X,54,7,N'供給金額')
\ ENDINPUT;
↓
\INPUT FSETPRM LIST=YES;
(X,1,8,N'商品コード')(N,9,20,N'商品名')
(C3,49,7.2,N'単価')(X,54,7,N'供給金額')
\ENDINPUT;
|
先頭に戻る
- 追加機能
- オプション中の「SIGN=」指定
「DCOPT=( )」内に「SIGN=」指定することにより、数値項目に対する±記号の付加方法を
詳細に調整可能になりました。
- SIGN=A … 全ての数値項目に+(プラス)記号を付加します。(通常の既定値)
- SIGN=Y … サイン付として定義されている数値項目にのみ±記号を付加します。
- SIGN=M … 数値がマイナスの時のみ−(マイナス)符号を付加します。
(TEXT=SHORT時の既定値)
- SIGN=S … 数値がマイナスの時のみ最終桁に符号ゾーンを付加します。
(TYPE=DAT時の既定値)
- 「TEXT=SHORT」指定時に文字項目が空白であった場合の処置
「DCOPT=()」内に「SPACE=Y」と指定することにより、文字項目が空白であった場合に
1バイトの空白(日本語項目の場合は2バイト漢字の空白)を付加させることが可能です。
NOT NULL属性が定義されているPC側DBにデータをロードするような際に有効です。
- 「DNCV=MV 」指定について
「DCNV=TV 」の替わりに「DCNV=MV 」と指定すると、異なるレイアウトのレコードを
持つファイルを、レコードタイプ毎に変換するマルチフォーマット変換が使用可能です。
JCL 記述例
\AZFSET PFNID=S KCNV=S
DCNV=MV DCOPT=(TYPE=TXT,NOHEAD,ZERO=Y,TEXT=SHORT,SIGN=M)
DCPRM=KDT_SET
INFILE=(UUB.TR.NHKPCA.KDTWA %PUBLIC1 )
FLID=UBHKDN AKSCD=UMN360 FLNM='発注基本データ'OPT=(ACPT=A)
DV=C DSNM=HKDTN.TXT OPMD=C ATRMID=ON1041AZ OUTREQ=Y;
\INPUT KDT_SET LIST=YES;
(<=,78,1,X'A') → 入力レコードの
(X,1,30,X'KD1I1-PMKEY') 78 桁目から1 桁が
(X,78,1,X'KD1I1-ID') "A"以下である場合
(X,79,256,X'KD1I1-NM') の変換定義
(X,335,10,X'KD1I1-NMCD')
:
(>,78,1,X'A') → 入力レコードの
(X,1,30,X'KD2I1-PMKEY') 78 桁目から1 桁が
(X,78,1,X'KD2I1-ID') "A"より大きい場合
(X,79,64,X'KD2I1-NM') の変換定義
(X,143,10,X'KD2I1-NMCD')
(X,153,1,X'FILLER')
(C3,154,7,X'KD2I1-GOUKEI')
(U3,158,3.2,X'KD2I1-HACYUH')
(X,161,4,X'KD2I1-FRKESU')
(X,165,3,X'FILLER')
(C3,168,7,X'KD2I1-MAE-SURYO')
:
\ENDINPUT;
|
このように、条件を表すパラメータに続けて通常の変換定義パラメータを記述します。
条件演算子としては「=」「^ =」「<=」「>=」「<」「>」が指定可能ですが、AND 条件,OR 条件
には現段階では対応していません。また比較する文字列も1 バイト系のみ指定可能です。
条件パラメータを指定しなければ「DNCV=TV 」指定時と同等の機能となります。
尚、「AZ- HEADER 」レコードを含む入力ファイルを変換する時は、条件がない場合でも必ず
「DCNV=MV 」を指定して下さい。
|