一覧表形式: 商品マスター照会(@SHOINQ)[作成]
5250 PYTHON の作成 (CRT5250APP)
選択項目を入力して,実行キーを押してください。
PYTHON プログラム . . . . . . . @SHOINQ 拡張子 .py
ディレクトリー . . . . . . . *PYTHON
...
ファイル . . . . . . . . . . . SHOHIN 名前
ライブラリー . . . . . . . . QTRFIL 名前 , *LIBL, *CURLIB
DSPF ファイル . . . . . . . . . *PYTHON 名前 , *PYTHON
ライブラリー . . . . . . . . *LIBL 名前 , *LIBL, *CURLIB
生成オプション . . . . . . . . *NONE *NONE, *ADD, *REPLACE
[解説]
SFLレコードのような一覧表形式でデータを照会する摘要業務を作成します。
単票形式を作ったのとほぼ同じ操作だけで院欄表形式の摘要業務を作成することが
できます。
[パラメータの説明]
PYTHON プログラム. . . . . . . . . . . . . .作成するPythonプログラムの名前とそのソースを
ディレクトリー 保管するディレクトリー名を指定します。
*PYTHON = /PYTHON/PROJECT/(PYTHON名)
としてPYTHON名のディレクトリーも自動生成されます。
十分精通するまではこの指定のままで生成してください。
ファイル. . . . . . . . . . . . . . . . . . このPythonが扱う主たるデタ・ベースの名前と
ライブラリー ライブラリー名を指定してください。
DSPF ファイル . . . . . . . . . . . . . . . このPythonが使用する表示装置ファイル(DSPF)の名前と
ライブラリー ライブラリー名を指定してください。
生成オプション. . . . . . . . . . . . . . . *NONE以外の:ADD(=初期作成)または *REPLACE(=置換え)を
指定してください。*SADDを指定したときは既存の同じ名前の
Pythonが存在しているか検査され存在していれば
エラーとなります。
初めてこのPythonの名前で作成するときは*ADDを
指定してください。
[基本情報の定義]
基本情報の定義
ジョブ・タイトル 商品マスター照会
画面様式 3 1= 単票型式 2= 最大表示
3= 一覧表 4= 伝票型式
監査報告書 Y Y=YES, N=NO
数値の編集 Y Y=YES, N=NO
画面サイズ
桁 132 80, 132
行 27 24, 27
[解説]
ジョブ・タイトル. . . . . . . . : この適用業務のタイトルを入力してください。
このタイトルは適用業務画面の見出しとして使われます。
画面様式. . . . . . . . . . . . : 摘要業務のタイプを指定します。
1=単票形式 : 1レコード1画面1フィールド/行のDFUのような
基本型式の画面入力の適用業務を作成します。
2=最大表示 : 単票形式ですが1画面にフィールドをできるだけ
多く表示する画面型式の適用業務を作成します。
3=一覧表形式: SFLレコードによる一覧表形式の適用業務画面を
作成します。
4=伝票型式: 日本独自の伝票入力型の適用業務を作成します。
監査報告書 . . . . . . . . . . : 監査報告書とはDFUのように入出力の結果のモニター・リストで
更新の結果をQUERYによって印刷出力します。
数値の編集. . . . . . . . . . . :数値を編集するかどうかを指定します。
画面サイズ. . . . . . . . . . . :作成する表示装置ファイル(DSPF)のサイズを指定します。
現在、使用中の画面サイズが初期値として表示されます。
レコード様式の処理
ファイル SHOHIN ライブラリー QTRFIL
オプションを入力して、実行キーを押してください
1= 指定
OPT 様式 定義 記述
1 DSPHEAD N 初期画面レコード
1 DSPDTA N 明細画面レコード
1 ENDOPT N 終了画面
解説
画面芳樹を生成するための画面レコード様式の候補がすべて
表示されますのでそれぞれの画面様式に対するフィールドの定義を
行う必要があります。
選択欄(OPT)には初期値として1が既に表示されていますので
このままで実行キーを押すと最初のレコード:DSPHEADが選択されます。
このままで実行キーを押してください。
フィールドの選択および順序付け
ファイル SHOHIN ライブラリー QTRFIL
レコード様式 SHOHINR テキスト 初期画面レコード
フィールドとその順序を選択するか,すべてを選択する F21 キーを押して
実行キーを押してください。
順序 フィールド 属性 長さ タイプ 記述
10 SHCODE キー 10 文字 商品コード
[解説]
選択したDSPHEADレコードに表示するフィールドの選択が要求されます。
この初期画面DSPHEADでは指定したデータ・ベース:QTRFIL/SHOHINの
アクセス・パスすなわちキー・フィールドが表示されて
順序選択の欄には初期値として10が既に表示されています。
このままで実行キーを押してください。
レコード様式の処理
ファイル SHOHIN ライブラリー QTRFIL
オプションを入力して、実行キーを押してください
1= 指定
OPT 様式 定義 記述
DSPHEAD Y 初期画面レコード
1 DSPDTA N 明細画面レコード
1 ENDOPT N 終了画面
[解説]
表示は元のレコード選択の画面に戻りますが
今、処理したDSPHEADレコードの選択OPT=1は消えて
次の明細画面: DSPDTA に OPT=1 が残っていますので
続けてこのままで実行キーを押すと 明細画面: DSPDTAが
選択されます。
フィールドの選択および順序付け
ファイル SHOHIN ライブラリー QTRFIL
レコード様式 SHOHINR テキスト 明細画面レコード
フィールドとその順序を選択するか,すべてを選択する F21 キーを押して
実行キーを押してください。
順序 フィールド 属性 長さ タイプ 記述
0 SHCODE キー 10 文字 商品コード
0 SHNAME 24 漢字 OPEN 商品名
0 SHTANK 7,0 ゾーン 単価
0 SHSCOD 4 文字 品種コード
終わり
F3= 終了 F15= 他のデータ・ベースの結合 F12= 取消し
F21= すべての選択
[解説]
明細画面DSPDTAの選択候補としてデータ・ベース: QTRFIL/SHOHINのすべての
フィールドが表示されます。
「F21= すべての選択」キーを押してすべてのフィールドを詮索してください。
フィールドの選択および順序付け
ファイル SHOHIN ライブラリー QTRFIL
レコード様式 SHOHINR テキスト 明細画面レコード
フィールドとその順序を選択するか,すべてを選択する F21 キーを押して
実行キーを押してください。
順序 フィールド 属性 長さ タイプ 記述
10 SHCODE キー 10 文字 商品コード
20 SHNAME 24 漢字 OPEN 商品名
30 SHTANK 7,0 ゾーン 単価
40 SHSCOD 4 文字 品種コード
終わり
F3= 終了 F15= 他のデータ・ベースの結合 F12= 取消し
F21= すべての選択
[解説]
F21キーを押すとすべての順序に番号が入力されます。
次に品種マスターと結合して品種名を表示するために
「F15= 他のデータ・ベースの結合」を押してください。
他のデータ・ベースの結合
選択項目を入力して、実行キーを押してください
ファイル HINSHU 名前、リストは F4 キー
ライブラリー *LIBL 名前、 *CURLIB
[解説]
このように結合ファイルに品種マスター(HINSHU)を指定します。
ライブラリー・リスト上に品種マスター(HINSHU)が存在していれば
ライブラリーは *LIBLのままで検索されます。
ファイル結合方法の指定
ファイル HINSHU ライブラリー *LIBL
テキスト
ファイルの選択項目の比較方法を入力して、実行キーを押してください
テスト : EQ
フィールド テスト フィールド テキスト
HNSCOD EQ SHSCOD 品種コード
終わり
フィールド テキスト 長さ タイプ 小数
SHCODE 商品コード 10 文字
SHNAME 商品名 24 漢字 OPEN
SHTANK 単価 7,0 ゾーン
SHSCOD 品種コード 4 文字
[解説]
左端のフィールドには品種マスター(HINHU)のキー・フィールドが
表示されますのでそれに対応するキー・フィールドを下部に表示されている
フィールドの中から選択して入力してください。
ここでは商品マスターのSHSCODを選択して入力します。
他のデータ・ベースの結合
選択項目を入力して、実行キーを押してください
ファイル HINSHU 名前、リストは F4
ライブラリー *LIBL 名前、 *CURLIB
テキスト 明細画面レコード
オプションを入力して、実行キーを押してください
1= このフィールドを取り込みとして選択する
OPT フィールド 属性 長さ タイプ 記述
HNSCOD 4 文字 品種コード
1 HNSNAM 14 漢字 OPEN 品種名
[解説]
下部には結合した品種マスター(HINSHU)のフィールドがすべて表示されます。
表示項目として追加したいフィールドを OPT=1で選択します。
ここでは品種名: HNSNAM にOPT=1を入力して実行キーを押してください。
フィールドの選択および順序付け
ファイル SHOHIN ライブラリー QTRFIL
レコード様式 SHOHINR テキスト 明細画面レコード
フィールドとその順序を選択するか,すべてを選択する F21 キーを押して
実行キーを押してください。
順序 フィールド 属性 長さ タイプ 記述
10 SHCODE キー 10 文字 商品コード
20 SHNAME 24 漢字 OPEN 商品名
30 SHTANK 7,0 ゾーン 単価
40 SHSCOD 4 文字 品種コード
50 HNSNAM HINSHU 14 漢字 OPEN 品種名
[解説]
追加した品種名(HNSNAME)はフィールド一覧の一番最後に追加されますので
挿入したい位置の順序番号を指定します。
ここでは品種コードの次に表示したいので40の次の50を指定して実行キーを
押します。
レコード様式の処理
ファイル SHOHIN ライブラリー QTRFIL
オプションを入力して、実行キーを押してください
1= 指定
OPT 様式 定義 記述
DSPHEAD Y 初期画面レコード
DSPDTA Y 明細画面レコード
1 ENDOPT N 終了画面
[解説]
表示はレコード様式の選択に戻り終了画面(ENDOPT)の選択だけが
残っていますのでこのままで実行キーを押してください。
終了画面
選択項目を入力して、実行キーを押してください
終了画面を作成しますか ? Y Y=YES, N=NO
[解説]
終了画面は必要なのでこのままで実行キーを押します。
PYTHON プログラム定義の終了
選択項目を入力して、実行キーを押してください
プログラムの保管 Y Y=YES, N=NO
プログラムの実行 N Y=YES, N=NO
選択項目 Y=YES の場合
実行のタイプ 1 1= 変更 , 2= 表示
DDS ソースの保管 Y Y=YES, N=NO
PYTHON ソースの保管 Y Y=YES, N=NO
プログラムの保管 Y=YES の場合
PYTHON プログラム @SHOINQ.PY 名前 *.PY
ディレクトリー /PYTHON.400/PROJECT/@SHOINQ/@SHOINQ.PY
権限 *LIBCRTAUT
テキスト 商品マスター照会
DDS ソースの保管 Y=YES の場合 名前, *LIBCRTAUT
ソース・ファイル QDSPSRC 名前
ライブラリー QTRSRC 名前, *CURLIB
ソース・メンバー @SHOINQ 名前
[解説]
最後にソースを生成する画面が表示されます。
プログラムの保管. . . . . . . . . . . .: Y=Pythonプログラムの保管を指示します。
プログラムの実行. . . . . . . . . . . .: 保管直後に実行するかどうかを指示します。
まだ慣れないうちは N としてください。
DDS ソースの保管 . . . . . . . . . . . : 表示装置ファイル(DSPF)のDDSソースの保管を指示します。
Yを指示してください。
PYTHON ソースの保管. . . . . . . . . . : PYTHONプログラム・ソースの保管を Yで応答してください。
PYTHON プログラム. . . . . . . . . . : 保管するPYTHONプログラムの名前を指示します。
拡張子.PYが必要です。
ディレクトリー. . . . . . . . . . . .: PYTHONを保管するIFSディリクトリーの名前を指示します。
/PYTHON.400/PROJECT/(PYTHOPN名)/(PYTHON名.PY)
の形式名にしてください。
PYTHONのプロジェクト(/PYTHON.400/PROJECT)の配下に
PYTHON名と同じ名前のプロジェトクが作成されて
その配下にPYTHONプログラム(PYTHON名.PY)が
保管されます。
プロジェクトの配下にはHTMテンプレートも保管される
場合があります。
ソース・ファイル. . . . . . . . . . . .: 表示画面装置ファイル(DSPF)のDDSソース・ファイル名です。
QDSPSRCという名前のDDSソース・ファイルに保管されます。
ない場合はあらかじめ作成しておいてください。
ライブラリー . . . . . . . . . . . . . : ソース・ファイルのライブラリー名です。
QDSPSRCがライブラリー・リストで検索されて見つかった
ライブラリーが表示されます。
ソース・メンバー. . . . . . . . . . . .: PYTHONと同じ名前のソース・メンバーが作成されます。
実行キーを押すと表示装置ファイル(DSPF)のDDSソースの作成に続いて
表示装置ファイル(DSPF)も作成され(CRTDSPF)PYTHONプログラムも指定した場所に
保管されます。
PYTHONはコンパイルは必要ありません。
「@SHOHIN6.PY を保管しました 」
のような完了メッセージが表示されればWizard生成は成功です。
実行は「11. PYTHON データの表示(DSPPTN)」や
「12. PYTHON データの変更(CHGPTN)」によって実行することができます。
[F13=印刷待ち行列の追加]
※ SpoolライターVer5.0がこのシステムに
導入されている場合はDSPFのDDSソースに
「F13=出力待ち行列」が追加されて
WRKSPLコマンドが実行されて
このユーザーが出力したスプールがすべて
表示されて任意のスプールを表示、印刷さらに
PDF変換やExcelにも変換することができます。
[生成されたPYTHONソースは?]
どのようなPYTHONソースが生成されたのか気になるところですが
ライブラリー: PYTHON.400 がライブラリー・リストに存在していれば
コマンド入力画面で
EDTPTN (PYTHON名)
だけでPYTHONソースの内容を見ることができます。
PYTHONを実行する表示装置ファイル(DSPF)のDDSソースは
STRSEU QTRSRC/QDSPSRC.(PYTHON名)
でオープンすることができます。
DSPPTN @SHOINQ
で実行してみると
商品照会 モード . . : 表示
様式 . . . . : DSPHEAD ファイル . : @SHOINQ
商品コード
必要な項目を入力して,実行キーを押してください。
F3= 終了 F13= 出力待ち行列
のように初期画面: DSPHEAD が表示されるので
そのまま実行すると次のように
明細画面が表示されます。
商品照会 モード . . :
様式 . . . . : ファイル . :
商品コード 商品名 単価 品種コード 品種名
NV-BS30S 目次ビデオ 165,000 0002 ビデオデッキ
NV-BS50S ビデオ画王 200,000 0002 ビデオデッキ
NV-CF1 Cカセット編集ビデオ 58,000 0002 ビデオデッキ
NV-CF2 薄型テレビ 98,000 0003 コンボ
NV-CF81 更新テスト 58,000 0004 エレクトーン
NV-CF9 漢字テスト 19,000 0002 ビデオデッキ
NV-F850 音声録画ビデオ 140,000 0002 ビデオデッキ
NV-HK1 歌えるビデオ 90,000 0002 ビデオデッキ
NV-H1T-S みんなのビデオ 69,800 0002 ビデオデッキ
NV-SX10 ビデオ画王 115,000 0002 ビデオデッキ
NV-W1 世界放送方式ビデオ 350,000 0002 ビデオデッキ
RX-AZ1 液晶テレビ 80 インチ 300,000 0001 カラーTV
RX-BZ1 液晶テレビ 55 インチ 100,000 0002 ビデオデッキ
RX-DT75 CDラジオカセット 53,800 0003 コンボ
SC-CH150 超ミニ・コンポ 70,000 0003 コンボ
SC-CH505 パーソナル・ミニコンポ 100,000 0003 コンボ
続く ...
F3= 終了 F12= 前画面 F23= 削除 F13= 出力待ち行列
[解説]
ROLL UPキー(PageDown)を押せば続きのレコードが表示されます。
次に EDISRC @SHOHIN で Pythonソースを次のように表示することが
できます。
import sys
from as400 import *
CallType(sys.argv[1])
Open("QTROBJ/@SHOINQ", "DSPF") # 表示装置ファイルをオープン
Open("QTRFIL/SHOHIN", "FILE") # 商品マスターファイル
Open("QTRFIL/HINSHU", "FILE") # 品種マスターファイル
while True:
DSPHEAD.Exfmt() # 初期画面を表示
DSPHEAD.SHCODE.SetLL(SHOHIN)
DSPDTA = 'SFCTL01'
DSPEND = 'DSPEND01'
while True:
ENDRRN = TOPRRN + SFLPAG -1
for RRN1 in range(TOPRRN, ENDRRN +1):
if SHOHIN.Read() == EOF:
break
SHOHINR.SHSCOD.Chain(HINSHU) # 品種マスターファイル
SFREC01.SHCODE = SHOHINR.SHCODE
SFREC01.SHNAME = SHOHINR.SHNAME
SFREC01.SHTANK = SHOHINR.SHTANK
SFREC01.SHSCOD = SHOHINR.SHSCOD
SFREC01.HNSNAM = HINSHUR.HNSNAM
SFREC01.SFLWrite(RRN1)
DSPEND01.Write()
SFCTL01.Exfmt() # SFL コントロール/レコードを表示
[解説]
最初に
import sys from as400 import *
によって
Python.400フレーム・ワークが提供する「AS400エンジン」を
インクルードします。
これによってILE-RPG言語が使っているレコード・レベルの入出力命令を
PYTHONでも使うことができるようになります。
レコード・レベルの入出力命令は一般的なSQL命令に比べて
圧倒的にパフォーノンスにおいて優れています。
ファイルのオープンは
Open("QTROBJ/@SHOHIN", "DSPF") # 表示装置ファイルをオープン
Open("QTRFIL/SHOHIN", "FILE") # 商品マスターファイル
Open("QTRFIL/HINSHU", "FILE") # 品種マスターファイル
で宣言されており DSPFまたは FILEのタイプを示すだけの
簡単な宣言で済みます。
これが最初に使うAS400エンジンのメソッドです。
while True: で以下の処理の繰り返しを定義していますが
DSPHEAD.Exfmt() で初期画面: DSPHEAD の入出力を行っています。
F3=終了の記述がありませんがこれはAS400エンジンの代行処理と
言われるものでILE-RPGやCOBOL言語では必要な処理も
AS400エンジンがPYTHONに代わって多くの処理を代行して行います。
SFCTL01.Exfmt()もSFLレコードを表示している部分ですが
ROLL UPやDOWNの記述はどこにもありません。
これもAS400エンジンの代行処理によって内部では
ROLL UP/DOWNま処理は行われています。
これによってAS400エンジンを使うPYTHONプログラムは
RPGやCOBOLに比べて最小限の記述で済み同時に初心者でも高い品質の
プログラムを開発することができます。
その他のこのPYTHONプログラムの詳細はこちらを参照してください。