Python

20. Python.400サンプル紹介(3)

今度はもう少し複雑なサンブルを紹介しよう。
このサンプルは 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による開発がいかにシンプルで簡単なものになるか
おわかりいただけただろうか?