データ転送

データ転送とは IBM i 物理ファイルや論理ファイルのデータを PC クライアントに
ダウンロードおよびアップロードすることを言います。
ここでは PC オーガナイザーによって行うデータ転送を対象としています。

AutoWeb が行うデータ転送には大きく分けて次の 2つの種類 があります。

クライアント型データ転送

旧来より PCOMM や CA/400 のクライアント・モジュールによるデータ転送です。
既存の IBM i 適用業務として組み込まれているのはこの分類になります。
AutoWeb では特別な設定もせずにそのままこの形式のデータ転送は動作します。
追加オプションを契約する必要もありません。

サーバー・サイドのデータ転送

PCOMM や CA/400 の転送記述 (.TTOファイル) をクライアントではなく
IBM i の IFS や他の PC サーバーの共有フォルダーに移して実行する方式を言います。
PCOMM や CA/400 他の他社製品も含めてサーバー・サイドのデータ転送が
可能であるのは AutoWeb だけです。
この場合は 追加オプションをご契約していただく必要があります

サーバー・サイドのデータ転送には次の利点があります。

クライアント・モジュールの配布や保守の必要がない。

クライアントにはブラウザだけあればよいので何も導入する必要がありません。
このため新たなクライアント PC の導入や変更があっても
再導入や保守の手間が要りません。

Windowsのバージョン・アップに追随する必要がない。

IBM は CA/400 は Windows に追随サポートの打ち切りを宣言しました。
このため多くのユーザーが新しいエミュレータの必要に迫られることになりました。
しかしクライアントにまた導入したのではまたいつかは同じような可能性が発生します。
時代はエミュレータでも、もはやクライアント/サーバー・モデルは
終焉を迎えておりサーバー集中管理の時代になっています。

サーバー・サイドのデータ転送に移行するには
基本的には次の2つの移行作業が必要となります。

  • 転送記述 (.TTO) ファイルを IBM i の IFS または
    PCサーバーの共有フォルダーに移す
  • PCSFT5 や RTOPCB で起動している PC オーガナイザー (STRPCCMD) の
    転送記述 (.TTO) の指定を新しい場所に変更する。

...AutoWeb は STRPCCMD で PCSFT5 または RTOPCB が転送記述を指定する場所が
文字「\」を使って C:\temp\ ... のように指定されている場合は
クライアント・モジュールの PCSFT5 または RTOPCB を起動すると解釈しますが
文字「/」を使って /QNTC/DIR/ ... のように転送記述が指定されていると
これはサーバー・サイドのデータ転送であると見なし、
AutoWeb の PCSFT5.PGM または RTOPCB.PGM を起動します。

サーバー型転送とは

サーバー型転送とは従来では PCOMM や CA400 ( iAccess ) の Windows に保管していた
転送記述をサーバー・サイド ( IBM i )に配置して実行する転送記述を言います。
この章ではサーバー型転送がどのような仕組みで動作しているのかをくわしく説明します。
開発者はサーバー型転送に関する開発を行うときの知識としてご覧ください。
サーバー型転送は「データ転送」として AutoWeb の追加オプションとしての契約が必要です。

なぜサーバー型転送が必要なのか

サーバー型転送が必要とされる理由は主に次の3つの理由が挙げられます。

  1. クライアントの 5250 エミュレータを廃止したい

    「 Windows10 問題」と言われるように IBM は Windows10 以降の
    iAccess ( CA400 ) のサポートを打ち切ることを明言しました。
    後継として IBM ACS ( = Access Client Solutions: 旧 Host on Demand ) を
    推薦しましたが IBM ACS は

    バグが多い

    5250 エミュレータとしてのバグが多く中でも印刷エミュレータは
    初めは動作しなかった。JVM のバージョンによっては漢字の入力に問題がある。

    動作が重い

    Java ベースであるので操作がどうしても遅くなってしまいます。
    参照などを要求するととても時間がかかって快適な操作には
    なりません。

    転送記述が移行できない

    データ転送の記述( .TTO, .TFR など)の移行ツールにバグがあって
    移行することができない。 [注]この章で紹介する AutoWeb のデータ転送では移行処理は必要ありません。
    データ転送の記述をそのまま IFS に配置するだけで従来どおりのデータ転送を
    実行することができます。
    ASC への転送要求が移行できないということが AutoWeb によるデータ転送が
    開発された理由でもあります。

    さらに Java の提供元である Oracle は

    2019年 1月より Java の使用を 有償化 する

    と発表しました。
    さらに Java の旧バージョンのサポートを打ち切ると発表しましたので
    Java 製品を使う限りつねに JVM のバージョン管理が必要となってしまいました。
    この理由で企業では Java 製品からの移行する法人が数多くなるものと
    予想されます。

  2. サーバー・サイドで一括集中管理を行いたい

    多数のクライアント PC にソフトウェア製品を導入している場合は
    情報システム室の管理のコストと手間が莫大なものとなります。
    元々分散型になっていた理由はサーバーに比べてクライアント PC 、つまり
    Windows が GUI 化が速かったために GUI 化のために分散型となっただけです。
    今ではサーバーの Web 化が進んでいますのでサーバーだけで容易に GUI 化する
    ことができますので分散型にする理由は既にありません。
    やはり管理コストの少ない集中型にすべきです。

  3. サーバー側からの配布を行いたい

    多くの情報システム室では IBM i から各クライアントへデータを配布したいと
    希望しています。
    これはクライアント PC 上で利用するデータをサーバー主体で作成でき次第に
    順次、配布していきたいとの考えからです。
    従来のようにデータ転送プログラムが PC クライアント上にある場合は
    それができません。
    しかしサーバー側にデータ転送記述があればサーバー側主体で
    配布する業務が可能となります。

転送の種類

サーバー型転送とは次のような種類に分類されます。

従来の Windows 転送記述から移管された転送記述およびフィールド記述

種類 ダウンロード拡張子 アップロード拡張子 CCSID
PCOMM 転送記述 .TTO .TFR 943
 〃        フィールド記述 .FDF .FDF 〃 
CA400     転送記述 .DTF .DTT 1202
 〃        フィールド記述 .FDF .FDF 〃 
ACS         転送記述 .DTFX .DTTX 1208
 〃        フィールド記述 .FDFX .FDFX 〃 

PCOMM と CA400 のフィールド記述の拡張子は全く同じ .FDF ですが内容・書式は
全く異なっていますので代用することはできません。

AutoWeb 上で新しく作成された転送記述

AutoWeb 上での新規作成の転送記述は上記の「 PCOMM 転送記述」と同じ形式で
作成されて指定した IFS 上に保管されます。

どちらの場合も転送記述は IFS に配置保管されます。

使用可能なPCファイル形式

サーバー型転送では下記のPCファイル形式に転送可能です。

PCOMM 転送記述の場合
ファイル形式 拡張子 備考
ASCIIテキスト .TXT
コンマ区切り可変長 (CSV) .CSV PCOMM転送記述では本来は使用不可能であるが
AutoWebではファイル拡張子を .CSV とすることで
コンマ区切り可変長として転送可能。
Excel BIFF形式 .XLS
Excel XLSX形式 .XLSX PCOMM転送記述では本来は使用不可能であるが
AutoWebではファイル拡張子を .XLSX とすることで
XLSX形式として転送可能。
CA400 転送記述の場合
ファイル形式 拡張子 備考
ASCIIテキスト .TXT
コンマ区切り可変長 (CSV) .CSV
タブ区切りテキスト .TXT
Excel BIFF形式 .XLS
Excel XLSX形式 .XLSX
ACS 転送記述の場合
ファイル形式 拡張子 備考
ASCIIテキスト .TXT
コンマ区切り可変長 (CSV) .CSV
タブ区切りテキスト .TXT
Excel BIFF形式 .XLS
Excel XLSX形式 .XLSX

サーバー型転送の基本

サーバー型転送の開始

サーバー型転送は PC オーガナイザーで転送プログラムと転送記述を指定することに
よって開始されます。

転送プログラム

サーバー型の転送記述を処理するために AutoWeb が用意したプログラムのことです。

転送プログラム 処理の対象となる転送記述 拡張子
PCSFT5 PCOMM ダウンロード / アップロード転送記述 .TTO および .TFR
RTOPCB CA400 ダウンロード転送記述 .DTF
RFROMPCB CA400 アップロード転送記述 .DTT
RTOPCB ACS ダウンロード転送記述 .DTFX
RFROMPCB ACS アップロード転送記述 .DTTX
転送記述
種類 ダウンロード拡張子 アップロード拡張子 CCSID
PCOMM 転送記述 .TTO .TFR 943
CA400     転送記述 .DTF .DTT 1202
ACS         転送記述 .DTFX .DTTX 1208

Windows 上で使用されていた転送記述を IFS に Ftp などでアップロードして保管する場合、
転送記述の内容は一切、変える必要はありませんし、変更しないでください。

フィールド記述
種類 拡張子 CCSID
PCOMM フィールド記述 .FDF 943
CA400     フィールド記述 .FDF 1202
ACS         フィールド記述 .FDFX 1208

フィールド記述は PCOMM も CA400 も同じ .FDF ですが
中身も CCSID も全く異なるものです。
これらの互換性は全くありませんので代用や流用はできません。

サーバー型転送の開始(バッチ)

IFS に保管されている既存の転送記述に従ってデータ転送を行うには
PC オーガナイザーを使って次のように「転送プログラム」と「転送記述」を指定して
起動します。

次の例のような記述を CLP に組み込んでください。

[例1] STRPCCMD('PCSFT5 /MYDIR/SHOHIN.TTO')

IFS の /MYDIR というディレクトリーにある SHOHIN.TTO という
PCOMM で作成されたダウンロード記述を PCSFT5 という転送
プログラムを使って起動します。

[例2] STRPCCMD('PCSFT5 /MYDIR/UPDHIN.TFR')

IFSの /MYDIR というディレクトリーにある UPDHIN.TFR という
PCOMM で作成されたアップロード記述を PCSFT5 という転送
プログラムを使って起動します。

[例3] STRPCCMD('RFROMPCB /MYDIR/UPDHIN.DTT')

IFS の /MYDIR というディレクトリーにある UPDHIN.DTT という
CA400 で作成されたアップロード記述を RFROMPCB という転送
プログラムを使って起動します。

サーバー型転送の開始(対話式)

対話式で手動操作によって AutoWeb のデータ転送を実行するには
実行中の AutoWeb 画面の最上部のコントロール・バーのアイコンをクリックします。
次のような PCOMM のような転送ダイアログが表示されます。

ダウンロードダイアログ

[ ファイル ] - [ 開く ]で既存の設定を探して開くことができます。
「ファィル参照」ボタンを押すとライブラリーの中から
目的のファイルを探し出すことができます。

サーバー型転送の動作と仕組み

AutoWeb は 5250 ストリーム中の PC オーガナイザーのコマンド( STRPCCMD )の先頭に
転送プログラム( PCSFT5, RTOPCB および RFROMPCB )を見つけると
そのまま PC オーガナイザーを実行するのではなく 以下に記述する AutoWeb 独自の
転送処理を行います。
STRPCCMD の内容は表示されていませんが 5250 ストリームの中に埋め込まれています。

ダウンロード

STRPCCMD の内容はダウンロード転送プログラムに渡されて実行されます。
AutoWeb は次の 3つの MS-PowerShell によるバッチ処理記述を作成します。

PowerShell とは Microsoft が開発したスクリプト言語です。

.Net Framework を基盤としたオブジェクト指向の言語であり Windows7 以降では
標準で搭載されています。

  • ダウンロードの詳細
    データ・ベースをダウンロードするために転送プログラム( PCSFT5 または RTOPCB )
    は AutoWeb 付属の ODBC ドライバーを起動します。
    ODBC ドライバーは指示されたとおりに所定の場所にデータ・ベースを
    ダウンロードします。
  • ODBC ドライバー ODBC ドライバーとはストアド・プロシージャーと呼ばれる SQL を保管した
    SQL パッケージを使ってクライアント PC から IBM i のデータ・ベースを
    アクセスしてダウンロードする仕組みのことで AutoWeb にも
    ODBCDVR コマンドとして提供されています。
POI

POI とは株式会社オフィスクアトロが開発した MS-Excel ブックに読み書きするための
サービス・プログラム( *SRVPGM )です。
ODBC ドライバーは Excel ブックへの出力が要求されると POI を使って
Excel ブックを作成してそれを PC へダウンロードします。
POI は Jakarta-Project と呼ばれる世界的なプロジェクトの中のひとつの
プロジェクトです。POI は Java コードによって書かれたものですが
パフォーマンスが低いため株式会社オフィスクアトロが C言語で書き直したものです。

アップロード

STRPCCMD の内容はダウンロード転送プログラムに渡されて実行されます。
AutoWeb は次の3つの MS-PowerShell によるバッチ処理記述を作成します。

PowerShell とは Microsoft が開発したスクリプト言語です。

.Net Framework を基盤としたオブジェクト指向の言語であり Windows7 以降では
標準で搭載されています。

アップロードの詳細

アップロードを処理する転送プログラム( PCSFT5 および RFROMPCB )は
IFS にアップロードされたデータを AutoWeb 付属の CVTFRMIMPF コマンド
を使って既存のデータ・ベースに更新します。
CVTFRMIMPF は IBM の CPYFRMIMPF を機能拡張したコマンドです。
CPYFRMIMPF コマンドは CCSID を変換することはできませんが
CVTFRMIMPF は IFS 上にアップロードされたファイルの CCSID を変換して
既存のデータ・ベースに正しい文字コードで更新することができます。
また漢字が含まれている場合も桁ずれを補正しています。
Excel ファイルのアップロードでは CPYFRMEXCL コマンドが利用されます。
CPYFRMEXCL コマンドは *BIFF ( .XLS ) および *XLSX ( .XLSX ) の Excel ブックを
IBM i のデータ・ベース( DB2/400 )にコピーします。
この技術は Jakarta Project の POI というプロジェクトをベースに
株式会社オフィスクアトロが開発した技術です。
このようにデータ転送は最先端の高度な技術によって支えられています。

CVTFRMIMPF コマンド

CVTFRMIMPF とは IBM 提供の CPYFRMIMPF コマンドの改良版のような
機能を拡張したコマンドで IFS のストリーム・ファイルから
ライブラリー・システムのデータ・ベースへデータをコピーします。
このとき問題になるのが
・IFS ストリーム・ファイルとデータ・ベースの CCSID のちがい ・レコード・レイアウトのちがい です。
IBM CPYFRMIMPF には CCSID 変換のためのパラメータは用意されていますが
機能していません。
このため CVTFRMIMPF では独自に CCSID 変換を行っています。
また CPYFRMIMPF コマンドはレコード様式を指定するために
フィールド定義ファイル( FLDDFNFILE )の指定が必要ですが
データ転送のフィールド定義ファイル( .FDF )とは全く互換性のない形式です。
このため CPYFRMIMPF コマンドを使用するためには手動でフィールド定義ファイル
( FLDDFNFILE )を新たに作成する必要があります。
CPYFRMIMPF を使うに当たって COPY コマンドを使えば IFS ストリーム・ファイルの
CCSID を変換することができますが IFS ストリーム・ファイルの中に漢字が含まれて
いると桁ずれを起こしてしまう障害があります。
このように CPYFRMIMPF コマンドでは容易にストリーム・ファイルをデータ・ベースに
変換することはできません。
CVTFRMSPMF はこのような問題を解決した実用レベルでお使い頂けるコマンドとして
提供されています。

CPYFRMEXCL コマンド

CPYFRMEXCL とは MS-Excel ファイルを IBM i のデータ・ベースにコピーする
株式会社オフィスクアトロが開発したコマンドです。
CPYFRMEXCL は *BIFF ファイル( Excel97-2003 )の形式の Excel ブックを
IBM i のデータ・ベースに変換するのと
*XLSX( Exel2007- ) の形式の Excel ブックを IBM i の DB2 データ・ベースに
コピーするコマンドです。
Jakarta Project に POI というプロジェクトがあり、これは
Excel ブックへのアクセスを Java で記述したサービス・プログラムを
提供しているプロジェクトです。
株式会社オフィスクアトロでは POI の Java ソースをC言語に書き直した独自の POI を
開発して XLS や XLSX ブックを解析するサービス・プログラムを古くから
開発しています。
この POI によって開発された CPYFRMEXCL コマンドによって
MS-Excel のデータと IBM i のデータの互換性を提供しています。

POI について

株式会社オフィスクアトロでは POI を有償でお客様に提供しています。
POI をご利用になると RPG プログラムより POI を利用でき、
RPG プログラムによって Excel ブックへの読み書きが可能になります。
POI にご興味のある方は株式会社オフィスクアトロのヘルプ・デスクまで
お問合せください。

MS-IE 9-11 のバグについて

.BAT (バッチ・ファイル) や .EXE (exeファイル) を頻繁にダウンロードして
実行した場合、拡張子が _BAT や _EXE に変更されてしまうバグが
MS-IE にはあり、未だ対応されていません。( 2017/10月現在 )

この障害が発生した場合は IE を終了して再起動したとしても回復しません。
Windows そのものを再起動する必要があります。
なお他のブラウザではこの障害の報告はありません。

ここではサーバー型転送の障害解決の方法について解説します。
転送定義を IFS に配置して AutoWeb のデータ転送で実行しても
エラーになって正しくデータ転送が行われなかったときに
次の調査によって原因を調べてください。

エラー・リストの調査

サーバー型データ転送が失敗したときは次のエラー報告を調べてください。

OUTQ: QNETJOBLOG の調査

GO SERVER メニューの「 10. QNETJOBLOG の表示」に出力されている
エラー・リストを調べてください。
多くのエラー内容はここに報告されています。

JOB : AURORA_EGN の各ジョブ・ログの調査

GO SERVER メニューで「 F5 = 活動状況」を押してそれぞれの AURORA_EGN を
「 5 = 処理」で選択してから「 10. ジョブ・ログ表示」を押して
エラーが報告されていないか調べます。

QSYSOPR の調査

コマンド入力画面で DSPMSG QSYSOPR でエラーが報告されていないか
調べます。

データ転送のデバッグ方法

IFS に移したデータ転送定義が正しく動作するか 5250エミュレータ環境で
対話式で実行して確かめることができます。
3つのコマンドが用意されています。

PCSFT5 : PCOMM のアップロードおよびダウンロード定義を実行します。
RTOPCB : CA400 と ACS のダウンロード定義を実行します。
RFROMPCB : CA400 と ACS のアップロード定義を実行します。

これらのコマンドを 5250エミュレータのコマンド入力画面で F4 = プロンプトで
次のようにパラメータとして転送定義を指定して実行します。

[ デバッグ例 ]

                           データ転送 (CA/400) (RTOPCB)                         
                                                                                
  選択項目を入力して,実行キーを押してください。                                
                                                                                
  転送記述 (.DTF, DTFX) . . . . . DTF          > '/DIR/MYTFR.DTF'               
                                                                                
  または SQL 文   . . . . . . . . SELECT         SELECT                         
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
  ...                                                                           
  出力オプション  . . . . . . . . OPTION       > *DEBUG                         
[解説]

出力オプションに *DEBUG と指定すると実行結果が表示されます。
エラーが発生すればエラーが報告されます。
この方法によって転送定義が正しく実行されるか調べることができます。

実行環境の調査

データ転送が配置されているかどうか
STRPCCMD で指定されている IFS パスにデータ転送定義が正しく配置されているか
どうかを WRKLNK コマンドを使って確かめてください。
データ転送の CCSID が正しいかどうか
Ftp でデータ転送定義を IFS にアップロードするとすべての定義の CCSID は
819 にセットされてしまいますが転送定義によって正しい CCSID にセットしておく
必要があります。
転送設定 拡張子 CCSID
ダウンロード アップロード
PCOMM .TTO .TFR
943
CA400 ( i Access ) .DTF .DTT
1202
ACS .DTFX .DTTX
1208

AutoWeb データ転送は転送定義ファイルの CCSID を判断して
内容を読み取りますので正しい CCSID に設定しておく必要があります。
ストリーム・ファイルの CCSID は WRKLNK で「 13 = 属性の変更」を指定して
*CCSID を入力して変更することができます。
データ転送定義の内容が正しいかどうか
データ転送定義の内容が正しいか内容で漏れはないかなどを WRKLNK で
確認してください。
ACS の場合は登録にはバグがありますので ACS のダイアログ上では
正しく表示されていても転送ファイルには
正しく登録されていない場合があります。
HostFile ライブラリー名/ファイル名
ClientFile PC ファイル名
PCFile PC ファイル名
FDFFile FDF ファイル名
などが正しく登録されていなければなりません。
ClientFile = だけのように登録が漏れている場合は
正しい登録を追加する必要があります。
ただし WRKLNK では Unicode ( CCSID = 1202 および 1208 ) のファイルを
修正することはできません。
もう一度、Windows PC 環境で再作成するかまたは
AutoWeb 提供の DSPSTM コマンドを使って HEX コードで修正する
必要があります。

PowerShell のデバッグ

データ転送は Microsoft PowerShell によって実行されますが
実際にどのような PowerShell 文が実行されたのかを調べることが
できます。
このデバッグ手法は PowerShell のデバッグだけでなく
DOS コマンドなどのデバッグにも使用することができます。

最初に「開く」ではなく「保存」を選択
クリックで拡大
次に「開く」ではなく「ダウンロードの表示」を選択します。
クリックで拡大
最上部の「ファイルを開く」のコンボボックスをプルダウンして
「プログラムから開く」を選択
クリックで拡大
メモ帳を指定する
クリックで拡大
PowerShell が表示される
クリックで拡大

PowerShell が実行したスクリプトが正しいかどうかを調べることができます。
  • 実行した文が文法的に正しいか

  • 実行したスクリプトが示しているオブジェクト名が正しいか

などを確認してください。