Pythonで DSPF(=表示装置ファイル)をインターフェースとする
5250アプリケーションを開発することができます。
▼単票型アプリケーションの事例
▼SFLレコード型アプリケーションの事例
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) SFCTL = 'SFCTL01' DSPEND = 'DSPEND01' while True: ENDRRN = TOPRRN + SFLPAG - 1 for RRN1 in range(TOPRRN, ENDRRN + 1): if SHOHIN.Read() == EOF: break SFREC01.SHCODE = SHOHINR.SHCODE SFREC01.SHNAME = SHOHINR.SHNAME SFREC01.SHTANK = SHOHINR.SHTANK SFREC01.SHSCOD = SHOHINR.SHSCOD SHOHINR.SHSCOD.Chain(HINSHU) # 品種マスターファイル SFREC01.HNSNAM = HINSHUR.HNSNAM SFREC01.SFLWrite(RRN1) DSPEND01.Write() SFCTL01.Exfmt() # SFL コントロール/レコードを表示
Python.400が提供するAS400エンジン(*SRVPGM)はプログラマーに
代わって多くのことを代行して行います。
例えば
SFLCTL01.Exfmt()
と書くだけでExfmtの中では
・F3=終了
・F12=前画面
・ROLL UP/DOWN
の処理がプログラマーに代わって代行して実行されます。
多くの RPGプログラマーでも苦手な ROLL UP/DOWN処理を行うので高い品質のプログラムが
少ないソースで実現することができます。
例えば F3=終了はSAAの基準で定められておりほとんどの場合がF3=終了を記述しなければならないのに
毎回、義務のように繰り返し同じことを記述していたのです。
Python.400ではこのような無駄をなくして内部処理としました。
これがPython.400の代行処理です。
今までのRPG/COBOLでは
何でもできるが何でもすべて自分でやらなければいけない。
ということだったのです。
もちろん代行処理に任せるのではなく明示的にコーディングすれば
それが優先されて実行されます。
代行処理の導入によってプログラマーは
・実行する本質の機能だけを書けばよい
・少ないソースで見やすくバグの少ない高品質のプログラムが可能
・初心者でも実用的なプログラムの開発が可能
という利点に恵まれます。
URKING = SURYO * TANKAこのようなフィールド名だけの記述の演算では どのファイルに対してどのような処理をしているのか全くわかりません。
URIRCDR.URKING = DSPDTA.SURYO * DSPDTA.TANKA
KYLIST KLIST KFLD JUCNO KFLD JUGYO : KYLIST CHAIN FILE 99キー・リストの記述と CHAIN演算は離れたところに
(SFREC01.JUCNO + SFREC01.GYO) Chain(FILE)このように キーリストを使わずに直接、キーの内容を記述すれば 処理の内容が直観的によくわかるようになりました。