RPG

281. 知っているようで知らない POPUP の謎 (1)

POPUP ウィンドウを表示するには? と尋ねられたら、
レコード・レベルで WINDOW キー・ワードを指定すればよいということに
なるが、半分「正解」である。
この WINDOW キー・ワードも知らない開発者もいて
中には背景イメージも出力してその上に無理やり POPUP を重ね書きして
「これをうちでは POPUP と呼んでいます」と言うような猛者もいる。

これは恐らく最初に POPUP ウィンドウを自作したときに
POPUP を表示すると背景が消えてしまう、
という障害を体験したからではないかと推測される。

1.

最初に適用業務の画面が表示されていて …

2.

F4キーを押してプロンプト表示すると

3.

希望はやはり背景を残したままで

DSPF ソースを見てみると確かに表示レコードには WINDOW
指定されていて、さらに

CLRL(*NO), OVERLAY, PROTECT など背景を残しておくには
十分なキー・ワードが指定されているように見える。
しかし実行してみるとこれだけでは背景が消えてしまうのだ。

 
    A          R WINDOW                    SFLCTL(SFREC01)             
    A                                      SFLSIZ(0006)                
    A                                      SFLPAG(0005)                
    A                                      WINDOW(&WNDL &WNDP 13 52)   
    A*                                     WDWTITLE((*TEXT ' 商品コー  
    A                                      TEXT(' ウィンドゥ ')        
    A                                      BLINK                       
    A                                      OVERLAY                     
    A                                      PROTECT                     
    A  41                                  SFLDSPCTL                   
    A  42                                  SFLDSP                      
           :

経験豊かな開発者であれば既に問題点に気づいているかも知れない。
背景をそのまま留めておくには DSPFソースのどこかに
次のレコードの記述が必要となる。

 
    A          R #DUMMY                    ASSUME    
    A                                      FRCDTA    
    A                                      PUTOVR    
    A            DMY            2   O  1  2DSPATR(ND)

このレコードを DSPF ソースのどこかに追加しておいて CRTDSPF で DSPF を作成すると
アラ不思議?! たちまち背景は消去されずに残っているではないか ?!

この手法は伝統的に先輩から後輩へ、
また会社のソフトウェア資産のひとつとして伝えられてきている。
従ってその伝統のない会社では
IBM マニュアルやIBM SE, 特約店SE からも知る由がないので
POPUP ウィンドウの実現方法がわからないままでいる。

そこで前述の不可思議な方法で POPUP を作ることになる。
一般の法人では「先輩から後輩への伝承」があるので、POPUP ウィンドウの問題も
無事に何とか伝えられるのだが途中で独立した独立系のソフトウェア法人では
歴史が浅いので POPUP ウィンドウを実現できないところも珍しくはない。

さてこのような特殊な方法を必要とするのは理不尽だとは思わないだろうか ?
#DUMMY というレコードはプログラムでは出力命令を行っていないのに
このレコードを記述しただけで背景がキープされる。
しかもこの方法は暗黙的に先輩から後輩へと伝えられて、
それを知らないソフトウェア・ハウスなどでは POPUP を実現することはできない。

このようなことはおおよそコンピュータの開発の世界ではあってはならないことであり
徒弟制度の生き残りのようである。

次回からはこの #DUMMY レコードの不思議について解明していきたい。