ご指摘のとおりです。従来の CGI の実行が遅いと評価されるのはCGI での EBCDIC/ASCII 変換に大量のオーバー・ヘツドを生じているからです。 ・HTML ソースを RPG の中で記述している。 ・HTML ソースを ソース・ファイルやデータ・ペースとして記述している。... このような場合は、実行時間の 80 〜 90 % は、EBCDIC/ASCII に変換に 時間を取られてしまいます。これに対して、ご提案のように HTML を ASCII コードで IFS に保存しておいてデータ部分のみを EBCDIC/ASCII 変換して HTMLに埋め込んで送出するようにすれば最小のオーバー・ヘッドで済み、パフォーマンスを劇的に改善させることができます。Web は、パフォーマンスこそ命ですので、是非とも IFS に HTML を保存することをお勧め致します。(EnterpriseServer も当然、この手法です。)ご質問の趣旨であるRPG による IFS ストリーム・ファイルの処理の方法にさきましてはこのサイトの下記の記事がご参考になります。 http://www.as400-net.com/rpg.html136. RPG でストリーム・ファイルを読み取るには
現在はRPG-CGIでRPG内にHTMLを記述しています。それをIFSにhtmlだけをおいて入出力させようとするとまず、RPGでそのIFS上にあるhtmlを読み込んで出力する必要があるのですが、読み込んだ地点でEBCDIC/ASCII変換することになると思っていますその辺の入出力の知恵をお借りできませんか
RPG の演算用に ASCIIで保管されている IFSストリームをASCIIから EBCDIC に変換したのでは折角、ASCII で IFS に保管した意味がなくなります。IBM HTTPサーバーや Apache は 省略時は EBCDIC->ASCII 変換ですが設定によって 無変換、つまり ASCII->ASCII で出力することができますので設定をお調べください。CGI が最も処理時間を要するのはコード変換ですのでコード変換は極力少なくするようにしなければなりません。ASCII で読み込んだ IFS ストリームに対して文字列の検索等が必要になるかと思いますが検索する文字列のほうを EBCDIC->ASCII に変換して ASCII のままで処理するようにしてください。ANSI-C (C言語) であれば #pragma convert(850) : (ここで記述したソースの定数はすべてASCII と見なされる) :#pragma convert(0)という便利な ASCII 記述の方法があるのですが RPG では、このような機能はありません。唯一使えそうなのが %GRAPH ですが。
htmlをRPG内に読込むのならIFSに置くのではなくhtmlだけ切り出してソースメンバーに登録したらいかがでしょうか。例えば、CGILIB/QHTMLSRC(HTML1)で作成し、このファイルをOVRDBFしてREADで読込む様にする。おそらくHTMLはPCで作成するかと思いますが、IFSにコピーするにはFTPか何かでUPすると思いますのでUPする手間は同じだと思います。(IFSをドライブに割り当てていたら別ですが...)逆にEBCDIC/ASCII変換の回数が減って良いのではないでしょうか。
> htmlをRPG内に読込むのならIFSに置くのではなく> htmlだけ切り出してソースメンバーに登録したらいかがでしょうか。> 例えば、CGILIB/QHTMLSRC(HTML1)で作成し、> このファイルをOVRDBFしてREADで読込む様にする。> おそらくHTMLはPCで作成するかと思いますが、> IFSにコピーするにはFTPか何かでUPすると思いますので> UPする手間は同じだと思います。> (IFSをドライブに割り当てていたら別ですが...)> 逆にEBCDIC/ASCII変換の回数が減って良いのではないでしょうか。要は画面ファイルのようにCGILIB/QDSPSRCにDSPファイルを置くのと同じ要領ということですかね?そのときにそのファイルを読み込むやり方がわからないのですが、OVRDBFでどのように記述したらいいのでしょうか?そうなるとCLPGMがでてきますよねRPG-CGI、CLの呼び出し手順はどうなるのでしょうか
そうです。DSPFやPRTFの様に定義を外出しする。方法として幾つかあると思います。@ファイルをUSROPN指定してQCMDEXCでOVRDBFしてからファイルをOPENする。AEXtFILE、EXTMBRキーワードを指定するです。