DDS 画面ファイル(DSPF)
印刷ファイルへ 次ページ もどる 目次



AS/400では画面も一種のファイルとして扱います。したがってその記述もデータベース記述と同様の手法で行います。
データベースの記述と異なるのは、データベースが単一のレコード様式なのに、画面の場合は、
複数のレコード様式からなることと
フィールドの行カラム位置の指定および、表示属性があるいうことです。
ここでは画面ファイルをDSPFと呼ぶことにします。



簡単な例

 画面ファイルの簡単な例を紹介します。

 
  確認して下さい(Y/N) _                                




 この画面は、確認の応答を要求するもので、応答入力はYかNを 想定しています。
 
     **. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
     A          R FMT01                     TEXT('応答要求画面')
     A                                  2  3'確認して下さい(Y/N)'
     A            S1RES          1A  B    +1TEXT('応答')
              

最初の行は参考のためのスケールです。DDSのコーディングとして有効なのはその下3行のみです。

 17桁目のRはレコードレベルの記述で、レコード様式名が FMT01です。
45桁目からのTEXTはFMT01に対する注釈です。
 次の行の「確認して下さい(Y/N)」は固定値です。
 S1RESが画面の入出力フィールドの項目で、1A即ち1桁の文字、B即ち入出力と記述しています。

処理プログラム

画面ファイルのための処理プログラム(RPG)を紹介します。

     **. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
 @  FA110S   CF  E                    WORKSTN       
     C*
 A  C           *ENTRY    PLIST
 A  C                     PARM           S1RES   1        応答
     C*  画面ループ処理
+B--C           S1RES     DOUEQ'Y'
|B  C           S1RES     OREQ 'N'
|C  C                     EXFMTFMT01
+D--C                     ENDDO
     C*
 E  C                     SETON                     LR
    C                     RETRN                             

このプログラムは上記画面を表示し、画面から’Y’か’N’が入力されると終了します。
それ以外が入力されたときは、画面表示を繰り返します。

先頭は参考用のカラムスケールです。

@の行はプログラムで使用するファイル(すなわち画面ファイル)を記述しています。
 15カラム目のCが会話型のファイルであることをしめしています。
 装置はWORKSTNすなわちワークステーションです。
Aの行*ENTRY  PLISTとPARM・・・・はCOBOLでのUSINGに相当し、パラメータの記述です。
BはS1RESが’Y’’N’になるまで繰返し処理を指定しています。
 COBOLではPERFORM  UNTIL・・・に相当します。
CのEXFMTは画面との入出力で、画面様式FMT01を入出力しています。
 COBOLではWRITE命令とREAD命令を会わせた機能をもちます。
Dは繰返し範囲の終了で、COBOLではEND−PERFORMに相当します。
EはRPGプログラムのお約束ごとで、LRすなわちLAST RECORDのスイッチをオンにしています。
 スイッチがONになると、RPGは使用していた資源を開放して終了します。




得意先マスター更新画面のDSPF


この画面は大きく3区画で構成しています。


区画1:タイトルとキーとなるフィールドを表示、入力する部分               
様式名:FMT01
区画2:データとなる部分を表示、入力する部分
様式名:FMT02







区画3:Fキーのガイドおよび、エラーメッセージを表示する部分
様式名:FMT99


処理のシナリオは次のように想定しています。

1.マスターレコードのキーを取得する画面(第1画面)を表示し、キーを取得。
2.マスターレコードのデータを取得する画面(第2画面)を表示し、データを取得、マスターファイルを更新。

上記1.2.を繰返す。

第1画面は上記の区画1と区画3で、第2画面は区画1と区画2と区画3で構成するものとします。


サンプルを中心に見てゆきます。

得意先マスター更新画面のDSPF

第一画面 タイトルおよびキー部分の入力画面
 RM420       追加              得意先マスター更新           DD/DD/DD  TT:TT:TT 
                                                              
  得意先  BBBBB                                             
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
                                                              
 F3= 終了  F6= 処理選択                                       


第二画面 データ部の入力画面
 RM420       追加              得意先マスター更新                 
                                                                  
  得意先  AAAAA                                                 
                                                                  
  得意先名  BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB            
  カナ名称  BBBBBBBBBBBBBBBBBBBB                                  
  TEL    BBBBBBBBBBBB                                          
  業 種    BB                                                    
  売上実績  66,666,666,666-                                       
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
                                                                  
 F12= 取消                                                        


画面構成

第1画面はFMT01とFMT99から構成されます。
第2画面はFMT02とFMT02とFMT99から構成されます。




サンプル・コーディング
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A*-----------------------------------------------------------
     A* ID    : RM420S
     A* NAME  :得意先マスター更新画面
     A*-----------------------------------------------------------
     A          R FMT01                      OVERLAY  PROTECT
     A                                       CF03 CF06
     A*
     A            S1PGID        10A  O  1  2 TEXT('PGM-ID')
     A            S1MOD          6O  O    +1 TEXT('処理モード')
     A                                  1 31'得意先マスター更新'
     A                                       DSPATR(RI)
     A                                  1 61 DATE  EDTCDE(Y)  
     A                                  1 71 TIME             
     A*
     A                                  3  2 '得意先Y'
     A            S1TKNO         5A  B    +1TEXT('得意先Y')
     A  31                                   DSPATR(PC RI)
     A*-----------------------------------------------------------
     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            S1GYO          2A  B    +1TEXT('業 種  ')
     A  28                                   DSPATR(PR)
     A                                  9  2 '売上実績 '
     A            S1UR\         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 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A          R FMT01                      OVERLAY  PROTECT
     A                                       CF03 CF06
FMT01
レコード様式名です。
OVERLAY
表示済画面に重ね表示
PROTECT
先に出力されている別様式の画面の入力フィールドを入力禁止とします。
CF03、CF06
F3キー、F6キーの入力を有効とします。

フィールドの記述
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A            S1PGID        10A  O  1  2 TEXT('PGM-ID')
     A            S1MOD          6O  O    +1 TEXT('処理モード')
フィールド名S1PGID
長さ10バイト、出力専用、1行目の第2カラムから表示です。第1カラムにはフィールド属性文字が入ります。
フィールド名S1MOD
長さ6バイト、混用です。+1:このフィールドの開始位置は、前のフィールドの終りから1桁あけて始まります


固定情報
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A                                  1 31'得意先マスター更新'
     A                                       DSPATR(RI)
固定情報は45桁目以降に記入します。DSPATR(RI)は反転イメージ表示で、前の行の付属属性です。

付属情報の標識による制御
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A            S1TKNO         5A  B    +1TEXT('得意先Y')
     A  31                                   DSPATR(PC RI)
S1TKNOは標識31がオンのとき、DSPATR(PC RI)を有効にして表示されます。
PCはPUT CURSORで、カーソル位置づけです。R I は反転表示です。
この入力にエラーがあったとき、このフィールドを反転表示し、カーソルを位置付けする目的です。


タイムスタンプ
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A                                  1 61 DATE  EDTCDE(Y)  
     A                                  1 71 TIME             
DATE,TIME
DATE,TIMEはそのときのタイムスタンプです。
DATEはジョブ日付です。したがってCHGJOBコマンドでジョブ日付を変更した場合は、変更された日付になります。
EDTCDE(Y)
EDTCDE(Y)は、YY/MM/DDのような日付編集様式での編集することを指定します。


データ部の様式
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A          R FMT02                      OVERLAY  PROTECT
     A                                       CF12
     A                                       CHANGE(29)
FMT02
レコード様式名です。
CF12
F12キーを有効にします。
CHANGE(29)
モディファイ標識です。この様式の中でフィールドデータが変更されたとき、プログラムでは標識29がオンとなります。入力があったかどうかがこの標識で知ることができます。

付属情報の標識による制御
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A            S1NMKJ        42O  B    +1TEXT('得意先名')
     A  32                                   DSPATR(PC RI)
     A  28                                   DSPATR(PR)
標識32
S1NMKJは標識32がオンのとき、DSPATR(PC RI)を有効にして表示されます。エラー時の処理用です。
標識28
標識28がオンのとき、DSPATR(PR)を有効にします。PRは’プロテクト’で入力禁止状態です。
これは、削除処理のとき、無用な入力を防ぐことを目的としています。


数値項目
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A            S1UR\         11Y 0O    +1TEXT('売上実績')
     A                                      EDTCDE(K)
数字のみの表示フィールドを示します。
0O
サンプルではわかりにくいのですが、0Oの左は小数点以下の桁数、右はアルファベットので、出力のみの使用を示します。
EDTCDE(K)
Kは99,999,999,999− の様式の編集を指示する編集コードです。
    編集コードは画面ファイル、印刷ファイル、RPGの出力仕様書での編集指示すべてで共通です。
くわしくはは別ページを参照して下さい。



23、24行目の様式
....+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+.
     A          R FMT99
     A  01                             23  2 'F3=終了 F6=処理選択'
     A  02                             23  2 'F12=取消'
     A            S9MSG         78A  O 24  1TEXT('MSG  ')
FMT99
レコード様式名です。
固定情報フィールドの標識制御
F3、F6キーのガイドは第一画面用、F12キーは第二画面用です、標識01と02で有効範囲を使いわけています。
画面上ではフィールドが重なることは許されませんが、標識のオンオフで使い分けすると、同じ位置を占めることができます。
S9MSG
エラーメッセージ用です。エラーメッセージは24行目に表示するのが一般的です。


DSPATR
表示属性(DSPATR)には次のようなものがあります。
BL フィールドを明滅します。
CS フィールドの各桁の間に桁区切り線を表示します。
HI フィールドを高輝度で表示します。
MDT フィールドの変更データ・タグを意図的にオンにセットします。
ND フィールドのデータを表示しません。
PC カーソルをフィールドの最初の文字に位置づけます。
PR ユーザーがフィールドにデータを入力できないように指示します。
RI フィールドを反転イメージで表示します。
UL フィールドの下線つけを指示します。
注:フィールドに色付けするのは、DSPATRとは別に、COLORパラメータをつかいます。


モジュラス10、モジュラス11

モジュラス10および11によるチェックはは、使用コードの中に自己検査を可能にする数字を1文字いれて入力誤りを検出する方法です。

パラメータでCHECK(M10)とすると、そのフィールドはモジュラス10の自己検査アルゴリズムを
みたすデータでなければならないことを示します。またCHECK(M11)は同様に
モジュラス11の自己検査アルゴリズムを満たすデータでなければならないことを示します。

自己検査フィールドは、基数部分と右端に位置する検査数字からなりたっています。
たとえば、6543219は、654321が基数で9が検査数字です。

検査数字の求め方は次の通りです。

モジュラス10

1.基数の各桁に1のくらいから個別に重みとなる数(2,1,2,1,2,・・・)をかける
2.その結果あらわれてくる数字を全て加算する。2けたの数字の場合は個別の1桁の数、
2個とみなす。
3.この結果の1の位の補数を自己検査数とする。

例:基数が654321の場合
重みをかけると、6、10、4、6、2、2となるので、
6+1+0+4+6+2+2=21
1の位の1の補数9が自己検査数となる。


モジュラス11

1.基数の1の位から各桁に個別に、重みとなる数(2,3,4,5,6,7の繰返し)をかける
2.その積をすべて加算し、11の剰余を求める。
3.この剰余の補数を自己検査数とする。剰余が0の場合は、自己検査数は0とする
剰余が1のときは補数10のとなり2桁なので自己検査数はない。

例:基数が654321の場合
重みとなる数(7,6,5,4,3,2)をかけると、・・・・・・・・(上位からなので逆順になっている)
42、30、20、12、6、2となるので、

  42+30+20+12+6+2=112

この11の剰余は2、2の11の補数は9で自己検査数は9となる。

例:基数が23の場合

2*3+3*2=12

12の剰余は1なので、(11の)補数は10となり自己検査数を持つことができない。


以下に自己検査数をもとめるプログラムの例を示します。このプログラムでは15桁までの
基数に対し、自己検査数を求めます。
モジュラス10自己検査数を求めるプログラム
     H            Y-                                                  
     F*---------------------------------------------------------------
     E*                   配列名                                      
     E                    BAS        15  1 0              基数        
     E                    WHT    15  15  1 0              重み        
     E                    SEK        15  2 0              積          
     E                    WRK        30  1 0              積2        
     I*---------------------------------------------------------------
     I            DS                                                  
     I                                        1  300SEK               
     I                                        1  300WRK               
     I            DS                                                  
     I                                        1  150BAS               
     I                                        1  15 W1NUM             
     I                                        1  150W2NUM             
     C*---------------------------------------------------------------
     C           *ENTRY    PLIST                                      
     C                     PARM           P@NUM  15         基数      
     C                     PARM           P@CHK   1         検査数字  
     C*                                                               
     C                     MOVEL*BLANK    P@CHK             検査数字  
     C                     MOVELP@NUM     W1NUM                       
     C           BAS       MULT WHT       SEK                         
     C*                                                               
     C                     XFOOTWRK       W@SEK   70        積        
     C           W@SEK     DIV  10        W@WRK   70                  
     C                     MVR            W@MVR   70        あまり    
     C*                                                               
     C           W@MVR     IFGT 000                                   
     C                     ADD  1         W@WRK                       
     C                     ENDIF                                      
     C                     MULT 10        W@WRK                       
     C*                                                               
     C           W@WRK     SUB  W@SEK     W@CHK   70                  
     C                     MOVE W@CHK     P@CHK             検査数字  
     C*                                                               
     C                     SETON                     LR               
     C                     RETRN                                      
**                                                                    
212121212121212                                                       
モジュラス10自己検査数を求めるプログラム

     H            Y-      
     F*---------------------------------------------------------------
     E*                   配列名   
     E                    BAS        15  1 0              基数        
     E                    WHT    15  15  1 0              重み        
     E                    SEK        15  2 0              積          
     I*---------------------------------------------------------------
     I            DS                                                  
     I                                        1  150BAS               
     I                                        1  15 W1NUM             
     I                                        1  150W2NUM             
     C*---------------------------------------------------------------
     C           *ENTRY    PLIST                                      
     C                     PARM           P@NUM  15         基数      
     C                     PARM           P@CHK   1         検査数字  
     C*                                                               
     C                     MOVEL*BLANK    P@CHK             検査数字  
     C                     MOVELP@NUM     W1NUM                       
     C*                                                            
     C                     XFOOTSEK       W@SEK   70                  
     C           W@SEK     DIV  11        W@MVR   70                  
     C                     MVR            W@MVR             あまり    
     C                     SELEC                                      
     C           W@MVR     WHEQ 000                                   
     C                     MOVE *ZERO     P@CHK                       
     C           W@MVR     WHGT 001                                   
     C           11        SUB  W@MVR     W@CHK   70                  
     C                     MOVE W@CHK     P@CHK             CHK       
     C                     ENDSL                                      
     C*                                                               
     C                     SETON                     LR               
     C                     RETRN                                      
**                                                                    
432765432765432                                                       



DSPFの記述コーディングの入力

DSPFのコーディング入力は、SEU(Source Entry Utility)で行います。
SEUの開始は、STRSEUコマンドか、PDMのメンバーの処理におけるオプション2で行います。



画面ファイル(DSPF)の生成

DSPFの生成は、CRTDSPFコマンドで行います。

例:
CRTDSPF WRKLIB/RM420S WRKLIB/QDDSSRC

PDMのメンバー処理のオプション14でも生成ができます。(下図参照)
                           PDM を使用したメンバーの処理                S123456
  ファイル . . . .   QDDSSRC                                             
    ライブラリー .     WRKLIB                位置指定  . . . . . .     __________  
                                                                         
 OPT  メンバー       タイプ        テキスト                                       
      M420        PF                                                     
 14   RM420S      DSPF         得意先マスター更新画面                    
                                                                         
                                                                         




スクリーン・デザイン・エイド(SDA)による設計

PDMのメンバーの処理のオプション17で、SDAによる設計を行うことができます。
オプション17を入力して実行キーを押すと次のようなSDAの画面が表示されます。
このSDAでは設計作業全般が可能なのですが、説明は「イメージ」のチェックだけにとどめます。
                         表示レコードの処理                                   
                                                                              
  ファイル . . . . :   QDDSSRC                 メンバー  . . . . :   RM420S   
    ライブラリー . :     WRKLIB                原始仕様タイプ  . :   DSPF     
                                                                              
  オプションを入力して,実行キーを押してください。                            
   1= 追加        2= 注記の編集         3= コピー         4= 削除             
   7= 名前の変更  8= キーワードの選択  12= イメージの設計                     
                                                                              
 OPT  順序     レコード      タイプ    関連サブファイル   日付       DDS エラー  
                                                                              
         10    FMT01         RECORD                      00/04/06             
         20    FMT02         RECORD                      00/04/05             
         30    FMT99         RECORD                      00/04/05             
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                         終り 
 F3= 終了                    F12= 取消し     F14= ファイル・レベル・キーワード
 F15= ファイル・レベル注記   F17= サブセット   F24= キーの続き     


画面レイアウトの表示
上記画面で、オプション12のイメージの設計を選択すると、その様式のレイアウトが表示されます。(下図参照)
 OOOOOOOOOO OOOOOO             得意先マスター更新           DD/DD/DD  TT:TT:TT 
                                                                               
  得意先  BBBBB                                                              
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
  レコード FMT01 の作業画面:機能キーについては, HELP を押してください。      

これで、画面イメージが設計通りの配置になっているか確認できます。確認後はF3キーで終了して下さい。

注:この画面で、フィールドの追加、削除、移動などが可能です。
(SDAでは画面に関する記述・生成すべてが可能です。SDAについては、別ページで予定したいと思います。)



印刷ファイルへ 次ページ もどる 目次

(C)COPYRIGHT ISHIOKA KATSUHIDE 2000−2011