COBOL その2
前ページ 次ページ 目 次


このページはCOBOLを知っている人あるいは、RPGプログラマーを対象として、
AS/400でのCOBOLを紹介しようとするものです。
COBOLを初歩から解説するものではありません。
ここで紹介するCOBOLは、ILE−COBOLです。



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


シナリオ(ロジック)

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


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

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

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

     3.ファイル更新の要求状態ならファイルを更新します。

第一画面
 RM420       追加              得意先マスター更新            0/04/24  14:58:36 
                                                                               
  得意先  55555                                                              
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
 F3= 終了  F6= 処理選択                                         

第二画面
 RM420       追加              得意先マスター更新            0/04/24  14:59:17
                                                                              
  得意先  55555                                                             
                                                                              
  得意先名   第五商店・・・・・・・・・・・・・・・・                         
  カナ名称  ダイゴショウテン.........;                                              
  TEL    5555-5555                                                         
  担当営業  5555                                                              
  売上実績                                                                    
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
 F12= 取消                                                           


画面処理の要点

画面処理の要点は次の通りです。
1.画面ファイルのDDSを生成
フィールドをCOBOL禁忌の文字を使用しない。INDARAを使用する。
2.SELECT
接続装置をWORKSTATION,編成をTRANSACTIONとする。
3.Fキー
Fキー用のコントロールエリアを記述する。
4.入力様式、出力様式
WORKING−STRAGE SECTIONに入力様式、出力様式を定義する。
5.独立標識域
INDARA用の定義をWORKING−STRAGE SECTIONに定義する。
6.標識の定義
必要あれば、プログラムで使用する標識をWORKING−STRAGE
SECTIONに定義する。
7.画面への表示
画面へ出力はFORMAT、INDICATORSをつけてWRITEする。
8.画面からのデータ入力
画面からのデータ入力はFORMATを指定してREADする。


画面ファイルのSELECT

画面ファイル処理の場合、SELECT文では接続装置をWORKSTATIONとし、
編成をTRANSACTIONとします。
画面ファイルは標識をレコード内ではなく、独立標識域として定義するのが便利です。
そのためには画面ファイル(DSPF)のファイルレベルの記述で、INDARAキーワードを
与えます。
押されたFキーの種類の取得はSELECT文でコントロールエリアを記述し、その中で
Fキーの番号を取得します。


SELECT文の例:
      *                                        INDARA 使用の時↓  
           SELECT  FILE2  ASSIGN          WORKSTATION-RM420S-SI  
                          ORGANIZATION    TRANSACTION            
                          CONTROL-AREA    CTL-AREA.              
注:独立標識域をとったファイルの場合、外部ファイルにSI属性を与えます。


コントロールエリア

コントロールエリアを下記のように、WORKING−STRORAGE SECTIONに
定義します。コントロールエリアのFKEYに、端末で押されたFキーの種類が番号で
入ります。
      * SELECT で指定したコントロールエリアを定義します。          
       01  CTL-AREA.                                               
           03  FKEY      PIC  X(2).                                
           03  DEV-NAME  PIC  X(10).                               
           03  REC-FMT   PIC  X(10).                      


FD項目

FDで外部記述をCOPYすると、各様式が同じ場所にREDEFINEされてしまいます。
このためプログラムでの処理操作が非常に面倒になります。
WORKING−STORAGEに各様式毎に、DDS−様式−I,DDS−様式−Oを
別々にCOPYして定義しておくと、この繁雑さをある程度防ぐことができます。
       WORKING-STORAGE  SECTION.                                    
      * 画面ファイルの様式ごとに入力、出力のエリアを定義します。    
       01  FMT01A.                                                  
           COPY  DDS-FMT01-I     OF RM420S.                         
       01  FMT01B.                                                  
           COPY  DDS-FMT01-O     OF RM420S.                         
       01  FMT02A.                                                  
           COPY  DDS-FMT02-I     OF RM420S.                         
       01  FMT02B.                                                  
           COPY  DDS-FMT02-O     OF RM420S.                         
       01  FMT99B.                                                  
           COPY  DDS-FMT99-O     OF RM420S.                
注:FMT99は出力フィールドだけで、入力フィールドはありません。


独立標識域

特に指定しないとき、標識はフィールドに混ざりあった形でレコード様式の中にとられます。
このような状態のとき、入力用エリアと出力用エリアがREDEFINEされて配置されると、
操作の仕方によっては、デバッグで苦労することになってしまいます。
DDSのファイルレベルで、INDARAパラメータをつけると、標識はレコード様式とは別の
区画にとられ、すくなくとも標識のためのフィールドの位置ずれによるトラブルだけはさけられ、
デバッグは多少楽になります。

INDARAキーワードにより独立標識域をとった場合、WORKING−STRAGEに標識域を
定義します。
このエリアをINDICATORS句で指定してREAD/WRITEを行います。
       * INDARA を定義したので、ワークに標識エリアを定義します。 
        01  FILE2-INDICS.                                        
            COPY  DDS-ALL-FORMATS-INDIC  OF RM420S.           


プログラムの中で必要となる標識

プログラムの中で必要となる標識は、WORKING−STORAGE SECTIONで
定義します。
      * 定数および、プログラムで使用する標識を定義します。 
       01  CONST.                                          
           03  X-ON           PIC  1  VALUE  B'1'.         
           03  X-OFF          PIC  1  VALUE  B'0'.         
           03  IN30           PIC  1  VALUE  B'0'.         
           03  IN99           PIC  1  VALUE  B'0'.         

ここで、IN30はエラーの有無、IN99は更新対象ファイル関連の読取り状態を示す
標識としています。
もちろん、標識を使用しないで、変数名を使用しても差し支えありません。
ここでは、RPGプログラマーのために、標識を使ってみました。


画面表示と入力データ取得

画面への表示はWRITE命令で行います。また、画面からの入力データ取得はREAD
命令です。
WRITE命令では、先にWORKING−STORAGEに定義した出力エリアにデータを
セットした後、様式と標識を指定して出力します。
下図では、様式FMT99とFMT01をセットにして第一画面としています。
      * 第一画面表示と画面からのデータ取得                    
           WRITE   FILE2R  FROM  FMT99-O  FORMAT  'FMT99'     
                           INDICATORS     FMT99-O-INDIC.      
           WRITE   FILE2R  FROM  FMT01-O  FORMAT  'FMT01'     
                           INDICATORS     FMT01-O-INDIC.      
           READ    FILE2   INTO  FMT01-I  FORMAT  'FMT01'.    


入力データ取得後の処理は、以下の処理を行います。

    1.Fキーのとき、そのFキーの機能のための処理。
       (例:1画面分戻る、必要ならプロンプト画面表示など)
2.実行キーのとき、 入力データから名称などの取得。 入力データのチェック、エラーならエラー標識などのセット。 OKなら次の処理(または画面)の準備。





前ページ 次ページ 目 次


(C)COPYRIGHT ISHIOKA KATSUHIDE 2000