最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

9.42.訪問者からの耳より情報4

[ Previous ] [ HOME ] [ Upper ] [ Next ]


またまた、登場!ここでは、みなさんから寄せられた情報を、まとめてみました。みなさんのお名前は、伏せさせていただきます。メールを下さった方、この場をお借りして、御礼申し上げます!

文中で、斜体の文章は、私(K)からのコメントです。


複数プログラムから出力するスプールファイルの統合について(YT様よりの情報)

外部印刷装置ファイル XX1010Pのレコード様式                                   
R	HDR01
R	HDR02
R	DTL01
R	DTL02
R	TTL01
R	TTL02
プログラムのサンプル                                   
PGM                                   
	OVRPRTF XX1010P SHARE(*YES)                                   
	プログラムXX1010Lで、XX1010Pに、見出ページを出力(HDR01/HDR02)                                   
	プログラムXX1011Lで、XX1010Pに、明細ページを出力(DTL01/DTL02)                                   
	プログラムXX1012Lで、XX1010Pに、合計ページを出力(TTL01/TTL02)                                   
	DLTOVR XX1010P                                   
ENDPGM                                   
でスプールファイルを見ると1つのスプールになっています。                                   

ありがとうございます。SHAREはバッファの共有なので、出力バッファが各プログラムで共有されて、結果的に、最初にオープンされたスプールが共有され続けて一個のスプールになるわけですね。おっと、多分プログラムは、LRをたてないでしょう。たとえば、XX1010Lや全てのプログラムでLR無しにRETURNして、DLTOVR XX1010Pの次に、RCLRSCをするのも手ですね。また、同じ事は、1内部記述でも可能です。ところで、レコード様式の違う複数の印刷装置ファイルのSHAREはだめでしょうね。SHAREがバッファの共有なので、レコード様式の違うファイルをオープンすれば、その都度、別個のバッファが準備されるはずなので、共有されないでしょう。多分...

※確かめもしないで、アップしたら、早速連絡を頂きました。CLOFでは、 「CPF4520  TESTPR としてオープンされているファイルはない 。 回復手順−−ファイル・クローズ (CLOF) コマンドの OPNID パラメーター値の名前 を現在使用されているファイルの名前に変更して,その後で要求をやり直してくだ さい。 」が出ます。では、OPNDBFはというと、 「CPF4176 TKLIB のファイル TESTPR がデータベース・ファイルでない。 原因−−ライブラリー TKLIB のファイル TESTPR がデータベース・ファイルでない ので,オープン操作が正常に実行されませんでした。 OPNDBF コマンドに OPNID(TESTPR) パラメーターが指定されています。   」がでます。ご指摘があったように、RCLRSCの実行が必須の様です。 1999/7/20


ILEでH仕様書でDECEDIT('0.') (HK様よりの情報)

ちょくちょくと"K's tips and kicks of AS-400"を拝見させております。ところで" 9.44.編集記述で前マイナスもどきをやってみる"について印刷のみでしたらば、ILE RPGで簡単にできますので、あるいはご存知?とは思いましたが、連絡させていただきました。

方法はH仕様書でDECEDIT('0.')と指定するだけでOKです。ただしこれはスプールファイル上でのみ有効で、画面ファイルに対しては無効です。このDECEDITはOS/400 V4R2で追加されたキーワードのようです。

私が使用しているAS/400はV3R7から直接V4R3へバージョンアップしましたので、V4R1,V4R2で使用できるかどうかはわかりません。

でもOS/400 V4R3のRPG(5769RG1)はV4R2M0ですので、OS/400 V4R2でも使用できると思います。また、OS/400 V4R4での機能拡張があったかどうかもわかりません。(^^ゞ

サンプル:

#PDECは整数部3桁、小数部2桁のフィールドとし、編集コード='N'としました。桁は全然合っていませんが…(^^ゞ。

HDATEDIT(*YMD) DECEDIT('0.')                                            
FQPRINT    O    F  132        PRINTER                                   
C     *ENTRY        PLIST                                               
C                   PARM                    #WDATA            5         
C                   MOVE      #WDATA        #PDEC             5 2       
C                   EXCEPT    @D01PT                                    
C                   SETON                                        LR  
C                   RETURN                                              
OQPRINT    E            @D01PT         1                                
O                       #PDEC         N     10                          
                                                               

結果:

#WDATA='00000'の場合、0.00
#WDATA='0001K'の場合、-0.12

こんなものではありますが、参考になりましたら幸いです。これからも楽しみにしておりますので、頑張ってください。


"スプールファイル上でのみ有効"と記しましたが、ILE RPGの組込み関数%EDITCを使用しての編集時にも有効です。

サンプル:

以下のプログラムを実行すると#WRESULTの値は

#WDEC=X'00000F'の場合、'#WDEC = 0.00'
#WDEC=X'00001D'の場合、'#WDEC = -0.01'                                   

となります。(今回は面倒なのでパラメータに数字フィールドを使用しちゃいました。)

 HDATEDIT(*YMD) DECEDIT('0.')                                          
 D#WRESULT         S             20                                    
 C     *ENTRY        PLIST                                             
 C                   PARM                    #WDEC             5 2     
 C                   EVAL      #WRESULT = '#WDEC = '                   
 C                                        +%TRIM(%EDITC(#WDEC:'N'))    
 C                   SETON                                        LR   
 C                   RETURN                                            
                                                               

内部数値を文字形式に変換時に有効だとすると、画面ファイルの数字フィールド表示時にも有効となってくれてよさそうなものですが、以前IBMアンサーラインへ問合せたら"印刷時のみ有効なキーワードですから"とのことでした。

ということで私が勤務している会社では"前マイナス"は使用していません。画面表示も"前マイナス"でたらすっごく嬉しいんですけどね…。

わざわざ、フォローアップをしていただき、また、間違いがあったと、またちゃんとお手紙まで頂きました。心から、お礼を申し上げます。ありがとうございます。<(_ _)>

DECEDITですが、V3R2でも可能でした。確かに、おっしゃる通りの効果が出ました。但し、組み込み関数の%EDITはV3R2ではSEUでエラーとなり、同じものをV4R2にカットアンドペーストしたら、エラーは出ないで、コンパイルも出来ました。画面の入力で、Edtcde(N)を指定した入出力フィールドでの、負数の入力が、あいかわらず後ろマイナスなのです(V3R2)が、これが気になります..指定変更出来るのかなぁ。

このお手紙で驚いたのは、何よりも、RPGivを使っている人が、いる、と言うこと。私以外でも、おや、と思う方も多いのでは。どうやら、RPG400は機能拡張は無いみたいですね(未確認情報ですが...)。それにくらべて、このRPGivの、充実ぶりは何でしょう!そろそろ、RPGIVにしましょうかね!

注意:

言語としての名称は、ILEではなく、「RPG IV」と言います。その言語RPGIVを含んだ、統合「環境」の名前を、「ILE RPG」と言うのだそうです。NewsGroupで諭されました...

1999/7/20


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送