RPGによるコーディング 会話型処理(1)
前ページ 次ページ 目 次


RPGによるコーディング方法を取り上げます。随時増ページの予定です。




画面ファイルを使用した会話型処理

ここでは画面からの入力によって、得意先マスターファイル(M420)を更新するケースを
想定します。レコードの追加、変更、削除の処理をまとめて更新ということにします。


シナリオ(ロジック)

会話型処理の方法はいろいろなやりかたがありますが、ここでは、第1画面、第2画面、・・・と
進行し、処理が正常に終了すれば、また第1画面に戻るというシナリオで話しをすすめます。
この方法だと、各画面の独立性が高く、処理も簡単で、デバッグなどにおいて注意を配る
必要のある範囲が広がらないという利点があります。そのロジックは次のようになります。


終了キー(F3キー)が押されるまで以下の処理を繰り返します。

画面番号により以下の処理
1.第一画面のとき
マスターファイル更新のキー部分を取得のための画面を表示します。
第一画面から入力を取得します。
  1.1 F3キーのとき、プログラム終了します。
  1.2 F6キーのとき、処理モードを切替します。
  1.3 実行キーのとき、入力チェックをします。
     OKなら第二画面への画面番号にします。

2.第二画面のとき
マスターのデータ部分取得のための画面を表示します。
第二画面から入力を取得します。
  2.1 F12キーのとき、第一画面への番号にします。
  2.2 実行キーのとき入力チェックをします。
     結果OKなら更新確認状態にします。
     結果OKですでに更新確認状態であれば、ファイルを更新します。
     画面番号を1にします。


ここで説明するのは、第1・第2の2枚の画面のケースですが、この方法では画面が何枚ふえても、
第3画面のとき、第4画面のとき、・・・のようにプログラムを拡張してゆくことができます。


プログラム作成の前準備

RPGプログラムを作成するまえに、プログラムが必要とするファイルを作成しておく必要があ
ります。ここでは、画面ファイル(RM420S)と、マスターファイル(M420)です。

画面ファイル

画面ファイルは以下のような2枚の画面からなるものとします。

第1画面(キー部分入力画面)

 RM420       追加              得意先マスター更新            0/08/21  12:02:11 
                                                                               
  得意先                                                                     
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
 F3= 終了  F6= 処理選択                                                        
                                                                               

第2画面(データ部分入力画面)

 RM420       追加              得意先マスター更新            0/08/21  12:02:34  
                                                                              
  得意先  55555                                                               
                                                                                
  得意先名   五目そば商店株式会社                                              
  カナ名称  ゴモクソバショウテン(カブ)                                                   
  TEL    05-5555-5555                                                     
  担当営業  5555                                                               
  売上実績                                                                     
                                                                               
                                                                               
                                                                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
 F12= 取消                                                                      
                                                                             

この画面の定義記述(DDS)は次のようになります。

     A*-----------------------------------------------------------  
     A* ID    : RM420S                                              
     A* NAME  : 得意先マスター更新画面                              
     A*-----------------------------------------------------------  
     A                                       INDARA                 
     A          R FMT01                      OVERLAY  PROTECT       
     A                                       CF03 CF06              
     A*                                                             
     A            S1PGID        10A  O  1  2 TEXT('PGM-ID')         
     A            S1MOD          6O       +1 TEXT(' 処理モード ')   
     A                                  1 31' 得意先マスター更新 '  
     A                                       DSPATR(RI)             
     A                                  1 61 DATE  EDTCDE(Y)        
     A                                  1 71 TIME                   
     A*                                                             
     A                                  3  2 ' 得意先 '           
     A            S1TKNO         5A  B    +1TEXT(' 得意先 ')      
     A  31                                   DSPATR(PC RI)          
     A          R FMT02                      OVERLAY  PROTECT     
     A                                       CF12                 
     A                                       CHANGE(29)           
     A*                                                           
     A                                  5  2 ' 得意先名 '         
     A            S1NMKJ        42O  B    +1TEXT(' 得意先名 ')    
     A  32                                   DSPATR(PC RI)        
     A  28                                   DSPATR(PR)           
     A                                  6  2 ' カナ名称 '         
     A            S1NMKN        20A  B    +1TEXT(' カナ名称 ')    
     A  33                                   DSPATR(PC RI)        
     A  28                                   DSPATR(PR)           
     A                                  7  2 ' TEL   '         
     A            S1TEL         12A  B    +1TEXT(' TEL   ')    
     A  28                                   DSPATR(PR)           
     A                                  8  2 ' 担当営業 '         
     A            S1SLNO         4A  B    +1TEXT(' 担当営業 ')    
     A  28                                   DSPATR(PR)           
     A                                  9  2 ' 売上実績 '         
     A            S1URGK        11Y 0O    +1TEXT(' 売上実績 ')    
     A                                      EDTCDE(K)             
     A*-----------------------------------------------------------     
     A          R FMT99                                                
     A  01                             23  2 'F3= 終了  F6= 処理選択 ' 
     A  02                             23  2 'F12= 取消 '              
     A            S9MSG         78A  O 24  1TEXT(' MSG   ')         



第1画面

第1画面はFMT01とFMT99の2つの様式から構成されます。
FMT01はキーデータ入力のための様式、FMT99はキーガイド、メッセージ表示の様式です。

第2画面

第2画面はFMT01,FMT02,FMT99の3つの様式から構成されます。
FMT01、FMT99は上記に同じ。FMT02はデータ部入力のための様式です。


物理ファイル

更新対象となるファイルは次のように定義されているものとします。

  物理ファイル名   WRKLIB/M420                                              
  レコード様式名   M420R             

 項目名       桁数    属性       欄見出し
 TKSTS           1      A        状態           
 TKTKNO          5      A        得意先       
 TKNMKJ         42      O        得意先名       
 TKNMKN         20      A        得意先カナ名   
 TKTEL          12      A        TEL         
 TKSLNO          4      A        担当営業     
 TKFLAG          1      A        フラグ         
 TKURJS         11  0   S        売上実績       


制御仕様書(H仕様書)

通常のコーディングです。

 ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
     H            Y-                                                   

ファイル仕様書

画面ファイル(RM420S)を使用するときは、15,16カラムをCFとします。
Cは入出力両用の意味です。装置はWORKSTNとします。

更新対象のマスターファイル(M420)は、変更、削除ありなので15,16カラムをUFと
します。またキーによるアクセスなので、31カラムをKとします。装置はDISK,レコードの
追加あり(WRITE命令使用)なので、64カラムにAを記述します。
MSGFは、メッセージテキストを実行開始時に、MSGテーブルにローディングするためのもの
です。50バイトのレコード長の単純なファイルで、入力専用のテーブルファイルなので、15,
16カラムをITとしています。また外部記述を使用しないので19カラムはFとし、26,27
カラムにレコード長(50)を記述します。さらに、拡張仕様書(E仕様書)でテーブルの追加の
記述が必要なので、39カラム目にEを記述します。装置はDISKです。

 ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
     FRM420S  CF  E                    WORKSTN                         
     FM420    UF  E           K        DISK                      A     
     FMSGF    IT  F      50           EDISK                            

拡張仕様書(E仕様書)

テーブルMSGにデータをローディングするために、11〜18カラムで上記のMSGFを指定
します。1レコードあたりのデータ数は1、レコード件数は5、データの長さは50を指定します。

 ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
     E                    MOD     1   4  6                             
     E    MSGF            MSG     1   5 50                             

処理モード名(追加・変更・削除)を準備するために、MODを定義します。データはプログラムの
末尾に準備します。

シナリオ制御用の画面番号

次はどの番号の画面かを示す、画面制御用にフィールドを準備します。
演算仕様書(C仕様書)で定義しても差し支えありませんが、制御用のフィールドのような
重要なものはきっちりと、入力仕様書で定義するのもひとつの方法です。

 ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
     I            DS                                                   
     I I            01                        1   20W@FMT              

基本処理の流れ

基本処理の流れは、初期処理、主処理、終了処理です。
このパターンはどのようなプログラムでも共通にできます。

     C* 初期処理                                                      
     C                     EXSR SBINZ                                 
     C* 主処理                                                        
     C                     EXSR SBMAIN                                
     C* 終了処理                                                      
     C                     EXSR SBEND                                 

主処理の中の流れ

主処理では終わりがリクエストされるまで、繰り返し処理をします。
終わりのリクエストはF3キーの押下で、RPGプログラムでは*INKCが*ONとして認識
されます。第1画面に関する処理はSB1000とその配下のプログラムに、第2画面は同じく
SB2000とその配下のプログラムの一手販売とします。

      C*          SBMAIN    主処理                                     
      C*---------------------------------------------------------------
      C           SBMAIN    BEGSR                                      
      C*                                                               
 +----C           *INKC     DOWEQ*OFF                                  
 |+---C           W@FMT     CASEQ01        SB1000            第一画面  
 |+---C           W@FMT     CASEQ02        SB2000            第二画面  
 |+---C                     ENDCS                                      
 +----C                     ENDDO                                      
      C*                                                               
      C                     ENDSR                                      

第一画面の処理

第1画面の処理の役目は、正しいキー部分のデータを入手することです。
画面のリクエスト番号が1である間、繰り返し処理をします。

画面表示の前準備

標識の01番02番を1,0とセットします。これは画面ファイルで記述した第1第2画面のキー
ガイドを標識いよって、表示/非表示操作をするためです。
RPGではこのような標識を使った操作はよく使われます。

     C* 第一画面向けセット                                              
     C                     MOVEA'10'      *IN,01                      
標識セットはSETON、SETOF命令でするのがすじですが、ここではMOVEA命令で1行ですませています。


第1画面の表示

FMT99とFMT01で第一画面なので、FMT99をWRITE,FMT01はEXFMTで入出力します。

画面からの入力による処理

画面からの入力は、入力データとアテンション・キーの情報があります。
アテンション・キーとはワーク・ステーションからデータ転送をする引き金になったキーで
実行キーのほかにF01〜F24キー、スクロールキー、PRINTキーなどがあります。
ここででてくるのはF03、F06、実行キーなどです。それぞれ次のような約束にしています。
F03:終了リクエスト
F06:処理モード切替え

RPGではF03は*INKC,F06は*INKFとして認識されます。

データ入力後の処理

第1画面では、F03、F06、実行キーの3ケースの処理があります。
それぞれに対応した処理をコーディングします。すなわち
F03のとき、終了リクエストなのでここの繰返しを抜けるようにセットします。
F06のとき、処理モード変更リクエストなので、そのための内部サブを呼び出します。
実行キーのとき、入力データの妥当性チェックの内部サブ(SB1230)を呼び出します。
チェックOK(*いN30=*OFF)なら、次の画面を2とし、ファイルからの読取りデータを
画面にセットする内部サブ(SB1250)を呼び出します。

コーディングは次のようになります。

     C*          SB1000    第一画面処理                               
     C*---------------------------------------------------------------
     C           SB1000    BEGSR                                      
     C*                                                               
     C* 第一画面へセット                                              
     C                     MOVEA'10'      *IN,01                      
     C*                                                               
+----C           W@FMT     DOWEQ01                                    
|    C* 第一画面表示                                                  
|    C                     WRITEFMT99                                 
|    C                     EXFMTFMT01                                 
|    C                     MOVE *BLANK    S9MSG                       
|    C*                                                               
|+---C                     SELEC                                      
||   C* F3                                                            
|+---C           *INKC     WHEQ *ON                                   
||   C                     Z-ADD00        W@FMT             終了要求  
||   C* F6                                                            
|+---C           *INKF     WHEQ *ON                                   
||   C                     EXSR SB1220                      処理変更  
||   C* ENTER                                                         
|+---C                     OTHER                                       
||   C                     EXSR SB1230                      実行キー   
||+--C           *IN30     IFEQ *OFF                                   
|||  C                     EXSR SB1250                      画面へ セット 
||+--C                     ENDIF                                       
||   C*                                                                
|+---C                     ENDSL                                       
+----C                     ENDDO                                       
     C*                                                                
     C                     ENDSR                                       

処理変更、チェック、画面へセットの処理については省略します。


第2画面の処理

第2画面の処理の役目は、正しいデータ部分のデータを入手することです。
画面のリクエスト番号が2である間、繰り返し処理をします。

前準備

標識の01番02番を0,1とセットします。これは画面ファイルで記述した第1第2画面のキー
ガイドを標識で、表示/非表示の操作するためです。
また削除モードのとき、マスターファイルから読みとって表示する画面のデータは変更しても
無意味なので、変更できないようにプロテクトの標識(28)を*ONにします。
削除でない場合は、プロテクトしないので*OFFにします。

     C* 第二画面向けセット                                                     
     C                     MOVEA'01'      *IN,01                       

第2画面の表示

第2画面はFMT99とFMT01,FMT02なので、FMT99,FMT01をWRITE,
FMT02はEXFMTで入出力します。

画面からの入力による処理

ここでのアテンションキーはF12と実行キーのみです。
F12は第2画面から第1画面へもどるリクエストなので画面番号を1にします。
実行キーはデータ部の入力なのでチェックを行い、正しければファイルの更新を行います。
これは内部サブ(SB2250)を呼び出して行います。

コーディングは次のようになります。

     C*          SB2000    第二画面処理                                
     C*--------------------------------------------------------------- 
     C           SB2000    BEGSR                                       
     C*                                                                
     C* 第二画面へセット                                                     
     C                     MOVEA'01'      *IN,01                       
     C                     MOVE *BLANK    S9MSG             ERR-MSG    
+----C           W@MOD     IFEQ 04                          削除       
|    C                     SETON                     28     プロテクト     
|    C                     MOVELMSG,4     S9MSG             更新確認   
+----C                     ELSE                                        
|    C                     SETOF                     28     NONプロテクト  
+----C                     ENDIF                                       
     C*                                                                
+----C           W@FMT     DOWEQ02                          第二画面   
|    C* 画面表示                                                       
|    C                     WRITEFMT99                                  
|    C                     WRITEFMT01                                  
|    C                     EXFMTFMT02                                  
|    C                     MOVE *BLANK    S9MSG                        
|    C*                                                              
|+---C                     SELEC                                     
|+---C           *INKL     WHEQ *ON                         取消キー 
||   C                     Z-ADD01        W@FMT                      
|+---C                     OTHER                                     
||   C                     EXSR SB2230                      実行キー 
|+---C                     ENDSL                                     
+----C                     ENDDO                                     
     C*                                                              
     C                     ENDSR                                     

エラーチェックと表示

画面からの入力データはいつも正しいとは限らないので、エラーチェックを行います。
そして、正しくなければそれを画面に表示します。
エラーの有無は画面フィールドに標識番号を対応させ、該当のフィールドにエラーがあればその
標識を*ONにします。この標識は画面ファイルで「カーソル位置付け」「反転高輝度」の属性に
関連づけておき、操作員にエラーの確認をしやすくしておきます。
たとえば得意先名の入力なしはエラーとして、そのフィールドには標識32を関連づけるとすると
画面ファイルの記述は次のようになります。

     A                                  5  2 ' 得意先名 '            
     A            S1NMKJ        42O  B    +1TEXT(' 得意先名 ')       
     A  32                                   DSPATR(PC RI)           
     A  28                                   DSPATR(PR)              

この例で、標識28は先にでてきたように削除の場合、入力フィールドをプロテクトするためのものです。

ファイルの更新確認と更新

エラーがなければファイルの更新ですが、ここでは1度目は確認のメッセージのみ、画面訂正なし
で2度目のエラーなしのとき、ファイル更新をします。
そのために、画面ファイルで画面訂正の有無を感知するため、CHANGEパラメータを記述し、
標識29を定義しています。CHANGEパラメータを使用すると、画面のデータを訂正して転送すると、
該当の標識(ここでは29)が*ONになります。

     A          R FMT02                      OVERLAY  PROTECT   
     A                                       CF12               
     A                                       CHANGE(29)         

ファイル更新の内部サブ(SBUPD)が呼ばれるのは、
チェックでエラーなしで、かつ、画面訂正なし、のときです。
更新後は、当然第1画面へ戻るので画面番号1をセットします。

コーディングは次のようになります。

     C*          SB2230    第二画面のチェック                        
     C*--------------------------------------------------------------
     C           SB2230    BEGSR                                     
     C*                                                              
     C* 属性の取得                                                   
     C*     (名前などの取得)                                       
     C* エラーチェック                                               
     C                     SETOF                     303233          
     C* 得意先名入力なしはエラー                                     
+----C           S1NMKJ    IFEQ *BLANK                               
|    C                     MOVELMSG,3     S9MSG              要入力  
|    C                     SETON                     3032            
+----C                     ENDIF                                     
     C* 得意先カナ名入力なしはエラー                                 
+----C           S1NMKN    IFEQ *BLANK                               
|    C                     MOVELMSG,3     S9MSG              要入力  
|    C                     SETON                     3033            
+----C                     ENDIF                                     
     C* 更新確認/更新                                                
+----C           *IN30     IFEQ *OFF                        NO-ERROR  
|+---C           *IN29     IFEQ *OFF                        NO-CHANGE 
||   C                     EXSR SBUPD                                 
||   C                     Z-ADD01        W@FMT                       
|+---C                     ELSE                             CHANGED   
||   C                     MOVELMSG,4     S9MSG             更新確認  
|+---C                     ENDIF                                      
+----C                     ENDIF                                      
     C*                                                               
     C                     ENDSR                                      


RPG全ソースリストは次のとおりです。

     **---------------------------------------------------------------
     ** ID   : RM420
     **
     ** NAME :得意先マスター更新
     **
     ** FUNC :標記第一画面を表示し、画面から更新する得意先Yが
     **       入力されたなら、その妥当性をチェックする。
     **       OKなら第二画面を表示する。第二画面でデータが
     **       入力されたなら、その妥当性をチェックし、OKなら
     **       マスターファイルを更新し、第一画面にもどる。
     **       F06キーが押されたときは、追加・変更・削除と順に処理
     **       モードを切り替える。
     **
     ** NOTE :
     **   *IN29 モディファイフラグ  *ON: MODIFIED
     **   *IN30 エラーフラグ        *ON: ERR  *OFF:OK
     **
     **---------------------------------------------------------------
     H            Y-
     F*---------------------------------------------------------------
     FRM420S  CF  E                    WORKSTN
     FM420    UF  E           K        DISK                      A
     FMSGF    IT  F      50           EDISK
     E*---------------------------------------------------------------
     E                    MOD     1   4  6
     E    MSGF            MSG     1   5 50
     I            DS
     I I            01                        1   20W@FMT
     C*---------------------------------------------------------------
     C*初期処理
     C                     EXSR SBINZ
     C*主処理
     C                     EXSR SBMAIN
     C*終了処理
     C                     EXSR SBEND
     C*
     C*---------------------------------------------------------------
     C*          SBMAIN   主処理
     C*---------------------------------------------------------------
     C           SBMAIN    BEGSR
     C*
+----C           *INKC     DOWEQ*OFF
|+---C           W@FMT     CASEQ01        SB1000           第一画面
|+---C           W@FMT     CASEQ02        SB2000           第二画面
|+---C                     ENDCS
+----C                     ENDDO
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SBINZ    初期処理
     C*---------------------------------------------------------------
     C           SBINZ     BEGSR                           .INZ
     C*
     C                     Z-ADD04        W@MOD   70       処理モード
     C                     SETOF                     30     SET NO-ERR
     C*
     C                     MOVEL'RM420'   S1PGID            PGM-ID
     C                     EXSR SB1220                     処理選択
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SB1000   第一画面処理
     C*---------------------------------------------------------------
     C           SB1000    BEGSR
     C*
     C*第一画面へセット
     C                     MOVEA'10'      *IN,01
     C*
+----C           W@FMT     DOWEQ01
|    C*第一画面表示
|    C                     WRITEFMT99
|    C                     EXFMTFMT01
|    C                     MOVE *BLANK    S9MSG
|    C*
|+---C                     SELEC
||   C* F3
|+---C           *INKC     WHEQ *ON
||   C                     Z-ADD00        W@FMT            終了要求
||   C* F6
|+---C           *INKF     WHEQ *ON
||   C                     EXSR SB1220                     処理変更
||   C* ENTER
|+---C                     OTHER
||   C                     EXSR SB1230                     実行キー
||+--C           *IN30     IFEQ *OFF
|||  C                     EXSR SB1250                     画面へセット
||+--C                     ENDIF
||   C*
|+---C                     ENDSL
+----C                     ENDDO
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SB1220   処理モード決定    ADD ->CHG ->DEL
     C*---------------------------------------------------------------
     C           SB1220    BEGSR
     C*
+----C                     SELEC
+----C           W@MOD     WHEQ 01
|    C                     Z-ADD02        W@MOD            変更
+----C           W@MOD     WHEQ 02
|    C                     Z-ADD04        W@MOD            削除
+----C           W@MOD     WHEQ 04
|    C                     Z-ADD01        W@MOD            追加
+----C                     ENDSL
     C*
     C                     MOVELMOD,W@MOD S1MOD            モード名
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SB1230   実行キーが押されたときの処理
     C*---------------------------------------------------------------
     C           SB1230    BEGSR
     C*
     C                     SETOF                     3031   ERR-OFF
     C                     CLEARM420R
     C*試し読み
     C           S1TKNO    CHAINM420R                99
+----C           *IN99     IFEQ *OFF
|+---C           W@MOD     IFEQ 01                          ADD
||   C                     MOVELMSG,2     S9MSG            重複
||   C                     SETON                     3031
|+---C                     ENDIF
+----C                     ELSE
|+---C           W@MOD     IFGE 02                          CHG OR DEL
||   C                     MOVELMSG,1     S9MSG            該当なし
||   C                     SETON                     3031
|+---C                     ENDIF
+----C                     ENDIF
     C*OKなら第二画面へ
+----C           *IN30     IFEQ *OFF
|    C                     Z-ADD02        W@FMT
+----C                     ENDIF
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SB1250   マスターから画面へセット
     C*---------------------------------------------------------------
     C           SB1250    BEGSR
     C*
     C                     CLEARFMT02
     C*
+----C           W@FMT     IFGE 02                          CHG OR DEL
|    C                     MOVELTKNMKJ    S1NMKJ           得意先名
|    C                     MOVELTKNMKN    S1NMKN           得意先カナ
|    C                     MOVELTKTEL     S1TEL            電話番号
|    C                     MOVELTKSLNO    S1SLNO           担当営業
|    C                     Z-ADDTKURJS    S1URGK           売上実績
+----C                     ENDIF
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SB2000   第二画面処理
     C*---------------------------------------------------------------
     C           SB2000    BEGSR
     C*
     C* SET TO SCR
     C                     MOVEA'01'      *IN,01
     C                     MOVE *BLANK    S9MSG             ERR-MSG
+----C           W@MOD     IFEQ 04                         削除
|    C                     SETON                     28     プロテクト
|    C                     MOVELMSG,4     S9MSG            更新確認
+----C                     ELSE
|    C                     SETOF                     28     NONプロテクト
+----C                     ENDIF
     C*
+----C           W@FMT     DOWEQ02                         第二画面
|    C*画面表示
|    C                     WRITEFMT99
|    C                     WRITEFMT01
|    C                     EXFMTFMT02
|    C                     MOVE *BLANK    S9MSG
|    C*
|+---C                     SELEC
|+---C           *INKL     WHEQ *ON                        取消キー
||   C                     Z-ADD01        W@FMT
|+---C                     OTHER
||   C                     EXSR SB2230                     実行キー
|+---C                     ENDSL
+----C                     ENDDO
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SB2230   第二画面のチェック
     C*---------------------------------------------------------------
     C           SB2230    BEGSR
     C*
     C*属性の取得
     C*    (名前などの取得)
     C*エラーチェック
     C                     SETOF                     303233
     C*得意先名入力なしはエラー
+----C           S1NMKJ    IFEQ *BLANK
|    C                     MOVELMSG,3     S9MSG             要入力
|    C                     SETON                     3032
+----C                     ENDIF
     C*得意先カナ名入力なしはエラー
+----C           S1NMKN    IFEQ *BLANK
|    C                     MOVELMSG,3     S9MSG             要入力
|    C                     SETON                     3033
+----C                     ENDIF
     C*更新確認/更新
+----C           *IN30     IFEQ *OFF                        NO-ERROR
|+---C           *IN29     IFEQ *OFF                        NO-CHANGE
||   C                     EXSR SBUPD
||   C                     Z-ADD01        W@FMT
|+---C                     ELSE                             CHANGED
||   C                     MOVELMSG,4     S9MSG            更新確認
|+---C                     ENDIF
+----C                     ENDIF
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SBUPD    ファイル更新
     C*---------------------------------------------------------------
     C           SBUPD     BEGSR
     C*
     C                     MOVELS1TKNO    TKTKNO           得意先Y
     C           TKTKNO    CHAINM420R                99
     C* ファイルへ編集
     C                     MOVELS1NMKJ    TKNMKJ           得意先名
     C                     MOVELS1NMKN    TKNMKN           得意先カナ
     C                     MOVELS1TEL     TKTEL            電話番号
     C                     MOVELS1SLNO    TKSLNO           担当営業
     C*
+----C           *IN99     IFEQ *OFF
|+---C           W@MOD     IFEQ 02                         更新
||   C                     UPDATM420R
|+---C                     ELSE
||   C                     DELETM420R
|+---C                     ENDIF
+----C                     ELSE
|    C                     WRITEM420R
+----C                     ENDIF
     C*
     C                     CLEARM420R
     C                     CLEARS1TKNO
     C                     CLEARFMT02
     C                     Z-ADD01        W@FMT            第一画面へ
     C*
     C                     ENDSR
     C*---------------------------------------------------------------
     C*          SBEND    終了処理
     C*---------------------------------------------------------------
     C           SBEND     BEGSR
     C*
     C                     SETON                     LR
     C                     RETRN
     C*
     C                     ENDSR
** MOD **
追加
変更

削除


なお、1〜5カラムにあるネスト表示は自作のネスト構造解析プログラムでソースに付加したものです。




前ページ 次ページ 目 次

(C)COPYRIGHT ISHIOKA KATSUHIDE 2000