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

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

よく使うマニュアルです

Wiki

updated on 2004.06.23

2.19.READCとSFLNXTCHG解説

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


ここで、サンプルプログラムを使って、READCとSFLNXTCHGの関係を説明します。必ず、分かるはずです。 READCは例えば、500件のサブファイルレコードのオプション(WRKSPLFのオプションをイメージして下さい)の最後のレコードに何か入力した場合、CHAINでは500回サブファイルにアクセスします。でもREADCは1回しかアクセスしません。このパフォーマンスを利用しない手はありません。

2000-9-13追記

コラム:CHAINとREADCの違い

CHAIN命令は、全レコードを取り込んでしまう。もし、変更分だけ見るとすると、効率が悪い。データの追加の場合なら、問題ない。

READC命令は、システムにより管理された「変更」レコードのみ取り込むので、効率的。

ところが、READCを使っていると不可解なことが起きます。マニュアルはなんだか不親切で、私も最初は分かりませんでした。例えば、1回目のREADCをして、「EXFMTをせずに」2回目のREADCをすると、2回目はまったく引っかかりません。最初のREADCで入力検査をして、OKならそのまま、データ書き出しのプログラムがうまくいかないのです。

これは、DDSにSFLNXTCHGを指定しないためでした...

SFLNXTCHGがオフのままだと

  日付: 10/04/97         【READC 処理検査】        時間: 12:05:49           
                                                                                  
                                                                                  
         SFLNXTCHG ON ( 1:ON  0:OFF)   0 ←                                       
                                                                                  
                                                                                  
         SEQ  DO LOOP 1 DO LOOP 2 DO LOOP 3 DO LOOP 4 DO LOOP 5             
           1                                                                      
           2                                                                      
           3                                                                      
           4                                                                      
       X   5                                                                      
           6                                                                      
           7                                                                      
           8                                                                      
           9                                                                      
          10                                                                      
                                                                                  
                                                                                  
                                                                                  
                                                                                  
 F3 :終了  F5 :再表示                         
実行キー↓          
  日付: 10/04/97         【READC 処理検査】        時間: 12:05:53           
                                                                                  
                                                                                  
         SFLNXTCHG ON ( 1:ON  0:OFF)   0                                          
                                                                                  
                                                                                  
         SEQ  DO LOOP 1 DO LOOP 2 DO LOOP 3 DO LOOP 4 DO LOOP 5             
           1                                                                      
           2                                                                      
           3                                                                      
           4                                                                      
           5         1 ←                                                         
           6                                                                      
           7                                                                      
           8                                                                      
           9                                                                      
          10                                                                      
                                                                                  
                                                                                  
                                                                                  
                                                                                  
 F3 :終了  F5 :再表示                         

一回目の、READCのループでしか、サブファイルのレコードをゲットできていません。つまり、2回目以降は、まったくレコードをゲットできていません。このままでは、1回内容検査のつもりでREADCをしてしまうと、2回目、例えば、サブファイルへの入力のレコードを処理しようとREADCしても、何もしないままです。ところが、SFLNXTCHGをオンにすると、(SEQ 9に注目)

  日付: 10/04/97         【READC 処理検査】        時間: 12:05:55           
                                                                                  
                                                                                  
         SFLNXTCHG ON ( 1:ON  0:OFF)   1 ←                                       
                                                                                  
                                                                                  
         SEQ  DO LOOP 1 DO LOOP 2 DO LOOP 3 DO LOOP 4 DO LOOP 5             
           1                                                                      
           2                                                                      
           3                                                                      
           4                                                                      
           5         1                                                            
           6                                                                      
           7                                                                      
           8                                                                      
  →   X   9                                                                      
          10                                                                      
                                                                                  
                                                                                  
                                                                                  
                                                                                  
 F3 :終了  F5 :再表示                         

実行キー↓

  日付: 10/04/97         【READC 処理検査】        時間: 12:06:01           
                                                                                  
                                                                                  
         SFLNXTCHG ON ( 1:ON  0:OFF)   1                                          
                                                                                  
                                                                                  
         SEQ  DO LOOP 1 DO LOOP 2 DO LOOP 3 DO LOOP 4 DO LOOP 5             
           1                                                                      
           2                                                                      
           3                                                                      
           4                                                                      
           5         1                                                            
           6                                                                      
           7                                                                      
           8                                                                      
    →     9         1          1          1          1          1                
          10                                                                      
                                                                                  
                                                                                  
                                                                                  
                                                                                  
 F3 :終了  F5 :再表示                         

SEQ9を見ると、ループ1から5まですべて、サブファイルレコードをゲットできています。つまり、第一回目のループでヒットしたサブファイルレコードをSFLNXTCHGをオンにして、
UPDATEすることで、READC命令でサブファイルレコードを継続して、ゲットできることがわかります。これは、とても重要です。以下にもう一度、実行キーを押した画面を載せます。SEQ9に注目して下さい。

   日付: 10/04/97         【READC 処理検査】        時間: 12:06:02           
                                                                                  
                                                                                  
         SFLNXTCHG ON ( 1:ON  0:OFF)   1                                          
                                                                                  
                                                                                  
         SEQ  DO LOOP 1 DO LOOP 2 DO LOOP 3 DO LOOP 4 DO LOOP 5             
           1                                                                      
           2                                                                      
           3                                                                      
           4                                                                      
           5         1                                                            
           6                                                                      
           7                                                                      
           8                                                                      
    →     9         2          2          2          2          2                
          10                                                                      
                                                                                  
                                                                                  
                                                                                  
                                                                                  
 F3 :終了  F5 :再表示                         

再び、SEQ9のレコードはゲットされています。


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

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

 

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