今度はもう少し複雑なサンブルを紹介しよう。
このサンプルは SFLレコード形式のサンプルであり
しかも項目数(=フィールド数)が多い例である。
この例もWizardによってSFLレコード形式として生成
されたものであり項目数が多いので横方向には
ひとつに入りきれない例である。
_
[ Python.400: @SIRINQの実行]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL01 ファイル . : @SIRINQ
コード カナ名 仕入先名 1 仕入先名 2 略名
0001 トウヨウショウジ 東洋商事株式会社 東洋商事
1000 ミツモトショウジ ミツモト商事株式会社 ミツモト
1001 サンヨウプリント 株式会社 三洋プリント 三洋プリン
8001 フタバ 株式会社 双葉 双葉K.K
8002 オオサワゴウキンショ 株式会社大沢合金所 大沢合金所
8003 トミシバチュウゾウショ 有限会社富芝鋳造所 富芝鋳造所
8004 オガワゴウキンコウギョウ 小川合金工業株式会社 小川合金工
8005 トクシマテッコウ 徳島鉄鋼株式会社 徳島・品川
8006 オガワショウテン 有限会社小川商店 小川商店
8007 ナメカワケイドウ(カ ミタカエイギョウショ 滑川軽銅株式会社 三鷹営業所 滑川軽銅
8008 ナメカワケイドウ(カ 滑川軽銅株式会社 滑川軽銅
8009 マツモトダイカストコウギョウ 松本ダイカスト工業株式会社 松本ダイカ
8010 ミタカネツショリケンキュウショ 三鷹熱処理研究所 三鷹熱処理
8011 ニチエイコウザイ 日栄鋼材株式会社 日栄鋼材
8012 サイトウショウテン 有限会社斉藤商店 斉藤商店
8013 スズキコウザイ 鈴木鋼材株式会社 鈴木鋼材
[解説]
このSFLレコード形式の表示では横方向には収まり切れないので
F11キーを押して横スクロールできるように自動生成されている。
そこでF11キーを押すと第2画面にスクロールする
[@SIRINQ:第2画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL02 ファイル . : @SIRINQ
略号 TEL FAX FAX短縮 FAX注文 用紙サイズ 90 度回転 宛名ラベル 郵便番号
TOYO 0669938746
0425-27-8111 186
0426-76-9566 192-03
聡 (0425)58-1921 (0425)59-5525 1 197
オオサワ (0423)61-6217 (0423)61-6019 1 183
飯 (0426)61-7015 (0426)61-0112 1 193
オガワコ (0462)33-1165 243-04
他 (03)3492-0234 (03)3493-0205 1 141
隆 (03)3381-6838 (03)3384-1277 1 164
ナメカワ (0422)32-0321 (0422)32-0349 1 181
核 (03)3334-3521 1 168
鹿 タ (0263)77-3301 (0263)77-6234 1 399-81
ミタカネツ (0422)46-1166 (0422)46-1167 1 181
ニチエイコ (03)3551-6231 (03)3551-6786 1 104
査 (0425)24-2324 (0425)27-2874 190
スズキコ (0426)45-1414 (0426)45-1418 1 192
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第3画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL03 ファイル . : @SIRINQ
住所1 住所2 担当者名 源泉区分 振込区分
国立市西1-4-22 2 1
八王子市東中野673-1 2 1
秋川市二宮東3-6-9 2 1
府中市武蔵台1-18 2 1
八王子市長房町41-8 2 1
海老名市中新田189波多野ビル3F
品川区西五反田7-7-1 2 1
中野区南台2-40-10 2 1
三鷹市大沢2-14-7 2 1
杉並区宮前5-9-13 2 1
長野県南安曇郡三郷村明盛1490 2 1
三鷹市下連雀7-12-28 2 2
中央区新川2-20-8協和新川ビル 2 1
立川市富士見町2-21-4
八王子市小宮町276 2 1
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第4画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL04 ファイル . : @SIRINQ
年賀状 会員区分 下請適用 休日案内 仕入先区分 業種区分 発注限度額 営業所 コード 地区 CD 取引状態
0
2 2 1 0 2 13
2 2 0 1 13
1 2 2 3,000,000 1 13 0
1 1 2 2,000,000 1 13 0
2 1 2 1,000,000 1 13 0
2 1 1,000,000 14 3
2 2 2 1,000,000 13 0
2 1 2 2,000,000 13 0
2 2 2 500,000 13 0
2 2 2 500,000 13 0
2 1 2 500,000 20 0
2 1 2 100,000 13 0
2 2 2 1,000,000 13 0
2 1,000,000 13 3
2 2 2 200,000 13 0
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第5画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL05 ファイル . : @SIRINQ
支払先 CD 手形区分 支払方法 支払手形サイト 税区分 代表者名 支払条件 振込銀行 振込支店
000 2 2 120 2 0005 227
001 2 2 2 0005 247
001 1 2 2 0001 264
002 2 1 2 0005 225
003 2 2 2 0003 260
004 0005 260
005 1 2 2 0003 193
006 2 2 2 0003 248
008 1 2 2
008 1 2 2 0005 220
009 2 2 2 0143 481
010 2 2 2 0006 777
011 1 2 2 0005 022
012 1360 033
013 1 2 2 0005 227
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第6画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL06 ファイル . : @SIRINQ
預金種目 口座番号 預金者名 最新仕入日 未決済形残高 計画確認日 着手督促日
0/00/00 0
2 9013053 ミツモトシヨウジ(カ 15/03/15 0
1 0031844 カ)サンヨウプリント 0/00/00 0
2 0108919 カ)フタバ 0/00/00 0 20 10
2 9008011 0/00/00 0 20 10
2 0015164 ユ)トミシバチユウゾウシヨ 0/00/00 0 20 10
2 9000669 オガワゴウキンコウギヨウ(カ 0/00/00 0
2 0013775 トクシマテツコウ(カ 0/00/00 0 10 5
2 0003955 ユ)オガワシヨウテン 0/00/00 0 20 7
0/00/00 0 20 7
2 9007410 ナメカワケイドウ(カ 0/00/00 0
2 2000272 マツモトダイカストコウギヨウ(カ 0/00/00 0 20 10
1 0605049 ミタカネツシヨリケンキユウシヨ 0/00/00 0 7 3
2 9011357 0/00/00 0 30 10
2 0001266 ユ)サイトウシヨウテン 0/00/00 0
2 9004194 0/00/00 0 15 7
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第7画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL07 ファイル . : @SIRINQ
完成予定確認日 資本金万円 年商百万円 創立年月 社員数 決算月 扱い MAKER
0 0 0 0
2,000 0 0 0
540 0 0 0
3 3,000 0 0 0
3 750 0 0 0
3 500 0 0 0
0 0 0 0
3 1,200 0 0 0
3 100 0 0 0
3 8,000 0 0 0
8,000 0 0 0
3 500 0 0 0
1 0 0 0 0
3 10,000 0 0 0
0 0 0 0
3 1,040 0 0 0
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第8画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL08 ファイル . : @SIRINQ
扱い品 当社取引品
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第9画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL09 ファイル . : @SIRINQ
備考1 備考2
123123
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第10画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL10 ファイル . : @SIRINQ
更新者 CD 更新日
0/00/00
92/09/21
92/09/21
92/08/21
92/08/17
92/08/10
92/08/13
92/09/04
92/08/13
92/09/04
92/09/04
92/08/10
92/09/04
92/09/04
92/08/13
92/09/04
それでも入りきれないのでさらにF11キーを押す
[@SIRINQ:第1画面]
仕入先マスター照会 モード . . : 表示
様式 . . . . : SFCTL01 ファイル . : @SIRINQ
コード カナ名 仕入先名 1 仕入先名 2 略名
0001 トウヨウショウジ 東洋商事株式会社 東洋商事
1000 ミツモトショウジ ミツモト商事株式会社 ミツモト
1001 サンヨウプリント 株式会社 三洋プリント 三洋プリン
8001 フタバ 株式会社 双葉 双葉K.K
8002 オオサワゴウキンショ 株式会社大沢合金所 大沢合金所
8003 トミシバチュウゾウショ 有限会社富芝鋳造所 富芝鋳造所
8004 オガワゴウキンコウギョウ 小川合金工業株式会社 小川合金工
8005 トクシマテッコウ 徳島鉄鋼株式会社 徳島・品川
8006 オガワショウテン 有限会社小川商店 小川商店
8007 ナメカワケイドウ(カ ミタカエイギョウショ 滑川軽銅株式会社 三鷹営業所 滑川軽銅
8008 ナメカワケイドウ(カ 滑川軽銅株式会社 滑川軽銅
8009 マツモトダイカストコウギョウ 松本ダイカスト工業株式会社 松本ダイカ
8010 ミタカネツショリケンキュウショ 三鷹熱処理研究所 三鷹熱処理
8011 ニチエイコウザイ 日栄鋼材株式会社 日栄鋼材
8012 サイトウショウテン 有限会社斉藤商店 斉藤商店
8013 スズキコウザイ 鈴木鋼材株式会社 鈴木鋼材
このような大規模の分割画面もWIZARDによって自動生成することが
できる。
F11キーによる横スクロール処理はかなり特殊で面倒であると
予想されるがPythonでは一体どのように記述されているのだろう。
[Pythonソース]
#*********************************************************#
#*
#* プログラム名 : @SIRINQ.PY
#* タイプ : PYTHON
#* APP タイプ : SFL 一覧表示 (*SFL)
#* 作成日 : 2025/06/03 06:54:22
#* 作成者 : QTR
#* ディレクトリー : /PYTHON/PROJECT/@SIRINQ
#* 使用ファイル : QTRFIL/SIREMT
#* 監査報告書 : Y
#* 数値の編集 : Y
#* 画面サイズ
#* 桁 : 132
#* 行 : 27
#*
#*********************************************************
import sys
from as400 import *
from as400 import *
CallType(sys.argv[1])
Open("QTROBJ/@SIRINQ", "DSPF") # 表示装置ファイルをオープン
Open("QTRFIL/SIREMT", "FILE") # 仕入先マスターファイル
while True:
DSPHEAD.Exfmt()
DSPHEAD.SRCODE.SetLL(SIREMT) # 仕入先マスター照会を CHAIN
SFCTL = SFCTL01
DSPEND = DSPEND01
while True:
ENDRRN = TOPRRN + SFLPAG -1
for RRN1 in range(TOPRRN, ENDRRN +1):
if SIREMT.Read() == EOF:
break
SFREC01.SRCODE = SIREMTR.SRCODE
SFREC01.SRNMK = SIREMTR.SRNMK
:
SFREC01.SFLWrite(RRN1)
SFREC02.SRSHOT = SIREMTR.SRSHOT
SFREC02.SRTEL = SIREMTR.SRTEL
:
SFREC02.SFLWrite(RRN1)
SFREC03.SRADR1 = SIREMTR.SRADR1
SFREC03.SRADR2 = SIREMTR.SRADR2
:
SFREC10.SFLWrite(RRN1)
DSPEND.Write()
SFCTL.Exfmt() # SFL コントロール/レコードを表示
[解説]
SFREC01 ~ SFREC10 までの10個のSFLレコードを出力しているところまでは
RPGと同じ処理であるが
SFCTL01.Exfmt
の処理の直後にはF3=終了もF12=前画面も肝心なF11=xxxx の処理は
どこにも記述されていない。SFLレコードであるのに ROLL UP/DOWNの
記述もないがプログラムはちゃんと ROLL UP/DOWNにも反応して
正しく動作するようできている。
これはAS400エンジンの代行機能によってすべて内部処理されているのである。
ROLL UP/DWONはRPGプログラマーでも苦手な処理であって
長年開発している人であっても正しく動作しない場合がある。
まして複数画面に分割されている横移動は面倒であまり経験のない
処理である。
にもかかわらずAS400エンジン代行機能がバグなく代行してくれるので
Python.400プログラマーのコーディングは非常に簡単なものとなる。
簡単でありながらその簡単なソースでさえもWIZARDによって
自動生成されるのだからさらに簡単なものとなる。
これをRPGで記述するとなるとかなら大変な作業となってしまう。
Python.400による開発がいかにシンプルで簡単なものになるか
おわかりいただけただろうか?
