RPG

406. RPGでテキスト・エリアを作るには

テキスト・エリア(TEXTAREA)とは複数行のテキストを入力できるフィールドのことである。
HTMLでは textarea タグはお馴染みであるが RPG でも同じような複数行から成る入力欄を
作ることができる。

IBM のDDS解説書などでは textarea とは書いていないので読み飛ばしている人も多いが
textarea を作るのは CNTFLD (=Conticanate Field:結合フィールド)として
解説されている。

[ 部品検収の入力 ]

[解説]

ご覧の「写真」というフィールドは複数行から成り立っていることが
おわかりになると思う。
これはひとつのフィールドでありがら複数行として表示されているいわゆるテキスト・エリアである。

[ DSPF: CAMERADFM ソース ]

ソースはこちらから

0001.00      A*%%TS  SD  20210805  150710  QTR         REL-V6R1M0  5761-WDS              
0002.00      A*%%EC                                                                      
0003.00      A                                      DSPSIZ(24 80 *DS3)                   
0004.00      A                                      MSGLOC(24)                           
0005.00      A                                      PRINT                                
0006.00      A*******************************************************************        
0007.00      A          R DSPDTA01                                                       
0008.00      A*******************************************************************        
0009.00      A*%%TS  SD  20210805  150710  QTR         REL-V6R1M0  5761-WDS              
0010.00      A                                      TEXT(' 明細画面 01')                 
0011.00      A                                      CF03(03 ' 終了 ')                    
0012.00      A                                      CF05(05 ' 撮影 ')                    
0013.00      A                                      CF07(07 ' 画像 ')                    
0014.00      A                                      CF10(10 ' 更新 ')                    
0015.00      A                                      CF23(23 ' 削除 ')                    
0016.00      A                                      CF12(12 ' 前画面 ')                  
0017.00      A                                      ROLLUP(07)                           
0018.00      A                                      ROLLDOWN(08)                         
0019.00      A                                      SETOF(99)                            
0020.00      A                                      BLINK                                
0021.00      A                                  1  2HTML('TEMPLATE=/AS400-NET.USR/TEMPL- 
0022.00      A                                      ATE/QTROBJ/CAMERA/CAMERAD.HTM')      
0023.00      A                                  1 21' 部品検収の入力 '                   
0024.00      A                                      DSPATR(HI)                           
0025.00      A            DSPMSG         6A  O  1 53TEXT(' 保守モード ')                 
0026.00      A                                      DSPATR(HI)                           
0027.00      A                                  2 40' 検収日 '                           
0028.00      A            BKDATE         8Y 0O  2 49EDTCDE(W)                            
0029.00      A                                  3  2' 部品コード '                       
0030.00      A            BKNCOD        12A  O  3 17TEXT(' 部品コード ')                 
0031.00      A                                  4  2' 部品名 '                           
0032.00      A            BHNAME        20O  O  4 17TEXT(' 部品名 ')                     
0033.00      A                                  5  2' 検収数 '                           
0034.00      A            BKNUKO         7Y 0B  5 17TEXT(' 検収数 ')                     
0035.00      A                                      EDTCDE(K)                            
0036.00      A                                  6  2' 摘要 '                             
0037.00      A            BKTEKI        21G  B  6 17TEXT(' 摘要 UNICODE *EMOJI')         
0038.00      A                                      DSPATR(PC)                           
0039.00      A                                      CCSID(1200 21)                       
0040.00      A*                                 6 61'( 絵文字入力可 )'                   
0041.00      A                                  8  2' ↓ボタンを押して検収品を撮影して + 
0042.00      A                                       ください。 '                        
0043.00      A                                      COLOR(BLU)                           
0044.00      A                                  9  2' 写真 '                             
0045.00      A            BPHOTO       504A  B  9 17TEXT(' 写真 =42 桁 * 12 行表示 *IMA- 
0046.00      A                                      GE')                                 
0047.00      A                                      CNTFLD(042)                          
0048.00      A*                                                                         
0049.00      A            F3FLD          2Y 0B 23  2PSHBTNFLD(*RSTCSR (*NUMCOL 1))      
0050.00      A                                      TEXT(' 終了ボタン ')                
0051.00      A                                      PSHBTNCHC(1 '*END' CF03)            
0052.00      A            CAMERA         2Y 0B 23 10PSHBTNFLD(*RSTCSR (*NUMCOL 1))      
0053.00      A                                      TEXT(' カメラ撮影 ')                
0054.00      A                                      PSHBTNCHC(1 '*CAMERA' CF05)         
0055.00      A            PICTURE        2Y 0B 23 21PSHBTNFLD(*RSTCSR (*NUMCOL 1))      
0056.00      A                                      TEXT(' 画像の検索 ')                
0057.00      A                                      PSHBTNCHC(1 '*PICTURE' CF07)        
0058.00      A            UPLOAD         2Y 0B 23 34PSHBTNFLD(*RSTCSR (*NUMCOL 1))      
0059.00      A                                      TEXT(' アップロードキー ')          
0060.00      A                                      PSHBTNCHC(1 '*UPLOAD' CF09)         
0061.00      A            UPDATE         2Y 0B 23 47PSHBTNFLD(*RSTCSR (*NUMCOL 1))      
0062.00      A                                      TEXT(' 更新キー ')                  
0063.00      A                                      PSHBTNCHC(1 '*UPDATE' CF10)         
0064.00      A            PREV           2Y 0B 23 60PSHBTNFLD(*RSTCSR (*NUMCOL 1))      
0065.00      A                                      TEXT(' 戻る ')                      
0066.00      A                                      PSHBTNCHC(1 '*PREV' CF12)           
0067.00      A                                 22  2'                                  -
0068.00      A                                                             '            
0069.00      A                                      DSPATR(UL)                          
0070.00       *******************************************************************       
0071.00      A          R DSPHEAD                                                       
0072.00       *******************************************************************        
0073.00      A                                      TEXT(' 初期画面 ')                   
0074.00      A*            11:59:33    QSECOFR     REL-R06M00  5714-UT1                  
0075.00      A                                      CF03(03 ' 終了 ')                    
0076.00      A                                      ROLLUP(07)                           
0077.00      A                                      ROLLDOWN(08)                         
0078.00      A                                      BLINK                                
0079.00      A                                  1 21' 部品検収の入力 '                   
0080.00      A                                      DSPATR(HI)                           
0081.00      A                                  2 40' 検収日 '                           
0082.00      A            BKDATE         8Y 0B  2 49                                     
0083.00      A                                      EDTCDE(W)                            
0084.00      A                                  3  2' 部品コード '                       
0085.00      A            BKNCOD        12A  B  3 17TEXT(' 部品コード ')                 
0086.00      A                                 11 13' 部品コードを入れて +               
0087.00      A                                       実行キーを押してください '          
0088.00      A                                      DSPATR(HI)                           
0089.00      A            F3FLD          2Y 0B 23  2PSHBTNFLD(*RSTCSR (*NUMCOL 1))       
0090.00      A                                      TEXT(' 終了ボタン ')                 
0091.00      A                                      PSHBTNCHC(1 '*END' CF03)             
0092.00       *******************************************************************        
0093.00      A          R ENDOPT                                                         
0094.00       *******************************************************************        
0095.00      A                                      TEXT(' 終了画面 ')                   
0096.00      A                                      CF03(03 ' 終了 ')                   
0097.00      A                                      CSRLOC(LIN        POS)              
0098.00      A                                  1 34' 終了 '                            
0099.00      A                                      COLOR(PNK)                          
0100.00      A                                      DSPATR(HI)                          
0101.00      A                                  3  2' 処理されたレコード数 '            
0102.00      A                                  5 10' 追加  . . . . . :'                
0103.00      A            ADDREC         5Y 0O  5 35EDTCDE(4)                           
0104.00      A                                  6 10' 変更  . . . . . :'                
0105.00      A            CHGREC         5Y 0O  6 35EDTCDE(4)                           
0106.00      A                                  7 10' 削除  . . . . . :'                
0107.00      A            DLTREC         5Y 0O  7 35EDTCDE(4)                           
0108.00      A                                 11  2' 選択項目を打鍵して,実行キーを押 +
0109.00      A                                       してください。 '                   
0110.00      A                                      COLOR(BLU)                          
0111.00      A                                 13  5' データ入力の終了  . . . . . .'    
0112.00      A            ANS            1A  B 13 39VALUES('Y' 'N')                     
0113.00      A                                 13 53'Y=YES, N=NO'                       
0114.00      A            F3FLD          2Y 0B 23  2PSHBTNFLD(*RSTCSR (*NUMCOL 1))      
0115.00      A                                      TEXT(' 終了ボタン ')                
0116.00      A                                      PSHBTNCHC(1 '*END' CF03)            
0117.00      A            PREV           2Y 0B 23 15PSHBTNFLD(*RSTCSR (*NUMCOL 1))      
0118.00      A                                      TEXT(' 戻る ')                      
0119.00      A                                      PSHBTNCHC(1 '*PREV' CF12)           
0120.00      A            LIN            3S 0H
0121.00      A            POS            3S 0H


[解説]

写真として表示されているテキスト・エリアのフィールドは

0043.00      A                                      COLOR(BLU)                           
0044.00      A                                  9  2' 写真 '                             
0045.00      A            BPHOTO       504A  B  9 17TEXT(' 写真 =42 桁 * 12 行表示 *IMA- 
0046.00      A                                      GE')                                 
0047.00      A                                      CNTFLD(042)

である。
このフィールド : BPHOTO は 504バイトの長さであるが CNTFLD(042) によって42桁の幅として
表示されている。
従って 504 / 42 = 12行の表示である。
データ・ベース上では 504バイトのフィールドとして処理されているはずである。

参考までにこの画面をAutoWebで表示すると

[解説]

写真フィールドは完全なテキスト・エリアとして表示されているだけでなく
押しボタンがアイコン・ボタンとして表示されていることに注意して欲しい。
AutoWebではアイコン・ボタンの表示や絵文字の入力も可能になっている。
もちろん写真を撮って貼り付けることもできる。

AutoWebの画像処理はIBM iのインターフェースのイメージを大幅に変革したのである。

– AutoWebの画像処理はくわしくはこちらで