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)
- Y
- 数字のみの表示フィールドを示します。
- 0O
- サンプルではわかりにくいのですが、0Oの左は小数点以下の桁数、右はアルファベットのOで、出力のみの使用を示します。
- 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については、別ページで予定したいと思います。)
印刷ファイルへ | 次ページ | もどる | 目次 |