データベース

33. 物理ファイルのレコード・レイウトを変更する CHGPF

 

物理ファイルのレイアウトを変更するときはどのように
しているのだろうか?

1.DDSソースを変更する
2.物理ファイルのバックアップをとる
3.物理ファイルに従属している論理ファイルを調べて(DSPDBR)削除する
4.変更元の物理ファイルを削除する
5.新しい物理ファイルをCRTPFで作成する
6.バックアップから新しい物理ファイルへCPYF *MAP *DROPでコピーする
7.従属する論理ファイルを再作成する(CRTLF)

…と、このような手順が必要であったのだが
いつのまにかIBMが CHGPF というコマンドを作成した。
このCHGPFコマンドは

  

・新しいDDSソースに基づいて物理ファイルを再作成する。

・元のデータがそのまま維持される。

・従属する論理ファイルも維持される。

というスグレモノである。
 それでは早速 CHGPF を試してみよう。

[変更前の物理ファイル : WORKP ]

0001.00      A**********************************************                      
0002.00      A*   WORKP   :  商品マスターファイル          *                      
0003.00      A**********************************************                      
0004.00      A                                      UNIQUE                        
0005.00      A          R WORKPR                    TEXT(' 商品マスターレコード ')
0006.00      A*                                                                   
0007.00      A            SHCODE        10A         COLHDG(' 商品 コード')          
0008.00      A            SHNAME        24O         COLHDG(' 商品名 ')            
0009.00      A            SHTANK         7S 0       COLHDG(' 単価 ')              
0010.00      A                                      EDTCDE(1)                     
0011.00      A            SHSCOD         4A         COLHDG(' 品種 コード')          
0012.00      A*                                                                   
0013.00      A          K SHCODE                                                  

[従属する論理ファイル]

0001.00      A**********************************************             
0002.00      A*   WORKL01  :  商品マスターファイル LF      *             
0003.00      A**********************************************             
0004.00      A                                                           
0005.00      A          R WORKPR                    PFILE(R610FIL/WORKP) 
0006.00      A*                                                          
0007.00      A          K SHSCOD                                         
0008.00      A          K SHCODE                                         

[変更前の物理ファイル : WORKPの内容]

                                                         報告書の表示 
                                                                       
 行の位置指定 . . . . . . .                                            
 行    ....+....1....+....2....+....3....+....4....+....5....+....     
        商品 コード   商品名                       単価    品種 コード     
000001 NV-BS30S     目次ビデオ                 165,000     0002        
000002 NV-BS50S     ビデオ画王                 200,000     0002        
000003 NV-CF1       Cカセット編集ビデオ        58,000     0002        
000004 NV-CF2       薄型テレビ                  98,000     0003        
000005 NV-CF81      更新テスト                  58,000     0004        
000006 NV-CF9       漢字テスト                  19,000     0002        
000007 NV-F850      音声録画ビデオ             140,000     0002        
000008 NV-HK1       歌えるビデオ                90,000     0002        
000009 NV-H1T-S     みんなのビデオ              69,800     0002        
000010 NV-SX10      ビデオ画王                 115,000     0002        
000011 NV-W1        世界放送方式ビデオ         350,000     0002        
000012 RX-AZ1       液晶テレビ 80 インチ       300,000     0001        
000013 RX-BZ1       液晶テレビ 55 インチ       100,000     0002        
000014 RX-DT75      CDラジオカセット          53,800     0003        
000015 SC-CH150     超ミニ・コンポ              70,000     0003        
000016 SC-CH505     パーソナル・ミニコンポ     100,000     0003        
000017 SC-CH655     ロングプレイ・コンポ       129,000     0003        
000018 SC-CH950     ドルビー・ミニコンポ       162,000     0003        
000019 SF-SDCD     FFFFF                        19,000     0009 
000020 TH-19VS30    コンパクトTVBS19     120,000     0001  
000021 TH-21VS30    コンパクトTVBS21     128,000     0001  
000022 TH-25GF10    衛星放送内蔵TV25       168,000     0001  
000023 TH-25GV10    ビデオ内蔵型TV25       255,000     0001  
000024 TH-25VS30    コンパクトTVBS25      11,300     0001  
000025 TH-29GF10    カラーTV画王BS29     220,000     0001  
000026 TH-29GV10    ビデオ内蔵型TV29       280,000     0001  
000027 TH-33VS35    カラーTV画王BS33     350,000     0001

[変更後の物理ファイルソース]

0001.00      A**********************************************                          
0002.00      A*   WORKP   :  商品マスターファイル          *                          
0003.00      A**********************************************                          
0004.00      A                                      UNIQUE                            
0005.00      A          R WORKPR                    TEXT(' 商品マスターレコード ')    
0006.00      A*                                                                       
0007.00      A            SHCODE        10A         COLHDG(' 商品コード ')            
0008.00      A            SHNAME        24O         COLHDG(' 商品名 ')                
0009.00      A            SHTANK         7S 0       COLHDG(' 単価 ')                  
0010.00      A                                      EDTCDE(1)                         
0011.00      A            SHZAIKO        7P 0       COLHDG(' 在庫数 ')                
0012.00      A            SHSCOD         4A         COLHDG(' 品種コード ')            
0013.00      A*                                                                       
0014.00      A          K SHCODE                                                      

[解説]

欄見出しを半角カナを全角カナに変更して

0011.00      A            SHZAIKO        7P 0       COLHDG(' 在庫数 ')

を追加した。

[ CHGPFによる物理ファイルの変更 ]


> CHGPF FILE(R610FIL/WORKP) SRCFILE(R610SRC/QDDSSRC)   
   ライブラリー R610FIL のファイル WORKP が変更された。

[変更後の物理ファイル WORKP ]

                                                          報告書の表示            
                                                                                  
 行の位置指定 . . . . . . .                                                       
 行    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+
        商品コード    商品名                       単価     在庫数     品種コード 
000001  NV-BS30S      目次ビデオ                 165,000          0       0002    
000002  NV-BS50S      ビデオ画王                 200,000          0       0002    
000003  NV-CF1        Cカセット編集ビデオ        58,000          0       0002    
000004  NV-CF2        薄型テレビ                  98,000          0       0003    
000005  NV-CF81       更新テスト                  58,000          0       0004    
000006  NV-CF9        漢字テスト                  19,000          0       0002    
000007  NV-F850       音声録画ビデオ             140,000          0       0002    
000008  NV-HK1        歌えるビデオ                90,000          0       0002    
000009  NV-H1T-S      みんなのビデオ              69,800          0       0002    
000010  NV-SX10       ビデオ画王                 115,000          0       0002    
000011  NV-W1         世界放送方式ビデオ         350,000          0       0002    
000012  RX-AZ1        液晶テレビ 80 インチ       300,000          0       0001    
000013  RX-BZ1        液晶テレビ 55 インチ       100,000          0       0002    
000014  RX-DT75       CDラジオカセット          53,800          0       0003    
000015  SC-CH150      超ミニ・コンポ              70,000          0       0003    
000016  SC-CH505      パーソナル・ミニコンポ     100,000          0       0003    
000017  SC-CH655      ロングプレイ・コンポ       129,000          0       0003    
000018  SC-CH950      ドルビー・ミニコンポ       162,000          0       0003    
000019  SF-SDCD      FFFFF                        19,000          0       0009    
000020  TH-19VS30     コンパクトTVBS19     120,000          0       0001 
000021  TH-21VS30     コンパクトTVBS21     128,000          0       0001 
000022  TH-25GF10     衛星放送内蔵TV25       168,000          0       0001 
000023  TH-25GV10     ビデオ内蔵型TV25       255,000          0       0001 
000024  TH-25VS30     コンパクトTVBS25      11,300          0       0001 
000025  TH-29GF10     カラーTV画王BS29     220,000          0       0001 
000026  TH-29GV10     ビデオ内蔵型TV29       280,000          0       0001 
000027  TH-33VS35     カラーTV画王BS33     350,000          0       0001 

[解説]

欄見出しは「商品コード」のように全角カナ表記に変更された。
フィールド : 在庫数 7P 0 も追加されて PACK-0 で初期設定されている。

データ・ベースの変更は避ける人が多いが CHGPF を使えば安全にレイアウトを
変更することができる。
非常に役に立つテクニックとしてぜひ覚えていた欲しい。
ただし関連するプログラムの再コンパイルも忘れないようにやっておくこと。